diff --git a/app/services/itop_service.py b/app/services/itop_service.py index cfd46c6..9b3627d 100644 --- a/app/services/itop_service.py +++ b/app/services/itop_service.py @@ -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: