Arthur 2 лет назад
Родитель
Сommit
0387cb0a48

+ 24 - 3
netbox/circuits/graphql/types.py

@@ -27,7 +27,22 @@ __all__ = (
     filters=ProviderFilter
 )
 class ProviderType(NetBoxObjectType, ContactsMixin):
-    pass
+
+    @strawberry_django.field
+    def networks(self) -> List[Annotated["ProviderNetworkType", strawberry.lazy('circuits.graphql.types')]]:
+        return self.networks.all()
+
+    @strawberry_django.field
+    def circuits(self) -> List[Annotated["CircuitType", strawberry.lazy('circuits.graphql.types')]]:
+        return self.circuits.all()
+
+    @strawberry_django.field
+    def asns(self) -> List[Annotated["ASNType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.asns.all()
+
+    @strawberry_django.field
+    def accounts(self) -> List[Annotated["ProviderAccountType", strawberry.lazy('circuits.graphql.types')]]:
+        return self.accounts.all()
 
 
 @strawberry_django.type(
@@ -36,7 +51,10 @@ class ProviderType(NetBoxObjectType, ContactsMixin):
     filters=ProviderAccountFilter
 )
 class ProviderAccountType(NetBoxObjectType):
-    pass
+
+    @strawberry_django.field
+    def circuits(self) -> List[Annotated["CircuitType", strawberry.lazy('circuits.graphql.types')]]:
+        return self.circuits.all()
 
 
 @strawberry_django.type(
@@ -45,7 +63,10 @@ class ProviderAccountType(NetBoxObjectType):
     filters=ProviderNetworkFilter
 )
 class ProviderNetworkType(NetBoxObjectType):
-    pass
+
+    @strawberry_django.field
+    def circuit_terminations(self) -> List[Annotated["CircuitTerminationType", strawberry.lazy('circuits.graphql.types')]]:
+        return self.circuit_terminations.all()
 
 
 @strawberry_django.type(

+ 33 - 56
netbox/dcim/graphql/types.py

@@ -150,9 +150,7 @@ class CableType(NetBoxObjectType):
     filters=ConsolePortFilter
 )
 class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
-
-    def resolve_type(self, info):
-        return self.type or None
+    pass
 
 
 @strawberry_django.type(
@@ -163,9 +161,6 @@ class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin)
 class ConsolePortTemplateType(ComponentTemplateObjectType):
     _name: str
 
-    def resolve_type(self, info):
-        return self.type or None
-
 
 @strawberry_django.type(
     models.ConsoleServerPort,
@@ -174,9 +169,7 @@ class ConsolePortTemplateType(ComponentTemplateObjectType):
     filters=ConsoleServerPortFilter
 )
 class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
-
-    def resolve_type(self, info):
-        return self.type or None
+    pass
 
 
 @strawberry_django.type(
@@ -187,9 +180,6 @@ class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpoint
 class ConsoleServerPortTemplateType(ComponentTemplateObjectType):
     _name: str
 
-    def resolve_type(self, info):
-        return self.type or None
-
 
 @strawberry_django.type(
     models.Device,
@@ -209,12 +199,6 @@ class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBo
     module_bay_count: BigInt
     inventory_item_count: BigInt
 
-    def resolve_face(self, info):
-        return self.face or None
-
-    def resolve_airflow(self, info):
-        return self.airflow or None
-
     @strawberry_django.field
     def devicebays(self) -> List[Annotated["DeviceBayType", strawberry.lazy('dcim.graphql.types')]]:
         return self.device_bays.all()
@@ -366,15 +350,6 @@ class DeviceTypeType(NetBoxObjectType):
     module_bay_template_count: BigInt
     inventory_item_template_count: BigInt
 
-    def resolve_subdevice_role(self, info):
-        return self.subdevice_role or None
-
-    def resolve_airflow(self, info):
-        return self.airflow or None
-
-    def resolve_weight_unit(self, info):
-        return self.weight_unit or None
-
     @strawberry_django.field
     def frontporttemplates(self) -> List[Annotated["FrontPortTemplateType", strawberry.lazy('dcim.graphql.types')]]:
         return self.device_bays.all()
@@ -730,12 +705,7 @@ class PowerFeedType(NetBoxObjectType, CabledObjectMixin, PathEndpointMixin):
     filters=PowerOutletFilter
 )
 class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
-
-    def resolve_feed_leg(self, info):
-        return self.feed_leg or None
-
-    def resolve_type(self, info):
-        return self.type or None
+    pass
 
 
 @strawberry_django.type(
@@ -746,12 +716,6 @@ class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin)
 class PowerOutletTemplateType(ComponentTemplateObjectType):
     _name: str
 
-    def resolve_feed_leg(self, info):
-        return self.feed_leg or None
-
-    def resolve_type(self, info):
-        return self.type or None
-
 
 @strawberry_django.type(
     models.PowerPanel,
@@ -772,8 +736,9 @@ class PowerPanelType(NetBoxObjectType, ContactsMixin):
 )
 class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
 
-    def resolve_type(self, info):
-        return self.type or None
+    @strawberry_django.field
+    def poweroutlets(self) -> List[Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.poweroutlets.all()
 
 
 @strawberry_django.type(
@@ -784,8 +749,9 @@ class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
 class PowerPortTemplateType(ComponentTemplateObjectType):
     _name: str
 
-    def resolve_type(self, info):
-        return self.type or None
+    @strawberry_django.field
+    def poweroutlet_templates(self) -> List[Annotated["PowerOutletTemplateType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.poweroutlet_templates.all()
 
 
 @strawberry_django.type(
@@ -796,15 +762,6 @@ class PowerPortTemplateType(ComponentTemplateObjectType):
 class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
     _name: str
 
-    def resolve_type(self, info):
-        return self.type or None
-
-    def resolve_outer_unit(self, info):
-        return self.outer_unit or None
-
-    def resolve_weight_unit(self, info):
-        return self.weight_unit or None
-
 
 @strawberry_django.type(
     models.RackReservation,
@@ -813,7 +770,7 @@ class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObje
     filters=RackReservationFilter
 )
 class RackReservationType(NetBoxObjectType):
-    pass
+    units: List[int]
 
 
 @strawberry_django.type(
@@ -823,7 +780,11 @@ class RackReservationType(NetBoxObjectType):
     filters=RackRoleFilter
 )
 class RackRoleType(OrganizationalObjectType):
-    pass
+    color: str
+
+    @strawberry_django.field
+    def racks(self) -> List[Annotated["RackType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.racks.all()
 
 
 @strawberry_django.type(
@@ -833,7 +794,11 @@ class RackRoleType(OrganizationalObjectType):
     filters=RearPortFilter
 )
 class RearPortType(ComponentObjectType, CabledObjectMixin):
-    pass
+    color: str
+
+    @strawberry_django.field
+    def frontports(self) -> List[Annotated["FrontPortType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.frontports.all()
 
 
 @strawberry_django.type(
@@ -844,6 +809,11 @@ class RearPortType(ComponentObjectType, CabledObjectMixin):
 )
 class RearPortTemplateType(ComponentTemplateObjectType):
     _name: str
+    color: str
+
+    @strawberry_django.field
+    def frontport_templates(self) -> List[Annotated["FrontPortTemplateType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.frontport_templates.all()
 
 
 @strawberry_django.type(
@@ -885,6 +855,10 @@ class SiteGroupType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
 class VirtualChassisType(NetBoxObjectType):
     member_count: BigInt
 
+    @strawberry_django.field
+    def members(self) -> List[Annotated["DeviceType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.members.all()
+
 
 @strawberry_django.type(
     models.VirtualDeviceContext,
@@ -892,4 +866,7 @@ class VirtualChassisType(NetBoxObjectType):
     filters=VirtualDeviceContextFilter
 )
 class VirtualDeviceContextType(NetBoxObjectType):
-    pass
+
+    @strawberry_django.field
+    def interfaces(self) -> List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.interfaces.all()

+ 7 - 3
netbox/ipam/graphql/types.py

@@ -165,7 +165,7 @@ class IPRangeType(NetBoxObjectType):
     filters=PrefixFilter
 )
 class PrefixType(NetBoxObjectType, BaseIPAddressFamilyType):
-    pass
+    prefix: str
 
 
 @strawberry_django.type(
@@ -202,7 +202,11 @@ class RouteTargetType(NetBoxObjectType):
     filters=ServiceFilter
 )
 class ServiceType(NetBoxObjectType):
-    pass
+    ports: List[int]
+
+    @strawberry_django.field
+    def ipaddresses(self) -> List[Annotated["IPAddressType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.ipaddresses.all()
 
 
 @strawberry_django.type(
@@ -212,7 +216,7 @@ class ServiceType(NetBoxObjectType):
     filters=ServiceTemplateFilter
 )
 class ServiceTemplateType(NetBoxObjectType):
-    pass
+    ports: List[int]
 
 
 @strawberry_django.type(

+ 6 - 0
netbox/users/graphql/types.py

@@ -1,3 +1,5 @@
+from typing import List
+
 import strawberry
 import strawberry_django
 from django.contrib.auth import get_user_model
@@ -36,3 +38,7 @@ class UserType:
     @classmethod
     def get_queryset(cls, queryset, info, **kwargs):
         return RestrictedQuerySet(model=get_user_model()).restrict(info.context.request.user, 'view')
+
+    @strawberry_django.field
+    def groups(self) -> List[GroupType]:
+        return self.groups.all()

+ 8 - 2
netbox/vpn/graphql/types.py

@@ -28,7 +28,10 @@ __all__ = (
     filters=TunnelGroupFilter
 )
 class TunnelGroupType(OrganizationalObjectType):
-    pass
+
+    @strawberry_django.field
+    def tunnels(self) -> List[Annotated["TunnelType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.tunnels.all()
 
 
 @strawberry_django.type(
@@ -46,7 +49,10 @@ class TunnelTerminationType(CustomFieldsMixin, TagsMixin, ObjectType):
     filters=TunnelFilter
 )
 class TunnelType(NetBoxObjectType):
-    pass
+
+    @strawberry_django.field
+    def terminations(self) -> List[Annotated["TunnelTerminationType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.terminations.all()
 
 
 @strawberry_django.type(

+ 6 - 11
netbox/wireless/graphql/types.py

@@ -1,3 +1,5 @@
+from typing import Annotated, List, Union
+
 import strawberry
 import strawberry_django
 
@@ -29,11 +31,9 @@ class WirelessLANGroupType(OrganizationalObjectType):
 )
 class WirelessLANType(NetBoxObjectType):
 
-    def resolve_auth_type(self, info):
-        return self.auth_type or None
-
-    def resolve_auth_cipher(self, info):
-        return self.auth_cipher or None
+    @strawberry_django.field
+    def interfaces(self) -> List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.interfaces.all()
 
 
 @strawberry_django.type(
@@ -42,9 +42,4 @@ class WirelessLANType(NetBoxObjectType):
     filters=WirelessLinkFilter
 )
 class WirelessLinkType(NetBoxObjectType):
-
-    def resolve_auth_type(self, info):
-        return self.auth_type or None
-
-    def resolve_auth_cipher(self, info):
-        return self.auth_cipher or None
+    pass