diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index bcbe00923..808a50ae1 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -1,6 +1,6 @@ import netaddr from django.conf import settings -from django.db.models import Count, Q +from django.db.models import Count from django.db.models.expressions import RawSQL from django.shortcuts import get_object_or_404, redirect, render from django_tables2 import RequestConfig @@ -11,7 +11,7 @@ from utilities.views import ( BulkCreateView, BulkDeleteView, BulkEditView, BulkImportView, ObjectView, ObjectDeleteView, ObjectEditView, ObjectListView, ) -from virtualization.models import VirtualMachine +from virtualization.models import VirtualMachine, VMInterface from . import filters, forms, tables from .choices import * from .constants import * @@ -659,13 +659,18 @@ class IPAddressEditView(ObjectEditView): def alter_obj(self, obj, request, url_args, url_kwargs): - interface_id = request.GET.get('interface') - if interface_id: + if 'interface' in request.GET: try: - obj.interface = Interface.objects.get(pk=interface_id) + obj.assigned_object = Interface.objects.get(pk=request.GET['interface']) except (ValueError, Interface.DoesNotExist): pass + elif 'vminterface' in request.GET: + try: + obj.assigned_object = VMInterface.objects.get(pk=request.GET['vminterface']) + except (ValueError, VMInterface.DoesNotExist): + pass + return obj diff --git a/netbox/templates/dcim/inc/interface.html b/netbox/templates/dcim/inc/interface.html index 640fca338..75869db52 100644 --- a/netbox/templates/dcim/inc/interface.html +++ b/netbox/templates/dcim/inc/interface.html @@ -166,7 +166,7 @@ {% endif %} - + {% endif %} @@ -176,7 +176,7 @@ {% else %} - + {% endif %} diff --git a/netbox/templates/virtualization/inc/vminterface.html b/netbox/templates/virtualization/inc/vminterface.html new file mode 100644 index 000000000..5410fba7a --- /dev/null +++ b/netbox/templates/virtualization/inc/vminterface.html @@ -0,0 +1,141 @@ +{% load helpers %} +
IP Address | +Status/Role | +VRF | +Description | ++ |
---|---|---|---|---|
+ {{ ip }} + | + + {# Primary/status/role #} ++ {% if virtualmachine.primary_ip4 == ip or virtualmachine.primary_ip6 == ip %} + Primary + {% endif %} + {{ ip.get_status_display }} + {% if ip.role %} + {{ ip.get_role_display }} + {% endif %} + | + + {# VRF #} ++ {% if ip.vrf %} + {{ ip.vrf.name }} + {% else %} + Global + {% endif %} + | + + {# Description #} ++ {% if ip.description %} + {{ ip.description }} + {% else %} + — + {% endif %} + | + + {# Buttons #} + + +