mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 01:06:11 -06:00
show ip address functions on device api view (rough first pass)
This commit is contained in:
parent
4920539c52
commit
432d37dd09
@ -13,9 +13,9 @@ from dcim.models import *
|
|||||||
from extras.api.nested_serializers import NestedConfigTemplateSerializer
|
from extras.api.nested_serializers import NestedConfigTemplateSerializer
|
||||||
from ipam.api.nested_serializers import (
|
from ipam.api.nested_serializers import (
|
||||||
NestedASNSerializer, NestedIPAddressSerializer, NestedL2VPNTerminationSerializer, NestedVLANSerializer,
|
NestedASNSerializer, NestedIPAddressSerializer, NestedL2VPNTerminationSerializer, NestedVLANSerializer,
|
||||||
NestedVRFSerializer,
|
NestedVRFSerializer, NestedIPAddressFunctionAssignmentsSerializer
|
||||||
)
|
)
|
||||||
from ipam.models import ASN, VLAN
|
from ipam.models import ASN, VLAN, IPAddressFunctionAssignments
|
||||||
from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField
|
from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField
|
||||||
from netbox.api.serializers import (
|
from netbox.api.serializers import (
|
||||||
GenericObjectSerializer, NestedGroupModelSerializer, NetBoxModelSerializer, ValidatedModelSerializer,
|
GenericObjectSerializer, NestedGroupModelSerializer, NetBoxModelSerializer, ValidatedModelSerializer,
|
||||||
@ -668,6 +668,7 @@ class DeviceSerializer(NetBoxModelSerializer):
|
|||||||
virtual_chassis = NestedVirtualChassisSerializer(required=False, allow_null=True, default=None)
|
virtual_chassis = NestedVirtualChassisSerializer(required=False, allow_null=True, default=None)
|
||||||
vc_position = serializers.IntegerField(allow_null=True, max_value=255, min_value=0, default=None)
|
vc_position = serializers.IntegerField(allow_null=True, max_value=255, min_value=0, default=None)
|
||||||
config_template = NestedConfigTemplateSerializer(required=False, allow_null=True, default=None)
|
config_template = NestedConfigTemplateSerializer(required=False, allow_null=True, default=None)
|
||||||
|
ipaddressfunctions = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Device
|
model = Device
|
||||||
@ -676,6 +677,7 @@ class DeviceSerializer(NetBoxModelSerializer):
|
|||||||
'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'airflow', 'primary_ip',
|
'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'airflow', 'primary_ip',
|
||||||
'primary_ip4', 'primary_ip6', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'description',
|
'primary_ip4', 'primary_ip6', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'description',
|
||||||
'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated',
|
'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated',
|
||||||
|
'ipaddressfunctions',
|
||||||
]
|
]
|
||||||
|
|
||||||
@extend_schema_field(NestedDeviceSerializer)
|
@extend_schema_field(NestedDeviceSerializer)
|
||||||
@ -689,6 +691,14 @@ class DeviceSerializer(NetBoxModelSerializer):
|
|||||||
data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data
|
data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@extend_schema_field(NestedDeviceSerializer)
|
||||||
|
def get_ipaddressfunctions(self, obj):
|
||||||
|
ct = ContentType.objects.get_for_model(obj)
|
||||||
|
ipaddrfuncs = IPAddressFunctionAssignments.objects.filter(assigned_object_type=ct, assigned_object_id=obj.id)
|
||||||
|
serializer = NestedIPAddressFunctionAssignmentsSerializer
|
||||||
|
context = {'request': self.context['request']}
|
||||||
|
return serializer(ipaddrfuncs, context=context, many=True).data
|
||||||
|
|
||||||
|
|
||||||
class DeviceWithConfigContextSerializer(DeviceSerializer):
|
class DeviceWithConfigContextSerializer(DeviceSerializer):
|
||||||
config_context = serializers.SerializerMethodField(read_only=True)
|
config_context = serializers.SerializerMethodField(read_only=True)
|
||||||
@ -699,6 +709,7 @@ class DeviceWithConfigContextSerializer(DeviceSerializer):
|
|||||||
'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'airflow', 'primary_ip',
|
'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'airflow', 'primary_ip',
|
||||||
'primary_ip4', 'primary_ip6', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'description',
|
'primary_ip4', 'primary_ip6', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'description',
|
||||||
'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'created', 'last_updated',
|
'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'created', 'last_updated',
|
||||||
|
'ipaddressfunctions',
|
||||||
]
|
]
|
||||||
|
|
||||||
@extend_schema_field(serializers.JSONField(allow_null=True))
|
@extend_schema_field(serializers.JSONField(allow_null=True))
|
||||||
|
@ -13,6 +13,7 @@ __all__ = [
|
|||||||
'NestedFHRPGroupSerializer',
|
'NestedFHRPGroupSerializer',
|
||||||
'NestedFHRPGroupAssignmentSerializer',
|
'NestedFHRPGroupAssignmentSerializer',
|
||||||
'NestedIPAddressSerializer',
|
'NestedIPAddressSerializer',
|
||||||
|
'NestedIPAddressFunctionAssignmentsSerializer',
|
||||||
'NestedIPRangeSerializer',
|
'NestedIPRangeSerializer',
|
||||||
'NestedL2VPNSerializer',
|
'NestedL2VPNSerializer',
|
||||||
'NestedL2VPNTerminationSerializer',
|
'NestedL2VPNTerminationSerializer',
|
||||||
@ -205,6 +206,18 @@ class NestedIPAddressSerializer(WritableNestedSerializer):
|
|||||||
fields = ['id', 'url', 'display', 'family', 'address']
|
fields = ['id', 'url', 'display', 'family', 'address']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedIPAddressFunctionAssignmentsSerializer(WritableNestedSerializer):
|
||||||
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:ipaddressfunctionassignments-detail')
|
||||||
|
# assigned_object = serializers.SerializerMethodField(read_only=True)
|
||||||
|
assigned_ip = NestedIPAddressSerializer()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.IPAddressFunctionAssignments
|
||||||
|
fields = [
|
||||||
|
'id', 'url', 'display', 'assigned_ip', 'function'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Services
|
# Services
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user