From 460b57dbf78fdd00b14e7d67cf9dbe9546475c8c Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 7 Feb 2024 07:32:10 -0800 Subject: [PATCH] 9856 dcim schema --- netbox/dcim/graphql/filters.py | 255 ++++++++++++++++++++++++++++ netbox/dcim/graphql/schema.py | 292 ++++++++++---------------------- netbox/dcim/graphql/types.py | 111 +++++++----- netbox/netbox/graphql/schema.py | 3 +- 4 files changed, 416 insertions(+), 245 deletions(-) diff --git a/netbox/dcim/graphql/filters.py b/netbox/dcim/graphql/filters.py index e69de29bb..d70552924 100644 --- a/netbox/dcim/graphql/filters.py +++ b/netbox/dcim/graphql/filters.py @@ -0,0 +1,255 @@ +import strawberry +import strawberry_django +from strawberry import auto +from dcim import models, filtersets +from netbox.graphql import filters + + +__all__ = ( + 'CableFilter', + 'CableTerminationFilter', + 'ConsolePortFilter', + 'ConsolePortTemplateFilter', + 'ConsoleServerPortFilter', + 'ConsoleServerPortTemplateFilter', + 'DeviceFilter', + 'DeviceBayFilter', + 'DeviceBayTemplateFilter', + 'InventoryItemTemplateFilter', + 'DeviceRoleFilter', + 'DeviceTypeFilter', + 'FrontPortFilter', + 'FrontPortTemplateFilter', + 'InterfaceFilter', + 'InterfaceTemplateFilter', + 'InventoryItemFilter', + 'InventoryItemRoleFilter', + 'LocationFilter', + 'ManufacturerFilter', + 'ModuleFilter', + 'ModuleBayFilter', + 'ModuleBayTemplateFilter', + 'ModuleTypeFilter', + 'PlatformFilter', + 'PowerFeedFilter', + 'PowerOutletFilter', + 'PowerOutletTemplateFilter', + 'PowerPanelFilter', + 'PowerPortFilter', + 'PowerPortTemplateFilter', + 'RackFilter', + 'RackReservationFilter', + 'RackRoleFilter', + 'RearPortFilter', + 'RearPortTemplateFilter', + 'RegionFilter', + 'SiteFilter', + 'SiteGroupFilter', + 'VirtualChassisFilter', + 'VirtualDeviceContextFilter', +) + + +@strawberry_django.filter(models.Cable, lookups=True) +class CableFilter(filtersets.CableFilterSet): + id: auto + + +@strawberry_django.filter(models.CableTermination, lookups=True) +class CableTerminationFilter(filtersets.CableTerminationFilterSet): + id: auto + + +@strawberry_django.filter(models.ConsolePort, lookups=True) +class ConsolePortFilter(filtersets.ConsolePortFilterSet): + id: auto + + +@strawberry_django.filter(models.ConsolePortTemplate, lookups=True) +class ConsolePortTemplateFilter(filtersets.ConsolePortTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.ConsoleServerPort, lookups=True) +class ConsoleServerPortFilter(filtersets.ConsoleServerPortFilterSet): + id: auto + + +@strawberry_django.filter(models.ConsoleServerPortTemplate, lookups=True) +class ConsoleServerPortTemplateFilter(filtersets.ConsoleServerPortTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.Device, lookups=True) +class DeviceFilter(filtersets.DeviceFilterSet): + id: auto + + +@strawberry_django.filter(models.DeviceBay, lookups=True) +class DeviceBayFilter(filtersets.DeviceBayFilterSet): + id: auto + + +@strawberry_django.filter(models.DeviceBayTemplate, lookups=True) +class DeviceBayTemplateFilter(filtersets.DeviceBayTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.InventoryItemTemplate, lookups=True) +class InventoryItemTemplateFilter(filtersets.InventoryItemTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.DeviceRole, lookups=True) +class DeviceRoleFilter(filtersets.DeviceRoleFilterSet): + id: auto + + +@strawberry_django.filter(models.DeviceType, lookups=True) +class DeviceTypeFilter(filtersets.DeviceTypeFilterSet): + id: auto + + +@strawberry_django.filter(models.FrontPort, lookups=True) +class FrontPortFilter(filtersets.FrontPortFilterSet): + id: auto + + +@strawberry_django.filter(models.FrontPortTemplate, lookups=True) +class FrontPortTemplateFilter(filtersets.FrontPortTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.Interface, lookups=True) +class InterfaceFilter(filtersets.InterfaceFilterSet): + id: auto + + +@strawberry_django.filter(models.InterfaceTemplate, lookups=True) +class InterfaceTemplateFilter(filtersets.InterfaceTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.InventoryItem, lookups=True) +class InventoryItemFilter(filtersets.InventoryItemFilterSet): + id: auto + + +@strawberry_django.filter(models.InventoryItemRole, lookups=True) +class InventoryItemRoleFilter(filtersets.InventoryItemRoleFilterSet): + id: auto + + +@strawberry_django.filter(models.Location, lookups=True) +class LocationFilter(filtersets.LocationFilterSet): + id: auto + + +@strawberry_django.filter(models.Manufacturer, lookups=True) +class ManufacturerFilter(filtersets.ManufacturerFilterSet): + id: auto + + +@strawberry_django.filter(models.Module, lookups=True) +class ModuleFilter(filtersets.ModuleFilterSet): + id: auto + + +@strawberry_django.filter(models.ModuleBay, lookups=True) +class ModuleBayFilter(filtersets.ModuleBayFilterSet): + id: auto + + +@strawberry_django.filter(models.ModuleBayTemplate, lookups=True) +class ModuleBayTemplateFilter(filtersets.ModuleBayTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.ModuleType, lookups=True) +class ModuleTypeFilter(filtersets.ModuleTypeFilterSet): + id: auto + + +@strawberry_django.filter(models.Platform, lookups=True) +class PlatformFilter(filtersets.PlatformFilterSet): + id: auto + + +@strawberry_django.filter(models.PowerFeed, lookups=True) +class PowerFeedFilter(filtersets.PowerFeedFilterSet): + id: auto + + +@strawberry_django.filter(models.PowerOutlet, lookups=True) +class PowerOutletFilter(filtersets.PowerOutletFilterSet): + id: auto + + +@strawberry_django.filter(models.PowerOutletTemplate, lookups=True) +class PowerOutletTemplateFilter(filtersets.PowerOutletTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.PowerPanel, lookups=True) +class PowerPanelFilter(filtersets.PowerPanelFilterSet): + id: auto + + +@strawberry_django.filter(models.PowerPort, lookups=True) +class PowerPortFilter(filtersets.PowerPortFilterSet): + id: auto + + +@strawberry_django.filter(models.PowerPortTemplate, lookups=True) +class PowerPortTemplateFilter(filtersets.PowerPortTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.Rack, lookups=True) +class RackFilter(filtersets.RackFilterSet): + id: auto + + +@strawberry_django.filter(models.RackReservation, lookups=True) +class RackReservationFilter(filtersets.RackReservationFilterSet): + id: auto + + +@strawberry_django.filter(models.RackRole, lookups=True) +class RackRoleFilter(filtersets.RackRoleFilterSet): + id: auto + + +@strawberry_django.filter(models.RearPort, lookups=True) +class RearPortFilter(filtersets.RearPortFilterSet): + id: auto + + +@strawberry_django.filter(models.RearPortTemplate, lookups=True) +class RearPortTemplateFilter(filtersets.RearPortTemplateFilterSet): + id: auto + + +@strawberry_django.filter(models.Region, lookups=True) +class RegionFilter(filtersets.RegionFilterSet): + id: auto + + +@strawberry_django.filter(models.Site, lookups=True) +class SiteFilter(filtersets.SiteFilterSet): + id: auto + + +@strawberry_django.filter(models.SiteGroup, lookups=True) +class SiteGroupFilter(filtersets.SiteGroupFilterSet): + id: auto + + +@strawberry_django.filter(models.VirtualChassis, lookups=True) +class VirtualChassisFilter(filtersets.VirtualChassisFilterSet): + id: auto + + +@strawberry_django.filter(models.VirtualDeviceContext, lookups=True) +class VirtualDeviceContextFilter(filtersets.VirtualDeviceContextFilterSet): + id: auto diff --git a/netbox/dcim/graphql/schema.py b/netbox/dcim/graphql/schema.py index 6d689ac2d..41a273868 100644 --- a/netbox/dcim/graphql/schema.py +++ b/netbox/dcim/graphql/schema.py @@ -1,249 +1,129 @@ -import graphene +from typing import List +import strawberry +import strawberry_django -from netbox.graphql.fields import ObjectField, ObjectListField +from circuits import models from .types import * -from dcim import models -from .types import VirtualDeviceContextType -from utilities.graphql_optimizer import gql_query_optimizer -class DCIMQuery(graphene.ObjectType): - cable = ObjectField(CableType) - cable_list = ObjectListField(CableType) +@strawberry.type +class DCIMQuery: + cable: CableType = strawberry_django.field() + cable_list: List[CableType] = strawberry_django.field() - def resolve_cable_list(root, info, **kwargs): - return gql_query_optimizer(models.Cable.objects.all(), info) + console_port: ConsolePortType = strawberry_django.field() + console_port_list: List[ConsolePortType] = strawberry_django.field() - console_port = ObjectField(ConsolePortType) - console_port_list = ObjectListField(ConsolePortType) + console_port_template: ConsolePortTemplateType = strawberry_django.field() + console_port_template_list: List[ConsolePortTemplateType] = strawberry_django.field() - def resolve_console_port_list(root, info, **kwargs): - return gql_query_optimizer(models.ConsolePort.objects.all(), info) + console_server_port: ConsoleServerPortType = strawberry_django.field() + console_server_port_list: List[ConsoleServerPortType] = strawberry_django.field() - console_port_template = ObjectField(ConsolePortTemplateType) - console_port_template_list = ObjectListField(ConsolePortTemplateType) + console_server_port_template: ConsoleServerPortTemplateType = strawberry_django.field() + console_server_port_template_list: List[ConsoleServerPortTemplateType] = strawberry_django.field() - def resolve_console_port_template_list(root, info, **kwargs): - return gql_query_optimizer(models.ConsolePortTemplate.objects.all(), info) + device: DeviceType = strawberry_django.field() + device_list: List[DeviceType] = strawberry_django.field() - console_server_port = ObjectField(ConsoleServerPortType) - console_server_port_list = ObjectListField(ConsoleServerPortType) + device_bay: DeviceBayType = strawberry_django.field() + device_bay_list: List[DeviceBayType] = strawberry_django.field() - def resolve_console_server_port_list(root, info, **kwargs): - return gql_query_optimizer(models.ConsoleServerPort.objects.all(), info) + device_bay_template: DeviceBayTemplateType = strawberry_django.field() + device_bay_template_list: List[DeviceBayTemplateType] = strawberry_django.field() - console_server_port_template = ObjectField(ConsoleServerPortTemplateType) - console_server_port_template_list = ObjectListField(ConsoleServerPortTemplateType) + device_role: DeviceRoleType = strawberry_django.field() + device_role_list: List[DeviceRoleType] = strawberry_django.field() - def resolve_console_server_port_template_list(root, info, **kwargs): - return gql_query_optimizer(models.ConsoleServerPortTemplate.objects.all(), info) + device_type: DeviceTypeType = strawberry_django.field() + device_type_list: List[DeviceTypeType] = strawberry_django.field() - device = ObjectField(DeviceType) - device_list = ObjectListField(DeviceType) + front_port: FrontPortType = strawberry_django.field() + front_port_list: List[FrontPortType] = strawberry_django.field() - def resolve_device_list(root, info, **kwargs): - return gql_query_optimizer(models.Device.objects.all(), info) + front_port_template: FrontPortTemplateType = strawberry_django.field() + front_port_template_list: List[FrontPortTemplateType] = strawberry_django.field() - device_bay = ObjectField(DeviceBayType) - device_bay_list = ObjectListField(DeviceBayType) + interface: InterfaceType = strawberry_django.field() + interface_list: List[InterfaceType] = strawberry_django.field() - def resolve_device_bay_list(root, info, **kwargs): - return gql_query_optimizer(models.DeviceBay.objects.all(), info) + interface_template: InterfaceTemplateType = strawberry_django.field() + interface_template_list: List[InterfaceTemplateType] = strawberry_django.field() - device_bay_template = ObjectField(DeviceBayTemplateType) - device_bay_template_list = ObjectListField(DeviceBayTemplateType) + inventory_item: InventoryItemType = strawberry_django.field() + inventory_item_list: List[InventoryItemType] = strawberry_django.field() - def resolve_device_bay_template_list(root, info, **kwargs): - return gql_query_optimizer(models.DeviceBayTemplate.objects.all(), info) + inventory_item_role: InventoryItemRoleType = strawberry_django.field() + inventory_item_role_list: List[InventoryItemRoleType] = strawberry_django.field() - device_role = ObjectField(DeviceRoleType) - device_role_list = ObjectListField(DeviceRoleType) + inventory_item_template: InventoryItemTemplateType = strawberry_django.field() + inventory_item_template_list: List[InventoryItemTemplateType] = strawberry_django.field() - def resolve_device_role_list(root, info, **kwargs): - return gql_query_optimizer(models.DeviceRole.objects.all(), info) + location: LocationType = strawberry_django.field() + location_list: List[LocationType] = strawberry_django.field() - device_type = ObjectField(DeviceTypeType) - device_type_list = ObjectListField(DeviceTypeType) + manufacturer: ManufacturerType = strawberry_django.field() + manufacturer_list: List[ManufacturerType] = strawberry_django.field() - def resolve_device_type_list(root, info, **kwargs): - return gql_query_optimizer(models.DeviceType.objects.all(), info) + module: ModuleType = strawberry_django.field() + module_list: List[ModuleType] = strawberry_django.field() - front_port = ObjectField(FrontPortType) - front_port_list = ObjectListField(FrontPortType) + module_bay: ModuleBayType = strawberry_django.field() + module_bay_list: List[ModuleBayType] = strawberry_django.field() - def resolve_front_port_list(root, info, **kwargs): - return gql_query_optimizer(models.FrontPort.objects.all(), info) + module_bay_template: ModuleBayTemplateType = strawberry_django.field() + module_bay_template_list: List[ModuleBayTemplateType] = strawberry_django.field() - front_port_template = ObjectField(FrontPortTemplateType) - front_port_template_list = ObjectListField(FrontPortTemplateType) + module_type: ModuleTypeType = strawberry_django.field() + module_type_list: List[ModuleTypeType] = strawberry_django.field() - def resolve_front_port_template_list(root, info, **kwargs): - return gql_query_optimizer(models.FrontPortTemplate.objects.all(), info) + platform: PlatformType = strawberry_django.field() + platform_list: List[PlatformType] = strawberry_django.field() - interface = ObjectField(InterfaceType) - interface_list = ObjectListField(InterfaceType) + power_feed: PowerFeedType = strawberry_django.field() + power_feed_list: List[PowerFeedType] = strawberry_django.field() - def resolve_interface_list(root, info, **kwargs): - return gql_query_optimizer(models.Interface.objects.all(), info) + power_outlet: PowerOutletType = strawberry_django.field() + power_outlet_list: List[PowerOutletType] = strawberry_django.field() - interface_template = ObjectField(InterfaceTemplateType) - interface_template_list = ObjectListField(InterfaceTemplateType) + power_outlet_template: PowerOutletTemplateType = strawberry_django.field() + power_outlet_template_list: List[PowerOutletTemplateType] = strawberry_django.field() - def resolve_interface_template_list(root, info, **kwargs): - return gql_query_optimizer(models.InterfaceTemplate.objects.all(), info) + power_panel: PowerPanelType = strawberry_django.field() + power_panel_list: List[PowerPanelType] = strawberry_django.field() - inventory_item = ObjectField(InventoryItemType) - inventory_item_list = ObjectListField(InventoryItemType) + power_port: PowerPortType = strawberry_django.field() + power_port_list: List[PowerPortType] = strawberry_django.field() - def resolve_inventory_item_list(root, info, **kwargs): - return gql_query_optimizer(models.InventoryItem.objects.all(), info) + power_port_template: PowerPortTemplateType = strawberry_django.field() + power_port_template_list: List[PowerPortTemplateType] = strawberry_django.field() - inventory_item_role = ObjectField(InventoryItemRoleType) - inventory_item_role_list = ObjectListField(InventoryItemRoleType) + rack: RackType = strawberry_django.field() + rack_list: List[RackType] = strawberry_django.field() - def resolve_inventory_item_role_list(root, info, **kwargs): - return gql_query_optimizer(models.InventoryItemRole.objects.all(), info) + rack_reservation: RackReservationType = strawberry_django.field() + rack_reservation_list: List[RackReservationType] = strawberry_django.field() - inventory_item_template = ObjectField(InventoryItemTemplateType) - inventory_item_template_list = ObjectListField(InventoryItemTemplateType) + rack_role: RackRoleType = strawberry_django.field() + rack_role_list: List[RackRoleType] = strawberry_django.field() - def resolve_inventory_item_template_list(root, info, **kwargs): - return gql_query_optimizer(models.InventoryItemTemplate.objects.all(), info) + rear_port: RearPortType = strawberry_django.field() + rear_port_list: List[RearPortType] = strawberry_django.field() - location = ObjectField(LocationType) - location_list = ObjectListField(LocationType) + rear_port_template: RearPortTemplateType = strawberry_django.field() + rear_port_template_list: List[RearPortTemplateType] = strawberry_django.field() - def resolve_location_list(root, info, **kwargs): - return gql_query_optimizer(models.Location.objects.all(), info) + region: RegionType = strawberry_django.field() + region_list: List[RegionType] = strawberry_django.field() - manufacturer = ObjectField(ManufacturerType) - manufacturer_list = ObjectListField(ManufacturerType) + site: SiteType = strawberry_django.field() + site_list: List[SiteType] = strawberry_django.field() - def resolve_manufacturer_list(root, info, **kwargs): - return gql_query_optimizer(models.Manufacturer.objects.all(), info) + site_group: SiteGroupType = strawberry_django.field() + site_group_list: List[SiteGroupType] = strawberry_django.field() - module = ObjectField(ModuleType) - module_list = ObjectListField(ModuleType) + virtual_chassis: VirtualChassisType = strawberry_django.field() + virtual_chassis_list: List[VirtualChassisType] = strawberry_django.field() - def resolve_module_list(root, info, **kwargs): - return gql_query_optimizer(models.Module.objects.all(), info) - - module_bay = ObjectField(ModuleBayType) - module_bay_list = ObjectListField(ModuleBayType) - - def resolve_module_bay_list(root, info, **kwargs): - return gql_query_optimizer(models.ModuleBay.objects.all(), info) - - module_bay_template = ObjectField(ModuleBayTemplateType) - module_bay_template_list = ObjectListField(ModuleBayTemplateType) - - def resolve_module_bay_template_list(root, info, **kwargs): - return gql_query_optimizer(models.ModuleBayTemplate.objects.all(), info) - - module_type = ObjectField(ModuleTypeType) - module_type_list = ObjectListField(ModuleTypeType) - - def resolve_module_type_list(root, info, **kwargs): - return gql_query_optimizer(models.ModuleType.objects.all(), info) - - platform = ObjectField(PlatformType) - platform_list = ObjectListField(PlatformType) - - def resolve_platform_list(root, info, **kwargs): - return gql_query_optimizer(models.Platform.objects.all(), info) - - power_feed = ObjectField(PowerFeedType) - power_feed_list = ObjectListField(PowerFeedType) - - def resolve_power_feed_list(root, info, **kwargs): - return gql_query_optimizer(models.PowerFeed.objects.all(), info) - - power_outlet = ObjectField(PowerOutletType) - power_outlet_list = ObjectListField(PowerOutletType) - - def resolve_power_outlet_list(root, info, **kwargs): - return gql_query_optimizer(models.PowerOutlet.objects.all(), info) - - power_outlet_template = ObjectField(PowerOutletTemplateType) - power_outlet_template_list = ObjectListField(PowerOutletTemplateType) - - def resolve_power_outlet_template_list(root, info, **kwargs): - return gql_query_optimizer(models.PowerOutletTemplate.objects.all(), info) - - power_panel = ObjectField(PowerPanelType) - power_panel_list = ObjectListField(PowerPanelType) - - def resolve_power_panel_list(root, info, **kwargs): - return gql_query_optimizer(models.PowerPanel.objects.all(), info) - - power_port = ObjectField(PowerPortType) - power_port_list = ObjectListField(PowerPortType) - - def resolve_power_port_list(root, info, **kwargs): - return gql_query_optimizer(models.PowerPort.objects.all(), info) - - power_port_template = ObjectField(PowerPortTemplateType) - power_port_template_list = ObjectListField(PowerPortTemplateType) - - def resolve_power_port_template_list(root, info, **kwargs): - return gql_query_optimizer(models.PowerPortTemplate.objects.all(), info) - - rack = ObjectField(RackType) - rack_list = ObjectListField(RackType) - - def resolve_rack_list(root, info, **kwargs): - return gql_query_optimizer(models.Rack.objects.all(), info) - - rack_reservation = ObjectField(RackReservationType) - rack_reservation_list = ObjectListField(RackReservationType) - - def resolve_rack_reservation_list(root, info, **kwargs): - return gql_query_optimizer(models.RackReservation.objects.all(), info) - - rack_role = ObjectField(RackRoleType) - rack_role_list = ObjectListField(RackRoleType) - - def resolve_rack_role_list(root, info, **kwargs): - return gql_query_optimizer(models.RackRole.objects.all(), info) - - rear_port = ObjectField(RearPortType) - rear_port_list = ObjectListField(RearPortType) - - def resolve_rear_port_list(root, info, **kwargs): - return gql_query_optimizer(models.RearPort.objects.all(), info) - - rear_port_template = ObjectField(RearPortTemplateType) - rear_port_template_list = ObjectListField(RearPortTemplateType) - - def resolve_rear_port_template_list(root, info, **kwargs): - return gql_query_optimizer(models.RearPortTemplate.objects.all(), info) - - region = ObjectField(RegionType) - region_list = ObjectListField(RegionType) - - def resolve_region_list(root, info, **kwargs): - return gql_query_optimizer(models.Region.objects.all(), info) - - site = ObjectField(SiteType) - site_list = ObjectListField(SiteType) - - def resolve_site_list(root, info, **kwargs): - return gql_query_optimizer(models.Site.objects.all(), info) - - site_group = ObjectField(SiteGroupType) - site_group_list = ObjectListField(SiteGroupType) - - def resolve_site_group_list(root, info, **kwargs): - return gql_query_optimizer(models.SiteGroup.objects.all(), info) - - virtual_chassis = ObjectField(VirtualChassisType) - virtual_chassis_list = ObjectListField(VirtualChassisType) - - def resolve_virtual_chassis_list(root, info, **kwargs): - return gql_query_optimizer(models.VirtualChassis.objects.all(), info) - - virtual_device_context = ObjectField(VirtualDeviceContextType) - virtual_device_context_list = ObjectListField(VirtualDeviceContextType) - - def resolve_virtual_device_context_list(root, info, **kwargs): - return gql_query_optimizer(models.VirtualDeviceContext.objects.all(), info) + virtual_device_context: VirtualDeviceContextType = strawberry_django.field() + virtual_device_context_list: List[VirtualDeviceContextType] = strawberry_django.field() diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index 5dc907bba..455ef616f 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -52,6 +52,7 @@ __all__ = ( 'SiteType', 'SiteGroupType', 'VirtualChassisType', + 'VirtualDeviceContextType', ) @@ -90,18 +91,14 @@ class ComponentTemplateObjectType( @strawberry_django.type( models.Cable, - fields='__all__', + # fields='__all__', + exclude=('color', ), # bug - temp filters=CableFilter ) class CableType(NetBoxObjectType): # a_terminations = graphene.List('dcim.graphql.gfk_mixins.CableTerminationTerminationType') # b_terminations = graphene.List('dcim.graphql.gfk_mixins.CableTerminationTerminationType') - class Meta: - model = models.Cable - fields = '__all__' - filterset_class = filtersets.CableFilterSet - def resolve_type(self, info): return self.type or None @@ -127,7 +124,8 @@ class CableTerminationType(NetBoxObjectType): @strawberry_django.type( models.ConsolePort, - exclude=('_path',), + # exclude=('_path',), + exclude=('_path', '_name',), # bug - temp filters=ConsolePortFilter ) class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): @@ -138,7 +136,8 @@ class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin) @strawberry_django.type( models.ConsolePortTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=ConsolePortTemplateFilter ) class ConsolePortTemplateType(ComponentTemplateObjectType): @@ -149,7 +148,8 @@ class ConsolePortTemplateType(ComponentTemplateObjectType): @strawberry_django.type( models.ConsoleServerPort, - exclude=('_path',), + # exclude=('_path',), + exclude=('_path', '_name',), # bug - temp filters=ConsoleServerPortFilter ) class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): @@ -160,7 +160,8 @@ class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpoint @strawberry_django.type( models.ConsoleServerPortTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=ConsoleServerPortTemplateFilter ) class ConsoleServerPortTemplateType(ComponentTemplateObjectType): @@ -171,7 +172,12 @@ class ConsoleServerPortTemplateType(ComponentTemplateObjectType): @strawberry_django.type( models.Device, - fields='__all__', + # fields='__all__', + exclude=( + '_name', 'console_port_count', 'console_server_port_count', 'power_port_count', 'power_outlet_count', + 'interface_count', 'front_port_count', 'rear_port_count', 'device_bay_count', 'module_bay_count', + 'inventory_item_count' + ), # bug - temp filters=DeviceFilter ) class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType): @@ -185,7 +191,8 @@ class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBo @strawberry_django.type( models.DeviceBay, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=DeviceBayFilter ) class DeviceBayType(ComponentObjectType): @@ -194,7 +201,8 @@ class DeviceBayType(ComponentObjectType): @strawberry_django.type( models.DeviceBayTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=DeviceBayTemplateFilter ) class DeviceBayTemplateType(ComponentTemplateObjectType): @@ -203,7 +211,7 @@ class DeviceBayTemplateType(ComponentTemplateObjectType): @strawberry_django.type( models.InventoryItemTemplate, - exclude=('component_type', 'component_id'), + exclude=('component_type', 'component_id', '_name', 'parent'), filters=InventoryItemTemplateFilter ) class InventoryItemTemplateType(ComponentTemplateObjectType): @@ -213,7 +221,8 @@ class InventoryItemTemplateType(ComponentTemplateObjectType): @strawberry_django.type( models.DeviceRole, - fields='__all__', + # fields='__all__', + exclude=('color',), # bug - temp filters=DeviceRoleFilter ) class DeviceRoleType(OrganizationalObjectType): @@ -222,7 +231,13 @@ class DeviceRoleType(OrganizationalObjectType): @strawberry_django.type( models.DeviceType, - fields='__all__', + # fields='__all__', + exclude=( + 'console_port_template_count', 'console_server_port_template_count', 'power_port_template_count', + 'power_outlet_template_count', 'interface_template_count', 'front_port_template_count', + 'rear_port_template_count', 'device_bay_template_count', 'module_bay_template_count', + 'inventory_item_template_count', + ), # bug - temp filters=DeviceTypeFilter ) class DeviceTypeType(NetBoxObjectType): @@ -239,7 +254,8 @@ class DeviceTypeType(NetBoxObjectType): @strawberry_django.type( models.FrontPort, - fields='__all__', + # fields='__all__', + exclude=('_name', 'color'), # bug - temp filters=FrontPortFilter ) class FrontPortType(ComponentObjectType, CabledObjectMixin): @@ -248,7 +264,8 @@ class FrontPortType(ComponentObjectType, CabledObjectMixin): @strawberry_django.type( models.FrontPortTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name', 'color'), # bug - temp filters=FrontPortTemplateFilter ) class FrontPortTemplateType(ComponentTemplateObjectType): @@ -257,7 +274,8 @@ class FrontPortTemplateType(ComponentTemplateObjectType): @strawberry_django.type( models.Interface, - exclude=('_path',), + # fields='__all__', + exclude=('mac_address', '_name', 'wwn'), # bug - temp filters=InterfaceFilter ) class InterfaceType(IPAddressesMixin, ComponentObjectType, CabledObjectMixin, PathEndpointMixin): @@ -280,7 +298,8 @@ class InterfaceType(IPAddressesMixin, ComponentObjectType, CabledObjectMixin, Pa @strawberry_django.type( models.InterfaceTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=InterfaceTemplateFilter ) class InterfaceTemplateType(ComponentTemplateObjectType): @@ -297,7 +316,7 @@ class InterfaceTemplateType(ComponentTemplateObjectType): @strawberry_django.type( models.InventoryItem, - exclude=('component_type', 'component_id'), + exclude=('component_type', 'component_id', '_name', 'parent'), filters=InventoryItemFilter ) class InventoryItemType(ComponentObjectType): @@ -307,7 +326,8 @@ class InventoryItemType(ComponentObjectType): @strawberry_django.type( models.InventoryItemRole, - fields='__all__', + # fields='__all__', + exclude=('color', '_name'), # bug - temp filters=InventoryItemRoleFilter ) class InventoryItemRoleType(OrganizationalObjectType): @@ -316,7 +336,8 @@ class InventoryItemRoleType(OrganizationalObjectType): @strawberry_django.type( models.Location, - fields='__all__', + # fields='__all__', + exclude=('parent',), # bug - temp filters=LocationFilter ) class LocationType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, OrganizationalObjectType): @@ -343,7 +364,8 @@ class ModuleType(ComponentObjectType): @strawberry_django.type( models.ModuleBay, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=ModuleBayFilter ) class ModuleBayType(ComponentObjectType): @@ -352,7 +374,8 @@ class ModuleBayType(ComponentObjectType): @strawberry_django.type( models.ModuleBayTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=ModuleBayTemplateFilter ) class ModuleBayTemplateType(ComponentTemplateObjectType): @@ -390,7 +413,8 @@ class PowerFeedType(NetBoxObjectType, CabledObjectMixin, PathEndpointMixin): @strawberry_django.type( models.PowerOutlet, - exclude=('_path',), + # fields='__all__', + exclude=('_name',), # bug - temp filters=PowerOutletFilter ) class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): @@ -404,7 +428,8 @@ class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin) @strawberry_django.type( models.PowerOutletTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=PowerOutletTemplateFilter ) class PowerOutletTemplateType(ComponentTemplateObjectType): @@ -427,7 +452,7 @@ class PowerPanelType(NetBoxObjectType, ContactsMixin): @strawberry_django.type( models.PowerPort, - exclude=('_path',), + exclude=('_path', '_name'), filters=PowerPortFilter ) class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): @@ -438,7 +463,8 @@ class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): @strawberry_django.type( models.PowerPortTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=PowerPortTemplateFilter ) class PowerPortTemplateType(ComponentTemplateObjectType): @@ -449,7 +475,8 @@ class PowerPortTemplateType(ComponentTemplateObjectType): @strawberry_django.type( models.Rack, - fields='__all__', + # fields='__all__', + exclude=('_name',), # bug - temp filters=RackFilter ) class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType): @@ -466,7 +493,8 @@ class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObje @strawberry_django.type( models.RackReservation, - fields='__all__', + # fields='__all__', + exclude=('units',), # bug - temp filters=RackReservationFilter ) class RackReservationType(NetBoxObjectType): @@ -475,7 +503,8 @@ class RackReservationType(NetBoxObjectType): @strawberry_django.type( models.RackRole, - fields='__all__', + # fields='__all__', + exclude=('color',), # bug - temp filters=RackRoleFilter ) class RackRoleType(OrganizationalObjectType): @@ -484,7 +513,8 @@ class RackRoleType(OrganizationalObjectType): @strawberry_django.type( models.RearPort, - fields='__all__', + # fields='__all__', + exclude=('_name', 'color'), # bug - temp filters=RearPortFilter ) class RearPortType(ComponentObjectType, CabledObjectMixin): @@ -493,7 +523,8 @@ class RearPortType(ComponentObjectType, CabledObjectMixin): @strawberry_django.type( models.RearPortTemplate, - fields='__all__', + # fields='__all__', + exclude=('_name', 'color'), # bug - temp filters=RearPortTemplateFilter ) class RearPortTemplateType(ComponentTemplateObjectType): @@ -502,7 +533,8 @@ class RearPortTemplateType(ComponentTemplateObjectType): @strawberry_django.type( models.Region, - fields='__all__', + # fields='__all__', + exclude=('parent',), # bug - temp filters=RegionFilter ) class RegionType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType): @@ -511,7 +543,8 @@ class RegionType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType): @strawberry_django.type( models.Site, - fields='__all__', + # fields='__all__', + exclude=('_name', 'time_zone'), # bug - temp filters=SiteFilter ) class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType): @@ -521,7 +554,8 @@ class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObje @strawberry_django.type( models.SiteGroup, - fields='__all__', + # fields='__all__', + exclude=('parent',), # bug - temp filters=SiteGroupFilter ) class SiteGroupType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType): @@ -530,7 +564,8 @@ class SiteGroupType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType): @strawberry_django.type( models.VirtualChassis, - fields='__all__', + # fields='__all__', + exclude=('member_count',), # bug - temp filters=VirtualChassisFilter ) class VirtualChassisType(NetBoxObjectType): diff --git a/netbox/netbox/graphql/schema.py b/netbox/netbox/graphql/schema.py index 5daec5973..43f1a5eb0 100644 --- a/netbox/netbox/graphql/schema.py +++ b/netbox/netbox/graphql/schema.py @@ -3,6 +3,7 @@ from strawberry_django.optimizer import DjangoOptimizerExtension from strawberry.schema.config import StrawberryConfig from circuits.graphql.schema import CircuitsQuery from core.graphql.schema import CoreQuery +from dcim.graphql.schema import DCIMQuery from users.graphql.schema import UsersQuery # from virtualization.graphql.schema import VirtualizationQuery # from vpn.graphql.schema import VPNQuery @@ -14,7 +15,7 @@ class Query( UsersQuery, CircuitsQuery, CoreQuery, - # DCIMQuery, + DCIMQuery, # ExtrasQuery, # IPAMQuery, # TenancyQuery,