types.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. import graphene
  2. from extras.graphql.mixins import ContactsMixin
  3. from ipam import filtersets, models
  4. from netbox.graphql.scalars import BigInt
  5. from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, NetBoxObjectType
  6. __all__ = (
  7. 'ASNType',
  8. 'ASNRangeType',
  9. 'AggregateType',
  10. 'FHRPGroupType',
  11. 'FHRPGroupAssignmentType',
  12. 'IPAddressType',
  13. 'IPRangeType',
  14. 'L2VPNType',
  15. 'L2VPNTerminationType',
  16. 'PrefixType',
  17. 'RIRType',
  18. 'RoleType',
  19. 'RouteTargetType',
  20. 'ServiceType',
  21. 'ServiceTemplateType',
  22. 'VLANType',
  23. 'VLANGroupType',
  24. 'VRFType',
  25. )
  26. class ASNType(NetBoxObjectType):
  27. asn = graphene.Field(BigInt)
  28. class Meta:
  29. model = models.ASN
  30. fields = '__all__'
  31. filterset_class = filtersets.ASNFilterSet
  32. class ASNRangeType(NetBoxObjectType):
  33. class Meta:
  34. model = models.ASNRange
  35. fields = '__all__'
  36. filterset_class = filtersets.ASNRangeFilterSet
  37. class AggregateType(NetBoxObjectType):
  38. class Meta:
  39. model = models.Aggregate
  40. fields = '__all__'
  41. filterset_class = filtersets.AggregateFilterSet
  42. class FHRPGroupType(NetBoxObjectType):
  43. class Meta:
  44. model = models.FHRPGroup
  45. fields = '__all__'
  46. filterset_class = filtersets.FHRPGroupFilterSet
  47. def resolve_auth_type(self, info):
  48. return self.auth_type or None
  49. class FHRPGroupAssignmentType(BaseObjectType):
  50. interface = graphene.Field('ipam.graphql.gfk_mixins.FHRPGroupInterfaceType')
  51. class Meta:
  52. model = models.FHRPGroupAssignment
  53. exclude = ('interface_type', 'interface_id')
  54. filterset_class = filtersets.FHRPGroupAssignmentFilterSet
  55. class IPAddressType(NetBoxObjectType):
  56. assigned_object = graphene.Field('ipam.graphql.gfk_mixins.IPAddressAssignmentType')
  57. class Meta:
  58. model = models.IPAddress
  59. exclude = ('assigned_object_type', 'assigned_object_id')
  60. filterset_class = filtersets.IPAddressFilterSet
  61. def resolve_role(self, info):
  62. return self.role or None
  63. class IPRangeType(NetBoxObjectType):
  64. class Meta:
  65. model = models.IPRange
  66. fields = '__all__'
  67. filterset_class = filtersets.IPRangeFilterSet
  68. def resolve_role(self, info):
  69. return self.role or None
  70. class PrefixType(NetBoxObjectType):
  71. class Meta:
  72. model = models.Prefix
  73. fields = '__all__'
  74. filterset_class = filtersets.PrefixFilterSet
  75. class RIRType(OrganizationalObjectType):
  76. class Meta:
  77. model = models.RIR
  78. fields = '__all__'
  79. filterset_class = filtersets.RIRFilterSet
  80. class RoleType(OrganizationalObjectType):
  81. class Meta:
  82. model = models.Role
  83. fields = '__all__'
  84. filterset_class = filtersets.RoleFilterSet
  85. class RouteTargetType(NetBoxObjectType):
  86. class Meta:
  87. model = models.RouteTarget
  88. fields = '__all__'
  89. filterset_class = filtersets.RouteTargetFilterSet
  90. class ServiceType(NetBoxObjectType):
  91. class Meta:
  92. model = models.Service
  93. fields = '__all__'
  94. filterset_class = filtersets.ServiceFilterSet
  95. class ServiceTemplateType(NetBoxObjectType):
  96. class Meta:
  97. model = models.ServiceTemplate
  98. fields = '__all__'
  99. filterset_class = filtersets.ServiceTemplateFilterSet
  100. class VLANType(NetBoxObjectType):
  101. class Meta:
  102. model = models.VLAN
  103. fields = '__all__'
  104. filterset_class = filtersets.VLANFilterSet
  105. class VLANGroupType(OrganizationalObjectType):
  106. scope = graphene.Field('ipam.graphql.gfk_mixins.VLANGroupScopeType')
  107. class Meta:
  108. model = models.VLANGroup
  109. exclude = ('scope_type', 'scope_id')
  110. filterset_class = filtersets.VLANGroupFilterSet
  111. class VRFType(NetBoxObjectType):
  112. class Meta:
  113. model = models.VRF
  114. fields = '__all__'
  115. filterset_class = filtersets.VRFFilterSet
  116. class L2VPNType(ContactsMixin, NetBoxObjectType):
  117. class Meta:
  118. model = models.L2VPN
  119. fields = '__all__'
  120. filtersets_class = filtersets.L2VPNFilterSet
  121. class L2VPNTerminationType(NetBoxObjectType):
  122. assigned_object = graphene.Field('ipam.graphql.gfk_mixins.L2VPNAssignmentType')
  123. class Meta:
  124. model = models.L2VPNTermination
  125. exclude = ('assigned_object_type', 'assigned_object_id')
  126. filtersets_class = filtersets.L2VPNTerminationFilterSet