mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-16 04:02:52 -06:00
* 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
This commit is contained in:
parent
ea8a0135ad
commit
46914d9479
@ -262,38 +262,21 @@ class IPRangeForm(TenancyForm, NetBoxModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class IPAddressForm(TenancyForm, NetBoxModelForm):
|
class IPAddressForm(TenancyForm, NetBoxModelForm):
|
||||||
device = DynamicModelChoiceField(
|
|
||||||
queryset=Device.objects.all(),
|
|
||||||
required=False,
|
|
||||||
initial_params={
|
|
||||||
'interfaces': '$interface'
|
|
||||||
}
|
|
||||||
)
|
|
||||||
interface = DynamicModelChoiceField(
|
interface = DynamicModelChoiceField(
|
||||||
queryset=Interface.objects.all(),
|
queryset=Interface.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
query_params={
|
selector=True,
|
||||||
'device_id': '$device'
|
|
||||||
}
|
|
||||||
)
|
|
||||||
virtual_machine = DynamicModelChoiceField(
|
|
||||||
queryset=VirtualMachine.objects.all(),
|
|
||||||
required=False,
|
|
||||||
initial_params={
|
|
||||||
'interfaces': '$vminterface'
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
vminterface = DynamicModelChoiceField(
|
vminterface = DynamicModelChoiceField(
|
||||||
queryset=VMInterface.objects.all(),
|
queryset=VMInterface.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
|
selector=True,
|
||||||
label=_('Interface'),
|
label=_('Interface'),
|
||||||
query_params={
|
|
||||||
'virtual_machine_id': '$virtual_machine'
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
fhrpgroup = DynamicModelChoiceField(
|
fhrpgroup = DynamicModelChoiceField(
|
||||||
queryset=FHRPGroup.objects.all(),
|
queryset=FHRPGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
|
selector=True,
|
||||||
label=_('FHRP Group')
|
label=_('FHRP Group')
|
||||||
)
|
)
|
||||||
vrf = DynamicModelChoiceField(
|
vrf = DynamicModelChoiceField(
|
||||||
@ -301,33 +284,11 @@ class IPAddressForm(TenancyForm, NetBoxModelForm):
|
|||||||
required=False,
|
required=False,
|
||||||
label=_('VRF')
|
label=_('VRF')
|
||||||
)
|
)
|
||||||
nat_device = DynamicModelChoiceField(
|
|
||||||
queryset=Device.objects.all(),
|
|
||||||
required=False,
|
|
||||||
selector=True,
|
|
||||||
label=_('Device')
|
|
||||||
)
|
|
||||||
nat_virtual_machine = DynamicModelChoiceField(
|
|
||||||
queryset=VirtualMachine.objects.all(),
|
|
||||||
required=False,
|
|
||||||
selector=True,
|
|
||||||
label=_('Virtual Machine')
|
|
||||||
)
|
|
||||||
nat_vrf = DynamicModelChoiceField(
|
|
||||||
queryset=VRF.objects.all(),
|
|
||||||
required=False,
|
|
||||||
selector=True,
|
|
||||||
label=_('VRF')
|
|
||||||
)
|
|
||||||
nat_inside = DynamicModelChoiceField(
|
nat_inside = DynamicModelChoiceField(
|
||||||
queryset=IPAddress.objects.all(),
|
queryset=IPAddress.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
|
selector=True,
|
||||||
label=_('IP Address'),
|
label=_('IP Address'),
|
||||||
query_params={
|
|
||||||
'device_id': '$nat_device',
|
|
||||||
'virtual_machine_id': '$nat_virtual_machine',
|
|
||||||
'vrf_id': '$nat_vrf',
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
primary_for_parent = forms.BooleanField(
|
primary_for_parent = forms.BooleanField(
|
||||||
required=False,
|
required=False,
|
||||||
@ -338,8 +299,8 @@ class IPAddressForm(TenancyForm, NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = IPAddress
|
model = IPAddress
|
||||||
fields = [
|
fields = [
|
||||||
'address', 'vrf', 'status', 'role', 'dns_name', 'primary_for_parent', 'nat_device', 'nat_virtual_machine',
|
'address', 'vrf', 'status', 'role', 'dns_name', 'primary_for_parent', 'nat_inside', 'tenant_group',
|
||||||
'nat_vrf', 'nat_inside', 'tenant_group', 'tenant', 'description', 'comments', 'tags',
|
'tenant', 'description', 'comments', 'tags',
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -354,17 +315,6 @@ class IPAddressForm(TenancyForm, NetBoxModelForm):
|
|||||||
initial['vminterface'] = instance.assigned_object
|
initial['vminterface'] = instance.assigned_object
|
||||||
elif type(instance.assigned_object) is FHRPGroup:
|
elif type(instance.assigned_object) is FHRPGroup:
|
||||||
initial['fhrpgroup'] = instance.assigned_object
|
initial['fhrpgroup'] = instance.assigned_object
|
||||||
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
|
|
||||||
if nat_inside_parent.device.rack:
|
|
||||||
initial['nat_rack'] = nat_inside_parent.device.rack.pk
|
|
||||||
initial['nat_device'] = nat_inside_parent.device.pk
|
|
||||||
elif type(nat_inside_parent) is VMInterface:
|
|
||||||
if cluster := nat_inside_parent.virtual_machine.cluster:
|
|
||||||
initial['nat_cluster'] = cluster.pk
|
|
||||||
initial['nat_virtual_machine'] = nat_inside_parent.virtual_machine.pk
|
|
||||||
kwargs['initial'] = initial
|
kwargs['initial'] = initial
|
||||||
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
@ -56,11 +56,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="tab-content p-0 border-0">
|
<div class="tab-content p-0 border-0">
|
||||||
<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">
|
<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">
|
||||||
{% render_field form.device %}
|
|
||||||
{% render_field form.interface %}
|
{% render_field form.interface %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane {% if form.initial.vminterface %}active{% endif %}" id="vm" role="tabpanel" aria-labeled-by="vm_tab">
|
<div class="tab-pane {% if form.initial.vminterface %}active{% endif %}" id="vm" role="tabpanel" aria-labeled-by="vm_tab">
|
||||||
{% render_field form.virtual_machine %}
|
|
||||||
{% render_field form.vminterface %}
|
{% render_field form.vminterface %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane {% if form.initial.fhrpgroup %}active{% endif %}" id="fhrpgroup" role="tabpanel" aria-labeled-by="fhrpgroup_tab">
|
<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">NAT IP (Inside)</h5>
|
<h5 class="offset-sm-3">NAT IP (Inside)</h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="offset-sm-3">
|
|
||||||
<ul class="nav nav-pills" role="tablist">
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button
|
|
||||||
role="tab"
|
|
||||||
type="button"
|
|
||||||
id="device_tab"
|
|
||||||
data-bs-toggle="tab"
|
|
||||||
class="nav-link active"
|
|
||||||
data-bs-target="#by_device"
|
|
||||||
aria-controls="by_device"
|
|
||||||
>
|
|
||||||
By Device
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button
|
|
||||||
role="tab"
|
|
||||||
type="button"
|
|
||||||
id="vm_tab"
|
|
||||||
data-bs-toggle="tab"
|
|
||||||
class="nav-link"
|
|
||||||
data-bs-target="#by_vm"
|
|
||||||
aria-controls="by_vm"
|
|
||||||
>
|
|
||||||
By VM
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button
|
|
||||||
role="tab"
|
|
||||||
type="button"
|
|
||||||
id="vrf_tab"
|
|
||||||
data-bs-toggle="tab"
|
|
||||||
class="nav-link"
|
|
||||||
data-bs-target="#by_vrf"
|
|
||||||
aria-controls="by_vrf"
|
|
||||||
>
|
|
||||||
By IP
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tab-content p-0 border-0">
|
|
||||||
<div class="tab-pane active" id="by_device" aria-labelledby="device_tab" role="tabpanel">
|
|
||||||
{% render_field form.nat_device %}
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="by_vm" aria-labelledby="vm_tab" role="tabpanel">
|
|
||||||
{% render_field form.nat_virtual_machine %}
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="by_vrf" aria-labelledby="vrf_tab" role="tabpanel">
|
|
||||||
{% render_field form.nat_vrf %}
|
|
||||||
</div>
|
|
||||||
{% render_field form.nat_inside %}
|
{% render_field form.nat_inside %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user