Use new keystoneauth1 helper

keystoneauth1 can register adapter options, use that to be
homogeneous with other cli.

Change-Id: I3b2494e8a817541002b30b2b589156ce1f78e7c2
This commit is contained in:
Mehdi Abaakouk 2017-01-31 09:27:03 +01:00
parent 32b62fbd12
commit cbaa19664c
2 changed files with 38 additions and 27 deletions

View File

@ -20,6 +20,7 @@ import warnings
from cliff import app from cliff import app
from cliff import commandmanager from cliff import commandmanager
from keystoneauth1 import adapter
from keystoneauth1 import exceptions from keystoneauth1 import exceptions
from keystoneauth1 import loading from keystoneauth1 import loading
@ -110,36 +111,28 @@ class GnocchiShell(app.App):
description, description,
version, version,
argparse_kwargs={'allow_abbrev': False}) argparse_kwargs={'allow_abbrev': False})
# Global arguments, one day this should go to keystoneauth1
parser.add_argument(
'--os-region-name',
metavar='<auth-region-name>',
dest='region_name',
default=os.environ.get('OS_REGION_NAME'),
help='Authentication region name (Env: OS_REGION_NAME)')
parser.add_argument(
'--os-interface',
metavar='<interface>',
dest='interface',
choices=['admin', 'public', 'internal'],
default=os.environ.get('OS_INTERFACE'),
help='Select an interface type.'
' Valid interface types: [admin, public, internal].'
' (Env: OS_INTERFACE)')
parser.add_argument( parser.add_argument(
'--gnocchi-api-version', '--gnocchi-api-version',
default=os.environ.get('GNOCCHI_API_VERSION', '1'), default=os.environ.get('GNOCCHI_API_VERSION', '1'),
help='Defaults to env[GNOCCHI_API_VERSION] or 1.') help='Defaults to env[GNOCCHI_API_VERSION] or 1.')
loading.register_session_argparse_arguments(parser=parser) loading.register_session_argparse_arguments(parser=parser)
plugin = loading.register_auth_argparse_arguments( plugin = loading.register_auth_argparse_arguments(
parser=parser, argv=sys.argv, default="gnocchi-basic") parser=parser, argv=sys.argv, default="gnocchi-basic")
if not isinstance(plugin, (auth.GnocchiNoAuthLoader, if not isinstance(plugin, (auth.GnocchiNoAuthLoader,
auth.GnocchiBasicLoader)): auth.GnocchiBasicLoader)):
adapter.register_adapter_argparse_arguments(
parser=parser, service_type="metric")
adapter.register_service_adapter_argparse_arguments(
parser=parser, service_type="metric")
parser.add_argument( parser.add_argument(
'--endpoint', '--endpoint',
default=os.environ.get('GNOCCHI_ENDPOINT'), default=os.environ.get('GNOCCHI_ENDPOINT'),
help='Gnocchi endpoint (Env: GNOCCHI_ENDPOINT)') help='Gnocchi endpoint (Env: GNOCCHI_ENDPOINT). '
'Deprecated, use --os-endpoint-override and '
'OS_ENDPOINT_OVERRIDE instead')
return parser return parser
@ -148,20 +141,38 @@ class GnocchiShell(app.App):
# NOTE(sileht): we lazy load the client to not # NOTE(sileht): we lazy load the client to not
# load/connect auth stuffs # load/connect auth stuffs
if self._client is None: if self._client is None:
if hasattr(self.options, "endpoint"):
endpoint_override = self.options.endpoint
else:
endpoint_override = None
auth_plugin = loading.load_auth_from_argparse_arguments( auth_plugin = loading.load_auth_from_argparse_arguments(
self.options) self.options)
session = loading.load_session_from_argparse_arguments( session = loading.load_session_from_argparse_arguments(
self.options, auth=auth_plugin) self.options, auth=auth_plugin)
self._client = client.Client(self.options.gnocchi_api_version, if isinstance(auth_plugin, (auth.GnocchiNoAuthPlugin,
session=session, auth.GnocchiBasicPlugin)):
interface=self.options.interface, # Normal endpoint
region_name=self.options.region_name, kwargs = dict(
endpoint_override=endpoint_override) version=self.options.gnocchi_api_version,
session=session,
)
else:
# Openstck style endpoint
kwargs = dict(
version=(self.options.os_metric_api_version or
self.options.os_api_version or
self.options.gnocchi_api_version),
session=session,
service_type=(self.options.os_metric_service_type or
self.options.os_service_type),
service_name=(self.options.os_metric_service_name or
self.options.os_service_name),
interface=(self.options.os_metric_interface or
self.options.os_interface),
region_name=self.options.os_region_name,
endpoint_override=(
self.options.os_metric_endpoint_override or
self.options.os_endpoint_override or
self.options.endpoint),
)
self._client = client.Client(**kwargs)
return self._client return self._client
def clean_up(self, cmd, result, err): def clean_up(self, cmd, result, err):

View File

@ -7,6 +7,6 @@ cliff>1.16.0 # Apache-2.0
osc-lib>=0.3.0 # Apache-2.0 osc-lib>=0.3.0 # Apache-2.0
oslo.serialization>=1.4.0 # Apache-2.0 oslo.serialization>=1.4.0 # Apache-2.0
oslo.utils>=2.0.0 # Apache-2.0 oslo.utils>=2.0.0 # Apache-2.0
keystoneauth1>=1.0.0 keystoneauth1>=2.0.0
six six
futurist futurist