From 13aa60d4c34994c12b24c140547ed300e77fd494 Mon Sep 17 00:00:00 2001 From: Ondřej Šmalec Date: Thu, 23 Jan 2020 12:56:18 +0100 Subject: Help script to remove runtime images from datalist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue-ID: OOM-2276 Signed-off-by: Ondřej Šmalec Change-Id: I8f848dbb73747f0744a16fb5831627c20d9f8303 --- tools/remove_runtime_images.py | 79 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 tools/remove_runtime_images.py (limited to 'tools') diff --git a/tools/remove_runtime_images.py b/tools/remove_runtime_images.py new file mode 100755 index 00000000..67d732bb --- /dev/null +++ b/tools/remove_runtime_images.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +import yaml +import sys +import argparse + + +class ModifiedParser(argparse.ArgumentParser): + """ + modified error handling to print help + """ + def error(self, message): + sys.stderr.write('error: %s\n' % message) + self.print_help() + sys.exit(2) + + +def create_blacklist(config_file): + """ + Generate a list of images which needs to be excluded from docker_image_list + :param config_file: application_configuration file where images are. + :return: + """ + with open(config_file, 'r') as f: + file = yaml.load(f, Loader=yaml.SafeLoader) + + blacklist=[] + for name, _ in file['runtime_images'].items(): + path = file['runtime_images'][name]['path'] + blacklist.append(path[1:]) + return blacklist + + +def should_remove_line(line, blacklist): + """ + Helping function to match image in blacklist + :param line: line in datalist file + :param blacklist: list of images to be removed + :return + """ + return any([image in line for image in blacklist]) + + +def update_datalist(config_file, datalist): + """ + remove local images from datalist. + :param config_file: application_configuration file where images are. + :param datalist: docker_image_list to be updated + :return: + """ + blacklist = create_blacklist(config_file) + data = [] + with open(datalist, 'r') as f: + for line in f: + if not should_remove_line(line, blacklist): + data.append(line) + with open(datalist, 'w') as f: + for line in data: + f.write(line) + + +def run_cli(): + """ + Run as cli tool + """ + + parser = ModifiedParser(description='Remove runtime images from docker_image_list') + + parser.add_argument('config_file', + help='application_configuration file where images are') + parser.add_argument('datalist', + help='docker_image_list from where images should be removed') + args = parser.parse_args() + + update_datalist(args.config_file, args.datalist) + + +if __name__ == '__main__': + run_cli() + -- cgit 1.2.3-korg