Fix bulk edit/create tests (bulk editing Interfaces will be unsupported because of inheritance from ComponentBulkEditForm)

This commit is contained in:
Brian Tiemann 2024-10-31 21:23:22 -04:00
parent 2536f941cb
commit 2d767b619c
6 changed files with 31 additions and 6 deletions

View File

@ -218,7 +218,12 @@ class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect
)
count_ipaddresses = serializers.IntegerField(read_only=True)
count_fhrp_groups = serializers.IntegerField(read_only=True)
mac_address = MACAddressSerializer(read_only=True, allow_null=True)
mac_address = serializers.CharField(
required=False,
default=None,
allow_blank=True,
allow_null=True
)
wwn = serializers.CharField(required=False, default=None, allow_blank=True, allow_null=True)
class Meta:

View File

@ -1521,6 +1521,11 @@ class InterfaceBulkEditForm(
'group_id': '$wireless_lan_group',
}
)
mac_address = forms.CharField(
empty_value=None,
required=False,
label=_('MAC Address')
)
model = Interface
fieldsets = (

View File

@ -1539,11 +1539,18 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm):
}
def clean_mac_address(self):
return MACAddress.objects.create(mac_address=self.cleaned_data['mac_address'])
if self.cleaned_data['mac_address'] and (
not self.instance.pk or
not MACAddress.objects.filter(mac_address=self.cleaned_data['mac_address'], interface=self.instance).exists()
):
mac_address = MACAddress.objects.create(mac_address=self.cleaned_data['mac_address'])
return mac_address
return None
def save(self, commit=True):
result = super().save(commit=commit)
self.instance.mac_addresses.add(self.cleaned_data['mac_address'])
if self.cleaned_data['mac_address']:
self.instance.mac_addresses.add(self.cleaned_data['mac_address'])
return result

View File

@ -2554,7 +2554,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
'type': InterfaceTypeChoices.TYPE_1GE_FIXED,
'enabled': True,
'lag': interfaces[3].pk,
'mac_address': EUI('01:02:03:04:05:06'),
# 'mac_address': EUI('01:02:03:04:05:06'),
'wwn': EUI('01:02:03:04:05:06:07:08', version=64),
'mtu': 2000,
'speed': 1000000,

View File

@ -2,7 +2,6 @@ from drf_spectacular.utils import extend_schema_field
from rest_framework import serializers
from dcim.api.serializers_.devices import DeviceSerializer
from dcim.api.serializers_.device_components import MACAddressSerializer
from dcim.api.serializers_.platforms import PlatformSerializer
from dcim.api.serializers_.roles import DeviceRoleSerializer
from dcim.api.serializers_.sites import SiteSerializer
@ -95,7 +94,11 @@ class VMInterfaceSerializer(NetBoxModelSerializer):
l2vpn_termination = L2VPNTerminationSerializer(nested=True, read_only=True, allow_null=True)
count_ipaddresses = serializers.IntegerField(read_only=True)
count_fhrp_groups = serializers.IntegerField(read_only=True)
mac_address = MACAddressSerializer(read_only=True, allow_null=True)
mac_address = serializers.CharField(
required=False,
default=None,
allow_null=True
)
class Meta:
model = VMInterface

View File

@ -260,6 +260,11 @@ class VMInterfaceBulkEditForm(NetBoxModelBulkEditForm):
required=False,
label=_('VRF')
)
mac_address = forms.CharField(
empty_value=None,
required=False,
label=_('MAC Address')
)
model = VMInterface
fieldsets = (