Skip to content

Commit 7561e06

Browse files
stephenfinDean Troyer
authored andcommitted
Add 'openstack server resize (confirm|revert)' commands
These are currently exposed as flags on the 'openstack server resize' command but they are in fact operation and should be exposed as commands in their own right. The old flag-based variants are deprecated for removal in 4.0. Change-Id: I733796d3bda6c3755a3d3548bbe695abb474a6a0 Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
1 parent 57dec52 commit 7561e06

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
@@ -2096,11 +2096,66 @@ def _show_progress(progress):
20962096
self.app.stdout.write(_('Error resizing server\n'))
20972097
raise SystemExit
20982098
elif parsed_args.confirm:
2099+
self.log.warning(_(
2100+
"The --confirm option has been deprecated. Please use the "
2101+
"'openstack server resize confirm' command instead."))
20992102
compute_client.servers.confirm_resize(server)
21002103
elif parsed_args.revert:
2104+
self.log.warning(_(
2105+
"The --revert option has been deprecated. Please use the "
2106+
"'openstack server resize revert' command instead."))
21012107
compute_client.servers.revert_resize(server)
21022108

21032109

2110+
class ResizeConfirm(command.Command):
2111+
_description = _("""Confirm server resize.
2112+
2113+
Confirm (verify) success of resize operation and release the old server.""")
2114+
2115+
def get_parser(self, prog_name):
2116+
parser = super(ResizeConfirm, self).get_parser(prog_name)
2117+
parser.add_argument(
2118+
'server',
2119+
metavar='<server>',
2120+
help=_('Server (name or ID)'),
2121+
)
2122+
return parser
2123+
2124+
def take_action(self, parsed_args):
2125+
2126+
compute_client = self.app.client_manager.compute
2127+
server = utils.find_resource(
2128+
compute_client.servers,
2129+
parsed_args.server,
2130+
)
2131+
server.confirm_resize()
2132+
2133+
2134+
class ResizeRevert(command.Command):
2135+
_description = _("""Revert server resize.
2136+
2137+
Revert the resize operation. Release the new server and restart the old
2138+
one.""")
2139+
2140+
def get_parser(self, prog_name):
2141+
parser = super(ResizeRevert, self).get_parser(prog_name)
2142+
parser.add_argument(
2143+
'server',
2144+
metavar='<server>',
2145+
help=_('Server (name or ID)'),
2146+
)
2147+
return parser
2148+
2149+
def take_action(self, parsed_args):
2150+
2151+
compute_client = self.app.client_manager.compute
2152+
server = utils.find_resource(
2153+
compute_client.servers,
2154+
parsed_args.server,
2155+
)
2156+
server.revert_resize()
2157+
2158+
21042159
class RestoreServer(command.Command):
21052160
_description = _("Restore server(s)")
21062161

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

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

3606-
result = self.cmd.take_action(parsed_args)
3606+
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
3607+
result = self.cmd.take_action(parsed_args)
36073608

36083609
self.servers_mock.get.assert_called_with(self.server.id)
36093610
self.assertNotCalled(self.servers_mock.resize)
36103611
self.servers_mock.confirm_resize.assert_called_with(self.server)
36113612
self.assertNotCalled(self.servers_mock.revert_resize)
36123613
self.assertIsNone(result)
3614+
# A warning should have been logged for using --confirm.
3615+
mock_warning.assert_called_once()
3616+
self.assertIn('The --confirm option has been deprecated.',
3617+
six.text_type(mock_warning.call_args[0][0]))
36133618

36143619
def test_server_resize_revert(self):
36153620
arglist = [
@@ -3623,13 +3628,18 @@ def test_server_resize_revert(self):
36233628
]
36243629
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
36253630

3626-
result = self.cmd.take_action(parsed_args)
3631+
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
3632+
result = self.cmd.take_action(parsed_args)
36273633

36283634
self.servers_mock.get.assert_called_with(self.server.id)
36293635
self.assertNotCalled(self.servers_mock.resize)
36303636
self.assertNotCalled(self.servers_mock.confirm_resize)
36313637
self.servers_mock.revert_resize.assert_called_with(self.server)
36323638
self.assertIsNone(result)
3639+
# A warning should have been logged for using --revert.
3640+
mock_warning.assert_called_once()
3641+
self.assertIn('The --revert option has been deprecated.',
3642+
six.text_type(mock_warning.call_args[0][0]))
36333643

36343644
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
36353645
def test_server_resize_with_wait_ok(self, mock_wait_for_status):
@@ -3710,6 +3720,74 @@ def test_server_resize_with_wait_fails(self, mock_wait_for_status):
37103720
)
37113721

37123722

3723+
class TestServerResizeConfirm(TestServer):
3724+
3725+
def setUp(self):
3726+
super(TestServerResizeConfirm, self).setUp()
3727+
3728+
methods = {
3729+
'confirm_resize': None,
3730+
}
3731+
self.server = compute_fakes.FakeServer.create_one_server(
3732+
methods=methods)
3733+
3734+
# This is the return value for utils.find_resource()
3735+
self.servers_mock.get.return_value = self.server
3736+
3737+
self.servers_mock.confirm_resize.return_value = None
3738+
3739+
# Get the command object to test
3740+
self.cmd = server.ResizeConfirm(self.app, None)
3741+
3742+
def test_resize_confirm(self):
3743+
arglist = [
3744+
self.server.id,
3745+
]
3746+
verifylist = [
3747+
('server', self.server.id),
3748+
]
3749+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
3750+
3751+
self.cmd.take_action(parsed_args)
3752+
3753+
self.servers_mock.get.assert_called_with(self.server.id)
3754+
self.server.confirm_resize.assert_called_with()
3755+
3756+
3757+
class TestServerResizeRevert(TestServer):
3758+
3759+
def setUp(self):
3760+
super(TestServerResizeRevert, self).setUp()
3761+
3762+
methods = {
3763+
'revert_resize': None,
3764+
}
3765+
self.server = compute_fakes.FakeServer.create_one_server(
3766+
methods=methods)
3767+
3768+
# This is the return value for utils.find_resource()
3769+
self.servers_mock.get.return_value = self.server
3770+
3771+
self.servers_mock.revert_resize.return_value = None
3772+
3773+
# Get the command object to test
3774+
self.cmd = server.ResizeRevert(self.app, None)
3775+
3776+
def test_resize_revert(self):
3777+
arglist = [
3778+
self.server.id,
3779+
]
3780+
verifylist = [
3781+
('server', self.server.id),
3782+
]
3783+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
3784+
3785+
self.cmd.take_action(parsed_args)
3786+
3787+
self.servers_mock.get.assert_called_with(self.server.id)
3788+
self.server.revert_resize.assert_called_with()
3789+
3790+
37133791
class TestServerRestore(TestServer):
37143792

37153793
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
@@ -124,6 +124,8 @@ openstack.compute.v2 =
124124
server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume
125125
server_rescue = openstackclient.compute.v2.server:RescueServer
126126
server_resize = openstackclient.compute.v2.server:ResizeServer
127+
server_resize_confirm = openstackclient.compute.v2.server:ResizeConfirm
128+
server_resize_revert = openstackclient.compute.v2.server:ResizeRevert
127129
server_restore = openstackclient.compute.v2.server:RestoreServer
128130
server_resume = openstackclient.compute.v2.server:ResumeServer
129131
server_set = openstackclient.compute.v2.server:SetServer

0 commit comments

Comments
 (0)