From 6ab38472be13d8fe60320f4518a9753de41378e4 Mon Sep 17 00:00:00 2001 From: ryanmerolle Date: Tue, 29 Dec 2020 16:24:16 -0500 Subject: [PATCH] circuits model startup_scripts --- initializers/circuit_types.yml | 6 ++++++ initializers/circuits.yml | 6 ++++++ initializers/providers.yml | 6 ++++++ startup_scripts/280_providers.py | 18 +++++++++++++++++ startup_scripts/290_circuit_types.py | 18 +++++++++++++++++ startup_scripts/300_circuits.py | 29 ++++++++++++++++++++++++++++ 6 files changed, 83 insertions(+) create mode 100644 initializers/circuit_types.yml create mode 100644 initializers/circuits.yml create mode 100644 initializers/providers.yml create mode 100644 startup_scripts/280_providers.py create mode 100644 startup_scripts/290_circuit_types.py create mode 100644 startup_scripts/300_circuits.py diff --git a/initializers/circuit_types.yml b/initializers/circuit_types.yml new file mode 100644 index 0000000..0e9c356 --- /dev/null +++ b/initializers/circuit_types.yml @@ -0,0 +1,6 @@ +# - name: VPLS +# slug: vpls +# - name: MPLS +# slug: mpls +# - name: Internet +# slug: internet diff --git a/initializers/circuits.yml b/initializers/circuits.yml new file mode 100644 index 0000000..44e0a3a --- /dev/null +++ b/initializers/circuits.yml @@ -0,0 +1,6 @@ +# - cid: Circuit_ID-1 +# provider: Provider1 +# type: Internet +# - name: Circuit_ID-2 +# provider: Provider2 +# type: MPLS diff --git a/initializers/providers.yml b/initializers/providers.yml new file mode 100644 index 0000000..ca2ca1a --- /dev/null +++ b/initializers/providers.yml @@ -0,0 +1,6 @@ +# - name: Provider1 +# slug: provider1 +# asn: 121 +# - name: Provider2 +# slug: provider2 +# asn: 122 diff --git a/startup_scripts/280_providers.py b/startup_scripts/280_providers.py new file mode 100644 index 0000000..393d5ed --- /dev/null +++ b/startup_scripts/280_providers.py @@ -0,0 +1,18 @@ +from circuits.models import Provider +from startup_script_utils import * +import sys + +providers = load_yaml('/opt/netbox/initializers/providers.yml') + +if providers is None: + sys.exit() + +for params in providers: + custom_field_data = pop_custom_fields(params) + + provider, created = Provider.objects.get_or_create(**params) + + if created: + set_custom_fields_values(name, custom_field_data) + + print("📡 Created provider", provider.name) diff --git a/startup_scripts/290_circuit_types.py b/startup_scripts/290_circuit_types.py new file mode 100644 index 0000000..b6dca6c --- /dev/null +++ b/startup_scripts/290_circuit_types.py @@ -0,0 +1,18 @@ +from circuits.models import CircuitType +from startup_script_utils import * +import sys + +circuit_types = load_yaml('/opt/netbox/initializers/circuit_types.yml') + +if circuit_types is None: + sys.exit() + +for params in circuit_types: + custom_field_data = pop_custom_fields(params) + + circuit_type, created = CircuitType.objects.get_or_create(**params) + + if created: + set_custom_fields_values(name, custom_field_data) + + print("⚡ Created Circuit Type", circuit_type.name) diff --git a/startup_scripts/300_circuits.py b/startup_scripts/300_circuits.py new file mode 100644 index 0000000..3d2bf24 --- /dev/null +++ b/startup_scripts/300_circuits.py @@ -0,0 +1,29 @@ +from circuits.models import Circuit, Provider, CircuitType +from startup_script_utils import * +import sys + +circuits = load_yaml('/opt/netbox/initializers/circuits.yml') + +if circuits is None: + sys.exit() + +required_assocs = { + 'provider': (Provider, 'name'), + 'circuit_type': (CircuitType, 'name') +} + +for params in circuits: + 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) + + circuit, created = Circuit.objects.get_or_create(**params) + + if created: + set_custom_fields_values(cid, custom_field_data) + + print("⚡ Created Circuit", circuit.cid)