From 0d00603f124e8d86871247ce419229329488dff8 Mon Sep 17 00:00:00 2001
From: gtt116 <gtt116@gmail.com>
Date: Tue, 7 Jan 2014 04:16:06 +0000
Subject: [PATCH] Support list deleted servers for admin

Nova api supported a parameter named 'deleted' which allow Admin to list
deleted servers. This patch make novaclient support this.

Change-Id: Ifc492fd0ba9d885e37c04c165d6397832ae6ebe0
Closes-Bug: #1266631
---
 novaclient/tests/v1_1/test_shell.py | 4 ++++
 novaclient/tests/v3/test_shell.py   | 4 ++++
 novaclient/v1_1/shell.py            | 6 ++++++
 novaclient/v3/shell.py              | 6 ++++++
 4 files changed, 20 insertions(+)

diff --git a/novaclient/tests/v1_1/test_shell.py b/novaclient/tests/v1_1/test_shell.py
index fa012a557..026ffc7c0 100644
--- a/novaclient/tests/v1_1/test_shell.py
+++ b/novaclient/tests/v1_1/test_shell.py
@@ -688,6 +688,10 @@ class ShellTest(utils.TestCase):
         self.run_command('list --minimal')
         self.assert_called('GET', '/servers')
 
+    def test_list_deleted(self):
+        self.run_command('list --deleted')
+        self.assert_called('GET', '/servers/detail?deleted=True')
+
     def test_list_with_images(self):
         self.run_command('list --image 1')
         self.assert_called('GET', '/servers/detail?image=1')
diff --git a/novaclient/tests/v3/test_shell.py b/novaclient/tests/v3/test_shell.py
index 07eec1aa0..1c39ad7fd 100644
--- a/novaclient/tests/v3/test_shell.py
+++ b/novaclient/tests/v3/test_shell.py
@@ -78,6 +78,10 @@ class ShellTest(utils.TestCase):
     def assert_called_anytime(self, method, url, body=None):
         return self.shell.cs.assert_called_anytime(method, url, body)
 
+    def test_list_deleted(self):
+        self.run_command('list --deleted')
+        self.assert_called('GET', '/servers/detail?deleted=True')
+
     def test_aggregate_list(self):
         self.run_command('aggregate-list')
         self.assert_called('GET', '/os-aggregates')
diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py
index e6b3160a3..31b0ac209 100644
--- a/novaclient/v1_1/shell.py
+++ b/novaclient/v1_1/shell.py
@@ -1090,6 +1090,11 @@ def do_image_delete(cs, args):
     metavar='<tenant>',
     nargs='?',
     help='Display information from single tenant (Admin only).')
+@utils.arg('--deleted',
+    dest='deleted',
+    action="store_true",
+    default=False,
+    help='Only display deleted servers (Admin only).')
 @utils.arg('--fields',
     default=None,
     metavar='<fields>',
@@ -1119,6 +1124,7 @@ def do_list(cs, args):
             'status': args.status,
             'tenant_id': args.tenant,
             'host': args.host,
+            'deleted': args.deleted,
             'instance_name': args.instance_name}
 
     filters = {'flavor': lambda f: f['id'],
diff --git a/novaclient/v3/shell.py b/novaclient/v3/shell.py
index 0750b45f7..e81da085c 100644
--- a/novaclient/v3/shell.py
+++ b/novaclient/v3/shell.py
@@ -954,6 +954,11 @@ def do_image_delete(cs, args):
     metavar='<fields>',
     help='Comma-separated list of fields to display. '
          'Use the show command to see which fields are available.')
+@utils.arg('--deleted',
+    dest='deleted',
+    action="store_true",
+    default=False,
+    help='Only display deleted servers (Admin only).')
 @utils.arg('--minimal',
     dest='minimal',
     action="store_true",
@@ -978,6 +983,7 @@ def do_list(cs, args):
             'status': args.status,
             'tenant_id': args.tenant,
             'host': args.host,
+            'deleted': args.deleted,
             'instance_name': args.instance_name}
 
     filters = {'flavor': lambda f: f['id'],