Files
fabric-orchestrator/objects/10-bgp-sessions.yml
Damien cb06068347 feat(schema,objects): add local_identifier to BGP types for unique HFID — refs #52
Infrahub does not support relation traversal in HFID computation.
Add a local_identifier attribute to PeerGroup, Session, and
AddressFamily that combines device name with the type-specific key.

Schema changes (bgp.yml):
- InfraBGPPeerGroup: HFID=local_identifier__value (e.g. spine1__evpn)
- InfraBGPSession: HFID=local_identifier__value (e.g. spine1__10.0.250.11)
- InfraBGPAddressFamily: HFID=local_identifier__value (e.g. spine1__ipv4_unicast)

Object file changes:
- 09-bgp.yml: added local_identifier to 26 PeerGroup entries
- 10-bgp-sessions.yml: added local_identifier to 72 Session + 20 AF entries,
  updated 56 peer_group + 26 active_peer_groups references
2026-02-15 21:31:03 +01:00

679 lines
22 KiB
YAML

# BGP Sessions and Address Families
# Depends on: 09-bgp (RouterConfig and PeerGroups must exist)
---
apiVersion: infrahub.app/v1
kind: Object
spec:
kind: InfraBGPSession
data:
# ============================================================
# Spine1 sessions
# ============================================================
# Spine1 underlay (direct neighbors, no peer-group — use remote_asn)
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.1.1"
peer_address: "10.0.1.1"
description: "underlay to leaf1"
remote_asn: ["65001"]
peer_device: ["leaf1"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.1.3"
peer_address: "10.0.1.3"
description: "underlay to leaf2"
remote_asn: ["65001"]
peer_device: ["leaf2"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.1.5"
peer_address: "10.0.1.5"
description: "underlay to leaf3"
remote_asn: ["65002"]
peer_device: ["leaf3"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.1.7"
peer_address: "10.0.1.7"
description: "underlay to leaf4"
remote_asn: ["65002"]
peer_device: ["leaf4"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.1.9"
peer_address: "10.0.1.9"
description: "underlay to leaf5"
remote_asn: ["65003"]
peer_device: ["leaf5"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.1.11"
peer_address: "10.0.1.11"
description: "underlay to leaf6"
remote_asn: ["65003"]
peer_device: ["leaf6"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.1.13"
peer_address: "10.0.1.13"
description: "underlay to leaf7"
remote_asn: ["65004"]
peer_device: ["leaf7"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.1.15"
peer_address: "10.0.1.15"
description: "underlay to leaf8"
remote_asn: ["65004"]
peer_device: ["leaf8"]
# Spine1 EVPN (via evpn peer-group)
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.250.11"
peer_address: "10.0.250.11"
description: "EVPN to leaf1"
peer_group: "spine1__evpn"
remote_asn: ["65001"]
peer_device: ["leaf1"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.250.12"
peer_address: "10.0.250.12"
description: "EVPN to leaf2"
peer_group: "spine1__evpn"
remote_asn: ["65001"]
peer_device: ["leaf2"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.250.13"
peer_address: "10.0.250.13"
description: "EVPN to leaf3"
peer_group: "spine1__evpn"
remote_asn: ["65002"]
peer_device: ["leaf3"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.250.14"
peer_address: "10.0.250.14"
description: "EVPN to leaf4"
peer_group: "spine1__evpn"
remote_asn: ["65002"]
peer_device: ["leaf4"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.250.15"
peer_address: "10.0.250.15"
description: "EVPN to leaf5"
peer_group: "spine1__evpn"
remote_asn: ["65003"]
peer_device: ["leaf5"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.250.16"
peer_address: "10.0.250.16"
description: "EVPN to leaf6"
peer_group: "spine1__evpn"
remote_asn: ["65003"]
peer_device: ["leaf6"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.250.17"
peer_address: "10.0.250.17"
description: "EVPN to leaf7"
peer_group: "spine1__evpn"
remote_asn: ["65004"]
peer_device: ["leaf7"]
- bgp_config: ["spine1"]
local_identifier: "spine1__10.0.250.18"
peer_address: "10.0.250.18"
description: "EVPN to leaf8"
peer_group: "spine1__evpn"
remote_asn: ["65004"]
peer_device: ["leaf8"]
# ============================================================
# Spine2 sessions
# ============================================================
# Spine2 underlay
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.2.1"
peer_address: "10.0.2.1"
description: "underlay to leaf1"
remote_asn: ["65001"]
peer_device: ["leaf1"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.2.3"
peer_address: "10.0.2.3"
description: "underlay to leaf2"
remote_asn: ["65001"]
peer_device: ["leaf2"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.2.5"
peer_address: "10.0.2.5"
description: "underlay to leaf3"
remote_asn: ["65002"]
peer_device: ["leaf3"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.2.7"
peer_address: "10.0.2.7"
description: "underlay to leaf4"
remote_asn: ["65002"]
peer_device: ["leaf4"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.2.9"
peer_address: "10.0.2.9"
description: "underlay to leaf5"
remote_asn: ["65003"]
peer_device: ["leaf5"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.2.11"
peer_address: "10.0.2.11"
description: "underlay to leaf6"
remote_asn: ["65003"]
peer_device: ["leaf6"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.2.13"
peer_address: "10.0.2.13"
description: "underlay to leaf7"
remote_asn: ["65004"]
peer_device: ["leaf7"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.2.15"
peer_address: "10.0.2.15"
description: "underlay to leaf8"
remote_asn: ["65004"]
peer_device: ["leaf8"]
# Spine2 EVPN
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.250.11"
peer_address: "10.0.250.11"
description: "EVPN to leaf1"
peer_group: "spine2__evpn"
remote_asn: ["65001"]
peer_device: ["leaf1"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.250.12"
peer_address: "10.0.250.12"
description: "EVPN to leaf2"
peer_group: "spine2__evpn"
remote_asn: ["65001"]
peer_device: ["leaf2"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.250.13"
peer_address: "10.0.250.13"
description: "EVPN to leaf3"
peer_group: "spine2__evpn"
remote_asn: ["65002"]
peer_device: ["leaf3"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.250.14"
peer_address: "10.0.250.14"
description: "EVPN to leaf4"
peer_group: "spine2__evpn"
remote_asn: ["65002"]
peer_device: ["leaf4"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.250.15"
peer_address: "10.0.250.15"
description: "EVPN to leaf5"
peer_group: "spine2__evpn"
remote_asn: ["65003"]
peer_device: ["leaf5"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.250.16"
peer_address: "10.0.250.16"
description: "EVPN to leaf6"
peer_group: "spine2__evpn"
remote_asn: ["65003"]
peer_device: ["leaf6"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.250.17"
peer_address: "10.0.250.17"
description: "EVPN to leaf7"
peer_group: "spine2__evpn"
remote_asn: ["65004"]
peer_device: ["leaf7"]
- bgp_config: ["spine2"]
local_identifier: "spine2__10.0.250.18"
peer_address: "10.0.250.18"
description: "EVPN to leaf8"
peer_group: "spine2__evpn"
remote_asn: ["65004"]
peer_device: ["leaf8"]
# ============================================================
# Leaf1 sessions
# ============================================================
- bgp_config: ["leaf1"]
local_identifier: "leaf1__10.0.1.0"
peer_address: "10.0.1.0"
description: "underlay to spine1"
peer_group: "leaf1__underlay"
peer_device: ["spine1"]
- bgp_config: ["leaf1"]
local_identifier: "leaf1__10.0.2.0"
peer_address: "10.0.2.0"
description: "underlay to spine2"
peer_group: "leaf1__underlay"
peer_device: ["spine2"]
- bgp_config: ["leaf1"]
local_identifier: "leaf1__10.0.3.1"
peer_address: "10.0.3.1"
description: "iBGP to leaf2"
peer_group: "leaf1__underlay_ibgp"
peer_device: ["leaf2"]
- bgp_config: ["leaf1"]
local_identifier: "leaf1__10.0.250.1"
peer_address: "10.0.250.1"
description: "EVPN to spine1"
peer_group: "leaf1__evpn"
peer_device: ["spine1"]
- bgp_config: ["leaf1"]
local_identifier: "leaf1__10.0.250.2"
peer_address: "10.0.250.2"
description: "EVPN to spine2"
peer_group: "leaf1__evpn"
peer_device: ["spine2"]
# ============================================================
# Leaf2 sessions
# ============================================================
- bgp_config: ["leaf2"]
local_identifier: "leaf2__10.0.1.2"
peer_address: "10.0.1.2"
description: "underlay to spine1"
peer_group: "leaf2__underlay"
peer_device: ["spine1"]
- bgp_config: ["leaf2"]
local_identifier: "leaf2__10.0.2.2"
peer_address: "10.0.2.2"
description: "underlay to spine2"
peer_group: "leaf2__underlay"
peer_device: ["spine2"]
- bgp_config: ["leaf2"]
local_identifier: "leaf2__10.0.3.0"
peer_address: "10.0.3.0"
description: "iBGP to leaf1"
peer_group: "leaf2__underlay_ibgp"
peer_device: ["leaf1"]
- bgp_config: ["leaf2"]
local_identifier: "leaf2__10.0.250.1"
peer_address: "10.0.250.1"
description: "EVPN to spine1"
peer_group: "leaf2__evpn"
peer_device: ["spine1"]
- bgp_config: ["leaf2"]
local_identifier: "leaf2__10.0.250.2"
peer_address: "10.0.250.2"
description: "EVPN to spine2"
peer_group: "leaf2__evpn"
peer_device: ["spine2"]
# ============================================================
# Leaf3 sessions
# ============================================================
- bgp_config: ["leaf3"]
local_identifier: "leaf3__10.0.1.4"
peer_address: "10.0.1.4"
description: "underlay to spine1"
peer_group: "leaf3__underlay"
peer_device: ["spine1"]
- bgp_config: ["leaf3"]
local_identifier: "leaf3__10.0.2.4"
peer_address: "10.0.2.4"
description: "underlay to spine2"
peer_group: "leaf3__underlay"
peer_device: ["spine2"]
- bgp_config: ["leaf3"]
local_identifier: "leaf3__10.0.3.3"
peer_address: "10.0.3.3"
description: "iBGP to leaf4"
peer_group: "leaf3__underlay_ibgp"
peer_device: ["leaf4"]
- bgp_config: ["leaf3"]
local_identifier: "leaf3__10.0.250.1"
peer_address: "10.0.250.1"
description: "EVPN to spine1"
peer_group: "leaf3__evpn"
peer_device: ["spine1"]
- bgp_config: ["leaf3"]
local_identifier: "leaf3__10.0.250.2"
peer_address: "10.0.250.2"
description: "EVPN to spine2"
peer_group: "leaf3__evpn"
peer_device: ["spine2"]
# ============================================================
# Leaf4 sessions
# ============================================================
- bgp_config: ["leaf4"]
local_identifier: "leaf4__10.0.1.6"
peer_address: "10.0.1.6"
description: "underlay to spine1"
peer_group: "leaf4__underlay"
peer_device: ["spine1"]
- bgp_config: ["leaf4"]
local_identifier: "leaf4__10.0.2.6"
peer_address: "10.0.2.6"
description: "underlay to spine2"
peer_group: "leaf4__underlay"
peer_device: ["spine2"]
- bgp_config: ["leaf4"]
local_identifier: "leaf4__10.0.3.2"
peer_address: "10.0.3.2"
description: "iBGP to leaf3"
peer_group: "leaf4__underlay_ibgp"
peer_device: ["leaf3"]
- bgp_config: ["leaf4"]
local_identifier: "leaf4__10.0.250.1"
peer_address: "10.0.250.1"
description: "EVPN to spine1"
peer_group: "leaf4__evpn"
peer_device: ["spine1"]
- bgp_config: ["leaf4"]
local_identifier: "leaf4__10.0.250.2"
peer_address: "10.0.250.2"
description: "EVPN to spine2"
peer_group: "leaf4__evpn"
peer_device: ["spine2"]
# ============================================================
# Leaf5 sessions
# ============================================================
- bgp_config: ["leaf5"]
local_identifier: "leaf5__10.0.1.8"
peer_address: "10.0.1.8"
description: "underlay to spine1"
peer_group: "leaf5__underlay"
peer_device: ["spine1"]
- bgp_config: ["leaf5"]
local_identifier: "leaf5__10.0.2.8"
peer_address: "10.0.2.8"
description: "underlay to spine2"
peer_group: "leaf5__underlay"
peer_device: ["spine2"]
- bgp_config: ["leaf5"]
local_identifier: "leaf5__10.0.3.5"
peer_address: "10.0.3.5"
description: "iBGP to leaf6"
peer_group: "leaf5__underlay_ibgp"
peer_device: ["leaf6"]
- bgp_config: ["leaf5"]
local_identifier: "leaf5__10.0.250.1"
peer_address: "10.0.250.1"
description: "EVPN to spine1"
peer_group: "leaf5__evpn"
peer_device: ["spine1"]
- bgp_config: ["leaf5"]
local_identifier: "leaf5__10.0.250.2"
peer_address: "10.0.250.2"
description: "EVPN to spine2"
peer_group: "leaf5__evpn"
peer_device: ["spine2"]
# ============================================================
# Leaf6 sessions
# ============================================================
- bgp_config: ["leaf6"]
local_identifier: "leaf6__10.0.1.10"
peer_address: "10.0.1.10"
description: "underlay to spine1"
peer_group: "leaf6__underlay"
peer_device: ["spine1"]
- bgp_config: ["leaf6"]
local_identifier: "leaf6__10.0.2.10"
peer_address: "10.0.2.10"
description: "underlay to spine2"
peer_group: "leaf6__underlay"
peer_device: ["spine2"]
- bgp_config: ["leaf6"]
local_identifier: "leaf6__10.0.3.4"
peer_address: "10.0.3.4"
description: "iBGP to leaf5"
peer_group: "leaf6__underlay_ibgp"
peer_device: ["leaf5"]
- bgp_config: ["leaf6"]
local_identifier: "leaf6__10.0.250.1"
peer_address: "10.0.250.1"
description: "EVPN to spine1"
peer_group: "leaf6__evpn"
peer_device: ["spine1"]
- bgp_config: ["leaf6"]
local_identifier: "leaf6__10.0.250.2"
peer_address: "10.0.250.2"
description: "EVPN to spine2"
peer_group: "leaf6__evpn"
peer_device: ["spine2"]
# ============================================================
# Leaf7 sessions
# ============================================================
- bgp_config: ["leaf7"]
local_identifier: "leaf7__10.0.1.12"
peer_address: "10.0.1.12"
description: "underlay to spine1"
peer_group: "leaf7__underlay"
peer_device: ["spine1"]
- bgp_config: ["leaf7"]
local_identifier: "leaf7__10.0.2.12"
peer_address: "10.0.2.12"
description: "underlay to spine2"
peer_group: "leaf7__underlay"
peer_device: ["spine2"]
- bgp_config: ["leaf7"]
local_identifier: "leaf7__10.0.3.7"
peer_address: "10.0.3.7"
description: "iBGP to leaf8"
peer_group: "leaf7__underlay_ibgp"
peer_device: ["leaf8"]
- bgp_config: ["leaf7"]
local_identifier: "leaf7__10.0.250.1"
peer_address: "10.0.250.1"
description: "EVPN to spine1"
peer_group: "leaf7__evpn"
peer_device: ["spine1"]
- bgp_config: ["leaf7"]
local_identifier: "leaf7__10.0.250.2"
peer_address: "10.0.250.2"
description: "EVPN to spine2"
peer_group: "leaf7__evpn"
peer_device: ["spine2"]
# ============================================================
# Leaf8 sessions
# ============================================================
- bgp_config: ["leaf8"]
local_identifier: "leaf8__10.0.1.14"
peer_address: "10.0.1.14"
description: "underlay to spine1"
peer_group: "leaf8__underlay"
peer_device: ["spine1"]
- bgp_config: ["leaf8"]
local_identifier: "leaf8__10.0.2.14"
peer_address: "10.0.2.14"
description: "underlay to spine2"
peer_group: "leaf8__underlay"
peer_device: ["spine2"]
- bgp_config: ["leaf8"]
local_identifier: "leaf8__10.0.3.6"
peer_address: "10.0.3.6"
description: "iBGP to leaf7"
peer_group: "leaf8__underlay_ibgp"
peer_device: ["leaf7"]
- bgp_config: ["leaf8"]
local_identifier: "leaf8__10.0.250.1"
peer_address: "10.0.250.1"
description: "EVPN to spine1"
peer_group: "leaf8__evpn"
peer_device: ["spine1"]
- bgp_config: ["leaf8"]
local_identifier: "leaf8__10.0.250.2"
peer_address: "10.0.250.2"
description: "EVPN to spine2"
peer_group: "leaf8__evpn"
peer_device: ["spine2"]
---
apiVersion: infrahub.app/v1
kind: Object
spec:
kind: InfraBGPAddressFamily
data:
# ============================================================
# Spine1 address families
# ============================================================
- bgp_config: ["spine1"]
local_identifier: "spine1__ipv4_unicast"
afi: ipv4
safi: unicast
networks:
- ["10.0.250.1/32"]
- bgp_config: ["spine1"]
local_identifier: "spine1__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "spine1__evpn"
# ============================================================
# Spine2 address families
# ============================================================
- bgp_config: ["spine2"]
local_identifier: "spine2__ipv4_unicast"
afi: ipv4
safi: unicast
networks:
- ["10.0.250.2/32"]
- bgp_config: ["spine2"]
local_identifier: "spine2__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "spine2__evpn"
# ============================================================
# Leaf1 address families
# ============================================================
- bgp_config: ["leaf1"]
local_identifier: "leaf1__ipv4_unicast"
afi: ipv4
safi: unicast
active_peer_groups:
- "leaf1__underlay"
- "leaf1__underlay_ibgp"
networks:
- ["10.0.250.11/32"]
- ["10.0.255.11/32"]
- bgp_config: ["leaf1"]
local_identifier: "leaf1__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "leaf1__evpn"
# ============================================================
# Leaf2 address families
# ============================================================
- bgp_config: ["leaf2"]
local_identifier: "leaf2__ipv4_unicast"
afi: ipv4
safi: unicast
active_peer_groups:
- "leaf2__underlay"
- "leaf2__underlay_ibgp"
networks:
- ["10.0.250.12/32"]
- ["10.0.255.11/32"]
- bgp_config: ["leaf2"]
local_identifier: "leaf2__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "leaf2__evpn"
# ============================================================
# Leaf3 address families
# ============================================================
- bgp_config: ["leaf3"]
local_identifier: "leaf3__ipv4_unicast"
afi: ipv4
safi: unicast
active_peer_groups:
- "leaf3__underlay"
- "leaf3__underlay_ibgp"
networks:
- ["10.0.250.13/32"]
- ["10.0.255.12/32"]
- bgp_config: ["leaf3"]
local_identifier: "leaf3__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "leaf3__evpn"
# ============================================================
# Leaf4 address families
# ============================================================
- bgp_config: ["leaf4"]
local_identifier: "leaf4__ipv4_unicast"
afi: ipv4
safi: unicast
active_peer_groups:
- "leaf4__underlay"
- "leaf4__underlay_ibgp"
networks:
- ["10.0.250.14/32"]
- ["10.0.255.12/32"]
- bgp_config: ["leaf4"]
local_identifier: "leaf4__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "leaf4__evpn"
# ============================================================
# Leaf5 address families
# ============================================================
- bgp_config: ["leaf5"]
local_identifier: "leaf5__ipv4_unicast"
afi: ipv4
safi: unicast
active_peer_groups:
- "leaf5__underlay"
- "leaf5__underlay_ibgp"
networks:
- ["10.0.250.15/32"]
- ["10.0.255.13/32"]
- bgp_config: ["leaf5"]
local_identifier: "leaf5__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "leaf5__evpn"
# ============================================================
# Leaf6 address families
# ============================================================
- bgp_config: ["leaf6"]
local_identifier: "leaf6__ipv4_unicast"
afi: ipv4
safi: unicast
active_peer_groups:
- "leaf6__underlay"
- "leaf6__underlay_ibgp"
networks:
- ["10.0.250.16/32"]
- ["10.0.255.13/32"]
- bgp_config: ["leaf6"]
local_identifier: "leaf6__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "leaf6__evpn"
# ============================================================
# Leaf7 address families
# ============================================================
- bgp_config: ["leaf7"]
local_identifier: "leaf7__ipv4_unicast"
afi: ipv4
safi: unicast
active_peer_groups:
- "leaf7__underlay"
- "leaf7__underlay_ibgp"
networks:
- ["10.0.250.17/32"]
- ["10.0.255.14/32"]
- bgp_config: ["leaf7"]
local_identifier: "leaf7__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "leaf7__evpn"
# ============================================================
# Leaf8 address families
# ============================================================
- bgp_config: ["leaf8"]
local_identifier: "leaf8__ipv4_unicast"
afi: ipv4
safi: unicast
active_peer_groups:
- "leaf8__underlay"
- "leaf8__underlay_ibgp"
networks:
- ["10.0.250.18/32"]
- ["10.0.255.14/32"]
- bgp_config: ["leaf8"]
local_identifier: "leaf8__evpn_unicast"
afi: evpn
safi: unicast
active_peer_groups:
- "leaf8__evpn"