Sync iTop: import emails responsable serveur/domaine dans servers + domain_environments
This commit is contained in:
parent
29e5a28a27
commit
df4cd3be6f
@ -177,6 +177,12 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
|
||||
env_map = {r.name.lower(): r.id for r in db.execute(text("SELECT id, name FROM environments")).fetchall()}
|
||||
zone_map = {r.name.lower(): r.id for r in db.execute(text("SELECT id, name FROM zones")).fetchall()}
|
||||
|
||||
# Person name → email lookup
|
||||
person_email = {}
|
||||
for p in persons:
|
||||
fullname = f"{p.get('first_name','')} {p.get('name','')}".strip()
|
||||
person_email[fullname.lower()] = p.get("email", "")
|
||||
|
||||
# ─── 7. VirtualMachines ───
|
||||
vms = client.get_all("VirtualMachine",
|
||||
"name,description,status,managementip,osfamily_id_friendlyname,"
|
||||
@ -208,8 +214,12 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
|
||||
de_id = row.id
|
||||
else:
|
||||
try:
|
||||
db.execute(text("INSERT INTO domain_environments (domain_id, environment_id, responsable_nom) VALUES (:d, :e, :r)"),
|
||||
{"d": did, "e": eid, "r": v.get("responsable_domaine_name", "")})
|
||||
resp_dom_name = v.get("responsable_domaine_name", "")
|
||||
resp_dom_email = person_email.get(resp_dom_name.lower(), "")
|
||||
db.execute(text("INSERT INTO domain_environments (domain_id, environment_id, responsable_nom, responsable_email, referent_nom, referent_email) VALUES (:d, :e, :rn, :re, :fn, :fe)"),
|
||||
{"d": did, "e": eid, "rn": resp_dom_name, "re": resp_dom_email,
|
||||
"fn": v.get("responsable_serveur_name", ""),
|
||||
"fe": person_email.get(v.get("responsable_serveur_name", "").lower(), "")})
|
||||
db.commit()
|
||||
row = db.execute(text("SELECT id FROM domain_environments WHERE domain_id=:d AND environment_id=:e"),
|
||||
{"d": did, "e": eid}).fetchone()
|
||||
@ -225,6 +235,9 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
|
||||
pref_jour = (v.get("pref_patch_jour_name", "") or "").lower() or "indifferent"
|
||||
pref_heure = v.get("patch_window", "") or "indifferent"
|
||||
|
||||
resp_srv_name = v.get("responsable_serveur_name", "")
|
||||
resp_dom_name = v.get("responsable_domaine_name", "")
|
||||
|
||||
vals = {
|
||||
"hostname": hostname, "fqdn": v.get("name", hostname),
|
||||
"os_family": "linux" if "linux" in v.get("osfamily_id_friendlyname", "").lower() else "windows",
|
||||
@ -232,8 +245,10 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
|
||||
"machine_type": "vm",
|
||||
"etat": itop_status.get(v.get("status", ""), "en_production"),
|
||||
"de_id": de_id, "zone_id": zone_id,
|
||||
"resp_srv": v.get("responsable_serveur_name", ""),
|
||||
"resp_dom": v.get("responsable_domaine_name", ""),
|
||||
"resp_srv": resp_srv_name,
|
||||
"resp_srv_email": person_email.get(resp_srv_name.lower(), ""),
|
||||
"resp_dom": resp_dom_name,
|
||||
"resp_dom_email": person_email.get(resp_dom_name.lower(), ""),
|
||||
"desc": v.get("description", ""),
|
||||
"ip": v.get("managementip", ""),
|
||||
"tier": tier, "ssh_method": ssh_method,
|
||||
@ -247,7 +262,8 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
|
||||
if existing:
|
||||
db.execute(text("""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,
|
||||
responsable_nom=:resp_srv, responsable_email=:resp_srv_email,
|
||||
referent_nom=:resp_dom, referent_email=:resp_dom_email, 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,
|
||||
@ -259,11 +275,13 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
|
||||
else:
|
||||
try:
|
||||
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,
|
||||
etat, domain_env_id, zone_id, responsable_nom, responsable_email,
|
||||
referent_nom, referent_email, 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,
|
||||
:etat, :de_id, :zone_id, :resp_srv, :resp_srv_email,
|
||||
:resp_dom, :resp_dom_email, :desc,
|
||||
22, :ssh_user, :ssh_method, :tier, :patch_freq, :patch_excludes,
|
||||
:domain_ltd, :pref_jour, :pref_heure)"""), vals)
|
||||
db.flush()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user