# yaml-language-server: $schema=https://schema.infrahub.app/infrahub/schema/latest.json --- version: "1.0" nodes: - name: Datacenter namespace: Infra label: "Datacenter" icon: "mdi:server-network" include_in_menu: true menu_placement: "LocationSite" human_friendly_id: ["name__value"] display_label: "name__value" order_by: - dc_id__value generate_template: false description: "Datacenter - Generator object that creates fabric topology" attributes: - name: name kind: Text unique: true optional: false description: "Datacenter name (e.g., DC1, DC2)" - name: dc_id kind: Number unique: true optional: false description: "Numeric datacenter ID for IP addressing (e.g., 1, 2)" - name: description kind: Text optional: true description: "Datacenter description" - name: parent_subnet kind: IPNetwork optional: false description: "Address space allocation" # Topology Configuration - name: number_of_bays kind: Number optional: false default_value: 2 description: "Number of bays/racks (determines leaf count)" - name: spine_count kind: Number optional: false default_value: 3 description: "Number of spine switches" - name: border_leaf_count kind: Number optional: false default_value: 2 description: "Number of border leaf switches for DCI (0 if has_border_leafs=false)" # BGP Configuration - name: bgp_base_asn kind: Number optional: false default_value: 65000 description: "Base ASN for BGP (e.g., 65000)" - name: spine_asn kind: Number optional: true description: "Spine ASN (auto-calculated: base + dc_id * 100)" # MLAG Configuration - name: mlag_domain_id kind: Text optional: false default_value: "MLAG" description: "MLAG domain identifier" # Interface Configuration - name: mtu kind: Number optional: false default_value: 9214 description: "Default MTU for fabric interfaces" # DCI Configuration (Optional) - name: dci_enabled kind: Boolean optional: false default_value: false description: "Enable DCI connectivity (activates border leaf eth12). Default: false (eth12 shutdown)" - name: dci_remote_dc_id kind: Number optional: true description: "Remote datacenter ID for DCI peering (required when dci_enabled=true)" - name: has_border_leafs kind: Boolean optional: false default_value: true description: "Include border leaf switches (set false if no DCI capability needed)" # Computed/Derived Attributes (read-only, set by generator) - name: leaf_pair_count kind: Number optional: true read_only: true description: "Computed: ceil(number_of_bays / 2)" - name: total_leaf_count kind: Number optional: true read_only: true description: "Computed: leaf_pair_count * 2" - name: total_access_count kind: Number optional: true read_only: true description: "Computed: number_of_bays" # Status - name: status kind: Dropdown optional: false default_value: "planned" choices: - name: planned label: Planned color: "#ffd966" - name: active label: Active color: "#7fbf7f" - name: maintenance label: Maintenance color: "#ff9999" relationships: - name: site peer: LocationSite optional: false cardinality: one kind: Attribute description: "Parent site" - name: devices peer: NetworkDevice optional: true cardinality: many kind: Component description: "All devices in this datacenter (generated)" - name: ip_prefixes peer: IpamIPPrefix optional: true cardinality: many kind: Generic description: "IP prefixes for this datacenter (generated)" - name: mlag_pairs peer: NetworkMLAGDomain optional: true cardinality: many kind: Generic description: "MLAG pairs in this datacenter (generated)" - name: Bay namespace: Infra label: "Bay/Rack" icon: "mdi:server-outline" include_in_menu: true menu_placement: "InfraDatacenter" human_friendly_id: ["name__value"] display_label: "name__value" order_by: - bay_id__value attributes: - name: name kind: Text unique: true optional: false description: "Bay name (e.g., Bay-1-DC1)" - name: bay_id kind: Number optional: false description: "Bay numeric ID" - name: location kind: Text optional: true description: "Physical location in datacenter" - name: rack_units kind: Number optional: false default_value: 42 description: "Available rack units (U)" relationships: - name: datacenter peer: InfraDatacenter optional: false cardinality: one kind: Parent - name: access_switch peer: NetworkDevice identifier: bay__access_switch optional: true cardinality: one kind: Attribute description: "Access switch for this bay" - name: leaf_pair peer: NetworkMLAGDomain optional: true cardinality: one kind: Attribute description: "Leaf pair serving this bay" - name: hosts peer: NetworkDevice identifier: bay__hosts optional: true cardinality: many kind: Generic description: "Host devices in this bay"