From 447e108d972b0bd9c7419be217d8266e9db32044 Mon Sep 17 00:00:00 2001 From: Renato Almeida de Oliveira Date: Fri, 21 Mar 2025 18:44:10 -0300 Subject: [PATCH] Fixes: #18656 Unable to import IP Address and assign to FHRP Group (#18950) * Add fhrpgroup to IPAddressImportForm * Change fhrpgroup accessor to name * rename fhrpgroup to fhrp_group * Add fhrp_group to IPAddressTestCase csv_data --- netbox/ipam/forms/bulk_import.py | 13 +++++++++++-- netbox/ipam/tests/test_views.py | 26 ++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/netbox/ipam/forms/bulk_import.py b/netbox/ipam/forms/bulk_import.py index a672fd641..0fbcd414b 100644 --- a/netbox/ipam/forms/bulk_import.py +++ b/netbox/ipam/forms/bulk_import.py @@ -327,6 +327,13 @@ class IPAddressImportForm(NetBoxModelImportForm): to_field_name='name', help_text=_('Assigned interface') ) + fhrp_group = CSVModelChoiceField( + label=_('FHRP Group'), + queryset=FHRPGroup.objects.all(), + required=False, + to_field_name='name', + help_text=_('Assigned FHRP Group name') + ) is_primary = forms.BooleanField( label=_('Is primary'), help_text=_('Make this the primary IP for the assigned device'), @@ -341,8 +348,8 @@ class IPAddressImportForm(NetBoxModelImportForm): class Meta: model = IPAddress fields = [ - 'address', 'vrf', 'tenant', 'status', 'role', 'device', 'virtual_machine', 'interface', 'is_primary', - 'is_oob', 'dns_name', 'description', 'comments', 'tags', + 'address', 'vrf', 'tenant', 'status', 'role', 'device', 'virtual_machine', 'interface', 'fhrp_group', + 'is_primary', 'is_oob', 'dns_name', 'description', 'comments', 'tags', ] def __init__(self, data=None, *args, **kwargs): @@ -398,6 +405,8 @@ class IPAddressImportForm(NetBoxModelImportForm): # Set interface assignment if self.cleaned_data.get('interface'): self.instance.assigned_object = self.cleaned_data['interface'] + if self.cleaned_data.get('fhrp_group'): + self.instance.assigned_object = self.cleaned_data['fhrp_group'] ipaddress = super().save(*args, **kwargs) diff --git a/netbox/ipam/tests/test_views.py b/netbox/ipam/tests/test_views.py index d7d367bb7..345f39a51 100644 --- a/netbox/ipam/tests/test_views.py +++ b/netbox/ipam/tests/test_views.py @@ -666,6 +666,24 @@ class IPAddressTestCase(ViewTestCases.PrimaryObjectViewTestCase): tags = create_tags('Alpha', 'Bravo', 'Charlie') + fhrp_groups = ( + FHRPGroup( + name='FHRP Group 1', + protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, + group_id=10 + ), + FHRPGroup( + name='FHRP Group 2', + protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, + group_id=20 + ), + FHRPGroup( + name='FHRP Group 3', + protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, + group_id=30 + ), + ) + FHRPGroup.objects.bulk_create(fhrp_groups) cls.form_data = { 'vrf': vrfs[1].pk, 'address': IPNetwork('192.0.2.99/24'), @@ -679,10 +697,10 @@ class IPAddressTestCase(ViewTestCases.PrimaryObjectViewTestCase): } cls.csv_data = ( - "vrf,address,status", - "VRF 1,192.0.2.4/24,active", - "VRF 1,192.0.2.5/24,active", - "VRF 1,192.0.2.6/24,active", + "vrf,address,status,fhrp_group", + "VRF 1,192.0.2.4/24,active,FHRP Group 1", + "VRF 1,192.0.2.5/24,active,FHRP Group 2", + "VRF 1,192.0.2.6/24,active,FHRP Group 3", ) cls.csv_update_data = (