support plain text lists as input & proper logging
parent
cf7350ea98
commit
46d0d8c502
|
|
@ -0,0 +1,6 @@
|
|||
/srv/services/gitea
|
||||
/srv/services/http
|
||||
/srv/services/icinga
|
||||
/srv/services/rz_measurements
|
||||
/srv/services/traefik
|
||||
/home/clemens/hg/biodiv2go/games/web
|
||||
47
start.py
47
start.py
|
|
@ -2,24 +2,45 @@ import argparse
|
|||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import logging
|
||||
|
||||
def start(config):
|
||||
with open(config, "r") as src:
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def change_service(path, cmd):
|
||||
r = subprocess.run(cmd, cwd=path)
|
||||
log.info(f"processed {path}", extra={"path": path, "cmd": cmd, "returncode": r.returncode})
|
||||
|
||||
|
||||
def load_json(config_file):
|
||||
with open(config_file, "r") as src:
|
||||
data = json.load(src)
|
||||
if data:
|
||||
for base in data:
|
||||
for service in data[base]:
|
||||
path = os.path.join(base, service)
|
||||
print(path)
|
||||
r = subprocess.run(["docker-compose", "up", "-d"], cwd=path)
|
||||
print(r)
|
||||
return [os.path.join(base, service) for base in data for service in data[base]]
|
||||
|
||||
|
||||
def load_raw(config_file):
|
||||
with open(config_file) as src:
|
||||
return [line.strip() for line in src]
|
||||
|
||||
|
||||
config_types = {
|
||||
"json": load_json,
|
||||
"raw": load_raw
|
||||
}
|
||||
|
||||
|
||||
def apply(config_file, action, type):
|
||||
cmd = ["docker-compose"] + action.split()
|
||||
for path in config_types[type](config_file):
|
||||
change_service(path, cmd)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(format="%(message)s (status %(returncode)s)", level=logging.INFO)
|
||||
parser = argparse.ArgumentParser(description="Docker-compose Autostart")
|
||||
parser.add_argument("config_file")
|
||||
|
||||
parser.add_argument("--type", "-t", default="raw", choices=config_types)
|
||||
parser.add_argument("--action", "-a", default="up -d")
|
||||
args = parser.parse_args()
|
||||
|
||||
start(args.config_file)
|
||||
|
||||
|
||||
apply(args.config_file, args.action, args.type)
|
||||
|
|
|
|||
Loading…
Reference in New Issue