Glance image delete output
Deleting an already deleted image using admin user is throwing an error "404 Not Found" which is confusing. Deleting an image that does not exist throws "No image with a name or ID of 'image-id' exists." Updated the code so that trying to delete an already deleted image throws "No image with an ID of 'image-id' exists." error. Closes-Bug: #1333119 Change-Id: I8f9a6174663337a0f48aafa029a4339c32eb2134 Co-Authored-By: Abhishek Talwar <abhishek.talwar@tcs.com> Co-Authored-By: Kamil Rykowski <kamil.rykowski@intel.com>
This commit is contained in:
parent
9829d7b6b9
commit
f7cdc3eefe
@ -321,6 +321,9 @@ def do_image_delete(gc, args):
|
||||
"""Delete specified image(s)."""
|
||||
for args_image in args.images:
|
||||
image = utils.find_resource(gc.images, args_image)
|
||||
if image and image.status == "deleted":
|
||||
msg = "No image with an ID of '%s' exists." % image.id
|
||||
raise exc.CommandError(msg)
|
||||
try:
|
||||
if args.verbose:
|
||||
print('Requesting image delete for %s ...' %
|
||||
|
@ -261,6 +261,10 @@ def do_image_upload(gc, args):
|
||||
@utils.arg('id', metavar='<IMAGE_ID>', help='ID of image to delete.')
|
||||
def do_image_delete(gc, args):
|
||||
"""Delete specified image."""
|
||||
image = gc.images.get(args.id)
|
||||
if image and image.status == "deleted":
|
||||
msg = "No image with an ID of '%s' exists." % image.id
|
||||
utils.exit(msg)
|
||||
gc.images.delete(args.id)
|
||||
|
||||
|
||||
|
@ -187,6 +187,28 @@ fixtures = {
|
||||
},
|
||||
None
|
||||
)
|
||||
},
|
||||
'/v1/images/detail?limit=20&name=70aa106f-3750-4d7c-a5ce-0a535ac08d0a': {
|
||||
'GET': (
|
||||
{},
|
||||
{'images': [
|
||||
{
|
||||
'id': '70aa106f-3750-4d7c-a5ce-0a535ac08d0a',
|
||||
'name': 'imagedeleted',
|
||||
'deleted': True,
|
||||
'status': 'deleted',
|
||||
},
|
||||
]},
|
||||
),
|
||||
},
|
||||
'/v1/images/70aa106f-3750-4d7c-a5ce-0a535ac08d0a': {
|
||||
'HEAD': (
|
||||
{
|
||||
'x-image-meta-id': '70aa106f-3750-4d7c-a5ce-0a535ac08d0a',
|
||||
'x-image-meta-status': 'deleted'
|
||||
},
|
||||
None
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ -387,6 +409,16 @@ class ShellStdinHandlingTests(testtools.TestCase):
|
||||
)
|
||||
)
|
||||
|
||||
def test_image_delete_deleted(self):
|
||||
self.assertRaises(
|
||||
exc.CommandError,
|
||||
v1shell.do_image_delete,
|
||||
self.gc,
|
||||
argparse.Namespace(
|
||||
images=['70aa106f-3750-4d7c-a5ce-0a535ac08d0a']
|
||||
)
|
||||
)
|
||||
|
||||
def test_image_update_closed_stdin(self):
|
||||
"""Supply glanceclient with a closed stdin, and perform an image
|
||||
update to an active image. Glanceclient should not attempt to read
|
||||
|
@ -350,6 +350,18 @@ class ShellV2Test(testtools.TestCase):
|
||||
|
||||
mocked_delete.assert_called_once_with('pass')
|
||||
|
||||
def test_do_image_delete_deleted(self):
|
||||
image_id = 'deleted-img'
|
||||
args = self._make_args({'id': image_id})
|
||||
with mock.patch.object(self.gc.images, 'get') as mocked_get:
|
||||
mocked_get.return_value = self._make_args({'id': image_id,
|
||||
'status': 'deleted'})
|
||||
|
||||
msg = "No image with an ID of '%s' exists." % image_id
|
||||
self.assert_exits_with_msg(func=test_shell.do_image_delete,
|
||||
func_args=args,
|
||||
err_msg=msg)
|
||||
|
||||
def test_do_member_list(self):
|
||||
args = self._make_args({'image_id': 'IMG-01'})
|
||||
with mock.patch.object(self.gc.image_members, 'list') as mocked_list:
|
||||
|
Loading…
x
Reference in New Issue
Block a user