@@ -1162,24 +1162,48 @@ def test_init_host_with_in_progress_evacuations(self, mock_destroy_evac,
1162
1162
mock_get_nodes.return_value.keys())
1163
1163
1164
1164
@mock.patch.object(objects.ComputeNodeList, 'get_all_by_uuids')
1165
- @mock.patch.object(fake_driver.FakeDriver, 'get_available_nodes ')
1165
+ @mock.patch.object(fake_driver.FakeDriver, 'get_nodenames_by_uuid ')
1166
1166
def test_get_nodes(self, mock_driver_get_nodes, mock_get_by_uuid):
1167
- mock_driver_get_nodes.return_value = ['fake_node1', 'fake_node2']
1167
+ mock_driver_get_nodes.return_value = {uuids.node_fake_node1: 'host',
1168
+ uuids.node_fake_node2: 'host'}
1168
1169
# NOTE(danms): The fake driver, by default, uses
1169
- # uuidsentinel.$node_name, so we can predict the uuids it will
1170
+ # uuidsentinel.node_ $node_name, so we can predict the uuids it will
1170
1171
# return here.
1171
- cn1 = objects.ComputeNode(uuid=uuids.fake_node1)
1172
- cn2 = objects.ComputeNode(uuid=uuids.fake_node2)
1172
+ cn1 = objects.ComputeNode(uuid=uuids.node_fake_node1,
1173
+ hypervisor_hostname='host')
1174
+ cn2 = objects.ComputeNode(uuid=uuids.node_fake_node2,
1175
+ hypervisor_hostname='host')
1173
1176
mock_get_by_uuid.return_value = [cn1, cn2]
1174
1177
1175
1178
nodes = self.compute._get_nodes(self.context)
1176
1179
1177
- self.assertEqual({uuids.fake_node1: cn1, uuids.fake_node2: cn2}, nodes)
1180
+ self.assertEqual({uuids.node_fake_node1: cn1,
1181
+ uuids.node_fake_node2: cn2}, nodes)
1178
1182
1179
1183
mock_driver_get_nodes.assert_called_once_with()
1180
1184
mock_get_by_uuid.assert_called_once_with(self.context,
1181
- [uuids.fake_node1,
1182
- uuids.fake_node2])
1185
+ [uuids.node_fake_node1,
1186
+ uuids.node_fake_node2])
1187
+
1188
+ @mock.patch.object(objects.ComputeNodeList, 'get_all_by_uuids')
1189
+ @mock.patch.object(fake_driver.FakeDriver, 'get_nodenames_by_uuid')
1190
+ def test_get_nodes_mismatch(self, mock_driver_get_nodes, mock_get_by_uuid):
1191
+ # Virt driver reports a (hypervisor_) hostname of 'host1'
1192
+ mock_driver_get_nodes.return_value = {uuids.node_fake_node1: 'host1',
1193
+ uuids.node_fake_node2: 'host1'}
1194
+
1195
+ # The database records for our compute nodes (by UUID) show a
1196
+ # hypervisor_hostname of 'host2'
1197
+ cn1 = objects.ComputeNode(uuid=uuids.node_fake_node1,
1198
+ hypervisor_hostname='host2')
1199
+ cn2 = objects.ComputeNode(uuid=uuids.node_fake_node2,
1200
+ hypervisor_hostname='host2')
1201
+ mock_get_by_uuid.return_value = [cn1, cn2]
1202
+
1203
+ # Possible hostname (as reported by the virt driver) rename,
1204
+ # which should abort our startup
1205
+ self.assertRaises(exception.InvalidConfiguration,
1206
+ self.compute._get_nodes, self.context)
1183
1207
1184
1208
@mock.patch.object(manager.LOG, 'warning')
1185
1209
@mock.patch.object(
@@ -1202,11 +1226,11 @@ def test_get_nodes_driver_not_ready(
1202
1226
1203
1227
@mock.patch.object(manager.LOG, 'warning')
1204
1228
@mock.patch.object(objects.ComputeNodeList, 'get_all_by_uuids')
1205
- @mock.patch.object(fake_driver.FakeDriver, 'get_available_node_uuids ')
1229
+ @mock.patch.object(fake_driver.FakeDriver, 'get_nodenames_by_uuid ')
1206
1230
def test_get_nodes_node_not_found(
1207
1231
self, mock_driver_get_nodes, mock_get_all_by_uuids,
1208
1232
mock_log_warning):
1209
- mock_driver_get_nodes.return_value = [ 'fake-node1']
1233
+ mock_driver_get_nodes.return_value = {uuids.node_1: 'fake-node1'}
1210
1234
mock_get_all_by_uuids.return_value = []
1211
1235
1212
1236
nodes = self.compute._get_nodes(self.context)
@@ -1215,11 +1239,11 @@ def test_get_nodes_node_not_found(
1215
1239
1216
1240
mock_driver_get_nodes.assert_called_once_with()
1217
1241
mock_get_all_by_uuids.assert_called_once_with(self.context,
1218
- ['fake-node1' ])
1242
+ [uuids.node_1 ])
1219
1243
mock_log_warning.assert_called_once_with(
1220
1244
"Compute nodes %s for host %s were not found in the database. "
1221
1245
"If this is the first time this service is starting on this host, "
1222
- "then you can ignore this warning.", ['fake-node1' ], 'fake-mini')
1246
+ "then you can ignore this warning.", [uuids.node_1 ], 'fake-mini')
1223
1247
1224
1248
def test_init_host_disk_devices_configuration_failure(self):
1225
1249
self.flags(max_disk_devices_to_attach=0, group='compute')
0 commit comments