mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Allow selecting NAT IP address by assigned virtual machine
This commit is contained in:
parent
71c2e235a8
commit
0e91d837a0
@ -13,7 +13,7 @@ from utilities.forms import (
|
|||||||
DatePicker, DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableIPAddressField, ReturnURLForm,
|
DatePicker, DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableIPAddressField, ReturnURLForm,
|
||||||
SlugField, StaticSelect2, StaticSelect2Multiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES,
|
SlugField, StaticSelect2, StaticSelect2Multiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES,
|
||||||
)
|
)
|
||||||
from virtualization.models import VirtualMachine, VMInterface
|
from virtualization.models import Cluster, VirtualMachine, VMInterface
|
||||||
from .choices import *
|
from .choices import *
|
||||||
from .constants import *
|
from .constants import *
|
||||||
from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
|
from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
|
||||||
@ -553,6 +553,19 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
|
|||||||
'rack_id': '$nat_rack',
|
'rack_id': '$nat_rack',
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
nat_cluster = DynamicModelChoiceField(
|
||||||
|
queryset=Cluster.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label='Cluster'
|
||||||
|
)
|
||||||
|
nat_virtual_machine = DynamicModelChoiceField(
|
||||||
|
queryset=VirtualMachine.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label='Virtual Machine',
|
||||||
|
query_params={
|
||||||
|
'cluster_id': '$nat_cluster',
|
||||||
|
}
|
||||||
|
)
|
||||||
nat_vrf = DynamicModelChoiceField(
|
nat_vrf = DynamicModelChoiceField(
|
||||||
queryset=VRF.objects.all(),
|
queryset=VRF.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -566,6 +579,7 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
|
|||||||
display_field='address',
|
display_field='address',
|
||||||
query_params={
|
query_params={
|
||||||
'device_id': '$nat_device',
|
'device_id': '$nat_device',
|
||||||
|
'virtual_machine_id': '$nat_virtual_machine',
|
||||||
'vrf_id': '$nat_vrf',
|
'vrf_id': '$nat_vrf',
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -582,7 +596,8 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
|
|||||||
model = IPAddress
|
model = IPAddress
|
||||||
fields = [
|
fields = [
|
||||||
'address', 'vrf', 'status', 'role', 'dns_name', 'description', 'primary_for_parent', 'nat_site', 'nat_rack',
|
'address', 'vrf', 'status', 'role', 'dns_name', 'description', 'primary_for_parent', 'nat_site', 'nat_rack',
|
||||||
'nat_inside', 'tenant_group', 'tenant', 'tags',
|
'nat_device', 'nat_cluster', 'nat_virtual_machine', 'nat_vrf', 'nat_inside', 'tenant_group', 'tenant',
|
||||||
|
'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
'status': StaticSelect2(),
|
'status': StaticSelect2(),
|
||||||
|
@ -56,16 +56,21 @@
|
|||||||
<div class="panel-heading"><strong>NAT IP (Inside)</strong></div>
|
<div class="panel-heading"><strong>NAT IP (Inside)</strong></div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<ul class="nav nav-tabs" role="tablist">
|
<ul class="nav nav-tabs" role="tablist">
|
||||||
<li role="presentation" class="active"><a href="#select" aria-controls="home" role="tab" data-toggle="tab">By Device</a></li>
|
<li role="presentation" class="active"><a href="#by_device" aria-controls="home" role="tab" data-toggle="tab">By Device</a></li>
|
||||||
<li role="presentation"><a href="#search" aria-controls="search" role="tab" data-toggle="tab">By IP</a></li>
|
<li role="presentation"><a href="#by_vm" aria-controls="search" role="tab" data-toggle="tab">By VM</a></li>
|
||||||
|
<li role="presentation"><a href="#by_vrf" aria-controls="search" role="tab" data-toggle="tab">By IP</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
<div class="tab-pane active" id="select">
|
<div class="tab-pane active" id="by_device">
|
||||||
{% render_field form.nat_site %}
|
{% render_field form.nat_site %}
|
||||||
{% render_field form.nat_rack %}
|
{% render_field form.nat_rack %}
|
||||||
{% render_field form.nat_device %}
|
{% render_field form.nat_device %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane" id="search">
|
<div class="tab-pane" id="by_vm">
|
||||||
|
{% render_field form.nat_cluster %}
|
||||||
|
{% render_field form.nat_virtual_machine %}
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="by_vrf">
|
||||||
{% render_field form.nat_vrf %}
|
{% render_field form.nat_vrf %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user