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
This commit is contained in:
Lin Yang 2017-09-11 16:39:03 -07:00
parent b6360378d1
commit 8a60e21875
3 changed files with 43 additions and 0 deletions

View File

@ -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)

View File

@ -31,6 +31,9 @@
"Nodes": {
"@odata.id": "/redfish/v1/Nodes"
},
"Fabrics" : {
"@odata.id" : "/redfish/v1/Fabrics"
},
"Links": {
"Sessions": {
"@odata.id": "/redfish/v1/SessionService/Sessions"

View File

@ -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)