From 8a60e218756e5fdf66234fb5d72323fae24ab49e Mon Sep 17 00:00:00 2001 From: Lin Yang Date: Mon, 11 Sep 2017 16:39:03 -0700 Subject: [PATCH] Expose fabric related interfaces Added two fabric interfaces get_fabric() and get_fabric_collection() to allow user to invoke fabric related functionality. Change-Id: I4a9344ee878b2957ba267a2f83e714878759cd4e --- rsd_lib/main.py | 25 +++++++++++++++++++++++ rsd_lib/tests/unit/json_samples/root.json | 3 +++ rsd_lib/tests/unit/test_main.py | 15 ++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/rsd_lib/main.py b/rsd_lib/main.py index a2c5288..d7e1a50 100644 --- a/rsd_lib/main.py +++ b/rsd_lib/main.py @@ -17,6 +17,7 @@ import sushy from sushy.resources import base from rsd_lib.resources import chassis +from rsd_lib.resources.fabric import fabric from rsd_lib.resources.node import node from rsd_lib.resources.storage_service import storage_service @@ -33,6 +34,9 @@ class RSDLib(sushy.Sushy): '@odata.id'], required=True) """StorageServiceCollection path""" + _fabrics_path = base.Field(['Fabrics', '@odata.id'], required=True) + """FabricCollection path""" + def get_node_collection(self): """Get the NodeCollection object @@ -93,3 +97,24 @@ class RSDLib(sushy.Sushy): return chassis.Chassis(self._conn, identity, redfish_version=self.redfish_version) + + def get_fabric_collection(self): + """Get the FabricCollection object + + :raises: MissingAttributeError, if the collection attribute is + not found + :returns: a FabricCollection object + """ + return fabric.FabricCollection(self._conn, + self._fabrics_path, + redfish_version=self.redfish_version) + + def get_fabric(self, identity): + """Given the identity return a Fabric object + + :param identity: The identity of the Fabric resource + :returns: The Fabric object + """ + return fabric.Fabric(self._conn, + identity, + redfish_version=self.redfish_version) diff --git a/rsd_lib/tests/unit/json_samples/root.json b/rsd_lib/tests/unit/json_samples/root.json index ad14936..90c7240 100644 --- a/rsd_lib/tests/unit/json_samples/root.json +++ b/rsd_lib/tests/unit/json_samples/root.json @@ -31,6 +31,9 @@ "Nodes": { "@odata.id": "/redfish/v1/Nodes" }, + "Fabrics" : { + "@odata.id" : "/redfish/v1/Fabrics" + }, "Links": { "Sessions": { "@odata.id": "/redfish/v1/SessionService/Sessions" diff --git a/rsd_lib/tests/unit/test_main.py b/rsd_lib/tests/unit/test_main.py index c34a34c..1a8b65e 100644 --- a/rsd_lib/tests/unit/test_main.py +++ b/rsd_lib/tests/unit/test_main.py @@ -20,6 +20,7 @@ from sushy import connector import testtools from rsd_lib import main +from rsd_lib.resources.fabric import fabric from rsd_lib.resources.node import node @@ -48,3 +49,17 @@ class RSDLibTestCase(testtools.TestCase): mock_node.assert_called_once_with( self.rsd._conn, 'fake-node-id', redfish_version=self.rsd.redfish_version) + + @mock.patch.object(fabric, 'FabricCollection', autospec=True) + def test_get_fabric_collection(self, mock_fabric_collection): + self.rsd.get_fabric_collection() + mock_fabric_collection.assert_called_once_with( + self.rsd._conn, '/redfish/v1/Fabrics', + redfish_version=self.rsd.redfish_version) + + @mock.patch.object(fabric, 'Fabric', autospec=True) + def test_get_fabric(self, mock_fabric): + self.rsd.get_fabric('fake-fabric-id') + mock_fabric.assert_called_once_with( + self.rsd._conn, 'fake-fabric-id', + redfish_version=self.rsd.redfish_version)