From 9050098e3245b1c31403b25117517d4dc53cacea Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Tue, 21 Jan 2020 13:02:12 +0100 Subject: Follow up to root device hints in instance_info Follow-up to commit 42dc9787e52670bb1e1baa36f08703dd802804f4: * Refactor root device checking code to be in one place and extend the error message. * Extend unit tests to cover the actual override. * Update documentation. Change-Id: I1d73f2233c766ff52268e242b8071dec12b2daca --- ironic/tests/unit/drivers/modules/ansible/test_deploy.py | 16 ++++++++++++++++ ironic/tests/unit/drivers/modules/test_agent.py | 1 + ironic/tests/unit/drivers/modules/test_iscsi_deploy.py | 1 + 3 files changed, 18 insertions(+) (limited to 'ironic/tests') diff --git a/ironic/tests/unit/drivers/modules/ansible/test_deploy.py b/ironic/tests/unit/drivers/modules/ansible/test_deploy.py index 981f673b1..8787848ff 100644 --- a/ironic/tests/unit/drivers/modules/ansible/test_deploy.py +++ b/ironic/tests/unit/drivers/modules/ansible/test_deploy.py @@ -369,6 +369,22 @@ class TestAnsibleMethods(AnsibleDeployTestCaseBase): self.assertEqual( expected, ansible_deploy._parse_root_device_hints(task.node)) + def test__parse_root_device_hints_override(self): + 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'] = {'size': 'no idea'} + self.node.properties = props + iinfo = self.node.instance_info + iinfo['root_device'] = hints + self.node.instance_info = iinfo + self.node.save() + with task_manager.acquire(self.context, self.node.uuid) as task: + self.assertEqual( + expected, ansible_deploy._parse_root_device_hints(task.node)) + def test__parse_root_device_hints_fail_advanced(self): hints = {"wwn": "s!= fake wwn", "size": ">= 12345", diff --git a/ironic/tests/unit/drivers/modules/test_agent.py b/ironic/tests/unit/drivers/modules/test_agent.py index 03deafcc7..7ec76c9d0 100644 --- a/ironic/tests/unit/drivers/modules/test_agent.py +++ b/ironic/tests/unit/drivers/modules/test_agent.py @@ -281,6 +281,7 @@ class TestAgentDeploy(db_base.DbTestCase): self, pxe_boot_validate_mock, show_mock, validate_http_mock): with task_manager.acquire(self.context, self.node.uuid, shared=True) as task: + task.node.properties['root_device'] = {'size': 42} task.node.instance_info['root_device'] = {'size': 'not-int'} self.assertRaises(exception.InvalidParameterValue, task.driver.deploy.validate, task) diff --git a/ironic/tests/unit/drivers/modules/test_iscsi_deploy.py b/ironic/tests/unit/drivers/modules/test_iscsi_deploy.py index 9d2b42609..a5fee72a5 100644 --- a/ironic/tests/unit/drivers/modules/test_iscsi_deploy.py +++ b/ironic/tests/unit/drivers/modules/test_iscsi_deploy.py @@ -579,6 +579,7 @@ class IscsiDeployMethodsTestCase(db_base.DbTestCase): mock_get_url.return_value = 'http://spam.ham/baremetal' with task_manager.acquire(self.context, self.node.uuid, shared=True) as task: + task.node.properties['root_device'] = {'size': 42} task.node.instance_info['root_device'] = {'size': 'not-int'} self.assertRaises(exception.InvalidParameterValue, iscsi_deploy.validate, task) -- cgit v1.2.1