Add fill_domain_ltd_by_prefix: convention SANEF vp/vi=sanef.groupe, vr/vt/vd=sanef-rec.fr
This commit is contained in:
parent
de41b66a34
commit
b315cee98b
66
tools/fill_domain_ltd_by_prefix.py
Normal file
66
tools/fill_domain_ltd_by_prefix.py
Normal file
@ -0,0 +1,66 @@
|
||||
"""Remplit servers.domain_ltd par convention SANEF (2eme lettre du hostname).
|
||||
|
||||
Regle:
|
||||
v[p|i]* -> sanef.groupe (prod/integration)
|
||||
v[r|t|d]* -> sanef-rec.fr (recette/test/dev)
|
||||
|
||||
Applique UNIQUEMENT aux serveurs dont domain_ltd est vide (NULL ou '').
|
||||
|
||||
Usage:
|
||||
python tools/fill_domain_ltd_by_prefix.py [--dry-run]
|
||||
"""
|
||||
import os
|
||||
import argparse
|
||||
from sqlalchemy import create_engine, text
|
||||
|
||||
DATABASE_URL = os.getenv("DATABASE_URL_DEMO") or os.getenv("DATABASE_URL") \
|
||||
or "postgresql://patchcenter:PatchCenter2026!@localhost:5432/patchcenter_demo"
|
||||
|
||||
RULES = {
|
||||
"p": "sanef.groupe",
|
||||
"i": "sanef.groupe",
|
||||
"r": "sanef-rec.fr",
|
||||
"t": "sanef-rec.fr",
|
||||
"d": "sanef-rec.fr",
|
||||
}
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--dry-run", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
engine = create_engine(DATABASE_URL)
|
||||
print(f"[INFO] DB: {DATABASE_URL.split('@')[-1]}")
|
||||
conn = engine.connect().execution_options(isolation_level="AUTOCOMMIT")
|
||||
|
||||
rows = conn.execute(text("""
|
||||
SELECT id, hostname FROM servers
|
||||
WHERE (domain_ltd IS NULL OR domain_ltd = '')
|
||||
ORDER BY hostname
|
||||
""")).fetchall()
|
||||
print(f"[INFO] {len(rows)} serveurs sans domain_ltd")
|
||||
|
||||
updated = skipped = 0
|
||||
for r in rows:
|
||||
h = (r.hostname or "").lower()
|
||||
if len(h) < 2 or h[0] != "v":
|
||||
skipped += 1
|
||||
continue
|
||||
domain = RULES.get(h[1])
|
||||
if not domain:
|
||||
skipped += 1
|
||||
continue
|
||||
if args.dry_run:
|
||||
print(f" DRY: {r.hostname:25s} -> {domain}")
|
||||
else:
|
||||
conn.execute(text("UPDATE servers SET domain_ltd=:d WHERE id=:sid"),
|
||||
{"d": domain, "sid": r.id})
|
||||
updated += 1
|
||||
|
||||
conn.close()
|
||||
print(f"\n[DONE] Maj: {updated} | Skip (hors regle): {skipped}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Reference in New Issue
Block a user