diff --git a/startup_scripts/130_cluster_types.py b/startup_scripts/130_cluster_types.py new file mode 100644 index 0000000..d39933f --- /dev/null +++ b/startup_scripts/130_cluster_types.py @@ -0,0 +1,14 @@ +from virtualization.models import ClusterType +from startup_script_utils import load_yaml +import sys + +cluster_types = load_yaml('/opt/netbox/initializers/cluster_types.yml') + +if cluster_types is None: + sys.exit() + +for params in cluster_types: + cluster_type, created = ClusterType.objects.get_or_create(**params) + + if created: + print("🧰 Created Cluster Type", cluster_type.name) diff --git a/startup_scripts/130_devices.py b/startup_scripts/130_devices.py deleted file mode 100644 index d73fd07..0000000 --- a/startup_scripts/130_devices.py +++ /dev/null @@ -1,51 +0,0 @@ -import sys - -from dcim.models import Site, Rack, DeviceRole, DeviceType, Device, Platform -from startup_script_utils import * -from tenancy.models import Tenant -from virtualization.models import Cluster - -devices = load_yaml('/opt/netbox/initializers/devices.yml') - -if devices is None: - sys.exit() - -required_assocs = { - 'device_role': (DeviceRole, 'name'), - 'device_type': (DeviceType, 'model'), - 'site': (Site, 'name') -} - -optional_assocs = { - 'tenant': (Tenant, 'name'), - 'platform': (Platform, 'name'), - 'rack': (Rack, 'name'), - 'cluster': (Cluster, 'name') -} - -for params in devices: - custom_field_data = pop_custom_fields(params) - - # primary ips are handled later in `270_primary_ips.py` - params.pop('primary_ip4', None) - params.pop('primary_ip6', None) - - for assoc, details in required_assocs.items(): - model, field = details - query = { field: params.pop(assoc) } - - params[assoc] = model.objects.get(**query) - - 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) - - device, created = Device.objects.get_or_create(**params) - - if created: - set_custom_fields_values(device, custom_field_data) - - print("🖥️ Created device", device.name) diff --git a/startup_scripts/135_cluster_groups.py b/startup_scripts/135_cluster_groups.py new file mode 100644 index 0000000..b52518a --- /dev/null +++ b/startup_scripts/135_cluster_groups.py @@ -0,0 +1,14 @@ +from virtualization.models import ClusterGroup +from startup_script_utils import load_yaml +import sys + +cluster_groups = load_yaml('/opt/netbox/initializers/cluster_groups.yml') + +if cluster_groups is None: + sys.exit() + +for params in cluster_groups: + cluster_group, created = ClusterGroup.objects.get_or_create(**params) + + if created: + print("🗄️ Created Cluster Group", cluster_group.name) diff --git a/startup_scripts/135_clusters.py b/startup_scripts/135_clusters.py new file mode 100644 index 0000000..85e462f --- /dev/null +++ b/startup_scripts/135_clusters.py @@ -0,0 +1,44 @@ +import sys + +from dcim.models import Site +from startup_script_utils import * +from virtualization.models import Cluster, ClusterType, ClusterGroup +from tenancy.models import Tenant + +clusters = load_yaml('/opt/netbox/initializers/clusters.yml') + +if clusters is None: + sys.exit() + +required_assocs = { + 'type': (ClusterType, 'name') +} + +optional_assocs = { + 'site': (Site, 'name'), + 'group': (ClusterGroup, 'name'), + 'tenant': (Tenant, 'name') +} + +for params in clusters: + 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) + + 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) + + cluster, created = Cluster.objects.get_or_create(**params) + + if created: + set_custom_fields_values(cluster, custom_field_data) + + print("🗄️ Created cluster", cluster.name) diff --git a/startup_scripts/140_cluster_types.py b/startup_scripts/140_cluster_types.py deleted file mode 100644 index d39933f..0000000 --- a/startup_scripts/140_cluster_types.py +++ /dev/null @@ -1,14 +0,0 @@ -from virtualization.models import ClusterType -from startup_script_utils import load_yaml -import sys - -cluster_types = load_yaml('/opt/netbox/initializers/cluster_types.yml') - -if cluster_types is None: - sys.exit() - -for params in cluster_types: - cluster_type, created = ClusterType.objects.get_or_create(**params) - - if created: - print("🧰 Created Cluster Type", cluster_type.name) diff --git a/startup_scripts/140_clusters.py b/startup_scripts/140_clusters.py new file mode 100644 index 0000000..85e462f --- /dev/null +++ b/startup_scripts/140_clusters.py @@ -0,0 +1,44 @@ +import sys + +from dcim.models import Site +from startup_script_utils import * +from virtualization.models import Cluster, ClusterType, ClusterGroup +from tenancy.models import Tenant + +clusters = load_yaml('/opt/netbox/initializers/clusters.yml') + +if clusters is None: + sys.exit() + +required_assocs = { + 'type': (ClusterType, 'name') +} + +optional_assocs = { + 'site': (Site, 'name'), + 'group': (ClusterGroup, 'name'), + 'tenant': (Tenant, 'name') +} + +for params in clusters: + 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) + + 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) + + cluster, created = Cluster.objects.get_or_create(**params) + + if created: + set_custom_fields_values(cluster, custom_field_data) + + print("🗄️ Created cluster", cluster.name) diff --git a/startup_scripts/140_devices.py b/startup_scripts/140_devices.py new file mode 100644 index 0000000..d73fd07 --- /dev/null +++ b/startup_scripts/140_devices.py @@ -0,0 +1,51 @@ +import sys + +from dcim.models import Site, Rack, DeviceRole, DeviceType, Device, Platform +from startup_script_utils import * +from tenancy.models import Tenant +from virtualization.models import Cluster + +devices = load_yaml('/opt/netbox/initializers/devices.yml') + +if devices is None: + sys.exit() + +required_assocs = { + 'device_role': (DeviceRole, 'name'), + 'device_type': (DeviceType, 'model'), + 'site': (Site, 'name') +} + +optional_assocs = { + 'tenant': (Tenant, 'name'), + 'platform': (Platform, 'name'), + 'rack': (Rack, 'name'), + 'cluster': (Cluster, 'name') +} + +for params in devices: + custom_field_data = pop_custom_fields(params) + + # primary ips are handled later in `270_primary_ips.py` + params.pop('primary_ip4', None) + params.pop('primary_ip6', None) + + for assoc, details in required_assocs.items(): + model, field = details + query = { field: params.pop(assoc) } + + params[assoc] = model.objects.get(**query) + + 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) + + device, created = Device.objects.get_or_create(**params) + + if created: + set_custom_fields_values(device, custom_field_data) + + print("🖥️ Created device", device.name) diff --git a/startup_scripts/145_devices.py b/startup_scripts/145_devices.py new file mode 100644 index 0000000..d73fd07 --- /dev/null +++ b/startup_scripts/145_devices.py @@ -0,0 +1,51 @@ +import sys + +from dcim.models import Site, Rack, DeviceRole, DeviceType, Device, Platform +from startup_script_utils import * +from tenancy.models import Tenant +from virtualization.models import Cluster + +devices = load_yaml('/opt/netbox/initializers/devices.yml') + +if devices is None: + sys.exit() + +required_assocs = { + 'device_role': (DeviceRole, 'name'), + 'device_type': (DeviceType, 'model'), + 'site': (Site, 'name') +} + +optional_assocs = { + 'tenant': (Tenant, 'name'), + 'platform': (Platform, 'name'), + 'rack': (Rack, 'name'), + 'cluster': (Cluster, 'name') +} + +for params in devices: + custom_field_data = pop_custom_fields(params) + + # primary ips are handled later in `270_primary_ips.py` + params.pop('primary_ip4', None) + params.pop('primary_ip6', None) + + for assoc, details in required_assocs.items(): + model, field = details + query = { field: params.pop(assoc) } + + params[assoc] = model.objects.get(**query) + + 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) + + device, created = Device.objects.get_or_create(**params) + + if created: + set_custom_fields_values(device, custom_field_data) + + print("🖥️ Created device", device.name) diff --git a/startup_scripts/170_clusters.py b/startup_scripts/170_clusters.py deleted file mode 100644 index 85e462f..0000000 --- a/startup_scripts/170_clusters.py +++ /dev/null @@ -1,44 +0,0 @@ -import sys - -from dcim.models import Site -from startup_script_utils import * -from virtualization.models import Cluster, ClusterType, ClusterGroup -from tenancy.models import Tenant - -clusters = load_yaml('/opt/netbox/initializers/clusters.yml') - -if clusters is None: - sys.exit() - -required_assocs = { - 'type': (ClusterType, 'name') -} - -optional_assocs = { - 'site': (Site, 'name'), - 'group': (ClusterGroup, 'name'), - 'tenant': (Tenant, 'name') -} - -for params in clusters: - 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) - - 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) - - cluster, created = Cluster.objects.get_or_create(**params) - - if created: - set_custom_fields_values(cluster, custom_field_data) - - print("🗄️ Created cluster", cluster.name)