#!/usr/bin/env python3 """ pulsar # wait-for-pulsar pulsar-create-namespace # wait-for-pulsar-create-namespace - wanted return code 0 postgres redis jaeger router # wait-for-postgres # jeste poresit fazovani metadata-api-new aqe afm-exec-api result-cache scan-model sql-executor swagger-ui """ import subprocess import yaml import pprint import os import re from sys import argv from time import time, sleep def split(text): return re.split(r'\s+', text) def prefix_join(prefix, array): return " ".join([prefix + " " + item for item in array]) def dc_files(files): return prefix_join("-f", files) def load_dc_file(dc_file): with open(dc_file) as yamlFile: dc = yaml.load(yamlFile, Loader=yaml.FullLoader) return dc def dc_services(dc_file): dc = load_dc_file(dc_file) return [service for service in dc["services"].keys()] def dump_services(files): for filename in files: for service in dc_services(filename): print(service) def dump_files(files): for file in files: print(file) def check_pulsar(): return False def check_postgres(): return False def wait_for(check, delay, duration): start = time() while time() - start < duration: if check(): return True else: sleep(delay) def try_load_list(name, default): if name in os.environ: return split(os.environ[name]) else: return default DCF = ["docker-compose.yaml", "docker-compose-monitoring.yaml"] DCF = try_load_list("DCF", DCF) TIGER_SERVICES = [ "afm-exec-api", "metadata-api-new", "aqe", "result-cache", "scan-model", "sql-executor" ] TIGER_SERVICES = try_load_list("SERVICES", TIGER_SERVICES) COMMANDS = { "files": lambda: dump_files(DCF), "services": lambda: dump_services(DCF) # deps - vypis zavyslosti # logs - aby se nemuselo zadavat tolik argumentu } def main(): args = " ".join(argv[1:]) cmd = " ".join(["docker-compose", dc_files(DCF), args]) print(cmd) returned_value = subprocess.call(cmd, shell=True) exit(returned_value) if __name__ == '__main__': action = argv[1] if len(argv) > 1 else None if action in COMMANDS: COMMANDS[action]() else: main()