diff options
| -rw-r--r-- | novaclient/tests/v1_1/fakes.py | 3 | ||||
| -rw-r--r-- | novaclient/tests/v1_1/test_shell.py | 14 | ||||
| -rw-r--r-- | novaclient/v1_1/shell.py | 17 | ||||
| -rw-r--r-- | novaclient/v3/shell.py | 17 |
4 files changed, 47 insertions, 4 deletions
diff --git a/novaclient/tests/v1_1/fakes.py b/novaclient/tests/v1_1/fakes.py index d387e17c..f61a02e9 100644 --- a/novaclient/tests/v1_1/fakes.py +++ b/novaclient/tests/v1_1/fakes.py @@ -641,6 +641,9 @@ class FakeHTTPClient(base_client.HTTPClient): raise AssertionError("Unexpected server action: %s" % action) return (resp, _headers, _body) + def post_servers_5678_action(self, body, **kw): + return self.post_servers_1234_action(body, **kw) + # # Cloudpipe # diff --git a/novaclient/tests/v1_1/test_shell.py b/novaclient/tests/v1_1/test_shell.py index 262fd666..1c8d1298 100644 --- a/novaclient/tests/v1_1/test_shell.py +++ b/novaclient/tests/v1_1/test_shell.py @@ -1366,6 +1366,20 @@ class ShellTest(utils.TestCase): self.assert_called('POST', '/servers/1234/action', {'os-resetState': {'state': 'active'}}) + def test_reset_state_multiple(self): + self.run_command('reset-state sample-server sample-server2') + self.assert_called('POST', '/servers/1234/action', + {'os-resetState': {'state': 'error'}}, pos=-4) + self.assert_called('POST', '/servers/5678/action', + {'os-resetState': {'state': 'error'}}, pos=-1) + + def test_reset_state_active_multiple(self): + self.run_command('reset-state --active sample-server sample-server2') + self.assert_called('POST', '/servers/1234/action', + {'os-resetState': {'state': 'active'}}, pos=-4) + self.assert_called('POST', '/servers/5678/action', + {'os-resetState': {'state': 'active'}}, pos=-1) + def test_reset_network(self): self.run_command('reset-network sample-server') self.assert_called('POST', '/servers/1234/action', diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py index de2b34ed..24cd93fe 100644 --- a/novaclient/v1_1/shell.py +++ b/novaclient/v1_1/shell.py @@ -2865,14 +2865,27 @@ def do_live_migration(cs, args): args.disk_over_commit) -@utils.arg('server', metavar='<server>', help=_('Name or ID of server.')) +@utils.arg('server', metavar='<server>', nargs='+', + help=_('Name or ID of server(s).')) @utils.arg('--active', action='store_const', dest='state', default='error', const='active', help=_('Request the server be reset to "active" state instead ' 'of "error" state (the default).')) def do_reset_state(cs, args): """Reset the state of a server.""" - _find_server(cs, args.server).reset_state(args.state) + failure_flag = False + + for server in args.server: + try: + _find_server(cs, server).reset_state(args.state) + except Exception as e: + failure_flag = True + msg = "Reset state for server %s failed: %s" % (server, e) + print(msg) + + if failure_flag: + msg = "Unable to reset the state for the specified server(s)." + raise exceptions.CommandError(msg) @utils.arg('server', metavar='<server>', help=_('Name or ID of server.')) diff --git a/novaclient/v3/shell.py b/novaclient/v3/shell.py index f24e2917..9f4b13bd 100644 --- a/novaclient/v3/shell.py +++ b/novaclient/v3/shell.py @@ -2382,14 +2382,27 @@ def do_live_migration(cs, args): args.disk_over_commit) -@utils.arg('server', metavar='<server>', help='Name or ID of server.') +@utils.arg('server', metavar='<server>', nargs='+', + help='Name or ID of server(s).') @utils.arg('--active', action='store_const', dest='state', default='error', const='active', help='Request the server be reset to "active" state instead ' 'of "error" state (the default).') def do_reset_state(cs, args): """Reset the state of a server.""" - _find_server(cs, args.server).reset_state(args.state) + failure_flag = False + + for server in args.server: + try: + _find_server(cs, server).reset_state(args.state) + except Exception as e: + failure_flag = True + msg = "Reset state for server %s failed: %s" % (server, e) + print(msg) + + if failure_flag: + msg = "Unable to reset the state for the specified server(s)." + raise exceptions.CommandError(msg) @utils.arg('server', metavar='<server>', help='Name or ID of server.') |
