diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-04-22 22:50:38 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-04-22 22:50:38 +0000 |
| commit | c8a13fd27d699de5673b571dfe2eabf94097216c (patch) | |
| tree | fdd2491bb82d38521dce0143486bd54b26fac885 | |
| parent | bfb8ca3e6e2bac3595db94de17c6b00caa5aaa4a (diff) | |
| parent | 4c887edc8840327ce707d2015fa50ac625bb17db (diff) | |
| download | nova-c8a13fd27d699de5673b571dfe2eabf94097216c.tar.gz nova-c8a13fd27d699de5673b571dfe2eabf94097216c.tar.xz nova-c8a13fd27d699de5673b571dfe2eabf94097216c.zip | |
Merge "Allows xenapi 'lookup' to look for rescue mode VMs"
| -rw-r--r-- | nova/tests/virt/xenapi/test_vm_utils.py | 27 | ||||
| -rw-r--r-- | nova/virt/xenapi/vm_utils.py | 11 |
2 files changed, 36 insertions, 2 deletions
diff --git a/nova/tests/virt/xenapi/test_vm_utils.py b/nova/tests/virt/xenapi/test_vm_utils.py index a021bc734..bba704ed9 100644 --- a/nova/tests/virt/xenapi/test_vm_utils.py +++ b/nova/tests/virt/xenapi/test_vm_utils.py @@ -63,6 +63,33 @@ class LookupTestCase(test.TestCase): vm_utils.lookup, self.session, self.name_label) + def test_rescue_none(self): + self.session.call_xenapi( + "VM.get_by_name_label", self.name_label + '-rescue').AndReturn([]) + self._do_mock(['x']) + result = vm_utils.lookup(self.session, self.name_label, + check_rescue=True) + self.assertEqual('x', result) + + def test_rescue_found(self): + self.session.call_xenapi( + "VM.get_by_name_label", + self.name_label + '-rescue').AndReturn(['y']) + self.mox.ReplayAll() + result = vm_utils.lookup(self.session, self.name_label, + check_rescue=True) + self.assertEqual('y', result) + + def test_rescue_too_many(self): + self.session.call_xenapi( + "VM.get_by_name_label", + self.name_label + '-rescue').AndReturn(['a', 'b', 'c']) + self.mox.ReplayAll() + self.assertRaises(exception.InstanceExists, + vm_utils.lookup, + self.session, self.name_label, + check_rescue=True) + class GenerateConfigDriveTestCase(test.TestCase): def test_no_admin_pass(self): diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py index 67b6a9cc0..e569216c8 100644 --- a/nova/virt/xenapi/vm_utils.py +++ b/nova/virt/xenapi/vm_utils.py @@ -1394,8 +1394,15 @@ def lookup_vm_vdis(session, vm_ref): return vdi_refs -def lookup(session, name_label): - """Look the instance up and return it if available.""" +def lookup(session, name_label, check_rescue=False): + """Look the instance up and return it if available. + :param check_rescue: if True will return the 'name'-rescue vm if it + exists, instead of just 'name' + """ + if check_rescue: + result = lookup(session, name_label + '-rescue', False) + if result: + return result vm_refs = session.call_xenapi("VM.get_by_name_label", name_label) n = len(vm_refs) if n == 0: |
