2016-11-30 06:21:53 +01:00
|
|
|
"""Miscellaneous utility functions and classes specific to ansible cli tools."""
|
|
|
|
|
|
|
|
from __future__ import absolute_import, print_function
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
2019-02-18 22:28:25 +01:00
|
|
|
from lib.constants import (
|
|
|
|
SOFT_RLIMIT_NOFILE,
|
|
|
|
)
|
|
|
|
|
2017-10-04 20:36:53 +02:00
|
|
|
from lib.util import (
|
|
|
|
common_environment,
|
|
|
|
ApplicationError,
|
|
|
|
)
|
|
|
|
|
|
|
|
from lib.config import (
|
|
|
|
IntegrationConfig,
|
|
|
|
)
|
2016-11-30 06:21:53 +01:00
|
|
|
|
|
|
|
|
2019-01-10 23:43:21 +01:00
|
|
|
def ansible_environment(args, color=True, ansible_config=None):
|
2016-11-30 06:21:53 +01:00
|
|
|
"""
|
|
|
|
:type args: CommonConfig
|
2017-03-08 20:45:38 +01:00
|
|
|
:type color: bool
|
2019-01-10 23:43:21 +01:00
|
|
|
:type ansible_config: str | None
|
2016-11-30 06:21:53 +01:00
|
|
|
:rtype: dict[str, str]
|
|
|
|
"""
|
|
|
|
env = common_environment()
|
|
|
|
path = env['PATH']
|
|
|
|
|
|
|
|
ansible_path = os.path.join(os.getcwd(), 'bin')
|
|
|
|
|
2018-09-21 20:38:22 +02:00
|
|
|
if not path.startswith(ansible_path + os.path.pathsep):
|
|
|
|
path = ansible_path + os.path.pathsep + path
|
2016-11-30 06:21:53 +01:00
|
|
|
|
2019-01-10 23:43:21 +01:00
|
|
|
if ansible_config:
|
|
|
|
pass
|
|
|
|
elif isinstance(args, IntegrationConfig):
|
2017-10-04 20:36:53 +02:00
|
|
|
ansible_config = 'test/integration/%s.cfg' % args.command
|
|
|
|
else:
|
|
|
|
ansible_config = 'test/%s/ansible.cfg' % args.command
|
|
|
|
|
2019-01-10 23:43:21 +01:00
|
|
|
if not args.explain and not os.path.exists(ansible_config):
|
2017-10-04 20:36:53 +02:00
|
|
|
raise ApplicationError('Configuration not found: %s' % ansible_config)
|
|
|
|
|
2016-11-30 06:21:53 +01:00
|
|
|
ansible = dict(
|
2019-02-18 22:28:25 +01:00
|
|
|
ANSIBLE_PYTHON_MODULE_RLIMIT_NOFILE=str(SOFT_RLIMIT_NOFILE),
|
2017-03-08 20:45:38 +01:00
|
|
|
ANSIBLE_FORCE_COLOR='%s' % 'true' if args.color and color else 'false',
|
2016-11-30 06:21:53 +01:00
|
|
|
ANSIBLE_DEPRECATION_WARNINGS='false',
|
2017-01-08 08:36:35 +01:00
|
|
|
ANSIBLE_HOST_KEY_CHECKING='false',
|
2019-01-08 23:03:15 +01:00
|
|
|
ANSIBLE_RETRY_FILES_ENABLED='false',
|
2017-10-04 20:36:53 +02:00
|
|
|
ANSIBLE_CONFIG=os.path.abspath(ansible_config),
|
2018-09-21 21:55:04 +02:00
|
|
|
ANSIBLE_LIBRARY='/dev/null',
|
2016-11-30 06:21:53 +01:00
|
|
|
PYTHONPATH=os.path.abspath('lib'),
|
|
|
|
PAGER='/bin/cat',
|
|
|
|
PATH=path,
|
|
|
|
)
|
|
|
|
|
|
|
|
env.update(ansible)
|
|
|
|
|
2017-02-01 20:15:08 +01:00
|
|
|
if args.debug:
|
2017-10-26 09:21:46 +02:00
|
|
|
env.update(dict(
|
|
|
|
ANSIBLE_DEBUG='true',
|
|
|
|
ANSIBLE_LOG_PATH=os.path.abspath('test/results/logs/debug.log'),
|
|
|
|
))
|
2017-02-01 20:15:08 +01:00
|
|
|
|
2016-11-30 06:21:53 +01:00
|
|
|
return env
|