Kaynağa Gözat

9856 dcim schema

Arthur 2 yıl önce
ebeveyn
işleme
460b57dbf7

+ 255 - 0
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

+ 86 - 206
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 .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()

+ 73 - 38
netbox/dcim/graphql/types.py

@@ -52,6 +52,7 @@ __all__ = (
     'SiteType',
     'SiteType',
     'SiteGroupType',
     'SiteGroupType',
     'VirtualChassisType',
     'VirtualChassisType',
+    'VirtualDeviceContextType',
 )
 )
 
 
 
 
@@ -90,18 +91,14 @@ class ComponentTemplateObjectType(
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.Cable,
     models.Cable,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('color', ),  # bug - temp
     filters=CableFilter
     filters=CableFilter
 )
 )
 class CableType(NetBoxObjectType):
 class CableType(NetBoxObjectType):
     # a_terminations = graphene.List('dcim.graphql.gfk_mixins.CableTerminationTerminationType')
     # a_terminations = graphene.List('dcim.graphql.gfk_mixins.CableTerminationTerminationType')
     # b_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):
     def resolve_type(self, info):
         return self.type or None
         return self.type or None
 
 
@@ -127,7 +124,8 @@ class CableTerminationType(NetBoxObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.ConsolePort,
     models.ConsolePort,
-    exclude=('_path',),
+    # exclude=('_path',),
+    exclude=('_path', '_name',),  # bug - temp
     filters=ConsolePortFilter
     filters=ConsolePortFilter
 )
 )
 class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
 class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
@@ -138,7 +136,8 @@ class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin)
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.ConsolePortTemplate,
     models.ConsolePortTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=ConsolePortTemplateFilter
     filters=ConsolePortTemplateFilter
 )
 )
 class ConsolePortTemplateType(ComponentTemplateObjectType):
 class ConsolePortTemplateType(ComponentTemplateObjectType):
@@ -149,7 +148,8 @@ class ConsolePortTemplateType(ComponentTemplateObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.ConsoleServerPort,
     models.ConsoleServerPort,
-    exclude=('_path',),
+    # exclude=('_path',),
+    exclude=('_path', '_name',),  # bug - temp
     filters=ConsoleServerPortFilter
     filters=ConsoleServerPortFilter
 )
 )
 class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
 class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
@@ -160,7 +160,8 @@ class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpoint
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.ConsoleServerPortTemplate,
     models.ConsoleServerPortTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=ConsoleServerPortTemplateFilter
     filters=ConsoleServerPortTemplateFilter
 )
 )
 class ConsoleServerPortTemplateType(ComponentTemplateObjectType):
 class ConsoleServerPortTemplateType(ComponentTemplateObjectType):
@@ -171,7 +172,12 @@ class ConsoleServerPortTemplateType(ComponentTemplateObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.Device,
     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
     filters=DeviceFilter
 )
 )
 class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
 class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
@@ -185,7 +191,8 @@ class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBo
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.DeviceBay,
     models.DeviceBay,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=DeviceBayFilter
     filters=DeviceBayFilter
 )
 )
 class DeviceBayType(ComponentObjectType):
 class DeviceBayType(ComponentObjectType):
@@ -194,7 +201,8 @@ class DeviceBayType(ComponentObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.DeviceBayTemplate,
     models.DeviceBayTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=DeviceBayTemplateFilter
     filters=DeviceBayTemplateFilter
 )
 )
 class DeviceBayTemplateType(ComponentTemplateObjectType):
 class DeviceBayTemplateType(ComponentTemplateObjectType):
@@ -203,7 +211,7 @@ class DeviceBayTemplateType(ComponentTemplateObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.InventoryItemTemplate,
     models.InventoryItemTemplate,
-    exclude=('component_type', 'component_id'),
+    exclude=('component_type', 'component_id', '_name', 'parent'),
     filters=InventoryItemTemplateFilter
     filters=InventoryItemTemplateFilter
 )
 )
 class InventoryItemTemplateType(ComponentTemplateObjectType):
 class InventoryItemTemplateType(ComponentTemplateObjectType):
@@ -213,7 +221,8 @@ class InventoryItemTemplateType(ComponentTemplateObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.DeviceRole,
     models.DeviceRole,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('color',),  # bug - temp
     filters=DeviceRoleFilter
     filters=DeviceRoleFilter
 )
 )
 class DeviceRoleType(OrganizationalObjectType):
 class DeviceRoleType(OrganizationalObjectType):
@@ -222,7 +231,13 @@ class DeviceRoleType(OrganizationalObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.DeviceType,
     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
     filters=DeviceTypeFilter
 )
 )
 class DeviceTypeType(NetBoxObjectType):
 class DeviceTypeType(NetBoxObjectType):
