Improve dcm script

add "commands" command for listing all commands
This commit is contained in:
Martin Blazik
2022-06-02 08:11:12 +02:00
parent b861cee16e
commit dff4916ed2

59
bin/dcm
View File

@@ -57,7 +57,7 @@ def load_dc_file(dc_file):
def dc_cmd(args): def dc_cmd(args):
# split join # split join
args = join_args(args) args = join_args(args)
return join_args([DOCKER_COMPOSE, DC_FILES_ARGS, args]) return join_args([DOCKER_COMPOSE, DC_FILES_ARGS, args])
@@ -70,13 +70,18 @@ def dc_run(args):
def dc_log(args): def dc_log(args):
args = ["logs", "--no-color"] + args + [r"| sed -r 's/^[^|]+\| //g'"] args = ["logs", "--no-color"] + args + [r"| sed -r 's/^[^|]+\| //g'"]
dc_run(args) dc_run(args)
def dc_services(dc_file): def dc_services(dc_file):
dc = load_dc_file(dc_file) dc = load_dc_file(dc_file)
return [service for service in dc["services"].keys()] return [service for service in dc["services"].keys()]
def dc_commands(args):
for key in sorted(COMMANDS.keys()):
print(key)
def dump_services(files): def dump_services(files):
services = [(filename, service) for filename in files for service in dc_services(filename)] services = [(filename, service) for filename in files for service in dc_services(filename)]
services = map(itemgetter(1), services) services = map(itemgetter(1), services)
@@ -102,7 +107,7 @@ def deps_find(service, deps):
if new: if new:
new_list = " ".join(new) new_list = " ".join(new)
print(f"{service} >> {new_list}") print(f"{service} >> {new_list}")
all.update(services) all.update(services)
del deps[service] del deps[service]
for one in new: for one in new:
all.update(deps_find(one, deps)) all.update(deps_find(one, deps))
@@ -114,7 +119,7 @@ def dc_deps(dc_files, args):
pp = PrettyPrinter(indent=2) pp = PrettyPrinter(indent=2)
for dc_file in dc_files: for dc_file in dc_files:
deps = deps_load(dc_file) deps = deps_load(dc_file)
if service in deps: if service in deps:
all = sorted(deps_find(service, deps)) all = sorted(deps_find(service, deps))
print("ALL >> " + " ".join(all)) print("ALL >> " + " ".join(all))
return return
@@ -145,7 +150,7 @@ def wait_for(check, delay, duration):
def service_wait(service, check, delay = 10, duration = 120): def service_wait(service, check, delay = 10, duration = 120):
echo(f"WAIT FOR {service}") echo(f"WAIT FOR {service}")
started = wait_for(check, delay, duration) started = wait_for(check, delay, duration)
if started: if started:
echo(f"READY {service}") echo(f"READY {service}")
else: else:
@@ -171,7 +176,7 @@ def dc_check(args):
def dc_up(services): def dc_up(services):
dc_run(["up", "-d", join_args(services)]) dc_run(["up", "-d"] + services)
def dc_wait(args): def dc_wait(args):
@@ -190,9 +195,14 @@ def dc_on(args):
service_wait(service, check) service_wait(service, check)
def dc_build_parallel(args):
services = args
dc_run(["build", "--parallel"] + args)
def tiger_on(): def tiger_on():
dc_on(["pulsar", "postgres"]) dc_on(["pulsar", "postgres"])
dc_up(["redis", "jaeger", "router"]) dc_up(["redis", "jaeger", "router"])
dc_on(["result-cache", "metadata-api", "aqe", "sql-executor", "scan-model", "afm-exec-api"]) dc_on(["result-cache", "metadata-api", "aqe", "sql-executor", "scan-model", "afm-exec-api"])
@@ -210,11 +220,11 @@ DC_FILES = try_load_list("DCF", DEFAULT_DCF)
DC_FILES_ARGS = dc_files(DC_FILES) DC_FILES_ARGS = dc_files(DC_FILES)
SERVICES = { SERVICES = {
"pulsar": "pulsar":
lambda: lambda:
curl_check("http://localhost:8080/admin/v2/tenants/public"), curl_check("http://localhost:8080/admin/v2/tenants/public"),
"postgres": "postgres":
lambda: lambda:
system("/usr/bin/pg_isready") == 0, system("/usr/bin/pg_isready") == 0,
"redis": "redis":
lambda: lambda:
@@ -223,33 +233,36 @@ SERVICES = {
"aqe": "aqe":
lambda: lambda:
True, True,
"metadata-api": "metadata-api":
lambda: lambda:
curl_check("http://localhost:9008/actuator/health/readiness"), curl_check("http://localhost:9008/actuator/health/readiness"),
"afm-exec-api": "afm-exec-api":
lambda: lambda:
curl_check("http://localhost:9001/actuator/health/readiness"), curl_check("http://localhost:9001/actuator/health/readiness"),
"result-cache": "result-cache":
lambda: lambda:
curl_check("http://localhost:9041/actuator/health/readiness"), curl_check("http://localhost:9041/actuator/health/readiness"),
"scan-model": "scan-model":
lambda: lambda:
curl_check("http://localhost:9061/actuator/health/readiness"), curl_check("http://localhost:9061/actuator/health/readiness"),
"sql-executor": "sql-executor":
lambda: lambda:
curl_check("http://localhost:9101/actuator/health/readiness"), curl_check("http://localhost:9101/actuator/health/readiness"),
"data-loader": "data-loader":
None, # co chci testovat? ze ma Exit code 0 None, # co chci testovat? ze ma Exit code 0
} }
COMMANDS = { COMMANDS = {
"files": lambda args: dump_files(DC_FILES), "files": lambda args: dump_files(DC_FILES),
"commands": dc_commands,
"services": lambda args: dump_services(DC_FILES), "services": lambda args: dump_services(DC_FILES),
"log": dc_log, "log": dc_log,
"deps": lambda args: dc_deps(DC_FILES, args), "deps": lambda args: dc_deps(DC_FILES, args),
"check": dc_check, "check": dc_check,
"wait": dc_wait, "wait": dc_wait,
"on": dc_on, "on": dc_on,
"pb": dc_build_parallel,
"bp": dc_build_parallel,
} }
@@ -262,7 +275,7 @@ def main():
exit(dc_run(args)) exit(dc_run(args))
if __name__ == '__main__': if __name__ == '__main__':
try: try:
main() main()
except KeyboardInterrupt: except KeyboardInterrupt: