From 44f4d60f5d7f74bff95bd33672fb7443cc7a7d54 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 26 Feb 2024 12:57:53 -0800 Subject: [PATCH] 9856 update types --- netbox/extras/graphql/types.py | 8 ++- netbox/tenancy/graphql/types.py | 110 +++++++++++++++++++++++++++++++- 2 files changed, 114 insertions(+), 4 deletions(-) diff --git a/netbox/extras/graphql/types.py b/netbox/extras/graphql/types.py index a66dd2cba..f148a250b 100644 --- a/netbox/extras/graphql/types.py +++ b/netbox/extras/graphql/types.py @@ -9,7 +9,7 @@ import strawberry_django from extras import models from extras.graphql.mixins import CustomFieldsMixin, TagsMixin -from netbox.graphql.types import BaseObjectType, ObjectType, OrganizationalObjectType +from netbox.graphql.types import BaseObjectType, ContentTypeType, ObjectType, OrganizationalObjectType from .filters import * __all__ = ( @@ -200,7 +200,11 @@ class SavedFilterType(ObjectType): filters=TagFilter ) class TagType(ObjectType): - pass + color: str + + @strawberry_django.field + def object_types(self) -> List[ContentTypeType]: + return self.object_types.all() @strawberry_django.type( diff --git a/netbox/tenancy/graphql/types.py b/netbox/tenancy/graphql/types.py index 828a36930..27a260e3d 100644 --- a/netbox/tenancy/graphql/types.py +++ b/netbox/tenancy/graphql/types.py @@ -35,7 +35,102 @@ class ContactAssignmentsMixin: filters=TenantFilter ) class TenantType(NetBoxObjectType): - pass + + @strawberry_django.field + def asns(self) -> List[Annotated["ASNType", strawberry.lazy('ipam.graphql.types')]]: + return self.asns.all() + + @strawberry_django.field + def circuits(self) -> List[Annotated["CircuitType", strawberry.lazy('circuits.graphql.types')]]: + return self.circuits.all() + + @strawberry_django.field + def sites(self) -> List[Annotated["SiteType", strawberry.lazy('dcim.graphql.types')]]: + return self.sites.all() + + @strawberry_django.field + def vlans(self) -> List[Annotated["VLANType", strawberry.lazy('ipam.graphql.types')]]: + return self.vlans.all() + + @strawberry_django.field + def wireless_lans(self) -> List[Annotated["WirelessLANType", strawberry.lazy('wireless.graphql.types')]]: + return self.wireless_lans.all() + + @strawberry_django.field + def route_targets(self) -> List[Annotated["RouteTargetType", strawberry.lazy('ipam.graphql.types')]]: + return self.route_targets.all() + + @strawberry_django.field + def locations(self) -> List[Annotated["LocationType", strawberry.lazy('dcim.graphql.types')]]: + return self.locations.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 rackreservations(self) -> List[Annotated["RackReservationType", strawberry.lazy('dcim.graphql.types')]]: + return self.rackreservations.all() + + @strawberry_django.field + def racks(self) -> List[Annotated["RackType", strawberry.lazy('dcim.graphql.types')]]: + return self.racks.all() + + @strawberry_django.field + def vdcs(self) -> List[Annotated["VirtualDeviceContextType", strawberry.lazy('dcim.graphql.types')]]: + return self.vdcs.all() + + @strawberry_django.field + def prefixes(self) -> List[Annotated["PrefixType", strawberry.lazy('ipam.graphql.types')]]: + return self.prefixes.all() + + @strawberry_django.field + def cables(self) -> List[Annotated["CableType", strawberry.lazy('dcim.graphql.types')]]: + return self.cables.all() + + @strawberry_django.field + def virtual_machines(self) -> List[Annotated["VirtualMachineType", strawberry.lazy('virtualization.graphql.types')]]: + return self.virtual_machines.all() + + @strawberry_django.field + def vrfs(self) -> List[Annotated["VRFType", strawberry.lazy('ipam.graphql.types')]]: + return self.vrfs.all() + + @strawberry_django.field + def asn_ranges(self) -> List[Annotated["ASNRangeType", strawberry.lazy('ipam.graphql.types')]]: + return self.asn_ranges.all() + + @strawberry_django.field + def wireless_links(self) -> List[Annotated["WirelessLinkType", strawberry.lazy('wireless.graphql.types')]]: + return self.wireless_links.all() + + @strawberry_django.field + def aggregates(self) -> List[Annotated["AggregateType", strawberry.lazy('ipam.graphql.types')]]: + return self.aggregates.all() + + @strawberry_django.field + def power_feeds(self) -> List[Annotated["PowerFeedType", strawberry.lazy('dcim.graphql.types')]]: + return self.power_feeds.all() + + @strawberry_django.field + def devices(self) -> List[Annotated["DeviceType", strawberry.lazy('dcim.graphql.types')]]: + return self.devices.all() + + @strawberry_django.field + def tunnels(self) -> List[Annotated["TunnelType", strawberry.lazy('vpn.graphql.types')]]: + return self.tunnels.all() + + @strawberry_django.field + def ip_addresses(self) -> List[Annotated["IPAddressType", strawberry.lazy('ipam.graphql.types')]]: + return self.ip_addresses.all() + + @strawberry_django.field + def clusters(self) -> List[Annotated["ClusterType", strawberry.lazy('virtualization.graphql.types')]]: + return self.clusters.all() + + @strawberry_django.field + def l2vpns(self) -> List[Annotated["L2VPNType", strawberry.lazy('vpn.graphql.types')]]: + return self.l2vpns.all() @strawberry_django.type( @@ -45,7 +140,18 @@ class TenantType(NetBoxObjectType): filters=TenantGroupFilter ) class TenantGroupType(OrganizationalObjectType): - pass + + @strawberry_django.field + def parent(self) -> Annotated["TenantGroupType", strawberry.lazy('tenancy.graphql.types')]: + return self.parent + + @strawberry_django.field + def tenants(self) -> List[TenantType]: + return self.tenants.all() + + @strawberry_django.field + def children(self) -> List[Annotated["TenantGroupType", strawberry.lazy('tenancy.graphql.types')]]: + return self.children.all() #