summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-04-22 22:50:38 +0000
committerGerrit Code Review <review@openstack.org>2013-04-22 22:50:38 +0000
commitc8a13fd27d699de5673b571dfe2eabf94097216c (patch)
treefdd2491bb82d38521dce0143486bd54b26fac885
parentbfb8ca3e6e2bac3595db94de17c6b00caa5aaa4a (diff)
parent4c887edc8840327ce707d2015fa50ac625bb17db (diff)
downloadnova-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.py27
-rw-r--r--nova/virt/xenapi/vm_utils.py11
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: