Merge "Add additional info. to image.delete notification"

This commit is contained in:
Jenkins 2012-06-01 18:03:41 +00:00 committed by Gerrit Code Review
commit ff32b489da
6 changed files with 33 additions and 7 deletions

View File

@ -719,7 +719,7 @@ class Controller(controller.BaseController):
if image['location']:
schedule_delete_from_backend(image['location'], self.conf,
req.context, id)
registry.delete_image_metadata(req.context, id)
image = registry.delete_image_metadata(req.context, id)
except exception.NotFound, e:
msg = ("Failed to find image to delete: %(e)s" % locals())
for line in msg.split('\n'):
@ -733,7 +733,7 @@ class Controller(controller.BaseController):
self.notifier.info('image.delete', msg)
raise HTTPForbidden(msg, request=req, content_type="text/plain")
else:
self.notifier.info('image.delete', id)
self.notifier.info('image.delete', image)
def get_store_or_400(self, request, scheme):
"""

View File

@ -293,10 +293,12 @@ class Controller(object):
:param req: wsgi Request object
:param id: The opaque internal identifier for the image
:retval Returns 200 if delete was successful, a fault if not.
:retval Returns 200 if delete was successful, a fault if not. On
success, the body contains the deleted image information as a mapping.
"""
try:
db_api.image_destroy(req.context, id)
deleted_image = db_api.image_destroy(req.context, id)
return dict(image=make_image_dict(deleted_image))
except exception.ForbiddenPublicImage:
# If it's private and doesn't belong to them, don't let on

View File

@ -151,8 +151,10 @@ class RegistryClient(BaseClient):
"""
Deletes Registry's information about an image
"""
self.do_request("DELETE", "/images/%s" % image_id)
return True
res = self.do_request("DELETE", "/images/%s" % image_id)
data = json.loads(res.read())
image = data['image']
return image
def get_image_members(self, image_id):
"""Returns a list of membership associations from Registry"""

View File

@ -243,6 +243,8 @@ def image_destroy(context, image_id):
for memb_ref in image_ref.members:
image_member_delete(context, memb_ref, session=session)
return image_ref
def image_get(context, image_id, session=None, force_show_deleted=False):
"""Get an image or raise if it does not exist."""

View File

@ -1138,7 +1138,12 @@ class TestRegistryClient(base.IsolatedUnitTest):
orig_num_images = len(self.client.get_images())
# Delete image #2
self.assertTrue(self.client.delete_image(UUID2))
image = self.FIXTURES[1]
deleted_image = self.client.delete_image(image['id'])
self.assertTrue(deleted_image)
self.assertEquals(image['id'], deleted_image['id'])
self.assertTrue(deleted_image['deleted'])
self.assertTrue(deleted_image['deleted_at'])
# Verify one less image
new_num_images = len(self.client.get_images())

View File

@ -1857,6 +1857,21 @@ class TestRegistryAPI(base.IsolatedUnitTest):
new_num_images = len(res_dict['images'])
self.assertEquals(new_num_images, orig_num_images - 1)
def test_delete_image_response(self):
"""Tests that the registry API delete returns the image metadata"""
image = self.FIXTURES[0]
req = webob.Request.blank('/images/%s' % image['id'])
req.method = 'DELETE'
res = req.get_response(self.api)
self.assertEquals(res.status_int, 200)
deleted_image = json.loads(res.body)['image']
self.assertEquals(image['id'], deleted_image['id'])
self.assertTrue(deleted_image['deleted'])
self.assertTrue(deleted_image['deleted_at'])
def test_delete_image_not_existing(self):
"""
Tests proper exception is raised if attempt to delete