Skip to content

Commit ee47ba0

Browse files
committed
Added ASN initializer script
1 parent 688374d commit ee47ba0

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

initializers/asns.yml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# - asn: 1
2+
# rir: RFC1918
3+
# tenant: tenant1
4+
# - asn: 2
5+
# rir: RFC4193 ULA
6+
# - asn: 3
7+
# rir: RFC3849

initializers/sites.yml

-4
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,20 @@
33
# region: Downtown
44
# status: active
55
# facility: Amsterdam 1
6-
# asn: 12345
76
# custom_field_data:
87
# text_field: Description for AMS1
98
# - name: AMS 2
109
# slug: ams2
1110
# region: Downtown
1211
# status: active
1312
# facility: Amsterdam 2
14-
# asn: 54321
1513
# custom_field_data:
1614
# text_field: Description for AMS2
1715
# - name: AMS 3
1816
# slug: ams3
1917
# region: Suburbs
2018
# status: active
2119
# facility: Amsterdam 3
22-
# asn: 67890
2320
# tenant: tenant1
2421
# custom_field_data:
2522
# text_field: Description for AMS3
@@ -28,7 +25,6 @@
2825
# region: Singapore
2926
# status: active
3027
# facility: Singapore 1
31-
# asn: 09876
3228
# tenant: tenant2
3329
# custom_field_data:
3430
# text_field: Description for SING1

startup_scripts/155_asns.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import sys
2+
3+
from ipam.models import ASN, RIR
4+
from startup_script_utils import load_yaml
5+
from tenancy.models import Tenant
6+
7+
asns = load_yaml("/opt/netbox/initializers/asns.yml")
8+
9+
if asns is None:
10+
sys.exit()
11+
12+
required_assocs = {"rir": (RIR, "name")}
13+
14+
optional_assocs = {"tenant": (Tenant, "name")}
15+
16+
for params in asns:
17+
for assoc, details in required_assocs.items():
18+
model, field = details
19+
query = {field: params.pop(assoc)}
20+
21+
params[assoc] = model.objects.get(**query)
22+
23+
for assoc, details in optional_assocs.items():
24+
if assoc in params:
25+
model, field = details
26+
query = {field: params.pop(assoc)}
27+
28+
params[assoc] = model.objects.get(**query)
29+
30+
asn, created = ASN.objects.get_or_create(**params)
31+
32+
if created:
33+
print(f"🔡 Created ASN {asn.asn}")

0 commit comments

Comments
 (0)