Merge "[ironic] Fix rebooting instance" into stable/2024.1

This commit is contained in:
Zuul 2024-05-14 09:52:32 +00:00 committed by Gerrit Code Review
commit e05b2a0ea3
2 changed files with 20 additions and 16 deletions

View File

@ -1823,7 +1823,7 @@ class IronicDriverTestCase(test.NoDBTestCase):
instance = fake_instance.fake_instance_obj(self.ctx, node=node.id) instance = fake_instance.fake_instance_obj(self.ctx, node=node.id)
self.driver.reboot(self.ctx, instance, None, 'HARD') self.driver.reboot(self.ctx, instance, None, 'HARD')
self.mock_conn.set_node_power_state.assert_called_once_with( self.mock_conn.set_node_power_state.assert_called_once_with(
node.id, 'reboot', node.id, _node.PowerAction.REBOOT,
) )
@mock.patch.object(ironic_driver.IronicDriver, @mock.patch.object(ironic_driver.IronicDriver,
@ -1858,7 +1858,7 @@ class IronicDriverTestCase(test.NoDBTestCase):
instance = fake_instance.fake_instance_obj(self.ctx, node=node.id) instance = fake_instance.fake_instance_obj(self.ctx, node=node.id)
self.driver.reboot(self.ctx, instance, None, 'SOFT') self.driver.reboot(self.ctx, instance, None, 'SOFT')
self.mock_conn.set_node_power_state.assert_called_once_with( self.mock_conn.set_node_power_state.assert_called_once_with(
node.id, 'soft reboot', node.id, _node.PowerAction.SOFT_REBOOT,
) )
@mock.patch.object(loopingcall, 'FixedIntervalLoopingCall') @mock.patch.object(loopingcall, 'FixedIntervalLoopingCall')
@ -1878,8 +1878,8 @@ class IronicDriverTestCase(test.NoDBTestCase):
self.driver.reboot(self.ctx, instance, None, 'SOFT') self.driver.reboot(self.ctx, instance, None, 'SOFT')
self.mock_conn.set_node_power_state.assert_has_calls( self.mock_conn.set_node_power_state.assert_has_calls(
[ [
mock.call(node.id, 'soft reboot'), mock.call(node.id, _node.PowerAction.SOFT_REBOOT),
mock.call(node.id, 'reboot'), mock.call(node.id, _node.PowerAction.REBOOT),
] ]
) )
@ -1916,7 +1916,7 @@ class IronicDriverTestCase(test.NoDBTestCase):
) )
self.mock_conn.set_node_power_state.assert_called_once_with( self.mock_conn.set_node_power_state.assert_called_once_with(
node.id, 'power on', node.id, _node.PowerAction.POWER_ON,
) )
@mock.patch.object(loopingcall, 'FixedIntervalLoopingCall') @mock.patch.object(loopingcall, 'FixedIntervalLoopingCall')
@ -1937,7 +1937,7 @@ class IronicDriverTestCase(test.NoDBTestCase):
self._test_power_off() self._test_power_off()
self.mock_conn.set_node_power_state.assert_called_once_with( self.mock_conn.set_node_power_state.assert_called_once_with(
node.id, 'power off', node.id, _node.PowerAction.POWER_OFF,
) )
@mock.patch.object(ironic_driver.IronicDriver, @mock.patch.object(ironic_driver.IronicDriver,
@ -1950,7 +1950,7 @@ class IronicDriverTestCase(test.NoDBTestCase):
self._test_power_off(timeout=30) self._test_power_off(timeout=30)
self.mock_conn.set_node_power_state.assert_called_once_with( self.mock_conn.set_node_power_state.assert_called_once_with(
node.id, 'soft power off', timeout=30, node.id, _node.PowerAction.SOFT_POWER_OFF, timeout=30,
) )
@mock.patch.object(ironic_driver.IronicDriver, @mock.patch.object(ironic_driver.IronicDriver,
@ -1965,8 +1965,8 @@ class IronicDriverTestCase(test.NoDBTestCase):
self._test_power_off(timeout=30) self._test_power_off(timeout=30)
expected_calls = [ expected_calls = [
mock.call(node.id, 'soft power off', timeout=30), mock.call(node.id, _node.PowerAction.SOFT_POWER_OFF, timeout=30),
mock.call(node.id, 'power off'), mock.call(node.id, _node.PowerAction.POWER_OFF),
] ]
self.assertEqual( self.assertEqual(
len(expected_calls), len(expected_calls),
@ -1983,8 +1983,8 @@ class IronicDriverTestCase(test.NoDBTestCase):
self._test_power_off(timeout=30) self._test_power_off(timeout=30)
expected_calls = [ expected_calls = [
mock.call(node.id, 'soft power off', timeout=30), mock.call(node.id, _node.PowerAction.SOFT_POWER_OFF, timeout=30),
mock.call(node.id, 'power off'), mock.call(node.id, _node.PowerAction.POWER_OFF),
] ]
self.assertEqual( self.assertEqual(
len(expected_calls), len(expected_calls),

View File

@ -26,6 +26,7 @@ import tempfile
import time import time
from urllib import parse as urlparse from urllib import parse as urlparse
from openstack.baremetal.v1.node import PowerAction
from openstack import exceptions as sdk_exc from openstack import exceptions as sdk_exc
from openstack import utils as sdk_utils from openstack import utils as sdk_utils
from oslo_log import log as logging from oslo_log import log as logging
@ -1407,7 +1408,7 @@ class IronicDriver(virt_driver.ComputeDriver):
try: try:
self.ironic_connection.set_node_power_state( self.ironic_connection.set_node_power_state(
node.id, node.id,
'soft reboot', PowerAction.SOFT_REBOOT,
) )
hard = False hard = False
except sdk_exc.BadRequestException as exc: except sdk_exc.BadRequestException as exc:
@ -1417,7 +1418,8 @@ class IronicDriver(virt_driver.ComputeDriver):
instance=instance) instance=instance)
if hard: if hard:
self.ironic_connection.set_node_power_state(node.id, 'reboot') self.ironic_connection.set_node_power_state(
node.id, PowerAction.REBOOT)
timer = loopingcall.FixedIntervalLoopingCall( timer = loopingcall.FixedIntervalLoopingCall(
self._wait_for_power_state, instance, 'reboot') self._wait_for_power_state, instance, 'reboot')
@ -1449,7 +1451,7 @@ class IronicDriver(virt_driver.ComputeDriver):
# polling interval # polling interval
self.ironic_connection.set_node_power_state( self.ironic_connection.set_node_power_state(
node.id, node.id,
'soft power off', PowerAction.SOFT_POWER_OFF,
timeout=timeout, timeout=timeout,
) )
@ -1481,7 +1483,8 @@ class IronicDriver(virt_driver.ComputeDriver):
'reason': e}, 'reason': e},
instance=instance) instance=instance)
self.ironic_connection.set_node_power_state(node.id, 'power off') self.ironic_connection.set_node_power_state(
node.id, PowerAction.POWER_OFF)
timer = loopingcall.FixedIntervalLoopingCall( timer = loopingcall.FixedIntervalLoopingCall(
self._wait_for_power_state, instance, 'power off') self._wait_for_power_state, instance, 'power off')
timer.start(interval=CONF.ironic.api_retry_interval).wait() timer.start(interval=CONF.ironic.api_retry_interval).wait()
@ -1506,7 +1509,8 @@ class IronicDriver(virt_driver.ComputeDriver):
""" """
LOG.debug('Power on called for instance', instance=instance) LOG.debug('Power on called for instance', instance=instance)
node = self._validate_instance_and_node(instance) node = self._validate_instance_and_node(instance)
self.ironic_connection.set_node_power_state(node.id, 'power on') self.ironic_connection.set_node_power_state(
node.id, PowerAction.POWER_ON)
timer = loopingcall.FixedIntervalLoopingCall( timer = loopingcall.FixedIntervalLoopingCall(
self._wait_for_power_state, instance, 'power on') self._wait_for_power_state, instance, 'power on')