1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Add GraphQL for DCIM

This commit is contained in:
jeremystretch
2021-06-25 16:17:36 -04:00
parent 605b7c5b3e
commit 14e27363e0
6 changed files with 441 additions and 29 deletions

View File

View File

@@ -0,0 +1,106 @@
import graphene
from netbox.graphql.fields import ObjectField, ObjectListField
from .types import *
class DCIMQuery(graphene.ObjectType):
cable = ObjectField(CableType)
cables = ObjectListField(CableType)
console_port = ObjectField(ConsolePortType)
console_ports = ObjectListField(ConsolePortType)
console_port_template = ObjectField(ConsolePortTemplateType)
console_port_templates = ObjectListField(ConsolePortTemplateType)
console_server_port = ObjectField(ConsoleServerPortType)
console_server_ports = ObjectListField(ConsoleServerPortType)
console_server_port_template = ObjectField(ConsoleServerPortTemplateType)
console_server_port_templates = ObjectListField(ConsoleServerPortTemplateType)
device = ObjectField(DeviceType)
devices = ObjectListField(DeviceType)
device_bay = ObjectField(DeviceBayType)
device_bays = ObjectListField(DeviceBayType)
device_bay_template = ObjectField(DeviceBayTemplateType)
device_bay_templates = ObjectListField(DeviceBayTemplateType)
device_role = ObjectField(DeviceRoleType)
device_roles = ObjectListField(DeviceRoleType)
device_type = ObjectField(DeviceTypeType)
device_types = ObjectListField(DeviceTypeType)
front_port = ObjectField(FrontPortType)
front_ports = ObjectListField(FrontPortType)
front_port_template = ObjectField(FrontPortTemplateType)
front_port_templates = ObjectListField(FrontPortTemplateType)
interface = ObjectField(InterfaceType)
interfaces = ObjectListField(InterfaceType)
interface_template = ObjectField(InterfaceTemplateType)
interface_templates = ObjectListField(InterfaceTemplateType)
inventory_item = ObjectField(InventoryItemType)
inventory_items = ObjectListField(InventoryItemType)
location = ObjectField(LocationType)
locations = ObjectListField(LocationType)
manufacturer = ObjectField(ManufacturerType)
manufacturers = ObjectListField(ManufacturerType)
platform = ObjectField(PlatformType)
platforms = ObjectListField(PlatformType)
power_feed = ObjectField(PowerFeedType)
power_feeds = ObjectListField(PowerFeedType)
power_outlet = ObjectField(PowerOutletType)
power_outlets = ObjectListField(PowerOutletType)
power_outlet_template = ObjectField(PowerOutletTemplateType)
power_outlet_templates = ObjectListField(PowerOutletTemplateType)
power_panel = ObjectField(PowerPanelType)
power_panels = ObjectListField(PowerPanelType)
power_port = ObjectField(PowerPortType)
power_ports = ObjectListField(PowerPortType)
power_port_template = ObjectField(PowerPortTemplateType)
power_port_templates = ObjectListField(PowerPortTemplateType)
rack = ObjectField(RackType)
racks = ObjectListField(RackType)
rack_reservation = ObjectField(RackReservationType)
rack_reservations = ObjectListField(RackReservationType)
rack_role = ObjectField(RackRoleType)
rack_roles = ObjectListField(RackRoleType)
rear_port = ObjectField(RearPortType)
rear_ports = ObjectListField(RearPortType)
rear_port_template = ObjectField(RearPortTemplateType)
rear_port_templates = ObjectListField(RearPortTemplateType)
region = ObjectField(RegionType)
regions = ObjectListField(RegionType)
site = ObjectField(SiteType)
sites = ObjectListField(SiteType)
site_group = ObjectField(SiteGroupType)
site_groups = ObjectListField(SiteGroupType)
virtual_chassis = ObjectField(VirtualChassisType)
# TODO: Rectify list field name
virtual_chassis_list = ObjectListField(VirtualChassisType)

View File

