views.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from __future__ import unicode_literals
  2. from dcim.models import Interface
  3. from extras.api.views import CustomFieldModelViewSet
  4. from utilities.api import FieldChoicesViewSet, ModelViewSet
  5. from virtualization import filters
  6. from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
  7. from . import serializers
  8. #
  9. # Field choices
  10. #
  11. class VirtualizationFieldChoicesViewSet(FieldChoicesViewSet):
  12. fields = (
  13. (VirtualMachine, ['status']),
  14. )
  15. #
  16. # Clusters
  17. #
  18. class ClusterTypeViewSet(ModelViewSet):
  19. queryset = ClusterType.objects.all()
  20. serializer_class = serializers.ClusterTypeSerializer
  21. class ClusterGroupViewSet(ModelViewSet):
  22. queryset = ClusterGroup.objects.all()
  23. serializer_class = serializers.ClusterGroupSerializer
  24. class ClusterViewSet(CustomFieldModelViewSet):
  25. queryset = Cluster.objects.select_related('type', 'group')
  26. serializer_class = serializers.ClusterSerializer
  27. write_serializer_class = serializers.WritableClusterSerializer
  28. filter_class = filters.ClusterFilter
  29. #
  30. # Virtual machines
  31. #
  32. class VirtualMachineViewSet(CustomFieldModelViewSet):
  33. queryset = VirtualMachine.objects.all()
  34. serializer_class = serializers.VirtualMachineSerializer
  35. write_serializer_class = serializers.WritableVirtualMachineSerializer
  36. filter_class = filters.VirtualMachineFilter
  37. class InterfaceViewSet(ModelViewSet):
  38. queryset = Interface.objects.filter(virtual_machine__isnull=False).select_related('virtual_machine')
  39. serializer_class = serializers.InterfaceSerializer
  40. write_serializer_class = serializers.WritableInterfaceSerializer
  41. filter_class = filters.InterfaceFilter