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)