diff --git a/bin/dcm b/bin/dcm index 56e98d5..1933fea 100755 --- a/bin/dcm +++ b/bin/dcm @@ -1,17 +1,5 @@ #!/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 @@ -39,6 +27,24 @@ def load_dc_file(dc_file): return dc +def dc_cmd(args): + # split join + args = " ".join(args) + return " ".join([DOCKER_COMPOSE, DC_FILES_ARGS, args]) + + +def dc_run(args): + cmd = dc_cmd(args) + print(cmd) + returned_value = subprocess.call(cmd, shell=True) + exit(returned_value) + + +def dc_log(args): + args = ["logs"] + args + [r"| sed -r 's/^[^|]+\| //g'"] + dc_run(args) + + def dc_services(dc_file): dc = load_dc_file(dc_file) return [service for service in dc["services"].keys()] @@ -50,6 +56,10 @@ def dump_services(files): print(service) +def service_dependencies(service, dc_files): + pass + + def dump_files(files): for file in files: print(file) @@ -72,6 +82,17 @@ def wait_for(check, delay, duration): sleep(delay) +def up_and_wait(service, check, delay, duration): + pass + + +def start_tiger(): + up_and_wait("pulsar", check_pulsar, 5, 60) + up(["redis", "jaeger", "router"]) + up_and_wait("postgres", check_postgres, 5, 60) + up(["aqe", "afm-exec-api", "result-cache", "scan-model", "sql-executor", "metadata-api-new"]) + + def try_load_list(name, default): if name in os.environ: return split(os.environ[name]) @@ -79,10 +100,13 @@ def try_load_list(name, default): return default -DCF = ["docker-compose.yaml", "docker-compose-monitoring.yaml"] -DCF = try_load_list("DCF", DCF) +DOCKER_COMPOSE = "docker-compose" -TIGER_SERVICES = [ +DEFAULT_DCF = ["docker-compose.yaml"] +DC_FILES = try_load_list("DCF", DEFAULT_DCF) +DC_FILES_ARGS = dc_files(DC_FILES) + +DEFAULT_TIGER_SERVICES = [ "afm-exec-api", "metadata-api-new", "aqe", @@ -90,27 +114,24 @@ TIGER_SERVICES = [ "scan-model", "sql-executor" ] -TIGER_SERVICES = try_load_list("SERVICES", TIGER_SERVICES) +TIGER_SERVICES = try_load_list("SERVICES", DEFAULT_TIGER_SERVICES) COMMANDS = { - "files": lambda: dump_files(DCF), - "services": lambda: dump_services(DCF) - # deps - vypis zavyslosti - # logs - aby se nemuselo zadavat tolik argumentu + "files": lambda args: dump_files(DC_FILES), + "services": lambda args: dump_services(DC_FILES), + "log": dc_log + # "dep": } 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) + args = argv[1:] + action = args[0] if args else None + if action in COMMANDS: + COMMANDS[action](args[1:]) + else: + dc_run(args) if __name__ == '__main__': - action = argv[1] if len(argv) > 1 else None - if action in COMMANDS: - COMMANDS[action]() - else: - main() + main()