mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-22 05:12:22 -06:00
Add GraphQL for virtualization
This commit is contained in:
0
netbox/virtualization/graphql/__init__.py
Normal file
0
netbox/virtualization/graphql/__init__.py
Normal file
21
netbox/virtualization/graphql/schema.py
Normal file
21
netbox/virtualization/graphql/schema.py
Normal file
@@ -0,0 +1,21 @@
|
||||
import graphene
|
||||
|
||||
from netbox.graphql.fields import ObjectField, ObjectListField
|
||||
from .types import *
|
||||
|
||||
|
||||
class VirtualizationQuery(graphene.ObjectType):
|
||||
cluster = ObjectField(ClusterType)
|
||||
clusters = ObjectListField(ClusterType)
|
||||
|
||||
cluster_group = ObjectField(ClusterGroupType)
|
||||
cluster_groups = ObjectListField(ClusterGroupType)
|
||||
|
||||
cluster_type = ObjectField(ClusterTypeType)
|
||||
cluster_types = ObjectListField(ClusterTypeType)
|
||||
|
||||
virtual_machine = ObjectField(VirtualMachineType)
|
||||
virtual_machines = ObjectListField(VirtualMachineType)
|
||||
|
||||
vm_interface = ObjectField(VMInterfaceType)
|
||||
vm_interfaces = ObjectListField(VMInterfaceType)
|
||||
50
netbox/virtualization/graphql/types.py
Normal file
50
netbox/virtualization/graphql/types.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from virtualization import filtersets, models
|
||||
from netbox.graphql.types import ObjectType, TaggedObjectType
|
||||
|
||||
__all__ = (
|
||||
'ClusterType',
|
||||
'ClusterGroupType',
|
||||
'ClusterTypeType',
|
||||
'VirtualMachineType',
|
||||
'VMInterfaceType',
|
||||
)
|
||||
|
||||
|
||||
class ClusterType(TaggedObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.Cluster
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.ClusterFilterSet
|
||||
|
||||
|
||||
class ClusterGroupType(ObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.ClusterGroup
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.ClusterGroupFilterSet
|
||||
|
||||
|
||||
class ClusterTypeType(ObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.ClusterType
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.ClusterTypeFilterSet
|
||||
|
||||
|
||||
class VirtualMachineType(TaggedObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.VirtualMachine
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.VirtualMachineFilterSet
|
||||
|
||||
|
||||
class VMInterfaceType(ObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.VMInterface
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.VMInterfaceFilterSet
|
||||
@@ -17,7 +17,7 @@ class AppTest(APITestCase):
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
class ClusterTypeTest(APIViewTestCases.APIViewTestCase):
|
||||
class ClusterTypeTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||
model = ClusterType
|
||||
brief_fields = ['cluster_count', 'display', 'id', 'name', 'slug', 'url']
|
||||
create_data = [
|
||||
@@ -49,7 +49,7 @@ class ClusterTypeTest(APIViewTestCases.APIViewTestCase):
|
||||
ClusterType.objects.bulk_create(cluster_types)
|
||||
|
||||
|
||||
class ClusterGroupTest(APIViewTestCases.APIViewTestCase):
|
||||
class ClusterGroupTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||
model = ClusterGroup
|
||||
brief_fields = ['cluster_count', 'display', 'id', 'name', 'slug', 'url']
|
||||
create_data = [
|
||||
@@ -81,7 +81,7 @@ class ClusterGroupTest(APIViewTestCases.APIViewTestCase):
|
||||
ClusterGroup.objects.bulk_create(cluster_Groups)
|
||||
|
||||
|
||||
class ClusterTest(APIViewTestCases.APIViewTestCase):
|
||||
class ClusterTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||
model = Cluster
|
||||
brief_fields = ['display', 'id', 'name', 'url', 'virtualmachine_count']
|
||||
bulk_update_data = {
|
||||
@@ -129,7 +129,7 @@ class ClusterTest(APIViewTestCases.APIViewTestCase):
|
||||
]
|
||||
|
||||
|
||||
class VirtualMachineTest(APIViewTestCases.APIViewTestCase):
|
||||
class VirtualMachineTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||
model = VirtualMachine
|
||||
brief_fields = ['display', 'id', 'name', 'url']
|
||||
bulk_update_data = {
|
||||
@@ -205,13 +205,16 @@ class VirtualMachineTest(APIViewTestCases.APIViewTestCase):
|
||||
self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class VMInterfaceTest(APIViewTestCases.APIViewTestCase):
|
||||
class VMInterfaceTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||
model = VMInterface
|
||||
brief_fields = ['display', 'id', 'name', 'url', 'virtual_machine']
|
||||
bulk_update_data = {
|
||||
'description': 'New description',
|
||||
}
|
||||
|
||||
graphql_base_name = 'vm_interface'
|
||||
graphql_base_name_plural = 'vm_interfaces'
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user