Repository URL to install this package:
|
Version:
4.1.94-4.1 ▾
|
python3-workloadmgrclient-el8
/
usr
/
lib
/
python3.6
/
site-packages
/
workloadmgrclient
/
common
/
client_manager.py
|
|---|
# Copyright 2019 TrilioData, Inc.
# All Rights Reserved
#
"""
Manage access to the clients, including authenticating when needed.
"""
import debtcollector.renames
from workloadmgrclient import client
from workloadmgrclient.v1 import client as workloadmgr_client
API_VERSION = "1"
class ClientCache(object):
"""Descriptor class for caching created client handles."""
def __init__(self, factory):
self.factory = factory
self._handle = None
def __get__(self, instance, owner):
# Tell the ClientManager to login to keystone
if self._handle is None:
self._handle = self.factory(instance)
return self._handle
class ClientManager(object):
"""Manages access to API clients, including authentication."""
workloadmgr = ClientCache(workloadmgr_client.make_client)
@debtcollector.renames.renamed_kwarg("tenant_id", "project_id", replace=True)
@debtcollector.renames.renamed_kwarg("tenant_name", "project_name", replace=True)
def __init__(
self,
token=None,
url=None,
auth_url=None,
endpoint_type=None,
project_name=None,
project_id=None,
username=None,
user_id=None,
password=None,
region_name=None,
api_version=None,
auth_strategy=None,
insecure=False,
ca_cert=None,
log_credentials=False,
service_type=None,
service_name=None,
timeout=None,
retries=0,
raise_errors=True,
session=None,
auth=None,
os_domain_id=None,
user_domain_name=None,
project_domain_name=None,
os_user_domain_id=None,
os_project_domain_id=None,
logger=None,
):
self._token = token
self._url = url
self._auth_url = auth_url
self._service_type = service_type
self._service_name = service_name
self._endpoint_type = endpoint_type
self._project_name = project_name
self._project_id = project_id
self._username = username
self._user_id = user_id
self._password = password
self._region_name = region_name
self._api_version = api_version
self._service_catalog = None
self._auth_strategy = auth_strategy
self._insecure = insecure
self._ca_cert = ca_cert
self._log_credentials = log_credentials
self._timeout = timeout
self._retries = retries
self._raise_errors = raise_errors
self._session = session
self._auth = auth
self._os_domain_id = os_domain_id
self._user_domain_name = user_domain_name
self._project_domain_name = project_domain_name
self._os_user_domain_id = os_user_domain_id
self._os_project_domain_id = os_project_domain_id
self._logger = logger
return
def initialize(self):
if not self._url:
httpclient = client.HTTPClient(
user=self._username,
password=self._password,
projectid=self._project_id,
auth_url=self._auth_url,
insecure=self._insecure,
timeout=self._timeout,
tenant_id=self._project_id,
region_name=self._region_name,
endpoint_type=self._endpoint_type,
service_type=self._service_type,
service_name=self._service_name,
cacert=self._ca_cert,
retries=self._retries,
domain_name=self._os_domain_id,
user_domain_name=self._user_domain_name,
project_domain_name=self._project_domain_name,
os_user_domain_id=self._os_user_domain_id,
os_project_domain_id=self._os_project_domain_id,
http_log_debug=self._logger,
)
# TODO: check following
# proxy_tenant_id=None,
# proxy_token=None
# http_log_debug=False)
httpclient.authenticate()
# Populate other password flow attributes
self._token = httpclient.auth_token
self._url = httpclient.management_url