https+credential support 53/35853/2
authorMatthewLi <matthew.lijun@huawei.com>
Wed, 7 Jun 2017 03:46:21 +0000 (23:46 -0400)
committerMatthewLi <matthew.lijun@huawei.com>
Thu, 8 Jun 2017 06:37:21 +0000 (02:37 -0400)
JIRA: DOVETAIL-440

Change-Id: I69fb96673755545e8e0d78d940870195dbf20a0b
Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
dovetail/container.py
dovetail/run.py

index 2d8a9e2..e527a46 100644 (file)
@@ -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 +
index 521379d..986ee80 100755 (executable)
@@ -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)