 b2bda489a5
			
		
	
	b2bda489a5
	
	
	
		
			
			- Re-order argument alphabetically and add docstring. - Move osprofiler_profilter to zunclient.client.Client. Change-Id: Ie9be389495e2f13454f1f8d1c1d66b22d813a9ec
		
			
				
	
	
		
			101 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2015 IBM Corp.
 | |
| #
 | |
| # 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.
 | |
| 
 | |
| import warnings
 | |
| 
 | |
| from oslo_utils import importutils
 | |
| 
 | |
| from zunclient import api_versions
 | |
| from zunclient import exceptions
 | |
| from zunclient.i18n import _
 | |
| 
 | |
| osprofiler_profiler = importutils.try_import("osprofiler.profiler")
 | |
| 
 | |
| 
 | |
| def _get_client_class_and_version(version):
 | |
|     if not isinstance(version, api_versions.APIVersion):
 | |
|         version = api_versions.get_api_version(version)
 | |
|     else:
 | |
|         api_versions.check_major_version(version)
 | |
|     if version.is_latest():
 | |
|         raise exceptions.UnsupportedVersion(
 | |
|             _('The version should be explicit, not latest.'))
 | |
|     return version, importutils.import_class(
 | |
|         'zunclient.v%s.client.Client' % version.ver_major)
 | |
| 
 | |
| 
 | |
| def _check_arguments(kwargs, release, deprecated_name, right_name=None):
 | |
|     """Process deprecation of arguments.
 | |
| 
 | |
|     Check presence of deprecated argument in kwargs, prints proper warning
 | |
|     message, renames key to right one it needed.
 | |
|     """
 | |
|     if deprecated_name in kwargs:
 | |
|         if right_name:
 | |
|             if right_name in kwargs:
 | |
|                 msg = ('The %(old)s argument is deprecated in %(release)s'
 | |
|                        'and its use may result in errors in future releases.'
 | |
|                        'As %(new)s is provided, the %(old)s argument will '
 | |
|                        'be ignored.') % {'old': deprecated_name,
 | |
|                                          'release': release,
 | |
|                                          'new': right_name}
 | |
|                 kwargs.pop(deprecated_name)
 | |
|             else:
 | |
|                 msg = ('The %(old)s argument is deprecated in %(release)s '
 | |
|                        'and its use may result in errors in future releases. '
 | |
|                        'Use %(new)s instead.') % {'old': deprecated_name,
 | |
|                                                   'release': release,
 | |
|                                                   'new': right_name}
 | |
|                 kwargs[right_name] = kwargs.pop(deprecated_name)
 | |
|         else:
 | |
|             msg = ('The %(old)s argument is deprecated in %(release)s '
 | |
|                    'and its use may result in errors in future '
 | |
|                    'releases') % {'old': deprecated_name,
 | |
|                                   'release': release}
 | |
|             # NOTE(kiennt): just ignore it
 | |
|             kwargs.pop(deprecated_name)
 | |
|         warnings.warn(msg)
 | |
| 
 | |
| 
 | |
| def Client(version='1', username=None, auth_url=None, **kwargs):
 | |
|     """Initialize client objects based on given version"""
 | |
|     _check_arguments(kwargs, 'Queens', 'api_key', right_name='password')
 | |
|     # NOTE: OpenStack projects use 2 vars with one meaning: `endpoint_type`
 | |
|     #       and `interface`. `endpoint_type` is an old name which was used by
 | |
|     #       most OpenStack clients. Later it was replaced by `interface` in
 | |
|     #       keystone and later some other clients switched to new var name too.
 | |
|     _check_arguments(kwargs, 'Queens', 'endpoint_type',
 | |
|                      right_name='interface')
 | |
|     _check_arguments(kwargs, 'Queens', 'zun_url',
 | |
|                      right_name='endpoint_override')
 | |
|     _check_arguments(kwargs, 'Queens', 'tenant_name',
 | |
|                      right_name='project_name')
 | |
|     _check_arguments(kwargs, 'Queens', 'tenant_id', right_name='project_id')
 | |
| 
 | |
|     profile = kwargs.pop('profile', None)
 | |
|     if osprofiler_profiler and profile:
 | |
|         # Initialize the root of the future trace: the created trace ID
 | |
|         # will be used as the very first parent to which all related
 | |
|         # traces will be bound to. The given HMAC key must correspond to
 | |
|         # the one set in zun-api zun.conf, otherwise the latter
 | |
|         # will fail to check the request signature and will skip
 | |
|         # initialization of osprofiler on the server side.
 | |
|         osprofiler_profiler.init(profile)
 | |
| 
 | |
|     api_version, client_class = _get_client_class_and_version(version)
 | |
|     return client_class(api_version=api_version,
 | |
|                         auth_url=auth_url,
 | |
|                         username=username,
 | |
|                         **kwargs)
 |