SPB Git
1.3 KB · 52 lines python
1"""Registre des déploiements (source de vérité) : ~/dispatch/registry.json."""2import json3import os4import time5from . import config678def load():9    if os.path.exists(config.REGISTRY):10        return json.load(open(config.REGISTRY))11    return {"updated": None, "gateway": config.GATEWAY, "apps": {}, "history": []}121314def save(r):15    r["updated"] = time.strftime("%Y-%m-%dT%H:%M:%S")16    r["gateway"] = config.GATEWAY17    tmp = config.REGISTRY + ".tmp"18    json.dump(r, open(tmp, "w"), indent=2, ensure_ascii=False)19    os.replace(tmp, config.REGISTRY)202122def node_of(app):23    return load()["apps"].get(app, {}).get("node")242526def apps_on(alias):27    return [a for a, v in load()["apps"].items() if v.get("node") == alias]282930def set_app(app, **fields):31    r = load()32    cur = r["apps"].get(app, {})33    cur.update(fields)34    cur["updated"] = time.strftime("%Y-%m-%dT%H:%M:%S")35    r["apps"][app] = cur36    save(r)373839def remove_app(app, note=""):40    r = load()41    if app in r["apps"]:42        r["history"].append({"ts": time.strftime("%Y-%m-%dT%H:%M:%S"), "app": app, "event": "removed", "was": r["apps"][app], "note": note})43        del r["apps"][app]44    save(r)454647def log(app, event, **kw):48    r = load()49    r["history"].append(dict(ts=time.strftime("%Y-%m-%dT%H:%M:%S"), app=app, event=event, **kw))50    r["history"] = r["history"][-500:]51    save(r)52
Files · 29a50362078452d2dd01b6b79868199cb58a3d0f
Menu

Theme