Skip to content

Commit e2711ca

Browse files
authored
Merge pull request #326 from tobiasge/fix-startup-2.9
Fixes for Netbox 2.9
2 parents a87f2b3 + b02a939 commit e2711ca

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

startup_scripts/000_users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
if not User.objects.filter(username=username):
1313
user = User.objects.create_user(
1414
username = username,
15-
password = user_details.get('password', 0) or User.objects.make_random_password)
15+
password = user_details.get('password', 0) or User.objects.make_random_password())
1616

1717
print("👤 Created user",username)
1818

startup_scripts/240_virtualization_interfaces.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
from dcim.models import Interface
2-
from virtualization.models import VirtualMachine
1+
from virtualization.models import VirtualMachine, VMInterface
32
from extras.models import CustomField, CustomFieldValue
43
from startup_script_utils import load_yaml
54
import sys
@@ -22,7 +21,7 @@
2221

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

25-
interface, created = Interface.objects.get_or_create(**params)
24+
interface, created = VMInterface.objects.get_or_create(**params)
2625

2726
if created:
2827
if custom_fields is not None:

startup_scripts/260_ip_addresses.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
from ipam.models import IPAddress, VRF
1+
import sys
2+
23
from dcim.models import Device, Interface
3-
from virtualization.models import VirtualMachine
4-
from tenancy.models import Tenant
4+
from django.contrib.contenttypes.models import ContentType
5+
from django.db.models import Q
56
from extras.models import CustomField, CustomFieldValue
6-
7+
from ipam.models import VRF, IPAddress
78
from netaddr import IPNetwork
89
from startup_script_utils import load_yaml
9-
import sys
10+
from tenancy.models import Tenant
11+
from virtualization.models import VirtualMachine, VMInterface
1012

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

@@ -16,9 +18,12 @@
1618
optional_assocs = {
1719
'tenant': (Tenant, 'name'),
1820
'vrf': (VRF, 'name'),
19-
'interface': (Interface, 'name')
21+
'interface': (None, None)
2022
}
2123

24+
vm_interface_ct = ContentType.objects.filter(Q(app_label='virtualization', model='vminterface')).first()
25+
interface_ct = ContentType.objects.filter(Q(app_label='dcim', model='interface')).first()
26+
2227
for params in ip_addresses:
2328
vm = params.pop('virtual_machine', None)
2429
device = params.pop('device', None)
@@ -35,13 +40,17 @@
3540
if assoc == 'interface':
3641
if vm:
3742
vm_id = VirtualMachine.objects.get(name=vm).id
38-
query = { field: params.pop(assoc), "virtual_machine_id": vm_id }
43+
query = { 'name': params.pop(assoc), "virtual_machine_id": vm_id }
44+
params['assigned_object_type'] = vm_interface_ct
45+
params['assigned_object_id'] = VMInterface.objects.get(**query).id
3946
elif device:
4047
dev_id = Device.objects.get(name=device).id
41-
query = { field: params.pop(assoc), "device_id": dev_id }
48+
query = { 'name': params.pop(assoc), "device_id": dev_id }
49+
params['assigned_object_type'] = interface_ct
50+
params['assigned_object_id'] = Interface.objects.get(**query).id
4251
else:
4352
query = { field: params.pop(assoc) }
44-
params[assoc] = model.objects.get(**query)
53+
params[assoc] = model.objects.get(**query)
4554

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

0 commit comments

Comments
 (0)