-- Migration v2 des exclusions patching :
--   - Liste générale : ajoute *sdcss-kmod* à la base globale (était un override
--     HAproxy FL avant). La nouvelle base s'applique à tous les domaines.
--   - Exception Flux Libre : remplace la base par UNIQUEMENT *podman* run* *container*
--     (les serveurs Flux Libre ont besoin de patcher le reste).
--   - Cas spécifique ASM Oracle : base globale + kernel*  (à NE PAS mettre à jour).
--   - Reset des overrides HAproxy FL (vrpeahbst1/vppeahbst1/vipeahbst1) qui
--     étaient à `base + sdcss-kmod` ; désormais ils héritent du domaine Flux Libre.
-- Idempotent.

-- ─── 1) Nouvelle liste de base (33 patterns avec *sdcss-kmod*) ────────
UPDATE public.domains
   SET default_excludes =
'*mongodb* *mysql* *postgres* *mariadb* *oracle* *pgdg* *php* *java* '
'*redis* *elasticsearch* *nginx* *mod_ssl* *haproxy* *certbot* '
'*python-certbot* *docker* *podman* *centreon* *qwserver* *ansible* '
'*node* *tina* *memcached* *nextcloud* *pgbouncer* *pgpool* *pgbadger* '
'*psycopg2* *barman* *kibana* *sdcss-kmod*'
 WHERE LOWER(name) <> 'flux libre';

-- ─── 2) Exception Flux Libre : liste réduite ─────────────────────────
UPDATE public.domains
   SET default_excludes = '*podman* run* *container*'
 WHERE LOWER(name) = 'flux libre';

-- ─── 3) Reset des overrides HAproxy FL (héritent désormais du domaine) ─
UPDATE public.servers
   SET patch_excludes = NULL
 WHERE LOWER(hostname::text) IN ('vrpeahbst1', 'vppeahbst1', 'vipeahbst1');

-- ─── 4) Cas spécifique ASM Oracle : base + kernel* ───────────────────
DO $$
DECLARE
    base_excludes text :=
'*mongodb* *mysql* *postgres* *mariadb* *oracle* *pgdg* *php* *java* '
'*redis* *elasticsearch* *nginx* *mod_ssl* *haproxy* *certbot* '
'*python-certbot* *docker* *podman* *centreon* *qwserver* *ansible* '
'*node* *tina* *memcached* *nextcloud* *pgbouncer* *pgpool* *pgbadger* '
'*psycopg2* *barman* *kibana* *sdcss-kmod*';
BEGIN
    UPDATE public.servers SET patch_excludes = base_excludes || ' kernel*'
    WHERE LOWER(hostname::text) IN (
        'lamarrac1','lamarrac2','lamarrac3','lamarrac4',
        'srdsibora1','srdsibora2',
        'lptrabgas1',
        'lragtbpla1','lpaiigrid1',
        'lamaprac1','lamaprac2','lamaprac3','lamaprac4',
        'lampadp1','lampadp2','lampadv1',
        'lampasu1','lampasu2',
        'lampcrm1','lampdec1','lampfin1','lampfin3','lampoct1','lamppea1',
        'lamppla1','lamppla2',
        'lamrsip1','lamrsip2',
        'lamtinf1','lamtpfe1',
        'lpagtbpla1',
        'lpemvbaemv1','lpemvbpemv1','lpemvbpemv2',
        'lpsimbpfe1',
        'lraiibora1',
        'lremvbremv1','lremvbremv2',
        'rmila150','rmilgmo3','rmilsas1',
        'rsmiged1','rsmigmo1','rsmipat1','rsmisar2',
        'srtrabgas1',
        'vpemvgrid1','vpnapamed1'
    );
END $$;

-- ─── 5) Vérifications (à exécuter manuellement après) ────────────────
-- SELECT name, default_excludes FROM domains ORDER BY name;
-- SELECT hostname, patch_excludes FROM servers
--  WHERE patch_excludes LIKE '%kernel*%' OR LOWER(hostname::text) IN
--    ('vrpeahbst1','vppeahbst1','vipeahbst1') ORDER BY hostname;
-- SELECT s.hostname, vs.effective_excludes FROM servers s
--  JOIN v_servers vs ON vs.id = s.id
--  WHERE s.application_id IN (SELECT id FROM applications WHERE LOWER(domain)='flux libre')
--  ORDER BY s.hostname LIMIT 20;
