Merge "Do not sync power state for new invalidated nodes"

This commit is contained in:
Jenkins 2014-04-11 16:38:40 +00:00 committed by Gerrit Code Review
commit 83c93b47cd
2 changed files with 19 additions and 0 deletions

View File

@ -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:

View File

@ -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.