Also enriched VRFDeviceAssignment display_label to show device + VRF. Refs #41
122 lines
3.5 KiB
YAML
122 lines
3.5 KiB
YAML
# VRF Schema for EVPN-VXLAN Fabric
|
|
# Defines VRF and Route Target configuration for L3 VPN
|
|
---
|
|
version: "1.0"
|
|
nodes:
|
|
# ===================================================================
|
|
# VRF (Virtual Routing and Forwarding)
|
|
# ===================================================================
|
|
- name: VRF
|
|
namespace: Infra
|
|
description: Virtual Routing and Forwarding instance
|
|
label: VRF
|
|
icon: mdi--router
|
|
human_friendly_id:
|
|
- name__value
|
|
order_by:
|
|
- name__value
|
|
display_label: "{{ name__value }}"
|
|
attributes:
|
|
- name: name
|
|
kind: Text
|
|
unique: true
|
|
description: VRF name
|
|
- name: description
|
|
kind: Text
|
|
optional: true
|
|
- name: route_distinguisher
|
|
kind: Text
|
|
optional: true
|
|
description: "Route Distinguisher (format: ASN:NN or IP:NN)"
|
|
- name: vrf_id
|
|
kind: Number
|
|
optional: true
|
|
description: VRF table ID
|
|
relationships:
|
|
- name: l3vni
|
|
peer: InfraVNI
|
|
cardinality: one
|
|
optional: true
|
|
description: L3 VNI for symmetric IRB
|
|
- name: import_targets
|
|
peer: InfraRouteTarget
|
|
identifier: vrf_import_targets
|
|
cardinality: many
|
|
direction: outbound
|
|
optional: true
|
|
- name: export_targets
|
|
peer: InfraRouteTarget
|
|
identifier: vrf_export_targets
|
|
cardinality: many
|
|
direction: outbound
|
|
optional: true
|
|
- name: interfaces
|
|
peer: InfraInterface
|
|
cardinality: many
|
|
optional: true
|
|
description: Interfaces assigned to this VRF
|
|
|
|
# ===================================================================
|
|
# Route Target
|
|
# ===================================================================
|
|
- name: RouteTarget
|
|
namespace: Infra
|
|
description: BGP Route Target for VPN import/export
|
|
label: Route Target
|
|
icon: mdi--target
|
|
human_friendly_id:
|
|
- target__value
|
|
order_by:
|
|
- target__value
|
|
display_label: "{{ target__value }}"
|
|
attributes:
|
|
- name: target
|
|
kind: Text
|
|
unique: true
|
|
description: "Route Target value (format: ASN:NN or IP:NN)"
|
|
- name: description
|
|
kind: Text
|
|
optional: true
|
|
|
|
# ===================================================================
|
|
# VRF Device Assignment
|
|
# ===================================================================
|
|
- name: VRFDeviceAssignment
|
|
namespace: Infra
|
|
description: VRF assignment to a specific device
|
|
label: VRF Assignment
|
|
icon: mdi--router-network
|
|
human_friendly_id:
|
|
- device__name__value
|
|
- vrf__name__value
|
|
display_label: "{{ device__name__value }} - {{ vrf__name__value }}"
|
|
attributes:
|
|
- name: route_distinguisher
|
|
kind: Text
|
|
optional: true
|
|
description: "Device-specific RD (overrides VRF default)"
|
|
relationships:
|
|
- name: vrf
|
|
peer: InfraVRF
|
|
cardinality: one
|
|
optional: false
|
|
- name: device
|
|
peer: InfraDevice
|
|
cardinality: one
|
|
kind: Parent
|
|
optional: false
|
|
- name: import_targets
|
|
peer: InfraRouteTarget
|
|
identifier: vrf_assignment_import_targets
|
|
cardinality: many
|
|
direction: outbound
|
|
optional: true
|
|
description: Device-specific import RTs
|
|
- name: export_targets
|
|
peer: InfraRouteTarget
|
|
identifier: vrf_assignment_export_targets
|
|
cardinality: many
|
|
direction: outbound
|
|
optional: true
|
|
description: Device-specific export RTs
|