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:
parent
61a3afbb3b
commit
036d3f881e
23 changed files with 45 additions and 0 deletions
27
startup_scripts/230_dcim_interfaces.py
Normal file
27
startup_scripts/230_dcim_interfaces.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
import sys
|
||||
|
||||
from dcim.models import Device, Interface
|
||||
from startup_script_utils import load_yaml, pop_custom_fields, set_custom_fields_values
|
||||
|
||||
interfaces = load_yaml("/opt/netbox/initializers/dcim_interfaces.yml")
|
||||
|
||||
if interfaces is None:
|
||||
sys.exit()
|
||||
|
||||
required_assocs = {"device": (Device, "name")}
|
||||
|
||||
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 = Interface.objects.get_or_create(**params)
|
||||
|
||||
if created:
|
||||
set_custom_fields_values(interface, custom_field_data)
|
||||
|
||||
print("🧷 Created interface", interface.name, interface.device.name)
|
Loading…
Add table
Add a link
Reference in a new issue