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()}
|
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()}
|
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 ───
|
# ─── 7. VirtualMachines ───
|
||||||
vms = client.get_all("VirtualMachine",
|
vms = client.get_all("VirtualMachine",
|
||||||
"name,description,status,managementip,osfamily_id_friendlyname,"
|
"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
|
de_id = row.id
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
db.execute(text("INSERT INTO domain_environments (domain_id, environment_id, responsable_nom) VALUES (:d, :e, :r)"),
|
resp_dom_name = v.get("responsable_domaine_name", "")
|
||||||
{"d": did, "e": eid, "r": 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()
|
db.commit()
|
||||||
row = db.execute(text("SELECT id FROM domain_environments WHERE domain_id=:d AND environment_id=:e"),
|
row = db.execute(text("SELECT id FROM domain_environments WHERE domain_id=:d AND environment_id=:e"),
|
||||||
{"d": did, "e": eid}).fetchone()
|
{"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_jour = (v.get("pref_patch_jour_name", "") or "").lower() or "indifferent"
|
||||||
pref_heure = v.get("patch_window", "") 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 = {
|
vals = {
|
||||||
"hostname": hostname, "fqdn": v.get("name", hostname),
|
"hostname": hostname, "fqdn": v.get("name", hostname),
|
||||||
"os_family": "linux" if "linux" in v.get("osfamily_id_friendlyname", "").lower() else "windows",
|
"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",
|
"machine_type": "vm",
|
||||||
"etat": itop_status.get(v.get("status", ""), "en_production"),
|
"etat": itop_status.get(v.get("status", ""), "en_production"),
|
||||||
"de_id": de_id, "zone_id": zone_id,
|
"de_id": de_id, "zone_id": zone_id,
|
||||||
"resp_srv": v.get("responsable_serveur_name", ""),
|
"resp_srv": resp_srv_name,
|
||||||
"resp_dom": v.get("responsable_domaine_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", ""),
|
"desc": v.get("description", ""),
|
||||||
"ip": v.get("managementip", ""),
|
"ip": v.get("managementip", ""),
|
||||||
"tier": tier, "ssh_method": ssh_method,
|
"tier": tier, "ssh_method": ssh_method,
|
||||||
@ -247,7 +262,8 @@ def sync_from_itop(db, itop_url, itop_user, itop_pass):
|
|||||||
if existing:
|
if existing:
|
||||||
db.execute(text("""UPDATE servers SET fqdn=:fqdn, os_family=:os_family, os_version=:os_version,
|
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,
|
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,
|
tier=:tier, ssh_method=:ssh_method, ssh_user=:ssh_user,
|
||||||
patch_frequency=:patch_freq, patch_excludes=:patch_excludes,
|
patch_frequency=:patch_freq, patch_excludes=:patch_excludes,
|
||||||
domain_ltd=:domain_ltd, pref_patch_jour=:pref_jour, pref_patch_heure=:pref_heure,
|
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:
|
else:
|
||||||
try:
|
try:
|
||||||
db.execute(text("""INSERT INTO servers (hostname, fqdn, os_family, os_version, machine_type,
|
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,
|
ssh_port, ssh_user, ssh_method, tier, patch_frequency, patch_excludes,
|
||||||
domain_ltd, pref_patch_jour, pref_patch_heure)
|
domain_ltd, pref_patch_jour, pref_patch_heure)
|
||||||
VALUES (:hostname, :fqdn, :os_family, :os_version, :machine_type,
|
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,
|
22, :ssh_user, :ssh_method, :tier, :patch_freq, :patch_excludes,
|
||||||
:domain_ltd, :pref_jour, :pref_heure)"""), vals)
|
:domain_ltd, :pref_jour, :pref_heure)"""), vals)
|
||||||
db.flush()
|
db.flush()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user