From 0d9d2487e2ca921ab54b1ecbe359c32ce8fb0c48 Mon Sep 17 00:00:00 2001 From: Michael Still Date: Fri, 27 Jul 2012 11:43:37 +1000 Subject: Convert virtual_interfaces to using instance_uuid. This review converts virtual_interfaces from tracking their instances with instance_id to using instance_uuid. This should be the last review for blueprint finish-uuid-conversion. Change-Id: I303bba009fa37c72394369c8338e6e759f794cd0 --- nova/tests/api/ec2/test_cloud.py | 2 +- nova/tests/compute/test_compute.py | 12 +++++--- nova/tests/fake_network.py | 12 ++++---- nova/tests/network/test_linux_net.py | 59 +++++++++++++++++++----------------- nova/tests/network/test_manager.py | 48 ++++++++++++++--------------- nova/tests/test_db_api.py | 23 +------------- nova/tests/test_xenapi.py | 3 +- 7 files changed, 74 insertions(+), 85 deletions(-) (limited to 'nova/tests') diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py index 04b73adc8..ef78c007b 100644 --- a/nova/tests/api/ec2/test_cloud.py +++ b/nova/tests/api/ec2/test_cloud.py @@ -239,7 +239,7 @@ class CloudTestCase(test.TestCase): project_id = self.context.project_id nw_info = self.network.allocate_for_instance(self.context, instance_id=inst['id'], - instance_uuid='', + instance_uuid=inst['uuid'], host=inst['host'], vpn=None, rxtx_factor=3, diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index fc2b183d9..45d50c63e 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -3142,14 +3142,18 @@ class ComputeAPITestCase(BaseTestCase): 'instance_get_id_to_uuid_mapping', db.instance_get_id_to_uuid_mapping) - instance1 = self._create_fake_instance({'display_name': 'woot', - 'id': 0}) + instance1 = self._create_fake_instance({ + 'display_name': 'woot', + 'id': 0, + 'uuid': '00000000-0000-0000-0000-000000000010'}) instance2 = self._create_fake_instance({ 'display_name': 'woo', - 'id': 20}) + 'id': 20, + 'uuid': '00000000-0000-0000-0000-000000000020'}) instance3 = self._create_fake_instance({ 'display_name': 'not-woot', - 'id': 30}) + 'id': 30, + 'uuid': '00000000-0000-0000-0000-000000000030'}) # ip ends up matching 2nd octet here.. so all 3 match ip # but 'name' only matches one diff --git a/nova/tests/fake_network.py b/nova/tests/fake_network.py index b120dc9b1..5c945fa75 100644 --- a/nova/tests/fake_network.py +++ b/nova/tests/fake_network.py @@ -74,15 +74,15 @@ class FakeNetworkManager(network_manager.NetworkManager): class FakeDB: vifs = [{'id': 0, - 'instance_id': 0, + 'instance_uuid': '00000000-0000-0000-0000-000000000010', 'network_id': 1, 'address': 'DC:AD:BE:FF:EF:01'}, {'id': 1, - 'instance_id': 20, + 'instance_uuid': '00000000-0000-0000-0000-000000000020', 'network_id': 21, 'address': 'DC:AD:BE:FF:EF:02'}, {'id': 2, - 'instance_id': 30, + 'instance_uuid': '00000000-0000-0000-0000-000000000030', 'network_id': 31, 'address': 'DC:AD:BE:FF:EF:03'}] @@ -103,7 +103,7 @@ class FakeNetworkManager(network_manager.NetworkManager): address='173.16.0.2', virtual_interface_id=2)] - def fixed_ip_get_by_instance(self, context, instance_id): + def fixed_ip_get_by_instance(self, context, instance_uuid): return [dict(address='10.0.0.0'), dict(address='10.0.0.1'), dict(address='10.0.0.2')] @@ -220,7 +220,7 @@ def next_fixed_ip(network_id, num_floating_ips=0): return {'id': next_id, 'network_id': network_id, 'address': '192.168.%d.%03d' % (network_id, (next_id + 99)), - 'instance_id': 1, + 'instance_uuid': 1, 'allocated': False, # and since network_id and vif_id happen to be equivalent 'virtual_interface_id': network_id, @@ -292,7 +292,7 @@ def fake_get_instance_nw_info(stubs, num_networks=1, ips_per_vif=2, 'uuid': uuid, 'network_id': 1, 'network': None, - 'instance_id': 0} + 'instance_uuid': 0} def network_get_fake(context, network_id): nets = [n for n in networks if n['id'] == network_id] diff --git a/nova/tests/network/test_linux_net.py b/nova/tests/network/test_linux_net.py index b05127c72..183c03e46 100644 --- a/nova/tests/network/test_linux_net.py +++ b/nova/tests/network/test_linux_net.py @@ -36,16 +36,20 @@ LOG = logging.getLogger(__name__) HOST = "testhost" -instances = [{'id': 0, - 'host': 'fake_instance00', - 'created_at': 'fakedate', - 'updated_at': 'fakedate', - 'hostname': 'fake_instance00'}, - {'id': 1, - 'host': 'fake_instance01', - 'created_at': 'fakedate', - 'updated_at': 'fakedate', - 'hostname': 'fake_instance01'}] +instances = {'00000000-0000-0000-0000-0000000000000000': + {'id': 0, + 'uuid': '00000000-0000-0000-0000-0000000000000000', + 'host': 'fake_instance00', + 'created_at': 'fakedate', + 'updated_at': 'fakedate', + 'hostname': 'fake_instance00'}, + '00000000-0000-0000-0000-0000000000000001': + {'id': 1, + 'uuid': '00000000-0000-0000-0000-0000000000000001', + 'host': 'fake_instance01', + 'created_at': 'fakedate', + 'updated_at': 'fakedate', + 'hostname': 'fake_instance01'}} addresses = [{"address": "10.0.0.1"}, @@ -108,7 +112,7 @@ fixed_ips = [{'id': 0, 'instance_id': 0, 'allocated': True, 'virtual_interface_id': 0, - 'instance_id': 0, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000000', 'floating_ips': []}, {'id': 1, 'network_id': 1, @@ -116,7 +120,7 @@ fixed_ips = [{'id': 0, 'instance_id': 0, 'allocated': True, 'virtual_interface_id': 1, - 'instance_id': 0, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000000', 'floating_ips': []}, {'id': 2, 'network_id': 1, @@ -124,7 +128,7 @@ fixed_ips = [{'id': 0, 'instance_id': 1, 'allocated': True, 'virtual_interface_id': 2, - 'instance_id': 1, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000001', 'floating_ips': []}, {'id': 3, 'network_id': 0, @@ -132,7 +136,7 @@ fixed_ips = [{'id': 0, 'instance_id': 1, 'allocated': True, 'virtual_interface_id': 3, - 'instance_id': 1, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000001', 'floating_ips': []}, {'id': 4, 'network_id': 0, @@ -140,7 +144,7 @@ fixed_ips = [{'id': 0, 'instance_id': 0, 'allocated': True, 'virtual_interface_id': 4, - 'instance_id': 0, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000000', 'floating_ips': []}, {'id': 5, 'network_id': 1, @@ -148,7 +152,7 @@ fixed_ips = [{'id': 0, 'instance_id': 1, 'allocated': True, 'virtual_interface_id': 5, - 'instance_id': 1, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000001', 'floating_ips': []}] @@ -156,46 +160,46 @@ vifs = [{'id': 0, 'address': 'DE:AD:BE:EF:00:00', 'uuid': '00000000-0000-0000-0000-0000000000000000', 'network_id': 0, - 'instance_id': 0}, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000000'}, {'id': 1, 'address': 'DE:AD:BE:EF:00:01', 'uuid': '00000000-0000-0000-0000-0000000000000001', 'network_id': 1, - 'instance_id': 0}, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000000'}, {'id': 2, 'address': 'DE:AD:BE:EF:00:02', 'uuid': '00000000-0000-0000-0000-0000000000000002', 'network_id': 1, - 'instance_id': 1}, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000001'}, {'id': 3, 'address': 'DE:AD:BE:EF:00:03', 'uuid': '00000000-0000-0000-0000-0000000000000003', 'network_id': 0, - 'instance_id': 1}, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000001'}, {'id': 4, 'address': 'DE:AD:BE:EF:00:04', 'uuid': '00000000-0000-0000-0000-0000000000000004', 'network_id': 0, - 'instance_id': 0}, + 'instance_uuid': '00000000-0000-0000-0000-0000000000000000'}, {'id': 5, 'address': 'DE:AD:BE:EF:00:05', 'uuid': '00000000-0000-0000-0000-0000000000000005', 'network_id': 1, - 'instance_id': 1}] + 'instance_uuid': '00000000-0000-0000-0000-0000000000000001'}] def get_associated(context, network_id, host=None): result = [] for datum in fixed_ips: if (datum['network_id'] == network_id and datum['allocated'] - and datum['instance_id'] is not None + and datum['instance_uuid'] is not None and datum['virtual_interface_id'] is not None): - instance = instances[datum['instance_id']] + instance = instances[datum['instance_uuid']] if host and host != instance['host']: continue cleaned = {} cleaned['address'] = datum['address'] - cleaned['instance_id'] = datum['instance_id'] + cleaned['instance_uuid'] = datum['instance_uuid'] cleaned['network_id'] = datum['network_id'] cleaned['vif_id'] = datum['virtual_interface_id'] vif = vifs[datum['virtual_interface_id']] @@ -217,8 +221,9 @@ class LinuxNetworkTestCase(test.TestCase): self.context = context.RequestContext('testuser', 'testproject', is_admin=True) - def get_vifs(_context, instance_id): - return [vif for vif in vifs if vif['instance_id'] == instance_id] + def get_vifs(_context, instance_uuid): + return [vif for vif in vifs if vif['instance_uuid'] == \ + instance_uuid] def get_instance(_context, instance_id): return instances[instance_id] diff --git a/nova/tests/network/test_manager.py b/nova/tests/network/test_manager.py index d04df5f13..ad8bf6735 100644 --- a/nova/tests/network/test_manager.py +++ b/nova/tests/network/test_manager.py @@ -114,17 +114,17 @@ vifs = [{'id': 0, 'address': 'DE:AD:BE:EF:00:00', 'uuid': '00000000-0000-0000-0000-0000000000000000', 'network_id': 0, - 'instance_id': 0}, + 'instance_uuid': 0}, {'id': 1, 'address': 'DE:AD:BE:EF:00:01', 'uuid': '00000000-0000-0000-0000-0000000000000001', 'network_id': 1, - 'instance_id': 0}, + 'instance_uuid': 0}, {'id': 2, 'address': 'DE:AD:BE:EF:00:02', 'uuid': '00000000-0000-0000-0000-0000000000000002', 'network_id': 2, - 'instance_id': 0}] + 'instance_uuid': 0}] class FlatNetworkTestCase(test.TestCase): @@ -417,11 +417,14 @@ class VlanNetworkTestCase(test.TestCase): is_admin=False) def test_vpn_allocate_fixed_ip(self): + self.mox.StubOutWithMock(db, 'instance_get') self.mox.StubOutWithMock(db, 'fixed_ip_associate') self.mox.StubOutWithMock(db, 'fixed_ip_update') self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance_and_network') + db.instance_get(mox.IgnoreArg(), + mox.IgnoreArg()).AndReturn({'uuid': '42'}) db.fixed_ip_associate(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), @@ -448,7 +451,7 @@ class VlanNetworkTestCase(test.TestCase): self.assertRaises(exception.FixedIpNotFoundForNetwork, self.network.allocate_fixed_ip, context_admin, - instance['uuid'], + instance['id'], network, vpn=True) @@ -1264,30 +1267,30 @@ class CommonNetworkTestCase(test.TestCase): {'ip': '172.16.0.2'}) self.assertTrue(res) self.assertEqual(len(res), 1) - self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 2 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '173.16.0.2'}) self.assertTrue(res) self.assertEqual(len(res), 1) - self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[2]['instance_uuid']) # Get instance 0 and 1 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '172.16.0.*'}) self.assertTrue(res) self.assertEqual(len(res), 2) - self.assertEqual(res[0]['instance_id'], _vifs[0]['instance_id']) - self.assertEqual(res[1]['instance_id'], _vifs[1]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[0]['instance_uuid']) + self.assertEqual(res[1]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 1 and 2 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '17..16.0.2'}) self.assertTrue(res) self.assertEqual(len(res), 2) - self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) - self.assertEqual(res[1]['instance_id'], _vifs[2]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) + self.assertEqual(res[1]['instance_uuid'], _vifs[2]['instance_uuid']) def test_get_instance_uuids_by_ipv6_regex(self): manager = fake_network.FakeNetworkManager() @@ -1309,7 +1312,7 @@ class CommonNetworkTestCase(test.TestCase): {'ip6': '2001:.*2'}) self.assertTrue(res) self.assertEqual(len(res), 1) - self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 2 ip6 = '2001:db8:69:1f:dead:beff:feff:ef03' @@ -1317,15 +1320,15 @@ class CommonNetworkTestCase(test.TestCase): {'ip6': ip6}) self.assertTrue(res) self.assertEqual(len(res), 1) - self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[2]['instance_uuid']) # Get instance 0 and 1 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip6': '.*ef0[1,2]'}) self.assertTrue(res) self.assertEqual(len(res), 2) - self.assertEqual(res[0]['instance_id'], _vifs[0]['instance_id']) - self.assertEqual(res[1]['instance_id'], _vifs[1]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[0]['instance_uuid']) + self.assertEqual(res[1]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 1 and 2 ip6 = '2001:db8:69:1.:dead:beff:feff:ef0.' @@ -1333,8 +1336,8 @@ class CommonNetworkTestCase(test.TestCase): {'ip6': ip6}) self.assertTrue(res) self.assertEqual(len(res), 2) - self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) - self.assertEqual(res[1]['instance_id'], _vifs[2]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) + self.assertEqual(res[1]['instance_uuid'], _vifs[2]['instance_uuid']) def test_get_instance_uuids_by_ip(self): manager = fake_network.FakeNetworkManager() @@ -1358,7 +1361,7 @@ class CommonNetworkTestCase(test.TestCase): {'fixed_ip': ip}) self.assertTrue(res) self.assertEqual(len(res), 1) - self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 2 ip = '173.16.0.2' @@ -1366,7 +1369,7 @@ class CommonNetworkTestCase(test.TestCase): {'fixed_ip': ip}) self.assertTrue(res) self.assertEqual(len(res), 1) - self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id']) + self.assertEqual(res[0]['instance_uuid'], _vifs[2]['instance_uuid']) def test_get_network(self): manager = fake_network.FakeNetworkManager() @@ -1489,12 +1492,9 @@ class AllocateTestCase(test.TestCase): {'host': self.network.host}) project_id = self.context.project_id nw_info = self.network.allocate_for_instance(self.context, - instance_id=inst['id'], - instance_uuid='', - host=inst['host'], - vpn=None, - rxtx_factor=3, - project_id=project_id) + instance_id=inst['id'], instance_uuid=inst['uuid'], + host=inst['host'], vpn=None, rxtx_factor=3, + project_id=project_id) self.assertEquals(1, len(nw_info)) fixed_ip = nw_info.fixed_ips()[0]['address'] self.assertTrue(utils.is_valid_ipv4(fixed_ip)) diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py index 51850f03e..344ac9a74 100644 --- a/nova/tests/test_db_api.py +++ b/nova/tests/test_db_api.py @@ -31,27 +31,6 @@ from nova import utils FLAGS = flags.FLAGS -def _setup_networking(instance_id, ip='1.2.3.4', flo_addr='1.2.1.2'): - ctxt = context.get_admin_context() - network_ref = db.project_get_networks(ctxt, - 'fake', - associate=True)[0] - vif = {'address': '56:12:12:12:12:12', - 'network_id': network_ref['id'], - 'instance_id': instance_id} - vif_ref = db.virtual_interface_create(ctxt, vif) - - fixed_ip = {'address': ip, - 'network_id': network_ref['id'], - 'virtual_interface_id': vif_ref['id'], - 'allocated': True, - 'instance_id': instance_id} - db.fixed_ip_create(ctxt, fixed_ip) - fix_ref = db.fixed_ip_get_by_address(ctxt, ip) - db.floating_ip_create(ctxt, {'address': flo_addr, - 'fixed_ip_id': fix_ref['id']}) - - class DbApiTestCase(test.TestCase): def setUp(self): super(DbApiTestCase, self).setUp() @@ -345,7 +324,7 @@ class DbApiTestCase(test.TestCase): ctxt = context.get_admin_context() values = {'host': 'foo', 'hostname': 'myname'} instance = db.instance_create(ctxt, values) - values = {'address': 'bar', 'instance_id': instance['id']} + values = {'address': 'bar', 'instance_uuid': instance['uuid']} vif = db.virtual_interface_create(ctxt, values) values = {'address': 'baz', 'network_id': 1, diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py index e7f701add..e274f477f 100644 --- a/nova/tests/test_xenapi.py +++ b/nova/tests/test_xenapi.py @@ -741,7 +741,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase): self.network.allocate_for_instance(ctxt, instance_id=2, - instance_uuid="00000000-0000-0000-0000-000000000000", + instance_uuid='00000000-0000-0000-0000-000000000002', host=FLAGS.host, vpn=None, rxtx_factor=3, @@ -851,6 +851,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase): """Creates and spawns a test instance.""" instance_values = { 'id': instance_id, + 'uuid': '00000000-0000-0000-0000-00000000000%d' % instance_id, 'project_id': self.project_id, 'user_id': self.user_id, 'image_ref': 1, -- cgit