Files
.github
build-functions
configuration
docker
env
initializers
reports
scripts
startup_scripts
startup_script_utils
000_users.py
010_groups.py
020_object_permissions.py
030_custom_fields.py
040_custom_links.py
050_tags.py
060_webhooks.py
070_tenant_groups.py
080_tenants.py
090_regions.py
110_sites.py
120_locations.py
130_rack_roles.py
140_racks.py
150_power_panels.py
160_power_feeds.py
170_manufacturers.py
180_device_roles.py
190_device_types.py
200_devices.py
210_dcim_interfaces.py
220_platforms.py
230_route_targets.py
240_vrfs.py
250_rirs.py
260_asns.py
270_aggregates.py
280_prefix_vlan_roles.py
290_cluster_types.py
300_cluster_groups.py
310_clusters.py
320_vlan_groups.py
330_vlans.py
340_virtual_machines.py
350_virtualization_interfaces.py
360_prefixes.py
370_ip_addresses.py
380_primary_ips.py
400_services.py
420_providers.py
440_circuit_types.py
450_circuits.py
__main__.py
.dockerignore
.ecrc
.editorconfig
.flake8
.gitignore
.hadolint.yaml
.markdown-lint.yml
Dockerfile
LICENSE
README.md
VERSION
build-latest.sh
build.sh
docker-compose.override.yml.example
docker-compose.test.yml
docker-compose.yml
pyproject.toml
release.sh
renovate.json
requirements-container.txt
test.sh
netbox-docker/startup_scripts/150_power_panels.py
Ryan Merolle 8860d32f97 Cleanup & Reorg startup scripts ()
* Cleanup & Reorg startup scripts
2022-02-03 17:10:39 +01:00

37 lines
1.0 KiB
Python

import sys
from dcim.models import Location, PowerPanel, Site
from startup_script_utils import load_yaml, pop_custom_fields, set_custom_fields_values
power_panels = load_yaml("/opt/netbox/initializers/power_panels.yml")
if power_panels is None:
sys.exit()
required_assocs = {"site": (Site, "name")}
optional_assocs = {"location": (Location, "name")}
for params in power_panels:
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)
for assoc, details in optional_assocs.items():
if assoc in params:
model, field = details
query = {field: params.pop(assoc)}
params[assoc] = model.objects.get(**query)
power_panel, created = PowerPanel.objects.get_or_create(**params)
if created:
set_custom_fields_values(power_panel, custom_field_data)
print("⚡ Created Power Panel", power_panel.site, power_panel.name)