Skip to content

Commit 323e182

Browse files
committed
Merge branch 'MajesticFalcon-iss365' into develop
2 parents 21bd7f4 + a0f7737 commit 323e182

File tree

6 files changed

+109
-0
lines changed

6 files changed

+109
-0
lines changed

startup_scripts/135_cluster_groups.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from virtualization.models import ClusterGroup
2+
from startup_script_utils import load_yaml
3+
import sys
4+
5+
cluster_groups = load_yaml('/opt/netbox/initializers/cluster_groups.yml')
6+
7+
if cluster_groups is None:
8+
sys.exit()
9+
10+
for params in cluster_groups:
11+
cluster_group, created = ClusterGroup.objects.get_or_create(**params)
12+
13+
if created:
14+
print("🗄️ Created Cluster Group", cluster_group.name)
File renamed without changes.

startup_scripts/140_clusters.py

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

startup_scripts/145_devices.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import sys
2+
3+
from dcim.models import Site, Rack, DeviceRole, DeviceType, Device, Platform
4+
from startup_script_utils import *
5+
from tenancy.models import Tenant
6+
from virtualization.models import Cluster
7+
8+
devices = load_yaml('/opt/netbox/initializers/devices.yml')
9+
10+
if devices is None:
11+
sys.exit()
12+
13+
required_assocs = {
14+
'device_role': (DeviceRole, 'name'),
15+
'device_type': (DeviceType, 'model'),
16+
'site': (Site, 'name')
17+
}
18+
19+
optional_assocs = {
20+
'tenant': (Tenant, 'name'),
21+
'platform': (Platform, 'name'),
22+
'rack': (Rack, 'name'),
23+
'cluster': (Cluster, 'name')
24+
}
25+
26+
for params in devices:
27+
custom_field_data = pop_custom_fields(params)
28+
29+
# primary ips are handled later in `270_primary_ips.py`
30+
params.pop('primary_ip4', None)
31+
params.pop('primary_ip6', None)
32+
33+
for assoc, details in required_assocs.items():
34+
model, field = details
35+
query = { field: params.pop(assoc) }
36+
37+
params[assoc] = model.objects.get(**query)
38+
39+
for assoc, details in optional_assocs.items():
40+
if assoc in params:
41+
model, field = details
42+
query = { field: params.pop(assoc) }
43+
44+
params[assoc] = model.objects.get(**query)
45+
46+
device, created = Device.objects.get_or_create(**params)
47+
48+
if created:
49+
set_custom_fields_values(device, custom_field_data)
50+
51+
print("🖥️ Created device", device.name)

0 commit comments

Comments
 (0)