From 94509f86d799b718edc166a4369a7de2a9b1164e Mon Sep 17 00:00:00 2001 From: ryanmerolle Date: Wed, 30 Dec 2020 19:11:09 -0500 Subject: [PATCH] added route_targets startup_script --- initializers/route_targets.yml | 3 +++ startup_scripts/175_route_targets.py | 31 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 initializers/route_targets.yml create mode 100644 startup_scripts/175_route_targets.py diff --git a/initializers/route_targets.yml b/initializers/route_targets.yml new file mode 100644 index 0000000..2ef1406 --- /dev/null +++ b/initializers/route_targets.yml @@ -0,0 +1,3 @@ +# - name: 65000:1001 +# tenant: tenant1 +# - name: 65000:1002 diff --git a/startup_scripts/175_route_targets.py b/startup_scripts/175_route_targets.py new file mode 100644 index 0000000..efdaba6 --- /dev/null +++ b/startup_scripts/175_route_targets.py @@ -0,0 +1,31 @@ +import sys + +from ipam.models import RouteTarget +from startup_script_utils import * +from tenancy.models import Tenant + +route_targets = load_yaml('/opt/netbox/initializers/route_targets.yml') + +if route_targets is None: + sys.exit() + +optional_assocs = { + 'tenant': (Tenant, 'name') +} + +for params in route_targets: + custom_field_data = pop_custom_fields(params) + + for assoc, details in optional_assocs.items(): + if assoc in params: + model, field = details + query = { field: params.pop(assoc) } + + params[assoc] = model.objects.get(**query) + + route_target, created = RouteTarget.objects.get_or_create(**params) + + if created: + set_custom_fields_values(route_target, custom_field_data) + + print("🎯 Created Route Target", route_target.name)