Skip to content

Commit dfb0327

Browse files
committed
Added power startup_scripts
1 parent e3946af commit dfb0327

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

initializers/power_feeds.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# - name: power feed 1
2+
# #site: AMS 1
3+
# power_panel: power panel AMS 1
4+
# voltage: 208
5+
# amperage: 50
6+
# max_utilization: 80
7+
# phase: Single phase
8+
# rack: rack-01
9+
# - name: power feed 2
10+
# #site: SING 1
11+
# power_panel: power panel SING 1
12+
# voltage: 208
13+
# amperage: 50
14+
# max_utilization: 80
15+
# phase: Three-phase
16+
# rack: rack-03

initializers/power_panels.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# - name: power panel AMS 1
2+
# site: AMS 1
3+
# - name: power panel SING 1
4+
# site: SING 1
5+
# rack_group: cage 101

startup_scripts/330_power_panels.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import sys
2+
3+
from dcim.models import Site, RackGroup, PowerPanel
4+
from startup_script_utils import *
5+
from tenancy.models import Tenant
6+
7+
power_panels = load_yaml('/opt/netbox/initializers/power_panels.yml')
8+
9+
if power_panels is None:
10+
sys.exit()
11+
12+
required_assocs = {
13+
'site': (Site, 'name')
14+
}
15+
16+
optional_assocs = {
17+
'rack_group': (RackGroup, 'name')
18+
}
19+
20+
for params in power_panels:
21+
custom_field_data = pop_custom_fields(params)
22+
23+
for assoc, details in required_assocs.items():
24+
model, field = details
25+
query = { field: params.pop(assoc) }
26+
27+
params[assoc] = model.objects.get(**query)
28+
29+
for assoc, details in optional_assocs.items():
30+
if assoc in params:
31+
model, field = details
32+
query = { field: params.pop(assoc) }
33+
34+
params[assoc] = model.objects.get(**query)
35+
36+
power_panel, created = PowerPanel.objects.get_or_create(**params)
37+
38+
if created:
39+
set_custom_fields_values(power_panel, custom_field_data)
40+
41+
print("⚡ Created Power Panel", power_panel.site, power_panel.name)

startup_scripts/340_power_feeds.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import sys
2+
3+
from dcim.models import Rack, PowerPanel, PowerFeed
4+
from startup_script_utils import *
5+
from tenancy.models import Tenant
6+
7+
power_feeds = load_yaml('/opt/netbox/initializers/power_feeds.yml')
8+
9+
if power_feeds is None:
10+
sys.exit()
11+
12+
required_assocs = {
13+
'power_panel': (PowerPanel, 'name')
14+
}
15+
16+
optional_assocs = {
17+
'rack': (Rack, 'name')
18+
}
19+
20+
for params in power_feeds:
21+
custom_field_data = pop_custom_fields(params)
22+
23+
for assoc, details in required_assocs.items():
24+
model, field = details
25+
query = { field: params.pop(assoc) }
26+
27+
params[assoc] = model.objects.get(**query)
28+
29+
for assoc, details in optional_assocs.items():
30+
if assoc in params:
31+
model, field = details
32+
query = { field: params.pop(assoc) }
33+
34+
params[assoc] = model.objects.get(**query)
35+
36+
power_feed, created = PowerFeed.objects.get_or_create(**params)
37+
38+
if created:
39+
set_custom_fields_values(power_feed, custom_field_data)
40+
41+
print("⚡ Created Power Feed", power_feed.name)

0 commit comments

Comments
 (0)