[Schema] Fix non-unique human_friendly_id on BGPPeerGroup and BGPSession #43

Closed
opened 2026-02-09 18:08:50 +00:00 by Damien · 1 comment
Owner

🔴 Critique — Bloque le chargement de données

Problème

BGPPeerGroup.human_friendly_id utilise name__value mais le même nom "underlay" existe sur les 8 leafs. BGPSession.human_friendly_id utilise peer_address__value mais 10.0.250.1 (spine1) apparaît comme neighbor sur chaque leaf. Infrahub exige que le human_friendly_id soit unique globalement.

Correction

Préfixer avec le device parent via la relation bgp_config :

# BGPPeerGroup
human_friendly_id:
  - bgp_config__device__name__value
  - name__value

# BGPSession
human_friendly_id:
  - bgp_config__device__name__value
  - peer_address__value

Fichier

  • schemas/bgp.yml

Validation

  • infrahubctl schema check schemas/
  • Vérifier qu'on peut créer 2 peer groups "underlay" sur 2 devices différents

Référence topologie

Chaque leaf a 3 peer groups (underlay, underlay_ibgp, evpn) avec des sessions vers les mêmes spines.

## 🔴 Critique — Bloque le chargement de données ### Problème `BGPPeerGroup.human_friendly_id` utilise `name__value` mais le même nom "underlay" existe sur les 8 leafs. `BGPSession.human_friendly_id` utilise `peer_address__value` mais `10.0.250.1` (spine1) apparaît comme neighbor sur chaque leaf. Infrahub exige que le `human_friendly_id` soit **unique globalement**. ### Correction Préfixer avec le device parent via la relation `bgp_config` : ```yaml # BGPPeerGroup human_friendly_id: - bgp_config__device__name__value - name__value # BGPSession human_friendly_id: - bgp_config__device__name__value - peer_address__value ``` ### Fichier - `schemas/bgp.yml` ### Validation - `infrahubctl schema check schemas/` - Vérifier qu'on peut créer 2 peer groups "underlay" sur 2 devices différents ### Référence topologie Chaque leaf a 3 peer groups (underlay, underlay_ibgp, evpn) avec des sessions vers les mêmes spines. ## Related - Sub-task of: #41 - **⚡ Ordre d'exécution : 1/7** (critique, à traiter en premier) - Bloque : #42 (Infrahub Client ne peut pas requêter des données invalides)
Damien added the phase-2-minimal-reconciler label 2026-02-09 18:10:09 +00:00
Damien added this to the Fabric Orchestrator project 2026-02-09 19:03:29 +00:00
Damien moved this to In Progress in Fabric Orchestrator on 2026-02-09 19:03:42 +00:00
Damien added reference feature/41-infrahub-schema 2026-02-13 10:48:08 +00:00
Author
Owner

Implémenté

Commit: 3654c2d

Changements dans schemas/bgp.yml

BGPPeerGroup:

  • human_friendly_id[bgp_config__router_id__value, name__value]
  • Ajout uniqueness_constraints: [["bgp_config", "name__value"]]

BGPSession:

  • human_friendly_id[bgp_config__router_id__value, peer_address__value]
  • Ajout uniqueness_constraints: [["bgp_config", "peer_address__value"]]

Note

L'implémentation utilise bgp_config__router_id__value au lieu de bgp_config__device__name__value comme proposé dans l'issue. Les deux approches assurent l'unicité globale (le router_id est unique par device). La traversée via router_id est plus courte (1 niveau de relation au lieu de 2).

Validation

Schema check passé. Les peer groups identiques ("underlay", "evpn") sur différents devices sont maintenant distingués.

## Implémenté ✅ **Commit:** [`3654c2d`](https://gitea.arnodo.fr/Damien/fabric-orchestrator/commit/3654c2de9dfa70d003e454286f69ec76685d2f72) ### Changements dans `schemas/bgp.yml` **BGPPeerGroup:** - `human_friendly_id` → `[bgp_config__router_id__value, name__value]` - Ajout `uniqueness_constraints: [["bgp_config", "name__value"]]` **BGPSession:** - `human_friendly_id` → `[bgp_config__router_id__value, peer_address__value]` - Ajout `uniqueness_constraints: [["bgp_config", "peer_address__value"]]` ### Note L'implémentation utilise `bgp_config__router_id__value` au lieu de `bgp_config__device__name__value` comme proposé dans l'issue. Les deux approches assurent l'unicité globale (le router_id est unique par device). La traversée via `router_id` est plus courte (1 niveau de relation au lieu de 2). ### Validation Schema check passé. Les peer groups identiques ("underlay", "evpn") sur différents devices sont maintenant distingués.
Damien moved this to Done in Fabric Orchestrator on 2026-02-25 13:59:05 +00:00
Sign in to join this conversation.