summaryrefslogtreecommitdiffstats
path: root/tools/remove_runtime_images.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/remove_runtime_images.py')
-rwxr-xr-xtools/remove_runtime_images.py79
1 files changed, 79 insertions, 0 deletions
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()
+