Adding capability to check NVDIMM_N availability
This commit adds a new capability to check NVDIMM_N availability using the bios parameter on the ProLiant Servers. Change-Id: I91206332562bc5929df06806884811af73738304
This commit is contained in:
parent
641813c18f
commit
86759d886b
|
@ -978,6 +978,8 @@ class RISOperations(rest.RestConnectorBase, operations.IloOperations):
|
|||
capabilities.update(self._get_tpm_capability())
|
||||
if self._get_cpu_virtualization():
|
||||
capabilities['cpu_vt'] = 'true'
|
||||
if self._get_nvdimm_n_status():
|
||||
capabilities['nvdimm_n'] = 'true'
|
||||
try:
|
||||
self.get_secure_boot_mode()
|
||||
capabilities['secure_boot'] = 'true'
|
||||
|
@ -1526,3 +1528,18 @@ class RISOperations(rest.RestConnectorBase, operations.IloOperations):
|
|||
else:
|
||||
vt_status = False
|
||||
return vt_status
|
||||
|
||||
def _get_nvdimm_n_status(self):
|
||||
"""Get status of NVDIMM_N.
|
||||
|
||||
:returns: True if NVDIMM_N is present and enabled, False otherwise.
|
||||
"""
|
||||
try:
|
||||
nvdimm_n_status = self._get_bios_setting('NvDimmNMemFunctionality')
|
||||
if nvdimm_n_status == 'Enabled':
|
||||
nvn_status = True
|
||||
else:
|
||||
nvn_status = False
|
||||
except exception.IloCommandNotSupportedError:
|
||||
nvn_status = False
|
||||
return nvn_status
|
||||
|
|
|
@ -1276,6 +1276,7 @@ GET_BIOS_SETTINGS = """
|
|||
"NmiDebugButton": "Enabled",
|
||||
"NodeInterleaving": "Disabled",
|
||||
"NumaGroupSizeOpt": "Clustered",
|
||||
"NvDimmNMemFunctionality": "Enabled",
|
||||
"OldAdminPassword": null,
|
||||
"OldPowerOnPassword": null,
|
||||
"PciBusPadding": "Enabled",
|
||||
|
|
|
@ -375,6 +375,7 @@ class IloRisTestCase(testtools.TestCase):
|
|||
validate_mock.assert_called_once_with(ris_outputs.GET_HEADERS,
|
||||
settings_uri)
|
||||
|
||||
@mock.patch.object(ris.RISOperations, '_get_nvdimm_n_status')
|
||||
@mock.patch.object(ris.RISOperations,
|
||||
'_get_cpu_virtualization')
|
||||
@mock.patch.object(ris.RISOperations, '_get_tpm_capability')
|
||||
|
@ -385,7 +386,7 @@ class IloRisTestCase(testtools.TestCase):
|
|||
@mock.patch.object(ris.RISOperations, '_get_host_details')
|
||||
def test_get_server_capabilities(self, get_details_mock, ilo_firm_mock,
|
||||
secure_mock, gpu_mock, tpm_mock,
|
||||
cpu_vt_mock):
|
||||
cpu_vt_mock, nvdimm_n_mock):
|
||||
host_details = json.loads(ris_outputs.RESPONSE_BODY_FOR_REST_OP)
|
||||
get_details_mock.return_value = host_details
|
||||
ilo_firm_mock.return_value = {'ilo_firmware_version': 'iLO 4 v2.20'}
|
||||
|
@ -393,13 +394,15 @@ class IloRisTestCase(testtools.TestCase):
|
|||
cpu_vt_mock.return_value = True
|
||||
secure_mock.return_value = False
|
||||
tpm_mock.return_value = {'trusted_boot': True}
|
||||
nvdimm_n_mock.return_value = True
|
||||
expected_caps = {'secure_boot': 'true',
|
||||
'ilo_firmware_version': 'iLO 4 v2.20',
|
||||
'rom_firmware_version': u'I36 v1.40 (01/28/2015)',
|
||||
'server_model': u'ProLiant BL460c Gen9',
|
||||
'pci_gpu_devices': 2,
|
||||
'trusted_boot': True,
|
||||
'cpu_vt': 'true'}
|
||||
'cpu_vt': 'true',
|
||||
'nvdimm_n': 'true'}
|
||||
capabilities = self.client.get_server_capabilities()
|
||||
self.assertEqual(expected_caps, capabilities)
|
||||
|
||||
|
@ -1820,3 +1823,30 @@ class TestRISOperationsPrivateMethods(testtools.TestCase):
|
|||
expected_out = {'trusted_boot': False}
|
||||
status = self.client._get_tpm_capability()
|
||||
self.assertEqual(expected_out, status)
|
||||
|
||||
@mock.patch.object(ris.RISOperations, '_get_bios_setting')
|
||||
def test___get_nvdimm_n_status_enabled(self, bios_mock):
|
||||
bios_settings = json.loads(ris_outputs.GET_BIOS_SETTINGS)
|
||||
bios_mock.return_value = bios_settings['NvDimmNMemFunctionality']
|
||||
expected_nvdimm_n_status = True
|
||||
nvdimm_n_status_return = self.client._get_nvdimm_n_status()
|
||||
self.assertEqual(nvdimm_n_status_return, expected_nvdimm_n_status)
|
||||
self.assertTrue(bios_mock.called)
|
||||
|
||||
@mock.patch.object(ris.RISOperations, '_get_bios_setting')
|
||||
def test___get_nvdimm_n_status_disabled(self, bios_mock):
|
||||
bios_mock.return_value = 'Disabled'
|
||||
expected_nvdimm_n_status = False
|
||||
nvdimm_n_status_return = self.client._get_nvdimm_n_status()
|
||||
self.assertEqual(nvdimm_n_status_return, expected_nvdimm_n_status)
|
||||
self.assertTrue(bios_mock.called)
|
||||
|
||||
@mock.patch.object(ris.RISOperations, '_get_bios_setting')
|
||||
def test___get_nvdimm_n_status_not_supported_error(self, bios_mock):
|
||||
msg = ("BIOS Property 'NvDimmNMemFunctionality' is not supported on"
|
||||
" this system")
|
||||
bios_mock.side_effect = exception.IloCommandNotSupportedError(msg)
|
||||
expected_nvdimm_n_status = False
|
||||
nvdimm_n_status_return = self.client._get_nvdimm_n_status()
|
||||
self.assertEqual(nvdimm_n_status_return, expected_nvdimm_n_status)
|
||||
self.assertTrue(bios_mock.called)
|
||||
|
|
Loading…
Reference in New Issue