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')