Remake migrations

This commit is contained in:
Brian Tiemann 2024-10-10 17:30:10 -04:00
parent 27856ecaea
commit f4862e5fc2
8 changed files with 75 additions and 32 deletions

View File

@ -8,7 +8,7 @@ from circuits.models import CircuitTermination
from extras.filtersets import LocalConfigContextFilterSet from extras.filtersets import LocalConfigContextFilterSet
from extras.models import ConfigTemplate from extras.models import ConfigTemplate
from ipam.filtersets import PrimaryIPFilterSet from ipam.filtersets import PrimaryIPFilterSet
from ipam.models import ASN, IPAddress, VRF from ipam.models import ASN, IPAddress, VRF, VLANTranslationPolicy
from netbox.choices import ColorChoices from netbox.choices import ColorChoices
from netbox.filtersets import ( from netbox.filtersets import (
BaseFilterSet, ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, NetBoxModelFilterSet, BaseFilterSet, ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, NetBoxModelFilterSet,
@ -1733,6 +1733,17 @@ class InterfaceFilterSet(
queryset=WirelessLink.objects.all(), queryset=WirelessLink.objects.all(),
label=_('Wireless link') label=_('Wireless link')
) )
vlan_translation_policy_id = django_filters.ModelMultipleChoiceFilter(
field_name='vlan_translation_policy',
queryset=VLANTranslationPolicy.objects.all(),
label=_('VLAN Translation Policy (ID)'),
)
vlan_translation_policy_name = django_filters.ModelMultipleChoiceFilter(
field_name='vlan_translation_policy__name',
queryset=VLANTranslationPolicy.objects.all(),
to_field_name='name',
label=_('VLAN Translation Policy (name)'),
)
class Meta: class Meta:
model = Interface model = Interface

View File

@ -1,4 +1,4 @@
# Generated by Django 5.0.9 on 2024-10-09 15:20 # Generated by Django 5.0.9 on 2024-10-11 19:45
import django.db.models.deletion import django.db.models.deletion
from django.db import migrations, models from django.db import migrations, models
@ -7,7 +7,7 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('dcim', '0191_module_bay_rebuild'), ('dcim', '0193_poweroutlet_color'),
('ipam', '0071_vlantranslationpolicy_vlantranslationrule'), ('ipam', '0071_vlantranslationpolicy_vlantranslationrule'),
] ]

View File

