summaryrefslogtreecommitdiff
path: root/openstackclient
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 /openstackclient
parent6e3f717b7cc77fec2fcc5e8355f6b1fa9e9f2328 (diff)
parent1a7284f63ad13f41c6ff4295d69f065310242524 (diff)
downloadpython-openstackclient-416550fd3db4f215406b01da3e073593f34de69a.tar.gz
Merge "Support to set server state"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py9
-rw-r--r--openstackclient/tests/compute/v2/test_server.py61
2 files changed, 70 insertions, 0 deletions
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):