Export iTop: sync responsable serveur et responsable domaine

This commit is contained in:
Pierre & Lumière 2026-04-11 13:26:51 +02:00
parent d8a526368e
commit 6683813743

View File

@ -362,9 +362,16 @@ def sync_to_itop(db, itop_url, itop_user, itop_pass):
"stock": "stock", "en_cours": "implementation"}
tier_map = {"tier0": "Tier 0", "tier1": "Tier 1", "tier2": "Tier 2", "tier3": "Tier 3"}
# Build Person name → itop_id lookup for responsable sync
itop_persons = {}
for p in client.get_all("Person", "name,first_name"):
fullname = f"{p.get('first_name','')} {p.get('name','')}".strip()
itop_persons[fullname.lower()] = p["itop_id"]
rows = db.execute(text("""SELECT hostname, fqdn, os_version, etat, commentaire, tier,
ssh_method, ssh_user, patch_frequency, patch_excludes, domain_ltd,
pref_patch_jour, pref_patch_heure FROM servers WHERE machine_type='vm'""")).fetchall()
pref_patch_jour, pref_patch_heure, responsable_nom, referent_nom
FROM servers WHERE machine_type='vm'""")).fetchall()
for srv in rows:
hostname = (srv.hostname or "").lower()
@ -392,6 +399,16 @@ def sync_to_itop(db, itop_url, itop_user, itop_pass):
fields["patch_window"] = srv.pref_patch_heure
if srv.domain_ltd:
fields["domain_ldap_id"] = f"SELECT DomainLdap WHERE name = '{srv.domain_ltd}'"
# Responsable serveur
if srv.responsable_nom:
pid = itop_persons.get(srv.responsable_nom.lower())
if pid:
fields["responsable_serveur_id"] = pid
# Responsable domaine
if srv.referent_nom:
pid = itop_persons.get(srv.referent_nom.lower())
if pid:
fields["responsable_domaine_id"] = pid
if itop_vm:
if fields: