From 6b67b2f391830da52dea5cd84bd564bab692f365 Mon Sep 17 00:00:00 2001 From: Sandy Walsh Date: Wed, 31 Aug 2011 11:54:30 -0700 Subject: zone_add fixed to support zone name --- nova/api/openstack/zones.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nova/api') diff --git a/nova/api/openstack/zones.py b/nova/api/openstack/zones.py index a2bf267ed..998498e82 100644 --- a/nova/api/openstack/zones.py +++ b/nova/api/openstack/zones.py @@ -46,7 +46,7 @@ def _filter_keys(item, keys): def _exclude_keys(item, keys): - return dict((k, v) for k, v in item.iteritems() if k not in keys) + return dict((k, v) for k, v in item.iteritems() if k and (k not in keys)) def _scrub_zone(zone): -- cgit From 97f28ec95ce1c6a1d3cb9c896b4ac2b4b51589e2 Mon Sep 17 00:00:00 2001 From: Sandy Walsh Date: Thu, 15 Sep 2011 13:00:21 -0700 Subject: exceptions properly passed around now --- nova/api/openstack/servers.py | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'nova/api') diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py index 5affd1f33..6dc168203 100644 --- a/nova/api/openstack/servers.py +++ b/nova/api/openstack/servers.py @@ -17,6 +17,7 @@ import base64 import os import traceback +from novaclient import exceptions as novaclient_exceptions from lxml import etree from webob import exc import webob @@ -45,6 +46,29 @@ LOG = logging.getLogger('nova.api.openstack.servers') FLAGS = flags.FLAGS +class ConvertedException(exc.WSGIHTTPException): + def __init__(self, code, title, explaination): + self.code = code + self.title = title + self.explaination = explaination + super(ConvertedException, self).__init__() + + +def novaclient_exception_converter(f): + """Convert novaclient ClientException HTTP codes to webob exceptions. + """ + def new_f(*args, **kwargs): + try: + LOG.debug("**** NOVACLIENT EXCEPTION CONVERTER >>>>") + ret = f(*args, **kwargs) + LOG.debug("**** NOVACLIENT EXCEPTION CONVERTER <<<<") + return ret + except novaclient_exceptions.ClientException, e: + LOG.debug("**** NOVACLIENT EXCEPTION CONVERTER- RERAISING") + raise ConvertedException(e.code, e.message, e.details) + return new_f + + class Controller(object): """ The Server API base controller class for the OpenStack API """ @@ -135,6 +159,7 @@ class Controller(object): return dict(servers=servers) + @novaclient_exception_converter @scheduler_api.redirect_handler def show(self, req, id): """ Returns server details by server id """ @@ -169,6 +194,7 @@ class Controller(object): server['server']['adminPass'] = extra_values['password'] return server + @novaclient_exception_converter @scheduler_api.redirect_handler def update(self, req, id, body): """Update server then pass on to version-specific controller""" @@ -204,6 +230,7 @@ class Controller(object): def _update(self, context, req, id, inst_dict): return exc.HTTPNotImplemented() + @novaclient_exception_converter @scheduler_api.redirect_handler def action(self, req, id, body): """Multi-purpose method used to take actions on a server""" @@ -342,6 +369,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def lock(self, req, id): """ @@ -358,6 +386,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def unlock(self, req, id): """ @@ -374,6 +403,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def get_lock(self, req, id): """ @@ -389,6 +419,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def reset_network(self, req, id): """ @@ -404,6 +435,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def inject_network_info(self, req, id): """ @@ -419,6 +451,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def pause(self, req, id): """ Permit Admins to Pause the server. """ @@ -431,6 +464,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def unpause(self, req, id): """ Permit Admins to Unpause the server. """ @@ -443,6 +477,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def suspend(self, req, id): """permit admins to suspend the server""" @@ -455,6 +490,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def resume(self, req, id): """permit admins to resume the server from suspend""" @@ -467,6 +503,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def migrate(self, req, id): try: @@ -476,6 +513,7 @@ class Controller(object): raise exc.HTTPBadRequest() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def rescue(self, req, id): """Permit users to rescue the server.""" @@ -488,6 +526,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def unrescue(self, req, id): """Permit users to unrescue the server.""" @@ -500,6 +539,7 @@ class Controller(object): raise exc.HTTPUnprocessableEntity() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def get_ajax_console(self, req, id): """Returns a url to an instance's ajaxterm console.""" @@ -510,6 +550,7 @@ class Controller(object): raise exc.HTTPNotFound() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def get_vnc_console(self, req, id): """Returns a url to an instance's ajaxterm console.""" @@ -520,6 +561,7 @@ class Controller(object): raise exc.HTTPNotFound() return webob.Response(status_int=202) + @novaclient_exception_converter @scheduler_api.redirect_handler def diagnostics(self, req, id): """Permit Admins to retrieve server diagnostics.""" @@ -562,6 +604,7 @@ class Controller(object): class ControllerV10(Controller): """v1.0 OpenStack API controller""" + @novaclient_exception_converter @scheduler_api.redirect_handler def delete(self, req, id): """ Destroys a server """ @@ -640,6 +683,7 @@ class ControllerV10(Controller): class ControllerV11(Controller): """v1.1 OpenStack API controller""" + @novaclient_exception_converter @scheduler_api.redirect_handler def delete(self, req, id): """ Destroys a server """ -- cgit From 2fd55ddfdf065a8792fdd0e3f3e97b5e56e4a4a3 Mon Sep 17 00:00:00 2001 From: Sandy Walsh Date: Thu, 15 Sep 2011 13:42:30 -0700 Subject: tests working again --- nova/api/openstack/servers.py | 1 + 1 file changed, 1 insertion(+) (limited to 'nova/api') diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py index 6dc168203..80f367199 100644 --- a/nova/api/openstack/servers.py +++ b/nova/api/openstack/servers.py @@ -56,6 +56,7 @@ class ConvertedException(exc.WSGIHTTPException): def novaclient_exception_converter(f): """Convert novaclient ClientException HTTP codes to webob exceptions. + Has to be the outer-most decorator. """ def new_f(*args, **kwargs): try: -- cgit From 41c642ce4abef72c79cb6443ce575d8398b1f452 Mon Sep 17 00:00:00 2001 From: Sandy Walsh Date: Thu, 15 Sep 2011 18:10:04 -0700 Subject: remove debugging --- nova/api/openstack/servers.py | 3 --- 1 file changed, 3 deletions(-) (limited to 'nova/api') diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py index 80f367199..002535e34 100644 --- a/nova/api/openstack/servers.py +++ b/nova/api/openstack/servers.py @@ -60,12 +60,9 @@ def novaclient_exception_converter(f): """ def new_f(*args, **kwargs): try: - LOG.debug("**** NOVACLIENT EXCEPTION CONVERTER >>>>") ret = f(*args, **kwargs) - LOG.debug("**** NOVACLIENT EXCEPTION CONVERTER <<<<") return ret except novaclient_exceptions.ClientException, e: - LOG.debug("**** NOVACLIENT EXCEPTION CONVERTER- RERAISING") raise ConvertedException(e.code, e.message, e.details) return new_f -- cgit From ed4d1733c5308d6591587471cacf6b09bbb99f10 Mon Sep 17 00:00:00 2001 From: Sandy Walsh Date: Wed, 21 Sep 2011 05:03:37 -0700 Subject: clean up based on cerberus review --- nova/api/openstack/servers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nova/api') diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py index 002535e34..b2d192c99 100644 --- a/nova/api/openstack/servers.py +++ b/nova/api/openstack/servers.py @@ -50,7 +50,7 @@ class ConvertedException(exc.WSGIHTTPException): def __init__(self, code, title, explaination): self.code = code self.title = title - self.explaination = explaination + self.explanation = explanation super(ConvertedException, self).__init__() -- cgit