allow to pass session and adapter options

Change-Id: I083c723181964687980ec7624904dc5cc42bfb73
This commit is contained in:
Mehdi Abaakouk 2017-01-31 11:26:55 +01:00
parent cbaa19664c
commit add8ec1d80
2 changed files with 54 additions and 16 deletions

View File

@ -160,17 +160,19 @@ class GnocchiShell(app.App):
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),
adapter_options=dict(
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

View File

@ -13,6 +13,10 @@
# License for the specific language governing permissions and limitations
# under the License.
import debtcollector
from debtcollector import removals
import keystoneauth1.session
from gnocchiclient import client
from gnocchiclient.v1 import archive_policy
from gnocchiclient.v1 import archive_policy_rule
@ -26,14 +30,46 @@ from gnocchiclient.v1 import status
class Client(object):
"""Client for the Gnocchi v1 API.
:param string session: session
:type session: :py:class:`keystoneauth.adapter.Adapter`
:param session: keystoneauth1 session
:type session: :py:class:`keystoneauth1.session.Session` (optional)
:param adapter_options: options to pass to
:py:class:`keystoneauth1.adapter.Adapter`
:type adapter_options: dict (optional)
:param session_options: options to pass to
:py:class:`keystoneauth1.session.Session`
:type session_options: dict (optional)
"""
def __init__(self, session=None, service_type='metric', **kwargs):
@removals.removed_kwarg('service_type',
message="Please use 'adapter_options="
"dict(service_type=...)' instead")
def __init__(self, session=None, service_type=None,
adapter_options=None, session_options=None,
**kwargs):
"""Initialize a new client for the Gnocchi v1 API."""
self.api = client.SessionClient(session, service_type=service_type,
**kwargs)
session_options = session_options or {}
adapter_options = adapter_options or {}
adapter_options.setdefault('service_type', "metric")
# NOTE(sileht): Backward compat stuff
if kwargs:
for key in kwargs:
debtcollector.deprecate(
"Using the '%s' argument is deprecated" % key,
message="Please use 'adapter_options=dict(%s=...)' "
"instead" % key)
adapter_options.update(kwargs)
if service_type is not None:
adapter_options['service_type'] = service_type
if session is None:
session = keystoneauth1.session.Session(**session_options)
else:
if session_options:
raise ValueError("session and session_options are exclusive")
self.api = client.SessionClient(session, **adapter_options)
self.resource = resource.ResourceManager(self)
self.resource_type = resource_type.ResourceTypeManager(self)
self.archive_policy = archive_policy.ArchivePolicyManager(self)