diff options
author | Bin Yang <bin.yang@windriver.com> | 2017-03-31 13:54:16 +0800 |
---|---|---|
committer | Bin Yang <bin.yang@windriver.com> | 2017-03-31 13:54:16 +0800 |
commit | 87df1bff46cbca7402394d9b00cd1703f8f0c84a (patch) | |
tree | a390e69e7b0dfec63e842392312851a7075a8931 | |
parent | f492faa2f0c377f9fe159e9eb15b9fafb1576320 (diff) |
Fix issue to delete flavor API
delete extra-specs of flavor might fail, but does not impact
the deletion of flavor, so leave it alone
Change-Id: I0352cf4e3eb2894b0868b7dc8ab62acfbc060778
Issue-Id: MULTIVIM-61
Signed-off-by: Bin Yang <bin.yang@windriver.com>
-rw-r--r-- | kilo/kilo/requests/views/flavor.py | 29 | ||||
-rw-r--r-- | newton/newton/requests/views/flavor.py | 29 |
2 files changed, 38 insertions, 20 deletions
diff --git a/kilo/kilo/requests/views/flavor.py b/kilo/kilo/requests/views/flavor.py index 84cbc419..1e713064 100644 --- a/kilo/kilo/requests/views/flavor.py +++ b/kilo/kilo/requests/views/flavor.py @@ -333,6 +333,7 @@ class Flavors(APIView): extra_specs = resp.json() if extra_specs and extra_specs["extra_specs"]: for k, _ in extra_specs["extra_specs"].items(): + #just try to delete extra spec, but do not care if succeeded self.delete_flavor_one_extra_spec(sess, flavorid, k) return resp pass @@ -340,17 +341,25 @@ class Flavors(APIView): def delete_flavor_one_extra_spec(self, sess, flavorid, extra_spec_key): logger.debug("Flavors--delete 1 extra::> %s" % extra_spec_key) # prepare request resource to vim instance - req_resouce = "/flavors" - if flavorid and extra_spec_key: - req_resouce += "/%s" % flavorid - req_resouce += "/os-extra_specs/%s" % extra_spec_key - else: - raise VimDriverKiloException(message="VIM newton exception", - content="internal bug in deleting flavor extra specs: %s" % extra_spec_key, - status_code=500) + try: + req_resouce = "/flavors" + if flavorid and extra_spec_key: + req_resouce += "/%s" % flavorid + req_resouce += "/os-extra_specs/%s" % extra_spec_key + else: + raise VimDriverKiloException(message="VIM newton exception", + content="internal bug in deleting flavor extra specs: %s" % extra_spec_key, + status_code=500) - resp = sess.delete(req_resouce, endpoint_filter=self.service) - return resp + resp = sess.delete(req_resouce, endpoint_filter=self.service) + return resp + except HttpError as e: + logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json())) + return Response(data=e.response.json(), status=e.http_status) + except Exception as e: + logger.error(traceback.format_exc()) + return Response(data={'error': str(e)}, + status=status.HTTP_500_INTERNAL_SERVER_ERROR) pass diff --git a/newton/newton/requests/views/flavor.py b/newton/newton/requests/views/flavor.py index 2b7377bf..48ccff46 100644 --- a/newton/newton/requests/views/flavor.py +++ b/newton/newton/requests/views/flavor.py @@ -330,6 +330,7 @@ class Flavors(APIView): extra_specs = resp.json() if extra_specs and extra_specs["extra_specs"]: for k, _ in extra_specs["extra_specs"].items(): + # just try to delete extra spec, but do not care if succeeded self.delete_flavor_one_extra_spec(sess, flavorid, k) return resp pass @@ -337,17 +338,25 @@ class Flavors(APIView): def delete_flavor_one_extra_spec(self, sess, flavorid, extra_spec_key): logger.debug("Flavors--delete 1 extra::> %s" % extra_spec_key) # prepare request resource to vim instance - req_resouce = "/flavors" - if flavorid and extra_spec_key: - req_resouce += "/%s" % flavorid - req_resouce += "/os-extra_specs/%s" % extra_spec_key - else: - raise VimDriverNewtonException(message="VIM newton exception", - content="internal bug in deleting flavor extra specs: %s" % extra_spec_key, - status_code=500) + try: + req_resouce = "/flavors" + if flavorid and extra_spec_key: + req_resouce += "/%s" % flavorid + req_resouce += "/os-extra_specs/%s" % extra_spec_key + else: + raise VimDriverNewtonException(message="VIM newton exception", + content="internal bug in deleting flavor extra specs: %s" % extra_spec_key, + status_code=500) - resp = sess.delete(req_resouce, endpoint_filter=self.service) - return resp + resp = sess.delete(req_resouce, endpoint_filter=self.service) + return resp + except HttpError as e: + logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json())) + return Response(data=e.response.json(), status=e.http_status) + except Exception as e: + logger.error(traceback.format_exc()) + return Response(data={'error': str(e)}, + status=status.HTTP_500_INTERNAL_SERVER_ERROR) pass |