Update storage service for RSD 2.3

Removed obsolete remote_targets, physical_drives, and logical_drives
resources in storage service, but added volumes, drives, endpoints
and storage_pools according to RSD 2.3 spec.

Change-Id: Ie43302af5eba1699a132c8a50b8ff26150620a78
Closes-Bug: #1789683
This commit is contained in:
Lin Yang 2018-09-04 17:38:46 -07:00
parent 887269f6c8
commit 4ada7530a5
2 changed files with 23 additions and 107 deletions

View File

@ -87,100 +87,14 @@ FAKE_STORAGE_PYTHON_DICT = {
'identity': '1',
'name': 'Storage Service',
'redfish_version': '1.0.0',
'remote_targets': [{
'addresses': [{
'iSCSI': {
'TargetIQN': 'base_logical_volume_target',
'TargetLUN': [{
'LUN': 1,
'LogicalDrive': {
'@odata.id': '/redfish/v1/Services/1/LogicalDrives/2'
}
}],
'TargetPortalIP': '10.2.0.4',
'TargetPortalPort': 3260
}
}],
'identity': '1',
'initiator': [{'iSCSI': {'InitiatorIQN': 'ALL'}}],
'redfish_version': '1.0.0',
'target_type': 'iSCSITargets'
}],
'physical_drives': [{
'capacity_gib': 931,
'drive_type': 'HDD',
'identity': '1',
'interface': 'SATA',
'manufacturer': 'fake manufacture',
'model': 'ST1000NM0033-9ZM',
'redfish_version': '1.0.0',
'rpm': 7200,
'serial_number': 'Z1W23Q3V'
}],
'logical_drives': [{
'bootable': True,
'capacity_gib': 5589,
'drive_type': 'LVM',
'identity': '2',
'image': 'fake image',
'mode': 'LVG',
'protected': False,
'redfish_version': '1.0.0',
'snapshot': False
}]
'drives': ['/redfish/v1/Chassis/5-c-1/Drives/5-c-1-d-1'],
'storage_pools':
['/redfish/v1/StorageServices/5-sv-1/StoragePools/5-sv-1-sp-1'],
'endpoints': ['/redfish/v1/Fabrics/5-ff-1/Endpoints/5-ff-1-e-19'],
'volumes': ['/redfish/v1/StorageServices/5-sv-1/Volumes/5-sv-1-vl-1']
}
class FakeRemoteTarget(object):
def __init__(self):
self.addresses = [{
'iSCSI': {
'TargetIQN': 'base_logical_volume_target',
'TargetLUN': [{
'LUN': 1,
'LogicalDrive': {
'@odata.id': '/redfish/v1/Services/1/LogicalDrives/2'
}
}],
'TargetPortalIP': '10.2.0.4',
'TargetPortalPort': 3260
}
}]
self.identity = '1'
self.initiator = [{'iSCSI': {'InitiatorIQN': 'ALL'}}]
self.redfish_version = '1.0.0'
self.target_type = 'iSCSITargets'
class FakePhysicalDrive(object):
def __init__(self):
self.capacity_gib = 931
self.drive_type = 'HDD'
self.identity = '1'
self.interface = 'SATA'
self.manufacturer = 'fake manufacture'
self.model = 'ST1000NM0033-9ZM'
self.redfish_version = '1.0.0'
self.rpm = 7200
self.serial_number = 'Z1W23Q3V'
class FakeLogicalDrive(object):
def __init__(self):
self.bootable = True
self.capacity_gib = 5589
self.drive_type = 'LVM'
self.identity = '2'
self.image = 'fake image'
self.mode = 'LVG'
self.protected = False
self.redfish_version = '1.0.0'
self.snapshot = False
class FakeStorageSerice(object):
def __init__(self):
@ -189,12 +103,18 @@ class FakeStorageSerice(object):
self.identity = '1'
self.name = 'Storage Service'
self.redfish_version = '1.0.0'
self.remote_targets = mock.Mock()
self.remote_targets.get_members.return_value = [FakeRemoteTarget()]
self.physical_drives = mock.Mock()
self.physical_drives.get_members.return_value = [FakePhysicalDrive()]
self.logical_drives = mock.Mock()
self.logical_drives.get_members.return_value = [FakeLogicalDrive()]
self.drives = mock.Mock()
self.drives.members_identities = \
['/redfish/v1/Chassis/5-c-1/Drives/5-c-1-d-1']
self.storage_pools = mock.Mock()
self.storage_pools.members_identities = \
['/redfish/v1/StorageServices/5-sv-1/StoragePools/5-sv-1-sp-1']
self.endpoints = mock.Mock()
self.endpoints.members_identities = \
['/redfish/v1/Fabrics/5-ff-1/Endpoints/5-ff-1-e-19']
self.volumes = mock.Mock()
self.volumes.members_identities = \
['/redfish/v1/StorageServices/5-sv-1/Volumes/5-sv-1-vl-1']
FAKE_FABRIC_PYTHON_DICT = {

View File

@ -45,16 +45,12 @@ class StorageServiceManager(base.Manager):
storage = self.client.get_storage_service(storage_uri)
storage_dict = utils.extract_attr(storage)
# Append sub-items attributions
storage_dict['remote_targets'] = [
utils.extract_attr(item)
for item in storage.remote_targets.get_members()]
storage_dict['physical_drives'] = [
utils.extract_attr(item)
for item in storage.physical_drives.get_members()]
storage_dict['logical_drives'] = [
utils.extract_attr(item)
for item in storage.logical_drives.get_members()]
# Append the member link of sub-resource
storage_dict['drives'] = storage.drives.members_identities
storage_dict['storage_pools'] = \
storage.storage_pools.members_identities
storage_dict['volumes'] = storage.volumes.members_identities
storage_dict['endpoints'] = storage.endpoints.members_identities
return storage_dict