From 6bd44ccb3a4bf8536f6bca9b81517d2b24c31f14 Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Thu, 10 Nov 2011 20:45:55 -0500 Subject: Converting fixed ip calls to use instance objects Related to blueprint internal-uuids Change-Id: Ifad7a6ac39b0455f77602d9744f64425ebb3f49c --- nova/api/openstack/contrib/multinic.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'nova/api') diff --git a/nova/api/openstack/contrib/multinic.py b/nova/api/openstack/contrib/multinic.py index 85ff423aa..26968646d 100644 --- a/nova/api/openstack/contrib/multinic.py +++ b/nova/api/openstack/contrib/multinic.py @@ -15,12 +15,13 @@ """The multinic extension.""" -from webob import exc import webob +from webob import exc +from nova.api.openstack import extensions from nova import compute +from nova import exception from nova import log as logging -from nova.api.openstack import extensions LOG = logging.getLogger("nova.api.multinic") @@ -63,6 +64,13 @@ class Multinic(extensions.ExtensionDescriptor): return actions + def _get_instance(self, context, instance_id): + try: + return self.compute_api.get(context, instance_id) + except exception.InstanceNotFound: + msg = _("Server not found") + raise exc.HTTPNotFound(msg) + def _add_fixed_ip(self, input_dict, req, id): """Adds an IP on a given network to an instance.""" @@ -71,10 +79,10 @@ class Multinic(extensions.ExtensionDescriptor): msg = _("Missing 'networkId' argument for addFixedIp") raise exc.HTTPUnprocessableEntity(explanation=msg) - # Add the fixed IP + context = req.environ['nova.context'] + instance = self._get_instance(context, id) network_id = input_dict['addFixedIp']['networkId'] - self.compute_api.add_fixed_ip(req.environ['nova.context'], id, - network_id) + self.compute_api.add_fixed_ip(context, instance, network_id) return webob.Response(status_int=202) def _remove_fixed_ip(self, input_dict, req, id): @@ -85,11 +93,12 @@ class Multinic(extensions.ExtensionDescriptor): msg = _("Missing 'address' argument for removeFixedIp") raise exc.HTTPUnprocessableEntity(explanation=msg) - # Remove the fixed IP + context = req.environ['nova.context'] + instance = self._get_instance(context, id) address = input_dict['removeFixedIp']['address'] + try: - self.compute_api.remove_fixed_ip(req.environ['nova.context'], id, - address) + self.compute_api.remove_fixed_ip(context, instance, address) except exceptions.FixedIpNotFoundForSpecificInstance: LOG.exception(_("Unable to find address %r") % address) raise exc.HTTPBadRequest() -- cgit