summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ironic/drivers/modules/ilo/inspect.py8
-rw-r--r--ironic/tests/drivers/ilo/test_inspect.py28
2 files changed, 32 insertions, 4 deletions
diff --git a/ironic/drivers/modules/ilo/inspect.py b/ironic/drivers/modules/ilo/inspect.py
index 0df53b26d..a81fb9144 100644
--- a/ironic/drivers/modules/ilo/inspect.py
+++ b/ironic/drivers/modules/ilo/inspect.py
@@ -155,6 +155,9 @@ def _update_capabilities(node, new_capabilities):
:returns: The capability string after adding/updating the
node_capabilities with new_capabilities
:raises: InvalidParameterValue, if node_capabilities is malformed.
+ :raises: HardwareInspectionFailure, if inspected capabilities
+ are not in dictionary format.
+
"""
cap_dict = {}
node_capabilities = node.properties.get('capabilities')
@@ -171,12 +174,12 @@ def _update_capabilities(node, new_capabilities):
"properties['capabilities'] string")
% {'node': node.uuid, 'capabilities': node_capabilities})
raise exception.InvalidParameterValue(msg)
- if new_capabilities and isinstance(new_capabilities, dict):
+ if isinstance(new_capabilities, dict):
cap_dict.update(new_capabilities)
else:
msg = (_("The expected format of capabilities from inspection "
"is dictionary while node %(node)s returned "
- "%(capabilities)s."), {'node': node.uuid,
+ "%(capabilities)s.") % {'node': node.uuid,
'capabilities': new_capabilities})
raise exception.HardwareInspectionFailure(error=msg)
return ','.join(['%(key)s:%(value)s' % {'key': key, 'value': value}
@@ -229,7 +232,6 @@ def _get_macs_for_desired_ports(node, macs):
to_be_created_macs = macs
else:
to_be_created_macs = {}
- # desired_macs_list = desired_macs.split(',')
# The list should look like ['Port 1', 'Port 2'] as
# iLO returns port numbers like this.
desired_macs_list = [
diff --git a/ironic/tests/drivers/ilo/test_inspect.py b/ironic/tests/drivers/ilo/test_inspect.py
index 505f0f143..129f52b0f 100644
--- a/ironic/tests/drivers/ilo/test_inspect.py
+++ b/ironic/tests/drivers/ilo/test_inspect.py
@@ -483,7 +483,9 @@ class TestInspectPrivateMethods(db_base.DbTestCase):
cap_string = 'ilo_firmware_version:xyz,foo:bar,somekey:value'
cap_returned = ilo_inspect._update_capabilities(self.node,
capabilities)
- self.assertEqual(sorted(cap_string), sorted(cap_returned))
+ set1 = set(cap_string.split(','))
+ set2 = set(cap_returned.split(','))
+ self.assertEqual(set1, set2)
self.assertIsInstance(cap_returned, str)
def test__update_capabilities_invalid_capabilities(self):
@@ -498,6 +500,30 @@ class TestInspectPrivateMethods(db_base.DbTestCase):
ilo_inspect._update_capabilities,
self.node, capabilities)
+ def test__update_capabilities_add_to_existing_capabilities(self):
+ node_capabilities = {'capabilities': 'foo:bar'}
+ self.node.properties.update(node_capabilities)
+ new_capabilities = {'BootMode': 'uefi'}
+ expected_capabilities = 'BootMode:uefi,foo:bar'
+ cap_returned = ilo_inspect._update_capabilities(self.node,
+ new_capabilities)
+ set1 = set(expected_capabilities.split(','))
+ set2 = set(cap_returned.split(','))
+ self.assertEqual(set1, set2)
+ self.assertIsInstance(cap_returned, str)
+
+ def test__update_capabilities_replace_to_existing_capabilities(self):
+ node_capabilities = {'capabilities': 'BootMode:uefi'}
+ self.node.properties.update(node_capabilities)
+ new_capabilities = {'BootMode': 'bios'}
+ expected_capabilities = 'BootMode:bios'
+ cap_returned = ilo_inspect._update_capabilities(self.node,
+ new_capabilities)
+ set1 = set(expected_capabilities.split(','))
+ set2 = set(cap_returned.split(','))
+ self.assertEqual(set1, set2)
+ self.assertIsInstance(cap_returned, str)
+
def test__get_macs_for_desired_ports(self):
driver_info_mock = {'inspect_ports': '1,2'}
self.node.driver_info = driver_info_mock