diff options
Diffstat (limited to 'dovetail/utils/dovetail_utils.py')
-rw-r--r-- | dovetail/utils/dovetail_utils.py | 89 |
1 files changed, 56 insertions, 33 deletions
diff --git a/dovetail/utils/dovetail_utils.py b/dovetail/utils/dovetail_utils.py index e6a775f1..fc007e51 100644 --- a/dovetail/utils/dovetail_utils.py +++ b/dovetail/utils/dovetail_utils.py @@ -111,21 +111,44 @@ def source_env(env_file): with open(env_file, 'r') as f: lines = f.readlines() for line in lines: - for match in re.findall(r"export (.*)=(.*)", line): - match = (match[0].strip('\"'), match[1].strip('\"')) - match = (match[0].strip('\''), match[1].strip('\'')) - os.environ.update({match[0]: match[1]}) + if line.lstrip().startswith('export'): + for match in re.findall(r"export (.*)=(.*)", line): + match = (match[0].strip('\"'), match[1].strip('\"')) + match = (match[0].strip('\''), match[1].strip('\'')) + os.environ.update({match[0]: match[1]}) + + +def check_https_enabled(logger=None): + logger.debug("Checking if https enabled or not...") + os_auth_url = os.getenv('OS_AUTH_URL') + if os_auth_url.startswith('https'): + logger.debug("https is enabled") + return True + logger.debug("https is not enabled") + return False def get_ext_net_name(env_file, logger=None): - source_env(env_file) - cmd_check = "openstack network list" + https_enabled = check_https_enabled(logger) + insecure_option = '' + insecure = os.getenv('OS_INSECURE',) + if https_enabled: + logger.info("https enabled...") + if insecure: + if insecure.lower() == "true": + insecure_option = ' --insecure ' + else: + logger.warn("Env variable OS_INSECURE is {}, if https + no " + "credential used, should be set as True." + .format(insecure)) + + cmd_check = "openstack %s network list" % insecure_option ret, msg = exec_cmd(cmd_check, logger) if ret: - logger.error("The credentials info in %s is invalid." % env_file) + logger.error("The credentials info in {} is invalid.".format(env_file)) return None - cmd = "openstack network list --long | grep 'External' | head -1 | \ - awk '{print $4}'" + cmd = "openstack %s network list --long | grep 'External' | head -1 | \ + awk '{print $4}'" % insecure_option ret, msg = exec_cmd(cmd, logger) if not ret: return msg @@ -134,7 +157,7 @@ def get_ext_net_name(env_file, logger=None): def store_db_results(db_url, build_tag, testcase, dest_file, logger): url = "%s?build_tag=%s-%s" % (db_url, build_tag, testcase) - logger.debug("Query to rest api: %s", url) + logger.debug("Query to rest api: {}".format(url)) try: data = json.load(urllib2.urlopen(url)) if data['results']: @@ -144,7 +167,8 @@ def store_db_results(db_url, build_tag, testcase, dest_file, logger): else: return False except Exception as e: - logger.error("Cannot read content from %s, exception: %s", url, e) + logger.exception( + "Cannot read content from {}, exception: {}".format(url, e)) return False @@ -157,7 +181,7 @@ def get_duration(start_date, stop_date, logger): res = "%sm%ss" % (delta / 60, delta % 60) return res except ValueError as e: - logger.error("ValueError: %s", e) + logger.exception("ValueError: {}".format(e)) return None @@ -171,24 +195,23 @@ def show_progress_bar(length): def check_docker_version(logger=None): - ret, server_ver = exec_cmd("sudo docker version -f'{{.Server.Version}}'", - logger=logger) - ret, client_ver = exec_cmd("sudo docker version -f'{{.Client.Version}}'", - logger=logger) - logger.info("\ndocker version: \nclient:%s\nserver:%s", client_ver, - server_ver) - if(LooseVersion(client_ver) <= LooseVersion('1.8.0') or - LooseVersion(server_ver) <= LooseVersion('1.8.0')): - logger.warn("\n\nDocker version is too old, may cause unpredictable " - "errors, you can update or install the lastest docker " - "for both host and container as below:\nwget -qO- " - "https://get.docker.com/ | sh\n\nClient:%s\nServer:%s", - client_ver, server_ver) - exit(-1) - - if(client_ver != server_ver): - logger.warn("\n\nVersion mismatch, may cause unpredictable " - "errors, you can update or install the lastest " - "docker for both host and container as below:\nwget " - "-qO- https://get.docker.com/ | " - "sh\n\nClient:%s\nServer:%s", client_ver, server_ver) + server_ret, server_ver = \ + exec_cmd("sudo docker version -f'{{.Server.Version}}'", logger=logger) + client_ret, client_ver = \ + exec_cmd("sudo docker version -f'{{.Client.Version}}'", logger=logger) + if server_ret == 0: + logger.debug("docker server version: {}".format(server_ver)) + if server_ret != 0 or (LooseVersion(server_ver) < LooseVersion('1.12.3')): + logger.error("Don't support this Docker server version. " + "Docker server should be updated to at least 1.12.3.") + if client_ret == 0: + logger.debug("docker client version: {}".format(client_ver)) + if client_ret != 0 or (LooseVersion(client_ver) < LooseVersion('1.12.3')): + logger.error("Don't support this Docker client version. " + "Docker client should be updated to at least 1.12.3.") + + +def add_hosts_info(hosts_info): + hosts_file = '/etc/hosts' + with open(hosts_file, 'a') as f: + f.write("{}\n".format(hosts_info)) |