Add indexers for remaining models

This commit is contained in:
jeremystretch 2022-10-17 12:52:46 -04:00
parent a7cde92113
commit 19c6f95f62
7 changed files with 342 additions and 62 deletions

View File

@ -1,6 +1,6 @@
from circuits import filtersets, models
from netbox.search import SearchIndex, register_search from netbox.search import SearchIndex, register_search
from utilities.utils import count_related from utilities.utils import count_related
from . import filtersets, models
@register_search() @register_search()

View File

@ -1,6 +1,6 @@
from dcim import filtersets, models
from netbox.search import SearchIndex, register_search from netbox.search import SearchIndex, register_search
from utilities.utils import count_related from utilities.utils import count_related
from . import filtersets, models
@register_search() @register_search()
@ -13,6 +13,28 @@ class CableIndex(SearchIndex):
filterset = filtersets.CableFilterSet filterset = filtersets.CableFilterSet
@register_search()
class ConsolePortIndex(SearchIndex):
model = models.ConsolePort
fields = (
('name', 100),
('label', 200),
('description', 500),
('speed', 2000),
)
@register_search()
class ConsoleServerPortIndex(SearchIndex):
model = models.ConsoleServerPort
fields = (
('name', 100),
('label', 200),
('description', 500),
('speed', 2000),
)
@register_search() @register_search()
class DeviceIndex(SearchIndex): class DeviceIndex(SearchIndex):
model = models.Device model = models.Device
@ -35,6 +57,16 @@ class DeviceIndex(SearchIndex):
filterset = filtersets.DeviceFilterSet filterset = filtersets.DeviceFilterSet
@register_search()
class DeviceBayIndex(SearchIndex):
model = models.DeviceBay
fields = (
('name', 100),
('label', 200),
('description', 500),
)
@register_search() @register_search()
class DeviceRoleIndex(SearchIndex): class DeviceRoleIndex(SearchIndex):
model = models.DeviceRole model = models.DeviceRole
@ -59,6 +91,43 @@ class DeviceTypeIndex(SearchIndex):
filterset = filtersets.DeviceTypeFilterSet filterset = filtersets.DeviceTypeFilterSet
@register_search()
class FrontPortIndex(SearchIndex):
model = models.FrontPort
fields = (
('name', 100),
('label', 200),
('description', 500),
)
@register_search()
class InterfaceIndex(SearchIndex):
model = models.Interface
fields = (
('name', 100),
('label', 200),
('mac_address', 300),
('wwn', 300),
('description', 500),
('mtu', 2000),
('speed', 2000),
)
@register_search()
class InventoryItemIndex(SearchIndex):
model = models.InventoryItem
fields = (
('asset_tag', 50),
('serial', 60),
('name', 100),
('label', 200),
('description', 500),
('part_id', 2000),
)
@register_search() @register_search()
class LocationIndex(SearchIndex): class LocationIndex(SearchIndex):
model = models.Location model = models.Location
@ -79,6 +148,16 @@ class LocationIndex(SearchIndex):
filterset = filtersets.LocationFilterSet filterset = filtersets.LocationFilterSet
@register_search()
class ManufacturerIndex(SearchIndex):
model = models.Manufacturer
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search() @register_search()
class ModuleIndex(SearchIndex): class ModuleIndex(SearchIndex):
model = models.Module model = models.Module
@ -95,6 +174,16 @@ class ModuleIndex(SearchIndex):
filterset = filtersets.ModuleFilterSet filterset = filtersets.ModuleFilterSet
@register_search()
class ModuleBayIndex(SearchIndex):
model = models.ModuleBay
fields = (
('name', 100),
('label', 200),
('description', 500),
)
@register_search() @register_search()
class ModuleTypeIndex(SearchIndex): class ModuleTypeIndex(SearchIndex):
model = models.ModuleType model = models.ModuleType
@ -109,6 +198,17 @@ class ModuleTypeIndex(SearchIndex):
filterset = filtersets.ModuleTypeFilterSet filterset = filtersets.ModuleTypeFilterSet
@register_search()
class PlatformIndex(SearchIndex):
model = models.Platform
fields = (
('name', 100),
('slug', 110),
('napalm_driver', 300),
('description', 500),
)
@register_search() @register_search()
class PowerFeedIndex(SearchIndex): class PowerFeedIndex(SearchIndex):
model = models.PowerFeed model = models.PowerFeed
@ -120,6 +220,36 @@ class PowerFeedIndex(SearchIndex):
filterset = filtersets.PowerFeedFilterSet filterset = filtersets.PowerFeedFilterSet
@register_search()
class PowerOutletIndex(SearchIndex):
model = models.PowerOutlet
fields = (
('name', 100),
('label', 200),
('description', 500),
)
@register_search()
class PowerPanelIndex(SearchIndex):
model = models.PowerPanel
fields = (
('name', 100),
)
@register_search()
class PowerPortIndex(SearchIndex):
model = models.PowerPort
fields = (
('name', 100),
('label', 200),
('description', 500),
('maximum_draw', 2000),
('allocated_draw', 2000),
)
@register_search() @register_search()
class RackIndex(SearchIndex): class RackIndex(SearchIndex):
model = models.Rack model = models.Rack
@ -146,6 +276,26 @@ class RackReservationIndex(SearchIndex):
filterset = filtersets.RackReservationFilterSet filterset = filtersets.RackReservationFilterSet
@register_search()
class RackRoleIndex(SearchIndex):
model = models.RackRole
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search()
class RearPortIndex(SearchIndex):
model = models.RearPort
fields = (
('name', 100),
('label', 200),
('description', 500),
)
@register_search() @register_search()
class RegionIndex(SearchIndex): class RegionIndex(SearchIndex):
model = models.Region model = models.Region

