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

Re-implemented interface/connection serializers

This commit is contained in:
Jeremy Stretch
2017-01-30 15:35:01 -05:00
parent 78cd4481e4
commit f0fef94a4f
4 changed files with 70 additions and 42 deletions

View File

@@ -313,7 +313,7 @@ class ConsoleServerPortSerializer(serializers.ModelSerializer):
fields = ['id', 'device', 'name', 'connected_console']
class ChildConsoleServerPortSerializer(serializers.HyperlinkedModelSerializer):
class DeviceConsoleServerPortSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ConsoleServerPort
@@ -333,7 +333,7 @@ class ConsolePortSerializer(serializers.ModelSerializer):
fields = ['id', 'device', 'name', 'cs_port', 'connection_status']
class ChildConsolePortSerializer(serializers.HyperlinkedModelSerializer):
class DeviceConsolePortSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ConsolePort
@@ -352,7 +352,7 @@ class PowerOutletSerializer(serializers.ModelSerializer):
fields = ['id', 'device', 'name', 'connected_port']
class ChildPowerOutletSerializer(serializers.HyperlinkedModelSerializer):
class DevicePowerOutletSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PowerOutlet
@@ -372,7 +372,7 @@ class PowerPortSerializer(serializers.ModelSerializer):
fields = ['id', 'device', 'name', 'power_outlet', 'connection_status']
class ChildPowerPortSerializer(serializers.HyperlinkedModelSerializer):
class DevicePowerPortSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PowerPort
@@ -383,31 +383,70 @@ class ChildPowerPortSerializer(serializers.HyperlinkedModelSerializer):
# Interfaces
#
class InterfaceSerializer(serializers.ModelSerializer):
device = NestedDeviceSerializer()
form_factor = serializers.ReadOnlyField(source='get_form_factor_display')
connection = serializers.SerializerMethodField(read_only=True)
connected_interface = serializers.SerializerMethodField(read_only=True)
class Meta:
model = Interface
fields = ['id', 'device', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'is_connected']
class ChildInterfaceSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Interface
fields = ['id', 'url', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'is_connected']
# TODO: Remove this
class InterfaceDetailSerializer(InterfaceSerializer):
class Meta(InterfaceSerializer.Meta):
fields = [
'id', 'device', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'is_connected',
'id', 'device', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'connection',
'connected_interface',
]
def get_connection(self, obj):
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
class PeerInterfaceSerializer(serializers.HyperlinkedModelSerializer):
device = NestedDeviceSerializer()
class Meta:
model = Interface
fields = ['id', 'url', 'device', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description']
class DeviceInterfaceSerializer(serializers.HyperlinkedModelSerializer):
connection = serializers.SerializerMethodField()
class Meta:
model = Interface
fields = ['id', 'url', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'connection']
def get_connection(self, obj):
if obj.connection:
return NestedInterfaceConnectionSerializer(obj.connection, context=self.context).data
return None
#
# Interface connections
#
class InterfaceConnectionSerializer(serializers.ModelSerializer):
interface_a = PeerInterfaceSerializer()
interface_b = PeerInterfaceSerializer()
class Meta:
model = InterfaceConnection
fields = ['id', 'interface_a', 'interface_b', 'connection_status']
class NestedInterfaceConnectionSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = InterfaceConnection
fields = ['id', 'url', 'connection_status']
#
# Device bays
@@ -447,14 +486,3 @@ class ChildModuleSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Module
fields = ['id', 'url', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'discovered']
#
# Interface connections
#
class InterfaceConnectionSerializer(serializers.ModelSerializer):
class Meta:
model = InterfaceConnection
fields = ['id', 'interface_a', 'interface_b', 'connection_status']