diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index 5bd03f791..4545d3fde 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -1538,6 +1538,14 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm): 'mode': '802.1Q Mode', } + def clean_mac_address(self): + return MACAddress.objects.create(mac_address=self.cleaned_data['mac_address']) + + def save(self, commit=True): + result = super().save(commit=commit) + self.instance.mac_addresses.add(self.cleaned_data['mac_address']) + return result + class FrontPortForm(ModularDeviceComponentForm): rear_port = DynamicModelChoiceField( diff --git a/netbox/extras/tests/test_filtersets.py b/netbox/extras/tests/test_filtersets.py index c9eaa3e0e..b3d576cb9 100644 --- a/netbox/extras/tests/test_filtersets.py +++ b/netbox/extras/tests/test_filtersets.py @@ -1135,6 +1135,7 @@ class TagTestCase(TestCase, ChangeLoggedFilterSetTests): 'l2vpn', 'l2vpntermination', 'location', + 'macaddress', 'manufacturer', 'module', 'modulebay', diff --git a/netbox/virtualization/forms/model_forms.py b/netbox/virtualization/forms/model_forms.py index 5971fc894..fce5eeda7 100644 --- a/netbox/virtualization/forms/model_forms.py +++ b/netbox/virtualization/forms/model_forms.py @@ -4,7 +4,7 @@ from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ from dcim.forms.common import InterfaceCommonForm -from dcim.models import Device, DeviceRole, Platform, Rack, Region, Site, SiteGroup +from dcim.models import Device, DeviceRole, MACAddress, Platform, Rack, Region, Site, SiteGroup from extras.models import ConfigTemplate from ipam.models import IPAddress, VLAN, VLANGroup, VLANTranslationPolicy, VRF from netbox.forms import NetBoxModelForm @@ -370,6 +370,14 @@ class VMInterfaceForm(InterfaceCommonForm, VMComponentForm): 'mode': HTMXSelect(), } + def clean_mac_address(self): + return MACAddress.objects.create(mac_address=self.cleaned_data['mac_address']) + + def save(self, commit=True): + result = super().save(commit=commit) + self.instance.mac_addresses.add(self.cleaned_data['mac_address']) + return result + class VirtualDiskForm(VMComponentForm):