|
Jakub Ruzicka |
fcc2a65 |
From 55b72401b7cfce4c8b9edec827a96ab8b815ed30 Mon Sep 17 00:00:00 2001
|
|
Jakub Ruzicka |
fcc2a65 |
From: Jay Lau <liugya@cn.ibm.com>
|
|
Jakub Ruzicka |
fcc2a65 |
Date: Sun, 6 Apr 2014 13:46:53 +0800
|
|
Jakub Ruzicka |
fcc2a65 |
Subject: [PATCH] Enable delete multiple server groups in one request
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
Currently, "nova server-group-delete" can only delete one server
|
|
Jakub Ruzicka |
fcc2a65 |
group in one request, this patch was enabling nova client support
|
|
Jakub Ruzicka |
fcc2a65 |
removing multiple server groups in one request.
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
Change-Id: I373151bc27cbe8617e2023ba99f6fb3f0108d592
|
|
Jakub Ruzicka |
fcc2a65 |
Closes-Bug: #1302954
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
Conflicts:
|
|
Jakub Ruzicka |
fcc2a65 |
novaclient/tests/v1_1/test_shell.py
|
|
Jakub Ruzicka |
fcc2a65 |
---
|
|
Jakub Ruzicka |
fcc2a65 |
novaclient/tests/v1_1/fakes.py | 6 ++++++
|
|
Jakub Ruzicka |
fcc2a65 |
novaclient/tests/v1_1/test_shell.py | 5 +++++
|
|
Jakub Ruzicka |
fcc2a65 |
novaclient/v1_1/shell.py | 21 ++++++++++++++++-----
|
|
Jakub Ruzicka |
fcc2a65 |
3 files changed, 27 insertions(+), 5 deletions(-)
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
diff --git a/novaclient/tests/v1_1/fakes.py b/novaclient/tests/v1_1/fakes.py
|
|
Jakub Ruzicka |
fcc2a65 |
index 50658c1..61926c1 100644
|
|
Jakub Ruzicka |
fcc2a65 |
--- a/novaclient/tests/v1_1/fakes.py
|
|
Jakub Ruzicka |
fcc2a65 |
+++ b/novaclient/tests/v1_1/fakes.py
|
|
Jakub Ruzicka |
fcc2a65 |
@@ -405,6 +405,12 @@ class FakeHTTPClient(base_client.HTTPClient):
|
|
Jakub Ruzicka |
fcc2a65 |
fakes.assert_has_keys(body['server'], optional=['name', 'adminPass'])
|
|
Jakub Ruzicka |
fcc2a65 |
return (204, {}, body)
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
+ def delete_os_server_groups_12345(self, **kw):
|
|
Jakub Ruzicka |
fcc2a65 |
+ return (202, {}, None)
|
|
Jakub Ruzicka |
fcc2a65 |
+
|
|
Jakub Ruzicka |
fcc2a65 |
+ def delete_os_server_groups_56789(self, **kw):
|
|
Jakub Ruzicka |
fcc2a65 |
+ return (202, {}, None)
|
|
Jakub Ruzicka |
fcc2a65 |
+
|
|
Jakub Ruzicka |
fcc2a65 |
def delete_servers_1234(self, **kw):
|
|
Jakub Ruzicka |
fcc2a65 |
return (202, {}, None)
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
diff --git a/novaclient/tests/v1_1/test_shell.py b/novaclient/tests/v1_1/test_shell.py
|
|
Jakub Ruzicka |
fcc2a65 |
index 580d2ed..503c813 100644
|
|
Jakub Ruzicka |
fcc2a65 |
--- a/novaclient/tests/v1_1/test_shell.py
|
|
Jakub Ruzicka |
fcc2a65 |
+++ b/novaclient/tests/v1_1/test_shell.py
|
|
Jakub Ruzicka |
fcc2a65 |
@@ -1918,6 +1918,11 @@ class ShellTest(utils.TestCase):
|
|
Jakub Ruzicka |
fcc2a65 |
mock_system.assert_called_with("ssh -6 -p22 "
|
|
Jakub Ruzicka |
fcc2a65 |
"root@2607:f0d0:1002::4 -1")
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
+ def test_delete_multi_server_groups(self):
|
|
Jakub Ruzicka |
fcc2a65 |
+ self.run_command('server-group-delete 12345 56789')
|
|
Jakub Ruzicka |
fcc2a65 |
+ self.assert_called('DELETE', '/os-server-groups/56789')
|
|
Jakub Ruzicka |
fcc2a65 |
+ self.assert_called('DELETE', '/os-server-groups/12345', pos=-2)
|
|
Jakub Ruzicka |
fcc2a65 |
+
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
class GetSecgroupTest(utils.TestCase):
|
|
Jakub Ruzicka |
fcc2a65 |
def test_with_integer(self):
|
|
Jakub Ruzicka |
fcc2a65 |
diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py
|
|
Jakub Ruzicka |
fcc2a65 |
index c1754c9..3bf12f6 100644
|
|
Jakub Ruzicka |
fcc2a65 |
--- a/novaclient/v1_1/shell.py
|
|
Jakub Ruzicka |
fcc2a65 |
+++ b/novaclient/v1_1/shell.py
|
|
Jakub Ruzicka |
fcc2a65 |
@@ -3537,12 +3537,23 @@ def do_server_group_create(cs, args):
|
|
Jakub Ruzicka |
fcc2a65 |
_print_server_group_details([server_group])
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
-@utils.arg('id', metavar='<id>',
|
|
Jakub Ruzicka |
fcc2a65 |
- help="Unique ID of the server group to delete")
|
|
Jakub Ruzicka |
fcc2a65 |
+@utils.arg('id', metavar='<id>', nargs='+',
|
|
Jakub Ruzicka |
fcc2a65 |
+ help="Unique ID(s) of the server group to delete")
|
|
Jakub Ruzicka |
fcc2a65 |
def do_server_group_delete(cs, args):
|
|
Jakub Ruzicka |
fcc2a65 |
- """Delete a specific server group."""
|
|
Jakub Ruzicka |
fcc2a65 |
- cs.server_groups.delete(args.id)
|
|
Jakub Ruzicka |
fcc2a65 |
- print("Instance group %s has been successfully deleted." % args.id)
|
|
Jakub Ruzicka |
fcc2a65 |
+ """Delete specific server group(s)."""
|
|
Jakub Ruzicka |
fcc2a65 |
+ failure_count = 0
|
|
Jakub Ruzicka |
fcc2a65 |
+
|
|
Jakub Ruzicka |
fcc2a65 |
+ for sg in args.id:
|
|
Jakub Ruzicka |
fcc2a65 |
+ try:
|
|
Jakub Ruzicka |
fcc2a65 |
+ cs.server_groups.delete(sg)
|
|
Jakub Ruzicka |
fcc2a65 |
+ print(_("Server group %s has been successfully deleted.") % sg)
|
|
Jakub Ruzicka |
fcc2a65 |
+ except Exception as e:
|
|
Jakub Ruzicka |
fcc2a65 |
+ failure_count += 1
|
|
Jakub Ruzicka |
fcc2a65 |
+ print(_("Delete for server group %(sg)s failed: %(e)s") %
|
|
Jakub Ruzicka |
fcc2a65 |
+ {'sg': sg, 'e': e})
|
|
Jakub Ruzicka |
fcc2a65 |
+ if failure_count == len(args.id):
|
|
Jakub Ruzicka |
fcc2a65 |
+ raise exceptions.CommandError(_("Unable to delete any of the "
|
|
Jakub Ruzicka |
fcc2a65 |
+ "specified server groups."))
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
|
|
Jakub Ruzicka |
fcc2a65 |
@utils.arg('id', metavar='<id>',
|