From d87ffcaca6bb76590a8100c5b1444806e1893a07 Mon Sep 17 00:00:00 2001 From: Damien Arnodo Date: Thu, 5 Feb 2026 15:53:11 +0000 Subject: [PATCH] feat(schema): add VRF schema Add models for VRF, Route Target, and VRF-Device assignments. Supports L3VNI association for symmetric IRB routing. Ref: #41 --- schemas/vrf.yml | 109 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 schemas/vrf.yml diff --git a/schemas/vrf.yml b/schemas/vrf.yml new file mode 100644 index 0000000..aa8a10d --- /dev/null +++ b/schemas/vrf.yml @@ -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