From c9df73bbec1a69abc04d0a4acac75aefd5842b0f Mon Sep 17 00:00:00 2001 From: MatthewLi Date: Mon, 8 May 2017 05:28:15 -0400 Subject: store/load offline docker images JIRA: DOVETAIL-423 usage: 1.cd ${DOVETAIL_HOME}/dovetail/utils/offline 2.edit config.yaml as needed 3.on onsite host, --> save docker images to defined path 4.on offline host, ---> load docker images to offline env 5.this can be easily extended to other images beside docker images Change-Id: I97d843e154ecf8d66cafb9ea9594fe73343ee591 Signed-off-by: MatthewLi --- dovetail/utils/offline/download.py | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 dovetail/utils/offline/download.py (limited to 'dovetail/utils/offline/download.py') diff --git a/dovetail/utils/offline/download.py b/dovetail/utils/offline/download.py new file mode 100755 index 00000000..cda4ecca --- /dev/null +++ b/dovetail/utils/offline/download.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +import os +import yaml + +import dovetail.utils.dovetail_utils as dt_utils + + +class download(object): + + def __init__(self): + self.curr_path = os.path.dirname(os.path.abspath(__file__)) + with open(os.path.join(self.curr_path, 'config.yaml')) as f: + self.config = yaml.safe_load(f) + + def main(self): + keys = self.config.keys() + if 'docker_save_path' in keys: + save_path = self.config['docker_save_path'] + else: + save_path = self.curr_path + print "save files to path %s" % save_path + if 'docker_images' in keys: + for key, value in self.config['docker_images'].items(): + if value is not None: + tag = str(self.config['docker_images'][key]['tag']) + if 'domain' in self.config['docker_images'][key]: + domain = self.config['docker_images'][key]['domain'] + image_name = ''.join([domain, '/', key, ':', tag]) + else: + image_name = ''.join([key, ':', tag]) + cmd = 'sudo docker pull %s' % image_name + dt_utils.exec_cmd(cmd) + if not os.path.exists(save_path): + os.makedirs(save_path) + StoreName = self.config['docker_images'][key]['store_name'] + image_save_path = ''.join([save_path, StoreName]) + cmd = 'sudo docker save -o %s %s' % \ + (image_save_path, image_name) + dt_utils.exec_cmd(cmd) + cmd = 'sudo chmod og+rw %s' % image_save_path + dt_utils.exec_cmd(cmd) + + +if __name__ == '__main__': + download = download() + download.main() -- cgit 1.2.3-korg