Merge "Do not sync power state for new invalidated nodes"
This commit is contained in:
commit
83c93b47cd
@ -477,6 +477,14 @@ class ConductorManager(service.PeriodicService):
|
||||
node = task.node
|
||||
power_state = None
|
||||
|
||||
# Power driver info should be set properly for new node, otherwise
|
||||
# prevent node from switching to maintenance mode.
|
||||
if node.power_state is None:
|
||||
try:
|
||||
task.driver.power.validate(task, node)
|
||||
except exception.InvalidParameterValue:
|
||||
return
|
||||
|
||||
try:
|
||||
power_state = task.driver.power.get_power_state(task, node)
|
||||
except Exception as e:
|
||||
|
@ -320,6 +320,17 @@ class ManagerTestCase(base.DbTestCase):
|
||||
self.service._sync_power_states(self.context)
|
||||
self.assertFalse(get_power_mock.called)
|
||||
|
||||
@mock.patch('ironic.drivers.modules.fake.FakePower.get_power_state')
|
||||
@mock.patch('ironic.drivers.modules.fake.FakePower.validate')
|
||||
def test__sync_power_state_validate_fail(self, mock_validate, mock_get):
|
||||
self.service.start()
|
||||
n = utils.get_test_node(power_state=states.NOSTATE)
|
||||
self.dbapi.create_node(n)
|
||||
mock_validate.side_effect = exception.InvalidParameterValue('error')
|
||||
self.service._sync_power_states(self.context)
|
||||
self.assertFalse(mock_get.called)
|
||||
mock_validate.assert_called_once_with(mock.ANY, mock.ANY)
|
||||
|
||||
def test_change_node_power_state_power_on(self):
|
||||
# Test change_node_power_state including integration with
|
||||
# conductor.utils.node_power_action and lower.
|
||||
|
Loading…
x
Reference in New Issue
Block a user