| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- import graphene
- from ipam import filtersets, models
- from .mixins import IPAddressesMixin
- from netbox.graphql.scalars import BigInt
- from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, NetBoxObjectType
- __all__ = (
- 'ASNType',
- 'ASNRangeType',
- 'AggregateType',
- 'FHRPGroupType',
- 'FHRPGroupAssignmentType',
- 'IPAddressType',
- 'IPRangeType',
- 'PrefixType',
- 'RIRType',
- 'RoleType',
- 'RouteTargetType',
- 'ServiceType',
- 'ServiceTemplateType',
- 'VLANType',
- 'VLANGroupType',
- 'VRFType',
- )
- class IPAddressFamilyType(graphene.ObjectType):
- value = graphene.Int()
- label = graphene.String()
- def __init__(self, value):
- self.value = value
- self.label = f'IPv{value}'
- class BaseIPAddressFamilyType:
- """
- Base type for models that need to expose their IPAddress family type.
- """
- family = graphene.Field(IPAddressFamilyType)
- def resolve_family(self, _):
- # Note that self, is an instance of models.IPAddress
- # thus resolves to the address family value.
- return IPAddressFamilyType(self.family)
- class ASNType(NetBoxObjectType):
- asn = graphene.Field(BigInt)
- class Meta:
- model = models.ASN
- fields = '__all__'
- filterset_class = filtersets.ASNFilterSet
- class ASNRangeType(NetBoxObjectType):
- class Meta:
- model = models.ASNRange
- fields = '__all__'
- filterset_class = filtersets.ASNRangeFilterSet
- class AggregateType(NetBoxObjectType, BaseIPAddressFamilyType):
- class Meta:
- model = models.Aggregate
- fields = '__all__'
- filterset_class = filtersets.AggregateFilterSet
- class FHRPGroupType(NetBoxObjectType, IPAddressesMixin):
- class Meta:
- model = models.FHRPGroup
- fields = '__all__'
- filterset_class = filtersets.FHRPGroupFilterSet
- def resolve_auth_type(self, info):
- return self.auth_type or None
- class FHRPGroupAssignmentType(BaseObjectType):
- interface = graphene.Field('ipam.graphql.gfk_mixins.FHRPGroupInterfaceType')
- class Meta:
- model = models.FHRPGroupAssignment
- exclude = ('interface_type', 'interface_id')
- filterset_class = filtersets.FHRPGroupAssignmentFilterSet
- class IPAddressType(NetBoxObjectType, BaseIPAddressFamilyType):
- assigned_object = graphene.Field('ipam.graphql.gfk_mixins.IPAddressAssignmentType')
- class Meta:
- model = models.IPAddress
- exclude = ('assigned_object_type', 'assigned_object_id')
- filterset_class = filtersets.IPAddressFilterSet
- def resolve_role(self, info):
- return self.role or None
- class IPRangeType(NetBoxObjectType):
- class Meta:
- model = models.IPRange
- fields = '__all__'
- filterset_class = filtersets.IPRangeFilterSet
- def resolve_role(self, info):
- return self.role or None
- class PrefixType(NetBoxObjectType, BaseIPAddressFamilyType):
- class Meta:
- model = models.Prefix
- fields = '__all__'
- filterset_class = filtersets.PrefixFilterSet
- class RIRType(OrganizationalObjectType):
- class Meta:
- model = models.RIR
- fields = '__all__'
- filterset_class = filtersets.RIRFilterSet
- class RoleType(OrganizationalObjectType):
- class Meta:
- model = models.Role
- fields = '__all__'
- filterset_class = filtersets.RoleFilterSet
- class RouteTargetType(NetBoxObjectType):
- class Meta:
- model = models.RouteTarget
- fields = '__all__'
- filterset_class = filtersets.RouteTargetFilterSet
- class ServiceType(NetBoxObjectType):
- class Meta:
- model = models.Service
- fields = '__all__'
- filterset_class = filtersets.ServiceFilterSet
- class ServiceTemplateType(NetBoxObjectType):
- class Meta:
- model = models.ServiceTemplate
- fields = '__all__'
- filterset_class = filtersets.ServiceTemplateFilterSet
- class VLANType(NetBoxObjectType):
- class Meta:
- model = models.VLAN
- fields = '__all__'
- filterset_class = filtersets.VLANFilterSet
- class VLANGroupType(OrganizationalObjectType):
- scope = graphene.Field('ipam.graphql.gfk_mixins.VLANGroupScopeType')
- class Meta:
- model = models.VLANGroup
- exclude = ('scope_type', 'scope_id')
- filterset_class = filtersets.VLANGroupFilterSet
- class VRFType(NetBoxObjectType):
- class Meta:
- model = models.VRF
- fields = '__all__'
- filterset_class = filtersets.VRFFilterSet
|