summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthewLi <matthew.lijun@huawei.com>2017-06-06 23:46:21 -0400
committerMatthewLi <matthew.lijun@huawei.com>2017-06-08 02:37:21 -0400
commit5a72ace55ede5bb798435aaa249ebe12e501258e (patch)
tree8d7bb5190d212a77610c4328122a1ce684af52ed
parentab4226ed3c39b8d7b759e93e05e27f1247763ec9 (diff)
https+credential support
JIRA: DOVETAIL-440 Change-Id: I69fb96673755545e8e0d78d940870195dbf20a0b Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
-rw-r--r--dovetail/container.py20
-rwxr-xr-xdovetail/run.py11
2 files changed, 28 insertions, 3 deletions
diff --git a/dovetail/container.py b/dovetail/container.py
index 2d8a9e20..e527a46a 100644
--- a/dovetail/container.py
+++ b/dovetail/container.py
@@ -171,11 +171,25 @@ class Container(object):
maybe some issue with domain name resolution',
hosts_config_path)
+ cacert_volume = ""
+ cacert = os.getenv('OS_CACERT',)
+ if cacert is not None:
+ if not os.path.isfile(cacert):
+ cls.logger.error("env variable 'OS_CACERT' is set to %s"
+ "but the file does not exist", cacert)
+ return None
+ elif not dovetail_config['config_dir'] in cacert:
+ cls.logger.error("OS_CACERT file has to be put in %s, which"
+ "can be mount into container",
+ dovetail_config['config_dir'])
+ return None
+ cacert_volume = ' -v %s:%s ' % (cacert, cacert)
+
result_volume = ' -v %s:%s ' % (dovetail_config['result_dir'],
dovetail_config[type]['result']['dir'])
- cmd = 'sudo docker run %s %s %s %s %s %s %s %s /bin/bash' % \
- (opts, envs, config, hosts_config, openrc, config_volume,
- result_volume, docker_image)
+ cmd = 'sudo docker run %s %s %s %s %s %s %s %s %s /bin/bash' % \
+ (opts, envs, config, hosts_config, openrc, cacert_volume,
+ config_volume, result_volume, docker_image)
dt_utils.exec_cmd(cmd, cls.logger)
ret, container_id = \
dt_utils.exec_cmd("sudo docker ps | grep " + docker_image +
diff --git a/dovetail/run.py b/dovetail/run.py
index 521379d7..986ee801 100755
--- a/dovetail/run.py
+++ b/dovetail/run.py
@@ -205,6 +205,16 @@ def copy_userconfig_files(logger):
dt_utils.exec_cmd(cmd, logger, exit_on_error=False)
+# env_init can source some env variable used in dovetail, such as
+# when https+credential used, OS_CACERT
+def env_init(logger):
+ openrc = os.path.join(dt_cfg.dovetail_config['config_dir'],
+ dt_cfg.dovetail_config['env_file'])
+ if not os.path.isfile(openrc):
+ logger.error("openrc file %s does not exist", openrc)
+ dt_utils.source_env(openrc)
+
+
def main(*args, **kwargs):
"""Dovetail compliance test entry!"""
build_tag = "daily-master-%s" % str(uuid.uuid4())
@@ -220,6 +230,7 @@ def main(*args, **kwargs):
logger.info('Dovetail compliance: %s!', (kwargs['testsuite']))
logger.info('================================================')
logger.info('Build tag: %s', dt_cfg.dovetail_config['build_tag'])
+ env_init(logger)
copy_userconfig_files(logger)
dt_utils.check_docker_version(logger)
validate_input(kwargs, dt_cfg.dovetail_config['validate_input'], logger)