diff --git a/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py b/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py index f67ce270dc..1656fa7805 100644 --- a/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py +++ b/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py @@ -41,7 +41,10 @@ def get_devices_wwn(devices, module): dev_dict[device] = {} for key, udev_key in COLLECT_INFO: - dev_dict[device][key] = udev.get('ID_%s' % udev_key) + candidate = udev.get('ID_%s' % udev_key) + if candidate: + candidate = candidate.lower() + dev_dict[device][key] = candidate return {"ansible_facts": {"devices_wwn": dev_dict}} diff --git a/ironic/tests/unit/drivers/modules/ansible/test_deploy.py b/ironic/tests/unit/drivers/modules/ansible/test_deploy.py index 912b4341c6..9978338766 100644 --- a/ironic/tests/unit/drivers/modules/ansible/test_deploy.py +++ b/ironic/tests/unit/drivers/modules/ansible/test_deploy.py @@ -345,8 +345,10 @@ class TestAnsibleMethods(AnsibleDeployTestCaseBase): ansible_deploy._prepare_extra_vars(host_list, ansible_vars)) def test__parse_root_device_hints(self): - hints = {"wwn": "fake wwn", "size": "12345", "rotational": True} - expected = {"wwn": "fake wwn", "size": 12345, "rotational": True} + hints = {"wwn": "fake wwn", "size": "12345", "rotational": True, + "serial": "HELLO"} + expected = {"wwn": "fake wwn", "size": 12345, "rotational": True, + "serial": "hello"} props = self.node.properties props['root_device'] = hints self.node.properties = props diff --git a/releasenotes/notes/bug-2006275-a5ca234683ca4c32.yaml b/releasenotes/notes/bug-2006275-a5ca234683ca4c32.yaml new file mode 100644 index 0000000000..94d49b1e84 --- /dev/null +++ b/releasenotes/notes/bug-2006275-a5ca234683ca4c32.yaml @@ -0,0 +1,5 @@ +--- +fixes: + | + Fixes an issue with using serial number as root device hints + with the ``ansible`` deploy interface.