@@ -239,7 +254,8 @@ class DeviceTypeType(NetBoxObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.FrontPort,
     models.FrontPort,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name', 'color'),  # bug - temp
     filters=FrontPortFilter
     filters=FrontPortFilter
 )
 )
 class FrontPortType(ComponentObjectType, CabledObjectMixin):
 class FrontPortType(ComponentObjectType, CabledObjectMixin):
@@ -248,7 +264,8 @@ class FrontPortType(ComponentObjectType, CabledObjectMixin):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.FrontPortTemplate,
     models.FrontPortTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name', 'color'),  # bug - temp
     filters=FrontPortTemplateFilter
     filters=FrontPortTemplateFilter
 )
 )
 class FrontPortTemplateType(ComponentTemplateObjectType):
 class FrontPortTemplateType(ComponentTemplateObjectType):
@@ -257,7 +274,8 @@ class FrontPortTemplateType(ComponentTemplateObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.Interface,
     models.Interface,
-    exclude=('_path',),
+    # fields='__all__',
+    exclude=('mac_address', '_name', 'wwn'),  # bug - temp
     filters=InterfaceFilter
     filters=InterfaceFilter
 )
 )
 class InterfaceType(IPAddressesMixin, ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
 class InterfaceType(IPAddressesMixin, ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
@@ -280,7 +298,8 @@ class InterfaceType(IPAddressesMixin, ComponentObjectType, CabledObjectMixin, Pa
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.InterfaceTemplate,
     models.InterfaceTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=InterfaceTemplateFilter
     filters=InterfaceTemplateFilter
 )
 )
 class InterfaceTemplateType(ComponentTemplateObjectType):
 class InterfaceTemplateType(ComponentTemplateObjectType):
@@ -297,7 +316,7 @@ class InterfaceTemplateType(ComponentTemplateObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.InventoryItem,
     models.InventoryItem,
-    exclude=('component_type', 'component_id'),
+    exclude=('component_type', 'component_id', '_name', 'parent'),
     filters=InventoryItemFilter
     filters=InventoryItemFilter
 )
 )
 class InventoryItemType(ComponentObjectType):
 class InventoryItemType(ComponentObjectType):
@@ -307,7 +326,8 @@ class InventoryItemType(ComponentObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.InventoryItemRole,
     models.InventoryItemRole,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('color', '_name'),  # bug - temp
     filters=InventoryItemRoleFilter
     filters=InventoryItemRoleFilter
 )
 )
 class InventoryItemRoleType(OrganizationalObjectType):
 class InventoryItemRoleType(OrganizationalObjectType):
@@ -316,7 +336,8 @@ class InventoryItemRoleType(OrganizationalObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.Location,
     models.Location,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('parent',),  # bug - temp
     filters=LocationFilter
     filters=LocationFilter
 )
 )
 class LocationType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, OrganizationalObjectType):
 class LocationType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, OrganizationalObjectType):
@@ -343,7 +364,8 @@ class ModuleType(ComponentObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.ModuleBay,
     models.ModuleBay,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=ModuleBayFilter
     filters=ModuleBayFilter
 )
 )
 class ModuleBayType(ComponentObjectType):
 class ModuleBayType(ComponentObjectType):
@@ -352,7 +374,8 @@ class ModuleBayType(ComponentObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.ModuleBayTemplate,
     models.ModuleBayTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=ModuleBayTemplateFilter
     filters=ModuleBayTemplateFilter
 )
 )
 class ModuleBayTemplateType(ComponentTemplateObjectType):
 class ModuleBayTemplateType(ComponentTemplateObjectType):
@@ -390,7 +413,8 @@ class PowerFeedType(NetBoxObjectType, CabledObjectMixin, PathEndpointMixin):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.PowerOutlet,
     models.PowerOutlet,
-    exclude=('_path',),
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=PowerOutletFilter
     filters=PowerOutletFilter
 )
 )
 class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
 class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
@@ -404,7 +428,8 @@ class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin)
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.PowerOutletTemplate,
     models.PowerOutletTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=PowerOutletTemplateFilter
     filters=PowerOutletTemplateFilter
 )
 )
 class PowerOutletTemplateType(ComponentTemplateObjectType):
 class PowerOutletTemplateType(ComponentTemplateObjectType):
@@ -427,7 +452,7 @@ class PowerPanelType(NetBoxObjectType, ContactsMixin):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.PowerPort,
     models.PowerPort,
