|
|
@@ -12,9 +12,16 @@ from rest_framework.views import APIView
|
|
|
from circuits.filters import CircuitFilter, ProviderFilter
|
|
|
from circuits.models import Circuit, Provider
|
|
|
from circuits.tables import CircuitTable, ProviderTable
|
|
|
-from dcim.filters import DeviceFilter, DeviceTypeFilter, RackFilter, SiteFilter, VirtualChassisFilter
|
|
|
-from dcim.models import ConsolePort, Device, DeviceType, InterfaceConnection, PowerPort, Rack, Site, VirtualChassis
|
|
|
-from dcim.tables import DeviceDetailTable, DeviceTypeTable, RackTable, SiteTable, VirtualChassisTable
|
|
|
+from dcim.filters import (
|
|
|
+ DeviceFilter, DeviceTypeFilter, RackFilter, RackGroupFilter, SiteFilter, VirtualChassisFilter
|
|
|
+)
|
|
|
+from dcim.models import (
|
|
|
+ ConsolePort, Device, DeviceType, InterfaceConnection, PowerPort, Rack, RackGroup, Site,
|
|
|
+ VirtualChassis
|
|
|
+)
|
|
|
+from dcim.tables import (
|
|
|
+ DeviceDetailTable, DeviceTypeTable, RackTable, RackGroupTable, SiteTable, VirtualChassisTable
|
|
|
+)
|
|
|
from extras.models import ObjectChange, ReportResult, TopologyMap
|
|
|
from ipam.filters import AggregateFilter, IPAddressFilter, PrefixFilter, VLANFilter, VRFFilter
|
|
|
from ipam.models import Aggregate, IPAddress, Prefix, VLAN, VRF
|
|
|
@@ -58,6 +65,12 @@ SEARCH_TYPES = OrderedDict((
|
|
|
'table': RackTable,
|
|
|
'url': 'dcim:rack_list',
|
|
|
}),
|
|
|
+ ('rackgroup', {
|
|
|
+ 'queryset': RackGroup.objects.select_related('site').annotate(rack_count=Count('racks')),
|
|
|
+ 'filter': RackGroupFilter,
|
|
|
+ 'table': RackGroupTable,
|
|
|
+ 'url': 'dcim:rackgroup_list',
|
|
|
+ }),
|
|
|
('devicetype', {
|
|
|
'queryset': DeviceType.objects.select_related('manufacturer').annotate(instance_count=Count('instances')),
|
|
|
'filter': DeviceTypeFilter,
|