1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

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>
This commit is contained in:
Julio Oliveira at Encora
2024-04-29 15:15:44 -03:00
committed by GitHub
parent 0e3c35ae58
commit 79b9dc2013
2 changed files with 31 additions and 4 deletions

View File

@ -414,15 +414,35 @@ class ConfigTemplateTable(NetBoxTable):
tags = columns.TagColumn(
url_name='extras:configtemplate_list'
)
role_count = columns.LinkedCountColumn(
viewname='dcim:devicerole_list',
url_params={'config_template_id': 'pk'},
verbose_name=_('Device Roles')
)
platform_count = columns.LinkedCountColumn(
viewname='dcim:platform_list',
url_params={'config_template_id': 'pk'},
verbose_name=_('Platforms')
)
device_count = columns.LinkedCountColumn(
viewname='dcim:device_list',
url_params={'config_template_id': 'pk'},
verbose_name=_('Devices')
)
vm_count = columns.LinkedCountColumn(
viewname='virtualization:virtualmachine_list',
url_params={'config_template_id': 'pk'},
verbose_name=_('Virtual Machines')
)
class Meta(NetBoxTable.Meta):
model = ConfigTemplate
fields = (
'pk', 'id', 'name', 'description', 'data_source', 'data_file', 'data_synced', 'created', 'last_updated',
'tags',
'pk', 'id', 'name', 'description', 'data_source', 'data_file', 'data_synced', 'role_count',
'platform_count', 'device_count', 'vm_count', 'created', 'last_updated', 'tags',
)
default_columns = (
'pk', 'name', 'description', 'is_synced',
'pk', 'name', 'description', 'is_synced', 'device_count', 'vm_count',
)

View File

@ -13,6 +13,7 @@ from core.choices import JobStatusChoices, ManagedFileRootPathChoices
from core.forms import ManagedFileForm
from core.models import Job
from core.tables import JobTable
from dcim.models import Device, DeviceRole, Platform
from extras.dashboard.forms import DashboardWidgetAddForm, DashboardWidgetForm
from extras.dashboard.utils import get_widget_class
from netbox.constants import DEFAULT_ACTION_PERMISSIONS
@ -24,6 +25,7 @@ from utilities.rqworker import get_workers_for_queue
from utilities.templatetags.builtins.filters import render_markdown
from utilities.utils import copy_safe_request, count_related, get_viewname, normalize_querydict, shallow_compare_dict
from utilities.views import ContentTypePermissionRequiredMixin, register_model_view
from virtualization.models import VirtualMachine
from . import filtersets, forms, tables
from .forms.reports import ReportForm
from .models import *
@ -624,7 +626,12 @@ class ObjectConfigContextView(generic.ObjectView):
#
class ConfigTemplateListView(generic.ObjectListView):
queryset = ConfigTemplate.objects.all()
queryset = ConfigTemplate.objects.annotate(
device_count=count_related(Device, 'config_template'),
vm_count=count_related(VirtualMachine, 'config_template'),
role_count=count_related(DeviceRole, 'config_template'),
platform_count=count_related(Platform, 'config_template'),
)
filterset = filtersets.ConfigTemplateFilterSet
filterset_form = forms.ConfigTemplateFilterForm
table = tables.ConfigTemplateTable