From 97720d3d6d8e26f51773f5fd9a2d22c616ed1a19 Mon Sep 17 00:00:00 2001 From: Damien Date: Sun, 15 Feb 2026 16:04:42 +0100 Subject: [PATCH] =?UTF-8?q?fix(objects):=20split=20Vlan=20SVIs=20and=20IPs?= =?UTF-8?q?=20for=20load=20ordering=20=E2=80=94=20refs=20#52?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit InfraInterfaceVlan references InfraVLAN objects (06-vlans-vxlan.yml), so Vlan SVIs must load after VLANs. Similarly, Vlan IP addresses reference Vlan SVIs. Changes: - Extract InfraInterfaceVlan from 04 into 07-interface-vlans.yml - Extract Vlan SVI IPs from 05 into 08-ipam-vlans.yml - Rename 07-bgp→09, 08-vrfs→10, 09-mlag→11 - Update .infrahub.yml with new 11-file load order Load order: foundation → fabric → devices → interfaces (Lo/Lag/Eth) → ipam (Lo/Eth) → vlans-vxlan → interface-vlans → ipam-vlans → bgp → vrfs → mlag --- .infrahub.yml | 8 +- objects/04-interfaces.yml | 142 +------------------------- objects/05-ipam.yml | 79 +-------------- objects/07-interface-vlans.yml | 143 +++++++++++++++++++++++++++ objects/08-ipam-vlans.yml | 86 ++++++++++++++++ objects/{07-bgp.yml => 09-bgp.yml} | 0 objects/{08-vrfs.yml => 10-vrfs.yml} | 0 objects/{09-mlag.yml => 11-mlag.yml} | 0 8 files changed, 236 insertions(+), 222 deletions(-) create mode 100644 objects/07-interface-vlans.yml create mode 100644 objects/08-ipam-vlans.yml rename objects/{07-bgp.yml => 09-bgp.yml} (100%) rename objects/{08-vrfs.yml => 10-vrfs.yml} (100%) rename objects/{09-mlag.yml => 11-mlag.yml} (100%) diff --git a/.infrahub.yml b/.infrahub.yml index 7caca65..7777ac8 100644 --- a/.infrahub.yml +++ b/.infrahub.yml @@ -10,6 +10,8 @@ objects: - objects/04-interfaces.yml - objects/05-ipam.yml - objects/06-vlans-vxlan.yml - - objects/07-bgp.yml - - objects/08-vrfs.yml - - objects/09-mlag.yml + - objects/07-interface-vlans.yml + - objects/08-ipam-vlans.yml + - objects/09-bgp.yml + - objects/10-vrfs.yml + - objects/11-mlag.yml diff --git a/objects/04-interfaces.yml b/objects/04-interfaces.yml index 12ae0f7..80ace90 100644 --- a/objects/04-interfaces.yml +++ b/objects/04-interfaces.yml @@ -489,144 +489,4 @@ spec: enabled: true mtu: 9214 mode: routed ---- -apiVersion: infrahub.app/v1 -kind: Object -spec: - kind: InfraInterfaceVlan - data: - # Vlan4090 — MLAG Peer-Link SVI (all leafs) - - device: ["leaf1"] - name: Vlan4090 - description: MLAG Peer-Link - enabled: true - autostate: false - vlan: ["4090"] - - device: ["leaf2"] - name: Vlan4090 - description: MLAG Peer-Link - enabled: true - autostate: false - vlan: ["4090"] - - device: ["leaf3"] - name: Vlan4090 - description: MLAG Peer-Link - enabled: true - autostate: false - vlan: ["4090"] - - device: ["leaf4"] - name: Vlan4090 - description: MLAG Peer-Link - enabled: true - autostate: false - vlan: ["4090"] - - device: ["leaf5"] - name: Vlan4090 - description: MLAG Peer-Link - enabled: true - autostate: false - vlan: ["4090"] - - device: ["leaf6"] - name: Vlan4090 - description: MLAG Peer-Link - enabled: true - autostate: false - vlan: ["4090"] - - device: ["leaf7"] - name: Vlan4090 - description: MLAG Peer-Link - enabled: true - autostate: false - vlan: ["4090"] - - device: ["leaf8"] - name: Vlan4090 - description: MLAG Peer-Link - enabled: true - autostate: false - vlan: ["4090"] - # Vlan4091 — MLAG iBGP Peering SVI (all leafs) - - device: ["leaf1"] - name: Vlan4091 - description: MLAG iBGP Peering - enabled: true - mtu: 9214 - vlan: ["4091"] - - device: ["leaf2"] - name: Vlan4091 - description: MLAG iBGP Peering - enabled: true - mtu: 9214 - vlan: ["4091"] - - device: ["leaf3"] - name: Vlan4091 - description: MLAG iBGP Peering - enabled: true - mtu: 9214 - vlan: ["4091"] - - device: ["leaf4"] - name: Vlan4091 - description: MLAG iBGP Peering - enabled: true - mtu: 9214 - vlan: ["4091"] - - device: ["leaf5"] - name: Vlan4091 - description: MLAG iBGP Peering - enabled: true - mtu: 9214 - vlan: ["4091"] - - device: ["leaf6"] - name: Vlan4091 - description: MLAG iBGP Peering - enabled: true - mtu: 9214 - vlan: ["4091"] - - device: ["leaf7"] - name: Vlan4091 - description: MLAG iBGP Peering - enabled: true - mtu: 9214 - vlan: ["4091"] - - device: ["leaf8"] - name: Vlan4091 - description: MLAG iBGP Peering - enabled: true - mtu: 9214 - vlan: ["4091"] - # Vlan34 — VRF gold subnet (leaf3/leaf4) - - device: ["leaf3"] - name: Vlan34 - description: VRF gold subnet - enabled: true - virtual_router_address: "10.34.34.1" - vlan: ["34"] - - device: ["leaf4"] - name: Vlan34 - description: VRF gold subnet - enabled: true - virtual_router_address: "10.34.34.1" - vlan: ["34"] - # Vlan78 — VRF gold subnet (leaf7/leaf8) - - device: ["leaf7"] - name: Vlan78 - description: VRF gold subnet - enabled: true - virtual_router_address: "10.78.78.1" - vlan: ["78"] - - device: ["leaf8"] - name: Vlan78 - description: VRF gold subnet - enabled: true - virtual_router_address: "10.78.78.1" - vlan: ["78"] - # Vlan900 — BGP border peering (leaf7/leaf8) - - device: ["leaf7"] - name: Vlan900 - description: BGP border peering - enabled: true - vlan: ["900"] - - device: ["leaf8"] - name: Vlan900 - description: BGP border peering - enabled: true - vlan: ["900"] \ No newline at end of file + diff --git a/objects/05-ipam.yml b/objects/05-ipam.yml index a56a1b3..b8d78bf 100644 --- a/objects/05-ipam.yml +++ b/objects/05-ipam.yml @@ -179,81 +179,4 @@ spec: - address: "10.0.2.15/31" description: leaf8 Ethernet12 to spine2 interface: ["leaf8", "Ethernet12"] - # ============================================================ - # MLAG Peer-Link SVI (Vlan4090) — /31 - # ============================================================ - - address: "10.0.199.254/31" - description: leaf1 MLAG peer-link - interface: ["leaf1", "Vlan4090"] - - address: "10.0.199.255/31" - description: leaf2 MLAG peer-link - interface: ["leaf2", "Vlan4090"] - - address: "10.0.199.252/31" - description: leaf3 MLAG peer-link - interface: ["leaf3", "Vlan4090"] - - address: "10.0.199.253/31" - description: leaf4 MLAG peer-link - interface: ["leaf4", "Vlan4090"] - - address: "10.0.199.250/31" - description: leaf5 MLAG peer-link - interface: ["leaf5", "Vlan4090"] - - address: "10.0.199.251/31" - description: leaf6 MLAG peer-link - interface: ["leaf6", "Vlan4090"] - - address: "10.0.199.248/31" - description: leaf7 MLAG peer-link - interface: ["leaf7", "Vlan4090"] - - address: "10.0.199.249/31" - description: leaf8 MLAG peer-link - interface: ["leaf8", "Vlan4090"] - # ============================================================ - # MLAG iBGP Peering SVI (Vlan4091) — /31 - # ============================================================ - - address: "10.0.3.0/31" - description: leaf1 MLAG iBGP peering - interface: ["leaf1", "Vlan4091"] - - address: "10.0.3.1/31" - description: leaf2 MLAG iBGP peering - interface: ["leaf2", "Vlan4091"] - - address: "10.0.3.2/31" - description: leaf3 MLAG iBGP peering - interface: ["leaf3", "Vlan4091"] - - address: "10.0.3.3/31" - description: leaf4 MLAG iBGP peering - interface: ["leaf4", "Vlan4091"] - - address: "10.0.3.4/31" - description: leaf5 MLAG iBGP peering - interface: ["leaf5", "Vlan4091"] - - address: "10.0.3.5/31" - description: leaf6 MLAG iBGP peering - interface: ["leaf6", "Vlan4091"] - - address: "10.0.3.6/31" - description: leaf7 MLAG iBGP peering - interface: ["leaf7", "Vlan4091"] - - address: "10.0.3.7/31" - description: leaf8 MLAG iBGP peering - interface: ["leaf8", "Vlan4091"] - # ============================================================ - # VRF gold SVI addresses — /24 - # ============================================================ - # Vlan34 (leaf3/leaf4) - - address: "10.34.34.2/24" - description: leaf3 Vlan34 VRF gold - interface: ["leaf3", "Vlan34"] - - address: "10.34.34.3/24" - description: leaf4 Vlan34 VRF gold - interface: ["leaf4", "Vlan34"] - # Vlan78 (leaf7/leaf8) - - address: "10.78.78.2/24" - description: leaf7 Vlan78 VRF gold - interface: ["leaf7", "Vlan78"] - - address: "10.78.78.3/24" - description: leaf8 Vlan78 VRF gold - interface: ["leaf8", "Vlan78"] - # Vlan900 — BGP border (leaf7/leaf8) - - address: "10.90.90.2/29" - description: leaf7 Vlan900 BGP border - interface: ["leaf7", "Vlan900"] - - address: "10.90.90.3/29" - description: leaf8 Vlan900 BGP border - interface: ["leaf8", "Vlan900"] + diff --git a/objects/07-interface-vlans.yml b/objects/07-interface-vlans.yml new file mode 100644 index 0000000..69ec20e --- /dev/null +++ b/objects/07-interface-vlans.yml @@ -0,0 +1,143 @@ +# VLAN SVI interfaces +# Depends on: 03-devices, 06-vlans-vxlan (VLANs must exist) +--- +apiVersion: infrahub.app/v1 +kind: Object +spec: + kind: InfraInterfaceVlan + data: + # Vlan4090 — MLAG Peer-Link SVI (all leafs) + - device: ["leaf1"] + name: Vlan4090 + description: MLAG Peer-Link + enabled: true + autostate: false + vlan: ["4090"] + - device: ["leaf2"] + name: Vlan4090 + description: MLAG Peer-Link + enabled: true + autostate: false + vlan: ["4090"] + - device: ["leaf3"] + name: Vlan4090 + description: MLAG Peer-Link + enabled: true + autostate: false + vlan: ["4090"] + - device: ["leaf4"] + name: Vlan4090 + description: MLAG Peer-Link + enabled: true + autostate: false + vlan: ["4090"] + - device: ["leaf5"] + name: Vlan4090 + description: MLAG Peer-Link + enabled: true + autostate: false + vlan: ["4090"] + - device: ["leaf6"] + name: Vlan4090 + description: MLAG Peer-Link + enabled: true + autostate: false + vlan: ["4090"] + - device: ["leaf7"] + name: Vlan4090 + description: MLAG Peer-Link + enabled: true + autostate: false + vlan: ["4090"] + - device: ["leaf8"] + name: Vlan4090 + description: MLAG Peer-Link + enabled: true + autostate: false + vlan: ["4090"] + # Vlan4091 — MLAG iBGP Peering SVI (all leafs) + - device: ["leaf1"] + name: Vlan4091 + description: MLAG iBGP Peering + enabled: true + mtu: 9214 + vlan: ["4091"] + - device: ["leaf2"] + name: Vlan4091 + description: MLAG iBGP Peering + enabled: true + mtu: 9214 + vlan: ["4091"] + - device: ["leaf3"] + name: Vlan4091 + description: MLAG iBGP Peering + enabled: true + mtu: 9214 + vlan: ["4091"] + - device: ["leaf4"] + name: Vlan4091 + description: MLAG iBGP Peering + enabled: true + mtu: 9214 + vlan: ["4091"] + - device: ["leaf5"] + name: Vlan4091 + description: MLAG iBGP Peering + enabled: true + mtu: 9214 + vlan: ["4091"] + - device: ["leaf6"] + name: Vlan4091 + description: MLAG iBGP Peering + enabled: true + mtu: 9214 + vlan: ["4091"] + - device: ["leaf7"] + name: Vlan4091 + description: MLAG iBGP Peering + enabled: true + mtu: 9214 + vlan: ["4091"] + - device: ["leaf8"] + name: Vlan4091 + description: MLAG iBGP Peering + enabled: true + mtu: 9214 + vlan: ["4091"] + # Vlan34 — VRF gold subnet (leaf3/leaf4) + - device: ["leaf3"] + name: Vlan34 + description: VRF gold subnet + enabled: true + virtual_router_address: "10.34.34.1" + vlan: ["34"] + - device: ["leaf4"] + name: Vlan34 + description: VRF gold subnet + enabled: true + virtual_router_address: "10.34.34.1" + vlan: ["34"] + # Vlan78 — VRF gold subnet (leaf7/leaf8) + - device: ["leaf7"] + name: Vlan78 + description: VRF gold subnet + enabled: true + virtual_router_address: "10.78.78.1" + vlan: ["78"] + - device: ["leaf8"] + name: Vlan78 + description: VRF gold subnet + enabled: true + virtual_router_address: "10.78.78.1" + vlan: ["78"] + # Vlan900 — BGP border peering (leaf7/leaf8) + - device: ["leaf7"] + name: Vlan900 + description: BGP border peering + enabled: true + vlan: ["900"] + - device: ["leaf8"] + name: Vlan900 + description: BGP border peering + enabled: true + vlan: ["900"] \ No newline at end of file diff --git a/objects/08-ipam-vlans.yml b/objects/08-ipam-vlans.yml new file mode 100644 index 0000000..293f80a --- /dev/null +++ b/objects/08-ipam-vlans.yml @@ -0,0 +1,86 @@ +# IP Addresses for VLAN SVI interfaces +# Depends on: 07-interface-vlans (Vlan SVIs must exist) +--- +apiVersion: infrahub.app/v1 +kind: Object +spec: + kind: InfraIPAddress + data: + # ============================================================ + # MLAG Peer-Link SVI (Vlan4090) — /31 + # ============================================================ + - address: "10.0.199.254/31" + description: leaf1 MLAG peer-link + interface: ["leaf1", "Vlan4090"] + - address: "10.0.199.255/31" + description: leaf2 MLAG peer-link + interface: ["leaf2", "Vlan4090"] + - address: "10.0.199.252/31" + description: leaf3 MLAG peer-link + interface: ["leaf3", "Vlan4090"] + - address: "10.0.199.253/31" + description: leaf4 MLAG peer-link + interface: ["leaf4", "Vlan4090"] + - address: "10.0.199.250/31" + description: leaf5 MLAG peer-link + interface: ["leaf5", "Vlan4090"] + - address: "10.0.199.251/31" + description: leaf6 MLAG peer-link + interface: ["leaf6", "Vlan4090"] + - address: "10.0.199.248/31" + description: leaf7 MLAG peer-link + interface: ["leaf7", "Vlan4090"] + - address: "10.0.199.249/31" + description: leaf8 MLAG peer-link + interface: ["leaf8", "Vlan4090"] + # ============================================================ + # MLAG iBGP Peering SVI (Vlan4091) — /31 + # ============================================================ + - address: "10.0.3.0/31" + description: leaf1 MLAG iBGP peering + interface: ["leaf1", "Vlan4091"] + - address: "10.0.3.1/31" + description: leaf2 MLAG iBGP peering + interface: ["leaf2", "Vlan4091"] + - address: "10.0.3.2/31" + description: leaf3 MLAG iBGP peering + interface: ["leaf3", "Vlan4091"] + - address: "10.0.3.3/31" + description: leaf4 MLAG iBGP peering + interface: ["leaf4", "Vlan4091"] + - address: "10.0.3.4/31" + description: leaf5 MLAG iBGP peering + interface: ["leaf5", "Vlan4091"] + - address: "10.0.3.5/31" + description: leaf6 MLAG iBGP peering + interface: ["leaf6", "Vlan4091"] + - address: "10.0.3.6/31" + description: leaf7 MLAG iBGP peering + interface: ["leaf7", "Vlan4091"] + - address: "10.0.3.7/31" + description: leaf8 MLAG iBGP peering + interface: ["leaf8", "Vlan4091"] + # ============================================================ + # VRF gold SVI addresses — /24 + # ============================================================ + # Vlan34 (leaf3/leaf4) + - address: "10.34.34.2/24" + description: leaf3 Vlan34 VRF gold + interface: ["leaf3", "Vlan34"] + - address: "10.34.34.3/24" + description: leaf4 Vlan34 VRF gold + interface: ["leaf4", "Vlan34"] + # Vlan78 (leaf7/leaf8) + - address: "10.78.78.2/24" + description: leaf7 Vlan78 VRF gold + interface: ["leaf7", "Vlan78"] + - address: "10.78.78.3/24" + description: leaf8 Vlan78 VRF gold + interface: ["leaf8", "Vlan78"] + # Vlan900 — BGP border (leaf7/leaf8) + - address: "10.90.90.2/29" + description: leaf7 Vlan900 BGP border + interface: ["leaf7", "Vlan900"] + - address: "10.90.90.3/29" + description: leaf8 Vlan900 BGP border + interface: ["leaf8", "Vlan900"] diff --git a/objects/07-bgp.yml b/objects/09-bgp.yml similarity index 100% rename from objects/07-bgp.yml rename to objects/09-bgp.yml diff --git a/objects/08-vrfs.yml b/objects/10-vrfs.yml similarity index 100% rename from objects/08-vrfs.yml rename to objects/10-vrfs.yml diff --git a/objects/09-mlag.yml b/objects/11-mlag.yml similarity index 100% rename from objects/09-mlag.yml rename to objects/11-mlag.yml