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 utilities.utils import count_related
from . import filtersets, models
@register_search()

View File

@ -1,6 +1,6 @@
from dcim import filtersets, models
from netbox.search import SearchIndex, register_search
from utilities.utils import count_related
from . import filtersets, models
@register_search()
@ -13,6 +13,28 @@ class CableIndex(SearchIndex):
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()
class DeviceIndex(SearchIndex):
model = models.Device
@ -35,6 +57,16 @@ class DeviceIndex(SearchIndex):
filterset = filtersets.DeviceFilterSet
@register_search()
class DeviceBayIndex(SearchIndex):
model = models.DeviceBay
fields = (
('name', 100),
('label', 200),
('description', 500),
)
@register_search()
class DeviceRoleIndex(SearchIndex):
model = models.DeviceRole
@ -59,6 +91,43 @@ class DeviceTypeIndex(SearchIndex):
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()
class LocationIndex(SearchIndex):
model = models.Location
@ -79,6 +148,16 @@ class LocationIndex(SearchIndex):
filterset = filtersets.LocationFilterSet
@register_search()
class ManufacturerIndex(SearchIndex):
model = models.Manufacturer
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search()
class ModuleIndex(SearchIndex):
model = models.Module
@ -95,6 +174,16 @@ class ModuleIndex(SearchIndex):
filterset = filtersets.ModuleFilterSet
@register_search()
class ModuleBayIndex(SearchIndex):
model = models.ModuleBay
fields = (
('name', 100),
('label', 200),
('description', 500),
)
@register_search()
class ModuleTypeIndex(SearchIndex):
model = models.ModuleType
@ -109,6 +198,17 @@ class ModuleTypeIndex(SearchIndex):
filterset = filtersets.ModuleTypeFilterSet
@register_search()
class PlatformIndex(SearchIndex):
model = models.Platform
fields = (
('name', 100),
('slug', 110),
('napalm_driver', 300),
('description', 500),
)
@register_search()
class PowerFeedIndex(SearchIndex):
model = models.PowerFeed
@ -120,6 +220,36 @@ class PowerFeedIndex(SearchIndex):
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()
class RackIndex(SearchIndex):
model = models.Rack
@ -146,6 +276,26 @@ class RackReservationIndex(SearchIndex):
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()
class RegionIndex(SearchIndex):
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 . import filtersets, models
@register_search()
class JournalEntryIndex(SearchIndex):
model = JournalEntry
model = models.JournalEntry
fields = (
('comments', 5000),
)
queryset = JournalEntry.objects.prefetch_related('assigned_object', 'created_by')
filterset = extras.filtersets.JournalEntryFilterSet
queryset = models.JournalEntry.objects.prefetch_related('assigned_object', 'created_by')
filterset = filtersets.JournalEntryFilterSet
category = 'Journal'

View File

