From b9bcf2f9ecf33103b91c59a14df8edfb8b4ddd65 Mon Sep 17 00:00:00 2001 From: Admin MPCZ Date: Wed, 29 Apr 2026 15:16:31 +0200 Subject: [PATCH] fix(ssh): build_fqdn base sur 2e lettre hostname (convention SANEF) - vt*/vr*/vd* -> .sanef-rec.fr en 1er, vp*/sp*/lp* -> .sanef.groupe en 1er --- patch_manager_v2.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/patch_manager_v2.py b/patch_manager_v2.py index 70144cb..80d0885 100644 --- a/patch_manager_v2.py +++ b/patch_manager_v2.py @@ -661,19 +661,28 @@ def read_excel_servers(filepath, sheet_name=None): # SSH HELPERS # ============================================================================== def build_fqdn(server, env): - """Genere les candidats FQDN a tester. Convention SANEF : - - .sanef-rec.fr pour env Recette/Test/Dev (les VMs non-prod sont en recette) - - .sanef.groupe pour env Prod / autres (AD interne) - Tente d'abord le hostname brut puis chaque suffixe.""" + """Genere les candidats FQDN a tester. Convention SANEF basee sur le hostname: + - 2e lettre 'p' (vp*/sp*/lp*) = Prod -> .sanef.groupe en priorite + - 2e lettre 'r/t/v/d/o/i' (vr*/vt*/vv*/vd*/vo*/vi*) = non-prod -> .sanef-rec.fr en priorite + - sinon: env decide (Prod -> .sanef.groupe, autres -> .sanef-rec.fr) + Tente toujours le hostname brut + les 2 suffixes.""" if "." in server: return [server] + server_low = server.lower() env_low = (env or "").lower() - is_nonprod = any(k in env_low for k in ("recette", "rec", "test", "tst", "dev", "qa")) - if is_nonprod: - # Non-prod : recette en priorite, fallback groupe au cas ou - return [server, f"{server}.sanef-rec.fr", f"{server}.sanef.groupe"] - # Prod : groupe en priorite, fallback recette au cas ou - return [server, f"{server}.sanef.groupe", f"{server}.sanef-rec.fr"] + second = server_low[1] if len(server_low) > 1 else "" + is_prod_by_hostname = second == "p" + is_nonprod_by_hostname = second in ("r", "t", "v", "d", "o", "i") + if is_nonprod_by_hostname: + order = [".sanef-rec.fr", ".sanef.groupe"] + elif is_prod_by_hostname: + order = [".sanef.groupe", ".sanef-rec.fr"] + else: + # Pas de signal hostname clair : se baser sur env + is_nonprod_by_env = any(k in env_low for k in ("recette", "rec", "test", "tst", "dev", "qa")) + order = ([".sanef-rec.fr", ".sanef.groupe"] if is_nonprod_by_env + else [".sanef.groupe", ".sanef-rec.fr"]) + return [server] + [f"{server}{suf}" for suf in order] def load_key(keyfile): """Charge une clé SSH privée. Retourne l'objet PKey ou None.