From a0e37c6d29c57cde416b047cd38c93b6a9588005 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Mon, 9 Apr 2012 22:11:10 -0700 Subject: Fix errors in os-networks extension * Makes sure the uuid is returned as id if it exists * Simplifies db get for manager.get_networks * Removes direct db access from manager which was breaking test * Updates tests to verify the new logic * Makes sure Remote NotFounds are turned into 404s (The RemoteError blocks can be removed once https://review.openstack.org/5749 lands) * Fixes bug 977712 * Fixes bug 977723 Change-Id: I6aa815960782c7ae5165aeebd83bdaaa62c19b04 --- nova/api/openstack/compute/contrib/networks.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'nova/api') diff --git a/nova/api/openstack/compute/contrib/networks.py b/nova/api/openstack/compute/contrib/networks.py index cc838ab45..3da8964b0 100644 --- a/nova/api/openstack/compute/contrib/networks.py +++ b/nova/api/openstack/compute/contrib/networks.py @@ -24,6 +24,7 @@ from nova import exception from nova import flags from nova import log as logging import nova.network.api +from nova.rpc import common FLAGS = flags.FLAGS @@ -40,7 +41,10 @@ def network_dict(network): 'netmask', 'injected', 'cidr', 'vpn_public_address', 'multi_host', 'dns1', 'host', 'gateway_v6', 'netmask_v6', 'created_at') - return dict((field, network[field]) for field in fields) + result = dict((field, network[field]) for field in fields) + if 'uuid' in network: + result['id'] = network['uuid'] + return result else: return {} @@ -72,6 +76,11 @@ class NetworkController(object): self.network_api.disassociate(context, network_id) except exception.NetworkNotFound: raise exc.HTTPNotFound(_("Network not found")) + except common.RemoteError as ex: + if ex.exc_type in ["NetworkNotFound", "NetworkNotFoundForUUID"]: + raise exc.HTTPNotFound(_("Network not found")) + else: + raise return exc.HTTPAccepted() def index(self, req): @@ -89,6 +98,11 @@ class NetworkController(object): network = self.network_api.get(context, id) except exception.NetworkNotFound: raise exc.HTTPNotFound(_("Network not found")) + except common.RemoteError as ex: + if ex.exc_type in ["NetworkNotFound", "NetworkNotFoundForUUID"]: + raise exc.HTTPNotFound(_("Network not found")) + else: + raise return {'network': network_dict(network)} def delete(self, req, id): @@ -99,6 +113,11 @@ class NetworkController(object): self.network_api.delete(context, id) except exception.NetworkNotFound: raise exc.HTTPNotFound(_("Network not found")) + except common.RemoteError as ex: + if ex.exc_type in ["NetworkNotFound", "NetworkNotFoundForUUID"]: + raise exc.HTTPNotFound(_("Network not found")) + else: + raise return exc.HTTPAccepted() def create(self, req, id, body=None): -- cgit