Skip to content

Commit 5d2bd2a

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "compute: limit the service's force down command above 2.10"
2 parents 4ffb3a9 + 956eabe commit 5d2bd2a

2 files changed

Lines changed: 25 additions & 11 deletions

File tree

openstackclient/compute/v2/service.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import logging
1919

20+
from novaclient import api_versions
2021
from osc_lib.command import command
2122
from osc_lib import exceptions
2223
from osc_lib import utils
@@ -192,18 +193,23 @@ def take_action(self, parsed_args):
192193
result += 1
193194

194195
force_down = None
195-
try:
196-
if parsed_args.down:
197-
force_down = True
198-
if parsed_args.up:
199-
force_down = False
200-
if force_down is not None:
196+
if parsed_args.down:
197+
force_down = True
198+
if parsed_args.up:
199+
force_down = False
200+
if force_down is not None:
201+
if compute_client.api_version < api_versions.APIVersion(
202+
'2.11'):
203+
msg = _('--os-compute-api-version 2.11 or later is '
204+
'required')
205+
raise exceptions.CommandError(msg)
206+
try:
201207
cs.force_down(parsed_args.host, parsed_args.service,
202208
force_down=force_down)
203-
except Exception:
204-
state = "down" if force_down else "up"
205-
LOG.error("Failed to set service state to %s", state)
206-
result += 1
209+
except Exception:
210+
state = "down" if force_down else "up"
211+
LOG.error("Failed to set service state to %s", state)
212+
result += 1
207213

208214
if result > 0:
209215
msg = _("Compute service %(service)s of host %(host)s failed to "

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import mock
1717
from mock import call
18-
18+
from novaclient import api_versions
1919
from osc_lib import exceptions
2020

2121
from openstackclient.compute.v2 import service
@@ -340,6 +340,8 @@ def test_service_set_state_up(self):
340340
('service', self.service.binary),
341341
]
342342
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
343+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
344+
'2.11')
343345
result = self.cmd.take_action(parsed_args)
344346
self.service_mock.force_down.assert_called_once_with(
345347
self.service.host, self.service.binary, force_down=False)
@@ -359,6 +361,8 @@ def test_service_set_state_down(self):
359361
('service', self.service.binary),
360362
]
361363
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
364+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
365+
'2.11')
362366
result = self.cmd.take_action(parsed_args)
363367
self.service_mock.force_down.assert_called_once_with(
364368
self.service.host, self.service.binary, force_down=True)
@@ -380,6 +384,8 @@ def test_service_set_enable_and_state_down(self):
380384
('service', self.service.binary),
381385
]
382386
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
387+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
388+
'2.11')
383389
result = self.cmd.take_action(parsed_args)
384390
self.service_mock.enable.assert_called_once_with(
385391
self.service.host, self.service.binary)
@@ -402,6 +408,8 @@ def test_service_set_enable_and_state_down_with_exception(self):
402408
]
403409
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
404410

411+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
412+
'2.11')
405413
with mock.patch.object(self.service_mock, 'enable',
406414
side_effect=Exception()):
407415
self.assertRaises(exceptions.CommandError,

0 commit comments

Comments
 (0)