mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 17:08:41 -06:00
Extended IPAM API to support tenancy
This commit is contained in:
parent
e4960873f3
commit
2981ead41b
@ -15,6 +15,7 @@ class SiteTest(APITestCase):
|
|||||||
'id',
|
'id',
|
||||||
'name',
|
'name',
|
||||||
'slug',
|
'slug',
|
||||||
|
'tenant',
|
||||||
'facility',
|
'facility',
|
||||||
'asn',
|
'asn',
|
||||||
'physical_address',
|
'physical_address',
|
||||||
@ -40,6 +41,7 @@ class SiteTest(APITestCase):
|
|||||||
'display_name',
|
'display_name',
|
||||||
'site',
|
'site',
|
||||||
'group',
|
'group',
|
||||||
|
'tenant',
|
||||||
'u_height',
|
'u_height',
|
||||||
'comments'
|
'comments'
|
||||||
]
|
]
|
||||||
@ -115,6 +117,7 @@ class RackTest(APITestCase):
|
|||||||
'display_name',
|
'display_name',
|
||||||
'site',
|
'site',
|
||||||
'group',
|
'group',
|
||||||
|
'tenant',
|
||||||
'u_height',
|
'u_height',
|
||||||
'comments'
|
'comments'
|
||||||
]
|
]
|
||||||
@ -126,6 +129,7 @@ class RackTest(APITestCase):
|
|||||||
'display_name',
|
'display_name',
|
||||||
'site',
|
'site',
|
||||||
'group',
|
'group',
|
||||||
|
'tenant',
|
||||||
'u_height',
|
'u_height',
|
||||||
'comments',
|
'comments',
|
||||||
'front_units',
|
'front_units',
|
||||||
@ -311,6 +315,7 @@ class DeviceTest(APITestCase):
|
|||||||
'display_name',
|
'display_name',
|
||||||
'device_type',
|
'device_type',
|
||||||
'device_role',
|
'device_role',
|
||||||
|
'tenant',
|
||||||
'platform',
|
'platform',
|
||||||
'serial',
|
'serial',
|
||||||
'rack',
|
'rack',
|
||||||
@ -388,6 +393,7 @@ class DeviceTest(APITestCase):
|
|||||||
'rack_name',
|
'rack_name',
|
||||||
'serial',
|
'serial',
|
||||||
'status',
|
'status',
|
||||||
|
'tenant',
|
||||||
]
|
]
|
||||||
|
|
||||||
response = self.client.get(endpoint)
|
response = self.client.get(endpoint)
|
||||||
|
@ -2,6 +2,7 @@ from rest_framework import serializers
|
|||||||
|
|
||||||
from dcim.api.serializers import SiteNestedSerializer, InterfaceNestedSerializer
|
from dcim.api.serializers import SiteNestedSerializer, InterfaceNestedSerializer
|
||||||
from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup
|
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):
|
class VRFSerializer(serializers.ModelSerializer):
|
||||||
|
tenant = TenantNestedSerializer()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VRF
|
model = VRF
|
||||||
fields = ['id', 'name', 'rd', 'enforce_unique', 'description']
|
fields = ['id', 'name', 'rd', 'tenant', 'enforce_unique', 'description']
|
||||||
|
|
||||||
|
|
||||||
class VRFNestedSerializer(VRFSerializer):
|
class VRFNestedSerializer(VRFSerializer):
|
||||||
@ -98,11 +100,12 @@ class VLANGroupNestedSerializer(VLANGroupSerializer):
|
|||||||
class VLANSerializer(serializers.ModelSerializer):
|
class VLANSerializer(serializers.ModelSerializer):
|
||||||
site = SiteNestedSerializer()
|
site = SiteNestedSerializer()
|
||||||
group = VLANGroupNestedSerializer()
|
group = VLANGroupNestedSerializer()
|
||||||
|
tenant = TenantNestedSerializer()
|
||||||
role = RoleNestedSerializer()
|
role = RoleNestedSerializer()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VLAN
|
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):
|
class VLANNestedSerializer(VLANSerializer):
|
||||||
|
@ -14,7 +14,7 @@ class VRFListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
List all VRFs
|
List all VRFs
|
||||||
"""
|
"""
|
||||||
queryset = VRF.objects.all()
|
queryset = VRF.objects.select_related('tenant')
|
||||||
serializer_class = serializers.VRFSerializer
|
serializer_class = serializers.VRFSerializer
|
||||||
filter_class = filters.VRFFilter
|
filter_class = filters.VRFFilter
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ class VRFDetailView(generics.RetrieveAPIView):
|
|||||||
"""
|
"""
|
||||||
Retrieve a single VRF
|
Retrieve a single VRF
|
||||||
"""
|
"""
|
||||||
queryset = VRF.objects.all()
|
queryset = VRF.objects.select_related('tenant')
|
||||||
serializer_class = serializers.VRFSerializer
|
serializer_class = serializers.VRFSerializer
|
||||||
|
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ class VLANListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
List VLANs (filterable)
|
List VLANs (filterable)
|
||||||
"""
|
"""
|
||||||
queryset = VLAN.objects.select_related('site', 'role')
|
queryset = VLAN.objects.select_related('site', 'tenant', 'role')
|
||||||
serializer_class = serializers.VLANSerializer
|
serializer_class = serializers.VLANSerializer
|
||||||
filter_class = filters.VLANFilter
|
filter_class = filters.VLANFilter
|
||||||
|
|
||||||
@ -170,5 +170,5 @@ class VLANDetailView(generics.RetrieveAPIView):
|
|||||||
"""
|
"""
|
||||||
Retrieve a single VLAN
|
Retrieve a single VLAN
|
||||||
"""
|
"""
|
||||||
queryset = VLAN.objects.select_related('site', 'role')
|
queryset = VLAN.objects.select_related('site', 'tenant', 'role')
|
||||||
serializer_class = serializers.VLANSerializer
|
serializer_class = serializers.VLANSerializer
|
||||||
|
Loading…
Reference in New Issue
Block a user