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

This commit is contained in:
Pierre & Lumière 2026-04-29 15:16:31 +02:00
parent c23dda0a46
commit b9bcf2f9ec

View File

@ -661,19 +661,28 @@ def read_excel_servers(filepath, sheet_name=None):
# SSH HELPERS # SSH HELPERS
# ============================================================================== # ==============================================================================
def build_fqdn(server, env): def build_fqdn(server, env):
"""Genere les candidats FQDN a tester. Convention SANEF : """Genere les candidats FQDN a tester. Convention SANEF basee sur le hostname:
- .sanef-rec.fr pour env Recette/Test/Dev (les VMs non-prod sont en recette) - 2e lettre 'p' (vp*/sp*/lp*) = Prod -> .sanef.groupe en priorite
- .sanef.groupe pour env Prod / autres (AD interne) - 2e lettre 'r/t/v/d/o/i' (vr*/vt*/vv*/vd*/vo*/vi*) = non-prod -> .sanef-rec.fr en priorite
Tente d'abord le hostname brut puis chaque suffixe.""" - sinon: env decide (Prod -> .sanef.groupe, autres -> .sanef-rec.fr)
Tente toujours le hostname brut + les 2 suffixes."""
if "." in server: if "." in server:
return [server] return [server]
server_low = server.lower()
env_low = (env or "").lower() env_low = (env or "").lower()
is_nonprod = any(k in env_low for k in ("recette", "rec", "test", "tst", "dev", "qa")) second = server_low[1] if len(server_low) > 1 else ""
if is_nonprod: is_prod_by_hostname = second == "p"
# Non-prod : recette en priorite, fallback groupe au cas ou is_nonprod_by_hostname = second in ("r", "t", "v", "d", "o", "i")
return [server, f"{server}.sanef-rec.fr", f"{server}.sanef.groupe"] if is_nonprod_by_hostname:
# Prod : groupe en priorite, fallback recette au cas ou order = [".sanef-rec.fr", ".sanef.groupe"]
return [server, f"{server}.sanef.groupe", f"{server}.sanef-rec.fr"] 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): def load_key(keyfile):
"""Charge une clé SSH privée. Retourne l'objet PKey ou None. """Charge une clé SSH privée. Retourne l'objet PKey ou None.