@ -1,87 +1,155 @@
import ipam.filtersets
import ipam.tables
from ipam.models import ASN, VLAN, VRF, Aggregate, IPAddress, Prefix, Service
from . import filtersets, models
from netbox.search import SearchIndex, register_search
@register_search()
class AggregateIndex(SearchIndex):
model = Aggregate
model = models.Aggregate
fields = (
('prefix', 100),
('description', 500),
('date_added', 2000),
)
queryset = Aggregate.objects.prefetch_related('rir')
filterset = ipam.filtersets.AggregateFilterSet
queryset = models.Aggregate.objects.prefetch_related('rir')
filterset = filtersets.AggregateFilterSet
@register_search()
class ASNIndex(SearchIndex):
model = ASN
model = models.ASN
fields = (
('asn', 100),
('description', 500),
)
queryset = ASN.objects.prefetch_related('rir', 'tenant', 'tenant__group')
filterset = ipam.filtersets.ASNFilterSet
queryset = models.ASN.objects.prefetch_related('rir', 'tenant', 'tenant__group')
filterset = filtersets.ASNFilterSet
@register_search()
class FHRPGroupIndex(SearchIndex):
model = models.FHRPGroup
fields = (
('name', 100),
('group_id', 2000),
('description', 500),
)
@register_search()
class IPAddressIndex(SearchIndex):
model = IPAddress
model = models.IPAddress
fields = (
('address', 100),
('dns_name', 300),
('description', 500),
)
queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant', 'tenant__group')
filterset = ipam.filtersets.IPAddressFilterSet
queryset = models.IPAddress.objects.prefetch_related('vrf__tenant', 'tenant', 'tenant__group')
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()
class PrefixIndex(SearchIndex):
model = Prefix
model = models.Prefix
fields = (
('prefix', 100),
('description', 500),
)
queryset = Prefix.objects.prefetch_related(
queryset = models.Prefix.objects.prefetch_related(
'site', 'vrf__tenant', 'tenant', 'tenant__group', 'vlan', 'role'
)
filterset = ipam.filtersets.PrefixFilterSet
filterset = filtersets.PrefixFilterSet
@register_search()
class ServiceIndex(SearchIndex):
model = Service
class RIRIndex(SearchIndex):
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 = (
('name', 100),
('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()
class VLANIndex(SearchIndex):
model = VLAN
model = models.VLAN
fields = (
('name', 100),
('vid', 100),
('description', 500),
)
queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'tenant__group', 'role')
filterset = ipam.filtersets.VLANFilterSet
queryset = models.VLAN.objects.prefetch_related('site', 'group', 'tenant', 'tenant__group', 'role')
filterset = filtersets.VLANFilterSet
@register_search()
class VLANGroupIndex(SearchIndex):
model = models.VLANGroup
fields = (
('name', 100),
('slug', 110),
('description', 500),
('max_vid', 2000),
)
@register_search()
class VRFIndex(SearchIndex):
model = VRF
model = models.VRF
fields = (
('name', 100),
('rd', 200),
('description', 500),
)
queryset = VRF.objects.prefetch_related('tenant', 'tenant__group')
filterset = ipam.filtersets.VRFFilterSet
queryset = models.VRF.objects.prefetch_related('tenant', 'tenant__group')
filterset = filtersets.VRFFilterSet

View File

@ -1,13 +1,11 @@
import tenancy.filtersets
import tenancy.tables
from netbox.search import SearchIndex, register_search
from tenancy.models import Contact, ContactAssignment, Tenant
from utilities.utils import count_related
from . import filtersets, models
@register_search()
class ContactIndex(SearchIndex):
model = Contact
model = models.Contact
fields = (
('name', 100),
('title', 300),
@ -17,20 +15,50 @@ class ContactIndex(SearchIndex):
('link', 300),
('comments', 5000),
)
queryset = Contact.objects.prefetch_related('group', 'assignments').annotate(
assignment_count=count_related(ContactAssignment, 'contact')
queryset = models.Contact.objects.prefetch_related('group', 'assignments').annotate(
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()
class TenantIndex(SearchIndex):
model = Tenant
model = models.Tenant
fields = (
('name', 100),
('slug', 110),
('description', 500),
('comments', 5000),
)
queryset = Tenant.objects.prefetch_related('group')
filterset = tenancy.filtersets.TenantFilterSet
queryset = models.Tenant.objects.prefetch_related('group')
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 netbox.search import SearchIndex, register_search
from utilities.utils import count_related
from virtualization.models import Cluster, VirtualMachine
from . import filtersets, models
@register_search()
class ClusterIndex(SearchIndex):
model = Cluster
model = models.Cluster
fields = (
('name', 100),
('comments', 5000),
)
queryset = Cluster.objects.prefetch_related('type', 'group').annotate(
device_count=count_related(Device, 'cluster'), vm_count=count_related(VirtualMachine, 'cluster')
queryset = models.Cluster.objects.prefetch_related('type', 'group').annotate(
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()
class VirtualMachineIndex(SearchIndex):
model = VirtualMachine
model = models.VirtualMachine
fields = (
('name', 100),
('comments', 5000),
)
queryset = VirtualMachine.objects.prefetch_related(
queryset = models.VirtualMachine.objects.prefetch_related(
'cluster',
'tenant',
'tenant__group',
@ -34,4 +53,13 @@ class VirtualMachineIndex(SearchIndex):
'primary_ip4',
'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 netbox.search import SearchIndex, register_search
from utilities.utils import count_related
from wireless.models import WirelessLAN, WirelessLink
from . import filtersets, models
@register_search()
class WirelessLANIndex(SearchIndex):
model = WirelessLAN
model = models.WirelessLAN
fields = (
('ssid', 100),
('description', 500),
('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')
)
filterset = wireless.filtersets.WirelessLANFilterSet
filterset = filtersets.WirelessLANFilterSet
@register_search()
class WirelessLANGroupIndex(SearchIndex):
model = models.WirelessLANGroup
fields = (
('name', 100),
('slug', 110),
('description', 500),
)
@register_search()
class WirelessLinkIndex(SearchIndex):
model = WirelessLink
model = models.WirelessLink
fields = (
('ssid', 100),
('description', 500),
('auth_psk', 2000),
)
queryset = WirelessLink.objects.prefetch_related('interface_a__device', 'interface_b__device')
filterset = wireless.filtersets.WirelessLinkFilterSet
queryset = models.WirelessLink.objects.prefetch_related('interface_a__device', 'interface_b__device')
filterset = filtersets.WirelessLinkFilterSet