Enhance possibilities of dcm command for handy using * define new commnads * dump services * services order startup
117 lines
2.3 KiB
Python
Executable File
117 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
"""
|
|
pulsar
|
|
# wait-for-pulsar <check-delay> <max-duration>
|
|
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()
|