@ -4,7 +4,7 @@ from circuits.models import Circuit, CircuitTermination, CircuitType, Provider
from dcim.choices import * from dcim.choices import *
from dcim.filtersets import * from dcim.filtersets import *
from dcim.models import * from dcim.models import *
from ipam.models import ASN, IPAddress, RIR, VRF from ipam.models import ASN, IPAddress, RIR, VRF, VLANTranslationPolicy
from netbox.choices import ColorChoices, WeightUnitChoices from netbox.choices import ColorChoices, WeightUnitChoices
from tenancy.models import Tenant, TenantGroup from tenancy.models import Tenant, TenantGroup
from users.models import User from users.models import User
@ -3670,6 +3670,13 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
) )
VirtualDeviceContext.objects.bulk_create(vdcs) VirtualDeviceContext.objects.bulk_create(vdcs)
vlan_translation_policies = (
VLANTranslationPolicy(name='Policy 1'),
VLANTranslationPolicy(name='Policy 2'),
VLANTranslationPolicy(name='Policy 3'),
)
VLANTranslationPolicy.objects.bulk_create(vlan_translation_policies)
interfaces = ( interfaces = (
Interface( Interface(
device=devices[0], device=devices[0],
@ -3687,7 +3694,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
speed=1000000, speed=1000000,
duplex='half', duplex='half',
poe_mode=InterfacePoEModeChoices.MODE_PSE, poe_mode=InterfacePoEModeChoices.MODE_PSE,
poe_type=InterfacePoETypeChoices.TYPE_1_8023AF poe_type=InterfacePoETypeChoices.TYPE_1_8023AF,
vlan_translation_policy=vlan_translation_policies[0],
), ),
Interface( Interface(
device=devices[1], device=devices[1],
@ -3712,7 +3720,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
speed=1000000, speed=1000000,
duplex='full', duplex='full',
poe_mode=InterfacePoEModeChoices.MODE_PD, poe_mode=InterfacePoEModeChoices.MODE_PD,
poe_type=InterfacePoETypeChoices.TYPE_1_8023AF poe_type=InterfacePoETypeChoices.TYPE_1_8023AF,
vlan_translation_policy=vlan_translation_policies[0],
), ),
Interface( Interface(
device=devices[3], device=devices[3],
@ -3730,7 +3739,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
speed=100000, speed=100000,
duplex='half', duplex='half',
poe_mode=InterfacePoEModeChoices.MODE_PSE, poe_mode=InterfacePoEModeChoices.MODE_PSE,
poe_type=InterfacePoETypeChoices.TYPE_2_8023AT poe_type=InterfacePoETypeChoices.TYPE_2_8023AT,
vlan_translation_policy=vlan_translation_policies[1],
), ),
Interface( Interface(
device=devices[4], device=devices[4],
@ -3743,7 +3753,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
speed=100000, speed=100000,
duplex='full', duplex='full',
poe_mode=InterfacePoEModeChoices.MODE_PD, poe_mode=InterfacePoEModeChoices.MODE_PD,
poe_type=InterfacePoETypeChoices.TYPE_2_8023AT poe_type=InterfacePoETypeChoices.TYPE_2_8023AT,
vlan_translation_policy=vlan_translation_policies[1],
), ),
Interface( Interface(
device=devices[4], device=devices[4],
@ -4017,6 +4028,13 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
params = {'vdc_identifier': vdc.values_list('identifier', flat=True)} params = {'vdc_identifier': vdc.values_list('identifier', flat=True)}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
def test_vlan_translation_policy(self):
vlan_translation_policies = VLANTranslationPolicy.objects.all()[:2]
params = {'vlan_translation_policy_id': [vlan_translation_policies[0].pk, vlan_translation_policies[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
params = {'vlan_translation_policy_name': [vlan_translation_policies[0].name, vlan_translation_policies[1].name]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
class FrontPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFilterSetTests): class FrontPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFilterSetTests):
queryset = FrontPort.objects.all() queryset = FrontPort.objects.all()

View File

@ -1,4 +1,4 @@
# Generated by Django 5.0.9 on 2024-10-09 15:20 # Generated by Django 5.0.9 on 2024-10-11 19:45
import django.db.models.deletion import django.db.models.deletion
import taggit.managers import taggit.managers

6
netbox/package-lock.json generated Normal file
View File

@ -0,0 +1,6 @@
{
"name": "netbox",
"lockfileVersion": 2,
"requires": true,
"packages": {}
}

View File

@ -7,6 +7,7 @@ from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup
from extras.filtersets import LocalConfigContextFilterSet from extras.filtersets import LocalConfigContextFilterSet
from extras.models import ConfigTemplate from extras.models import ConfigTemplate
from ipam.filtersets import PrimaryIPFilterSet from ipam.filtersets import PrimaryIPFilterSet
from ipam.models import VLANTranslationPolicy
from netbox.filtersets import OrganizationalModelFilterSet, NetBoxModelFilterSet from netbox.filtersets import OrganizationalModelFilterSet, NetBoxModelFilterSet
from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet
from utilities.filters import MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter from utilities.filters import MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter
@ -300,6 +301,17 @@ class VMInterfaceFilterSet(NetBoxModelFilterSet, CommonInterfaceFilterSet):
mac_address = MultiValueMACAddressFilter( mac_address = MultiValueMACAddressFilter(
label=_('MAC address'), label=_('MAC address'),
) )
vlan_translation_policy_id = django_filters.ModelMultipleChoiceFilter(
field_name='vlan_translation_policy',
queryset=VLANTranslationPolicy.objects.all(),
label=_('VLAN Translation Policy (ID)'),
)
vlan_translation_policy_name = django_filters.ModelMultipleChoiceFilter(
field_name='vlan_translation_policy__name',
queryset=VLANTranslationPolicy.objects.all(),
to_field_name='name',
label=_('VLAN Translation Policy (name)'),
)
class Meta: class Meta:
model = VMInterface model = VMInterface

View File

@ -1,20 +0,0 @@
# Generated by Django 5.0.9 on 2024-10-09 15:20
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ipam', '0071_vlantranslationpolicy_vlantranslationrule'),
('virtualization', '0040_convert_disk_size'),
]
operations = [
migrations.AddField(
model_name='vminterface',
name='vlan_translation_policy',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ipam.vlantranslationpolicy'),
),
]

View File

@ -1,7 +1,7 @@
from django.test import TestCase from django.test import TestCase
from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup
from ipam.models import IPAddress, VRF from ipam.models import IPAddress, VRF, VLANTranslationPolicy
from tenancy.models import Tenant, TenantGroup from tenancy.models import Tenant, TenantGroup
from utilities.testing import ChangeLoggedFilterSetTests, create_test_device from utilities.testing import ChangeLoggedFilterSetTests, create_test_device
from virtualization.choices import * from virtualization.choices import *
@ -561,6 +561,13 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests):
) )
VirtualMachine.objects.bulk_create(vms) VirtualMachine.objects.bulk_create(vms)
vlan_translation_policies = (
VLANTranslationPolicy(name='Policy 1'),
VLANTranslationPolicy(name='Policy 2'),
VLANTranslationPolicy(name='Policy 3'),
)
VLANTranslationPolicy.objects.bulk_create(vlan_translation_policies)
interfaces = ( interfaces = (
VMInterface( VMInterface(
virtual_machine=vms[0], virtual_machine=vms[0],
@ -569,7 +576,8 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests):
mtu=100, mtu=100,
mac_address='00-00-00-00-00-01', mac_address='00-00-00-00-00-01',
vrf=vrfs[0], vrf=vrfs[0],
description='foobar1' description='foobar1',
vlan_translation_policy=vlan_translation_policies[0],
), ),
VMInterface( VMInterface(
virtual_machine=vms[1], virtual_machine=vms[1],
@ -578,7 +586,8 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests):
mtu=200, mtu=200,
mac_address='00-00-00-00-00-02', mac_address='00-00-00-00-00-02',
vrf=vrfs[1], vrf=vrfs[1],
description='foobar2' description='foobar2',
vlan_translation_policy=vlan_translation_policies[0],
), ),
VMInterface( VMInterface(
virtual_machine=vms[2], virtual_machine=vms[2],
@ -658,6 +667,13 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests):
params = {'description': ['foobar1', 'foobar2']} params = {'description': ['foobar1', 'foobar2']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_vlan_translation_policy(self):
vlan_translation_policies = VLANTranslationPolicy.objects.all()[:2]
params = {'vlan_translation_policy_id': [vlan_translation_policies[0].pk, vlan_translation_policies[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'vlan_translation_policy_name': [vlan_translation_policies[0].name, vlan_translation_policies[1].name]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
class VirtualDiskTestCase(TestCase, ChangeLoggedFilterSetTests): class VirtualDiskTestCase(TestCase, ChangeLoggedFilterSetTests):
queryset = VirtualDisk.objects.all() queryset = VirtualDisk.objects.all()