volume: Add v3-specific volume service module · openstack/python-openstackclient@1ee3ef3 · GitHub
Skip to content

Commit 1ee3ef3

Browse files
committed
volume: Add v3-specific volume service module
Ease migration. Change-Id: Ibcdb157ba1bf370c63320d3a1afcf3c400370624 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
1 parent 00f4cf9 commit 1ee3ef3

3 files changed

Lines changed: 230 additions & 3 deletions

File tree

openstackclient/tests/unit/volume/v3/test_service.py

Lines changed: 149 additions & 0 deletions

openstackclient/volume/v3/service.py

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,36 @@
1515
"""Service action implementations"""
1616

1717
from cinderclient import api_versions
18+
from osc_lib.command import command
19+
from osc_lib import exceptions
1820
from osc_lib import utils
1921

20-
from openstackclient.volume.v2 import service as service_v2
22+
from openstackclient.i18n import _
2123

2224

23-
class ListService(service_v2.ListService):
25+
class ListService(command.Lister):
26+
_description = _("List service command")
27+
28+
def get_parser(self, prog_name):
29+
parser = super().get_parser(prog_name)
30+
parser.add_argument(
31+
"--host",
32+
metavar="<host>",
33+
help=_("List services on specified host (name only)"),
34+
)
35+
parser.add_argument(
36+
"--service",
37+
metavar="<service>",
38+
help=_("List only specified service (name only)"),
39+
)
40+
parser.add_argument(
41+
"--long",
42+
action="store_true",
43+
default=False,
44+
help=_("List additional fields in output"),
45+
)
46+
return parser
47+
2448
def take_action(self, parsed_args):
2549
service_client = self.app.client_manager.volume
2650

@@ -53,3 +77,57 @@ def take_action(self, parsed_args):
5377
for s in data
5478
),
5579
)
80+
81+
82+
class SetService(command.Command):
83+
_description = _("Set volume service properties")
84+
85+
def get_parser(self, prog_name):
86+
parser = super().get_parser(prog_name)
87+
parser.add_argument("host", metavar="<host>", help=_("Name of host"))
88+
parser.add_argument(
89+
"service",
90+
metavar="<service>",
91+
help=_("Name of service (Binary name)"),
92+
)
93+
enabled_group = parser.add_mutually_exclusive_group()
94+
enabled_group.add_argument(
95+
"--enable", action="store_true", help=_("Enable volume service")
96+
)
97+
enabled_group.add_argument(
98+
"--disable", action="store_true", help=_("Disable volume service")
99+
)
100+
parser.add_argument(
101+
"--disable-reason",
102+
metavar="<reason>",
103+
help=_(
104+
"Reason for disabling the service "
105+
"(should be used with --disable option)"
106+
),
107+
)
108+
return parser
109+
110+
def take_action(self, parsed_args):
111+
if parsed_args.disable_reason and not parsed_args.disable:
112+
msg = _(
113+
"Cannot specify option --disable-reason without "
114+
"--disable specified."
115+
)
116+
raise exceptions.CommandError(msg)
117+
118+
service_client = self.app.client_manager.volume
119+
if parsed_args.enable:
120+
service_client.services.enable(
121+
parsed_args.host, parsed_args.service
122+
)
123+
if parsed_args.disable:
124+
if parsed_args.disable_reason:
125+
service_client.services.disable_log_reason(
126+
parsed_args.host,
127+
parsed_args.service,
128+
parsed_args.disable_reason,
129+
)
130+
else:
131+
service_client.services.disable(
132+
parsed_args.host, parsed_args.service
133+
)

setup.cfg

Lines changed: 1 addition & 1 deletion

0 commit comments

Comments
 (0)