1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

9856 ipam and tenant schema

This commit is contained in:
Arthur
2024-02-07 15:43:29 -08:00
parent ed1e1ae939
commit d3fc026b5d
7 changed files with 239 additions and 141 deletions

View File

@@ -0,0 +1,105 @@
import strawberry
import strawberry_django
from strawberry import auto
from ipam import models, filtersets
from netbox.graphql import filters
__all__ = (
'ASNFilter',
'ASNRangeFilter',
'AggregateFilter',
'FHRPGroupFilter',
'FHRPGroupAssignmentFilter',
'IPAddressFilter',
'IPRangeFilter',
'PrefixFilter',
'RIRFilter',
'RoleFilter',
'RouteTargetFilter',
'ServiceFilter',
'ServiceTemplateFilter',
'VLANFilter',
'VLANGroupFilter',
'VRFFilter',
)
@strawberry_django.filter(models.ASN, lookups=True)
class ASNFilter(filtersets.ASNFilterSet):
id: auto
@strawberry_django.filter(models.ASNRange, lookups=True)
class ASNRangeFilter(filtersets.ASNRangeFilterSet):
id: auto
@strawberry_django.filter(models.Aggregate, lookups=True)
class AggregateFilter(filtersets.AggregateFilterSet):
id: auto
@strawberry_django.filter(models.FHRPGroup, lookups=True)
class FHRPGroupFilter(filtersets.FHRPGroupFilterSet):
id: auto
@strawberry_django.filter(models.FHRPGroupAssignment, lookups=True)
class FHRPGroupAssignmentFilter(filtersets.FHRPGroupAssignmentFilterSet):
id: auto
@strawberry_django.filter(models.IPAddress, lookups=True)
class IPAddressFilter(filtersets.IPAddressFilterSet):
id: auto
@strawberry_django.filter(models.IPRange, lookups=True)
class IPRangeFilter(filtersets.IPRangeFilterSet):
id: auto
@strawberry_django.filter(models.Prefix, lookups=True)
class PrefixFilter(filtersets.PrefixFilterSet):
id: auto
@strawberry_django.filter(models.RIR, lookups=True)
class RIRFilter(filtersets.RIRFilterSet):
id: auto
@strawberry_django.filter(models.Role, lookups=True)
class RoleFilter(filtersets.RoleFilterSet):
id: auto
@strawberry_django.filter(models.RouteTarget, lookups=True)
class RouteTargetFilter(filtersets.RouteTargetFilterSet):
id: auto
@strawberry_django.filter(models.Service, lookups=True)
class ServiceFilter(filtersets.ServiceFilterSet):
id: auto
@strawberry_django.filter(models.ServiceTemplate, lookups=True)
class ServiceTemplateFilter(filtersets.ServiceTemplateFilterSet):
id: auto
@strawberry_django.filter(models.VLAN, lookups=True)
class VLANFilter(filtersets.VLANFilterSet):
id: auto
@strawberry_django.filter(models.VLANGroup, lookups=True)
class VLANGroupFilter(filtersets.VLANGroupFilterSet):
id: auto
@strawberry_django.filter(models.VRF, lookups=True)
class VRFFilter(filtersets.VRFFilterSet):
id: auto

View File

