diff options
author | Christopher Price <christopher.price@ericsson.com> | 2016-09-20 08:43:07 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@172.30.200.206> | 2016-09-20 08:43:07 +0000 |
commit | 12ccdb880573fc7efc90bb34313d3ff2768e7f76 (patch) | |
tree | 434725455c774a843cecf570680f5e929c8c7b9a /scripts/container.py | |
parent | a4a2f38ff554089fe72136a9f933d57c33f16d71 (diff) | |
parent | cb55f6dbfe4867e4d232f51b5a32764f82d2399b (diff) |
Merge "add prototype of dovetail tool"
Diffstat (limited to 'scripts/container.py')
-rw-r--r-- | scripts/container.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/scripts/container.py b/scripts/container.py new file mode 100644 index 00000000..4bbc5e5b --- /dev/null +++ b/scripts/container.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python +# +# grakiss.wanglei@huawei.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# + +import utils.dovetail_logger as dt_logger +import utils.dovetail_utils as dt_utils +from conf.dovetail_config import * + +logger = dt_logger.Logger('container.py').getLogger() + +class Container: + + container_list = {} + + def __init__(cls): + pass + + def __str__(cls): + pass + + @classmethod + def get(cls, type): + return cls.container_list[type] + + @classmethod + def get_docker_image(cls, type): + return '%s:%s' % (dovetail_config[type]['image_name'], dovetail_config[type]['docker_tag']) + + @classmethod + def create(cls, type): + #sshkey="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa " + docker_image = cls.get_docker_image(type) + envs = dovetail_config[type]['envs'] + opts = dovetail_config[type]['opts'] + sshkey = '' + result_volume = ' -v %s:%s ' % (dovetail_config['result_dir'],dovetail_config[type]['result']['dir']) + cmd = 'sudo docker run %s %s %s %s %s /bin/bash' % (opts, envs, sshkey, result_volume, docker_image) + dt_utils.exec_cmd(cmd,logger) + ret, container_id=dt_utils.exec_cmd("sudo docker ps | grep "+ docker_image + " | awk '{print $1}' | head -1",logger) + cls.container_list[type] = container_id + return container_id + + @classmethod + def pull_image(cls, type): + docker_image = cls.get_docker_image(type) + if container_config[type]['has_pull'] == True: + logger.debug('%s is already the newest version.' % (docker_image)) + else: + cmd = 'sudo docker pull %s' % (docker_image) + dt_utils.exec_cmd(cmd,logger) + container_config[type]['has_pull'] = True + + @classmethod + def clean(cls, container_id): + cmd1 = 'sudo docker stop %s' % (container_id) + dt_utils.exec_cmd(cmd1,logger) + cmd2 = 'sudo docker rm %s' % (container_id) + dt_utils.exec_cmd(cmd2,logger) + + @classmethod + def exec_cmd(cls, container_id, sub_cmd, exit_on_error=False): + cmd = 'sudo docker exec %s %s' % (container_id, sub_cmd) + dt_utils.exec_cmd(cmd,logger,exit_on_error) + + |