summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-05-30 03:48:37 +0000
committerGerrit Code Review <review@openstack.org>2016-05-30 03:48:37 +0000
commit416550fd3db4f215406b01da3e073593f34de69a (patch)
tree42e5d6f47b328e22dd34e7de6d8dfeb134df6597
parent6e3f717b7cc77fec2fcc5e8355f6b1fa9e9f2328 (diff)
parent1a7284f63ad13f41c6ff4295d69f065310242524 (diff)
downloadpython-openstackclient-416550fd3db4f215406b01da3e073593f34de69a.tar.gz
Merge "Support to set server state"
-rw-r--r--doc/source/command-objects/server.rst5
-rw-r--r--openstackclient/compute/v2/server.py9
-rw-r--r--openstackclient/tests/compute/v2/test_server.py61
-rw-r--r--releasenotes/notes/server-set-state-214b12ec2161de4d.yaml6
4 files changed, 81 insertions, 0 deletions
diff --git a/doc/source/command-objects/server.rst b/doc/source/command-objects/server.rst
index bf972986..f11355b6 100644
--- a/doc/source/command-objects/server.rst
+++ b/doc/source/command-objects/server.rst
@@ -559,6 +559,7 @@ Set server properties
--property <key=value>
[--property <key=value>] ...
--root-password
+ --state <state>
<server>
.. option:: --name <new-name>
@@ -574,6 +575,10 @@ Set server properties
Property to add/change for this server
(repeat option to set multiple properties)
+.. option:: --state <state>
+
+ New server state (valid value: active, error)
+
.. describe:: <server>
Server (name or ID)
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 781ccb1b..2312575a 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -1370,6 +1370,12 @@ class SetServer(command.Command):
help=_('Property to add/change for this server '
'(repeat option to set multiple properties)'),
)
+ parser.add_argument(
+ '--state',
+ metavar='<state>',
+ choices=['active', 'error'],
+ help=_('New server state (valid value: active, error)'),
+ )
return parser
def take_action(self, parsed_args):
@@ -1389,6 +1395,9 @@ class SetServer(command.Command):
parsed_args.property,
)
+ if parsed_args.state:
+ server.reset_state(state=parsed_args.state)
+
if parsed_args.root_password:
p1 = getpass.getpass(_('New password: '))
p2 = getpass.getpass(_('Retype new password: '))
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py
index 7d184b3a..2dfdb68a 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/compute/v2/test_server.py
@@ -1213,6 +1213,67 @@ class TestServerResume(TestServer):
self.run_method_with_servers('resume', 3)
+class TestServerSet(TestServer):
+
+ def setUp(self):
+ super(TestServerSet, self).setUp()
+
+ self.methods = {
+ 'update': None,
+ 'reset_state': None,
+ 'change_password': None,
+ }
+
+ self.fake_servers = self.setup_servers_mock(2)
+
+ # Get the command object to test
+ self.cmd = server.SetServer(self.app, None)
+
+ def test_server_set_no_option(self):
+ arglist = [
+ 'foo_vm'
+ ]
+ verifylist = [
+ ('server', 'foo_vm')
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ result = self.cmd.take_action(parsed_args)
+ self.assertNotCalled(self.fake_servers[0].update)
+ self.assertNotCalled(self.fake_servers[0].reset_state)
+ self.assertNotCalled(self.fake_servers[0].change_password)
+ self.assertNotCalled(self.servers_mock.set_meta)
+ self.assertIsNone(result)
+
+ def test_server_set_with_state(self):
+ for index, state in enumerate(['active', 'error']):
+ arglist = [
+ '--state', state,
+ 'foo_vm',
+ ]
+ verifylist = [
+ ('state', state),
+ ('server', 'foo_vm'),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ result = self.cmd.take_action(parsed_args)
+ self.fake_servers[index].reset_state.assert_called_once_with(
+ state=state)
+ self.assertIsNone(result)
+
+ def test_server_set_with_invalid_state(self):
+ arglist = [
+ '--state', 'foo_state',
+ 'foo_vm',
+ ]
+ verifylist = [
+ ('state', 'foo_state'),
+ ('server', 'foo_vm'),
+ ]
+ self.assertRaises(utils.ParserException,
+ self.check_parser,
+ self.cmd, arglist, verifylist)
+
+
class TestServerShelve(TestServer):
def setUp(self):
diff --git a/releasenotes/notes/server-set-state-214b12ec2161de4d.yaml b/releasenotes/notes/server-set-state-214b12ec2161de4d.yaml
new file mode 100644
index 00000000..a48384a8
--- /dev/null
+++ b/releasenotes/notes/server-set-state-214b12ec2161de4d.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Add ``--state`` option to ``server set`` command to set the server to
+ active or error state.
+ [Blueprint `server-reset-state <https://blueprints.launchpad.net/python-openstackclient/+spec/server-reset-state>`_]