diff options
| author | John Griffith <john.griffith@solidfire.com> | 2012-05-04 11:31:56 -0600 |
|---|---|---|
| committer | John Griffith <john.griffith@solidfire.com> | 2012-05-10 13:36:32 -0600 |
| commit | dcad314fb9713104f0029311c43907e362ec6d49 (patch) | |
| tree | 4e6fffab1e7f064e94cee264192d05269ad1c0d4 /nova/tests | |
| parent | d9ed81222048f589b6863aaf2a99983ba5a3094f (diff) | |
Remove instance Foreign Key in volumes table, replace with instance_uuid
* Remove the instance relationship and instance_id FK
* Add instance_uuuid column to volumes table
* Passed unit tests and devstack tests
Change-Id: Id598f1f1d7915d1af6bf3dd75e5819dce08aaa0f
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/ec2/test_cloud.py | 42 | ||||
| -rw-r--r-- | nova/tests/api/openstack/fakes.py | 6 | ||||
| -rw-r--r-- | nova/tests/api/openstack/volume/test_volumes.py | 5 | ||||
| -rw-r--r-- | nova/tests/scheduler/test_scheduler.py | 1 | ||||
| -rw-r--r-- | nova/tests/test_libvirt.py | 4 | ||||
| -rw-r--r-- | nova/tests/test_volume.py | 25 |
6 files changed, 48 insertions, 35 deletions
diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py index 6d312369b..ec8bdf276 100644 --- a/nova/tests/api/ec2/test_cloud.py +++ b/nova/tests/api/ec2/test_cloud.py @@ -917,7 +917,7 @@ class CloudTestCase(test.TestCase): result = self.cloud.describe_instances(self.context) self.assertEqual(len(result['reservationSet']), 2) - def _block_device_mapping_create(self, instance_id, mappings): + def _block_device_mapping_create(self, instance_uuid, mappings): volumes = [] for bdm in mappings: db.block_device_mapping_create(self.context, bdm) @@ -931,7 +931,7 @@ class CloudTestCase(test.TestCase): values[vol_key] = bdm[bdm_key] vol = db.volume_create(self.context, values) db.volume_attached(self.context, vol['id'], - instance_id, bdm['device_name']) + instance_uuid, bdm['device_name']) volumes.append(vol) return volumes @@ -987,7 +987,7 @@ class CloudTestCase(test.TestCase): 'device_name': '/dev/sdb9', 'virtual_name': 'ephemeral3'}] - volumes = self._block_device_mapping_create(instance_id, mappings0) + volumes = self._block_device_mapping_create(instance_uuid, mappings0) return (inst1, inst2, volumes) def _tearDownBlockDeviceMapping(self, inst1, inst2, volumes): @@ -1910,14 +1910,14 @@ class CloudTestCase(test.TestCase): kwargs['id'] = volume_id return db.volume_create(self.context, kwargs) - def _assert_volume_attached(self, vol, instance_id, mountpoint): - self.assertEqual(vol['instance_id'], instance_id) + def _assert_volume_attached(self, vol, instance_uuid, mountpoint): + self.assertEqual(vol['instance_uuid'], instance_uuid) self.assertEqual(vol['mountpoint'], mountpoint) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") def _assert_volume_detached(self, vol): - self.assertEqual(vol['instance_id'], None) + self.assertEqual(vol['instance_uuid'], None) self.assertEqual(vol['mountpoint'], None) self.assertEqual(vol['status'], "available") self.assertEqual(vol['attach_status'], "detached") @@ -1941,18 +1941,20 @@ class CloudTestCase(test.TestCase): 'delete_on_termination': True}, ]} ec2_instance_id = self._run_instance(**kwargs) + instance_uuid = ec2utils.ec2_instance_id_to_uuid(self.context, + ec2_instance_id) instance_id = ec2utils.ec2_id_to_id(ec2_instance_id) - vols = db.volume_get_all_by_instance(self.context, instance_id) + vols = db.volume_get_all_by_instance_uuid(self.context, instance_uuid) self.assertEqual(len(vols), 2) for vol in vols: self.assertTrue(vol['id'] == vol1['id'] or vol['id'] == vol2['id']) vol = db.volume_get(self.context, vol1['id']) - self._assert_volume_attached(vol, instance_id, '/dev/vdb') + self._assert_volume_attached(vol, instance_uuid, '/dev/vdb') vol = db.volume_get(self.context, vol2['id']) - self._assert_volume_attached(vol, instance_id, '/dev/vdc') + self._assert_volume_attached(vol, instance_uuid, '/dev/vdc') result = self.cloud.stop_instances(self.context, [ec2_instance_id]) self.assertTrue(result) @@ -1963,13 +1965,13 @@ class CloudTestCase(test.TestCase): self._assert_volume_detached(vol) self.cloud.start_instances(self.context, [ec2_instance_id]) - vols = db.volume_get_all_by_instance(self.context, instance_id) + vols = db.volume_get_all_by_instance_uuid(self.context, instance_uuid) self.assertEqual(len(vols), 2) for vol in vols: self.assertTrue(vol['id'] == vol1['id'] or vol['id'] == vol2['id']) self.assertTrue(vol['mountpoint'] == '/dev/vdb' or vol['mountpoint'] == '/dev/vdc') - self.assertEqual(vol['instance_id'], instance_id) + self.assertEqual(vol['instance_uuid'], instance_uuid) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") @@ -2001,12 +2003,14 @@ class CloudTestCase(test.TestCase): 'delete_on_termination': True}]} ec2_instance_id = self._run_instance(**kwargs) instance_id = ec2utils.ec2_id_to_id(ec2_instance_id) + instance_uuid = ec2utils.ec2_instance_id_to_uuid(self.context, + ec2_instance_id) - vols = db.volume_get_all_by_instance(self.context, instance_id) + vols = db.volume_get_all_by_instance_uuid(self.context, instance_uuid) self.assertEqual(len(vols), 1) for vol in vols: self.assertEqual(vol['id'], vol1['id']) - self._assert_volume_attached(vol, instance_id, '/dev/vdb') + self._assert_volume_attached(vol, instance_uuid, '/dev/vdb') vol = db.volume_get(self.context, vol2['id']) self._assert_volume_detached(vol) @@ -2017,7 +2021,7 @@ class CloudTestCase(test.TestCase): volume_id=vol2['id'], device='/dev/vdc') vol = db.volume_get(self.context, vol2['id']) - self._assert_volume_attached(vol, instance_id, '/dev/vdc') + self._assert_volume_attached(vol, instance_uuid, '/dev/vdc') self.cloud.compute_api.detach_volume(self.context, volume_id=vol1['id']) @@ -2032,11 +2036,11 @@ class CloudTestCase(test.TestCase): self._assert_volume_detached(vol) self.cloud.start_instances(self.context, [ec2_instance_id]) - vols = db.volume_get_all_by_instance(self.context, instance_id) + vols = db.volume_get_all_by_instance_uuid(self.context, instance_uuid) self.assertEqual(len(vols), 1) for vol in vols: self.assertEqual(vol['id'], vol2['id']) - self._assert_volume_attached(vol, instance_id, '/dev/vdc') + self._assert_volume_attached(vol, instance_uuid, '/dev/vdc') vol = db.volume_get(self.context, vol1['id']) self._assert_volume_detached(vol) @@ -2077,8 +2081,10 @@ class CloudTestCase(test.TestCase): 'delete_on_termination': True}]} ec2_instance_id = self._run_instance(**kwargs) instance_id = ec2utils.ec2_id_to_id(ec2_instance_id) + instance_uuid = ec2utils.ec2_instance_id_to_uuid(self.context, + ec2_instance_id) - vols = db.volume_get_all_by_instance(self.context, instance_id) + vols = db.volume_get_all_by_instance_uuid(self.context, instance_uuid) self.assertEqual(len(vols), 2) vol1_id = None vol2_id = None @@ -2093,7 +2099,7 @@ class CloudTestCase(test.TestCase): else: self.fail() - self._assert_volume_attached(vol, instance_id, mountpoint) + self._assert_volume_attached(vol, instance_uuid, mountpoint) self.assertTrue(vol1_id) self.assertTrue(vol2_id) diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py index 90ee86676..f06878362 100644 --- a/nova/tests/api/openstack/fakes.py +++ b/nova/tests/api/openstack/fakes.py @@ -592,7 +592,7 @@ def stub_volume(id, **kwargs): 'host': 'fakehost', 'size': 1, 'availability_zone': 'fakeaz', - 'instance': {'uuid': 'fakeuuid'}, + 'instance_uuid': 'fakeuuid', 'mountpoint': '/', 'status': 'fakestatus', 'attach_status': 'attached', @@ -611,7 +611,7 @@ def stub_volume(id, **kwargs): def stub_volume_create(self, context, size, name, description, snapshot, **param): - vol = stub_volume(1) + vol = stub_volume('1') vol['size'] = size vol['display_name'] = name vol['display_description'] = description @@ -640,4 +640,4 @@ def stub_volume_get_notfound(self, context, volume_id): def stub_volume_get_all(self, context, search_opts=None): - return [stub_volume_get(self, context, 1)] + return [stub_volume_get(self, context, '1')] diff --git a/nova/tests/api/openstack/volume/test_volumes.py b/nova/tests/api/openstack/volume/test_volumes.py index 7befe9606..2b96d15a3 100644 --- a/nova/tests/api/openstack/volume/test_volumes.py +++ b/nova/tests/api/openstack/volume/test_volumes.py @@ -90,6 +90,7 @@ class VolumeApiTest(test.TestCase): 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}]} + self.maxDiff = None self.assertEqual(res_dict, expected) def test_volume_list_detail(self): @@ -114,7 +115,7 @@ class VolumeApiTest(test.TestCase): def test_volume_show(self): req = fakes.HTTPRequest.blank('/v1/volumes/1') - res_dict = self.controller.show(req, 1) + res_dict = self.controller.show(req, '1') expected = {'volume': {'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', @@ -139,7 +140,7 @@ class VolumeApiTest(test.TestCase): self.stubs.Set(volume_api.API, 'get', stub_volume_get) req = fakes.HTTPRequest.blank('/v1/volumes/1') - res_dict = self.controller.show(req, 1) + res_dict = self.controller.show(req, '1') expected = {'volume': {'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py index 0b3c0e06a..a662d6930 100644 --- a/nova/tests/scheduler/test_scheduler.py +++ b/nova/tests/scheduler/test_scheduler.py @@ -477,7 +477,6 @@ class SchedulerTestCase(test.TestCase): instance = self._live_migration_instance() db.instance_get(self.context, instance['id']).AndReturn(instance) - # Source checks (volume and source compute are up) db.service_get_all_compute_by_host(self.context, instance['host']).AndReturn(['fake_service2']) utils.service_is_up('fake_service2').AndReturn(True) diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index 2391ea1ea..9e53df279 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -1215,7 +1215,9 @@ class LibvirtConnTestCase(test.TestCase): instance_dict) vol_dict = {'status': 'migrating', 'size': 1} volume_ref = db.volume_create(self.context, vol_dict) - db.volume_attached(self.context, volume_ref['id'], instance_ref['id'], + db.volume_attached(self.context, + volume_ref['id'], + instance_ref['uuid'], '/dev/fake') # Preparing mocks diff --git a/nova/tests/test_volume.py b/nova/tests/test_volume.py index 27969ee5b..d979c3d0e 100644 --- a/nova/tests/test_volume.py +++ b/nova/tests/test_volume.py @@ -48,7 +48,9 @@ class VolumeTestCase(test.TestCase): self.flags(connection_type='fake') self.volume = importutils.import_object(FLAGS.volume_manager) self.context = context.get_admin_context() - self.instance_id = db.instance_create(self.context, {})['id'] + instance = db.instance_create(self.context, {}) + self.instance_id = instance['id'] + self.instance_uuid = instance['uuid'] def tearDown(self): db.instance_destroy(self.context, self.instance_id) @@ -175,25 +177,26 @@ class VolumeTestCase(test.TestCase): inst['project_id'] = 'fake' inst['instance_type_id'] = '2' # m1.tiny inst['ami_launch_index'] = 0 - instance_id = db.instance_create(self.context, inst)['id'] + instance = db.instance_create(self.context, {}) + instance_id = instance['id'] + instance_uuid = instance['uuid'] mountpoint = "/dev/sdf" volume = self._create_volume() volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) if FLAGS.fake_tests: - db.volume_attached(self.context, volume_id, instance_id, + db.volume_attached(self.context, volume_id, instance_uuid, mountpoint) else: self.compute.attach_volume(self.context, - instance_id, + instance_uuid, volume_id, mountpoint) vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") self.assertEqual(vol['mountpoint'], mountpoint) - instance_ref = db.volume_get_instance(self.context, volume_id) - self.assertEqual(instance_ref['id'], instance_id) + self.assertEqual(vol['instance_uuid'], instance_uuid) self.assertRaises(exception.NovaException, self.volume.delete_volume, @@ -203,7 +206,7 @@ class VolumeTestCase(test.TestCase): db.volume_detached(self.context, volume_id) else: self.compute.detach_volume(self.context, - instance_id, + instance_uuid, volume_id) vol = db.volume_get(self.context, volume_id) self.assertEqual(vol['status'], "available") @@ -323,7 +326,7 @@ class VolumeTestCase(test.TestCase): volume = self._create_volume() self.volume.create_volume(self.context, volume['id']) - db.volume_attached(self.context, volume['id'], self.instance_id, + db.volume_attached(self.context, volume['id'], self.instance_uuid, '/dev/sda1') volume_api = nova.volume.api.API() @@ -383,7 +386,9 @@ class DriverTestCase(test.TestCase): log.logger.addHandler(logging.logging.StreamHandler(self.stream)) inst = {} - self.instance_id = db.instance_create(self.context, inst)['id'] + instance = db.instance_create(self.context, {}) + self.instance_id = instance['id'] + self.instance_uuid = instance['uuid'] def _attach_volume(self): """Attach volumes to an instance. This function also sets @@ -436,7 +441,7 @@ class ISCSITestCase(DriverTestCase): # each volume has a different mountpoint mountpoint = "/dev/sd" + chr((ord('b') + index)) - db.volume_attached(self.context, vol_ref['id'], self.instance_id, + db.volume_attached(self.context, vol_ref['id'], self.instance_uuid, mountpoint) volume_id_list.append(vol_ref['id']) |
