mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-16 12:12:53 -06:00
Completed virtual chassis API serializers
This commit is contained in:
parent
8d1676db54
commit
d7354f4dab
@ -488,14 +488,15 @@ class DeviceSerializer(CustomFieldModelSerializer):
|
|||||||
primary_ip4 = DeviceIPAddressSerializer()
|
primary_ip4 = DeviceIPAddressSerializer()
|
||||||
primary_ip6 = DeviceIPAddressSerializer()
|
primary_ip6 = DeviceIPAddressSerializer()
|
||||||
parent_device = serializers.SerializerMethodField()
|
parent_device = serializers.SerializerMethodField()
|
||||||
|
virtual_chassis = serializers.SerializerMethodField()
|
||||||
cluster = NestedClusterSerializer()
|
cluster = NestedClusterSerializer()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Device
|
model = Device
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'name', 'display_name', 'device_type', 'device_role', 'tenant', 'platform', 'serial', 'asset_tag',
|
'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',
|
'site', 'rack', 'position', 'face', 'parent_device', 'virtual_chassis', 'status', 'primary_ip',
|
||||||
'cluster', 'comments', 'custom_fields', 'created', 'last_updated',
|
'primary_ip4', 'primary_ip6', 'cluster', 'comments', 'custom_fields', 'created', 'last_updated',
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_parent_device(self, obj):
|
def get_parent_device(self, obj):
|
||||||
@ -508,6 +509,16 @@ class DeviceSerializer(CustomFieldModelSerializer):
|
|||||||
data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data
|
data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data
|
||||||
return 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):
|
class WritableDeviceSerializer(CustomFieldModelSerializer):
|
||||||
|
|
||||||
@ -855,6 +866,14 @@ class VCMembershipSerializer(serializers.ModelSerializer):
|
|||||||
fields = ['id', 'virtual_chassis', 'device', 'position', 'is_master', 'priority']
|
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 WritableVCMembershipSerializer(ValidatedModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -235,7 +235,7 @@ class PlatformViewSet(ModelViewSet):
|
|||||||
|
|
||||||
class DeviceViewSet(CustomFieldModelViewSet):
|
class DeviceViewSet(CustomFieldModelViewSet):
|
||||||
queryset = Device.objects.select_related(
|
queryset = Device.objects.select_related(
|
||||||
'device_type__manufacturer', 'device_role', 'tenant', 'platform', 'site', 'rack', 'parent_bay',
|
'device_type__manufacturer', 'device_role', 'tenant', 'platform', 'site', 'rack', 'parent_bay', 'vc_membership',
|
||||||
).prefetch_related(
|
).prefetch_related(
|
||||||
'primary_ip4__nat_outside', 'primary_ip6__nat_outside',
|
'primary_ip4__nat_outside', 'primary_ip6__nat_outside',
|
||||||
)
|
)
|
||||||
|
@ -643,11 +643,18 @@ class InventoryItemFilter(DeviceComponentFilterSet):
|
|||||||
fields = ['name', 'part_id', 'serial', 'discovered']
|
fields = ['name', 'part_id', 'serial', 'discovered']
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualChassisFilter(django_filters.FilterSet):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = VirtualChassis
|
||||||
|
fields = ['domain']
|
||||||
|
|
||||||
|
|
||||||
class VCMembershipFilter(django_filters.FilterSet):
|
class VCMembershipFilter(django_filters.FilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VCMembership
|
model = VCMembership
|
||||||
fields = ['virtual_chassis']
|
fields = ['virtual_chassis', 'device', 'position', 'is_master', 'priority']
|
||||||
|
|
||||||
|
|
||||||
class ConsoleConnectionFilter(django_filters.FilterSet):
|
class ConsoleConnectionFilter(django_filters.FilterSet):
|
||||||
|
Loading…
Reference in New Issue
Block a user