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,6 +208,10 @@ class oVirtPower(base.PowerInterface):
|
||||||
elif target_state == states.POWER_ON:
|
elif target_state == states.POWER_ON:
|
||||||
vm.start()
|
vm.start()
|
||||||
elif target_state == states.REBOOT:
|
elif target_state == states.REBOOT:
|
||||||
|
status = vm.get().status.value
|
||||||
|
if status == 'down':
|
||||||
|
vm.start()
|
||||||
|
else:
|
||||||
vm.reboot()
|
vm.reboot()
|
||||||
else:
|
else:
|
||||||
msg = _("'set_power_state' called with invalid power "
|
msg = _("'set_power_state' called with invalid power "
|
||||||
|
@ -230,15 +234,7 @@ class oVirtPower(base.PowerInterface):
|
||||||
:raises: ovirtsdk4.Error, if error encountered from
|
:raises: ovirtsdk4.Error, if error encountered from
|
||||||
oVirt operation.
|
oVirt operation.
|
||||||
"""
|
"""
|
||||||
driver_info = _parse_driver_info(task.node)
|
self.set_power_state(task, states.REBOOT, timeout=timeout)
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
class oVirtManagement(base.ManagementInterface):
|
class oVirtManagement(base.ManagementInterface):
|
||||||
|
|
|
@ -110,3 +110,19 @@ class oVirtDriverTestCase(db_base.DbTestCase):
|
||||||
task.driver.management.set_boot_device(task, boot_devices.DISK)
|
task.driver.management.set_boot_device(task, boot_devices.DISK)
|
||||||
mock_power.assert_called_once_with(task.driver.management, task,
|
mock_power.assert_called_once_with(task.driver.management, task,
|
||||||
boot_devices.DISK)
|
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_AUTHNAME',
|
||||||
'VIR_CRED_PASSPHRASE',
|
'VIR_CRED_PASSPHRASE',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# ovirt
|
||||||
|
OVIRT4_SPEC = (
|
||||||
|
'types',
|
||||||
|
)
|
||||||
|
|
|
@ -62,3 +62,11 @@ if not libvirt:
|
||||||
if 'ironic_staging_drivers.libvirt.power' in sys.modules:
|
if 'ironic_staging_drivers.libvirt.power' in sys.modules:
|
||||||
six.moves.reload_module(
|
six.moves.reload_module(
|
||||||
sys.modules['ironic_staging_drivers.libvirt.power'])
|
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