Files
arista-evpn-vxlan-clab/infrahub/schemas/extensions.yml
Damien 9a0b6dd1e6 feat(schema): add bidirectional relationship identifiers and fabric-device links
- LocationSite: add devices (device__site) and fabrics (fabric__sites) reverse relationships
- InfraDevice.site: add identifier device__site
- InfraDevice: add fabric relationship (fabric__devices)
- InfraFabric.sites: add identifier fabric__sites; add devices reverse relationship (fabric__devices)
- InfraInterfaceVlan.vlan: add identifier vlan__svi
- InfraVLAN: add svi_interfaces reverse relationship (vlan__svi)
- Add 14-fabric-links.yml to assign all 10 devices to the evpn-lab fabric

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 20:59:10 +01:00

172 lines
5.0 KiB
YAML

# Extensions Schema for EVPN-VXLAN Fabric
# Custom attributes and fabric-specific configurations
---
version: "1.0"
nodes:
# ================================================================
# Fabric (Top-level container for all fabric objects)
# ================================================================
- name: Fabric
namespace: Infra
description: EVPN-VXLAN Fabric definition
label: Fabric
icon: mdi--vector-polygon
include_in_menu: false
human_friendly_id:
- name__value
order_by:
- name__value
display_label: "{{ name__value }}"
attributes:
- name: name
kind: Text
unique: true
description: Fabric name (e.g., arista-evpn-fabric)
- name: description
kind: Text
optional: true
- name: underlay_protocol
kind: Dropdown
default_value: ebgp
choices:
- name: ebgp
label: eBGP
- name: ospf
label: OSPF
- name: isis
label: IS-IS
- name: overlay_protocol
kind: Dropdown
default_value: evpn
choices:
- name: evpn
label: EVPN
- name: ingress_replication
label: Ingress Replication
- name: anycast_gateway_mac
kind: Text
optional: true
description: "Shared MAC for anycast gateway (format: xxxx.xxxx.xxxx)"
relationships:
- name: spine_asn
peer: InfraAutonomousSystem
cardinality: one
optional: true
description: AS used by spine layer
- name: sites
peer: LocationSite
identifier: fabric__sites
cardinality: many
optional: true
- name: devices
peer: InfraDevice
identifier: fabric__devices
cardinality: many
kind: Generic
description: Devices in this fabric
# ================================================================
# Underlay P2P Link
# ================================================================
- name: UnderlayLink
namespace: Infra
description: Point-to-point underlay link between devices
label: Underlay Link
icon: mdi--cable-data
include_in_menu: false
display_label: "{{ description__value }}"
attributes:
- name: description
kind: Text
description: Link description (e.g., spine1:eth1 <-> leaf1:eth11)
- name: mtu
kind: Number
default_value: 9214
relationships:
- name: fabric
peer: InfraFabric
cardinality: one
kind: Parent
optional: false
- name: local_device
peer: InfraDevice
identifier: underlay_link_local_device
cardinality: one
direction: outbound
- name: local_interface
peer: InfraInterfaceEthernet
identifier: underlay_link_local_interface
cardinality: one
direction: outbound
- name: local_ip_address
peer: InfraIPAddress
identifier: underlay_link_local_ip
cardinality: one
direction: outbound
- name: remote_device
peer: InfraDevice
identifier: underlay_link_remote_device
cardinality: one
direction: outbound
- name: remote_interface
peer: InfraInterfaceEthernet
identifier: underlay_link_remote_interface
cardinality: one
direction: outbound
- name: remote_ip_address
peer: InfraIPAddress
identifier: underlay_link_remote_ip
cardinality: one
direction: outbound
# ================================================================
# Host Connection
# ================================================================
- name: HostConnection
namespace: Infra
description: Host connection to fabric (single or dual-homed)
label: Host Connection
icon: mdi--desktop-tower
include_in_menu: false
human_friendly_id:
- hostname__value
display_label: "{{ hostname__value }}"
attributes:
- name: hostname
kind: Text
description: Connected host name
- name: description
kind: Text
optional: true
- name: connection_type
kind: Dropdown
default_value: dual_homed
choices:
- name: single_homed
label: Single-Homed
- name: dual_homed
label: Dual-Homed (MLAG)
- name: lacp_mode
kind: Dropdown
default_value: active
choices:
- name: active
label: Active
- name: passive
label: Passive
relationships:
- name: vlans
peer: InfraVLAN
cardinality: many
description: VLANs allowed on this connection
- name: mlag_interface
peer: InfraMlagInterface
cardinality: one
optional: true
description: MLAG interface for dual-homed
- name: lag_interface
peer: InfraInterfaceLag
cardinality: one
optional: true
description: LAG for single-homed