search.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import ipam.filtersets
  2. import ipam.tables
  3. from ipam.models import ASN, VLAN, VRF, Aggregate, IPAddress, Prefix, Service
  4. from netbox.search import SearchIndex, register_search
  5. @register_search()
  6. class VRFIndex(SearchIndex):
  7. model = VRF
  8. queryset = VRF.objects.prefetch_related('tenant', 'tenant__group')
  9. filterset = ipam.filtersets.VRFFilterSet
  10. table = ipam.tables.VRFTable
  11. url = 'ipam:vrf_list'
  12. @register_search()
  13. class AggregateIndex(SearchIndex):
  14. model = Aggregate
  15. queryset = Aggregate.objects.prefetch_related('rir')
  16. filterset = ipam.filtersets.AggregateFilterSet
  17. table = ipam.tables.AggregateTable
  18. url = 'ipam:aggregate_list'
  19. @register_search()
  20. class PrefixIndex(SearchIndex):
  21. model = Prefix
  22. queryset = Prefix.objects.prefetch_related(
  23. 'site', 'vrf__tenant', 'tenant', 'tenant__group', 'vlan', 'role'
  24. )
  25. filterset = ipam.filtersets.PrefixFilterSet
  26. table = ipam.tables.PrefixTable
  27. url = 'ipam:prefix_list'
  28. @register_search()
  29. class IPAddressIndex(SearchIndex):
  30. model = IPAddress
  31. queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant', 'tenant__group')
  32. filterset = ipam.filtersets.IPAddressFilterSet
  33. table = ipam.tables.IPAddressTable
  34. url = 'ipam:ipaddress_list'
  35. @register_search()
  36. class VLANIndex(SearchIndex):
  37. model = VLAN
  38. queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'tenant__group', 'role')
  39. filterset = ipam.filtersets.VLANFilterSet
  40. table = ipam.tables.VLANTable
  41. url = 'ipam:vlan_list'
  42. @register_search()
  43. class ASNIndex(SearchIndex):
  44. model = ASN
  45. queryset = ASN.objects.prefetch_related('rir', 'tenant', 'tenant__group')
  46. filterset = ipam.filtersets.ASNFilterSet
  47. table = ipam.tables.ASNTable
  48. url = 'ipam:asn_list'
  49. @register_search()
  50. class ServiceIndex(SearchIndex):
  51. model = Service
  52. queryset = Service.objects.prefetch_related('device', 'virtual_machine')
  53. filterset = ipam.filtersets.ServiceFilterSet
  54. table = ipam.tables.ServiceTable
  55. url = 'ipam:service_list'