diff --git a/nova/tests/unit/virt/vmwareapi/test_vmops.py b/nova/tests/unit/virt/vmwareapi/test_vmops.py index 850df1b8ef..059a3aeebf 100644 --- a/nova/tests/unit/virt/vmwareapi/test_vmops.py +++ b/nova/tests/unit/virt/vmwareapi/test_vmops.py @@ -2439,7 +2439,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase): base_folder = self._vmops._get_base_folder() self.assertEqual('my_prefix_base', base_folder) - def _test_reboot_vm(self, reboot_type="SOFT"): + def _test_reboot_vm(self, reboot_type="SOFT", tool_status=True): expected_methods = ['get_object_properties_dict'] if reboot_type == "SOFT": @@ -2447,16 +2447,16 @@ class VMwareVMOpsTestCase(test.NoDBTestCase): else: expected_methods.append('ResetVM_Task') - query = {} - query['runtime.powerState'] = "poweredOn" - query['summary.guest.toolsStatus'] = "toolsOk" - query['summary.guest.toolsRunningStatus'] = "guestToolsRunning" - def fake_call_method(module, method, *args, **kwargs): expected_method = expected_methods.pop(0) self.assertEqual(expected_method, method) - if expected_method == 'get_object_properties_dict': - return query + if expected_method == 'get_object_properties_dict' and tool_status: + return { + "runtime.powerState": "poweredOn", + "summary.guest.toolsStatus": "toolsOk", + "summary.guest.toolsRunningStatus": "guestToolsRunning"} + elif expected_method == 'get_object_properties_dict': + return {"runtime.powerState": "poweredOn"} elif expected_method == 'ResetVM_Task': return 'fake-task' @@ -2477,6 +2477,9 @@ class VMwareVMOpsTestCase(test.NoDBTestCase): def test_reboot_vm_soft(self): self._test_reboot_vm() + def test_reboot_vm_hard_toolstatus(self): + self._test_reboot_vm(reboot_type="HARD", tool_status=False) + def test_reboot_vm_hard(self): self._test_reboot_vm(reboot_type="HARD") diff --git a/nova/virt/vmwareapi/vmops.py b/nova/virt/vmwareapi/vmops.py index 62a6c2b37a..6c7a923965 100644 --- a/nova/virt/vmwareapi/vmops.py +++ b/nova/virt/vmwareapi/vmops.py @@ -1028,9 +1028,9 @@ class VMwareVMOps(object): "get_object_properties_dict", vm_ref, lst_properties) - pwr_state = props['runtime.powerState'] - tools_status = props['summary.guest.toolsStatus'] - tools_running_status = props['summary.guest.toolsRunningStatus'] + pwr_state = props.get('runtime.powerState') + tools_status = props.get('summary.guest.toolsStatus') + tools_running_status = props.get('summary.guest.toolsRunningStatus') # Raise an exception if the VM is not powered On. if pwr_state not in ["poweredOn"]: