Skip to content

Commit 907dbdb

Browse files
author
Steve Martinelli
committed
Add service v3 support for identity
simple rebase rewrite help for create, remove choices Added create/delete/list/show/set for service Modified setup.py Change-Id: I5ced0e214cc2f7fc70493c66b4381040ce8122fe
1 parent b26bbae commit 907dbdb

File tree

2 files changed

+193
-0
lines changed

2 files changed

+193
-0
lines changed
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
# Copyright 2012-2013 OpenStack, LLC.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
4+
# not use this file except in compliance with the License. You may obtain
5+
# a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12+
# License for the specific language governing permissions and limitations
13+
# under the License.
14+
#
15+
16+
"""Identity v3 Service action implementations"""
17+
18+
import logging
19+
import sys
20+
21+
from cliff import command
22+
from cliff import lister
23+
from cliff import show
24+
25+
from openstackclient.common import utils
26+
27+
28+
class CreateService(show.ShowOne):
29+
"""Create service command"""
30+
31+
api = 'identity'
32+
log = logging.getLogger(__name__ + '.CreateService')
33+
34+
def get_parser(self, prog_name):
35+
parser = super(CreateService, self).get_parser(prog_name)
36+
parser.add_argument(
37+
'type',
38+
metavar='<service-type>',
39+
help='New service type (compute, image, identity, volume, etc)')
40+
parser.add_argument(
41+
'--name',
42+
metavar='<service-name>',
43+
help='New service name')
44+
enable_group = parser.add_mutually_exclusive_group()
45+
enable_group.add_argument(
46+
'--enable',
47+
dest='enabled',
48+
action='store_true',
49+
default=True,
50+
help='Enable user')
51+
enable_group.add_argument(
52+
'--disable',
53+
dest='enabled',
54+
action='store_false',
55+
help='Disable user')
56+
return parser
57+
58+
def take_action(self, parsed_args):
59+
self.log.debug('take_action(%s)' % parsed_args)
60+
identity_client = self.app.client_manager.identity
61+
service = identity_client.services.create(
62+
parsed_args.name,
63+
parsed_args.type,
64+
parsed_args.enabled)
65+
66+
return zip(*sorted(service._info.iteritems()))
67+
68+
69+
class DeleteService(command.Command):
70+
"""Delete service command"""
71+
72+
api = 'identity'
73+
log = logging.getLogger(__name__ + '.DeleteService')
74+
75+
def get_parser(self, prog_name):
76+
parser = super(DeleteService, self).get_parser(prog_name)
77+
parser.add_argument(
78+
'service',
79+
metavar='<service>',
80+
help='Name or ID of service to delete')
81+
return parser
82+
83+
def take_action(self, parsed_args):
84+
self.log.debug('take_action(%s)' % parsed_args)
85+
identity_client = self.app.client_manager.identity
86+
87+
service_id = utils.find_resource(
88+
identity_client.services, parsed_args.service).id
89+
90+
identity_client.services.delete(service_id)
91+
return
92+
93+
94+
class ListService(lister.Lister):
95+
"""List service command"""
96+
97+
api = 'identity'
98+
log = logging.getLogger(__name__ + '.ListService')
99+
100+
def take_action(self, parsed_args):
101+
self.log.debug('take_action(%s)' % parsed_args)
102+
columns = ('ID', 'Name', 'Type', 'Enabled')
103+
data = self.app.client_manager.identity.services.list()
104+
return (columns,
105+
(utils.get_item_properties(
106+
s, columns,
107+
formatters={},
108+
) for s in data))
109+
110+
111+
class SetService(show.ShowOne):
112+
"""Set service command"""
113+
114+
api = 'identity'
115+
log = logging.getLogger(__name__ + '.SetService')
116+
117+
def get_parser(self, prog_name):
118+
parser = super(SetService, self).get_parser(prog_name)
119+
parser.add_argument(
120+
'service',
121+
metavar='<service>',
122+
help='Service name or ID to update')
123+
parser.add_argument(
124+
'--type',
125+
metavar='<service-type>',
126+
help='New service type (compute, image, identity, volume, etc)')
127+
parser.add_argument(
128+
'--name',
129+
metavar='<service-name>',
130+
help='New service name')
131+
enable_group = parser.add_mutually_exclusive_group()
132+
enable_group.add_argument(
133+
'--enable',
134+
dest='enabled',
135+
action='store_true',
136+
default=True,
137+
help='Enable user')
138+
enable_group.add_argument(
139+
'--disable',
140+
dest='enabled',
141+
action='store_false',
142+
help='Disable user')
143+
return parser
144+
145+
def take_action(self, parsed_args):
146+
self.log.debug('take_action(%s)' % parsed_args)
147+
identity_client = self.app.client_manager.identity
148+
149+
service = utils.find_resource(identity_client.services,
150+
parsed_args.service)
151+
152+
if not parsed_args.name and not parsed_args.type:
153+
sys.stdout.write("Service not updated, no arguments present")
154+
return
155+
156+
identity_client.services.update(
157+
service,
158+
parsed_args.name,
159+
parsed_args.type,
160+
parsed_args.enabled)
161+
162+
return
163+
164+
165+
class ShowService(show.ShowOne):
166+
"""Show service command"""
167+
168+
api = 'identity'
169+
log = logging.getLogger(__name__ + '.ShowService')
170+
171+
def get_parser(self, prog_name):
172+
parser = super(ShowService, self).get_parser(prog_name)
173+
parser.add_argument(
174+
'service',
175+
metavar='<service>',
176+
help='Type, name or ID of service to display')
177+
return parser
178+
179+
def take_action(self, parsed_args):
180+
self.log.debug('take_action(%s)' % parsed_args)
181+
identity_client = self.app.client_manager.identity
182+
183+
service = utils.find_resource(identity_client.services,
184+
parsed_args.service)
185+
186+
return zip(*sorted(service._info.iteritems()))

setup.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,13 @@ def read(fname):
140140
'show_role=openstackclient.identity.v3.role:ShowRole',
141141
'set_role=openstackclient.identity.v3.role:SetRole',
142142
'add_role=openstackclient.identity.v3.role:AddRole',
143+
'create_service=' +
144+
'openstackclient.identity.v3.service:CreateService',
145+
'delete_service=' +
146+
'openstackclient.identity.v3.service:DeleteService',
147+
'list_service=openstackclient.identity.v3.service:ListService',
148+
'show_service=openstackclient.identity.v3.service:ShowService',
149+
'set_service=openstackclient.identity.v3.service:SetService',
143150
],
144151
'openstack.image.v2': [
145152
'list_image=openstackclient.image.v2.image:ListImage',

0 commit comments

Comments
 (0)