[Schema] Refactor UnderlayLink to avoid IP address duplication #47

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

🟠 Lacune fonctionnelle — Double source de vérité

Problème

UnderlayLink (extensions.yml) stocke local_ip et remote_ip comme attributs IPNetwork, alors que ces mêmes IPs devraient exister comme InfraIPAddress assignées aux interfaces Ethernet. Cela crée une duplication de données qui mènera à des incohérences.

Options de correction

Option A (recommandée) : Remplacer les attributs par des relations

# Remplacer local_ip/remote_ip (attributs IPNetwork) par :
relationships:
  - name: local_ip
    peer: InfraIPAddress
    cardinality: one
  - name: remote_ip
    peer: InfraIPAddress
    cardinality: one

Option B : Supprimer UnderlayLink
Les connexions point-à-point sont déjà modélisables via InterfaceEthernet.connected_interface. Supprimer UnderlayLink et s'appuyer sur les relations existantes + les InfraIPAddress assignées aux interfaces.

Fichier

  • schemas/extensions.yml

Validation

  • infrahubctl schema check schemas/
  • Vérifier qu'aucune donnée existante ne référence UnderlayLink
## 🟠 Lacune fonctionnelle — Double source de vérité ### Problème `UnderlayLink` (extensions.yml) stocke `local_ip` et `remote_ip` comme attributs `IPNetwork`, alors que ces mêmes IPs devraient exister comme `InfraIPAddress` assignées aux interfaces Ethernet. Cela crée une duplication de données qui mènera à des incohérences. ### Options de correction **Option A (recommandée) : Remplacer les attributs par des relations** ```yaml # Remplacer local_ip/remote_ip (attributs IPNetwork) par : relationships: - name: local_ip peer: InfraIPAddress cardinality: one - name: remote_ip peer: InfraIPAddress cardinality: one ``` **Option B : Supprimer UnderlayLink** Les connexions point-à-point sont déjà modélisables via `InterfaceEthernet.connected_interface`. Supprimer `UnderlayLink` et s'appuyer sur les relations existantes + les `InfraIPAddress` assignées aux interfaces. ### Fichier - `schemas/extensions.yml` ### Validation - `infrahubctl schema check schemas/` - Vérifier qu'aucune donnée existante ne référence UnderlayLink ## Related - Sub-task of: #41 - **⚡ Ordre d'exécution : 5/7** (parallélisable avec #46, #48, #49) - Depends on: #45 - Utile pour : #30 (Interface transforms)
Damien added the phase-2-minimal-reconciler label 2026-02-09 18:10:45 +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:55 +00:00
Damien added reference feature/41-infrahub-schema 2026-02-13 10:49:09 +00:00
Author
Owner

Implémenté

Commit: e527534

  • Option A retenue : remplacement des attributs local_ip / remote_ip (IPNetwork) par des relations vers InfraIPAddress
  • local_ip → relation peer: InfraIPAddress, cardinality: one, identifier: underlay_link_local_ip
  • remote_ip → relation peer: InfraIPAddress, cardinality: one, identifier: underlay_link_remote_ip

Les IPs sont maintenant des objets InfraIPAddress partagés, éliminant la double source de vérité avec les IPs assignées aux interfaces.

Validation

Schema check passé.

## Implémenté ✅ **Commit:** [`e527534`](https://gitea.arnodo.fr/Damien/fabric-orchestrator/commit/e527534820696942abb39ef005277ef42c8b6c55) ### Changements dans `schemas/extensions.yml` — UnderlayLink - **Option A retenue** : remplacement des attributs `local_ip` / `remote_ip` (IPNetwork) par des relations vers `InfraIPAddress` - `local_ip` → relation `peer: InfraIPAddress`, cardinality: one, identifier: `underlay_link_local_ip` - `remote_ip` → relation `peer: InfraIPAddress`, cardinality: one, identifier: `underlay_link_remote_ip` Les IPs sont maintenant des objets `InfraIPAddress` partagés, éliminant la double source de vérité avec les IPs assignées aux interfaces. ### Validation Schema check passé.
Damien moved this to Done in Fabric Orchestrator on 2026-02-25 13:59:09 +00:00
Sign in to join this conversation.