feat(schema): add VRF schema
Add models for VRF, Route Target, and VRF-Device assignments. Supports L3VNI association for symmetric IRB routing. Ref: #41
This commit is contained in:
109
schemas/vrf.yml
Normal file
109
schemas/vrf.yml
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# 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
|
||||||
|
default_filter: name__value
|
||||||
|
order_by:
|
||||||
|
- name__value
|
||||||
|
display_labels:
|
||||||
|
- name__value
|
||||||
|
attributes:
|
||||||
|
- name: name
|
||||||
|
kind: Text
|
||||||
|
description: VRF name
|
||||||
|
- name: description
|
||||||
|
kind: Text
|
||||||
|
optional: true
|
||||||
|
- name: rd
|
||||||
|
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
|
||||||
|
cardinality: many
|
||||||
|
optional: true
|
||||||
|
- name: export_targets
|
||||||
|
peer: InfraRouteTarget
|
||||||
|
cardinality: many
|
||||||
|
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
|
||||||
|
default_filter: target__value
|
||||||
|
order_by:
|
||||||
|
- target__value
|
||||||
|
display_labels:
|
||||||
|
- 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
|
||||||
|
display_labels:
|
||||||
|
- vrf__name__value
|
||||||
|
- device__name__value
|
||||||
|
attributes:
|
||||||
|
- name: rd
|
||||||
|
kind: Text
|
||||||
|
optional: true
|
||||||
|
description: "Device-specific RD (overrides VRF default)"
|
||||||
|
relationships:
|
||||||
|
- name: vrf
|
||||||
|
peer: InfraVRF
|
||||||
|
cardinality: one
|
||||||
|
- name: device
|
||||||
|
peer: InfraDevice
|
||||||
|
cardinality: one
|
||||||
|
kind: Parent
|
||||||
|
- name: import_targets
|
||||||
|
peer: InfraRouteTarget
|
||||||
|
cardinality: many
|
||||||
|
optional: true
|
||||||
|
description: Device-specific import RTs
|
||||||
|
- name: export_targets
|
||||||
|
peer: InfraRouteTarget
|
||||||
|
cardinality: many
|
||||||
|
optional: true
|
||||||
|
description: Device-specific export RTs
|
||||||
Reference in New Issue
Block a user