| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # 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 put(self, request):
- 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)
- @extend_schema(
- description="删除进程进程接口",
- request=ProcessDetailDeleteSerializer,
- responses={
- 200: OpenApiResponse(description="无返回值")
- }
- )
- def delete(self, request):
- 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)
|