Browse Source

Fixes #5022: Fix exception when editing IP address with NAT inside IP assigned

Jeremy Stretch 5 năm trước cách đây
mục cha
commit
8d351178ac
2 tập tin đã thay đổi với 10 bổ sung4 xóa
  1. 1 0
      docs/release-notes/version-2.9.md
  2. 9 4
      netbox/ipam/forms.py

+ 1 - 0
docs/release-notes/version-2.9.md

@@ -8,6 +8,7 @@
 * [#5004](https://github.com/netbox-community/netbox/issues/5004) - Permit assignment of an interface to a LAG on any peer virtual chassis member
 * [#5012](https://github.com/netbox-community/netbox/issues/5012) - Return details of exceptions resulting from report/script execution
 * [#5020](https://github.com/netbox-community/netbox/issues/5020) - Correct handling of dependent objects during bulk deletion
+* [#5022](https://github.com/netbox-community/netbox/issues/5022) - Fix exception when editing IP address with NAT inside IP assigned
 
 ---
 

+ 9 - 4
netbox/ipam/forms.py

@@ -616,10 +616,15 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
             elif type(instance.assigned_object) is VMInterface:
                 initial['virtual_machine'] = instance.assigned_object.virtual_machine
                 initial['vminterface'] = instance.assigned_object
-            if instance.nat_inside and instance.nat_inside.device is not None:
-                initial['nat_site'] = instance.nat_inside.device.site
-                initial['nat_rack'] = instance.nat_inside.device.rack
-                initial['nat_device'] = instance.nat_inside.device
+            if instance.nat_inside:
+                nat_inside_parent = instance.nat_inside.assigned_object
+                if type(nat_inside_parent) is Interface:
+                    initial['nat_site'] = nat_inside_parent.device.site.pk
+                    initial['nat_rack'] = nat_inside_parent.device.rack.pk
+                    initial['nat_device'] = nat_inside_parent.device.pk
+                elif type(nat_inside_parent) is VMInterface:
+                    initial['nat_cluster'] = nat_inside_parent.virtual_machine.cluster.pk
+                    initial['nat_virtual_machine'] = nat_inside_parent.virtual_machine.pk
         kwargs['initial'] = initial
 
         super().__init__(*args, **kwargs)