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.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/dovetail/utils/dovetail_utils.py b/dovetail/utils/dovetail_utils.py
index 9259b03f..1c4aca9d 100644
--- a/dovetail/utils/dovetail_utils.py
+++ b/dovetail/utils/dovetail_utils.py
@@ -21,6 +21,7 @@ from distutils.version import LooseVersion
import yaml
import python_hosts
import docker
+from docker.types import Mount
from dovetail import constants
from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
@@ -60,8 +61,9 @@ def exec_cmd(cmd, logger=None, exit_on_error=False, info=False,
count = 1
DEBUG = os.getenv('DEBUG')
for line in iter(p.stdout.readline, b''):
- exec_log(verbose, logger, line.strip(), level, True)
- stdout += line
+ exec_log(verbose, logger, line.strip().decode('unicode-escape'),
+ level, True)
+ stdout += str(line)
if progress_bar and (DEBUG is None or DEBUG.lower() != 'true'):
show_progress_bar(count)
count += 1
@@ -431,3 +433,26 @@ def push_results_to_db(case_name, details, start_date, stop_date, logger):
except Exception:
logger.exception('The results cannot be pushed to DB.')
return False
+
+
+def get_mount_list(project_cfg):
+ mount_list = []
+ mounts = get_value_from_dict('mounts', project_cfg)
+ for mount in mounts:
+ if mount:
+ param_dict = {}
+ for param in mount.split(','):
+ key_word = param.split('=')
+
+ if len(key_word) != 2:
+ return None, 'Error mount {}.'.format(mount)
+
+ param_dict[key_word[0]] = key_word[1]
+ try:
+ mount_list.append(Mount(target=param_dict['target'],
+ source=param_dict['source'],
+ type='bind'))
+ except Exception as e:
+ return None, e
+
+ return mount_list, 'Successfully to get mount list.'