summaryrefslogtreecommitdiffstats
path: root/dovetail/utils/dovetail_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'dovetail/utils/dovetail_utils.py')
-rw-r--r--dovetail/utils/dovetail_utils.py89
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))