9048a87397
Drop NOT NULL sur servers.etat pour accepter les physiques non-lifecycle
2026-04-14 19:06:05 +02:00
a366427daf
Fix: iTop exporte 2 colonnes Etat (lifecycle+condition), prendre la 1ere
...
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).
2026-04-14 19:05:08 +02:00
3c6e10944e
Servers list: SELECT s.environnement (colonne iTop) au lieu de e.name legacy
2026-04-14 18:58:24 +02:00
56fc1eaa7c
Servers filters: option (Sans etat)/(Sans env) pour NULL
2026-04-14 18:53:51 +02:00
ce2ac219db
Fix: lire Etat en priorite (Status toujours Production, inutile) + condition -> NULL
2026-04-14 18:51:57 +02:00
56f91ca9a8
Add list_csv_etats: liste valeurs distinctes Etat/Status/Environnement
2026-04-14 18:49:29 +02:00
1c2d0b958e
Etat/Environnement dropdowns alignes strict iTop SANEF
...
Etat: 6 valeurs lifecycle uniquement (Production, Implémentation,
Stock, Obsolète, prêt, tests). Suppression des valeurs condition
(Nouveau, Cassé, En panne, etc.) et de EOL qui n'existent pas
dans iTop SANEF.
Environnement: 7 valeurs iTop (Développement, Intégration, Pré-Prod,
Production, Recette, Test, Formation). Filtre env bascule de
e.code (legacy) vers s.environnement.
tools/import_etat_itop.py:
- CHECK 6 valeurs lifecycle + NULL
- Migration mappe les anciennes condition/EOL -> NULL
- Lit Status en priorite dans le CSV (lifecycle), fallback Etat
- Fix format print pour None
tools/import_sanef_*.py: ITOP_ETATS reduit a 6 valeurs
2026-04-14 18:48:30 +02:00
753d4076c9
Migre etat vers labels iTop verbatim (Production, Nouveau, etc.)
...
Aligne la colonne servers.etat sur les valeurs iTop exactes au lieu
des codes lowercase internes.
Impact:
- servers.etat stocke: Production, Implémentation, Stock, Obsolète,
EOL, prêt, tests, Nouveau, A récupérer, Cassé, Cédé, En panne,
Perdu, Recyclé, Occasion, A détruire, Volé
- Remplace tous les 'production'/'obsolete'/'stock'/'eol'/'implementation'
en WHERE/comparisons par les labels iTop verbatim (~10 fichiers)
- Templates badges/filtres: valeurs + labels iTop
- itop_service: maintient mapping iTop API internal code <-> DB label
- import_sanef_*: norm_etat retourne la valeur iTop verbatim ou None
(plus de fallback silencieux sur 'production')
Ajoute:
- tools/import_etat_itop.py : migration lowercase -> iTop + re-import CSV
- tools/import_environnement.py : fix dry-run pour ADD COLUMN idempotent
Supprime:
- tools/fix_etat_extend.py (obsolete par import_etat_itop.py)
2026-04-14 18:40:56 +02:00
242641a085
Add import_environnement: colonne environnement + import CSV iTop verbatim
2026-04-14 18:33:40 +02:00
0f031b2150
fix_etat_extend: ajoute pret et tests au mapping iTop
2026-04-14 18:32:00 +02:00
fd748ce3fd
Add fix_etat_extend: extend etat CHECK + remap from iTop CSV
...
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.
2026-04-14 18:15:25 +02:00
987e21377b
Add move_esxi_extras + move_chassis scripts
...
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).
2026-04-14 18:09:26 +02:00
d3b7fc2e22
Add move_vcenters script + kind column on hypervisors
2026-04-14 17:48:46 +02:00
0a00c401d7
Add hypervisors table + move script (preserves VM->hypervisor link via vcenter_vm_name)
2026-04-14 17:40:24 +02:00
683a86346d
Add SANEF physical/hypervisor import script
2026-04-14 17:34:33 +02:00
7b87074faa
Qualys page size 100
2026-04-14 16:58:03 +02:00
d15db654d4
Qualys: activation keys lazy (no API on page load if cache empty)
2026-04-14 16:24:45 +02:00
49b1865d13
Qualys page size 250 (lower timeout risk)
2026-04-14 16:19:29 +02:00
67287b8256
Qualys: cancel button for ongoing refresh
2026-04-14 16:12:44 +02:00
69aeb0e77a
Qualys agents page: sync route + drop LOWER (citext is case-insensitive)
2026-04-14 16:09:56 +02:00
1bfdb16bfb
Qualys: actkeys cache 24h + refresh timeout 600s
2026-04-14 16:07:25 +02:00
07775a385f
Qualys activation keys: short timeout (5s)
2026-04-14 16:07:03 +02:00
347ea53c27
Qualys skip threshold: 5 min -> 40 min
2026-04-14 15:56:41 +02:00
ec90a4a9d1
Qualys: reduce refresh page size to 500
2026-04-14 15:55:35 +02:00
6db58952ec
Qualys refresh: early exit if no stale assets (< 5 min)
2026-04-14 15:48:41 +02:00
f66d728d2d
Qualys timeout 300s for bulk hostasset search
2026-04-14 15:37:50 +02:00
d24afa37b2
Qualys refresh: skip assets updated within last 5 minutes
2026-04-14 15:32:01 +02:00
d779426118
Bump Qualys page size back to 1000
2026-04-14 15:21:04 +02:00
71f83d5d4f
Qualys refresh: threading lock + 409 if already running
2026-04-14 15:20:17 +02:00
e3bcf8fcc1
Qualys refresh: sync route so blocking requests run in threadpool
2026-04-14 15:18:16 +02:00
67f123e9f5
Qualys refresh: pagination + per-row savepoint to isolate errors
2026-04-14 15:13:48 +02:00
a422894f83
Sync Qualys FQDN to servers + use fqdn first for DNS resolution
2026-04-14 15:00:40 +02:00
92175992f8
Qualys: tagName + CONTAINS (API field, not UI syntax)
2026-04-14 14:53:54 +02:00
a19281a771
Qualys filter: CONTAINS instead of EQUALS for tag
2026-04-14 14:48:29 +02:00
a331d16a12
Qualys filter: tags.name instead of tagName
2026-04-14 14:47:48 +02:00
faa267c3ff
Add SANEF contacts import script
2026-04-14 14:22:03 +02:00
612f3c7cea
Add SANEF IPs import script (from Interface réseau export)
2026-04-14 13:57:27 +02:00
b72f1244dd
Use autocommit mode to persist inserts immediately
2026-04-14 13:43:25 +02:00
c6113bc537
Drop ON CONFLICT (no unique constraint on hostname)
2026-04-14 13:39:11 +02:00
2215067987
Use savepoints per row to isolate failing inserts
2026-04-14 13:38:16 +02:00
f0fe6eba81
Fix etat mapping: use only production/implementation/stock/obsolete/eol
2026-04-14 13:34:07 +02:00
42fb16d67e
Fix import script: auto-detect FK tables before truncate
2026-04-14 13:31:00 +02:00
338c0ecc0f
Add SANEF asset CSV import script
2026-04-14 13:24:42 +02:00
053c9a3b59
Add Voir detail button and results route for realtime audit
2026-04-14 13:10:23 +02:00
747e883d22
Smart DNS suffix order based on hostname convention (r=rec, p/i=prod)
2026-04-14 13:02:24 +02:00
53545585f0
Configurable DNS suffixes + 2s socket timeout for faster resolve
2026-04-14 12:58:54 +02:00
da1042fef4
Fix SSH key: read PEM content from settings + ssh_key_default_user
2026-04-14 12:56:09 +02:00
8dba0706b0
Filter Qualys agent refresh on tag name=server
2026-04-14 12:18:43 +02:00
3d61293172
Add demo DB dump for deployment
2026-04-14 11:43:50 +02:00
5db5feebe1
Add requirements.txt for deployment
2026-04-14 11:38:58 +02:00