Added device type interface startup script and sample YAML initializer

Renumber startup scripts to place platform initialization before the devices to enable platform specification during device creation
This commit is contained in:
Palmer Sample 2022-06-06 13:54:54 -04:00
parent 61a3afbb3b
commit 036d3f881e
23 changed files with 45 additions and 0 deletions

View file

@ -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
---

View file

@ -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)