diff --git a/initializers/device_type_interfaces.yml b/initializers/device_type_interfaces.yml new file mode 100644 index 0000000..a5dccbd --- /dev/null +++ b/initializers/device_type_interfaces.yml @@ -0,0 +1,18 @@ +# - device_type: Other +# name: GigabitEthernet1 +# type: 10gbase-t +# mgmt_only: true +# description: Management interface +# +# - device_type: Other +# name: GigabitEthernet2 +# type: 10gbase-t +# mgmt_only: false +# description: Data interface +# +# - device_type: Other +# name: GigabitEthernet3 +# type: 1000base-t +# description: GigE data interface +--- + diff --git a/startup_scripts/220_platforms.py b/startup_scripts/180_platforms.py similarity index 100% rename from startup_scripts/220_platforms.py rename to startup_scripts/180_platforms.py diff --git a/startup_scripts/180_device_roles.py b/startup_scripts/190_device_roles.py similarity index 100% rename from startup_scripts/180_device_roles.py rename to startup_scripts/190_device_roles.py diff --git a/startup_scripts/190_device_types.py b/startup_scripts/200_device_types.py similarity index 100% rename from startup_scripts/190_device_types.py rename to startup_scripts/200_device_types.py diff --git a/startup_scripts/210_device_type_interfaces.py b/startup_scripts/210_device_type_interfaces.py new file mode 100644 index 0000000..77f6b53 --- /dev/null +++ b/startup_scripts/210_device_type_interfaces.py @@ -0,0 +1,27 @@ +import sys + +from dcim.models import DeviceType, InterfaceTemplate +from startup_script_utils import load_yaml, pop_custom_fields, set_custom_fields_values + +interfaces = load_yaml("/opt/netbox/initializers/device_type_interfaces.yml") + +if interfaces is None: + sys.exit() + +required_assocs = {"device_type": (DeviceType, "model")} + +for params in interfaces: + custom_field_data = pop_custom_fields(params) + + for assoc, details in required_assocs.items(): + model, field = details + query = {field: params.pop(assoc)} + + params[assoc] = model.objects.get(**query) + + interface, created = InterfaceTemplate.objects.get_or_create(**params) + + if created: + set_custom_fields_values(interface, custom_field_data) + + print("🧷 Created interface template", interface.device_type, interface.name) diff --git a/startup_scripts/200_devices.py b/startup_scripts/220_devices.py similarity index 100% rename from startup_scripts/200_devices.py rename to startup_scripts/220_devices.py diff --git a/startup_scripts/210_dcim_interfaces.py b/startup_scripts/230_dcim_interfaces.py similarity index 100% rename from startup_scripts/210_dcim_interfaces.py rename to startup_scripts/230_dcim_interfaces.py diff --git a/startup_scripts/230_route_targets.py b/startup_scripts/240_route_targets.py similarity index 100% rename from startup_scripts/230_route_targets.py rename to startup_scripts/240_route_targets.py diff --git a/startup_scripts/240_vrfs.py b/startup_scripts/250_vrfs.py similarity index 100% rename from startup_scripts/240_vrfs.py rename to startup_scripts/250_vrfs.py diff --git a/startup_scripts/250_rirs.py b/startup_scripts/260_rirs.py similarity index 100% rename from startup_scripts/250_rirs.py rename to startup_scripts/260_rirs.py diff --git a/startup_scripts/260_asns.py b/startup_scripts/270_asns.py similarity index 100% rename from startup_scripts/260_asns.py rename to startup_scripts/270_asns.py diff --git a/startup_scripts/270_aggregates.py b/startup_scripts/280_aggregates.py similarity index 100% rename from startup_scripts/270_aggregates.py rename to startup_scripts/280_aggregates.py diff --git a/startup_scripts/280_prefix_vlan_roles.py b/startup_scripts/290_prefix_vlan_roles.py similarity index 100% rename from startup_scripts/280_prefix_vlan_roles.py rename to startup_scripts/290_prefix_vlan_roles.py diff --git a/startup_scripts/290_cluster_types.py b/startup_scripts/300_cluster_types.py similarity index 100% rename from startup_scripts/290_cluster_types.py rename to startup_scripts/300_cluster_types.py diff --git a/startup_scripts/300_cluster_groups.py b/startup_scripts/310_cluster_groups.py similarity index 100% rename from startup_scripts/300_cluster_groups.py rename to startup_scripts/310_cluster_groups.py diff --git a/startup_scripts/310_clusters.py b/startup_scripts/320_clusters.py similarity index 100% rename from startup_scripts/310_clusters.py rename to startup_scripts/320_clusters.py diff --git a/startup_scripts/320_vlan_groups.py b/startup_scripts/330_vlan_groups.py similarity index 100% rename from startup_scripts/320_vlan_groups.py rename to startup_scripts/330_vlan_groups.py diff --git a/startup_scripts/330_vlans.py b/startup_scripts/340_vlans.py similarity index 100% rename from startup_scripts/330_vlans.py rename to startup_scripts/340_vlans.py diff --git a/startup_scripts/340_virtual_machines.py b/startup_scripts/350_virtual_machines.py similarity index 100% rename from startup_scripts/340_virtual_machines.py rename to startup_scripts/350_virtual_machines.py diff --git a/startup_scripts/350_virtualization_interfaces.py b/startup_scripts/360_virtualization_interfaces.py similarity index 100% rename from startup_scripts/350_virtualization_interfaces.py rename to startup_scripts/360_virtualization_interfaces.py diff --git a/startup_scripts/360_prefixes.py b/startup_scripts/370_prefixes.py similarity index 100% rename from startup_scripts/360_prefixes.py rename to startup_scripts/370_prefixes.py diff --git a/startup_scripts/370_ip_addresses.py b/startup_scripts/380_ip_addresses.py similarity index 100% rename from startup_scripts/370_ip_addresses.py rename to startup_scripts/380_ip_addresses.py diff --git a/startup_scripts/380_primary_ips.py b/startup_scripts/390_primary_ips.py similarity index 100% rename from startup_scripts/380_primary_ips.py rename to startup_scripts/390_primary_ips.py