summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBin Yang <bin.yang@windriver.com>2017-03-31 13:54:16 +0800
committerBin Yang <bin.yang@windriver.com>2017-03-31 13:54:16 +0800
commit87df1bff46cbca7402394d9b00cd1703f8f0c84a (patch)
treea390e69e7b0dfec63e842392312851a7075a8931
parentf492faa2f0c377f9fe159e9eb15b9fafb1576320 (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.py29
-rw-r--r--newton/newton/requests/views/flavor.py29
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