1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

#1269: Reworked interface connection serialization

This commit is contained in:
Jeremy Stretch
2017-07-10 11:52:36 -04:00
parent 618d75566f
commit 530789b733

View File

@ -1,4 +1,5 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from collections import OrderedDict
from rest_framework import serializers from rest_framework import serializers
from rest_framework.validators import UniqueTogetherValidator from rest_framework.validators import UniqueTogetherValidator
@ -601,25 +602,28 @@ class InterfaceSerializer(serializers.ModelSerializer):
device = NestedDeviceSerializer() device = NestedDeviceSerializer()
form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES) form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES)
lag = NestedInterfaceSerializer() lag = NestedInterfaceSerializer()
is_connected = serializers.SerializerMethodField(read_only=True)
connection = serializers.SerializerMethodField(read_only=True) connection = serializers.SerializerMethodField(read_only=True)
connected_interface = serializers.SerializerMethodField(read_only=True)
class Meta: class Meta:
model = Interface model = Interface
fields = [ fields = [
'id', 'device', 'name', 'form_factor', 'enabled', 'lag', 'mtu', 'mac_address', 'mgmt_only', 'description', 'id', 'device', 'name', 'form_factor', 'enabled', 'lag', 'mtu', 'mac_address', 'mgmt_only', 'description',
'connection', 'connected_interface', 'is_connected', 'connection',
] ]
def get_connection(self, obj): def get_is_connected(self, obj):
if obj.connection: return bool(obj.connection)
return NestedInterfaceConnectionSerializer(obj.connection, context=self.context).data
return None
def get_connected_interface(self, obj): def get_connection(self, obj):
if obj.connected_interface: data = OrderedDict((
return PeerInterfaceSerializer(obj.connected_interface, context=self.context).data ('interface', None),
return None ('status', None),
))
if obj.connection:
data['interface'] = PeerInterfaceSerializer(obj.connected_interface, context=self.context).data
data['status'] = obj.connection.connection_status
return data
class PeerInterfaceSerializer(serializers.ModelSerializer): class PeerInterfaceSerializer(serializers.ModelSerializer):