-    exclude=('_path',),
+    exclude=('_path', '_name'),
     filters=PowerPortFilter
     filters=PowerPortFilter
 )
 )
 class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
 class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
@@ -438,7 +463,8 @@ class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.PowerPortTemplate,
     models.PowerPortTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=PowerPortTemplateFilter
     filters=PowerPortTemplateFilter
 )
 )
 class PowerPortTemplateType(ComponentTemplateObjectType):
 class PowerPortTemplateType(ComponentTemplateObjectType):
@@ -449,7 +475,8 @@ class PowerPortTemplateType(ComponentTemplateObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.Rack,
     models.Rack,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name',),  # bug - temp
     filters=RackFilter
     filters=RackFilter
 )
 )
 class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
 class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
@@ -466,7 +493,8 @@ class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObje
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.RackReservation,
     models.RackReservation,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('units',),  # bug - temp
     filters=RackReservationFilter
     filters=RackReservationFilter
 )
 )
 class RackReservationType(NetBoxObjectType):
 class RackReservationType(NetBoxObjectType):
@@ -475,7 +503,8 @@ class RackReservationType(NetBoxObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.RackRole,
     models.RackRole,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('color',),  # bug - temp
     filters=RackRoleFilter
     filters=RackRoleFilter
 )
 )
 class RackRoleType(OrganizationalObjectType):
 class RackRoleType(OrganizationalObjectType):
@@ -484,7 +513,8 @@ class RackRoleType(OrganizationalObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.RearPort,
     models.RearPort,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name', 'color'),  # bug - temp
     filters=RearPortFilter
     filters=RearPortFilter
 )
 )
 class RearPortType(ComponentObjectType, CabledObjectMixin):
 class RearPortType(ComponentObjectType, CabledObjectMixin):
@@ -493,7 +523,8 @@ class RearPortType(ComponentObjectType, CabledObjectMixin):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.RearPortTemplate,
     models.RearPortTemplate,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name', 'color'),  # bug - temp
     filters=RearPortTemplateFilter
     filters=RearPortTemplateFilter
 )
 )
 class RearPortTemplateType(ComponentTemplateObjectType):
 class RearPortTemplateType(ComponentTemplateObjectType):
@@ -502,7 +533,8 @@ class RearPortTemplateType(ComponentTemplateObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.Region,
     models.Region,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('parent',),  # bug - temp
     filters=RegionFilter
     filters=RegionFilter
 )
 )
 class RegionType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
 class RegionType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
@@ -511,7 +543,8 @@ class RegionType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.Site,
     models.Site,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('_name', 'time_zone'),  # bug - temp
     filters=SiteFilter
     filters=SiteFilter
 )
 )
 class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
 class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
@@ -521,7 +554,8 @@ class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObje
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.SiteGroup,
     models.SiteGroup,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('parent',),  # bug - temp
     filters=SiteGroupFilter
     filters=SiteGroupFilter
 )
 )
 class SiteGroupType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
 class SiteGroupType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
@@ -530,7 +564,8 @@ class SiteGroupType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.VirtualChassis,
     models.VirtualChassis,
-    fields='__all__',
+    # fields='__all__',
+    exclude=('member_count',),  # bug - temp
     filters=VirtualChassisFilter
     filters=VirtualChassisFilter
 )
 )
 class VirtualChassisType(NetBoxObjectType):
 class VirtualChassisType(NetBoxObjectType):

+ 2 - 1
netbox/netbox/graphql/schema.py

@@ -3,6 +3,7 @@ from strawberry_django.optimizer import DjangoOptimizerExtension
 from strawberry.schema.config import StrawberryConfig
 from strawberry.schema.config import StrawberryConfig
 from circuits.graphql.schema import CircuitsQuery
 from circuits.graphql.schema import CircuitsQuery
 from core.graphql.schema import CoreQuery
 from core.graphql.schema import CoreQuery
+from dcim.graphql.schema import DCIMQuery
 from users.graphql.schema import UsersQuery
 from users.graphql.schema import UsersQuery
 # from virtualization.graphql.schema import VirtualizationQuery
 # from virtualization.graphql.schema import VirtualizationQuery
 # from vpn.graphql.schema import VPNQuery
 # from vpn.graphql.schema import VPNQuery
@@ -14,7 +15,7 @@ class Query(
     UsersQuery,
     UsersQuery,
     CircuitsQuery,
     CircuitsQuery,
     CoreQuery,
     CoreQuery,
-    # DCIMQuery,
+    DCIMQuery,
     # ExtrasQuery,
     # ExtrasQuery,
     # IPAMQuery,
     # IPAMQuery,
     # TenancyQuery,
     # TenancyQuery,