diff --git a/netbox/virtualization/tables.py b/netbox/virtualization/tables.py
index 28bf1c12a..7956f898e 100644
--- a/netbox/virtualization/tables.py
+++ b/netbox/virtualization/tables.py
@@ -24,6 +24,12 @@ VIRTUALMACHINE_STATUS = """
{{ record.get_status_display }}
"""
+VIRTUALMACHINE_PRIMARY_IP = """
+{{ record.primary_ip6.address.ip|default:"" }}
+{% if record.primary_ip6 and record.primary_ip4 %}
{% endif %}
+{{ record.primary_ip4.address.ip|default:"" }}
+"""
+
#
# Cluster types
@@ -92,6 +98,16 @@ class VirtualMachineTable(BaseTable):
fields = ('pk', 'name', 'status', 'cluster', 'tenant', 'vcpus', 'memory', 'disk')
+class VirtualMachineDetailTable(VirtualMachineTable):
+ primary_ip = tables.TemplateColumn(
+ orderable=False, verbose_name='IP Address', template_code=VIRTUALMACHINE_PRIMARY_IP
+ )
+
+ class Meta(BaseTable.Meta):
+ model = VirtualMachine
+ fields = ('pk', 'name', 'status', 'cluster', 'tenant', 'vcpus', 'memory', 'disk', 'primary_ip')
+
+
#
# VM components
#
diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py
index 460715a41..0b490db9a 100644
--- a/netbox/virtualization/views.py
+++ b/netbox/virtualization/views.py
@@ -239,10 +239,10 @@ class ClusterRemoveDevicesView(PermissionRequiredMixin, View):
#
class VirtualMachineListView(ObjectListView):
- queryset = VirtualMachine.objects.select_related('cluster', 'tenant')
+ queryset = VirtualMachine.objects.select_related('cluster', 'tenant', 'primary_ip4', 'primary_ip6')
filter = filters.VirtualMachineFilter
filter_form = forms.VirtualMachineFilterForm
- table = tables.VirtualMachineTable
+ table = tables.VirtualMachineDetailTable
template_name = 'virtualization/virtualmachine_list.html'