views.py 1.8 KB

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