View File

@ -1,15 +1,13 @@
import extras.filtersets
import extras.tables
from extras.models import JournalEntry
from netbox.search import SearchIndex, register_search from netbox.search import SearchIndex, register_search
from . import filtersets, models
@register_search() @register_search()
class JournalEntryIndex(SearchIndex): class JournalEntryIndex(SearchIndex):
model = JournalEntry model = models.JournalEntry
fields = ( fields = (
('comments', 5000), ('comments', 5000),
) )
queryset = JournalEntry.objects.prefetch_related('assigned_object', 'created_by') queryset = models.JournalEntry.objects.prefetch_related('assigned_object', 'created_by')
filterset = extras.filtersets.JournalEntryFilterSet filterset = filtersets.JournalEntryFilterSet
category = 'Journal' category = 'Journal'

View File

@ -1,87 +1,155 @@
import ipam.filtersets from . import filtersets, models
import ipam.tables
from ipam.models import ASN, VLAN, VRF, Aggregate, IPAddress, Prefix, Service
from netbox.search import SearchIndex, register_search from netbox.search import SearchIndex, register_search
@register_search() @register_search()
class AggregateIndex(SearchIndex): class AggregateIndex(SearchIndex):
model = Aggregate model = models.Aggregate
fields = ( fields = (
('prefix', 100), ('prefix', 100),
('description', 500), ('description', 500),
('date_added', 2000), ('date_added', 2000),
) )
queryset = Aggregate.objects.prefetch_related('rir') queryset = models.Aggregate.objects.prefetch_related('rir')
filterset = ipam.filtersets.AggregateFilterSet filterset = filtersets.AggregateFilterSet
@register_search() @register_search()
class ASNIndex(SearchIndex): class ASNIndex(SearchIndex):
model = ASN model = models.ASN
fields = ( fields = (
('asn', 100), ('asn', 100),
('description', 500), ('description', 500),
) )
queryset = ASN.objects.prefetch_related('rir', 'tenant', 'tenant__group') queryset = models.ASN.objects.prefetch_related('rir', 'tenant', 'tenant__group')
filterset = ipam.filtersets.ASNFilterSet filterset = filtersets.ASNFilterSet
@register_search()
class FHRPGroupIndex(SearchIndex):
model = models.FHRPGroup
fields = (
('name', 100),
('group_id', 2000),
('description', 500),
)
@register_search() @register_search()
class IPAddressIndex(SearchIndex): class IPAddressIndex(SearchIndex):
model = IPAddress model = models.IPAddress
fields = ( fields = (
('address', 100), ('address', 100),
('dns_name', 300), ('dns_name', 300),
('description', 500), ('description', 500),
) )
queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant', 'tenant__group') queryset = models.IPAddress.objects.prefetch_related('vrf__tenant', 'tenant', 'tenant__group')
filterset = ipam.filtersets.IPAddressFilterSet filterset = filtersets.IPAddressFilterSet
@register_search()
class IPRangeIndex(SearchIndex):
model = models.IPRange
fields = (
('start_address', 100),
('end_address', 300),
('description', 500),
)
@register_search()
class L2VPNIndex(SearchIndex):
model = models.L2VPN
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search() @register_search()
class PrefixIndex(SearchIndex): class PrefixIndex(SearchIndex):
model = Prefix model = models.Prefix
fields = ( fields = (
('prefix', 100), ('prefix', 100),
('description', 500), ('description', 500),
) )
queryset = Prefix.objects.prefetch_related( queryset = models.Prefix.objects.prefetch_related(
'site', 'vrf__tenant', 'tenant', 'tenant__group', 'vlan', 'role' 'site', 'vrf__tenant', 'tenant', 'tenant__group', 'vlan', 'role'
) )
filterset = ipam.filtersets.PrefixFilterSet filterset = filtersets.PrefixFilterSet
@register_search() @register_search()
class ServiceIndex(SearchIndex): class RIRIndex(SearchIndex):
model = Service model = models.RIR
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search()
class RoleIndex(SearchIndex):
model = models.Role
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search()
class RouteTargetIndex(SearchIndex):
model = models.RouteTarget
fields = ( fields = (
('name', 100), ('name', 100),
('description', 500), ('description', 500),
) )
queryset = Service.objects.prefetch_related('device', 'virtual_machine')
filterset = ipam.filtersets.ServiceFilterSet
@register_search()
class ServiceIndex(SearchIndex):
model = models.Service
fields = (
('name', 100),
('description', 500),
)
queryset = models.Service.objects.prefetch_related('device', 'virtual_machine')
filterset = filtersets.ServiceFilterSet
@register_search() @register_search()
class VLANIndex(SearchIndex): class VLANIndex(SearchIndex):
model = VLAN model = models.VLAN
fields = ( fields = (
('name', 100), ('name', 100),
('vid', 100), ('vid', 100),
('description', 500), ('description', 500),
) )
queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'tenant__group', 'role') queryset = models.VLAN.objects.prefetch_related('site', 'group', 'tenant', 'tenant__group', 'role')
filterset = ipam.filtersets.VLANFilterSet filterset = filtersets.VLANFilterSet
@register_search()
class VLANGroupIndex(SearchIndex):
model = models.VLANGroup
fields = (
('name', 100),
('slug', 110),
('description', 500),
('max_vid', 2000),
)
@register_search() @register_search()
class VRFIndex(SearchIndex): class VRFIndex(SearchIndex):
model = VRF model = models.VRF
fields = ( fields = (
('name', 100), ('name', 100),
('rd', 200), ('rd', 200),
('description', 500), ('description', 500),
) )
queryset = VRF.objects.prefetch_related('tenant', 'tenant__group') queryset = models.VRF.objects.prefetch_related('tenant', 'tenant__group')
filterset = ipam.filtersets.VRFFilterSet filterset = filtersets.VRFFilterSet