@@ -1,104 +1,57 @@
import graphene
from typing import List
import strawberry
import strawberry_django
from ipam import models
from netbox.graphql.fields import ObjectField, ObjectListField
from utilities.graphql_optimizer import gql_query_optimizer
from .types import *
class IPAMQuery(graphene.ObjectType):
asn = ObjectField(ASNType)
asn_list = ObjectListField(ASNType)
@strawberry.type
class IPAMQuery:
asn: ASNType = strawberry_django.field()
asn_list: List[ASNType] = strawberry_django.field()
def resolve_asn_list(root, info, **kwargs):
return gql_query_optimizer(models.ASN.objects.all(), info)
asn_range: ASNRangeType = strawberry_django.field()
asn_range_list: List[ASNRangeType] = strawberry_django.field()
asn_range = ObjectField(ASNRangeType)
asn_range_list = ObjectListField(ASNRangeType)
aggregate: AggregateType = strawberry_django.field()
aggregate_list: List[AggregateType] = strawberry_django.field()
def resolve_asn_range_list(root, info, **kwargs):
return gql_query_optimizer(models.ASNRange.objects.all(), info)
ip_address: IPAddressType = strawberry_django.field()
ip_address_list: List[IPAddressType] = strawberry_django.field()
aggregate = ObjectField(AggregateType)
aggregate_list = ObjectListField(AggregateType)
ip_range: IPRangeType = strawberry_django.field()
ip_range_list: List[IPRangeType] = strawberry_django.field()
def resolve_aggregate_list(root, info, **kwargs):
return gql_query_optimizer(models.Aggregate.objects.all(), info)
prefix: PrefixType = strawberry_django.field()
prefix_list: List[PrefixType] = strawberry_django.field()
ip_address = ObjectField(IPAddressType)
ip_address_list = ObjectListField(IPAddressType)
rir: RIRType = strawberry_django.field()
rir_list: List[RIRType] = strawberry_django.field()
def resolve_ip_address_list(root, info, **kwargs):
return gql_query_optimizer(models.IPAddress.objects.all(), info)
role: RoleType = strawberry_django.field()
role_list: List[RoleType] = strawberry_django.field()
ip_range = ObjectField(IPRangeType)
ip_range_list = ObjectListField(IPRangeType)
route_target: RouteTargetType = strawberry_django.field()
route_target_list: List[RouteTargetType] = strawberry_django.field()
def resolve_ip_range_list(root, info, **kwargs):
return gql_query_optimizer(models.IPRange.objects.all(), info)
service: ServiceType = strawberry_django.field()
service_list: List[ServiceType] = strawberry_django.field()
prefix = ObjectField(PrefixType)
prefix_list = ObjectListField(PrefixType)
service_template: ServiceTemplateType = strawberry_django.field()
service_template_list: List[ServiceTemplateType] = strawberry_django.field()
def resolve_prefix_list(root, info, **kwargs):
return gql_query_optimizer(models.Prefix.objects.all(), info)
fhrp_group: FHRPGroupType = strawberry_django.field()
fhrp_group_list: List[FHRPGroupType] = strawberry_django.field()
rir = ObjectField(RIRType)
rir_list = ObjectListField(RIRType)
fhrp_group_assignment: FHRPGroupAssignmentType = strawberry_django.field()
fhrp_group_assignment_list: List[FHRPGroupAssignmentType] = strawberry_django.field()
def resolve_rir_list(root, info, **kwargs):
return gql_query_optimizer(models.RIR.objects.all(), info)
vlan: VLANType = strawberry_django.field()
vlan_list: List[VLANType] = strawberry_django.field()
role = ObjectField(RoleType)
role_list = ObjectListField(RoleType)
vlan_group: VLANGroupType = strawberry_django.field()
vlan_group_list: List[VLANGroupType] = strawberry_django.field()
def resolve_role_list(root, info, **kwargs):
return gql_query_optimizer(models.Role.objects.all(), info)
route_target = ObjectField(RouteTargetType)
route_target_list = ObjectListField(RouteTargetType)
def resolve_route_target_list(root, info, **kwargs):
return gql_query_optimizer(models.RouteTarget.objects.all(), info)
service = ObjectField(ServiceType)
service_list = ObjectListField(ServiceType)
def resolve_service_list(root, info, **kwargs):
return gql_query_optimizer(models.Service.objects.all(), info)
service_template = ObjectField(ServiceTemplateType)
service_template_list = ObjectListField(ServiceTemplateType)
def resolve_service_template_list(root, info, **kwargs):
return gql_query_optimizer(models.ServiceTemplate.objects.all(), info)
fhrp_group = ObjectField(FHRPGroupType)
fhrp_group_list = ObjectListField(FHRPGroupType)
def resolve_fhrp_group_list(root, info, **kwargs):
return gql_query_optimizer(models.FHRPGroup.objects.all(), info)
fhrp_group_assignment = ObjectField(FHRPGroupAssignmentType)
fhrp_group_assignment_list = ObjectListField(FHRPGroupAssignmentType)
def resolve_fhrp_group_assignment_list(root, info, **kwargs):
return gql_query_optimizer(models.FHRPGroupAssignment.objects.all(), info)
vlan = ObjectField(VLANType)
vlan_list = ObjectListField(VLANType)
def resolve_vlan_list(root, info, **kwargs):
return gql_query_optimizer(models.VLAN.objects.all(), info)
vlan_group = ObjectField(VLANGroupType)
vlan_group_list = ObjectListField(VLANGroupType)
def resolve_vlan_group_list(root, info, **kwargs):
return gql_query_optimizer(models.VLANGroup.objects.all(), info)
vrf = ObjectField(VRFType)
vrf_list = ObjectListField(VRFType)
def resolve_vrf_list(root, info, **kwargs):
return gql_query_optimizer(models.VRF.objects.all(), info)
vrf: VRFType = strawberry_django.field()
vrf_list: List[VRFType] = strawberry_django.field()

