Update Rack Initializer for Netbox 2.7

The rack database model has changed in Netbox 2.7.
Therefore the initializer code, that was used before, broke.
As a user, you will need to update your racks.yml file as follows:

- Rack types must match one of the 5 rack types given, e.g.
  '4-post-cabinet'.
- Rack width must match one of the 2 rack widths given, i.e. '19' or
  '23'.

See the diff of this commit for further information how this is meant.
This commit is contained in:
Christian Mäder 2020-01-17 15:44:19 +01:00
parent c001626b85
commit 7b914d31d6
2 changed files with 22 additions and 15 deletions

View File

@ -1,16 +1,32 @@
## Possible Choices:
## width:
## - 19
## - 23
## types:
## - 2-post-frame
## - 4-post-frame
## - 4-post-cabinet
## - wall-frame
## - wall-cabinet
## outer_unit:
## - mm
## - in
##
## Examples:
# - site: AMS 1 # - site: AMS 1
# name: rack-01 # name: rack-01
# role: Role 1 # role: Role 1
# type: 4-post cabinet # type: 4-post-cabinet
# width: 19 inches # width: 19
# u_height: 47 # u_height: 47
# custom_fields: # custom_fields:
# text_field: Description # text_field: Description
# - site: AMS 2 # - site: AMS 2
# name: rack-02 # name: rack-02
# role: Role 2 # role: Role 2
# type: 4-post cabinet # type: 4-post-cabinet
# width: 19 inches # width: 19
# u_height: 47 # u_height: 47
# custom_fields: # custom_fields:
# text_field: Description # text_field: Description
@ -18,8 +34,8 @@
# name: rack-03 # name: rack-03
# group: cage 101 # group: cage 101
# role: Role 3 # role: Role 3
# type: 4-post cabinet # type: 4-post-cabinet
# width: 19 inches # width: 19
# u_height: 47 # u_height: 47
# custom_fields: # custom_fields:
# text_field: Description # text_field: Description

View File

@ -1,7 +1,6 @@
from dcim.models import Site, RackRole, Rack, RackGroup from dcim.models import Site, RackRole, Rack, RackGroup
from tenancy.models import Tenant from tenancy.models import Tenant
from extras.models import CustomField, CustomFieldValue from extras.models import CustomField, CustomFieldValue
from dcim.constants import RACK_TYPE_CHOICES, RACK_WIDTH_CHOICES
from ruamel.yaml import YAML from ruamel.yaml import YAML
from pathlib import Path from pathlib import Path
import sys import sys
@ -41,14 +40,6 @@ with file.open('r') as stream:
params[assoc] = model.objects.get(**query) params[assoc] = model.objects.get(**query)
for rack_type in RACK_TYPE_CHOICES:
if params['type'] in rack_type:
params['type'] = rack_type[0]
for rack_width in RACK_WIDTH_CHOICES:
if params['width'] in rack_width:
params['width'] = rack_width[0]
rack, created = Rack.objects.get_or_create(**params) rack, created = Rack.objects.get_or_create(**params)
if created: if created: