diff --git a/ironic/drivers/modules/agent.py b/ironic/drivers/modules/agent.py index 08eaf0266f..1466cb7650 100644 --- a/ironic/drivers/modules/agent.py +++ b/ironic/drivers/modules/agent.py @@ -736,17 +736,17 @@ class AgentRAID(base.RAIDInterface): """ try: if task.node.provision_state == states.DEPLOYWAIT: - operation = "deploying" result = command['command_result']['deploy_result'] else: - operation = "cleaning" result = command['command_result']['clean_result'] except KeyError: + result = None + + if not result: raise exception.IronicException( _("Agent ramdisk didn't return a proper command result while " - "%(operation)s %(node)s. It returned '%(result)s' after " - "command execution.") % {'operation': operation, - 'node': task.node.uuid, + "building RAID on %(node)s. It returned '%(result)s' after " + "command execution.") % {'node': task.node.uuid, 'result': command}) raid.update_raid_info(task.node, result) diff --git a/ironic/tests/unit/drivers/modules/test_agent.py b/ironic/tests/unit/drivers/modules/test_agent.py index 7c22a584b3..7db79b066b 100644 --- a/ironic/tests/unit/drivers/modules/test_agent.py +++ b/ironic/tests/unit/drivers/modules/test_agent.py @@ -1818,6 +1818,17 @@ class AgentRAIDTestCase(db_base.DbTestCase): task, command) self.assertFalse(update_raid_info_mock.called) + @mock.patch.object(raid, 'update_raid_info', autospec=True) + def test__create_configuration_final_bad_command_result2( + self, update_raid_info_mock): + command = {'command_result': {'deploy_result': None}} + with task_manager.acquire(self.context, self.node.uuid) as task: + raid_mgmt = agent.AgentRAID + self.assertRaises(exception.IronicException, + raid_mgmt._create_configuration_final, + task, command) + self.assertFalse(update_raid_info_mock.called) + @mock.patch.object(agent_base, 'execute_step', autospec=True) def test_delete_configuration(self, execute_mock): execute_mock.return_value = states.CLEANING