Redfish: followup patch for properties

Change-Id: I1a8960f1818308e7f97dee0c18fe6c53f71b9cea
This commit is contained in:
Nisha Agarwal 2017-08-09 16:26:33 +00:00
parent 9a7735aea2
commit 7e0476d6f2
6 changed files with 79 additions and 40 deletions

View File

@ -61,9 +61,7 @@ class HPESmartStorage(base.ResourceBase):
"""
if self._logical_drives_maximum_size_mib is None:
self._logical_drives_maximum_size_mib = (
utils.max_safe(
[member.logical_drives.maximum_size_mib
for member in self.array_controllers.get_members()]))
self.array_controllers.logical_drives_maximum_size_mib)
return self._logical_drives_maximum_size_mib
@property
@ -74,9 +72,7 @@ class HPESmartStorage(base.ResourceBase):
"""
if self._physical_drives_maximum_size_mib is None:
self._physical_drives_maximum_size_mib = (
utils.max_safe(
[member.physical_drives.maximum_size_mib
for member in self.array_controllers.get_members()]))
self.array_controllers.physical_drives_maximum_size_mib)
return self._physical_drives_maximum_size_mib
@property
@ -84,11 +80,7 @@ class HPESmartStorage(base.ResourceBase):
"""Return true if any of the drive under ArrayControllers is ssd"""
if self._has_ssd is None:
self._has_ssd = False
for member in self.array_controllers.get_members():
if member.physical_drives.has_ssd:
self._has_ssd = True
break
self._has_ssd = self.array_controllers.has_ssd
return self._has_ssd
@property
@ -96,11 +88,8 @@ class HPESmartStorage(base.ResourceBase):
"""Return true if any of the drive under ArrayControllers is HDD"""
if self._has_rotational is None:
self._has_rotational = False
for member in self.array_controllers.get_members():
if member.physical_drives.has_rotational:
self._has_rotational = True
break
self._has_rotational = (
self.array_controllers.has_rotational)
return self._has_rotational
@property
@ -110,10 +99,8 @@ class HPESmartStorage(base.ResourceBase):
:returns the set of list of raid levels configured.
"""
if self._logical_raid_levels is None:
self._logical_raid_levels = set()
for member in self.array_controllers.get_members():
self._logical_raid_levels.update(
member.logical_drives.logical_raid_levels)
self._logical_raid_levels = (
self.array_controllers.logical_raid_levels)
return self._logical_raid_levels
@property
@ -121,10 +108,8 @@ class HPESmartStorage(base.ResourceBase):
"""Gets the list of rotational speed of the HDD drives"""
if self._drive_rotational_speed_rpm is None:
self._drive_rotational_speed_rpm = set()
for member in self.array_controllers.get_members():
self._drive_rotational_speed_rpm.update(
member.physical_drives.drive_rotational_speed_rpm)
self._drive_rotational_speed_rpm = (
self.array_controllers.drive_rotational_speed_rpm)
return self._drive_rotational_speed_rpm
def refresh(self):

View File

@ -1,4 +1,5 @@
{
"logical_drive1": {
"@odata.context": "/redfish/v1/$metadata#Systems/Members/1/SmartStorage/ArrayControllers/Members/0/LogicalDrives/Members/$entity",
"@odata.etag": "W/\"21D690E9\"",
"@odata.id": "/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/LogicalDrives/1/",
@ -26,4 +27,34 @@
},
"StripeSizeBytes": 262144,
"VolumeUniqueIdentifier": "600508B1001CC8EF62AC74E1ABD407C1"
},
"logical_drive2": {
"@odata.context": "/redfish/v1/$metadata#Systems/Members/1/SmartStorage/ArrayControllers/Members/0/LogicalDrives/Members/$entity",
"@odata.etag": "W/\"21D690E9\"",
"@odata.id": "/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/LogicalDrives/1/",
"@odata.type": "#HpeSmartStorageLogicalDrive.v2_1_0.HpeSmartStorageLogicalDrive",
"CapacityMiB": 953837,
"Description": "HPE Smart Storage Logical Drive View",
"Id": "1",
"InterfaceType": "SATA",
"LegacyBootPriority": "None",
"Links": {
"DataDrives": {
"@odata.id": "/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/LogicalDrives/1/DataDrives/"
}
},
"LogicalDriveEncryption": false,
"LogicalDriveName": "019D4217PWDRE0XRH57093 7DA4",
"LogicalDriveNumber": 2,
"LogicalDriveType": "Data",
"MediaType": "HDD",
"Name": "HpeSmartStorageLogicalDrive",
"Raid": "1",
"Status": {
"Health": "OK",
"State": "Enabled"
},
"StripeSizeBytes": 262144,
"VolumeUniqueIdentifier": "600508B1001CC8EF62AC74E1ABD407C1"
}
}

View File

@ -7,8 +7,11 @@
"Members": [
{
"@odata.id": "/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/LogicalDrives/1/"
},
{
"@odata.id": "/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/LogicalDrives/2/"
}
],
"Members@odata.count": 1,
"Members@odata.count": 2,
"Name": "HpeSmartStorageLogicalDrives"
}

View File

@ -50,7 +50,9 @@ class HPEArrayControllerTestCase(testtools.TestCase):
with open('proliantutils/tests/redfish/'
'json_samples/logical_drive.json') as f:
log_dr = json.loads(f.read())
self.conn.get.return_value.json.side_effect = [log_coll, log_dr]
self.conn.get.return_value.json.side_effect = (
[log_coll, log_dr['logical_drive1'],
log_dr['logical_drive2']])
actual_log_dr = self.sys_stor.logical_drives
self.conn.get.return_value.json.reset_mock()
self.assertIs(actual_log_dr,
@ -132,7 +134,9 @@ class HPEArrayControllerCollectionTestCase(testtools.TestCase):
path = ('proliantutils/tests/redfish/json_samples/'
'logical_drive.json')
with open(path, 'r') as f:
val.append(json.loads(f.read()))
f_data = json.loads(f.read())
val.append(f_data['logical_drive1'])
val.append(f_data['logical_drive2'])
self.conn.get.return_value.json.side_effect = val
expected = 953837
actual = self.sys_stor_col.logical_drives_maximum_size_mib
@ -153,9 +157,11 @@ class HPEArrayControllerCollectionTestCase(testtools.TestCase):
path = ('proliantutils/tests/redfish/json_samples/'
'logical_drive.json')
with open(path, 'r') as f:
val.append(json.loads(f.read()))
f_data = json.loads(f.read())
val.append(f_data['logical_drive1'])
val.append(f_data['logical_drive2'])
self.conn.get.return_value.json.side_effect = val
expected = set(['0'])
expected = set(['0', '1'])
actual = self.sys_stor_col.logical_raid_levels
self.assertEqual(expected, actual)

View File

@ -59,7 +59,9 @@ class HPELogicalDriveCollectionTestCase(testtools.TestCase):
self.assertEqual('HpeSmartStorageLogicalDrives',
self.sys_stor_col.name)
path = ('/redfish/v1/Systems/1/SmartStorage/'
'ArrayControllers/0/LogicalDrives/1',)
'ArrayControllers/0/LogicalDrives/1',
'/redfish/v1/Systems/1/SmartStorage/'
'ArrayControllers/0/LogicalDrives/2',)
self.assertEqual(path, self.sys_stor_col.members_identities)
@mock.patch.object(logical_drive, 'HPELogicalDrive', autospec=True)
@ -76,15 +78,19 @@ class HPELogicalDriveCollectionTestCase(testtools.TestCase):
@mock.patch.object(logical_drive, 'HPELogicalDrive', autospec=True)
def test_get_members(self, mock_eth):
members = self.sys_stor_col.get_members()
path = ("/redfish/v1/Systems/1/SmartStorage/ArrayControllers/"
"0/LogicalDrives/1")
path1 = ("/redfish/v1/Systems/1/SmartStorage/ArrayControllers/"
"0/LogicalDrives/1")
path2 = ("/redfish/v1/Systems/1/SmartStorage/ArrayControllers/"
"0/LogicalDrives/2")
calls = [
mock.call(self.sys_stor_col._conn, path,
mock.call(self.sys_stor_col._conn, path1,
redfish_version=self.sys_stor_col.redfish_version),
mock.call(self.sys_stor_col._conn, path2,
redfish_version=self.sys_stor_col.redfish_version),
]
mock_eth.assert_has_calls(calls)
self.assertIsInstance(members, list)
self.assertEqual(1, len(members))
self.assertEqual(2, len(members))
def test_maximum_size_mib(self):
self.assertIsNone(self.sys_stor_col._maximum_size_mib)
@ -92,7 +98,9 @@ class HPELogicalDriveCollectionTestCase(testtools.TestCase):
path = ('proliantutils/tests/redfish/json_samples/'
'logical_drive.json')
with open(path, 'r') as f:
self.conn.get.return_value.json.return_value = json.loads(f.read())
val = json.loads(f.read())
self.conn.get.return_value.json.side_effect = (
[val['logical_drive1'], val['logical_drive2']])
expected = 953837
actual = self.sys_stor_col.maximum_size_mib
self.assertEqual(expected, actual)
@ -103,7 +111,9 @@ class HPELogicalDriveCollectionTestCase(testtools.TestCase):
path = ('proliantutils/tests/redfish/json_samples/'
'logical_drive.json')
with open(path, 'r') as f:
self.conn.get.return_value.json.return_value = json.loads(f.read())
expected = set(['0'])
val = json.loads(f.read())
self.conn.get.return_value.json.side_effect = (
[val['logical_drive1'], val['logical_drive2']])
expected = set(['0', '1'])
actual = self.sys_stor_col.logical_raid_levels
self.assertEqual(expected, actual)

View File

@ -75,7 +75,9 @@ class HPESmartStorageTestCase(testtools.TestCase):
path = ('proliantutils/tests/redfish/json_samples/'
'logical_drive.json')
with open(path, 'r') as f:
val.append(json.loads(f.read()))
logical_drive = json.loads(f.read())
val.append(logical_drive['logical_drive1'])
val.append(logical_drive['logical_drive2'])
self.conn.get.return_value.json.side_effect = val
expected = 953837
actual = self.sys_stor.logical_drives_maximum_size_mib
@ -100,9 +102,11 @@ class HPESmartStorageTestCase(testtools.TestCase):
path = ('proliantutils/tests/redfish/json_samples/'
'logical_drive.json')
with open(path, 'r') as f:
val.append(json.loads(f.read()))
logical_drive = json.loads(f.read())
val.append(logical_drive['logical_drive1'])
val.append(logical_drive['logical_drive2'])
self.conn.get.return_value.json.side_effect = val
expected = set(['0'])
expected = set(['0', '1'])
actual = self.sys_stor.logical_raid_levels
self.assertEqual(expected, actual)