diff --git a/registry_utils.py b/registry_utils.py new file mode 100644 index 0000000..1be1cdb --- /dev/null +++ b/registry_utils.py @@ -0,0 +1,68 @@ +import os +import subprocess +import json +import re +import getopt +import sys +from datetime import datetime, timedelta +from textwrap import indent +import yaml + +try: + opts, args = getopt.getopt(sys.argv[1:], "gr", ["command=", "help", "output="]) +except getopt.GetoptError as err: + #usage() + sys.exit(2) +output = None +# QJ : getopts +_MODE = "manual" +_FIRST = _TEST = _RESTORE = _BACKUP = _SYNC = _START = _STOP = False +_EXECUTE = True +_DATE = "pick" + +for o, a in opts: + if o == "-g": + _ACTION = "generate_config" + elif o in ("-r", "--registry"): + _ACTION = "write_to_registry" + else: + print("Parameter unknown") + sys.exit() + + +def get_docker_images(): + # Use openssl command to get certificate subject and expiration date + cmnd = "docker image ls" + status, output = subprocess.getstatusoutput(cmnd) + #output, _ = process.communicate() + #print(output) + data = output.splitlines() + return data + + +def generate_config(data): + local_registry = "localhost:5000/library/" + interval = "60m" + yaml_config = {"sync":[]} + for line in data: + if "localhost:5000" in line: + continue + d = line.split() + print(f"{d[0]} : {d[1]}") + image = d[0].split("/") + if "" == d[1]: + yaml_config["sync"].append({"source":f"{d[0]}","target": f"{local_registry}{d[0]}","type":"image","interval":interval,"backup": "\"backup-{{.Ref.Tag}}\""}) + else: + yaml_config["sync"].append({"source":f"{d[0]}:{d[1]}","target": f"{local_registry}{d[0]}:{d[1]}","type":"image","interval":interval,"backup": "\"backup-{{.Ref.Tag}}\""}) + config = yaml.dump(yaml_config,sort_keys=False) + print(config) + return config + + + + +if _ACTION == "generate_config": + generate_config(get_docker_images()) + +elif _ACTION == "write_to_registry": + get_docker_images()