2022-10-11 09:26:18 -07:00
|
|
|
import graphene
|
|
|
|
from dcim.graphql.types import (
|
|
|
|
InterfaceType,
|
|
|
|
LocationType,
|
|
|
|
RackType,
|
|
|
|
RegionType,
|
|
|
|
SiteGroupType,
|
|
|
|
SiteType,
|
|
|
|
)
|
|
|
|
from dcim.models import Interface, Location, Rack, Region, Site, SiteGroup
|
|
|
|
from ipam.graphql.types import FHRPGroupType, VLANType
|
|
|
|
from ipam.models import VLAN, FHRPGroup
|
|
|
|
from virtualization.graphql.types import ClusterGroupType, ClusterType, VMInterfaceType
|
|
|
|
from virtualization.models import Cluster, ClusterGroup, VMInterface
|
|
|
|
|
|
|
|
|
|
|
|
class IPAddressAssignmentType(graphene.Union):
|
|
|
|
class Meta:
|
|
|
|
types = (
|
|
|
|
InterfaceType,
|
|
|
|
FHRPGroupType,
|
|
|
|
VMInterfaceType,
|
|
|
|
)
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def resolve_type(cls, instance, info):
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is Interface:
|
2022-10-11 09:26:18 -07:00
|
|
|
return InterfaceType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is FHRPGroup:
|
2022-10-11 09:26:18 -07:00
|
|
|
return FHRPGroupType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is VMInterface:
|
2022-10-11 09:26:18 -07:00
|
|
|
return VMInterfaceType
|
|
|
|
|
|
|
|
|
|
|
|
class L2VPNAssignmentType(graphene.Union):
|
|
|
|
class Meta:
|
|
|
|
types = (
|
|
|
|
InterfaceType,
|
|
|
|
VLANType,
|
|
|
|
VMInterfaceType,
|
|
|
|
)
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def resolve_type(cls, instance, info):
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is Interface:
|
2022-10-11 09:26:18 -07:00
|
|
|
return InterfaceType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is VLAN:
|
2022-10-11 09:26:18 -07:00
|
|
|
return VLANType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is VMInterface:
|
2022-10-11 09:26:18 -07:00
|
|
|
return VMInterfaceType
|
|
|
|
|
|
|
|
|
|
|
|
class FHRPGroupInterfaceType(graphene.Union):
|
|
|
|
class Meta:
|
|
|
|
types = (
|
|
|
|
InterfaceType,
|
|
|
|
VMInterfaceType,
|
|
|
|
)
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def resolve_type(cls, instance, info):
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is Interface:
|
2022-10-11 09:26:18 -07:00
|
|
|
return InterfaceType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is VMInterface:
|
2022-10-11 09:26:18 -07:00
|
|
|
return VMInterfaceType
|
|
|
|
|
|
|
|
|
|
|
|
class VLANGroupScopeType(graphene.Union):
|
|
|
|
class Meta:
|
|
|
|
types = (
|
|
|
|
ClusterType,
|
|
|
|
ClusterGroupType,
|
|
|
|
LocationType,
|
|
|
|
RackType,
|
|
|
|
RegionType,
|
|
|
|
SiteType,
|
|
|
|
SiteGroupType,
|
|
|
|
)
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def resolve_type(cls, instance, info):
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is Cluster:
|
2022-10-11 09:26:18 -07:00
|
|
|
return ClusterType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is ClusterGroup:
|
2022-10-11 09:26:18 -07:00
|
|
|
return ClusterGroupType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is Location:
|
2022-10-11 09:26:18 -07:00
|
|
|
return LocationType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is Rack:
|
2022-10-11 09:26:18 -07:00
|
|
|
return RackType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is Region:
|
2022-10-11 09:26:18 -07:00
|
|
|
return RegionType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is Site:
|
2022-10-11 09:26:18 -07:00
|
|
|
return SiteType
|
2023-07-30 13:34:08 -04:00
|
|
|
if type(instance) is SiteGroup:
|
2022-10-11 09:26:18 -07:00
|
|
|
return SiteGroupType
|