Sync iTop: tous les champs custom (tier, connexion, ssh_user, patch_freq, pref_jour/heure, domain_ldap, excludes)

Correspondance complete iTop <-> PatchCenter:
- tier_name -> tier (Tier 0 -> tier0)
- connexion_method_name -> ssh_method
- ssh_user_name -> ssh_user
- patch_frequency_name -> patch_frequency (Monthly -> monthly)
- pref_patch_jour_name -> pref_patch_jour
- pref_patch_heure_name -> pref_patch_heure
- patch_excludes -> patch_excludes
- domain_ldap_name -> domain_ltd
This commit is contained in:
Pierre & Lumière 2026-04-11 02:28:39 +02:00
parent 3b5f0992b3
commit be6c5158b8

View File

@ -73,7 +73,10 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
"environnement,environnement_name,"
"domaine_applicatif_name,zone_name,"
"applicationsolution_list,contacts_list,"
"virtualhost_name,business_criticity")
"virtualhost_name,business_criticity,"
"tier_name,connexion_method_name,ssh_user_name,"
"patch_frequency_name,pref_patch_jour_name,pref_patch_heure_name,"
"patch_excludes,domain_ldap_name,last_patch_date")
# Also get physical Servers
phys = client.get_all("Server",
@ -175,6 +178,20 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
existing = db.execute(text("SELECT id FROM servers WHERE LOWER(hostname)=LOWER(:h)"),
{"h": hostname}).fetchone()
# Map tier: "Tier 0" -> "tier0"
tier_raw = v.get("tier_name", "")
tier = tier_raw.lower().replace(" ", "") if tier_raw else "a_definir"
# Map connexion_method -> ssh_method
ssh_method = v.get("connexion_method_name", "") or "ssh_key"
# Map patch_frequency: "Monthly" -> "monthly"
patch_freq = (v.get("patch_frequency_name", "") or "").lower() or None
# Map pref_patch_jour/heure
pref_jour = (v.get("pref_patch_jour_name", "") or "").lower() or "indifferent"
pref_heure = v.get("pref_patch_heure_name", "") or "indifferent"
vals = {
"hostname": hostname,
"fqdn": v.get("name", hostname),
@ -192,6 +209,14 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
"cpu": v.get("cpu", ""),
"ram": v.get("ram", ""),
"hypervisor": v.get("virtualhost_name", ""),
"tier": tier,
"ssh_method": ssh_method,
"ssh_user": v.get("ssh_user_name", "") or "root",
"patch_freq": patch_freq,
"patch_excludes": v.get("patch_excludes", ""),
"domain_ltd": v.get("domain_ldap_name", ""),
"pref_jour": pref_jour,
"pref_heure": pref_heure,
}
if existing:
@ -199,7 +224,11 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
UPDATE servers SET fqdn=:fqdn, os_family=:os_family, os_version=:os_version,
etat=:etat, domain_env_id=:de_id, zone_id=:zone_id,
responsable_nom=:resp_srv, referent_nom=:resp_dom,
commentaire=:desc, updated_at=NOW()
commentaire=:desc, tier=:tier, ssh_method=:ssh_method,
ssh_user=:ssh_user, patch_frequency=:patch_freq,
patch_excludes=:patch_excludes, domain_ltd=:domain_ltd,
pref_patch_jour=:pref_jour, pref_patch_heure=:pref_heure,
updated_at=NOW()
WHERE id=:sid
"""), {**vals, "sid": existing.id})
stats["servers_updated"] += 1
@ -208,10 +237,14 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
db.execute(text("""
INSERT INTO servers (hostname, fqdn, os_family, os_version, machine_type,
etat, domain_env_id, zone_id, responsable_nom, referent_nom,
commentaire, ssh_port, ssh_user, ssh_method, tier)
commentaire, ssh_port, ssh_user, ssh_method, tier,
patch_frequency, patch_excludes, domain_ltd,
pref_patch_jour, pref_patch_heure)
VALUES (:hostname, :fqdn, :os_family, :os_version, :machine_type,
:etat, :de_id, :zone_id, :resp_srv, :resp_dom,
:desc, 22, 'root', 'ssh_key', 'a_definir')
:desc, 22, :ssh_user, :ssh_method, :tier,
:patch_freq, :patch_excludes, :domain_ltd,
:pref_jour, :pref_heure)
"""), vals)
stats["servers_created"] += 1
except Exception as e: