Browse Source

Added virtualization models to home/search

Jeremy Stretch 7 years ago
parent
commit
daa947e7eb
2 changed files with 49 additions and 12 deletions
  1. 21 1
      netbox/netbox/views.py
  2. 28 11
      netbox/templates/home.html

+ 21 - 1
netbox/netbox/views.py

@@ -25,6 +25,9 @@ from secrets.tables import SecretTable
 from tenancy.filters import TenantFilter
 from tenancy.models import Tenant
 from tenancy.tables import TenantTable
+from virtualization.filters import ClusterFilter, VirtualMachineFilter
+from virtualization.models import Cluster, VirtualMachine
+from virtualization.tables import ClusterTable, VirtualMachineTable
 from .forms import SearchForm
 
 
@@ -90,7 +93,7 @@ SEARCH_TYPES = OrderedDict((
         'url': 'ipam:prefix_list',
     }),
     ('ipaddress', {
-        'queryset': IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device'),
+        'queryset': IPAddress.objects.select_related('vrf__tenant', 'tenant'),
         'filter': IPAddressFilter,
         'table': IPAddressTable,
         'url': 'ipam:ipaddress_list',
@@ -115,6 +118,19 @@ SEARCH_TYPES = OrderedDict((
         'table': TenantTable,
         'url': 'tenancy:tenant_list',
     }),
+    # Virtualization
+    ('cluster', {
+        'queryset': Cluster.objects.all(),
+        'filter': ClusterFilter,
+        'table': ClusterTable,
+        'url': 'virtualization:cluster_list',
+    }),
+    ('virtualmachine', {
+        'queryset': VirtualMachine.objects.select_related('cluster', 'tenant', 'platform'),
+        'filter': VirtualMachineFilter,
+        'table': VirtualMachineTable,
+        'url': 'virtualization:virtualmachine_list',
+    }),
 ))
 
 
@@ -150,6 +166,10 @@ class HomeView(View):
             # Secrets
             'secret_count': Secret.objects.count(),
 
+            # Virtualization
+            'cluster_count': Cluster.objects.count(),
+            'virtualmachine_count': VirtualMachine.objects.count(),
+
         }
 
         return render(request, self.template_name, {

+ 28 - 11
netbox/templates/home.html

@@ -55,20 +55,23 @@
                 </div>
             </div>
         </div>
-        {% if perms.secrets %}
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    <strong>Secrets</strong>
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                <strong>Virtualization</strong>
+            </div>
+            <div class="list-group">
+                <div class="list-group-item">
+                    <span class="badge pull-right">{{ stats.cluster_count }}</span>
+                    <h4 class="list-group-item-heading"><a href="{% url 'virtualization:cluster_list' %}">Clusters</a></h4>
+                    <p class="list-group-item-text text-muted">Clusters of physical hosts in which VMs reside</p>
                 </div>
-                <div class="list-group">
-                    <div class="list-group-item">
-                        <span class="badge pull-right">{{ stats.secret_count }}</span>
-                        <h4 class="list-group-item-heading"><a href="{% url 'secrets:secret_list' %}">Secrets</a></h4>
-                        <p class="list-group-item-text text-muted">Sensitive data (such as passwords) which has been stored securely</p>
-                    </div>
+                <div class="list-group-item">
+                    <span class="badge pull-right">{{ stats.virtualmachine_count }}</span>
+                    <h4 class="list-group-item-heading"><a href="{% url 'virtualization:virtualmachine_list' %}">Virtual Machines</a></h4>
+                    <p class="list-group-item-text text-muted">Virtual compute instances running inside clusters</p>
                 </div>
             </div>
-        {% endif %}
+        </div>
     </div>
     <div class="col-sm-6 col-md-4">
         <div class="panel panel-default">
@@ -120,6 +123,20 @@
                 </div>
             </div>
         </div>
+        {% if perms.secrets %}
+            <div class="panel panel-default">
+                <div class="panel-heading">
+                    <strong>Secrets</strong>
+                </div>
+                <div class="list-group">
+                    <div class="list-group-item">
+                        <span class="badge pull-right">{{ stats.secret_count }}</span>
+                        <h4 class="list-group-item-heading"><a href="{% url 'secrets:secret_list' %}">Secrets</a></h4>
+                        <p class="list-group-item-text text-muted">Sensitive data (such as passwords) which has been stored securely</p>
+                    </div>
+                </div>
+            </div>
+        {% endif %}
     </div>
     <div class="col-sm-6 col-md-4">
         <div class="panel panel-default">