Esempio n. 1
0
 def post(self, request, app_id, *args, **kwargs):
     sos = ServiceGroupOperationsSerializer(data=request.data)
     sos.is_valid(raise_exception=True)
     app = group_service.get_app_by_id(self.team, self.region_name, app_id)
     if not app:
         raise ErrAppNotFound
     service_ids = sos.data.get("service_ids", None)
     if not service_ids or len(service_ids) == 0:
         service_ids = app_service.get_group_services_by_id(app_id)
     # TODO: Check the amount of resources used
     action = sos.data.get("action")
     if action == "stop":
         self.has_perms([300006, 400008])
     if action == "start":
         self.has_perms([300005, 400006])
     if action == "upgrade":
         self.has_perms([300007, 400009])
     if action == "deploy":
         self.has_perms([300008, 400010])
     code, msg = app_manage_service.batch_operations(self.team, request.user, action, service_ids, None)
     if code != 200:
         result = {"msg": "batch operation error"}
         rst_serializer = FailSerializer(data=result)
         rst_serializer.is_valid()
         return Response(rst_serializer.data, status=status.HTTP_400_BAD_REQUEST)
     else:
         result = {"msg": msg}
         rst_serializer = SuccessSerializer(data=result)
         rst_serializer.is_valid()
         return Response(rst_serializer.data, status=status.HTTP_200_OK)
Esempio n. 2
0
 def post(self, request, app_id, *args, **kwargs):
     try:
         serializers = ServiceGroupOperationsSerializer(data=request.data)
         serializers.is_valid(raise_exception=True)
     except ValidationError as e:
         logger.debug(e)
         result = {"msg": "请求参数错误"}
         rst_serializer = FailSerializer(data=result)
         rst_serializer.is_valid()
         return Response(rst_serializer.data,
                         status=status.HTTP_400_BAD_REQUEST)
     tenant, service_ids = app_service.get_group_services_by_id(app_id)
     if tenant:
         code, msg = app_service.group_services_operation(
             tenant, serializers.data.get("action"), service_ids)
         if code != 200:
             result = {"msg": "batch manage error"}
             rst_serializer = FailSerializer(data=result)
             rst_serializer.is_valid()
             return Response(rst_serializer.data,
                             status=status.HTTP_400_BAD_REQUEST)
         else:
             result = {"msg": "操作成功"}
             rst_serializer = SuccessSerializer(data=result)
             rst_serializer.is_valid()
             return Response(rst_serializer.data, status=status.HTTP_200_OK)
     else:
         result = {"msg": "该应用所属团队已被删除"}
         rst_serializer = FailSerializer(data=result)
         rst_serializer.is_valid()
     return Response(rst_serializer.data, status=status.HTTP_404_NOT_FOUND)
Esempio n. 3
0
class APPOperationsView(TeamAppAPIView):
    @swagger_auto_schema(
        operation_description="操作应用",
        request_body=ServiceGroupOperationsSerializer(),
        manual_parameters=[
            openapi.Parameter("app_id",
                              openapi.IN_PATH,
                              description="应用组id",
                              type=openapi.TYPE_INTEGER),
        ],
        responses={
            status.HTTP_200_OK: SuccessSerializer,
            status.HTTP_400_BAD_REQUEST: FailSerializer,
            status.HTTP_404_NOT_FOUND: FailSerializer
        },
        tags=['openapi-apps'],
    )
    def post(self, request, app_id, *args, **kwargs):
        sos = ServiceGroupOperationsSerializer(data=request.data)
        sos.is_valid(raise_exception=True)
        app = group_service.get_app_by_id(self.team, self.region_name, app_id)
        if not app:
            raise ErrAppNotFound
        service_ids = sos.data.get("service_ids", None)
        if not service_ids or len(service_ids) == 0:
            service_ids = app_service.get_group_services_by_id(app_id)
        # TODO: Check the amount of resources used
        action = sos.data.get("action")
        if action == "stop":
            self.has_perms([300006, 400008])
        if action == "start":
            self.has_perms([300005, 400006])
        if action == "upgrade":
            self.has_perms([300007, 400009])
        if action == "deploy":
            self.has_perms([300008, 400010])
        code, msg = app_manage_service.batch_operations(
            self.team, request.user, action, service_ids, None)
        if code != 200:
            result = {"msg": "batch operation error"}
            rst_serializer = FailSerializer(data=result)
            rst_serializer.is_valid()
            return Response(rst_serializer.data,
                            status=status.HTTP_400_BAD_REQUEST)
        else:
            result = {"msg": msg}
            rst_serializer = SuccessSerializer(data=result)
            rst_serializer.is_valid()
            return Response(rst_serializer.data, status=status.HTTP_200_OK)
Esempio n. 4
0
class APPOperationsView(BaseOpenAPIView):
    @swagger_auto_schema(
        operation_description="操作应用",
        request_body=ServiceGroupOperationsSerializer(),
        responses={
            status.HTTP_200_OK: SuccessSerializer,
            status.HTTP_400_BAD_REQUEST: FailSerializer,
            status.HTTP_404_NOT_FOUND: FailSerializer
        },
        tags=['openapi-apps'],
    )
    def post(self, request, app_id, *args, **kwargs):
        try:
            serializers = ServiceGroupOperationsSerializer(data=request.data)
            serializers.is_valid(raise_exception=True)
        except ValidationError as e:
            logger.debug(e)
            result = {"msg": "请求参数错误"}
            rst_serializer = FailSerializer(data=result)
            rst_serializer.is_valid()
            return Response(rst_serializer.data,
                            status=status.HTTP_400_BAD_REQUEST)
        tenant, service_ids = app_service.get_group_services_by_id(app_id)
        if tenant:
            code, msg = app_service.group_services_operation(
                tenant, serializers.data.get("action"), service_ids)
            if code != 200:
                result = {"msg": "batch manage error"}
                rst_serializer = FailSerializer(data=result)
                rst_serializer.is_valid()
                return Response(rst_serializer.data,
                                status=status.HTTP_400_BAD_REQUEST)
            else:
                result = {"msg": "操作成功"}
                rst_serializer = SuccessSerializer(data=result)
                rst_serializer.is_valid()
                return Response(rst_serializer.data, status=status.HTTP_200_OK)
        else:
            result = {"msg": "该应用所属团队已被删除"}
            rst_serializer = FailSerializer(data=result)
            rst_serializer.is_valid()
        return Response(rst_serializer.data, status=status.HTTP_404_NOT_FOUND)