mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Expose BaseObjectType and NetBoxObjectType for plugins
This commit is contained in:
@ -26,8 +26,26 @@ class MyQuery(graphene.ObjectType):
|
|||||||
schema = MyQuery
|
schema = MyQuery
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## GraphQL Objects
|
||||||
|
|
||||||
|
NetBox provides two object type classes for use by plugins.
|
||||||
|
|
||||||
|
::: netbox.graphql.types.BaseObjectType
|
||||||
|
selection:
|
||||||
|
members: false
|
||||||
|
rendering:
|
||||||
|
show_source: false
|
||||||
|
|
||||||
|
::: netbox.graphql.types.NetBoxObjectType
|
||||||
|
selection:
|
||||||
|
members: false
|
||||||
|
rendering:
|
||||||
|
show_source: false
|
||||||
|
|
||||||
## GraphQL Fields
|
## GraphQL Fields
|
||||||
|
|
||||||
|
NetBox provides two field classes for use by plugins.
|
||||||
|
|
||||||
::: netbox.graphql.fields.ObjectField
|
::: netbox.graphql.fields.ObjectField
|
||||||
selection:
|
selection:
|
||||||
members: false
|
members: false
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from circuits import filtersets, models
|
from circuits import filtersets, models
|
||||||
from netbox.graphql.types import ObjectType, OrganizationalObjectType, PrimaryObjectType
|
from netbox.graphql.types import ObjectType, OrganizationalObjectType, NetBoxObjectType
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'CircuitTerminationType',
|
'CircuitTerminationType',
|
||||||
@ -18,7 +18,7 @@ class CircuitTerminationType(ObjectType):
|
|||||||
filterset_class = filtersets.CircuitTerminationFilterSet
|
filterset_class = filtersets.CircuitTerminationFilterSet
|
||||||
|
|
||||||
|
|
||||||
class CircuitType(PrimaryObjectType):
|
class CircuitType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Circuit
|
model = models.Circuit
|
||||||
@ -34,7 +34,7 @@ class CircuitTypeType(OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.CircuitTypeFilterSet
|
filterset_class = filtersets.CircuitTypeFilterSet
|
||||||
|
|
||||||
|
|
||||||
class ProviderType(PrimaryObjectType):
|
class ProviderType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Provider
|
model = models.Provider
|
||||||
@ -42,7 +42,7 @@ class ProviderType(PrimaryObjectType):
|
|||||||
filterset_class = filtersets.ProviderFilterSet
|
filterset_class = filtersets.ProviderFilterSet
|
||||||
|
|
||||||
|
|
||||||
class ProviderNetworkType(PrimaryObjectType):
|
class ProviderNetworkType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ProviderNetwork
|
model = models.ProviderNetwork
|
||||||
|
@ -6,7 +6,7 @@ from extras.graphql.mixins import (
|
|||||||
)
|
)
|
||||||
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
|
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
|
||||||
from netbox.graphql.scalars import BigInt
|
from netbox.graphql.scalars import BigInt
|
||||||
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType
|
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, NetBoxObjectType
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'CableType',
|
'CableType',
|
||||||
@ -85,7 +85,7 @@ class ComponentTemplateObjectType(
|
|||||||
# Model types
|
# Model types
|
||||||
#
|
#
|
||||||
|
|
||||||
class CableType(PrimaryObjectType):
|
class CableType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Cable
|
model = models.Cable
|
||||||
@ -143,7 +143,7 @@ class ConsoleServerPortTemplateType(ComponentTemplateObjectType):
|
|||||||
return self.type or None
|
return self.type or None
|
||||||
|
|
||||||
|
|
||||||
class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, PrimaryObjectType):
|
class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Device
|
model = models.Device
|
||||||
@ -189,7 +189,7 @@ class DeviceRoleType(OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.DeviceRoleFilterSet
|
filterset_class = filtersets.DeviceRoleFilterSet
|
||||||
|
|
||||||
|
|
||||||
class DeviceTypeType(PrimaryObjectType):
|
class DeviceTypeType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.DeviceType
|
model = models.DeviceType
|
||||||
@ -300,7 +300,7 @@ class ModuleBayTemplateType(ComponentTemplateObjectType):
|
|||||||
filterset_class = filtersets.ModuleBayTemplateFilterSet
|
filterset_class = filtersets.ModuleBayTemplateFilterSet
|
||||||
|
|
||||||
|
|
||||||
class ModuleTypeType(PrimaryObjectType):
|
class ModuleTypeType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ModuleType
|
model = models.ModuleType
|
||||||
@ -316,7 +316,7 @@ class PlatformType(OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.PlatformFilterSet
|
filterset_class = filtersets.PlatformFilterSet
|
||||||
|
|
||||||
|
|
||||||
class PowerFeedType(PrimaryObjectType):
|
class PowerFeedType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.PowerFeed
|
model = models.PowerFeed
|
||||||
@ -352,7 +352,7 @@ class PowerOutletTemplateType(ComponentTemplateObjectType):
|
|||||||
return self.type or None
|
return self.type or None
|
||||||
|
|
||||||
|
|
||||||
class PowerPanelType(PrimaryObjectType):
|
class PowerPanelType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.PowerPanel
|
model = models.PowerPanel
|
||||||
@ -382,7 +382,7 @@ class PowerPortTemplateType(ComponentTemplateObjectType):
|
|||||||
return self.type or None
|
return self.type or None
|
||||||
|
|
||||||
|
|
||||||
class RackType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType):
|
class RackType(VLANGroupsMixin, ImageAttachmentsMixin, NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Rack
|
model = models.Rack
|
||||||
@ -396,7 +396,7 @@ class RackType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType):
|
|||||||
return self.outer_unit or None
|
return self.outer_unit or None
|
||||||
|
|
||||||
|
|
||||||
class RackReservationType(PrimaryObjectType):
|
class RackReservationType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.RackReservation
|
model = models.RackReservation
|
||||||
@ -436,7 +436,7 @@ class RegionType(VLANGroupsMixin, OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.RegionFilterSet
|
filterset_class = filtersets.RegionFilterSet
|
||||||
|
|
||||||
|
|
||||||
class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType):
|
class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, NetBoxObjectType):
|
||||||
asn = graphene.Field(BigInt)
|
asn = graphene.Field(BigInt)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -453,7 +453,7 @@ class SiteGroupType(VLANGroupsMixin, OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.SiteGroupFilterSet
|
filterset_class = filtersets.SiteGroupFilterSet
|
||||||
|
|
||||||
|
|
||||||
class VirtualChassisType(PrimaryObjectType):
|
class VirtualChassisType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.VirtualChassis
|
model = models.VirtualChassis
|
||||||
|
@ -2,7 +2,7 @@ import graphene
|
|||||||
|
|
||||||
from ipam import filtersets, models
|
from ipam import filtersets, models
|
||||||
from netbox.graphql.scalars import BigInt
|
from netbox.graphql.scalars import BigInt
|
||||||
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType
|
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, NetBoxObjectType
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ASNType',
|
'ASNType',
|
||||||
@ -23,7 +23,7 @@ __all__ = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ASNType(PrimaryObjectType):
|
class ASNType(NetBoxObjectType):
|
||||||
asn = graphene.Field(BigInt)
|
asn = graphene.Field(BigInt)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -32,7 +32,7 @@ class ASNType(PrimaryObjectType):
|
|||||||
filterset_class = filtersets.ASNFilterSet
|
filterset_class = filtersets.ASNFilterSet
|
||||||
|
|
||||||
|
|
||||||
class AggregateType(PrimaryObjectType):
|
class AggregateType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Aggregate
|
model = models.Aggregate
|
||||||
@ -40,7 +40,7 @@ class AggregateType(PrimaryObjectType):
|
|||||||
filterset_class = filtersets.AggregateFilterSet
|
filterset_class = filtersets.AggregateFilterSet
|
||||||
|
|
||||||
|
|
||||||
class FHRPGroupType(PrimaryObjectType):
|
class FHRPGroupType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.FHRPGroup
|
model = models.FHRPGroup
|
||||||
@ -59,7 +59,7 @@ class FHRPGroupAssignmentType(BaseObjectType):
|
|||||||
filterset_class = filtersets.FHRPGroupAssignmentFilterSet
|
filterset_class = filtersets.FHRPGroupAssignmentFilterSet
|
||||||
|
|
||||||
|
|
||||||
class IPAddressType(PrimaryObjectType):
|
class IPAddressType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.IPAddress
|
model = models.IPAddress
|
||||||
@ -70,7 +70,7 @@ class IPAddressType(PrimaryObjectType):
|
|||||||
return self.role or None
|
return self.role or None
|
||||||
|
|
||||||
|
|
||||||
class IPRangeType(PrimaryObjectType):
|
class IPRangeType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.IPRange
|
model = models.IPRange
|
||||||
@ -81,7 +81,7 @@ class IPRangeType(PrimaryObjectType):
|
|||||||
return self.role or None
|
return self.role or None
|
||||||
|
|
||||||
|
|
||||||
class PrefixType(PrimaryObjectType):
|
class PrefixType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Prefix
|
model = models.Prefix
|
||||||
@ -105,7 +105,7 @@ class RoleType(OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.RoleFilterSet
|
filterset_class = filtersets.RoleFilterSet
|
||||||
|
|
||||||
|
|
||||||
class RouteTargetType(PrimaryObjectType):
|
class RouteTargetType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.RouteTarget
|
model = models.RouteTarget
|
||||||
@ -113,7 +113,7 @@ class RouteTargetType(PrimaryObjectType):
|
|||||||
filterset_class = filtersets.RouteTargetFilterSet
|
filterset_class = filtersets.RouteTargetFilterSet
|
||||||
|
|
||||||
|
|
||||||
class ServiceType(PrimaryObjectType):
|
class ServiceType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Service
|
model = models.Service
|
||||||
@ -121,7 +121,7 @@ class ServiceType(PrimaryObjectType):
|
|||||||
filterset_class = filtersets.ServiceFilterSet
|
filterset_class = filtersets.ServiceFilterSet
|
||||||
|
|
||||||
|
|
||||||
class ServiceTemplateType(PrimaryObjectType):
|
class ServiceTemplateType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ServiceTemplate
|
model = models.ServiceTemplate
|
||||||
@ -129,7 +129,7 @@ class ServiceTemplateType(PrimaryObjectType):
|
|||||||
filterset_class = filtersets.ServiceTemplateFilterSet
|
filterset_class = filtersets.ServiceTemplateFilterSet
|
||||||
|
|
||||||
|
|
||||||
class VLANType(PrimaryObjectType):
|
class VLANType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.VLAN
|
model = models.VLAN
|
||||||
@ -145,7 +145,7 @@ class VLANGroupType(OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.VLANGroupFilterSet
|
filterset_class = filtersets.VLANGroupFilterSet
|
||||||
|
|
||||||
|
|
||||||
class VRFType(PrimaryObjectType):
|
class VRFType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.VRF
|
model = models.VRF
|
||||||
|
@ -5,8 +5,9 @@ from extras.graphql.mixins import ChangelogMixin, CustomFieldsMixin, JournalEntr
|
|||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'BaseObjectType',
|
'BaseObjectType',
|
||||||
|
'ObjectType',
|
||||||
'OrganizationalObjectType',
|
'OrganizationalObjectType',
|
||||||
'PrimaryObjectType',
|
'NetBoxObjectType',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ __all__ = (
|
|||||||
|
|
||||||
class BaseObjectType(DjangoObjectType):
|
class BaseObjectType(DjangoObjectType):
|
||||||
"""
|
"""
|
||||||
Base GraphQL object type for all NetBox objects
|
Base GraphQL object type for all NetBox objects. Restricts the model queryset to enforce object permissions.
|
||||||
"""
|
"""
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
@ -51,7 +52,7 @@ class OrganizationalObjectType(
|
|||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
|
||||||
class PrimaryObjectType(
|
class NetBoxObjectType(
|
||||||
ChangelogMixin,
|
ChangelogMixin,
|
||||||
CustomFieldsMixin,
|
CustomFieldsMixin,
|
||||||
JournalEntriesMixin,
|
JournalEntriesMixin,
|
||||||
@ -59,7 +60,7 @@ class PrimaryObjectType(
|
|||||||
BaseObjectType
|
BaseObjectType
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Base type for primary models
|
GraphQL type for most NetBox models. Includes support for custom fields, change logging, journaling, and tags.
|
||||||
"""
|
"""
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import graphene
|
import graphene
|
||||||
|
|
||||||
from tenancy import filtersets, models
|
from tenancy import filtersets, models
|
||||||
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType
|
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, NetBoxObjectType
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ContactAssignmentType',
|
'ContactAssignmentType',
|
||||||
@ -24,7 +24,7 @@ class ContactAssignmentsMixin:
|
|||||||
# Tenants
|
# Tenants
|
||||||
#
|
#
|
||||||
|
|
||||||
class TenantType(PrimaryObjectType):
|
class TenantType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Tenant
|
model = models.Tenant
|
||||||
@ -44,7 +44,7 @@ class TenantGroupType(OrganizationalObjectType):
|
|||||||
# Contacts
|
# Contacts
|
||||||
#
|
#
|
||||||
|
|
||||||
class ContactType(ContactAssignmentsMixin, PrimaryObjectType):
|
class ContactType(ContactAssignmentsMixin, NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Contact
|
model = models.Contact
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from dcim.graphql.types import ComponentObjectType
|
from dcim.graphql.types import ComponentObjectType
|
||||||
from extras.graphql.mixins import ConfigContextMixin
|
from extras.graphql.mixins import ConfigContextMixin
|
||||||
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
|
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
|
||||||
from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType
|
from netbox.graphql.types import OrganizationalObjectType, NetBoxObjectType
|
||||||
from virtualization import filtersets, models
|
from virtualization import filtersets, models
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
@ -13,7 +13,7 @@ __all__ = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ClusterType(VLANGroupsMixin, PrimaryObjectType):
|
class ClusterType(VLANGroupsMixin, NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Cluster
|
model = models.Cluster
|
||||||
@ -37,7 +37,7 @@ class ClusterTypeType(OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.ClusterTypeFilterSet
|
filterset_class = filtersets.ClusterTypeFilterSet
|
||||||
|
|
||||||
|
|
||||||
class VirtualMachineType(ConfigContextMixin, PrimaryObjectType):
|
class VirtualMachineType(ConfigContextMixin, NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.VirtualMachine
|
model = models.VirtualMachine
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from wireless import filtersets, models
|
from wireless import filtersets, models
|
||||||
from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType
|
from netbox.graphql.types import OrganizationalObjectType, NetBoxObjectType
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'WirelessLANType',
|
'WirelessLANType',
|
||||||
@ -16,7 +16,7 @@ class WirelessLANGroupType(OrganizationalObjectType):
|
|||||||
filterset_class = filtersets.WirelessLANGroupFilterSet
|
filterset_class = filtersets.WirelessLANGroupFilterSet
|
||||||
|
|
||||||
|
|
||||||
class WirelessLANType(PrimaryObjectType):
|
class WirelessLANType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.WirelessLAN
|
model = models.WirelessLAN
|
||||||
@ -30,7 +30,7 @@ class WirelessLANType(PrimaryObjectType):
|
|||||||
return self.auth_cipher or None
|
return self.auth_cipher or None
|
||||||
|
|
||||||
|
|
||||||
class WirelessLinkType(PrimaryObjectType):
|
class WirelessLinkType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.WirelessLink
|
model = models.WirelessLink
|
||||||
|
Reference in New Issue
Block a user