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):