From 789d15608d5863f31ee0240c38998cd3e630cefb Mon Sep 17 00:00:00 2001 From: Sulochan Acharya <sulochan@gmail.com> Date: Sat, 27 Apr 2013 03:54:53 -0500 Subject: [PATCH] Allow deleting multiple images from shell Adds nargs to image-delete to allow deleting multiple images through cli. Adds shell test for multiple image-delete. Also makes a small correction in fakes to correct image id of the second image to 2. Fixes bug #1173511 Change-Id: I167a97cab75a6df544901e965d2cfa3c10a3958e --- novaclient/v1_1/shell.py | 17 ++++++++--------- tests/v1_1/fakes.py | 5 ++++- tests/v1_1/test_shell.py | 5 +++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py index b138c0b1f..4e90252db 100644 --- a/novaclient/v1_1/shell.py +++ b/novaclient/v1_1/shell.py @@ -831,16 +831,15 @@ def do_image_show(cs, args): _print_image(image) -@utils.arg('image', metavar='<image>', help='Name or ID of image.') +@utils.arg('image', metavar='<image>', nargs='+', + help='Name or ID of image(s).') def do_image_delete(cs, args): - """ - Delete an image. - - It should go without saying, but you can only delete images you - created. - """ - image = _find_image(cs, args.image) - image.delete() + """Delete specified image(s).""" + for image in args.image: + try: + _find_image(cs, image).delete() + except Exception as e: + print "Delete for image %s failed: %s" % (image, e) @utils.arg('--reservation-id', diff --git a/tests/v1_1/fakes.py b/tests/v1_1/fakes.py index fdd7543a2..c13e16edd 100644 --- a/tests/v1_1/fakes.py +++ b/tests/v1_1/fakes.py @@ -806,7 +806,7 @@ class FakeHTTPClient(base_client.HTTPClient): "links": {}, }, { - "id": 743, + "id": 2, "name": "My Server Backup", "serverId": 1234, "updated": "2010-10-10T12:00:00Z", @@ -839,6 +839,9 @@ class FakeHTTPClient(base_client.HTTPClient): def delete_images_1(self, **kw): return (204, {}, None) + def delete_images_2(self, **kw): + return (204, {}, None) + def delete_images_1_metadata_test_key(self, **kw): return (204, {}, None) diff --git a/tests/v1_1/test_shell.py b/tests/v1_1/test_shell.py index f397a30ae..cb45e8d43 100644 --- a/tests/v1_1/test_shell.py +++ b/tests/v1_1/test_shell.py @@ -482,6 +482,11 @@ class ShellTest(utils.TestCase): self.run_command('image-delete 1') self.assert_called('DELETE', '/images/1') + def test_image_delete_multiple(self): + self.run_command('image-delete 1 2') + self.assert_called('DELETE', '/images/1', pos=-3) + self.assert_called('DELETE', '/images/2', pos=-1) + def test_list(self): self.run_command('list') self.assert_called('GET', '/servers/detail')