Browse Source

9856 update types

Arthur 2 years ago
parent
commit
ce003b2b1c
3 changed files with 114 additions and 44 deletions
  1. 69 32
      netbox/dcim/graphql/types.py
  2. 25 8
      netbox/ipam/graphql/types.py
  3. 20 4
      netbox/vpn/graphql/types.py

+ 69 - 32
netbox/dcim/graphql/types.py

@@ -237,47 +237,47 @@ class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBo
 
     @strawberry_django.field
     def interfaces(self) -> List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.interaces.all()
 
     @strawberry_django.field
     def rearports(self) -> List[Annotated["RearPortType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.rearports.all()
 
     @strawberry_django.field
     def consoleports(self) -> List[Annotated["ConsolePortType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.consoleports.all()
 
     @strawberry_django.field
     def powerports(self) -> List[Annotated["PowerPortType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.powerports.all()
 
     @strawberry_django.field
     def cabletermination_set(self) -> List[Annotated["CableTerminationType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.cabletermination_set.all()
 
     @strawberry_django.field
     def consoleserverports(self) -> List[Annotated["ConsoleServerPortType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.consoleserverports.all()
 
     @strawberry_django.field
     def poweroutlets(self) -> List[Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.poweroutlets.all()
 
     @strawberry_django.field
     def frontports(self) -> List[Annotated["FrontPortType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.frontports.all()
 
     @strawberry_django.field
     def modulebays(self) -> List[Annotated["ModuleBayType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.modulebays.all()
 
     @strawberry_django.field
     def services(self) -> List[Annotated["ServiceType", strawberry.lazy('ipam.graphql.types')]]:
-        return self.clusters.all()
+        return self.services.all()
 
     @strawberry_django.field
     def inventoryitems(self) -> List[Annotated["InventoryItemType", strawberry.lazy('dcim.graphql.types')]]:
-        return self.clusters.all()
+        return self.inventoryitems.all()
 
     @strawberry_django.field
     def vdcs(self) -> List[Annotated["VirtualDeviceContextType", strawberry.lazy('dcim.graphql.types')]]:
@@ -310,6 +310,26 @@ class DeviceBayTemplateType(ComponentTemplateObjectType):
 class InventoryItemTemplateType(ComponentTemplateObjectType):
     _name: str
 
+    @strawberry_django.field
+    def parent(self) -> List[Annotated["InventoryItemTemplateType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.parent
+
+    @strawberry_django.field
+    def child_items(self) -> List[Annotated["InventoryItemTemplateType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.child_items.all()
+
+    @strawberry_django.field
+    def component(self) -> List[Annotated[Union[
+        Annotated["ConsolePortType", strawberry.lazy('dcim.graphql.types')],
+        Annotated["ConsoleServerPortType", strawberry.lazy('dcim.graphql.types')],
+        Annotated["FrontPortType", strawberry.lazy('dcim.graphql.types')],
+        Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')],
+        Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')],
+        Annotated["PowerPortType", strawberry.lazy('dcim.graphql.types')],
+        Annotated["RearPortType", strawberry.lazy('dcim.graphql.types')],
+    ], strawberry.union("InventoryItemComponentType")]]:
+        return self.component
+
 
 @strawberry_django.type(
     models.DeviceRole,
@@ -426,21 +446,36 @@ class FrontPortTemplateType(ComponentTemplateObjectType):
     filters=InterfaceFilter
 )
 class InterfaceType(IPAddressesMixin, ComponentObjectType, CabledObjectMixin, PathEndpointMixin):
+    mac_address: str
+    wwn: str
+
+    @strawberry_django.field
+    def vdcs(self) -> List[Annotated["VirtualDeviceContextType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.vdcs.all()
+
+    @strawberry_django.field
+    def tagged_vlans(self) -> List[Annotated["VLANType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.tagged_vlans.all()
 
-    def resolve_poe_mode(self, info):
-        return self.poe_mode or None
+    @strawberry_django.field
+    def bridge_interfaces(self) -> List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.bridge_interfaces.all()
 
-    def resolve_poe_type(self, info):
-        return self.poe_type or None
+    @strawberry_django.field
+    def wireless_lans(self) -> List[Annotated["WirelessLANType", strawberry.lazy('wireless.graphql.types')]]:
+        return self.wireless_lans.all()
 
-    def resolve_mode(self, info):
-        return self.mode or None
+    @strawberry_django.field
+    def member_interfaces(self) -> List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.member_interfaces.all()
 
-    def resolve_rf_role(self, info):
-        return self.rf_role or None
+    @strawberry_django.field
+    def child_interfaces(self) -> List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.child_interfaces.all()
 
-    def resolve_rf_channel(self, info):
-        return self.rf_channel or None
+    @strawberry_django.field
+    def ip_addresses(self) -> List[Annotated["IPAddressType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.ip_addresses.all()
 
 
 @strawberry_django.type(
@@ -451,14 +486,9 @@ class InterfaceType(IPAddressesMixin, ComponentObjectType, CabledObjectMixin, Pa
 class InterfaceTemplateType(ComponentTemplateObjectType):
     _name: str
 
-    def resolve_poe_mode(self, info):
-        return self.poe_mode or None
-
-    def resolve_poe_type(self, info):
-        return self.poe_type or None
-
-    def resolve_rf_role(self, info):
-        return self.rf_role or None
+    @strawberry_django.field
+    def bridge_interfaces(self) -> List[Annotated["InterfaceTemplateType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.bridge_interfaces.all()
 
 
 @strawberry_django.type(
@@ -472,12 +502,19 @@ class InventoryItemType(ComponentObjectType):
 
 @strawberry_django.type(
     models.InventoryItemRole,
-    # fields='__all__',
-    exclude=('color',),  # bug - temp
+    fields='__all__',
     filters=InventoryItemRoleFilter
 )
 class InventoryItemRoleType(OrganizationalObjectType):
-    pass
+    color: str
+
+    @strawberry_django.field
+    def inventory_items(self) -> List[Annotated["InventoryItemType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.inventory_items.all()
+
+    @strawberry_django.field
+    def inventory_item_templates(self) -> List[Annotated["InventoryItemTemplateType", strawberry.lazy('dcim.graphql.types')]]:
+        return self.inventory_item_templates.all()
 
 
 @strawberry_django.type(

+ 25 - 8
netbox/ipam/graphql/types.py

@@ -97,8 +97,9 @@ class AggregateType(NetBoxObjectType, BaseIPAddressFamilyType):
 )
 class FHRPGroupType(NetBoxObjectType):
 
-    def resolve_auth_type(self, info):
-        return self.auth_type or None
+    @strawberry_django.field
+    def fhrpgroupassignment_set(self) -> List[Annotated["FHRPGroupAssignmentType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.fhrpgroupassignment_set.all()
 
 
 @strawberry_django.type(
@@ -123,10 +124,27 @@ class FHRPGroupAssignmentType(BaseObjectType):
     filters=IPAddressFilter
 )
 class IPAddressType(NetBoxObjectType, BaseIPAddressFamilyType):
-    # assigned_object = graphene.Field('ipam.graphql.gfk_mixins.IPAddressAssignmentType')
+    address: str
+
+    @strawberry_django.field
+    def nat_outside(self) -> Annotated["IPAddressType", strawberry.lazy('ipam.graphql.types')]:
+        return self.nat_outside
 
-    def resolve_role(self, info):
-        return self.role or None
+    @strawberry_django.field
+    def tunnel_terminations(self) -> List[Annotated["TunnelTerminationType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.tunnel_terminations.all()
+
+    @strawberry_django.field
+    def services(self) -> List[Annotated["ServiceType", strawberry.lazy('ipam.graphql.types')]]:
+        return self.services.all()
+
+    @strawberry_django.field
+    def assigned_object(self) -> Annotated[Union[
+        Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')],
+        Annotated["FHRPGroupType", strawberry.lazy('ipam.graphql.types')],
+        Annotated["VMInterfaceType", strawberry.lazy('virtualization.graphql.types')],
+    ], strawberry.union("IPAddressAssignmentType")]:
+        return self.assigned_object
 
 
 @strawberry_django.type(
@@ -136,9 +154,8 @@ class IPAddressType(NetBoxObjectType, BaseIPAddressFamilyType):
     filters=IPRangeFilter
 )
 class IPRangeType(NetBoxObjectType):
-
-    def resolve_role(self, info):
-        return self.role or None
+    start_address: str
+    end_address: str
 
 
 @strawberry_django.type(

+ 20 - 4
netbox/vpn/graphql/types.py

@@ -55,7 +55,10 @@ class TunnelType(NetBoxObjectType):
     filters=IKEProposalFilter
 )
 class IKEProposalType(OrganizationalObjectType):
-    pass
+
+    @strawberry_django.field
+    def ike_policies(self) -> List[Annotated["IKEPolicyType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.ike_policies.all()
 
 
 @strawberry_django.type(
@@ -80,7 +83,10 @@ class IKEPolicyType(OrganizationalObjectType):
     filters=IPSecProposalFilter
 )
 class IPSecProposalType(OrganizationalObjectType):
-    pass
+
+    @strawberry_django.field
+    def ipsec_policies(self) -> List[Annotated["IPSecPolicyType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.ipsec_policies.all()
 
 
 @strawberry_django.type(
@@ -89,7 +95,14 @@ class IPSecProposalType(OrganizationalObjectType):
     filters=IPSecPolicyFilter
 )
 class IPSecPolicyType(OrganizationalObjectType):
-    pass
+
+    @strawberry_django.field
+    def proposals(self) -> List[Annotated["IKEProposalType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.proposals.all()
+
+    @strawberry_django.field
+    def ipsec_profiles(self) -> List[Annotated["IPSecProposalType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.ipsec_profiles.all()
 
 
 @strawberry_django.type(
@@ -98,7 +111,10 @@ class IPSecPolicyType(OrganizationalObjectType):
     filters=IPSecProfileFilter
 )
 class IPSecProfileType(OrganizationalObjectType):
-    pass
+
+    @strawberry_django.field
+    def tunnels(self) -> List[Annotated["TunnelType", strawberry.lazy('vpn.graphql.types')]]:
+        return self.tunnels.all()
 
 
 @strawberry_django.type(