View File

@ -1,13 +1,11 @@
import tenancy.filtersets
import tenancy.tables
from netbox.search import SearchIndex, register_search from netbox.search import SearchIndex, register_search
from tenancy.models import Contact, ContactAssignment, Tenant
from utilities.utils import count_related from utilities.utils import count_related
from . import filtersets, models
@register_search() @register_search()
class ContactIndex(SearchIndex): class ContactIndex(SearchIndex):
model = Contact model = models.Contact
fields = ( fields = (
('name', 100), ('name', 100),
('title', 300), ('title', 300),
@ -17,20 +15,50 @@ class ContactIndex(SearchIndex):
('link', 300), ('link', 300),
('comments', 5000), ('comments', 5000),
) )
queryset = Contact.objects.prefetch_related('group', 'assignments').annotate( queryset = models.Contact.objects.prefetch_related('group', 'assignments').annotate(
assignment_count=count_related(ContactAssignment, 'contact') assignment_count=count_related(models.ContactAssignment, 'contact')
)
filterset = filtersets.ContactFilterSet
@register_search()
class ContactGroupIndex(SearchIndex):
model = models.ContactGroup
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search()
class ContactRoleIndex(SearchIndex):
model = models.ContactRole
fields = (
('name', 100),
('slug', 110),
('description', 500),
) )
filterset = tenancy.filtersets.ContactFilterSet
@register_search() @register_search()
class TenantIndex(SearchIndex): class TenantIndex(SearchIndex):
model = Tenant model = models.Tenant
fields = ( fields = (
('name', 100), ('name', 100),
('slug', 110), ('slug', 110),
('description', 500), ('description', 500),
('comments', 5000), ('comments', 5000),
) )
queryset = Tenant.objects.prefetch_related('group') queryset = models.Tenant.objects.prefetch_related('group')
filterset = tenancy.filtersets.TenantFilterSet filterset = filtersets.TenantFilterSet
@register_search()
class TenantGroupIndex(SearchIndex):
model = models.TenantGroup
fields = (
('name', 100),
('slug', 110),
('description', 500),
)

