|
|
@@ -1,32 +1,24 @@
|
|
|
from collections import OrderedDict
|
|
|
from typing import Dict
|
|
|
|
|
|
-from circuits.filtersets import CircuitFilterSet, ProviderFilterSet, ProviderNetworkFilterSet
|
|
|
+import circuits.filtersets
|
|
|
+import circuits.tables
|
|
|
+import dcim.filtersets
|
|
|
+import dcim.tables
|
|
|
+import ipam.filtersets
|
|
|
+import ipam.tables
|
|
|
+import tenancy.filtersets
|
|
|
+import tenancy.tables
|
|
|
+import virtualization.filtersets
|
|
|
+import virtualization.tables
|
|
|
from circuits.models import Circuit, ProviderNetwork, Provider
|
|
|
-from circuits.tables import CircuitTable, ProviderNetworkTable, ProviderTable
|
|
|
-from dcim.filtersets import (
|
|
|
- CableFilterSet, DeviceFilterSet, DeviceTypeFilterSet, LocationFilterSet, ModuleFilterSet, ModuleTypeFilterSet,
|
|
|
- PowerFeedFilterSet, RackFilterSet, RackReservationFilterSet, SiteFilterSet, VirtualChassisFilterSet,
|
|
|
-)
|
|
|
from dcim.models import (
|
|
|
Cable, Device, DeviceType, Location, Module, ModuleType, PowerFeed, Rack, RackReservation, Site, VirtualChassis,
|
|
|
)
|
|
|
-from dcim.tables import (
|
|
|
- CableTable, DeviceTable, DeviceTypeTable, LocationTable, ModuleTable, ModuleTypeTable, PowerFeedTable, RackTable,
|
|
|
- RackReservationTable, SiteTable, VirtualChassisTable,
|
|
|
-)
|
|
|
-from ipam.filtersets import (
|
|
|
- AggregateFilterSet, ASNFilterSet, IPAddressFilterSet, PrefixFilterSet, VLANFilterSet, VRFFilterSet,
|
|
|
-)
|
|
|
-from ipam.models import Aggregate, ASN, IPAddress, Prefix, VLAN, VRF
|
|
|
-from ipam.tables import AggregateTable, ASNTable, IPAddressTable, PrefixTable, VLANTable, VRFTable
|
|
|
-from tenancy.filtersets import ContactFilterSet, TenantFilterSet
|
|
|
+from ipam.models import Aggregate, ASN, IPAddress, Prefix, Service, VLAN, VRF
|
|
|
from tenancy.models import Contact, Tenant, ContactAssignment
|
|
|
-from tenancy.tables import ContactTable, TenantTable
|
|
|
from utilities.utils import count_related
|
|
|
-from virtualization.filtersets import ClusterFilterSet, VirtualMachineFilterSet
|
|
|
from virtualization.models import Cluster, VirtualMachine
|
|
|
-from virtualization.tables import ClusterTable, VirtualMachineTable
|
|
|
|
|
|
SEARCH_MAX_RESULTS = 15
|
|
|
|
|
|
@@ -36,22 +28,22 @@ CIRCUIT_TYPES = OrderedDict(
|
|
|
'queryset': Provider.objects.annotate(
|
|
|
count_circuits=count_related(Circuit, 'provider')
|
|
|
),
|
|
|
- 'filterset': ProviderFilterSet,
|
|
|
- 'table': ProviderTable,
|
|
|
+ 'filterset': circuits.filtersets.ProviderFilterSet,
|
|
|
+ 'table': circuits.tables.ProviderTable,
|
|
|
'url': 'circuits:provider_list',
|
|
|
}),
|
|
|
('circuit', {
|
|
|
'queryset': Circuit.objects.prefetch_related(
|
|
|
'type', 'provider', 'tenant', 'terminations__site'
|
|
|
),
|
|
|
- 'filterset': CircuitFilterSet,
|
|
|
- 'table': CircuitTable,
|
|
|
+ 'filterset': circuits.filtersets.CircuitFilterSet,
|
|
|
+ 'table': circuits.tables.CircuitTable,
|
|
|
'url': 'circuits:circuit_list',
|
|
|
}),
|
|
|
('providernetwork', {
|
|
|
'queryset': ProviderNetwork.objects.prefetch_related('provider'),
|
|
|
- 'filterset': ProviderNetworkFilterSet,
|
|
|
- 'table': ProviderNetworkTable,
|
|
|
+ 'filterset': circuits.filtersets.ProviderNetworkFilterSet,
|
|
|
+ 'table': circuits.tables.ProviderNetworkTable,
|
|
|
'url': 'circuits:providernetwork_list',
|
|
|
}),
|
|
|
)
|
|
|
@@ -62,22 +54,22 @@ DCIM_TYPES = OrderedDict(
|
|
|
(
|
|
|
('site', {
|
|
|
'queryset': Site.objects.prefetch_related('region', 'tenant'),
|
|
|
- 'filterset': SiteFilterSet,
|
|
|
- 'table': SiteTable,
|
|
|
+ 'filterset': dcim.filtersets.SiteFilterSet,
|
|
|
+ 'table': dcim.tables.SiteTable,
|
|
|
'url': 'dcim:site_list',
|
|
|
}),
|
|
|
('rack', {
|
|
|
'queryset': Rack.objects.prefetch_related('site', 'location', 'tenant', 'role').annotate(
|
|
|
device_count=count_related(Device, 'rack')
|
|
|
),
|
|
|
- 'filterset': RackFilterSet,
|
|
|
- 'table': RackTable,
|
|
|
+ 'filterset': dcim.filtersets.RackFilterSet,
|
|
|
+ 'table': dcim.tables.RackTable,
|
|
|
'url': 'dcim:rack_list',
|
|
|
}),
|
|
|
('rackreservation', {
|
|
|
'queryset': RackReservation.objects.prefetch_related('site', 'rack', 'user'),
|
|
|
- 'filterset': RackReservationFilterSet,
|
|
|
- 'table': RackReservationTable,
|
|
|
+ 'filterset': dcim.filtersets.RackReservationFilterSet,
|
|
|
+ 'table': dcim.tables.RackReservationTable,
|
|
|
'url': 'dcim:rackreservation_list',
|
|
|
}),
|
|
|
('location', {
|
|
|
@@ -94,60 +86,60 @@ DCIM_TYPES = OrderedDict(
|
|
|
'rack_count',
|
|
|
cumulative=True
|
|
|
).prefetch_related('site'),
|
|
|
- 'filterset': LocationFilterSet,
|
|
|
- 'table': LocationTable,
|
|
|
+ 'filterset': dcim.filtersets.LocationFilterSet,
|
|
|
+ 'table': dcim.tables.LocationTable,
|
|
|
'url': 'dcim:location_list',
|
|
|
}),
|
|
|
('devicetype', {
|
|
|
'queryset': DeviceType.objects.prefetch_related('manufacturer').annotate(
|
|
|
instance_count=count_related(Device, 'device_type')
|
|
|
),
|
|
|
- 'filterset': DeviceTypeFilterSet,
|
|
|
- 'table': DeviceTypeTable,
|
|
|
+ 'filterset': dcim.filtersets.DeviceTypeFilterSet,
|
|
|
+ 'table': dcim.tables.DeviceTypeTable,
|
|
|
'url': 'dcim:devicetype_list',
|
|
|
}),
|
|
|
('device', {
|
|
|
'queryset': Device.objects.prefetch_related(
|
|
|
'device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack', 'primary_ip4', 'primary_ip6',
|
|
|
),
|
|
|
- 'filterset': DeviceFilterSet,
|
|
|
- 'table': DeviceTable,
|
|
|
+ 'filterset': dcim.filtersets.DeviceFilterSet,
|
|
|
+ 'table': dcim.tables.DeviceTable,
|
|
|
'url': 'dcim:device_list',
|
|
|
}),
|
|
|
('moduletype', {
|
|
|
'queryset': ModuleType.objects.prefetch_related('manufacturer').annotate(
|
|
|
instance_count=count_related(Module, 'module_type')
|
|
|
),
|
|
|
- 'filterset': ModuleTypeFilterSet,
|
|
|
- 'table': ModuleTypeTable,
|
|
|
+ 'filterset': dcim.filtersets.ModuleTypeFilterSet,
|
|
|
+ 'table': dcim.tables.ModuleTypeTable,
|
|
|
'url': 'dcim:moduletype_list',
|
|
|
}),
|
|
|
('module', {
|
|
|
'queryset': Module.objects.prefetch_related(
|
|
|
'module_type__manufacturer', 'device', 'module_bay',
|
|
|
),
|
|
|
- 'filterset': ModuleFilterSet,
|
|
|
- 'table': ModuleTable,
|
|
|
+ 'filterset': dcim.filtersets.ModuleFilterSet,
|
|
|
+ 'table': dcim.tables.ModuleTable,
|
|
|
'url': 'dcim:module_list',
|
|
|
}),
|
|
|
('virtualchassis', {
|
|
|
'queryset': VirtualChassis.objects.prefetch_related('master').annotate(
|
|
|
member_count=count_related(Device, 'virtual_chassis')
|
|
|
),
|
|
|
- 'filterset': VirtualChassisFilterSet,
|
|
|
- 'table': VirtualChassisTable,
|
|
|
+ 'filterset': dcim.filtersets.VirtualChassisFilterSet,
|
|
|
+ 'table': dcim.tables.VirtualChassisTable,
|
|
|
'url': 'dcim:virtualchassis_list',
|
|
|
}),
|
|
|
('cable', {
|
|
|
'queryset': Cable.objects.all(),
|
|
|
- 'filterset': CableFilterSet,
|
|
|
- 'table': CableTable,
|
|
|
+ 'filterset': dcim.filtersets.CableFilterSet,
|
|
|
+ 'table': dcim.tables.CableTable,
|
|
|
'url': 'dcim:cable_list',
|
|
|
}),
|
|
|
('powerfeed', {
|
|
|
'queryset': PowerFeed.objects.all(),
|
|
|
- 'filterset': PowerFeedFilterSet,
|
|
|
- 'table': PowerFeedTable,
|
|
|
+ 'filterset': dcim.filtersets.PowerFeedFilterSet,
|
|
|
+ 'table': dcim.tables.PowerFeedTable,
|
|
|
'url': 'dcim:powerfeed_list',
|
|
|
}),
|
|
|
)
|
|
|
@@ -157,40 +149,46 @@ IPAM_TYPES = OrderedDict(
|
|
|
(
|
|
|
('vrf', {
|
|
|
'queryset': VRF.objects.prefetch_related('tenant'),
|
|
|
- 'filterset': VRFFilterSet,
|
|
|
- 'table': VRFTable,
|
|
|
+ 'filterset': ipam.filtersets.VRFFilterSet,
|
|
|
+ 'table': ipam.tables.VRFTable,
|
|
|
'url': 'ipam:vrf_list',
|
|
|
}),
|
|
|
('aggregate', {
|
|
|
'queryset': Aggregate.objects.prefetch_related('rir'),
|
|
|
- 'filterset': AggregateFilterSet,
|
|
|
- 'table': AggregateTable,
|
|
|
+ 'filterset': ipam.filtersets.AggregateFilterSet,
|
|
|
+ 'table': ipam.tables.AggregateTable,
|
|
|
'url': 'ipam:aggregate_list',
|
|
|
}),
|
|
|
('prefix', {
|
|
|
'queryset': Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role'),
|
|
|
- 'filterset': PrefixFilterSet,
|
|
|
- 'table': PrefixTable,
|
|
|
+ 'filterset': ipam.filtersets.PrefixFilterSet,
|
|
|
+ 'table': ipam.tables.PrefixTable,
|
|
|
'url': 'ipam:prefix_list',
|
|
|
}),
|
|
|
('ipaddress', {
|
|
|
'queryset': IPAddress.objects.prefetch_related('vrf__tenant', 'tenant'),
|
|
|
- 'filterset': IPAddressFilterSet,
|
|
|
- 'table': IPAddressTable,
|
|
|
+ 'filterset': ipam.filtersets.IPAddressFilterSet,
|
|
|
+ 'table': ipam.tables.IPAddressTable,
|
|
|
'url': 'ipam:ipaddress_list',
|
|
|
}),
|
|
|
('vlan', {
|
|
|
'queryset': VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role'),
|
|
|
- 'filterset': VLANFilterSet,
|
|
|
- 'table': VLANTable,
|
|
|
+ 'filterset': ipam.filtersets.VLANFilterSet,
|
|
|
+ 'table': ipam.tables.VLANTable,
|
|
|
'url': 'ipam:vlan_list',
|
|
|
}),
|
|
|
('asn', {
|
|
|
'queryset': ASN.objects.prefetch_related('rir', 'tenant'),
|
|
|
- 'filterset': ASNFilterSet,
|
|
|
- 'table': ASNTable,
|
|
|
+ 'filterset': ipam.filtersets.ASNFilterSet,
|
|
|
+ 'table': ipam.tables.ASNTable,
|
|
|
'url': 'ipam:asn_list',
|
|
|
}),
|
|
|
+ ('service', {
|
|
|
+ 'queryset': Service.objects.prefetch_related('device', 'virtual_machine'),
|
|
|
+ 'filterset': ipam.filtersets.ServiceFilterSet,
|
|
|
+ 'table': ipam.tables.ServiceTable,
|
|
|
+ 'url': 'ipam:service_list',
|
|
|
+ }),
|
|
|
)
|
|
|
)
|
|
|
|
|
|
@@ -198,15 +196,15 @@ TENANCY_TYPES = OrderedDict(
|
|
|
(
|
|
|
('tenant', {
|
|
|
'queryset': Tenant.objects.prefetch_related('group'),
|
|
|
- 'filterset': TenantFilterSet,
|
|
|
- 'table': TenantTable,
|
|
|
+ 'filterset': tenancy.filtersets.TenantFilterSet,
|
|
|
+ 'table': tenancy.tables.TenantTable,
|
|
|
'url': 'tenancy:tenant_list',
|
|
|
}),
|
|
|
('contact', {
|
|
|
'queryset': Contact.objects.prefetch_related('group', 'assignments').annotate(
|
|
|
assignment_count=count_related(ContactAssignment, 'contact')),
|
|
|
- 'filterset': ContactFilterSet,
|
|
|
- 'table': ContactTable,
|
|
|
+ 'filterset': tenancy.filtersets.ContactFilterSet,
|
|
|
+ 'table': tenancy.tables.ContactTable,
|
|
|
'url': 'tenancy:contact_list',
|
|
|
}),
|
|
|
)
|
|
|
@@ -219,16 +217,16 @@ VIRTUALIZATION_TYPES = OrderedDict(
|
|
|
device_count=count_related(Device, 'cluster'),
|
|
|
vm_count=count_related(VirtualMachine, 'cluster')
|
|
|
),
|
|
|
- 'filterset': ClusterFilterSet,
|
|
|
- 'table': ClusterTable,
|
|
|
+ 'filterset': virtualization.filtersets.ClusterFilterSet,
|
|
|
+ 'table': virtualization.tables.ClusterTable,
|
|
|
'url': 'virtualization:cluster_list',
|
|
|
}),
|
|
|
('virtualmachine', {
|
|
|
'queryset': VirtualMachine.objects.prefetch_related(
|
|
|
'cluster', 'tenant', 'platform', 'primary_ip4', 'primary_ip6',
|
|
|
),
|
|
|
- 'filterset': VirtualMachineFilterSet,
|
|
|
- 'table': VirtualMachineTable,
|
|
|
+ 'filterset': virtualization.filtersets.VirtualMachineFilterSet,
|
|
|
+ 'table': virtualization.tables.VirtualMachineTable,
|
|
|
'url': 'virtualization:virtualmachine_list',
|
|
|
}),
|
|
|
)
|