Files
netbox/docker/startup_scripts/030_regions.py
Marco Ceppi cca2c6b680 Vapor API Scaffold (#2)
* Updated README

* Start of Vapor Netbox Module

* Add api/vapor route

* Ignore virtualenv

* Query devices assigned to users

* Add vapor/interfaces route

* adds docker-compose file to manage postgres/redis

- Initial test suite for the vapor api module. (Django tests are kind of
  hard and slow)

* Init pipeline

 - Adds a tox harness to run the test suite
 - Test running in tox
 - Clone example config to config.py
 - Add the kubernetes agent + dependent services to complete tests in
   the podspec
 - some really hacky sed configuration on the fly

* Init Docker build

- Adds the dockerfile assets from vapor-ware/netbox-docker
- Slight changes to keep the root directory clean (nesting dirs in
  docker path)
- Adds a rudimentary job label to build on micro-k8s builder
- adds docker build/publish stages to the pipeline for branch builds.
- dockerignore the project dir as its fetching packages from GHAPI

* Cleanups

* More unittests
2019-09-24 13:53:58 -04:00

32 lines
732 B
Python

from dcim.models import Region
from ruamel.yaml import YAML
from pathlib import Path
import sys
file = Path('/opt/netbox/initializers/regions.yml')
if not file.is_file():
sys.exit()
with file.open('r') as stream:
yaml=YAML(typ='safe')
regions = yaml.load(stream)
optional_assocs = {
'parent': (Region, 'name')
}
if regions is not None:
for params in regions:
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)
region, created = Region.objects.get_or_create(**params)
if created:
print("🌐 Created region", region.name)