diff --git a/schemas/extensions.yml b/schemas/extensions.yml new file mode 100644 index 0000000..87e20fd --- /dev/null +++ b/schemas/extensions.yml @@ -0,0 +1,147 @@ +# 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 + default_filter: name__value + order_by: + - name__value + display_labels: + - 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 + cardinality: many + optional: true + + # ============================================================================= + # Underlay P2P Link + # ============================================================================= + - name: UnderlayLink + namespace: Infra + description: Point-to-point underlay link between devices + label: Underlay Link + icon: mdi--cable-data + display_labels: + - local_device__name__value + - remote_device__name__value + attributes: + - name: local_ip + kind: IPNetwork + description: Local interface IP with mask + - name: remote_ip + kind: IPNetwork + description: Remote interface IP with mask + - name: mtu + kind: Number + default_value: 9214 + relationships: + - name: fabric + peer: InfraFabric + cardinality: one + kind: Parent + - name: local_device + peer: InfraDevice + cardinality: one + - name: local_interface + peer: InfraInterfaceEthernet + cardinality: one + - name: remote_device + peer: InfraDevice + cardinality: one + - name: remote_interface + peer: InfraInterfaceEthernet + cardinality: one + + # ============================================================================= + # Host Connection + # ============================================================================= + - name: HostConnection + namespace: Infra + description: Host connection to fabric (single or dual-homed) + label: Host Connection + icon: mdi--desktop-tower + default_filter: hostname__value + display_labels: + - 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