Skip to content

Commit a15e474

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Add 'openstack server resize (confirm|revert)' commands"
2 parents 8ef2602 + 7561e06 commit a15e474

4 files changed

Lines changed: 149 additions & 2 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2226,11 +2226,66 @@ def _show_progress(progress):
22262226
self.app.stdout.write(_('Error resizing server\n'))
22272227
raise SystemExit
22282228
elif parsed_args.confirm:
2229+
self.log.warning(_(
2230+
"The --confirm option has been deprecated. Please use the "
2231+
"'openstack server resize confirm' command instead."))
22292232
compute_client.servers.confirm_resize(server)
22302233
elif parsed_args.revert:
2234+
self.log.warning(_(
2235+
"The --revert option has been deprecated. Please use the "
2236+
"'openstack server resize revert' command instead."))
22312237
compute_client.servers.revert_resize(server)
22322238

22332239

2240+
class ResizeConfirm(command.Command):
2241+
_description = _("""Confirm server resize.
2242+
2243+
Confirm (verify) success of resize operation and release the old server.""")
2244+
2245+
def get_parser(self, prog_name):
2246+
parser = super(ResizeConfirm, self).get_parser(prog_name)
2247+
parser.add_argument(
2248+
'server',
2249+
metavar='<server>',
2250+
help=_('Server (name or ID)'),
2251+
)
2252+
return parser
2253+
2254+
def take_action(self, parsed_args):
2255+
2256+
compute_client = self.app.client_manager.compute
2257+
server = utils.find_resource(
2258+
compute_client.servers,
2259+
parsed_args.server,
2260+
)
2261+
server.confirm_resize()
2262+
2263+
2264+
class ResizeRevert(command.Command):
2265+
_description = _("""Revert server resize.
2266+
2267+
Revert the resize operation. Release the new server and restart the old
2268+
one.""")
2269+
2270+
def get_parser(self, prog_name):
2271+
parser = super(ResizeRevert, self).get_parser(prog_name)
2272+
parser.add_argument(
2273+
'server',
2274+
metavar='<server>',
2275+
help=_('Server (name or ID)'),
2276+
)
2277+
return parser
2278+
2279+
def take_action(self, parsed_args):
2280+
2281+
compute_client = self.app.client_manager.compute
2282+
server = utils.find_resource(
2283+
compute_client.servers,
2284+
parsed_args.server,
2285+
)
2286+
server.revert_resize()
2287+
2288+
22342289
class RestoreServer(command.Command):
22352290
_description = _("Restore server(s)")
22362291

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4054,13 +4054,18 @@ def test_server_resize_confirm(self):
40544054
]
40554055
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
40564056

4057-
result = self.cmd.take_action(parsed_args)
4057+
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
4058+
result = self.cmd.take_action(parsed_args)
40584059

40594060
self.servers_mock.get.assert_called_with(self.server.id)
40604061
self.assertNotCalled(self.servers_mock.resize)
40614062
self.servers_mock.confirm_resize.assert_called_with(self.server)
40624063
self.assertNotCalled(self.servers_mock.revert_resize)
40634064
self.assertIsNone(result)
4065+
# A warning should have been logged for using --confirm.
4066+
mock_warning.assert_called_once()
4067+
self.assertIn('The --confirm option has been deprecated.',
4068+
six.text_type(mock_warning.call_args[0][0]))
40644069

40654070
def test_server_resize_revert(self):
40664071
arglist = [
@@ -4074,13 +4079,18 @@ def test_server_resize_revert(self):
40744079
]
40754080
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
40764081

4077-
result = self.cmd.take_action(parsed_args)
4082+
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
4083+
result = self.cmd.take_action(parsed_args)
40784084

