
- uplifted/downgraded some python modules - fixed falcon.API deprecation - -> falcon.App - uplifted deckhand reference for python deps - fixed formatting style using yapf linter - added bindep role and bindep.txt file with required deps - fixed quai docker image publishing - re-enabled openstack-tox-py38 gate job Change-Id: I0e248182efad75630721a1291bc86a5edc79c22a
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from . import logging
|
|
from oslo_config import cfg
|
|
import keystoneauth1.identity.v3
|
|
import keystoneauth1.session
|
|
import requests
|
|
import yaml
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
__all__ = ['get_documents']
|
|
|
|
_DECKHAND_PREFIX = 'deckhand+'
|
|
|
|
DH_TIMEOUT = 10 * 60 # 10 Minute timeout for fetching from Deckhand.
|
|
|
|
|
|
def get_documents(design_ref, ctx=None):
|
|
LOG.debug('Fetching design_ref="%s"', design_ref, ctx=ctx)
|
|
if design_ref.startswith(_DECKHAND_PREFIX):
|
|
response = _get_from_deckhand(design_ref, ctx)
|
|
use_dh_engine = False
|
|
else:
|
|
response = _get_from_basic_web(design_ref)
|
|
use_dh_engine = True
|
|
LOG.debug('Got response for design_ref="%s"', design_ref, ctx=ctx)
|
|
|
|
response.raise_for_status()
|
|
|
|
return list(yaml.safe_load_all(response.text)), use_dh_engine
|
|
|
|
|
|
def _get_from_basic_web(design_ref):
|
|
return requests.get(design_ref, timeout=5)
|
|
|
|
|
|
def _get_from_deckhand(design_ref, ctx=None):
|
|
keystone_args = {}
|
|
for attr in ('auth_url', 'password', 'project_domain_name', 'project_name',
|
|
'username', 'user_domain_name'):
|
|
keystone_args[attr] = cfg.CONF.get('keystone_authtoken', {}).get(attr)
|
|
if ctx is not None:
|
|
addl_headers = {
|
|
'X-CONTEXT-MARKER': ctx.context_marker,
|
|
'X-END-USER': ctx.end_user
|
|
}
|
|
else:
|
|
addl_headers = {}
|
|
auth = keystoneauth1.identity.v3.Password(**keystone_args)
|
|
session = keystoneauth1.session.Session(auth=auth,
|
|
additional_headers=addl_headers)
|
|
|
|
return session.get(design_ref[len(_DECKHAND_PREFIX):], timeout=DH_TIMEOUT)
|