Fix baremetal get_available_nodes
Baremetal driver get_available_nodes was incorrectly returning only a list of unprovisioned nodes, leading update_availabile_resources to sometimes delete a baremetal node that had an instance provisioned to it -- sometimes even while the provisioning was still in process. Fix bug 1174952 Change-Id: I4f08a2f6539a5b6cd12245ac6b4dc308767ae0cd
This commit is contained in:
parent
98c4e04ac6
commit
112a2f11f8
@ -283,38 +283,10 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase):
|
||||
node1 = self._create_node()
|
||||
self.assertEqual(1, len(self.driver.get_available_nodes()))
|
||||
|
||||
node_info = bm_db_utils.new_bm_node(
|
||||
id=456,
|
||||
service_host='test_host',
|
||||
cpus=2,
|
||||
memory_mb=2048,
|
||||
)
|
||||
nic_info = [
|
||||
{'address': 'cc:cc:cc', 'datapath_id': '0x1',
|
||||
'port_no': 1},
|
||||
{'address': 'dd:dd:dd', 'datapath_id': '0x2',
|
||||
'port_no': 2},
|
||||
]
|
||||
node2 = self._create_node(node_info=node_info, nic_info=nic_info)
|
||||
self.assertEqual(2, len(self.driver.get_available_nodes()))
|
||||
self.assertEqual([node1['node']['uuid'], node2['node']['uuid']],
|
||||
self.driver.get_available_nodes())
|
||||
|
||||
node1['instance']['hostname'] = 'test-host-1'
|
||||
node2['instance']['hostname'] = 'test-host-2'
|
||||
|
||||
self.driver.spawn(**node1['spawn_params'])
|
||||
self.assertEqual(1, len(self.driver.get_available_nodes()))
|
||||
|
||||
self.driver.spawn(**node2['spawn_params'])
|
||||
self.assertEqual(0, len(self.driver.get_available_nodes()))
|
||||
|
||||
self.driver.destroy(**node1['destroy_params'])
|
||||
self.assertEqual(1, len(self.driver.get_available_nodes()))
|
||||
|
||||
self.driver.destroy(**node2['destroy_params'])
|
||||
self.assertEqual(2, len(self.driver.get_available_nodes()))
|
||||
self.assertEqual([node1['node']['uuid'], node2['node']['uuid']],
|
||||
self.assertEqual([node1['node']['uuid']],
|
||||
self.driver.get_available_nodes())
|
||||
|
||||
def test_list_instances(self):
|
||||
|
@ -486,4 +486,4 @@ class BareMetalDriver(driver.ComputeDriver):
|
||||
def get_available_nodes(self):
|
||||
context = nova_context.get_admin_context()
|
||||
return [str(n['uuid']) for n in
|
||||
db.bm_node_get_unassociated(context, service_host=CONF.host)]
|
||||
db.bm_node_get_all(context, service_host=CONF.host)]
|
||||
|
Loading…
Reference in New Issue
Block a user