Browse Source

#1269: Reworked interface connection serialization

Jeremy Stretch 7 years ago
parent
commit
530789b733
1 changed files with 13 additions and 9 deletions
  1. 13 9
      netbox/dcim/api/serializers.py

+ 13 - 9
netbox/dcim/api/serializers.py

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