Skip to content

Commit 79b9dc2

Browse files
Feature #15428 - Show all devices with configuration template attached (#15822)
* Added devices instances column for config templates. * Added devices instances column for config templates. * Add counts for VMs, roles, and platforms --------- Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
1 parent 0e3c35a commit 79b9dc2

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

netbox/extras/tables/tables.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -414,15 +414,35 @@ class ConfigTemplateTable(NetBoxTable):
414414
tags = columns.TagColumn(
415415
url_name='extras:configtemplate_list'
416416
)
417+
role_count = columns.LinkedCountColumn(
418+
viewname='dcim:devicerole_list',
419+
url_params={'config_template_id': 'pk'},
420+
verbose_name=_('Device Roles')
421+
)
422+
platform_count = columns.LinkedCountColumn(
423+
viewname='dcim:platform_list',
424+
url_params={'config_template_id': 'pk'},
425+
verbose_name=_('Platforms')
426+
)
427+
device_count = columns.LinkedCountColumn(
428+
viewname='dcim:device_list',
429+
url_params={'config_template_id': 'pk'},
430+
verbose_name=_('Devices')
431+
)
432+
vm_count = columns.LinkedCountColumn(
433+
viewname='virtualization:virtualmachine_list',
434+
url_params={'config_template_id': 'pk'},
435+
verbose_name=_('Virtual Machines')
436+
)
417437

418438
class Meta(NetBoxTable.Meta):
419439
model = ConfigTemplate
420440
fields = (
421-
'pk', 'id', 'name', 'description', 'data_source', 'data_file', 'data_synced', 'created', 'last_updated',
422-
'tags',
441+
'pk', 'id', 'name', 'description', 'data_source', 'data_file', 'data_synced', 'role_count',
442+
'platform_count', 'device_count', 'vm_count', 'created', 'last_updated', 'tags',
423443
)
424444
default_columns = (
425-
'pk', 'name', 'description', 'is_synced',
445+
'pk', 'name', 'description', 'is_synced', 'device_count', 'vm_count',
426446
)
427447

428448

netbox/extras/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from core.forms import ManagedFileForm
1414
from core.models import Job
1515
from core.tables import JobTable
16+
from dcim.models import Device, DeviceRole, Platform
1617
from extras.dashboard.forms import DashboardWidgetAddForm, DashboardWidgetForm
1718
from extras.dashboard.utils import get_widget_class
1819
from netbox.constants import DEFAULT_ACTION_PERMISSIONS
@@ -24,6 +25,7 @@
2425
from utilities.templatetags.builtins.filters import render_markdown
2526
from utilities.utils import copy_safe_request, count_related, get_viewname, normalize_querydict, shallow_compare_dict
2627
from utilities.views import ContentTypePermissionRequiredMixin, register_model_view
28+
from virtualization.models import VirtualMachine
2729
from . import filtersets, forms, tables
2830
from .forms.reports import ReportForm
2931
from .models import *
@@ -624,7 +626,12 @@ def get_extra_context(self, request, instance):
624626
#
625627

626628
class ConfigTemplateListView(generic.ObjectListView):
627-
queryset = ConfigTemplate.objects.all()
629+
queryset = ConfigTemplate.objects.annotate(
630+
device_count=count_related(Device, 'config_template'),
631+
vm_count=count_related(VirtualMachine, 'config_template'),
632+
role_count=count_related(DeviceRole, 'config_template'),
633+
platform_count=count_related(Platform, 'config_template'),
634+
)
628635
filterset = filtersets.ConfigTemplateFilterSet
629636
filterset_form = forms.ConfigTemplateFilterForm
630637
table = tables.ConfigTemplateTable

0 commit comments

Comments
 (0)