Catch InUseByStore case in do_image_delete
In case do_image_delete() is called on an image that is in use and can't be deleted by the driver a HTTPConflict error is raised in glance. Catch this error and print a propper error message. Closes-Bug: #1551037 Change-Id: Id17098f27511df8e05e56b8df21e748921223bd9 Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
This commit is contained in:
@@ -644,6 +644,20 @@ class ShellV2Test(testtools.TestCase):
|
||||
self.assertEqual(2, mocked_print_err.call_count)
|
||||
mocked_utils_exit.assert_called_once_with()
|
||||
|
||||
@mock.patch.object(utils, 'exit')
|
||||
@mock.patch.object(utils, 'print_err')
|
||||
def test_do_image_delete_with_image_in_use(self, mocked_print_err,
|
||||
mocked_utils_exit):
|
||||
args = argparse.Namespace(id=['image1', 'image2'])
|
||||
with mock.patch.object(self.gc.images, 'delete') as mocked_delete:
|
||||
mocked_delete.side_effect = exc.HTTPConflict
|
||||
|
||||
test_shell.do_image_delete(self.gc, args)
|
||||
|
||||
self.assertEqual(2, mocked_delete.call_count)
|
||||
self.assertEqual(2, mocked_print_err.call_count)
|
||||
mocked_utils_exit.assert_called_once_with()
|
||||
|
||||
def test_do_image_delete_deleted(self):
|
||||
image_id = 'deleted-img'
|
||||
args = argparse.Namespace(id=[image_id])
|
||||
|
||||
@@ -338,6 +338,10 @@ def do_image_delete(gc, args):
|
||||
msg = "No image with an ID of '%s' exists." % args_id
|
||||
utils.print_err(msg)
|
||||
failure_flag = True
|
||||
except exc.HTTPConflict:
|
||||
msg = "Unable to delete image '%s' because it is in use." % args_id
|
||||
utils.print_err(msg)
|
||||
failure_flag = True
|
||||
except exc.HTTPException as e:
|
||||
msg = "'%s': Unable to delete image '%s'" % (e, args_id)
|
||||
utils.print_err(msg)
|
||||
|
||||
Reference in New Issue
Block a user