Skip to content

Commit 20ad61b

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add "volume service set" command"
2 parents 3b75c9a + 81431d2 commit 20ad61b

7 files changed

Lines changed: 442 additions & 0 deletions

File tree

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,37 @@ List volume service
2929
.. option:: --long
3030

3131
List additional fields in output
32+
33+
volume service set
34+
------------------
35+
36+
Set volume service properties
37+
38+
.. program:: volume service set
39+
.. code:: bash
40+
41+
os volume service set
42+
[--enable | --disable]
43+
[--disable-reason <reason>]
44+
<host> <service>
45+
46+
.. option:: --enable
47+
48+
Enable volume service
49+
50+
.. option:: --disable
51+
52+
Disable volume service
53+
54+
.. option:: --disable-reason <reason>
55+
56+
Reason for disabling the service (should be used with --disable option)
57+
58+
.. _volume-service-set:
59+
.. describe:: <host>
60+
61+
Name of host
62+
63+
.. describe:: <service>
64+
65+
Name of service (Binary name)

openstackclient/tests/volume/v1/test_service.py

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# under the License.
1313
#
1414

15+
from osc_lib import exceptions
1516

1617
from openstackclient.tests.volume.v1 import fakes as service_fakes
1718
from openstackclient.volume.v1 import service
@@ -139,3 +140,147 @@ def test_service_list_with_long_option(self):
139140
self.services.host,
140141
self.services.binary,
141142
)
143+
144+
145+
class TestServiceSet(TestService):
146+
147+
service = service_fakes.FakeService.create_one_service()
148+
149+
def setUp(self):
150+
super(TestServiceSet, self).setUp()
151+
152+
self.service_mock.enable.return_value = self.service
153+
self.service_mock.disable.return_value = self.service
154+
self.service_mock.disable_log_reason.return_value = self.service
155+
156+
self.cmd = service.SetService(self.app, None)
157+
158+
def test_service_set_nothing(self):
159+
arglist = [
160+
self.service.host,
161+
self.service.binary,
162+
]
163+
verifylist = [
164+
('host', self.service.host),
165+
('service', self.service.binary),
166+
]
167+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
168+
result = self.cmd.take_action(parsed_args)
169+
170+
self.service_mock.enable.assert_not_called()
171+
self.service_mock.disable.assert_not_called()
172+
self.service_mock.disable_log_reason.assert_not_called()
173+
self.assertIsNone(result)
174+
175+
def test_service_set_enable(self):
176+
arglist = [
177+
'--enable',
178+
self.service.host,
179+
self.service.binary,
180+
]
181+
verifylist = [
182+
('enable', True),
183+
('host', self.service.host),
184+
('service', self.service.binary),
185+
]
186+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
187+
188+
result = self.cmd.take_action(parsed_args)
189+
190+
self.service_mock.enable.assert_called_with(
191+
self.service.host,
192+
self.service.binary
193+
)
194+
self.service_mock.disable.assert_not_called()
195+
self.service_mock.disable_log_reason.assert_not_called()
196+
self.assertIsNone(result)
197+
198+
def test_service_set_disable(self):
199+
arglist = [
200+
'--disable',
201+
self.service.host,
202+
self.service.binary,
203+
]
204+
verifylist = [
205+
('disable', True),
206+
('host', self.service.host),
207+
('service', self.service.binary),
208+
]
209+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
210+
211+
result = self.cmd.take_action(parsed_args)
212+
213+
self.service_mock.disable.assert_called_with(
214+
self.service.host,
215+
self.service.binary
216+
)
217+
self.service_mock.enable.assert_not_called()
218+
self.service_mock.disable_log_reason.assert_not_called()
219+
self.assertIsNone(result)
220+
221+
def test_service_set_disable_with_reason(self):
222+
reason = 'earthquake'
223+
arglist = [
224+
'--disable',
225+
'--disable-reason', reason,
226+
self.service.host,
227+
self.service.binary,
228+
]
229+
verifylist = [
230+
('disable', True),
231+
('disable_reason', reason),
232+
('host', self.service.host),
233+
('service', self.service.binary),
234+
]
235+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
236+
237+
result = self.cmd.take_action(parsed_args)
238+
239+
self.service_mock.disable_log_reason.assert_called_with(
240+
self.service.host,
241+
self.service.binary,
242+
reason
243+
)
244+
self.assertIsNone(result)
245+
246+
def test_service_set_only_with_disable_reason(self):
247+
reason = 'earthquake'
248+
arglist = [
249+
'--disable-reason', reason,
250+
self.service.host,
251+
self.service.binary,
252+
]
253+
verifylist = [
254+
('disable_reason', reason),
255+
('host', self.service.host),
256+
('service', self.service.binary),
257+
]
258+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
259+
try:
260+
self.cmd.take_action(parsed_args)
261+
self.fail("CommandError should be raised.")
262+
except exceptions.CommandError as e:
263+
self.assertEqual("Cannot specify option --disable-reason without "
264+
"--disable specified.", str(e))
265+
266+
def test_service_set_enable_with_disable_reason(self):
267+
reason = 'earthquake'
268+
arglist = [
269+
'--enable',
270+
'--disable-reason', reason,
271+
self.service.host,
272+
self.service.binary,
273+
]
274+
verifylist = [
275+
('enable', True),
276+
('disable_reason', reason),
277+
('host', self.service.host),
278+
('service', self.service.binary),
279+
]
280+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
281+
try:
282+
self.cmd.take_action(parsed_args)
283+
self.fail("CommandError should be raised.")
284+
except exceptions.CommandError as e:
285+
self.assertEqual("Cannot specify option --disable-reason without "
286+
"--disable specified.", str(e))

