| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # coding:utf-8
- from rest_framework.response import Response
- from rest_framework.views import APIView
- from drf_spectacular.utils import extend_schema, OpenApiResponse, OpenApiParameter, OpenApiExample, OpenApiTypes
- from .serializers import ProcessListSerializer, ProcessDetailPutSerializer, ProcessDetailDeleteSerializer
- from monitor.pagination import CustomPagination
- from utils.supervisord_utils import SupervisordUtils
- from monitor.permissions import LoginPermission
- class ProcessListView(APIView):
- permission_classes = [LoginPermission]
- @extend_schema(
- parameters=[
- OpenApiParameter(
- name='page',
- type=OpenApiTypes.STR,
- location=OpenApiParameter.QUERY,
- description='页码,第几页',
- ),
- OpenApiParameter(
- name='size',
- type=OpenApiTypes.STR,
- location=OpenApiParameter.QUERY,
- description='每页条目数',
- ),
- OpenApiParameter(
- name='name',
- type=OpenApiTypes.STR,
- location=OpenApiParameter.QUERY,
- description='进程名称',
- ),
- ],
- description="获取监控列表接口",
- request=None,
- responses=ProcessListSerializer
- )
- def get(self, request):
- name = request.query_params.get('name', '').strip()
- data_list = SupervisordUtils().list(name)
- page = CustomPagination()
- queryset = page.paginate_queryset(data_list, request=request, view=self)
- serobj = ProcessListSerializer(queryset, many=True)
- return page.get_paginated_response(serobj.data)
- class ProcessDetailView(APIView):
- permission_classes = [LoginPermission]
- @extend_schema(
- description="停止/重启进程接口",
- request=ProcessDetailPutSerializer,
- responses={
- 200: OpenApiResponse(description="无返回值")
- }
- )
- def post(self, request, *args, **kwargs):
- serobj = ProcessDetailPutSerializer(data=request.data)
- if not serobj.is_valid():
- return Response(serobj.errors, status=400)
- action = request.data['action']
- name = request.data['name']
- sup = SupervisordUtils()
- if action == 'restart':
- sup.restart(name)
- else:
- sup.stop(name)
- return Response(status=200)
- class ProcessDeleteView(APIView):
- permission_classes = [LoginPermission]
- @extend_schema(
- description="删除进程进程接口",
- request=ProcessDetailDeleteSerializer,
- responses={
- 200: OpenApiResponse(description="无返回值")
- }
- )
- def post(self, request, *args, **kwargs):
- serobj = ProcessDetailDeleteSerializer(data=request.data)
- if not serobj.is_valid():
- return Response(serobj.errors, status=400)
- name = request.data['name']
- sup = SupervisordUtils()
- sup.remove(name)
- return Response(status=200)
|