nested_serializers.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from rest_framework import serializers
  2. from dcim.models import Interface
  3. from utilities.api import WritableNestedSerializer
  4. from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
  5. __all__ = [
  6. 'NestedClusterGroupSerializer',
  7. 'NestedClusterSerializer',
  8. 'NestedClusterTypeSerializer',
  9. 'NestedInterfaceSerializer',
  10. 'NestedVirtualMachineSerializer',
  11. ]
  12. #
  13. # Clusters
  14. #
  15. class NestedClusterTypeSerializer(WritableNestedSerializer):
  16. url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail')
  17. class Meta:
  18. model = ClusterType
  19. fields = ['id', 'url', 'name', 'slug']
  20. class NestedClusterGroupSerializer(WritableNestedSerializer):
  21. url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail')
  22. class Meta:
  23. model = ClusterGroup
  24. fields = ['id', 'url', 'name', 'slug']
  25. class NestedClusterSerializer(WritableNestedSerializer):
  26. url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail')
  27. class Meta:
  28. model = Cluster
  29. fields = ['id', 'url', 'name']
  30. #
  31. # Virtual machines
  32. #
  33. class NestedVirtualMachineSerializer(WritableNestedSerializer):
  34. url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualmachine-detail')
  35. class Meta:
  36. model = VirtualMachine
  37. fields = ['id', 'url', 'name']
  38. class NestedInterfaceSerializer(WritableNestedSerializer):
  39. url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:interface-detail')
  40. virtual_machine = NestedVirtualMachineSerializer(read_only=True)
  41. class Meta:
  42. model = Interface
  43. fields = ['id', 'url', 'virtual_machine', 'name']