Completed virtual chassis API serializers
This commit is contained in:
@@ -488,14 +488,15 @@ class DeviceSerializer(CustomFieldModelSerializer):
|
||||
primary_ip4 = DeviceIPAddressSerializer()
|
||||
primary_ip6 = DeviceIPAddressSerializer()
|
||||
parent_device = serializers.SerializerMethodField()
|
||||
virtual_chassis = serializers.SerializerMethodField()
|
||||
cluster = NestedClusterSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Device
|
||||
fields = [
|
||||
'id', 'name', 'display_name', 'device_type', 'device_role', 'tenant', 'platform', 'serial', 'asset_tag',
|
||||
'site', 'rack', 'position', 'face', 'parent_device', 'status', 'primary_ip', 'primary_ip4', 'primary_ip6',
|
||||
'cluster', 'comments', 'custom_fields', 'created', 'last_updated',
|
||||
'site', 'rack', 'position', 'face', 'parent_device', 'virtual_chassis', 'status', 'primary_ip',
|
||||
'primary_ip4', 'primary_ip6', 'cluster', 'comments', 'custom_fields', 'created', 'last_updated',
|
||||
]
|
||||
|
||||
def get_parent_device(self, obj):
|
||||
@@ -508,6 +509,16 @@ class DeviceSerializer(CustomFieldModelSerializer):
|
||||
data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data
|
||||
return data
|
||||
|
||||
def get_virtual_chassis(self, obj):
|
||||
try:
|
||||
vc_membership = obj.vc_membership
|
||||
except VCMembership.DoesNotExist:
|
||||
return None
|
||||
context = {'request': self.context['request']}
|
||||
data = NestedVirtualChassisSerializer(instance=vc_membership.virtual_chassis, context=context).data
|
||||
data['vc_membership'] = NestedVCMembershipSerializer(instance=vc_membership, context=context).data
|
||||
return data
|
||||
|
||||
|
||||
class WritableDeviceSerializer(CustomFieldModelSerializer):
|
||||
|
||||
@@ -855,6 +866,14 @@ class VCMembershipSerializer(serializers.ModelSerializer):
|
||||
fields = ['id', 'virtual_chassis', 'device', 'position', 'is_master', 'priority']
|
||||
|
||||
|
||||
class NestedVCMembershipSerializer(serializers.ModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:vcmembership-detail')
|
||||
|
||||
class Meta:
|
||||
model = VCMembership
|
||||
fields = ['id', 'url', 'position', 'is_master', 'priority']
|
||||
|
||||
|
||||
class WritableVCMembershipSerializer(ValidatedModelSerializer):
|
||||
|
||||
class Meta:
|
||||
|
Reference in New Issue
Block a user