Sfoglia il codice sorgente

Add VMInterface list view

Jeremy Stretch 5 anni fa
parent
commit
fce19a363d

+ 3 - 0
netbox/templates/inc/nav_menu.html

@@ -372,6 +372,9 @@
                             {% endif %}
                             <a href="{% url 'virtualization:virtualmachine_list' %}">Virtual Machines</a>
                         </li>
+                        <li{% if not perms.virtualization.view_vminterface%} class="disabled"{% endif %}>
+                            <a href="{% url 'virtualization:vminterface_list' %}">Interfaces</a>
+                        </li>
                         <li class="divider"></li>
                         <li class="dropdown-header">Clusters</li>
                         <li{% if not perms.virtualization.view_cluster %} class="disabled"{% endif %}>

+ 5 - 1
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')

+ 1 - 0
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,

+ 1 - 0
netbox/virtualization/urls.py

@@ -51,6 +51,7 @@ urlpatterns = [
     path('virtual-machines/<int:virtualmachine>/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'),

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