Enable delete multiple server groups in one request

Currently, "nova server-group-delete" can only delete one server
group in one request, this patch was enabling nova client support
removing multiple server groups in one request.

Change-Id: I373151bc27cbe8617e2023ba99f6fb3f0108d592
Closes-Bug: #1302954
This commit is contained in:
Jay Lau 2014-04-06 13:46:53 +08:00
parent b23c97d634
commit afbf4e4be0
3 changed files with 27 additions and 5 deletions

View File

@ -415,6 +415,12 @@ class FakeHTTPClient(base_client.HTTPClient):
fakes.assert_has_keys(body['server'], optional=['name', 'adminPass'])
return (204, {}, body)
def delete_os_server_groups_12345(self, **kw):
return (202, {}, None)
def delete_os_server_groups_56789(self, **kw):
return (202, {}, None)
def delete_servers_1234(self, **kw):
return (202, {}, None)

View File

@ -1967,6 +1967,11 @@ class ShellTest(utils.TestCase):
self.run_command('keypair-delete test')
self.assert_called('DELETE', '/os-keypairs/test')
def test_delete_multi_server_groups(self):
self.run_command('server-group-delete 12345 56789')
self.assert_called('DELETE', '/os-server-groups/56789')
self.assert_called('DELETE', '/os-server-groups/12345', pos=-2)
class GetSecgroupTest(utils.TestCase):
def test_with_integer(self):

View File

@ -3469,12 +3469,23 @@ def do_server_group_create(cs, args):
_print_server_group_details([server_group])
@utils.arg('id', metavar='<id>',
help="Unique ID of the server group to delete")
@utils.arg('id', metavar='<id>', nargs='+',
help="Unique ID(s) of the server group to delete")
def do_server_group_delete(cs, args):
"""Delete a specific server group."""
cs.server_groups.delete(args.id)
print("Instance group %s has been successfully deleted." % args.id)
"""Delete specific server group(s)."""
failure_count = 0
for sg in args.id:
try:
cs.server_groups.delete(sg)
print(_("Server group %s has been successfully deleted.") % sg)
except Exception as e:
failure_count += 1
print(_("Delete for server group %(sg)s failed: %(e)s") %
{'sg': sg, 'e': e})
if failure_count == len(args.id):
raise exceptions.CommandError(_("Unable to delete any of the "
"specified server groups."))
@utils.arg('id', metavar='<id>',