@@ -0,0 +1,302 @@
from dcim import filtersets, models
from netbox.graphql.types import BaseObjectType, ObjectType, TaggedObjectType
__all__ = (
'CableType',
'ConsolePortType',
'ConsolePortTemplateType',
'ConsoleServerPortType',
'ConsoleServerPortTemplateType',
'DeviceType',
'DeviceBayType',
'DeviceBayTemplateType',
'DeviceRoleType',
'DeviceTypeType',
'FrontPortType',
'FrontPortTemplateType',
'InterfaceType',
'InterfaceTemplateType',
'InventoryItemType',
'LocationType',
'ManufacturerType',
'PlatformType',
'PowerFeedType',
'PowerOutletType',
'PowerOutletTemplateType',
'PowerPanelType',
'PowerPortType',
'PowerPortTemplateType',
'RackType',
'RackReservationType',
'RackRoleType',
'RearPortType',
'RearPortTemplateType',
'RegionType',
'SiteType',
'SiteGroupType',
'VirtualChassisType',
)
class CableType(TaggedObjectType):
class Meta:
model = models.Cable
fields = '__all__'
filterset_class = filtersets.CableFilterSet
class ConsolePortType(TaggedObjectType):
class Meta:
model = models.ConsolePort
fields = '__all__'
filterset_class = filtersets.ConsolePortFilterSet
class ConsolePortTemplateType(BaseObjectType):
class Meta:
model = models.ConsolePortTemplate
fields = '__all__'
filterset_class = filtersets.ConsolePortTemplateFilterSet
class ConsoleServerPortType(TaggedObjectType):
class Meta:
model = models.ConsoleServerPort
fields = '__all__'
filterset_class = filtersets.ConsoleServerPortFilterSet
class ConsoleServerPortTemplateType(BaseObjectType):
class Meta:
model = models.ConsoleServerPortTemplate
fields = '__all__'
filterset_class = filtersets.ConsoleServerPortTemplateFilterSet
class DeviceType(TaggedObjectType):
class Meta:
model = models.Device
fields = '__all__'
filterset_class = filtersets.DeviceFilterSet
class DeviceBayType(TaggedObjectType):
class Meta:
model = models.DeviceBay
fields = '__all__'
filterset_class = filtersets.DeviceBayFilterSet
class DeviceBayTemplateType(BaseObjectType):
class Meta:
model = models.DeviceBayTemplate
fields = '__all__'
filterset_class = filtersets.DeviceBayTemplateFilterSet
class DeviceRoleType(ObjectType):
class Meta:
model = models.DeviceRole
fields = '__all__'
filterset_class = filtersets.DeviceRoleFilterSet
class DeviceTypeType(TaggedObjectType):
class Meta:
model = models.DeviceType
fields = '__all__'
filterset_class = filtersets.DeviceTypeFilterSet
class FrontPortType(TaggedObjectType):
class Meta:
model = models.FrontPort
fields = '__all__'
filterset_class = filtersets.FrontPortFilterSet
class FrontPortTemplateType(BaseObjectType):
class Meta:
model = models.FrontPortTemplate
fields = '__all__'
filterset_class = filtersets.FrontPortTemplateFilterSet
class InterfaceType(TaggedObjectType):
class Meta:
model = models.Interface
fields = '__all__'
filterset_class = filtersets.InterfaceFilterSet
class InterfaceTemplateType(BaseObjectType):
class Meta:
model = models.InterfaceTemplate
fields = '__all__'
filterset_class = filtersets.InterfaceTemplateFilterSet
class InventoryItemType(ObjectType):
class Meta:
model = models.InventoryItem
fields = '__all__'
filterset_class = filtersets.InventoryItemFilterSet
class LocationType(TaggedObjectType):
class Meta:
model = models.Location
fields = '__all__'
filterset_class = filtersets.LocationFilterSet
class ManufacturerType(ObjectType):
class Meta:
model = models.Manufacturer
fields = '__all__'
filterset_class = filtersets.ManufacturerFilterSet
class PlatformType(ObjectType):
class Meta:
model = models.Platform
fields = '__all__'
filterset_class = filtersets.PlatformFilterSet
class PowerFeedType(TaggedObjectType):
class Meta:
model = models.PowerFeed
fields = '__all__'
filterset_class = filtersets.PowerFeedFilterSet
class PowerOutletType(TaggedObjectType):
class Meta:
model = models.PowerOutlet
fields = '__all__'
filterset_class = filtersets.PowerOutletFilterSet
class PowerOutletTemplateType(BaseObjectType):
class Meta:
model = models.PowerOutletTemplate
fields = '__all__'
filterset_class = filtersets.PowerOutletTemplateFilterSet
class PowerPanelType(TaggedObjectType):
class Meta:
model = models.PowerPanel
fields = '__all__'
filterset_class = filtersets.PowerPanelFilterSet
class PowerPortType(TaggedObjectType):
class Meta:
model = models.PowerPort
fields = '__all__'
filterset_class = filtersets.PowerPortFilterSet
class PowerPortTemplateType(BaseObjectType):
class Meta:
model = models.PowerPortTemplate
fields = '__all__'
filterset_class = filtersets.PowerPortTemplateFilterSet
class RackType(TaggedObjectType):
class Meta:
model = models.Rack
fields = '__all__'
filterset_class = filtersets.RackFilterSet
class RackReservationType(TaggedObjectType):
class Meta:
model = models.RackReservation
fields = '__all__'
filterset_class = filtersets.RackReservationFilterSet
class RackRoleType(ObjectType):
class Meta:
model = models.RackRole
fields = '__all__'
filterset_class = filtersets.RackRoleFilterSet
class RearPortType(TaggedObjectType):
class Meta:
model = models.RearPort
fields = '__all__'
filterset_class = filtersets.RearPortFilterSet
class RearPortTemplateType(BaseObjectType):
class Meta:
model = models.RearPortTemplate
fields = '__all__'
filterset_class = filtersets.RearPortTemplateFilterSet
class RegionType(ObjectType):
class Meta:
model = models.Region
fields = '__all__'
filterset_class = filtersets.RegionFilterSet
class SiteType(TaggedObjectType):
class Meta:
model = models.Site
fields = '__all__'
filterset_class = filtersets.SiteFilterSet
class SiteGroupType(ObjectType):
class Meta:
model = models.SiteGroup
fields = '__all__'
filterset_class = filtersets.SiteGroupFilterSet
class VirtualChassisType(TaggedObjectType):
class Meta:
model = models.VirtualChassis
fields = '__all__'
filterset_class = filtersets.VirtualChassisFilterSet