Browse Source

Extended IPAM API to support tenancy

Jeremy Stretch 9 years ago
parent
commit
2981ead41b
3 changed files with 15 additions and 6 deletions
  1. 6 0
      netbox/dcim/tests/test_apis.py
  2. 5 2
      netbox/ipam/api/serializers.py
  3. 4 4
      netbox/ipam/api/views.py

+ 6 - 0
netbox/dcim/tests/test_apis.py

@@ -15,6 +15,7 @@ class SiteTest(APITestCase):
         'id',
         'name',
         'slug',
+        'tenant',
         'facility',
         'asn',
         'physical_address',
@@ -40,6 +41,7 @@ class SiteTest(APITestCase):
         'display_name',
         'site',
         'group',
+        'tenant',
         'u_height',
         'comments'
     ]
@@ -115,6 +117,7 @@ class RackTest(APITestCase):
         'display_name',
         'site',
         'group',
+        'tenant',
         'u_height',
         'comments'
     ]
@@ -126,6 +129,7 @@ class RackTest(APITestCase):
         'display_name',
         'site',
         'group',
+        'tenant',
         'u_height',
         'comments',
         'front_units',
@@ -311,6 +315,7 @@ class DeviceTest(APITestCase):
         'display_name',
         'device_type',
         'device_role',
+        'tenant',
         'platform',
         'serial',
         'rack',
@@ -388,6 +393,7 @@ class DeviceTest(APITestCase):
             'rack_name',
             'serial',
             'status',
+            'tenant',
         ]
 
         response = self.client.get(endpoint)

+ 5 - 2
netbox/ipam/api/serializers.py

@@ -2,6 +2,7 @@ from rest_framework import serializers
 
 from dcim.api.serializers import SiteNestedSerializer, InterfaceNestedSerializer
 from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup
+from tenancy.api.serializers import TenantNestedSerializer
 
 
 #
@@ -9,10 +10,11 @@ from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLAN
 #
 
 class VRFSerializer(serializers.ModelSerializer):
+    tenant = TenantNestedSerializer()
 
     class Meta:
         model = VRF
-        fields = ['id', 'name', 'rd', 'enforce_unique', 'description']
+        fields = ['id', 'name', 'rd', 'tenant', 'enforce_unique', 'description']
 
 
 class VRFNestedSerializer(VRFSerializer):
@@ -98,11 +100,12 @@ class VLANGroupNestedSerializer(VLANGroupSerializer):
 class VLANSerializer(serializers.ModelSerializer):
     site = SiteNestedSerializer()
     group = VLANGroupNestedSerializer()
+    tenant = TenantNestedSerializer()
     role = RoleNestedSerializer()
 
     class Meta:
         model = VLAN
-        fields = ['id', 'site', 'group', 'vid', 'name', 'status', 'role', 'description', 'display_name']
+        fields = ['id', 'site', 'group', 'vid', 'name', 'tenant', 'status', 'role', 'description', 'display_name']
 
 
 class VLANNestedSerializer(VLANSerializer):

+ 4 - 4
netbox/ipam/api/views.py

@@ -14,7 +14,7 @@ class VRFListView(generics.ListAPIView):
     """
     List all VRFs
     """
-    queryset = VRF.objects.all()
+    queryset = VRF.objects.select_related('tenant')
     serializer_class = serializers.VRFSerializer
     filter_class = filters.VRFFilter
 
@@ -23,7 +23,7 @@ class VRFDetailView(generics.RetrieveAPIView):
     """
     Retrieve a single VRF
     """
-    queryset = VRF.objects.all()
+    queryset = VRF.objects.select_related('tenant')
     serializer_class = serializers.VRFSerializer
 
 
@@ -161,7 +161,7 @@ class VLANListView(generics.ListAPIView):
     """
     List VLANs (filterable)
     """
-    queryset = VLAN.objects.select_related('site', 'role')
+    queryset = VLAN.objects.select_related('site', 'tenant', 'role')
     serializer_class = serializers.VLANSerializer
     filter_class = filters.VLANFilter
 
@@ -170,5 +170,5 @@ class VLANDetailView(generics.RetrieveAPIView):
     """
     Retrieve a single VLAN
     """
-    queryset = VLAN.objects.select_related('site', 'role')
+    queryset = VLAN.objects.select_related('site', 'tenant', 'role')
     serializer_class = serializers.VLANSerializer