Cree server_databases (FK servers.id, UNIQUE hostname+instance_name).
Pour chaque instance BDD iTop: match hostname via Serveur->Nom, store
type (SAP Hana/Oracle/PostgreSQL/SQL Server/MySQL), version, edition,
cluster, environnement, etat.
Fusionne 'Flux Libre'/'flux libre', 'Péage'/'peage'/'PeagE' en gardant la
forme propre (avec accents et capitale). Update domain_environments.domain_id
vers le keeper et supprime les doublons.
Auto-cree les domains / environments / domain_environments absents en
utilisant les valeurs iTop verbatim (domains.name='BI', etc.), avec codes
slug auto-generes (evite collision).
Pour chaque serveur:
- set servers.domain_env_id vers la paire (domaine, env)
- sync servers.environnement plain-text (pour filtre/affichage existant)
- populate domain_environments.responsable_nom / referent_nom si NULL
Preserve les valeurs existantes non-NULL dans domain_environments.
Lit la sheet 'Serveurs patchables 2026' et met a jour pour chaque hostname :
- domaine (nouvelle colonne text iTop verbatim, ajoutee si absente)
- environnement (override si non vide)
- responsable_nom (Responsable Domaine DTS)
- referent_nom (Referent technique)
Pas de jointure via domain_env_id: stockage plain-text aligne sur iTop.
Dry-run affiche les diff avant/apres.
Python csv.DictReader ne garde que le dernier quand 2 colonnes ont le
meme nom: le Nouveau (condition) ecrasait le Production (lifecycle).
Switch vers csv.reader + lecture par indice de colonne (1ere occurrence
de Etat = lifecycle).
Ajoute les 11 etats 'condition physique' iTop (nouveau, casse, en_panne,
cede, perdu, recycle, occasion, a_recuperer, a_detruire, vole) au CHECK
constraint servers.etat. Relit les CSV pour mettre a jour uniquement
la colonne etat sans tout reimporter.
Fix bug: norm_etat() precedent defaultait tout non-reconnu sur 'production',
masquant les serveurs 'Nouveau' ou 'En panne' qui ne doivent pas etre patches.
move_esxi_extras: identifie ESXi par description (patch_owner_details
contient ESXi/hebergeant/hyperviseur) pour les PDP BAC_* et autres
hyperviseurs non presents dans le CSV Hyperviseur iTop. Deplace vers
hypervisors (kind=hypervisor).
move_chassis: deplace les chassis (CPEM*) vers une table chassis dediee
(non patchables, pas d'agent Qualys).