Repository URL to install this package:
| 
      
        
        
        Version: 
        
         
          
          4.2.64  ▾
        
         | 
| 
    
    python3-workloadmgrclient
  
    /
        
    usr
  
        /
        
    lib
  
        /
        
    python3
  
        /
        
    dist-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