Skip to content

Commit fd95554

Browse files
authored
Merge pull request #196 from jsimonetti/rackgroup_initialiser
Add rack group initialiser
2 parents 0a77c3d + 93dee74 commit fd95554

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

initializers/rack_groups.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# - name: cage 101
2+
# slug: cage-101
3+
# site: SING 1

initializers/racks.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
# text_field: Description
1717
# - site: SING 1
1818
# name: rack-03
19+
# group: cage 101
1920
# role: Role 3
2021
# type: 4-post cabinet
2122
# width: 19 inches

startup_scripts/075_rack_groups.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from dcim.models import Site,RackGroup
2+
from ruamel.yaml import YAML
3+
4+
from pathlib import Path
5+
import sys
6+
7+
file = Path('/opt/netbox/initializers/rack_groups.yml')
8+
if not file.is_file():
9+
sys.exit()
10+
11+
with file.open('r') as stream:
12+
yaml=YAML(typ='safe')
13+
rack_groups= yaml.load(stream)
14+
15+
required_assocs = {
16+
'site': (Site, 'name')
17+
}
18+
19+
if rack_groups is not None:
20+
for params in rack_groups:
21+
22+
for assoc, details in required_assocs.items():
23+
model, field = details
24+
query = { field: params.pop(assoc) }
25+
params[assoc] = model.objects.get(**query)
26+
27+
rack_group, created = RackGroup.objects.get_or_create(**params)
28+
29+
if created:
30+
print("🎨 Created rack group", rack_group.name)
31+

0 commit comments

Comments
 (0)