reboot stopped vms in ovirt
When using ovirt driver, make sure reboot starts stopped vms Closes-Bug: #1752575 Story: 1752575 Change-Id: I851935a042c3e69e7e4ce72d6338ce2f77baa566 Signed-off-by: karmab <karimboumedhel@gmail.com>
This commit is contained in:
parent
3265d0002b
commit
cd648ffd8e
|
@ -208,7 +208,11 @@ class oVirtPower(base.PowerInterface):
|
|||
elif target_state == states.POWER_ON:
|
||||
vm.start()
|
||||
elif target_state == states.REBOOT:
|
||||
vm.reboot()
|
||||
status = vm.get().status.value
|
||||
if status == 'down':
|
||||
vm.start()
|
||||
else:
|
||||
vm.reboot()
|
||||
else:
|
||||
msg = _("'set_power_state' called with invalid power "
|
||||
"state '%s'") % target_state
|
||||
|
@ -230,15 +234,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):
|
||||
|
|
|
@ -110,3 +110,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