Skip to content

Commit 46914d9

Browse files
authored
Fixes: #10757 - Change IP interface assignment to use new selector (#12452)
* Fixes: #10757 - Change interface assignment to use new selector. Perform the same change to the NAT assignment as well. * Remove nat_vrf from form and remove query_params that are not required anymore
1 parent ea8a013 commit 46914d9

File tree

2 files changed

+6
-112
lines changed

2 files changed

+6
-112
lines changed

netbox/ipam/forms/model_forms.py

Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -262,72 +262,33 @@ class Meta:
262262

263263

264264
class IPAddressForm(TenancyForm, NetBoxModelForm):
265-
device = DynamicModelChoiceField(
266-
queryset=Device.objects.all(),
267-
required=False,
268-
initial_params={
269-
'interfaces': '$interface'
270-
}
271-
)
272265
interface = DynamicModelChoiceField(
273266
queryset=Interface.objects.all(),
274267
required=False,
275-
query_params={
276-
'device_id': '$device'
277-
}
278-
)
279-
virtual_machine = DynamicModelChoiceField(
280-
queryset=VirtualMachine.objects.all(),
281-
required=False,
282-
initial_params={
283-
'interfaces': '$vminterface'
284-
}
268+
selector=True,
285269
)
286270
vminterface = DynamicModelChoiceField(
287271
queryset=VMInterface.objects.all(),
288272
required=False,
273+
selector=True,
289274
label=_('Interface'),
290-
query_params={
291-
'virtual_machine_id': '$virtual_machine'
292-
}
293275
)
294276
fhrpgroup = DynamicModelChoiceField(
295277
queryset=FHRPGroup.objects.all(),
296278
required=False,
279+
selector=True,
297280
label=_('FHRP Group')
298281
)
299282
vrf = DynamicModelChoiceField(
300283
queryset=VRF.objects.all(),
301284
required=False,
302285
label=_('VRF')
303286
)
304-
nat_device = DynamicModelChoiceField(
305-
queryset=Device.objects.all(),
306-
required=False,
307-
selector=True,
308-
label=_('Device')
309-
)
310-
nat_virtual_machine = DynamicModelChoiceField(
311-
queryset=VirtualMachine.objects.all(),
312-
required=False,
313-
selector=True,
314-
label=_('Virtual Machine')
315-
)
316-
nat_vrf = DynamicModelChoiceField(
317-
queryset=VRF.objects.all(),
318-
required=False,
319-
selector=True,
320-
label=_('VRF')
321-
)
322287
nat_inside = DynamicModelChoiceField(
323288
queryset=IPAddress.objects.all(),
324289
required=False,
290+
selector=True,
325291
label=_('IP Address'),
326-
query_params={
327-
'device_id': '$nat_device',
328-
'virtual_machine_id': '$nat_virtual_machine',
329-
'vrf_id': '$nat_vrf',
330-
}
331292
)
332293
primary_for_parent = forms.BooleanField(
333294
required=False,
@@ -338,8 +299,8 @@ class IPAddressForm(TenancyForm, NetBoxModelForm):
338299
class Meta:
339300
model = IPAddress
340301
fields = [
341-
'address', 'vrf', 'status', 'role', 'dns_name', 'primary_for_parent', 'nat_device', 'nat_virtual_machine',
342-
'nat_vrf', 'nat_inside', 'tenant_group', 'tenant', 'description', 'comments', 'tags',
302+
'address', 'vrf', 'status', 'role', 'dns_name', 'primary_for_parent', 'nat_inside', 'tenant_group',
303+
'tenant', 'description', 'comments', 'tags',
343304
]
344305

345306
def __init__(self, *args, **kwargs):
@@ -354,17 +315,6 @@ def __init__(self, *args, **kwargs):
354315
initial['vminterface'] = instance.assigned_object
355316
elif type(instance.assigned_object) is FHRPGroup:
356317
initial['fhrpgroup'] = instance.assigned_object
357-
if instance.nat_inside:
358-
nat_inside_parent = instance.nat_inside.assigned_object
359-
if type(nat_inside_parent) is Interface:
360-
initial['nat_site'] = nat_inside_parent.device.site.pk
361-
if nat_inside_parent.device.rack:
362-
initial['nat_rack'] = nat_inside_parent.device.rack.pk
363-
initial['nat_device'] = nat_inside_parent.device.pk
364-
elif type(nat_inside_parent) is VMInterface:
365-
if cluster := nat_inside_parent.virtual_machine.cluster:
366-
initial['nat_cluster'] = cluster.pk
367-
initial['nat_virtual_machine'] = nat_inside_parent.virtual_machine.pk
368318
kwargs['initial'] = initial
369319

370320
super().__init__(*args, **kwargs)

netbox/templates/ipam/ipaddress_edit.html

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,9 @@ <h5 class="offset-sm-3">Interface Assignment</h5>
5656
</div>
5757
<div class="tab-content p-0 border-0">
5858
<div class="tab-pane {% if not form.initial.vminterface and not form.initial.fhrpgroup %}active{% endif %}" id="device" role="tabpanel" aria-labeled-by="device_tab">
59-
{% render_field form.device %}
6059
{% render_field form.interface %}
6160
</div>
6261
<div class="tab-pane {% if form.initial.vminterface %}active{% endif %}" id="vm" role="tabpanel" aria-labeled-by="vm_tab">
63-
{% render_field form.virtual_machine %}
6462
{% render_field form.vminterface %}
6563
</div>
6664
<div class="tab-pane {% if form.initial.fhrpgroup %}active{% endif %}" id="fhrpgroup" role="tabpanel" aria-labeled-by="fhrpgroup_tab">
@@ -75,60 +73,6 @@ <h5 class="offset-sm-3">Interface Assignment</h5>
7573
<h5 class="offset-sm-3">NAT IP (Inside)</h5>
7674
</div>
7775
<div class="row mb-2">
78-
<div class="offset-sm-3">
79-
<ul class="nav nav-pills" role="tablist">
80-
<li class="nav-item" role="presentation">
81-
<button
82-
role="tab"
83-
type="button"
84-
id="device_tab"
85-
data-bs-toggle="tab"
86-
class="nav-link active"
87-
data-bs-target="#by_device"
88-
aria-controls="by_device"
89-
>
90-
By Device
91-
</button>
92-
</li>
93-
<li class="nav-item" role="presentation">
94-
<button
95-
role="tab"
96-
type="button"
97-
id="vm_tab"
98-
data-bs-toggle="tab"
99-
class="nav-link"
100-
data-bs-target="#by_vm"
101-
aria-controls="by_vm"
102-
>
103-
By VM
104-
</button>
105-
</li>
106-
<li class="nav-item" role="presentation">
107-
<button
108-
role="tab"
109-
type="button"
110-
id="vrf_tab"
111-
data-bs-toggle="tab"
112-
class="nav-link"
113-
data-bs-target="#by_vrf"
114-
aria-controls="by_vrf"
115-
>
116-
By IP
117-
</button>
118-
</li>
119-
</ul>
120-
</div>
121-
</div>
122-
<div class="tab-content p-0 border-0">
123-
<div class="tab-pane active" id="by_device" aria-labelledby="device_tab" role="tabpanel">
124-
{% render_field form.nat_device %}
125-
</div>
126-
<div class="tab-pane" id="by_vm" aria-labelledby="vm_tab" role="tabpanel">
127-
{% render_field form.nat_virtual_machine %}
128-
</div>
129-
<div class="tab-pane" id="by_vrf" aria-labelledby="vrf_tab" role="tabpanel">
130-
{% render_field form.nat_vrf %}
131-
</div>
13276
{% render_field form.nat_inside %}
13377
</div>
13478
</div>

0 commit comments

Comments
 (0)