diff options
| author | Yaguang Tang <yaguang.tang@canonical.com> | 2013-06-05 15:16:16 +0800 |
|---|---|---|
| committer | Yaguang Tang <yaguang.tang@canonical.com> | 2013-06-13 11:07:22 +0800 |
| commit | e517e5668ab20214432e06ef87f7b16776edaf7c (patch) | |
| tree | d86d7df55a350896a7b00d278c7bf2de0a4371a4 /nova/tests | |
| parent | 3f2b22499d9e94ae3ac80786752223f43d24492b (diff) | |
Naming instance directory by uuid in VMware Hyper.
Like Libvirt Hyper, Using EC2 template for naming instance
directory may cause conflict. we follow what Libvirt does to use
instance uuid instead of EC2 template naming. To keep backwards
compability, when fails to find a instance by uuid, fall back to use
EC2 name.
Fix bug #1186944
Change-Id: Iaba099225a9b3b0390cae4c5fbd82d7e6c11f0e0
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/virt/vmwareapi/db_fakes.py | 4 | ||||
| -rw-r--r-- | nova/tests/virt/vmwareapi/test_vmwareapi.py | 57 |
2 files changed, 36 insertions, 25 deletions
diff --git a/nova/tests/virt/vmwareapi/db_fakes.py b/nova/tests/virt/vmwareapi/db_fakes.py index 8f2df43e3..93fcf6e13 100644 --- a/nova/tests/virt/vmwareapi/db_fakes.py +++ b/nova/tests/virt/vmwareapi/db_fakes.py @@ -19,8 +19,6 @@ Stubouts, mocks and fixtures for the test suite """ -import uuid - from nova.compute import task_states from nova.compute import vm_states from nova import db @@ -62,7 +60,7 @@ def stub_out_db_instance_api(stubs): base_options = { 'name': values['name'], 'id': values['id'], - 'uuid': uuid.uuid4(), + 'uuid': values['uuid'], 'reservation_id': utils.generate_uid('r'), 'image_ref': values['image_ref'], 'kernel_id': values['kernel_id'], diff --git a/nova/tests/virt/vmwareapi/test_vmwareapi.py b/nova/tests/virt/vmwareapi/test_vmwareapi.py index dd1a0e923..e5c2520ca 100644 --- a/nova/tests/virt/vmwareapi/test_vmwareapi.py +++ b/nova/tests/virt/vmwareapi/test_vmwareapi.py @@ -135,6 +135,7 @@ class VMwareAPIVMTestCase(test.TestCase): def _create_instance_in_the_db(self): values = {'name': 1, 'id': 1, + 'uuid': "fake-uuid", 'project_id': self.project_id, 'user_id': self.user_id, 'image_ref': "1", @@ -164,7 +165,8 @@ class VMwareAPIVMTestCase(test.TestCase): self.assertEquals(len(instances), 1) # Get Nova record for VM - vm_info = self.conn.get_info({'name': 1}) + vm_info = self.conn.get_info({'uuid': 'fake-uuid', + 'name': 1}) # Get record for VM vms = vmwareapi_fake._get_objects("VirtualMachine") @@ -218,7 +220,7 @@ class VMwareAPIVMTestCase(test.TestCase): def test_spawn(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) def test_snapshot(self): @@ -232,11 +234,11 @@ class VMwareAPIVMTestCase(test.TestCase): 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) self.conn.snapshot(self.context, self.instance, "Test-Snapshot", func_call_matcher.call) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) self.assertIsNone(func_call_matcher.match()) @@ -248,12 +250,23 @@ class VMwareAPIVMTestCase(test.TestCase): def test_reboot(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'name': 1, 'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) reboot_type = "SOFT" self.conn.reboot(self.context, self.instance, self.network_info, reboot_type) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'name': 1, 'uuid': 'fake-uuid'}) + self._check_vm_info(info, power_state.RUNNING) + + def test_reboot_with_uuid(self): + """Test fall back to use name when can't find by uuid.""" + self._create_vm() + info = self.conn.get_info({'name': 'fake-uuid', 'uuid': 'wrong-uuid'}) + self._check_vm_info(info, power_state.RUNNING) + reboot_type = "SOFT" + self.conn.reboot(self.context, self.instance, self.network_info, + reboot_type) + info = self.conn.get_info({'name': 'fake-uuid', 'uuid': 'wrong-uuid'}) self._check_vm_info(info, power_state.RUNNING) def test_reboot_non_existent(self): @@ -264,10 +277,10 @@ class VMwareAPIVMTestCase(test.TestCase): def test_reboot_not_poweredon(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) self.conn.suspend(self.instance) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.SUSPENDED) self.assertRaises(exception.InstanceRebootFailure, self.conn.reboot, self.context, self.instance, self.network_info, @@ -275,10 +288,10 @@ class VMwareAPIVMTestCase(test.TestCase): def test_suspend(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': "fake-uuid"}) self._check_vm_info(info, power_state.RUNNING) self.conn.suspend(self.instance) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.SUSPENDED) def test_suspend_non_existent(self): @@ -288,13 +301,13 @@ class VMwareAPIVMTestCase(test.TestCase): def test_resume(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) self.conn.suspend(self.instance) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.SUSPENDED) self.conn.resume(self.instance, self.network_info) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) def test_resume_non_existent(self): @@ -304,20 +317,20 @@ class VMwareAPIVMTestCase(test.TestCase): def test_resume_not_suspended(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) self.assertRaises(exception.InstanceResumeFailure, self.conn.resume, self.instance, self.network_info) def test_power_on(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) self.conn.power_off(self.instance) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.SHUTDOWN) self.conn.power_on(self.instance) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) def test_power_on_non_existent(self): @@ -327,10 +340,10 @@ class VMwareAPIVMTestCase(test.TestCase): def test_power_off(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) self.conn.power_off(self.instance) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.SHUTDOWN) def test_power_off_non_existent(self): @@ -341,19 +354,19 @@ class VMwareAPIVMTestCase(test.TestCase): def test_power_off_suspended(self): self._create_vm() self.conn.suspend(self.instance) - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.SUSPENDED) self.assertRaises(exception.InstancePowerOffFailure, self.conn.power_off, self.instance) def test_get_info(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) def test_destroy(self): self._create_vm() - info = self.conn.get_info({'name': 1}) + info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) instances = self.conn.list_instances() self.assertEquals(len(instances), 1) |
