diff --git a/netbox/templates/inc/nav_menu.html b/netbox/templates/inc/nav_menu.html index db8442821..65d7baa67 100644 --- a/netbox/templates/inc/nav_menu.html +++ b/netbox/templates/inc/nav_menu.html @@ -372,6 +372,9 @@ {% endif %} Virtual Machines + + Interfaces +
  • diff --git a/netbox/virtualization/tables.py b/netbox/virtualization/tables.py index fd6395220..de319361c 100644 --- a/netbox/virtualization/tables.py +++ b/netbox/virtualization/tables.py @@ -173,7 +173,11 @@ class VirtualMachineDetailTable(VirtualMachineTable): # class VMInterfaceTable(BaseTable): + virtual_machine = tables.LinkColumn() + name = tables.Column( + linkify=True + ) class Meta(BaseTable.Meta): model = VMInterface - fields = ('name', 'enabled', 'description') + fields = ('virtual_machine', 'name', 'enabled', 'mac_address', 'mtu', 'description') diff --git a/netbox/virtualization/tests/test_views.py b/netbox/virtualization/tests/test_views.py index 772603ea1..a7db2477f 100644 --- a/netbox/virtualization/tests/test_views.py +++ b/netbox/virtualization/tests/test_views.py @@ -192,6 +192,7 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase): # TODO: Update base class to DeviceComponentViewTestCase # Blocked by #4721 class VMInterfaceTestCase( + ViewTestCases.ListObjectsViewTestCase, ViewTestCases.GetObjectViewTestCase, ViewTestCases.EditObjectViewTestCase, ViewTestCases.DeleteObjectViewTestCase, diff --git a/netbox/virtualization/urls.py b/netbox/virtualization/urls.py index 5f28eb1df..f55a0b1ed 100644 --- a/netbox/virtualization/urls.py +++ b/netbox/virtualization/urls.py @@ -51,6 +51,7 @@ urlpatterns = [ path('virtual-machines//services/assign/', ServiceEditView.as_view(), name='virtualmachine_service_assign'), # VM interfaces + path('interfaces/', views.InterfaceListView.as_view(), name='vminterface_list'), path('interfaces/add/', views.InterfaceCreateView.as_view(), name='vminterface_add'), path('interfaces/edit/', views.InterfaceBulkEditView.as_view(), name='vminterface_bulk_edit'), path('interfaces/delete/', views.InterfaceBulkDeleteView.as_view(), name='vminterface_bulk_delete'), diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index 1fff399ed..d1d1e6145 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -290,11 +290,11 @@ class VirtualMachineBulkDeleteView(BulkDeleteView): # class InterfaceListView(ObjectListView): - queryset = VMInterface.objects.prefetch_related('virtual_machine', 'virtual_machine__tenant', 'cable') + queryset = VMInterface.objects.prefetch_related('virtual_machine') filterset = filters.VMInterfaceFilterSet filterset_form = forms.VMInterfaceFilterForm table = tables.VMInterfaceTable - action_buttons = ('import', 'export') + action_buttons = ('export',) class InterfaceView(ObjectView):