View File

@@ -26,7 +26,7 @@ __all__ = (
)
class IPAddressFamilyType(graphene.ObjectType):
class IPAddressFamilyType:
# value = graphene.Int()
# label = graphene.String()
@@ -50,8 +50,9 @@ class BaseIPAddressFamilyType:
@strawberry_django.type(
models.ASN,
fields='__all__',
filters=ProviderFilter
# fields='__all__',
exclude=('asn',), # bug - temp
filters=ASNFilter
)
class ASNType(NetBoxObjectType):
# asn = graphene.Field(BigInt)
@@ -60,7 +61,8 @@ class ASNType(NetBoxObjectType):
@strawberry_django.type(
models.ASNRange,
fields='__all__',
# fields='__all__',
exclude=('start', 'end',), # bug - temp
filters=ASNRangeFilter
)
class ASNRangeType(NetBoxObjectType):
@@ -69,7 +71,8 @@ class ASNRangeType(NetBoxObjectType):
@strawberry_django.type(
models.Aggregate,
fields='__all__',
# fields='__all__',
exclude=('prefix',), # bug - temp
filters=AggregateFilter
)
class AggregateType(NetBoxObjectType, BaseIPAddressFamilyType):
@@ -99,7 +102,7 @@ class FHRPGroupAssignmentType(BaseObjectType):
@strawberry_django.type(
models.IPAddress,
exclude=('assigned_object_type', 'assigned_object_id'),
exclude=('assigned_object_type', 'assigned_object_id', 'address'),
filters=IPAddressFilter
)
class IPAddressType(NetBoxObjectType, BaseIPAddressFamilyType):
@@ -111,7 +114,8 @@ class IPAddressType(NetBoxObjectType, BaseIPAddressFamilyType):
@strawberry_django.type(
models.IPRange,
fields='__all__',
# fields='__all__',
exclude=('start_address', 'end_address',), # bug - temp
filters=IPRangeFilter
)
class IPRangeType(NetBoxObjectType):
@@ -122,7 +126,8 @@ class IPRangeType(NetBoxObjectType):
@strawberry_django.type(
models.Prefix,
fields='__all__',
# fields='__all__',
exclude=('prefix',), # bug - temp
filters=PrefixFilter
)
class PrefixType(NetBoxObjectType, BaseIPAddressFamilyType):
@@ -158,7 +163,8 @@ class RouteTargetType(NetBoxObjectType):
@strawberry_django.type(
models.Service,
fields='__all__',
# fields='__all__',
exclude=('ports',), # bug - temp
filters=ServiceFilter
)
class ServiceType(NetBoxObjectType):
@@ -167,7 +173,8 @@ class ServiceType(NetBoxObjectType):
@strawberry_django.type(
models.ServiceTemplate,
fields='__all__',
# fields='__all__',
exclude=('ports',), # bug - temp
filters=ServiceTemplateFilter
)
class ServiceTemplateType(NetBoxObjectType):