align_from_ayoub: dry-run affiche les domains/envs/paires a creer

This commit is contained in:
Pierre & Lumière 2026-04-14 19:26:26 +02:00
parent 331e6b2946
commit 991f4dd6dc

View File

@ -180,6 +180,9 @@ def main():
seen_dom = {}
seen_env = {}
changes = []
would_create_dom = set()
would_create_env = set()
would_create_de = set()
for row in ws.iter_rows(min_row=2, values_only=True):
hostname = clean(row[idx_host]) if idx_host < len(row) else None
@ -209,40 +212,43 @@ def main():
de_id = srv.domain_env_id
if dom_name and env_name:
if dom_name not in seen_dom:
before = conn.execute(text("SELECT COUNT(*) FROM domains")).scalar()
if not args.dry_run:
did = get_or_create_domain(conn, dom_name)
else:
row_ = conn.execute(text("SELECT id FROM domains WHERE name=:n"),
existing = conn.execute(text("SELECT id FROM domains WHERE name=:n"),
{"n": dom_name}).fetchone()
did = row_.id if row_ else -1
after = conn.execute(text("SELECT COUNT(*) FROM domains")).scalar()
if after > before:
if existing:
seen_dom[dom_name] = existing.id
elif args.dry_run:
would_create_dom.add(dom_name)
seen_dom[dom_name] = -1 # sera cree au vrai run
else:
seen_dom[dom_name] = get_or_create_domain(conn, dom_name)
stats["dom_created"] += 1
seen_dom[dom_name] = did
if env_name not in seen_env:
before = conn.execute(text("SELECT COUNT(*) FROM environments")).scalar()
if not args.dry_run:
eid = get_or_create_env(conn, env_name)
else:
row_ = conn.execute(text("SELECT id FROM environments WHERE name=:n"),
existing = conn.execute(text("SELECT id FROM environments WHERE name=:n"),
{"n": env_name}).fetchone()
eid = row_.id if row_ else -1
after = conn.execute(text("SELECT COUNT(*) FROM environments")).scalar()
if after > before:
if existing:
seen_env[env_name] = existing.id
elif args.dry_run:
would_create_env.add(env_name)
seen_env[env_name] = -1
else:
seen_env[env_name] = get_or_create_env(conn, env_name)
stats["env_created"] += 1
seen_env[env_name] = eid
did = seen_dom[dom_name]
eid = seen_env[env_name]
if did > 0 and eid > 0:
if not args.dry_run:
before = conn.execute(text("SELECT COUNT(*) FROM domain_environments")).scalar()
existing = conn.execute(text(
"SELECT id FROM domain_environments WHERE domain_id=:d AND environment_id=:e"
), {"d": did, "e": eid}).fetchone()
if existing:
de_id = existing.id
elif args.dry_run:
would_create_de.add((dom_name, env_name))
else:
de_id = get_or_create_dom_env(conn, did, eid)
after = conn.execute(text("SELECT COUNT(*) FROM domain_environments")).scalar()
if after > before:
stats["de_created"] += 1
stats["de_created"] += 1
if not args.dry_run and de_id:
# Sync responsable/referent sur domain_environments (max 1 valeur — on garde la derniere vue)
if resp or ref:
up = {}
@ -279,6 +285,15 @@ def main():
conn.execute(text(f"UPDATE servers SET {sets} WHERE id=:sid"), params)
stats["updated"] += 1
if args.dry_run:
if would_create_dom:
print(f"\n[DRY-RUN] Domaines a creer ({len(would_create_dom)}) : {sorted(would_create_dom)}")
if would_create_env:
print(f"[DRY-RUN] Environnements a creer ({len(would_create_env)}) : {sorted(would_create_env)}")
if would_create_de:
print(f"[DRY-RUN] Paires (domaine,env) a creer : {len(would_create_de)}")
for d, e in sorted(would_create_de)[:20]:
print(f" ({d}, {e})")
if args.dry_run and changes:
print(f"\n[DRY-RUN] {len(changes)} serveurs a mettre a jour (premiers 20):")
for h, u in changes[:20]: