shipyard/src/bin/shipyard_airflow/shipyard_airflow/control/service_clients.py

62 lines
2.0 KiB
Python

# Copyright 2018 AT&T Intellectual Property. All other rights reserved.
#
# 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.
"""Generates clients and client-like objects and functions"""
from urllib.parse import urlparse
from oslo_config import cfg
from deckhand.client import client as dh_client
import drydock_provisioner.drydock_client.client as dd_client
import drydock_provisioner.drydock_client.session as dd_session
from shipyard_airflow.control.service_endpoints import Endpoints
from shipyard_airflow.control import service_endpoints as svc_endpoints
CONF = cfg.CONF
#
# Deckhand Client
#
def deckhand_client(addl_headers=None):
"""Retrieve a Deckhand client"""
session = svc_endpoints.get_session()
if addl_headers:
session.additional_headers.update(addl_headers)
return dh_client.Client(session=session,
endpoint_type='internal')
#
# Drydock Client
#
def _auth_gen():
return [('X-Auth-Token', svc_endpoints.get_token())]
def drydock_client(context_marker=None, end_user=None):
"""Retreive a Drydock client"""
# Setup the drydock session
endpoint = svc_endpoints.get_endpoint(Endpoints.DRYDOCK)
dd_url = urlparse(endpoint)
session = dd_session.DrydockSession(
dd_url.hostname,
port=dd_url.port,
auth_gen=_auth_gen,
marker=context_marker,
end_user=end_user,
timeout=(CONF.requests_config.drydock_client_connect_timeout,
CONF.requests_config.drydock_client_read_timeout))
return dd_client.DrydockClient(session)