Log a warning for Gen8 Inspection
This patch adds a warning for Prolaint Gen8 server's NIC inspection. The proliantutils will start returning only active NICs starting this patch Ica624aae8f956a2da061801def6ddc43152a5b09. story: #2004950 task: #29366 Depends-On: Ica624aae8f956a2da061801def6ddc43152a5b09 Change-Id: I71feefa3d0593fd185a286bec4ce38607203641d
This commit is contained in:
parent
5bb519c4af
commit
913e4cebb2
|
@ -233,7 +233,9 @@ class IloInspect(base.InspectInterface):
|
|||
# hardwares, the method inspect_hardware() doesn't raise an error
|
||||
# for these capabilities.
|
||||
capabilities = _get_capabilities(task.node, ilo_object)
|
||||
model = None
|
||||
if capabilities:
|
||||
model = capabilities.get('server_model')
|
||||
valid_cap = _create_supported_capabilities_dict(capabilities)
|
||||
capabilities = utils.get_updated_capabilities(
|
||||
task.node.properties.get('capabilities'), valid_cap)
|
||||
|
@ -241,6 +243,21 @@ class IloInspect(base.InspectInterface):
|
|||
node_properties['capabilities'] = capabilities
|
||||
task.node.properties = node_properties
|
||||
|
||||
# RIBCL(Gen8) protocol cannot determine if a NIC
|
||||
# is physically connected with cable or not when the server
|
||||
# is not provisioned. However it is possible to determine
|
||||
# the same using RIS(Gen9) and Redfish(Gen10) protocols.
|
||||
# Hence proliantutils return ALL MACs for Gen8 while returns
|
||||
# only active MACs for Gen9 and Gen10. A warning is been added
|
||||
# for the user so that he knows that he needs to remove the
|
||||
# ironic ports created for inactive ports for Gen8.
|
||||
if model is not None and 'Gen8' in model:
|
||||
LOG.warning('iLO cannot determine if the NICs are physically '
|
||||
'connected or not for ProLiant Gen8 servers. '
|
||||
'Hence returns all the MACs present on the server. '
|
||||
'Please remove the ironic ports created for inactive '
|
||||
'NICs manually for the node %(node)',
|
||||
{"node": task.node.uuid})
|
||||
task.node.save()
|
||||
|
||||
# Create ports for the nics detected.
|
||||
|
|
|
@ -68,7 +68,7 @@ class IloInspectTestCase(test_common.BaseIloTest):
|
|||
properties = {'memory_mb': '512', 'local_gb': '10',
|
||||
'cpus': '1', 'cpu_arch': 'x86_64'}
|
||||
macs = {'Port 1': 'aa:aa:aa:aa:aa:aa', 'Port 2': 'bb:bb:bb:bb:bb:bb'}
|
||||
capabilities = ''
|
||||
capabilities = {}
|
||||
result = {'properties': properties, 'macs': macs}
|
||||
get_essential_mock.return_value = result
|
||||
get_capabilities_mock.return_value = capabilities
|
||||
|
@ -106,7 +106,7 @@ class IloInspectTestCase(test_common.BaseIloTest):
|
|||
properties = {'memory_mb': '512', 'local_gb': 0,
|
||||
'cpus': '1', 'cpu_arch': 'x86_64'}
|
||||
macs = {'Port 1': 'aa:aa:aa:aa:aa:aa', 'Port 2': 'bb:bb:bb:bb:bb:bb'}
|
||||
capabilities = ''
|
||||
capabilities = {}
|
||||
result = {'properties': properties, 'macs': macs}
|
||||
get_essential_mock.return_value = result
|
||||
get_capabilities_mock.return_value = capabilities
|
||||
|
@ -129,6 +129,90 @@ class IloInspectTestCase(test_common.BaseIloTest):
|
|||
ilo_object_mock)
|
||||
create_port_mock.assert_called_once_with(task, macs)
|
||||
|
||||
@mock.patch.object(ilo_inspect.LOG, 'warning',
|
||||
spec_set=True, autospec=True)
|
||||
@mock.patch.object(ilo_inspect, '_get_capabilities', spec_set=True,
|
||||
autospec=True)
|
||||
@mock.patch.object(inspect_utils, 'create_ports_if_not_exist',
|
||||
spec_set=True, autospec=True)
|
||||
@mock.patch.object(ilo_inspect, '_get_essential_properties', spec_set=True,
|
||||
autospec=True)
|
||||
@mock.patch.object(ilo_power.IloPower, 'get_power_state', spec_set=True,
|
||||
autospec=True)
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object', spec_set=True,
|
||||
autospec=True)
|
||||
def test_inspect_ok_gen8(self, get_ilo_object_mock,
|
||||
power_mock,
|
||||
get_essential_mock,
|
||||
create_port_mock,
|
||||
get_capabilities_mock,
|
||||
log_mock):
|
||||
ilo_object_mock = get_ilo_object_mock.return_value
|
||||
properties = {'memory_mb': '512', 'local_gb': 10,
|
||||
'cpus': '1', 'cpu_arch': 'x86_64'}
|
||||
macs = {'Port 1': 'aa:aa:aa:aa:aa:aa', 'Port 2': 'bb:bb:bb:bb:bb:bb'}
|
||||
capabilities = {'server_model': 'Gen8'}
|
||||
result = {'properties': properties, 'macs': macs}
|
||||
get_essential_mock.return_value = result
|
||||
get_capabilities_mock.return_value = capabilities
|
||||
power_mock.return_value = states.POWER_ON
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
expected_properties = {'memory_mb': '512', 'local_gb': 10,
|
||||
'cpus': '1', 'cpu_arch': 'x86_64',
|
||||
'capabilities': 'server_model:Gen8'}
|
||||
task.driver.inspect.inspect_hardware(task)
|
||||
self.assertEqual(expected_properties, task.node.properties)
|
||||
power_mock.assert_called_once_with(mock.ANY, task)
|
||||
get_essential_mock.assert_called_once_with(task.node,
|
||||
ilo_object_mock)
|
||||
self.assertTrue(log_mock.called)
|
||||
get_capabilities_mock.assert_called_once_with(task.node,
|
||||
ilo_object_mock)
|
||||
create_port_mock.assert_called_once_with(task, macs)
|
||||
|
||||
@mock.patch.object(ilo_inspect.LOG, 'warning',
|
||||
spec_set=True, autospec=True)
|
||||
@mock.patch.object(ilo_inspect, '_get_capabilities', spec_set=True,
|
||||
autospec=True)
|
||||
@mock.patch.object(inspect_utils, 'create_ports_if_not_exist',
|
||||
spec_set=True, autospec=True)
|
||||
@mock.patch.object(ilo_inspect, '_get_essential_properties', spec_set=True,
|
||||
autospec=True)
|
||||
@mock.patch.object(ilo_power.IloPower, 'get_power_state', spec_set=True,
|
||||
autospec=True)
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object', spec_set=True,
|
||||
autospec=True)
|
||||
def test_inspect_ok_gen9(self, get_ilo_object_mock,
|
||||
power_mock,
|
||||
get_essential_mock,
|
||||
create_port_mock,
|
||||
get_capabilities_mock,
|
||||
log_mock):
|
||||
ilo_object_mock = get_ilo_object_mock.return_value
|
||||
properties = {'memory_mb': '512', 'local_gb': 10,
|
||||
'cpus': '1', 'cpu_arch': 'x86_64'}
|
||||
macs = {'NIC.LOM.1.1': 'aa:aa:aa:aa:aa:aa'}
|
||||
capabilities = {'server_model': 'Gen9'}
|
||||
result = {'properties': properties, 'macs': macs}
|
||||
get_essential_mock.return_value = result
|
||||
get_capabilities_mock.return_value = capabilities
|
||||
power_mock.return_value = states.POWER_ON
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
expected_properties = {'memory_mb': '512', 'local_gb': 10,
|
||||
'cpus': '1', 'cpu_arch': 'x86_64',
|
||||
'capabilities': 'server_model:Gen9'}
|
||||
task.driver.inspect.inspect_hardware(task)
|
||||
self.assertEqual(expected_properties, task.node.properties)
|
||||
power_mock.assert_called_once_with(mock.ANY, task)
|
||||
get_essential_mock.assert_called_once_with(task.node,
|
||||
ilo_object_mock)
|
||||
self.assertFalse(log_mock.called)
|
||||
get_capabilities_mock.assert_called_once_with(task.node,
|
||||
ilo_object_mock)
|
||||
create_port_mock.assert_called_once_with(task, macs)
|
||||
|
||||
@mock.patch.object(ilo_inspect, '_get_capabilities', spec_set=True,
|
||||
autospec=True)
|
||||
@mock.patch.object(inspect_utils, 'create_ports_if_not_exist',
|
||||
|
@ -151,7 +235,7 @@ class IloInspectTestCase(test_common.BaseIloTest):
|
|||
properties = {'memory_mb': '512', 'local_gb': '10',
|
||||
'cpus': '1', 'cpu_arch': 'x86_64'}
|
||||
macs = {'Port 1': 'aa:aa:aa:aa:aa:aa', 'Port 2': 'bb:bb:bb:bb:bb:bb'}
|
||||
capabilities = ''
|
||||
capabilities = {}
|
||||
result = {'properties': properties, 'macs': macs}
|
||||
get_essential_mock.return_value = result
|
||||
get_capabilities_mock.return_value = capabilities
|
||||
|
|
Loading…
Reference in New Issue