View File

@ -1,32 +1,51 @@
import virtualization.filtersets
import virtualization.tables
from dcim.models import Device from dcim.models import Device
from netbox.search import SearchIndex, register_search from netbox.search import SearchIndex, register_search
from utilities.utils import count_related from utilities.utils import count_related
from virtualization.models import Cluster, VirtualMachine from . import filtersets, models
@register_search() @register_search()
class ClusterIndex(SearchIndex): class ClusterIndex(SearchIndex):
model = Cluster model = models.Cluster
fields = ( fields = (
('name', 100), ('name', 100),
('comments', 5000), ('comments', 5000),
) )
queryset = Cluster.objects.prefetch_related('type', 'group').annotate( queryset = models.Cluster.objects.prefetch_related('type', 'group').annotate(
device_count=count_related(Device, 'cluster'), vm_count=count_related(VirtualMachine, 'cluster') device_count=count_related(Device, 'cluster'),
vm_count=count_related(models.VirtualMachine, 'cluster')
)
filterset = filtersets.ClusterFilterSet
@register_search()
class ClusterGroupIndex(SearchIndex):
model = models.ClusterGroup
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search()
class ClusterTypeIndex(SearchIndex):
model = models.ClusterType
fields = (
('name', 100),
('slug', 110),
('description', 500),
) )
filterset = virtualization.filtersets.ClusterFilterSet
@register_search() @register_search()
class VirtualMachineIndex(SearchIndex): class VirtualMachineIndex(SearchIndex):
model = VirtualMachine model = models.VirtualMachine
fields = ( fields = (
('name', 100), ('name', 100),
('comments', 5000), ('comments', 5000),
) )
queryset = VirtualMachine.objects.prefetch_related( queryset = models.VirtualMachine.objects.prefetch_related(
'cluster', 'cluster',
'tenant', 'tenant',
'tenant__group', 'tenant__group',
@ -34,4 +53,13 @@ class VirtualMachineIndex(SearchIndex):
'primary_ip4', 'primary_ip4',
'primary_ip6', 'primary_ip6',
) )
filterset = virtualization.filtersets.VirtualMachineFilterSet filterset = filtersets.VirtualMachineFilterSet
@register_search()
class VMInterfaceIndex(SearchIndex):
model = models.VMInterface
fields = (
('name', 100),
('description', 500),
)

View File

@ -1,32 +1,40 @@
import wireless.filtersets
import wireless.tables
from dcim.models import Interface from dcim.models import Interface
from netbox.search import SearchIndex, register_search from netbox.search import SearchIndex, register_search
from utilities.utils import count_related from utilities.utils import count_related
from wireless.models import WirelessLAN, WirelessLink from . import filtersets, models
@register_search() @register_search()
class WirelessLANIndex(SearchIndex): class WirelessLANIndex(SearchIndex):
model = WirelessLAN model = models.WirelessLAN
fields = ( fields = (
('ssid', 100), ('ssid', 100),
('description', 500), ('description', 500),
('auth_psk', 2000), ('auth_psk', 2000),
) )
queryset = WirelessLAN.objects.prefetch_related('group', 'vlan').annotate( queryset = models.WirelessLAN.objects.prefetch_related('group', 'vlan').annotate(
interface_count=count_related(Interface, 'wireless_lans') interface_count=count_related(Interface, 'wireless_lans')
) )
filterset = wireless.filtersets.WirelessLANFilterSet filterset = filtersets.WirelessLANFilterSet
@register_search()
class WirelessLANGroupIndex(SearchIndex):
model = models.WirelessLANGroup
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search() @register_search()
class WirelessLinkIndex(SearchIndex): class WirelessLinkIndex(SearchIndex):
model = WirelessLink model = models.WirelessLink
fields = ( fields = (
('ssid', 100), ('ssid', 100),
('description', 500), ('description', 500),
('auth_psk', 2000), ('auth_psk', 2000),
) )
queryset = WirelessLink.objects.prefetch_related('interface_a__device', 'interface_b__device') queryset = models.WirelessLink.objects.prefetch_related('interface_a__device', 'interface_b__device')
filterset = wireless.filtersets.WirelessLinkFilterSet filterset = filtersets.WirelessLinkFilterSet