Skip to content

Commit c8e4a14

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add --reason for disable service"
2 parents e0d5864 + b711c3a commit c8e4a14

4 files changed

Lines changed: 54 additions & 9 deletions

File tree

doc/source/command-objects/compute-service.rst

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,24 @@ Set service command
5050
.. program:: compute service set
5151
.. code:: bash
5252
53-
os compute service list
53+
os compute service set
5454
[--enable | --disable]
55+
[--disable-reason <reason>]
5556
<host> <service>
5657
5758
.. _compute-service-set:
58-
.. describe:: --enable
59+
.. option:: --enable
5960

6061
Enable service (default)
6162

62-
.. describe:: --disable
63+
.. option:: --disable
6364

6465
Disable service
6566

67+
.. option:: --disable-reason <reason>
68+
69+
Reason for disabling the service (in quotes)
70+
6671
.. describe:: <host>
6772

6873
Name of host

openstackclient/compute/v2/service.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,24 @@ def get_parser(self, prog_name):
9595
dest="enabled",
9696
help="Disable a service",
9797
action="store_false")
98+
parser.add_argument(
99+
"--disable-reason",
100+
default=None,
101+
metavar="<reason>",
102+
help="Reason for disabling the service (in quotas)"
103+
)
98104
return parser
99105

100106
def take_action(self, parsed_args):
101107
compute_client = self.app.client_manager.compute
102-
103-
if parsed_args.enabled:
104-
action = compute_client.services.enable
108+
cs = compute_client.services
109+
110+
if not parsed_args.enabled:
111+
if parsed_args.disable_reason:
112+
cs.disable_log_reason(parsed_args.host,
113+
parsed_args.service,
114+
parsed_args.disable_reason)
115+
else:
116+
cs.disable(parsed_args.host, parsed_args.service)
105117
else:
106-
action = compute_client.services.disable
107-
108-
action(parsed_args.host, parsed_args.service)
118+
cs.enable(parsed_args.host, parsed_args.service)

openstackclient/tests/compute/v2/test_service.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,29 @@ def test_service_set_disable(self):
153153
compute_fakes.service_binary,
154154
)
155155
self.assertIsNone(result)
156+
157+
def test_service_set_disable_with_reason(self):
158+
reason = 'earthquake'
159+
arglist = [
160+
compute_fakes.service_host,
161+
compute_fakes.service_binary,
162+
'--disable',
163+
'--disable-reason',
164+
reason
165+
]
166+
verifylist = [
167+
('host', compute_fakes.service_host),
168+
('service', compute_fakes.service_binary),
169+
('enabled', False),
170+
('disable_reason', reason)
171+
]
172+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
173+
174+
result = self.cmd.take_action(parsed_args)
175+
176+
self.service_mock.disable_log_reason.assert_called_with(
177+
compute_fakes.service_host,
178+
compute_fakes.service_binary,
179+
reason
180+
)
181+
self.assertIsNone(result)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
features:
3+
- |
4+
Add support for the ``--disable-reason`` of ``service set`` command

0 commit comments

Comments
 (0)