diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-06-09 01:06:14 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-06-09 01:06:15 +0000 |
commit | ccfe4025ccc83d125fff420fbd7eb16f04b00155 (patch) | |
tree | 5980c63b9be99b4c450f2048960a7d96587f68ca | |
parent | 4fc8dc6bf51c4c9c91595fb2bc3497a46f083fd4 (diff) | |
parent | 8ed1c2da1d5aa3e645afac6fdbb64c11cb151664 (diff) | |
download | nova-ccfe4025ccc83d125fff420fbd7eb16f04b00155.tar.gz |
Merge "Ironic nodes with instance_uuid are not available" into stable/mitaka
-rw-r--r-- | nova/tests/unit/virt/ironic/test_driver.py | 10 | ||||
-rw-r--r-- | nova/virt/ironic/driver.py | 4 |
2 files changed, 11 insertions, 3 deletions
diff --git a/nova/tests/unit/virt/ironic/test_driver.py b/nova/tests/unit/virt/ironic/test_driver.py index 626a5737ee..7e7da56e4f 100644 --- a/nova/tests/unit/virt/ironic/test_driver.py +++ b/nova/tests/unit/virt/ironic/test_driver.py @@ -659,14 +659,20 @@ class IronicDriverTestCase(test.NoDBTestCase): # a node in deleted {'uuid': uuidutils.generate_uuid(), 'power_state': ironic_states.POWER_ON, - 'provision_state': ironic_states.DELETED} + 'provision_state': ironic_states.DELETED}, + # a node in AVAILABLE with an instance uuid + {'uuid': uuidutils.generate_uuid(), + 'instance_uuid': uuidutils.generate_uuid(), + 'power_state': ironic_states.POWER_OFF, + 'provision_state': ironic_states.AVAILABLE} ] for n in node_dicts: node = ironic_utils.get_test_node(**n) self.assertTrue(self.driver._node_resources_unavailable(node)) for ok_state in (ironic_states.AVAILABLE, ironic_states.NOSTATE): - # these are both ok and should present as available + # these are both ok and should present as available as they + # have no instance_uuid avail_node = ironic_utils.get_test_node( power_state=ironic_states.POWER_OFF, provision_state=ok_state) diff --git a/nova/virt/ironic/driver.py b/nova/virt/ironic/driver.py index dd9234c9c7..3764fa9204 100644 --- a/nova/virt/ironic/driver.py +++ b/nova/virt/ironic/driver.py @@ -184,7 +184,9 @@ class IronicDriver(virt_driver.ComputeDriver): ironic_states.AVAILABLE, ironic_states.NOSTATE] return (node_obj.maintenance or node_obj.power_state in bad_power_states or - node_obj.provision_state not in good_provision_states) + node_obj.provision_state not in good_provision_states or + (node_obj.provision_state in good_provision_states and + node_obj.instance_uuid is not None)) def _node_resources_used(self, node_obj): """Determine whether the node's resources are currently used. |