Arthur 2 лет назад
Родитель
Сommit
4d0d19bb76
2 измененных файлов с 76 добавлено и 4 удалено
  1. 36 1
      netbox/dcim/graphql/types.py
  2. 40 3
      netbox/ipam/graphql/types.py

+ 36 - 1
netbox/dcim/graphql/types.py

@@ -762,6 +762,26 @@ class PowerPortTemplateType(ComponentTemplateObjectType):
 class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
 class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType):
     _name: str
     _name: str
 
 
+    @strawberry_django.field
+    def reservations(self) -> List[Annotated["RackReservationType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.reservations.all()
+
+    @strawberry_django.field
+    def devices(self) -> List[Annotated["DeviceType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.devices.all()
+
+    @strawberry_django.field
+    def powerfeed_set(self) -> List[Annotated["PowerFeedType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.powerfeed_set.all()
+
+    @strawberry_django.field
+    def cabletermination_set(self) -> List[Annotated["CableTerminationType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.cabletermination_set.all()
+
+    @strawberry_django.field
+    def vlan_groups(self) -> List[Annotated["VLANGroupType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.vlan_groups.all()
+
 
 
 @strawberry_django.type(
 @strawberry_django.type(
     models.RackReservation,
     models.RackReservation,
@@ -823,7 +843,22 @@ class RearPortTemplateType(ComponentTemplateObjectType):
     filters=RegionFilter
     filters=RegionFilter
 )
 )
 class RegionType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
 class RegionType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType):
-    pass
+
+    @strawberry_django.field
+    def parent(self) -> Annotated["RegionType", strawberry.lazy('dcim.graphql.types')]:
+        return self.region
+
+    @strawberry_django.field
+    def sites(self) -> List[Annotated["SiteType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.sites.all()
+
+    @strawberry_django.field
+    def children(self) -> List[Annotated["RegionType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.children.all()
+
+    @strawberry_django.field
+    def vlan_groups(self) -> List[Annotated["VLANGroupType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.vlan_groups.all()
 
 
 
 
 @strawberry_django.type(
 @strawberry_django.type(

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

@@ -174,7 +174,18 @@ class PrefixType(NetBoxObjectType, BaseIPAddressFamilyType):
     filters=RIRFilter
     filters=RIRFilter
 )
 )
 class RIRType(OrganizationalObjectType):
 class RIRType(OrganizationalObjectType):
-    pass
+
+    @strawberry_django.field
+    def asn_ranges(self) -> List[Annotated["ASNRangeType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.asn_ranges.all()
+
+    @strawberry_django.field
+    def asns(self) -> List[Annotated["ASNType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.asns.all()
+
+    @strawberry_django.field
+    def aggregates(self) -> List[Annotated["AggregateType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.aggregates.all()
 
 
 
 
 @strawberry_django.type(
 @strawberry_django.type(
@@ -183,7 +194,18 @@ class RIRType(OrganizationalObjectType):
     filters=RoleFilter
     filters=RoleFilter
 )
 )
 class RoleType(OrganizationalObjectType):
 class RoleType(OrganizationalObjectType):
-    pass
+
+    @strawberry_django.field
+    def prefixes(self) -> List[Annotated["PrefixType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.prefixes.all()
+
+    @strawberry_django.field
+    def ip_ranges(self) -> List[Annotated["IPRangeType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.ip_ranges.all()
+
+    @strawberry_django.field
+    def vlans(self) -> List[Annotated["VLANType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.vlans.all()
 
 
 
 
 @strawberry_django.type(
 @strawberry_django.type(
@@ -192,7 +214,22 @@ class RoleType(OrganizationalObjectType):
     filters=RouteTargetFilter
     filters=RouteTargetFilter
 )
 )
 class RouteTargetType(NetBoxObjectType):
 class RouteTargetType(NetBoxObjectType):
-    pass
+
+    @strawberry_django.field
+    def exporting_l2vpns(self) -> List[Annotated["L2VPNType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.exporting_l2vpns.all()
+
+    @strawberry_django.field
+    def exporting_vrfs(self) -> List[Annotated["VRFType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.exporting_vrfs.all()
+
+    @strawberry_django.field
+    def importing_vrfs(self) -> List[Annotated["VRFType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.importing_vrfs.all()
+
+    @strawberry_django.field
+    def importing_l2vpns(self) -> List[Annotated["L2VPNType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.importing_l2vpns.all()
 
 
 
 
 @strawberry_django.type(
 @strawberry_django.type(