9817 add graphql ipaddressassignment assigned_object

This commit is contained in:
Arthur 2022-10-05 16:52:28 -07:00
parent dc7e793c1e
commit 61b2274504
2 changed files with 22 additions and 3 deletions

View File

@ -1,12 +1,30 @@
import graphene import graphene
from dcim.graphql.types import InterfaceType from dcim.graphql.types import InterfaceType
from dcim.models import Interface from dcim.models import Interface
from ipam.graphql.types import VLANType from ipam.graphql.types import FHRPGroupType, VLANType
from ipam.models import VLAN from ipam.models import FHRPGroup, VLAN
from virtualization.graphql.types import VMInterfaceType from virtualization.graphql.types import VMInterfaceType
from virtualization.models import VMInterface from virtualization.models import VMInterface
class IPAddressAssignmentType(graphene.Union):
class Meta:
types = (
InterfaceType,
FHRPGroupType,
VMInterfaceType,
)
@classmethod
def resolve_type(cls, instance, info):
if type(instance) == Interface:
return InterfaceType
if type(instance) == FHRPGroup:
return FHRPGroupType
if type(instance) == VMInterface:
return VMInterfaceType
class L2VPNAssignmentType(graphene.Union): class L2VPNAssignmentType(graphene.Union):
class Meta: class Meta:
types = ( types = (

View File

@ -63,10 +63,11 @@ class FHRPGroupAssignmentType(BaseObjectType):
class IPAddressType(NetBoxObjectType): class IPAddressType(NetBoxObjectType):
assigned_object = graphene.Field('ipam.graphql.gfk_mixins.IPAddressAssignmentType')
class Meta: class Meta:
model = models.IPAddress model = models.IPAddress
fields = '__all__' exclude = ('assigned_object_type', 'assigned_object_id')
filterset_class = filtersets.IPAddressFilterSet filterset_class = filtersets.IPAddressFilterSet
def resolve_role(self, info): def resolve_role(self, info):