40794085
self.servers_mock.get.assert_called_with(self.server.id)
40804086
self.assertNotCalled(self.servers_mock.resize)
40814087
self.assertNotCalled(self.servers_mock.confirm_resize)
40824088
self.servers_mock.revert_resize.assert_called_with(self.server)
40834089
self.assertIsNone(result)
4090+
# A warning should have been logged for using --revert.
4091+
mock_warning.assert_called_once()
4092+
self.assertIn('The --revert option has been deprecated.',
4093+
six.text_type(mock_warning.call_args[0][0]))
40844094

40854095
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
40864096
def test_server_resize_with_wait_ok(self, mock_wait_for_status):
@@ -4161,6 +4171,74 @@ def test_server_resize_with_wait_fails(self, mock_wait_for_status):
41614171
)
41624172

41634173

4174+
class TestServerResizeConfirm(TestServer):
4175+
4176+
def setUp(self):
4177+
super(TestServerResizeConfirm, self).setUp()
4178+
4179+
methods = {
4180+
'confirm_resize': None,
4181+
}
4182+
self.server = compute_fakes.FakeServer.create_one_server(
4183+
methods=methods)
4184+
4185+
# This is the return value for utils.find_resource()
4186+
self.servers_mock.get.return_value = self.server
4187+
4188+
self.servers_mock.confirm_resize.return_value = None
4189+
4190+
# Get the command object to test
4191+
self.cmd = server.ResizeConfirm(self.app, None)
4192+
4193+
def test_resize_confirm(self):
4194+
arglist = [
4195+
self.server.id,
4196+
]
4197+
verifylist = [
4198+
('server', self.server.id),
4199+
]
4200+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
4201+
4202+
self.cmd.take_action(parsed_args)
4203+
4204+
self.servers_mock.get.assert_called_with(self.server.id)
4205+
self.server.confirm_resize.assert_called_with()
4206+
4207+
4208+
class TestServerResizeRevert(TestServer):
4209+
4210+
def setUp(self):
4211+
super(TestServerResizeRevert, self).setUp()
4212+
4213+
methods = {
4214+
'revert_resize': None,
4215+
}
4216+
self.server = compute_fakes.FakeServer.create_one_server(
4217+
methods=methods)
4218+
4219+
# This is the return value for utils.find_resource()
4220+
self.servers_mock.get.return_value = self.server
4221+
4222+
self.servers_mock.revert_resize.return_value = None
4223+
4224+
# Get the command object to test
4225+
self.cmd = server.ResizeRevert(self.app, None)
4226+
4227+
def test_resize_revert(self):
4228+
arglist = [
4229+
self.server.id,
4230+
]
4231+
verifylist = [
4232+
('server', self.server.id),
4233+
]
4234+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
4235+
4236+
self.cmd.take_action(parsed_args)
4237+
4238+
self.servers_mock.get.assert_called_with(self.server.id)
4239+
self.server.revert_resize.assert_called_with()
4240+
4241+
41644242
class TestServerRestore(TestServer):
41654243

41664244
def setUp(self):
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
features:
3+
- |
4+
Add ``server resize confirm`` and ``server resize revert`` commands.
5+
These replace the now deprecated ``--confirm`` and ``--revert``
6+
options to the ``server resize`` commands, respectively.
7+
deprecations:
8+
- |
9+
Deprecate the ``--confirm`` and ``--revert`` options for the
10+
``server resize`` command. They have been replaced with the
11+
``server resize confirm`` and `server resize revert`` commands,
12+
respectively.

setup.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ openstack.compute.v2 =
119119
server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume
120120
server_rescue = openstackclient.compute.v2.server:RescueServer
121121
server_resize = openstackclient.compute.v2.server:ResizeServer
122+
server_resize_confirm = openstackclient.compute.v2.server:ResizeConfirm
123+
server_resize_revert = openstackclient.compute.v2.server:ResizeRevert
122124
server_restore = openstackclient.compute.v2.server:RestoreServer
123125
server_resume = openstackclient.compute.v2.server:ResumeServer
124126
server_set = openstackclient.compute.v2.server:SetServer

0 commit comments

Comments
 (0)