Skip to content

Commit

Permalink
Merge pull request #326 from tobiasge/fix-startup-2.9
Browse files Browse the repository at this point in the history
Fixes for Netbox 2.9
  • Loading branch information
tobiasge committed Sep 1, 2020
2 parents a87f2b3 + b02a939 commit e2711ca
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 13 deletions.
2 changes: 1 addition & 1 deletion startup_scripts/000_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
if not User.objects.filter(username=username):
user = User.objects.create_user(
username = username,
password = user_details.get('password', 0) or User.objects.make_random_password)
password = user_details.get('password', 0) or User.objects.make_random_password())

print("👤 Created user",username)

Expand Down
5 changes: 2 additions & 3 deletions startup_scripts/240_virtualization_interfaces.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from dcim.models import Interface
from virtualization.models import VirtualMachine
from virtualization.models import VirtualMachine, VMInterface
from extras.models import CustomField, CustomFieldValue
from startup_script_utils import load_yaml
import sys
Expand All @@ -22,7 +21,7 @@

params[assoc] = model.objects.get(**query)

interface, created = Interface.objects.get_or_create(**params)
interface, created = VMInterface.objects.get_or_create(**params)

if created:
if custom_fields is not None:
Expand Down
27 changes: 18 additions & 9 deletions startup_scripts/260_ip_addresses.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
from ipam.models import IPAddress, VRF
import sys

from dcim.models import Device, Interface
from virtualization.models import VirtualMachine
from tenancy.models import Tenant
from django.contrib.contenttypes.models import ContentType
from django.db.models import Q
from extras.models import CustomField, CustomFieldValue

from ipam.models import VRF, IPAddress
from netaddr import IPNetwork
from startup_script_utils import load_yaml
import sys
from tenancy.models import Tenant
from virtualization.models import VirtualMachine, VMInterface

ip_addresses = load_yaml('/opt/netbox/initializers/ip_addresses.yml')

Expand All @@ -16,9 +18,12 @@
optional_assocs = {
'tenant': (Tenant, 'name'),
'vrf': (VRF, 'name'),
'interface': (Interface, 'name')
'interface': (None, None)
}

vm_interface_ct = ContentType.objects.filter(Q(app_label='virtualization', model='vminterface')).first()
interface_ct = ContentType.objects.filter(Q(app_label='dcim', model='interface')).first()

for params in ip_addresses:
vm = params.pop('virtual_machine', None)
device = params.pop('device', None)
Expand All @@ -35,13 +40,17 @@
if assoc == 'interface':
if vm:
vm_id = VirtualMachine.objects.get(name=vm).id
query = { field: params.pop(assoc), "virtual_machine_id": vm_id }
query = { 'name': params.pop(assoc), "virtual_machine_id": vm_id }
params['assigned_object_type'] = vm_interface_ct
params['assigned_object_id'] = VMInterface.objects.get(**query).id
elif device:
dev_id = Device.objects.get(name=device).id
query = { field: params.pop(assoc), "device_id": dev_id }
query = { 'name': params.pop(assoc), "device_id": dev_id }
params['assigned_object_type'] = interface_ct
params['assigned_object_id'] = Interface.objects.get(**query).id
else:
query = { field: params.pop(assoc) }
params[assoc] = model.objects.get(**query)
params[assoc] = model.objects.get(**query)

ip_address, created = IPAddress.objects.get_or_create(**params)

Expand Down

0 comments on commit e2711ca

Please sign in to comment.