summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--novaclient/tests/v1_1/fakes.py3
-rw-r--r--novaclient/tests/v1_1/test_shell.py14
-rw-r--r--novaclient/v1_1/shell.py17
-rw-r--r--novaclient/v3/shell.py17
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.')