Browse Source

Add GraphQL for tenancy

jeremystretch 4 years ago
parent
commit
881b18f6d0

+ 2 - 0
netbox/netbox/graphql/schema.py

@@ -3,12 +3,14 @@ import graphene
 from circuits.graphql.schema import CircuitsQuery
 from extras.graphql.schema import ExtrasQuery
 from ipam.graphql.schema import IPAMQuery
+from tenancy.graphql.schema import TenancyQuery
 
 
 class Query(
     CircuitsQuery,
     ExtrasQuery,
     IPAMQuery,
+    TenancyQuery,
     graphene.ObjectType
 ):
     pass

+ 0 - 0
netbox/tenancy/graphql/__init__.py


+ 12 - 0
netbox/tenancy/graphql/schema.py

@@ -0,0 +1,12 @@
+import graphene
+
+from netbox.graphql.fields import ObjectField, ObjectListField
+from .types import *
+
+
+class TenancyQuery(graphene.ObjectType):
+    tenant = ObjectField(TenantType)
+    tenants = ObjectListField(TenantType)
+
+    tenant_group = ObjectField(TenantGroupType)
+    tenant_groups = ObjectListField(TenantGroupType)

+ 23 - 0
netbox/tenancy/graphql/types.py

@@ -0,0 +1,23 @@
+from tenancy import filtersets, models
+from netbox.graphql.types import ObjectType, TaggedObjectType
+
+__all__ = (
+    'TenantType',
+    'TenantGroupType',
+)
+
+
+class TenantType(ObjectType):
+
+    class Meta:
+        model = models.Tenant
+        fields = '__all__'
+        filterset_class = filtersets.TenantFilterSet
+
+
+class TenantGroupType(TaggedObjectType):
+
+    class Meta:
+        model = models.TenantGroup
+        fields = '__all__'
+        filterset_class = filtersets.TenantGroupFilterSet

+ 2 - 2
netbox/tenancy/tests/test_api.py

@@ -14,7 +14,7 @@ class AppTest(APITestCase):
         self.assertEqual(response.status_code, 200)
 
 
-class TenantGroupTest(APIViewTestCases.APIViewTestCase):
+class TenantGroupTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
     model = TenantGroup
     brief_fields = ['_depth', 'display', 'id', 'name', 'slug', 'tenant_count', 'url']
     bulk_update_data = {
@@ -52,7 +52,7 @@ class TenantGroupTest(APIViewTestCases.APIViewTestCase):
         ]
 
 
-class TenantTest(APIViewTestCases.APIViewTestCase):
+class TenantTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
     model = Tenant
     brief_fields = ['display', 'id', 'name', 'slug', 'url']
     bulk_update_data = {