diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-07-27 14:33:56 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-07-27 14:33:56 +0000 |
| commit | 43a963747d20e053d64a069d58577d86086579fc (patch) | |
| tree | 0182d9f450741817aff0a2eaf8d698418ecd2b0a | |
| parent | 44bf63f1c5bc1f5cc41e77b3a413cc7852e4de86 (diff) | |
| parent | 4a1650eea23c3b8a064721a2985d481218f04500 (diff) | |
Merge "Make instance_uuid backwards compat actually work."
| -rw-r--r-- | nova/compute/manager.py | 43 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 7 |
2 files changed, 27 insertions, 23 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 7e555b010..d25405ce3 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -172,8 +172,8 @@ def checks_instance_lock(function): # as a transition from when every function expected a context # and instance_uuid as positional arguments to where everything is a kwarg, # and the function may get either an instance_uuid or an instance. - def _checks_instance_lock_core(self, cb, context, instance_uuid, - *args, **kwargs): + def _checks_instance_lock_core(self, cb, context, *args, **kwargs): + instance_uuid = kwargs['instance_uuid'] locked = self._get_lock(context, instance_uuid) admin = context.is_admin @@ -193,23 +193,22 @@ def checks_instance_lock(function): def decorated_function(self, context, instance_uuid, *args, **kwargs): def _cb(self, context, *args, **kwargs): + instance_uuid = kwargs.pop('instance_uuid') function(self, context, instance_uuid, *args, **kwargs) - return _checks_instance_lock_core(self, _cb, context, instance_uuid, - *args, **kwargs) + kwargs['instance_uuid'] = instance_uuid + + return _checks_instance_lock_core(self, _cb, context, *args, **kwargs) @functools.wraps(function) def decorated_function_new(self, context, *args, **kwargs): - try: - instance_uuid = kwargs['instance_uuid'] - except KeyError: - instance_uuid = kwargs['instance']['uuid'] + if 'instance_uuid' not in kwargs: + kwargs['instance_uuid'] = kwargs['instance']['uuid'] def _cb(self, context, *args, **kwargs): function(self, context, *args, **kwargs) - return _checks_instance_lock_core(self, _cb, context, instance_uuid, - *args, **kwargs) + return _checks_instance_lock_core(self, _cb, context, *args, **kwargs) expected_args = ['context', 'instance_uuid'] argspec = inspect.getargspec(function) @@ -232,38 +231,36 @@ def wrap_instance_fault(function): # as a transition from when every function expected a context # and instance_uuid as positional arguments to where everything is a kwarg, # and the function may get either an instance_uuid or an instance. - def _wrap_instance_fault_core(self, cb, context, instance_uuid, - *args, **kwargs): + def _wrap_instance_fault_core(self, cb, context, *args, **kwargs): try: return cb(self, context, *args, **kwargs) except exception.InstanceNotFound: raise except Exception, e: with excutils.save_and_reraise_exception(): - self.add_instance_fault_from_exc(context, instance_uuid, e, - sys.exc_info()) + self.add_instance_fault_from_exc(context, + kwargs['instance_uuid'], e, sys.exc_info()) @functools.wraps(function) def decorated_function(self, context, instance_uuid, *args, **kwargs): - def _cb(self, context, *args, **_kwargs): + def _cb(self, context, *args, **kwargs): + instance_uuid = kwargs.pop('instance_uuid') return function(self, context, instance_uuid, *args, **kwargs) - return _wrap_instance_fault_core(self, _cb, context, instance_uuid, - *args, **kwargs) + kwargs['instance_uuid'] = instance_uuid + + return _wrap_instance_fault_core(self, _cb, context, *args, **kwargs) @functools.wraps(function) def decorated_function_new(self, context, *args, **kwargs): - if 'instance_uuid' in kwargs: - instance_uuid = kwargs['instance_uuid'] - else: - instance_uuid = kwargs['instance']['uuid'] + if 'instance_uuid' not in kwargs: + kwargs['instance_uuid'] = kwargs['instance']['uuid'] def _cb(self, context, *args, **kwargs): return function(self, context, *args, **kwargs) - return _wrap_instance_fault_core(self, _cb, context, instance_uuid, - *args, **kwargs) + return _wrap_instance_fault_core(self, _cb, context, *args, **kwargs) expected_args = ['context', 'instance_uuid'] argspec = inspect.getargspec(function) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 9fcb004a4..75df22f8a 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -805,9 +805,16 @@ class ComputeTestCase(BaseTestCase): instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance['uuid']) + # Try with the full instance console = self.compute.get_vnc_console(self.context, 'novnc', instance=instance) self.assert_(console) + + # Also make sure it still works with just the instance UUID + console = self.compute.get_vnc_console(self.context, 'novnc', + instance_uuid=instance['uuid']) + self.assert_(console) + self.compute.terminate_instance(self.context, instance['uuid']) def test_xvpvnc_vnc_console(self): |
