Update service commands
* add {create|delete} service * allow 'service' arg to also search type attribute in show command Change-Id: I992359dc95fab1fbdab0666d5cbb75e44ba6e0f3
This commit is contained in:
parent
fd8197de6d
commit
d6a4fb836f
@ -47,10 +47,17 @@ def find_resource(manager, name_or_id):
|
|||||||
# finally try to find entity by name
|
# finally try to find entity by name
|
||||||
try:
|
try:
|
||||||
return manager.find(name=name_or_id)
|
return manager.find(name=name_or_id)
|
||||||
except exceptions.NotFound:
|
# FIXME(dtroyer): The exception to catch here is dependent on which
|
||||||
msg = "No %s with a name or ID of '%s' exists." % \
|
# client library the manager passed in belongs to.
|
||||||
(manager.resource_class.__name__.lower(), name_or_id)
|
# Eventually this should be pulled from a common set
|
||||||
raise exceptions.CommandError(msg)
|
# of client exceptions.
|
||||||
|
except Exception as ex:
|
||||||
|
if '.NotFound' in type(ex).__name__:
|
||||||
|
msg = "No %s with a name or ID of '%s' exists." % \
|
||||||
|
(manager.resource_class.__name__.lower(), name_or_id)
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
def get_item_properties(item, fields, mixed_case_fields=[], formatters={}):
|
def get_item_properties(item, fields, mixed_case_fields=[], formatters={}):
|
||||||
|
@ -24,37 +24,81 @@ import logging
|
|||||||
from cliff import lister
|
from cliff import lister
|
||||||
from cliff import show
|
from cliff import show
|
||||||
|
|
||||||
|
from keystoneclient import exceptions as identity_exc
|
||||||
from openstackclient.common import command
|
from openstackclient.common import command
|
||||||
|
from openstackclient.common import exceptions
|
||||||
from openstackclient.common import utils
|
from openstackclient.common import utils
|
||||||
|
|
||||||
|
|
||||||
class Create_Service(command.OpenStackCommand):
|
class CreateService(command.OpenStackCommand, show.ShowOne):
|
||||||
"""Create service command"""
|
"""Create service command"""
|
||||||
|
|
||||||
# FIXME(dtroyer): Service commands are still WIP
|
|
||||||
api = 'identity'
|
api = 'identity'
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__ + '.CreateService')
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(Create_Service, self).get_parser(prog_name)
|
parser = super(CreateService, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'service_name',
|
'name',
|
||||||
metavar='<service-name>',
|
metavar='<service-name>',
|
||||||
help='New service name')
|
help='New service name')
|
||||||
|
parser.add_argument(
|
||||||
|
'--type',
|
||||||
|
metavar='<service-type>',
|
||||||
|
required=True,
|
||||||
|
help='New service type',
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--description',
|
||||||
|
metavar='<service-description>',
|
||||||
|
help='New service description',
|
||||||
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def get_data(self, parsed_args):
|
def get_data(self, parsed_args):
|
||||||
self.log.info('v2.Create_Service.get_data(%s)' % parsed_args)
|
self.log.debug('get_data(%s)' % parsed_args)
|
||||||
|
identity_client = self.app.client_manager.identity
|
||||||
|
service = identity_client.services.create(
|
||||||
|
parsed_args.name,
|
||||||
|
parsed_args.type,
|
||||||
|
parsed_args.description,
|
||||||
|
)
|
||||||
|
|
||||||
|
info = {}
|
||||||
|
info.update(service._info)
|
||||||
|
return zip(*sorted(info.iteritems()))
|
||||||
|
|
||||||
|
|
||||||
class List_Service(command.OpenStackCommand, lister.Lister):
|
class DeleteService(command.OpenStackCommand):
|
||||||
|
"""Delete service command"""
|
||||||
|
|
||||||
|
api = 'identity'
|
||||||
|
log = logging.getLogger(__name__ + '.DeleteService')
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super(DeleteService, self).get_parser(prog_name)
|
||||||
|
parser.add_argument(
|
||||||
|
'service',
|
||||||
|
metavar='<service-id>',
|
||||||
|
help='ID of service to delete',
|
||||||
|
)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
def run(self, parsed_args):
|
||||||
|
self.log.debug('run(%s)' % parsed_args)
|
||||||
|
identity_client = self.app.client_manager.identity
|
||||||
|
identity_client.services.delete(parsed_args.service)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
class ListService(command.OpenStackCommand, lister.Lister):
|
||||||
"""List service command"""
|
"""List service command"""
|
||||||
|
|
||||||
api = 'identity'
|
api = 'identity'
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__ + '.ListService')
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(List_Service, self).get_parser(prog_name)
|
parser = super(ListService, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--long',
|
'--long',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
@ -63,7 +107,7 @@ class List_Service(command.OpenStackCommand, lister.Lister):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
def get_data(self, parsed_args):
|
def get_data(self, parsed_args):
|
||||||
self.log.debug('v2.List_Service.get_data(%s)' % parsed_args)
|
self.log.debug('get_data(%s)' % parsed_args)
|
||||||
if parsed_args.long:
|
if parsed_args.long:
|
||||||
columns = ('ID', 'Name', 'Type', 'Description')
|
columns = ('ID', 'Name', 'Type', 'Description')
|
||||||
else:
|
else:
|
||||||
@ -73,33 +117,43 @@ class List_Service(command.OpenStackCommand, lister.Lister):
|
|||||||
(utils.get_item_properties(
|
(utils.get_item_properties(
|
||||||
s, columns,
|
s, columns,
|
||||||
formatters={},
|
formatters={},
|
||||||
) for s in data),
|
) for s in data),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class Show_Service(command.OpenStackCommand, show.ShowOne):
|
class ShowService(command.OpenStackCommand, show.ShowOne):
|
||||||
"""Show service command"""
|
"""Show service command"""
|
||||||
|
|
||||||
api = 'identity'
|
api = 'identity'
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__ + '.ShowService')
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(Show_Service, self).get_parser(prog_name)
|
parser = super(ShowService, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'service',
|
'service',
|
||||||
metavar='<service>',
|
metavar='<service>',
|
||||||
help='Name or ID of service to display')
|
help='Type, name or ID of service to display')
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def get_data(self, parsed_args):
|
def get_data(self, parsed_args):
|
||||||
self.log.info('v2.Show_Service.get_data(%s)' % parsed_args)
|
self.log.debug('get_data(%s)' % parsed_args)
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
service = utils.find_resource(
|
try:
|
||||||
identity_client.services, parsed_args.service)
|
# search for the usual ID or name
|
||||||
|
service = utils.find_resource(
|
||||||
|
identity_client.services, parsed_args.service)
|
||||||
|
except exceptions.CommandError:
|
||||||
|
try:
|
||||||
|
# search for service type
|
||||||
|
service = identity_client.services.find(
|
||||||
|
type=parsed_args.service)
|
||||||
|
# FIXME(dtroyer): This exception should eventually come from
|
||||||
|
# common client exceptions
|
||||||
|
except identity_exc.NotFound:
|
||||||
|
msg = "No service with a type, name or ID of '%s' exists." % \
|
||||||
|
name_or_id
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
info = {}
|
info = {}
|
||||||
info.update(user._info)
|
info.update(service._info)
|
||||||
|
return zip(*sorted(info.iteritems()))
|
||||||
columns = sorted(info.keys())
|
|
||||||
values = [info[c] for c in columns]
|
|
||||||
return (columns, values)
|
|
||||||
|
8
setup.py
8
setup.py
@ -62,9 +62,11 @@ setuptools.setup(
|
|||||||
'list_server=openstackclient.compute.v2.server:List_Server',
|
'list_server=openstackclient.compute.v2.server:List_Server',
|
||||||
'show_server=openstackclient.compute.v2.server:Show_Server',
|
'show_server=openstackclient.compute.v2.server:Show_Server',
|
||||||
'create_service=' +
|
'create_service=' +
|
||||||
'openstackclient.identity.v2_0.service:Create_Service',
|
'openstackclient.identity.v2_0.service:CreateService',
|
||||||
'list_service=openstackclient.identity.v2_0.service:List_Service',
|
'delete_service=' +
|
||||||
'show_service=openstackclient.identity.v2_0.service:Show_Service',
|
'openstackclient.identity.v2_0.service:DeleteService',
|
||||||
|
'list_service=openstackclient.identity.v2_0.service:ListService',
|
||||||
|
'show_service=openstackclient.identity.v2_0.service:ShowService',
|
||||||
'create_tenant=' +
|
'create_tenant=' +
|
||||||
'openstackclient.identity.v2_0.tenant:Create_Tenant',
|
'openstackclient.identity.v2_0.tenant:Create_Tenant',
|
||||||
'delete_tenant=' +
|
'delete_tenant=' +
|
||||||
|
Loading…
x
Reference in New Issue
Block a user