diff --git a/nova_zvm/tests/unit/virt/zvm/test_driver.py b/nova_zvm/tests/unit/virt/zvm/test_driver.py index 52fba9c..924c411 100644 --- a/nova_zvm/tests/unit/virt/zvm/test_driver.py +++ b/nova_zvm/tests/unit/virt/zvm/test_driver.py @@ -484,6 +484,18 @@ class TestZVMDriver(test.NoDBTestCase): self.driver.unpause(self._instance) ipa.assert_called_once_with(self._instance, 'guest_unpause') + @mock.patch('nova_zvm.virt.zvm.driver.ZVMDriver._instance_power_action') + def test_reboot_soft(self, ipa): + self.driver.reboot(self._context, self._instance, self._network_info, + 'SOFT') + ipa.assert_called_once_with(self._instance, 'guest_reboot') + + @mock.patch('nova_zvm.virt.zvm.driver.ZVMDriver._instance_power_action') + def test_reboot_hard(self, ipa): + self.driver.reboot(self._context, self._instance, self._network_info, + 'HARD') + ipa.assert_called_once_with(self._instance, 'guest_reset') + @mock.patch('nova_zvm.virt.zvm.utils.zVMConnectorRequestHandler.call') def test_get_console_output(self, call): call.return_value = 'console output' diff --git a/nova_zvm/virt/zvm/const.py b/nova_zvm/virt/zvm/const.py index d556cb7..e3c1fed 100644 --- a/nova_zvm/virt/zvm/const.py +++ b/nova_zvm/virt/zvm/const.py @@ -25,3 +25,6 @@ ZVM_POWER_STAT = { 'on': power_state.RUNNING, 'off': power_state.SHUTDOWN, } + +REBOOT_TYPE_SOFT = 'SOFT' +REBOOT_TYPE_HARD = 'HARD' diff --git a/nova_zvm/virt/zvm/driver.py b/nova_zvm/virt/zvm/driver.py index 19af63a..4737c0e 100644 --- a/nova_zvm/virt/zvm/driver.py +++ b/nova_zvm/virt/zvm/driver.py @@ -405,6 +405,13 @@ class ZVMDriver(driver.ComputeDriver): """Unpause the z/VM instance.""" self._instance_power_action(instance, 'guest_unpause') + def reboot(self, context, instance, network_info, reboot_type, + block_device_info=None, bad_volumes_callback=None): + if reboot_type == const.REBOOT_TYPE_SOFT: + self._instance_power_action(instance, 'guest_reboot') + else: + self._instance_power_action(instance, 'guest_reset') + def get_console_output(self, context, instance): return self._reqh.call('guest_get_console_output', instance.name)