Merge "reboot stopped vms in ovirt"
This commit is contained in:
commit
0e1be8bb81
|
@ -218,6 +218,10 @@ class oVirtPower(base.PowerInterface):
|
|||
elif target_state == states.POWER_ON:
|
||||
vm.start()
|
||||
elif target_state == states.REBOOT:
|
||||
status = vm.get().status.value
|
||||
if status == 'down':
|
||||
vm.start()
|
||||
else:
|
||||
vm.reboot()
|
||||
else:
|
||||
msg = _("'set_power_state' called with invalid power "
|
||||
|
@ -240,15 +244,7 @@ class oVirtPower(base.PowerInterface):
|
|||
:raises: ovirtsdk4.Error, if error encountered from
|
||||
oVirt operation.
|
||||
"""
|
||||
driver_info = _parse_driver_info(task.node)
|
||||
vm_name = driver_info['ovirt_vm_name']
|
||||
vm = _getvm(driver_info)
|
||||
try:
|
||||
vm.reboot()
|
||||
except sdk.Error as e:
|
||||
LOG.error("Could not restart VM vm %(name)s "
|
||||
"got error: %(error)s", {'name': vm_name, 'error': e})
|
||||
raise staging_exception.oVirtError(err=e)
|
||||
self.set_power_state(task, states.REBOOT, timeout=timeout)
|
||||
|
||||
|
||||
class oVirtManagement(base.ManagementInterface):
|
||||
|
|
|
@ -138,3 +138,19 @@ class oVirtDriverTestCase(db_base.DbTestCase):
|
|||
task.driver.management.set_boot_device(task, boot_devices.DISK)
|
||||
mock_power.assert_called_once_with(task.driver.management, task,
|
||||
boot_devices.DISK)
|
||||
|
||||
@mock.patch.object(ovirt_power, '_getvm')
|
||||
def test_set_reboot_when_down(self, mock_vm):
|
||||
mock_vm.return_value.get.return_value.status.value = 'down'
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid) as task:
|
||||
task.driver.power.reboot(task)
|
||||
mock_vm.return_value.start.assert_called_once()
|
||||
|
||||
@mock.patch.object(ovirt_power, '_getvm')
|
||||
def test_set_reboot_when_up(self, mock_vm):
|
||||
mock_vm.return_value.get.return_value.status.value = 'up'
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid) as task:
|
||||
task.driver.power.reboot(task)
|
||||
mock_vm.return_value.reboot.assert_called_once()
|
||||
|
|
|
@ -29,3 +29,8 @@ LIBVIRT_SPEC = (
|
|||
'VIR_CRED_AUTHNAME',
|
||||
'VIR_CRED_PASSPHRASE',
|
||||
)
|
||||
|
||||
# ovirt
|
||||
OVIRT4_SPEC = (
|
||||
'types',
|
||||
)
|
||||
|
|
|
@ -62,3 +62,11 @@ if not libvirt:
|
|||
if 'ironic_staging_drivers.libvirt.power' in sys.modules:
|
||||
six.moves.reload_module(
|
||||
sys.modules['ironic_staging_drivers.libvirt.power'])
|
||||
|
||||
# attempt to load the external 'ovirtsdk4' library, which is required by
|
||||
# the optional drivers.modules.ovirt module
|
||||
ovirtsdk4 = importutils.try_import('ovirtsdk4')
|
||||
if not ovirtsdk4:
|
||||
ov = mock.MagicMock(spec_set=mock_specs.OVIRT4_SPEC)
|
||||
sys.modules['ovirtsdk4'] = ov
|
||||
sys.modules['ovirtsdk4.types'] = ov.types
|
||||
|
|
Loading…
Reference in New Issue