mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 08:46:10 -06:00
Interface related changes
* Add filter fields to filterset for Interface filter * Add form field to filterset form for Interface filter * Add VDC display to interface detail template
This commit is contained in:
parent
0d3b85936e
commit
a33b2a64bf
@ -1367,6 +1367,23 @@ class InterfaceFilterSet(
|
|||||||
to_field_name='rd',
|
to_field_name='rd',
|
||||||
label='VRF (RD)',
|
label='VRF (RD)',
|
||||||
)
|
)
|
||||||
|
vdc_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
field_name='vdcs',
|
||||||
|
queryset=VirtualDeviceContext.objects.all(),
|
||||||
|
label='Virtual Device Context',
|
||||||
|
)
|
||||||
|
vdc_identifier = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
field_name='vdcs__identifier',
|
||||||
|
queryset=VirtualDeviceContext.objects.all(),
|
||||||
|
to_field_name='identifier',
|
||||||
|
label='Virtual Device Context (Identifier)',
|
||||||
|
)
|
||||||
|
vdc = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
field_name='vdcs__name',
|
||||||
|
queryset=VirtualDeviceContext.objects.all(),
|
||||||
|
to_field_name='name',
|
||||||
|
label='Virtual Device Context',
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
|
@ -1107,9 +1107,18 @@ class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
|||||||
('Addressing', ('vrf_id', 'mac_address', 'wwn')),
|
('Addressing', ('vrf_id', 'mac_address', 'wwn')),
|
||||||
('PoE', ('poe_mode', 'poe_type')),
|
('PoE', ('poe_mode', 'poe_type')),
|
||||||
('Wireless', ('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power')),
|
('Wireless', ('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power')),
|
||||||
('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', 'virtual_chassis_id', 'device_id')),
|
('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', 'virtual_chassis_id',
|
||||||
|
'device_id', 'vdc_id')),
|
||||||
('Connection', ('cabled', 'connected', 'occupied')),
|
('Connection', ('cabled', 'connected', 'occupied')),
|
||||||
)
|
)
|
||||||
|
vdc_id = DynamicModelMultipleChoiceField(
|
||||||
|
queryset=VirtualDeviceContext.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'device_id': '$device_id',
|
||||||
|
},
|
||||||
|
label=_('Virtual Device Context')
|
||||||
|
)
|
||||||
kind = MultipleChoiceField(
|
kind = MultipleChoiceField(
|
||||||
choices=InterfaceKindChoices,
|
choices=InterfaceKindChoices,
|
||||||
required=False
|
required=False
|
||||||
|
@ -2441,6 +2441,14 @@ class InterfaceView(generic.ObjectView):
|
|||||||
queryset = Interface.objects.all()
|
queryset = Interface.objects.all()
|
||||||
|
|
||||||
def get_extra_context(self, request, instance):
|
def get_extra_context(self, request, instance):
|
||||||
|
# Get assigned VDC's
|
||||||
|
vdc_table = tables.VirtualDeviceContextTable(
|
||||||
|
data=instance.vdcs.restrict(request.user, 'view').prefetch_related('device'),
|
||||||
|
exclude=('tenant', 'tenant_group', 'primary_ip', 'primary_ip4', 'primary_ip6', 'comments', 'tags',
|
||||||
|
'created', 'last_updated', 'actions', ),
|
||||||
|
orderable=False
|
||||||
|
)
|
||||||
|
|
||||||
# Get assigned IP addresses
|
# Get assigned IP addresses
|
||||||
ipaddress_table = AssignedIPAddressesTable(
|
ipaddress_table = AssignedIPAddressesTable(
|
||||||
data=instance.ip_addresses.restrict(request.user, 'view').prefetch_related('vrf', 'tenant'),
|
data=instance.ip_addresses.restrict(request.user, 'view').prefetch_related('vrf', 'tenant'),
|
||||||
@ -2478,6 +2486,7 @@ class InterfaceView(generic.ObjectView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
'vdc_table': vdc_table,
|
||||||
'ipaddress_table': ipaddress_table,
|
'ipaddress_table': ipaddress_table,
|
||||||
'bridge_interfaces_table': bridge_interfaces_tables,
|
'bridge_interfaces_table': bridge_interfaces_tables,
|
||||||
'child_interfaces_table': child_interfaces_tables,
|
'child_interfaces_table': child_interfaces_tables,
|
||||||
|
@ -116,6 +116,7 @@
|
|||||||
{% plugin_left_page object %}
|
{% plugin_left_page object %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-6">
|
<div class="col col-md-6">
|
||||||
|
{% include 'inc/panel_table.html' with table=vdc_table heading="Virtual Device Contexts" %}
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h5 class="card-header">Addressing</h5>
|
<h5 class="card-header">Addressing</h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
Loading…
Reference in New Issue
Block a user