From ae0c10d3a380c3835fa6562799a066fbccd9fdea Mon Sep 17 00:00:00 2001 From: lpconsulting321 Date: Mon, 7 Oct 2024 21:23:40 +0000 Subject: [PATCH 1/2] Closes #4564 --- models/examples/slurpit/slurpit.yml | 398 ++++++++++++++++++++++++++++ 1 file changed, 398 insertions(+) create mode 100644 models/examples/slurpit/slurpit.yml diff --git a/models/examples/slurpit/slurpit.yml b/models/examples/slurpit/slurpit.yml new file mode 100644 index 0000000000..0cb655b3b7 --- /dev/null +++ b/models/examples/slurpit/slurpit.yml @@ -0,0 +1,398 @@ +# yaml-language-server: $schema=https://schema.infrahub.app/infrahub/schema/latest.json +--- +version: "1.0" +generics: + - name: Choice + namespace: Template + description: "Generic Choice" + include_in_menu: false + label: "Choice" + default_filter: name__value + display_labels: + - name__value + order_by: + - name__value + attributes: + - name: name + kind: Text + unique: true + - name: description + kind: Text + optional: true +nodes: + - name: Generic + namespace: Organization + label: Organization + description: An organization represent a legal entity, a company. + default_filter: name__value + display_labels: [label__value] + order_by: [name__value] + icon: mdi:domain + include_in_menu: true + attributes: + - kind: Text + name: name + unique: true + - kind: Text + name: label + optional: true + - kind: Text + name: description + optional: true + - name: type + kind: Text + optional: true + relationships: + - name: group + identifier: "organization__group" + peer: CoreStandardGroup + optional: true + cardinality: one + kind: Generic + - name: Generic + namespace: Location + label: Location + description: "A location represent a site in Slurpit" + default_filter: name__value + display_labels: [name__value] + order_by: [name__value] + icon: mdi:map-marker-radius-outline + include_in_menu: true + attributes: + - kind: Text + name: name + unique: true + - kind: Text + name: description + optional: true + - kind: Text + name: number + label: Street Number + optional: true + - kind: Text + name: street + optional: true + - kind: Text + name: zipcode + optional: true + - kind: Text + name: country + optional: true + - kind: Text + name: phonenumber + label: Phone Number + optional: true + relationships: + - name: organization + peer: OrganizationGeneric + optional: true + cardinality: one + kind: Attribute + - name: devices + peer: InfraDevice + optional: true + cardinality: many + - name: tags + peer: BuiltinTag + optional: true + cardinality: many + kind: Attribute + - name: group + identifier: "location__group" + peer: CoreStandardGroup + optional: true + cardinality: one + kind: Generic + - name: DeviceType + namespace: Template + description: "Device Type" + label: "Device Type" + icon: "mdi:poll" + menu_placement: "InfraDevice" + default_filter: name__value + display_labels: + - name__value + order_by: + - name__value + inherit_from: + - "TemplateChoice" + relationships: + - cardinality: many + identifier: device__type + name: device + optional: true + peer: InfraDevice + - name: manufacturer + peer: OrganizationGeneric + optional: true + cardinality: one + kind: Attribute + - name: Platform + namespace: Infra + description: "A Platform represent the type of software running on a device" + label: "Platform" + icon: "mdi:cube-outline" # mdi:application-brackets-outline + menu_placement: "InfraDevice" + default_filter: name__value + order_by: + - name__value + display_labels: + - name__value + attributes: + - name: name + kind: Text + unique: true + - name: description + kind: Text + optional: true + relationships: + - name: devices + peer: InfraDevice + optional: true + cardinality: many + - name: HardwareInfo + namespace: Infra + label: Hardware Info + description: Hardware that are part of the device. + icon: "mdi:format-list-bulleted" + uniqueness_constraints: + - ["device", "serial__value"] + display_labels: + - name__value + order_by: + - device__hostname__value + - name__value + attributes: + - name: name + kind: Text + optional: false + - name: description + kind: Text + optional: true + - name: product + label: Product + kind: Text + optional: true + - name: serial + label: Serial Number + kind: Text + optional: true + - name: version + label: Version + kind: Text + optional: true + relationships: + - name: device + peer: InfraDevice + kind: Parent + optional: false + cardinality: one + identifier: "device__hardware" + - name: Version + namespace: Infra + description: Slurpit Version + icon: "mdi:update" + attributes: + - name: version + kind: Text + - name: file + kind: Text + optional: true + relationships: + - name: devices + peer: InfraDevice + optional: true + cardinality: many + - name: Device + namespace: Infra + description: Slurpit Device + icon: "mdi:router-network" + uniqueness_constraints: + - ["hostname__value"] + order_by: + - hostname__value + attributes: + - name: hostname + kind: Text + - name: fqdn + kind: Text + label: FQDN + optional: true + relationships: + - name: manufacturer + peer: OrganizationGeneric + optional: true + cardinality: one + kind: Attribute + - name: location + peer: LocationGeneric + optional: true + cardinality: one + kind: Attribute + - name: device_type + label: Device Type + peer: TemplateDeviceType + optional: true + cardinality: one + kind: Attribute + - name: platform + peer: InfraPlatform + cardinality: one + optional: true + kind: Attribute + - name: hardware + peer: InfraHardwareInfo + kind: Component + optional: true + cardinality: many + identifier: "device__hardware" + - name: version + peer: InfraVersion + kind: Attribute + optional: true + cardinality: one + - name: interfaces + peer: InfraInterface + optional: true + identifier: "device__interface" + cardinality: many + kind: Component + - name: VLAN + namespace: Infra + description: "VLAN" + label: "VLAN" + icon: "mdi:lan-pending" # mdi:lan + uniqueness_constraints: + - [vlan_id__value, name__value] + order_by: + - vlan_id__value + display_labels: + - name__value + - vlan_id__value + attributes: + - name: name + kind: Text + optional: true + - name: description + kind: Text + optional: true + - name: vlan_id + kind: Number + - name: VRF + namespace: Infra + description: "VRF" + label: "VRF" + icon: "mdi:router" + default_filter: name__value + order_by: + - name__value + display_labels: + - name__value + attributes: + - name: name + kind: Text + - name: description + kind: Text + optional: true + - name: Interface + namespace: Infra + description: "Network Interface" + label: "Interface" + icon: "mdi:ethernet" + menu_placement: "InfraDevice" + display_labels: + - name__value + order_by: + - device__hostname__value + - name__value + uniqueness_constraints: + - ["device", "name__value"] + inherit_from: + - "CoreArtifactTarget" + attributes: + - name: name + kind: Text + optional: false + - name: description + kind: Text + optional: true + - name: speed + kind: Number + optional: true + - name: mtu + label: MTU + default_value: 1500 + kind: Number + - name: enabled + kind: Boolean + default_value: true + - name: mac_address + label: Mac Address + kind: Text + optional: true + - name: duplex + kind: Text + optional: true + relationships: + - name: device + peer: InfraDevice + identifier: "device__interface" + optional: false + cardinality: one + kind: Parent + - name: IPAddress + namespace: Infra + description: "IP Address" + label: "IP Address" + icon: "mdi:ip" + default_filter: address__value + order_by: + - "address__value" + display_labels: + - address__value + attributes: + - name: address + kind: IPHost + - name: description + kind: Text + optional: true + relationships: + - name: interface + peer: InfraInterface + optional: true + cardinality: one + - name: prefix + peer: InfraPrefix + optional: true + cardinality: one + - name: Prefix + namespace: Infra + description: "IP Prefix" + icon: "mdi:ip-network" + label: "Prefix" + default_filter: prefix__value + order_by: + - vrf__name__value + - prefix__value + display_labels: + - prefix__value + attributes: + - name: prefix + kind: IPNetwork + order_weight: 1000 + - name: description + kind: Text + optional: true + order_weight: 1100 + relationships: + - name: vrf + peer: InfraVRF + optional: true + cardinality: one + kind: Attribute + order_weight: 1450 + - name: ip_addresses + peer: InfraIPAddress + cardinality: many + kind: Component + order_weight: 1600 From 4e679045b83e35c721a31d8e08cac33d0a000b38 Mon Sep 17 00:00:00 2001 From: lpconsulting321 Date: Wed, 16 Oct 2024 16:16:34 +0000 Subject: [PATCH 2/2] Add more site fields to match API and add relation from Interface to IP's --- models/examples/slurpit/slurpit.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/models/examples/slurpit/slurpit.yml b/models/examples/slurpit/slurpit.yml index 0cb655b3b7..d9854a0632 100644 --- a/models/examples/slurpit/slurpit.yml +++ b/models/examples/slurpit/slurpit.yml @@ -72,6 +72,15 @@ nodes: - kind: Text name: street optional: true + - kind: Text + name: city + optional: true + - kind: Text + name: county + optional: true + - kind: Text + name: state + optional: true - kind: Text name: zipcode optional: true @@ -340,6 +349,10 @@ nodes: optional: false cardinality: one kind: Parent + - name: ip_addresses + peer: InfraIPAddress + cardinality: many + kind: Component - name: IPAddress namespace: Infra description: "IP Address"