openstackclient/tests/volume/v2/test_service.py

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# under the License.
1313
#
1414

15+
from osc_lib import exceptions
1516

1617
from openstackclient.tests.volume.v2 import fakes as service_fakes
1718
from openstackclient.volume.v2 import service
@@ -139,3 +140,147 @@ def test_service_list_with_long_option(self):
139140
self.services.host,
140141
self.services.binary,
141142
)
143+
144+
145+
class TestServiceSet(TestService):
146+
147+
service = service_fakes.FakeService.create_one_service()
148+
149+
def setUp(self):
150+
super(TestServiceSet, self).setUp()
151+
152+
self.service_mock.enable.return_value = self.service
153+
self.service_mock.disable.return_value = self.service
154+
self.service_mock.disable_log_reason.return_value = self.service
155+
156+
self.cmd = service.SetService(self.app, None)
157+
158+
def test_service_set_nothing(self):
159+
arglist = [
160+
self.service.host,
161+
self.service.binary,
162+
]
163+
verifylist = [
164+
('host', self.service.host),
165+
('service', self.service.binary),
166+
]
167+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
168+
result = self.cmd.take_action(parsed_args)
169+
170+
self.service_mock.enable.assert_not_called()
171+
self.service_mock.disable.assert_not_called()
172+
self.service_mock.disable_log_reason.assert_not_called()
173+
self.assertIsNone(result)
174+
175+
def test_service_set_enable(self):
176+
arglist = [
177+
'--enable',
178+
self.service.host,
179+
self.service.binary,
180+
]
181+
verifylist = [
182+
('enable', True),
183+
('host', self.service.host),
184+
('service', self.service.binary),
185+
]
186+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
187+
188+
result = self.cmd.take_action(parsed_args)
189+
190+
self.service_mock.enable.assert_called_with(
191+
self.service.host,
192+
self.service.binary
193+
)
194+
self.service_mock.disable.assert_not_called()
195+
self.service_mock.disable_log_reason.assert_not_called()
196+
self.assertIsNone(result)
197+
198+
def test_service_set_disable(self):
199+
arglist = [
200+
'--disable',
201+
self.service.host,
202+
self.service.binary,
203+
]
204+
verifylist = [
205+
('disable', True),
206+
('host', self.service.host),
207+
('service', self.service.binary),
208+
]
209+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
210+
211+
result = self.cmd.take_action(parsed_args)
212+
213+
self.service_mock.disable.assert_called_with(
214+
self.service.host,
215+
self.service.binary
216+
)
217+
self.service_mock.enable.assert_not_called()
218+
self.service_mock.disable_log_reason.assert_not_called()
219+
self.assertIsNone(result)
220+
221+
def test_service_set_disable_with_reason(self):
222+
reason = 'earthquake'
223+
arglist = [
224+
'--disable',
225+
'--disable-reason', reason,
226+
self.service.host,
227+
self.service.binary,
228+
]
229+
verifylist = [
230+
('disable', True),
231+
('disable_reason', reason),
232+
('host', self.service.host),
233+
('service', self.service.binary),
234+
]
235+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
236+
237+
result = self.cmd.take_action(parsed_args)
238+
239+
self.service_mock.disable_log_reason.assert_called_with(
240+
self.service.host,
241+
self.service.binary,
242+
reason
243+
)
244+
self.assertIsNone(result)
245+
246+
def test_service_set_only_with_disable_reason(self):
247+
reason = 'earthquake'
248+
arglist = [
249+
'--disable-reason', reason,
250+
self.service.host,
251+
self.service.binary,
252+
]
253+
verifylist = [
254+
('disable_reason', reason),
255+
('host', self.service.host),
256+
('service', self.service.binary),
257+
]
258+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
259+
try:
260+
self.cmd.take_action(parsed_args)
261+
self.fail("CommandError should be raised.")
262+
except exceptions.CommandError as e:
263+
self.assertEqual("Cannot specify option --disable-reason without "
264+
"--disable specified.", str(e))
265+
266+
def test_service_set_enable_with_disable_reason(self):
267+
reason = 'earthquake'
268+
arglist = [
269+
'--enable',
270+
'--disable-reason', reason,
271+
self.service.host,
272+
self.service.binary,
273+
]
274+
verifylist = [
275+
('enable', True),
276+
('disable_reason', reason),
277+
('host', self.service.host),
278+
('service', self.service.binary),
279+
]
280+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
281+
try:
282+
self.cmd.take_action(parsed_args)
283+
self.fail("CommandError should be raised.")
284+
except exceptions.CommandError as e:
285+
self.assertEqual("Cannot specify option --disable-reason without "
286+
"--disable specified.", str(e))

0 commit comments

Comments
 (0)