diff --git a/ironic/drivers/modules/agent_client.py b/ironic/drivers/modules/agent_client.py index b24d1812c4..cd5e04471b 100644 --- a/ironic/drivers/modules/agent_client.py +++ b/ironic/drivers/modules/agent_client.py @@ -98,9 +98,13 @@ class AgentClient(object): }) def _get_verify(self, node): - value = (node.driver_internal_info.get('agent_verify_ca') - or node.driver_info.get('agent_verify_ca') - or CONF.agent.verify_ca) + # False is a valid value, don't use 'or' + value = node.driver_internal_info.get('agent_verify_ca') + if value is None: + value = node.driver_info.get('agent_verify_ca') + if value is None: + value = CONF.agent.verify_ca + if isinstance(value, str): try: value = strutils.bool_from_string(value, strict=True) diff --git a/ironic/tests/unit/drivers/modules/test_agent_client.py b/ironic/tests/unit/drivers/modules/test_agent_client.py index 1933165761..9396639193 100644 --- a/ironic/tests/unit/drivers/modules/test_agent_client.py +++ b/ironic/tests/unit/drivers/modules/test_agent_client.py @@ -487,6 +487,28 @@ class TestAgentClient(base.TestCase): timeout=60, verify=False) + @mock.patch('os.path.exists', autospec=True, return_value=True) + def test__command_verify_disable_in_driver_info(self, mock_exists): + response_data = {'status': 'ok'} + self.client.session.post.return_value = MockResponse(response_data) + method = 'standby.run_image' + image_info = {'image_id': 'test_image'} + params = {'image_info': image_info} + + self.node.driver_info['agent_verify_ca'] = False + + url = self.client._get_command_url(self.node) + body = self.client._get_command_body(method, params) + + response = self.client._command(self.node, method, params) + self.assertEqual(response, response_data) + self.client.session.post.assert_called_once_with( + url, + data=body, + params={'wait': 'false'}, + timeout=60, + verify=False) + @mock.patch('os.path.exists', autospec=True, return_value=False) def test__command_verify_invalid_file(self, mock_exists): response_data = {'status': 'ok'} diff --git a/releasenotes/notes/verify-bool-ab3607429e005bed.yaml b/releasenotes/notes/verify-bool-ab3607429e005bed.yaml new file mode 100644 index 0000000000..ec67b12d59 --- /dev/null +++ b/releasenotes/notes/verify-bool-ab3607429e005bed.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Fixes overriding ``agent_verify_ca`` with ``False`` via ``driver_info``.