-- Migration : alignement des excludes patching sur le wiki SANEF
-- Source : DokuWiki SANEF "Patch Linux" — étape 6 "Première vague de patching"
-- + section "Procédures de mises à jour Linux cas spécifiques"
--
-- Sémantique : v_servers.effective_excludes = COALESCE(s.patch_excludes,
--              de.patch_excludes, d.default_excludes) → COALESCE = override.
--              Donc pour les serveurs avec règles spécifiques, on stocke
--              la liste globale + leur addition dans servers.patch_excludes.
-- Idempotent.

-- ─── B3.1 : liste globale (33 patterns) sur tous les domaines ───────────
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*';

-- ─── B3.2 : cas spécifiques par groupe applicatif ───────────────────────
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*';
BEGIN
    -- HAproxy Flux Libre : ajouter *sdcss-kmod*
    UPDATE public.servers SET patch_excludes = base_excludes || ' *sdcss-kmod*'
    WHERE LOWER(hostname::text) IN ('vrpeahbst1', 'vppeahbst1', 'vipeahbst1');

    -- Oracle ASM : NE PAS mettre à jour le kernel (kmod-redhat-oracleasm)
    --              Doit correspondre à la version d'ASM installée.
    UPDATE public.servers SET patch_excludes = base_excludes || ' kernel*'
    WHERE LOWER(hostname::text) IN (
        -- CentOS 7 / RHEL 8 ASM stockage (wiki "ASM stockage")
        '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'
    );

    -- Note : kibana déjà dans la base liste → vppatakib1 (SI Patrimoine)
    --        couvert sans règle additionnelle.
    -- Note : Scoop sur Debian (vrscobpf1, vrscouevs1) utilise apt-mark hold,
    --        pas yum → hors périmètre de cette migration.
END $$;

-- ─── Vérification (à exécuter manuellement après) ───────────────────────
-- SELECT hostname, patch_excludes FROM servers
-- WHERE patch_excludes LIKE '%sdcss-kmod%' OR patch_excludes LIKE '%kernel*%'
-- ORDER BY hostname;
