Merge "Add tenant commands, work on service"

This commit is contained in:
Jenkins 2012-05-10 20:18:51 +00:00 committed by Gerrit Code Review
commit 9d224b3bf8
3 changed files with 188 additions and 2 deletions
openstackclient/identity/v2_0
setup.py

@ -21,11 +21,57 @@ Service action implementations
import logging import logging
from cliff import lister
from cliff import show
from openstackclient.common import command from openstackclient.common import command
from openstackclient.common import utils from openstackclient.common import utils
class List_Service(command.OpenStackCommand): def get_service_properties(service, fields, formatters={}):
"""Return a tuple containing the service properties.
:param server: a single Service resource
:param fields: tuple of strings with the desired field names
:param formatters: dictionary mapping field names to callables
to format the values
"""
row = []
mixed_case_fields = []
for field in fields:
if field in formatters:
row.append(formatters[field](service))
else:
if field in mixed_case_fields:
field_name = field.replace(' ', '_')
else:
field_name = field.lower().replace(' ', '_')
data = getattr(service, field_name, '')
row.append(data)
return tuple(row)
class Create_Service(command.OpenStackCommand):
"Create service command."
api = 'identity'
log = logging.getLogger(__name__)
def get_parser(self, prog_name):
parser = super(Create_Service, self).get_parser(prog_name)
parser.add_argument(
'--long',
action='store_true',
default=False,
help='Additional fields are listed in output')
return parser
def run(self, parsed_args):
self.log.info('v2.Create_Service.run(%s)' % parsed_args)
class List_Service(command.OpenStackCommand, lister.Lister):
"List service command." "List service command."
api = 'identity' api = 'identity'
@ -40,5 +86,39 @@ class List_Service(command.OpenStackCommand):
help='Additional fields are listed in output') help='Additional fields are listed in output')
return parser return parser
def get_data(self, parsed_args):
self.log.debug('v2.List_Service.run(%s)' % parsed_args)
if parsed_args.long:
columns = ('ID', 'Name', 'Type', 'Description')
else:
columns = ('ID', 'Name')
data = self.app.client_manager.identity.services.list()
print "data: %s" % data
return (columns,
(get_service_properties(
s, columns,
formatters={},
) for s in data),
)
#def run(self, parsed_args):
# self.log.info('v2.List_Service.run(%s)' % parsed_args)
class Show_Service(command.OpenStackCommand):
"Show service command."
api = 'identity'
log = logging.getLogger(__name__)
def get_parser(self, prog_name):
parser = super(Show_Service, self).get_parser(prog_name)
parser.add_argument(
'--long',
action='store_true',
default=False,
help='Additional fields are listed in output')
return parser
def run(self, parsed_args): def run(self, parsed_args):
self.log.info('v2.List_Service.run(%s)' % parsed_args) self.log.info('v2.Show_Service.run(%s)' % parsed_args)

@ -0,0 +1,101 @@
# Copyright 2012 OpenStack LLC.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# vim: tabstop=4 shiftwidth=4 softtabstop=4
"""
Tenant action implementations
"""
import logging
from cliff import lister
from cliff import show
from openstackclient.common import command
from openstackclient.common import utils
def get_tenant_properties(tenant, fields, formatters={}):
"""Return a tuple containing the server properties.
:param server: a single Server resource
:param fields: tuple of strings with the desired field names
:param formatters: dictionary mapping field names to callables
to format the values
"""
row = []
mixed_case_fields = []
for field in fields:
if field in formatters:
row.append(formatters[field](tenant))
else:
if field in mixed_case_fields:
field_name = field.replace(' ', '_')
else:
field_name = field.lower().replace(' ', '_')
data = getattr(tenant, field_name, '')
row.append(data)
return tuple(row)
class List_Tenant(command.OpenStackCommand, lister.Lister):
"List tenant command."
api = 'identity'
log = logging.getLogger(__name__)
def get_data(self, parsed_args):
self.log.debug('v2.List_Service.run(%s)' % parsed_args)
columns = ('ID', 'Name', 'Enabled')
data = self.app.client_manager.identity.tenants.list()
return (columns,
(get_tenant_properties(
s, columns,
formatters={},
) for s in data),
)
class Show_Tenant(command.OpenStackCommand, show.ShowOne):
"Show server command."
api = 'identity'
log = logging.getLogger(__name__)
def get_parser(self, prog_name):
parser = super(Show_Tenant, self).get_parser(prog_name)
parser.add_argument(
'tenant',
metavar='<tenant>',
help='Name or ID of tenant to display')
return parser
def get_data(self, parsed_args):
self.log.debug('v2.Show_Tenant.run(%s)' % parsed_args)
identity_client = self.app.client_manager.identity
tenant = utils.find_resource(
identity_client.tenants, parsed_args.tenant)
info = {}
info.update(tenant._info)
# Remove a couple of values that are long and not too useful
#info.pop('links', None)
columns = sorted(info.keys())
values = [info[c] for c in columns]
return (columns, values)

@ -61,7 +61,12 @@ setuptools.setup(
'openstack.cli': [ 'openstack.cli': [
'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=' +
'openstackclient.identity.v2_0.service:Create_Service',
'list_service=openstackclient.identity.v2_0.service:List_Service', 'list_service=openstackclient.identity.v2_0.service:List_Service',
'show_service=openstackclient.identity.v2_0.service:Show_Service',
'list_tenant=openstackclient.identity.v2_0.tenant:List_Tenant',
'show_tenant=openstackclient.identity.v2_0.tenant:Show_Tenant',
] ]
} }
) )