chore: script cleanup FQDN incoherents convention SANEF (vr*=.sanef-rec.fr, vp*=.sanef.groupe) - met NULL les incoherents pour forcer recalcul dynamique

This commit is contained in:
Pierre & Lumière 2026-05-05 14:12:21 +02:00
parent 7e9cae6758
commit c74ac5ec3e

View File

@ -0,0 +1,80 @@
-- Nettoyage FQDN incohérents avec la convention SANEF
-- v[r|t|d|v]* → doit être .sanef-rec.fr (recette/test/dev/qualif)
-- v[p|l]* → doit être .sanef.groupe ou .sanef.fr (prod/legacy)
-- Les FQDN ne respectant pas la convention sont mis à NULL → _resolve()
-- recalculera dynamiquement via la cascade ordonnée des suffixes.
--
-- Exécutable plusieurs fois sans dommage. Avant/Après pour traçabilité.
\echo '═══ AVANT ═══'
SELECT 'recette_avec_fqdn_prod (à nettoyer)' AS scope, COUNT(*) AS nb
FROM servers
WHERE LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('r','t','d','v')
AND fqdn IS NOT NULL
AND (fqdn ILIKE '%.sanef.groupe' OR fqdn ILIKE '%.sanef.fr')
UNION ALL
SELECT 'prod_avec_fqdn_recette (à nettoyer)' AS scope, COUNT(*) AS nb
FROM servers
WHERE LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('p','l')
AND fqdn IS NOT NULL
AND fqdn ILIKE '%.sanef-rec.fr'
UNION ALL
SELECT 'fqdn_total_actuel' AS scope, COUNT(*) AS nb
FROM servers WHERE fqdn IS NOT NULL AND fqdn != ''
UNION ALL
SELECT 'fqdn_null_actuel' AS scope, COUNT(*) AS nb
FROM servers WHERE fqdn IS NULL OR fqdn = '';
\echo '═══ APERÇU 10 LIGNES INCOHÉRENTES ═══'
SELECT hostname, fqdn,
CASE WHEN LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('r','t','d','v')
THEN 'recette_attendu_sanef-rec.fr'
ELSE 'prod_attendu_sanef.groupe' END AS pourquoi
FROM servers
WHERE fqdn IS NOT NULL
AND (
(LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('r','t','d','v')
AND (fqdn ILIKE '%.sanef.groupe' OR fqdn ILIKE '%.sanef.fr'))
OR (LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('p','l')
AND fqdn ILIKE '%.sanef-rec.fr')
)
ORDER BY hostname
LIMIT 10;
\echo '═══ NETTOYAGE ═══'
-- Recette/test/dev/qualif : FQDN .sanef.groupe / .sanef.fr → NULL
UPDATE servers
SET fqdn = NULL, updated_at = NOW()
WHERE LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('r','t','d','v')
AND fqdn IS NOT NULL
AND (fqdn ILIKE '%.sanef.groupe' OR fqdn ILIKE '%.sanef.fr');
-- Prod / legacy : FQDN .sanef-rec.fr → NULL
UPDATE servers
SET fqdn = NULL, updated_at = NOW()
WHERE LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('p','l')
AND fqdn IS NOT NULL
AND fqdn ILIKE '%.sanef-rec.fr';
\echo '═══ APRÈS ═══'
SELECT 'recette_avec_fqdn_prod (résiduel)' AS scope, COUNT(*) AS nb
FROM servers
WHERE LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('r','t','d','v')
AND fqdn IS NOT NULL
AND (fqdn ILIKE '%.sanef.groupe' OR fqdn ILIKE '%.sanef.fr')
UNION ALL
SELECT 'prod_avec_fqdn_recette (résiduel)' AS scope, COUNT(*) AS nb
FROM servers
WHERE LOWER(SUBSTRING(hostname::text, 2, 1)) IN ('p','l')
AND fqdn IS NOT NULL
AND fqdn ILIKE '%.sanef-rec.fr'
UNION ALL
SELECT 'fqdn_total_apres' AS scope, COUNT(*) AS nb
FROM servers WHERE fqdn IS NOT NULL AND fqdn != ''
UNION ALL
SELECT 'fqdn_null_apres' AS scope, COUNT(*) AS nb
FROM servers WHERE fqdn IS NULL OR fqdn = '';