def __init__(self, **kwargs): """Initialize a new client for the Tacker v1.0 API.""" super(ClientBase, self).__init__() self.retries = kwargs.pop('retries', 0) self.raise_errors = kwargs.pop('raise_errors', True) self.httpclient = client.construct_http_client(**kwargs) self.version = '1.0' self.format = 'json' self.action_prefix = "/v%s" % (self.version) self.retry_interval = 1
def get_tacker_client(site, service_type='nfv-orchestration', timeout=None, **kwargs): """ Get a client connection to Tacker authenticated with our Keystone credentials ie) client = construct_http_client(username='******', password='******', tenant_name='admin', auth_url='http://192.168.1.121:5000/v2.0') :param site: (ControllerSite) Site to get client for :param service_type: (string) Service type defined for Tacker service. For the Liberty release, this will may be 'servicevm', for Mitaka+, it will most likely be 'nfv-orchestration'. Run the following command on your controller to verify: 'openstack service list' and look for the'tacker' entry's 'Type' :param timeout: (integer) Connection timeout, see keystoneclient.v2_0.client module :return: (HttpClient) Tacker HTTP API client """ observer_logger.info('TACKER: get client request: user: %s, tenant: %s, auth: %s' % (site.controller.admin_user, site.controller.admin_tenant, site.controller.auth_url)) client = construct_http_client(username=site.controller.admin_user, tenant_name=site.controller.admin_tenant, password=site.controller.admin_password, auth_url=site.controller.auth_url, service_type=service_type, timeout=timeout, **kwargs) if not client: observer_logger.info('TACKER: get client failed') else: observer_logger.info('TACKER: get client results: %s' % client) try: client.authenticate() except Unauthorized as e: observer_logger.error('get_tacker_client: (%s of %s) authentication error: %s' % (site.controller.admin_user, site.controller.admin_tenant, e.message)) raise except ConnectionFailed: # This can happen during unittest if you retry too often raise return client
def initialize(self): if not self._url: httpclient = client.construct_http_client( username=self._username, user_id=self._user_id, tenant_name=self._tenant_name, tenant_id=self._tenant_id, password=self._password, region_name=self._region_name, auth_url=self._auth_url, service_type=self._service_type, endpoint_type=self._endpoint_type, insecure=self._insecure, ca_cert=self._ca_cert, timeout=self._timeout, session=self._session, auth=self._auth, log_credentials=self._log_credentials) httpclient.authenticate() # Populate other password flow attributes self._token = httpclient.auth_token self._url = httpclient.endpoint_url