Exemple #1
0
    def post(self, request, *args, **kwargs):
        """
        停止服务
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path

        """
        try:
            code, msg, event = app_manage_service.stop(self.tenant, self.service, self.user)
            bean = {}
            if event:
                bean = event.to_dict()
                bean["type_cn"] = event_service.translate_event_type(event.type)
            if code != 200:
                return Response(general_message(code, "stop app error", msg, bean=bean), status=code)
            result = general_message(code, "success", "操作成功", bean=bean)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
    def post(self, request, *args, **kwargs):
        """
        回滚服务
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path
            - name: deploy_version
              description: 回滚的版本
              required: true
              type: string
              paramType: form

        """
        try:
            deploy_version = request.data.get("deploy_version", None)
            if not deploy_version:
                return Response(general_message(400,
                                                "deploy version is not found",
                                                "请指明回滚的版本"),
                                status=400)

            allow_create, tips = app_service.verify_source(
                self.tenant, self.service.service_region, 0, "start_app")
            if not allow_create:
                return Response(
                    general_message(412, "resource is not enough",
                                    "资源不足,无法回滚"))
            code, msg, event = app_manage_service.roll_back(
                self.tenant, self.service, self.user, deploy_version)
            bean = {}
            if event:
                bean = event.to_dict()
                bean["type_cn"] = event_service.translate_event_type(
                    event.type)
            if code != 200:
                return Response(general_message(code,
                                                "roll back app error",
                                                msg,
                                                bean=bean),
                                status=code)
            result = general_message(code, "success", "操作成功", bean=bean)
        except ResourceNotEnoughException as re:
            logger.exception(re)
            return Response(general_message(10406, "resource is not enough",
                                            re.message),
                            status=412)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
    def post(self, request, *args, **kwargs):
        """
        部署服务
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path

        """
        try:
            group_version = request.data.get("group_version", None)
            is_upgrade = request.data.get("is_upgrade", True)
            allow_create, tips = app_service.verify_source(
                self.tenant, self.service.service_region, 0, "start_app")
            if not allow_create:
                return Response(
                    general_message(412, "resource is not enough",
                                    "资源不足,无法部署"))

            code, msg, event = app_deploy_service.deploy(self.tenant,
                                                         self.service,
                                                         self.user,
                                                         is_upgrade,
                                                         version=group_version)

            bean = {}
            if event:
                bean = event.to_dict()
                bean["type_cn"] = event_service.translate_event_type(
                    event.type)
            if code != 200:
                return Response(general_message(code,
                                                "deploy app error",
                                                msg,
                                                bean=bean),
                                status=code)
            result = general_message(code, "success", "操作成功", bean=bean)
        except ResourceNotEnoughException as re:
            logger.exception(re)
            return Response(general_message(10406, "resource is not enough",
                                            re.message),
                            status=412)
        except AccountOverdueException as re:
            logger.exception(re)
            return Response(general_message(10410, "resource is not enough",
                                            re.message),
                            status=412)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
Exemple #4
0
    def post(self, request, *args, **kwargs):
        """
        启动服务
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path

        """
        try:
            new_add_memory = self.service.min_memory * self.service.min_node
            allow_create, tips = app_service.verify_source(
                self.tenant, self.service.service_region, new_add_memory,
                "start_app")
            if not allow_create:
                return Response(
                    general_message(412, "resource is not enough",
                                    "资源不足,无法启动"))
            code, msg, event = app_manage_service.start(
                self.tenant, self.service, self.user)
            bean = {}
            if event:
                bean = event.to_dict()
                bean["type_cn"] = event_service.translate_event_type(
                    event.type)
            if code != 200:
                return Response(general_message(code,
                                                "start app error",
                                                msg,
                                                bean=bean),
                                status=code)
            result = general_message(code, "success", "操作成功", bean=bean)
        except ResourceNotEnoughException as re:
            logger.exception(re)
            return Response(general_message(10406, "resource is not enough",
                                            re.message),
                            status=412)
        except AccountOverdueException as re:
            logger.exception(re)
            return Response(general_message(10410, "resource is not enough",
                                            re.message),
                            status=412)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
 def deploy_service(self, tenant_obj, service_obj, user, committer_name=None):
     """重新部署"""
     code, msg, event = app_manage_service.deploy(tenant_obj, service_obj, user, committer_name)
     bean = {}
     if event:
         bean = event.to_dict()
         bean["type_cn"] = event_service.translate_event_type(event.type)
     if code != 200:
         return Response(general_message(code, "deploy app error", msg, bean=bean), status=code)
     result = general_message(code, "success", "重新部署成功", bean=bean)
     return Response(result, status=200)
Exemple #6
0
    def post(self, request, *args, **kwargs):
        """
        水平升级服务
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path
            - name: new_node
              description: 节点个数
              required: true
              type: int
              paramType: form

        """
        try:
            new_node = request.data.get("new_node", None)
            if not new_node:
                return Response(general_message(400, "node is null", "请选择节点个数"), status=400)
            new_add_memory = (int(new_node) - self.service.min_node) * self.service.min_memory
            if new_add_memory < 0:
                new_add_memory = 0
            allow_create, tips = app_service.verify_source(self.tenant, self.service.service_region, new_add_memory,
                                                           "start_app")
            if not allow_create:
                return Response(general_message(412, "resource is not enough", "资源不足,无法升级"))

            code, msg, event = app_manage_service.horizontal_upgrade(self.tenant, self.service, self.user,
                                                                     int(new_node))
            bean = {}
            if event:
                bean = event.to_dict()
                bean["type_cn"] = event_service.translate_event_type(event.type)
            if code != 200:
                return Response(general_message(code, "horizontal upgrade error", msg, bean=bean), status=code)
            result = general_message(code, "success", "操作成功", bean=bean)
        except ResourceNotEnoughException as re:
            logger.exception(re)
            return Response(general_message(10406, "resource is not enough", re.message), status=412)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
    def delete(self, request, *args, **kwargs):
        """
        二次确认删除应用
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: service_id
              description: 应用id
              required: true
              type: string
              paramType: form
        """
        try:
            service_id = request.data.get("service_id", None)
            identitys = team_services.get_user_perm_identitys_in_permtenant(
                user_id=self.user.user_id, tenant_name=self.tenant_name)
            perm_tuple = team_services.get_user_perm_in_tenant(
                user_id=self.user.user_id, tenant_name=self.tenant_name)
            if "delete_service" not in perm_tuple and "owner" not in identitys and "admin" \
                    not in identitys and "developer" not in identitys:
                return Response(general_message(400, "Permission denied",
                                                "没有删除应用权限"),
                                status=400)
            service = service_repo.get_service_by_service_id(service_id)
            code, msg, event = app_manage_service.delete_again(self.user,
                                                               self.tenant,
                                                               service,
                                                               is_force=True)
            bean = {}
            if event:
                bean = event.to_dict()
                bean["type_cn"] = event_service.translate_event_type(
                    event.type)
            if code != 200:
                return Response(general_message(code,
                                                "delete service error",
                                                msg,
                                                bean=bean),
                                status=code)
            result = general_message(code, "success", "操作成功", bean=bean)

        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
Exemple #8
0
    def post(self, request, *args, **kwargs):
        """
        水平升级服务
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path
            - name: new_node
              description: 节点个数
              required: true
              type: int
              paramType: form

        """
        try:
            new_node = request.data.get("new_node", None)
            if not new_node:
                return Response(general_message(400, "node is null",
                                                "请选择节点个数"),
                                status=400)
            code, msg, event = app_manage_service.horizontal_upgrade(
                self.tenant, self.service, self.user, int(new_node))
            bean = {}
            if event:
                bean = event.to_dict()
                bean["type_cn"] = event_service.translate_event_type(
                    event.type)
            if code != 200:
                return Response(general_message(code,
                                                "horizontal upgrade error",
                                                msg,
                                                bean=bean),
                                status=code)
            result = general_message(code, "success", "操作成功", bean=bean)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
Exemple #9
0
    def delete(self, request, *args, **kwargs):
        """
        删除服务
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path
            - name: is_force
              description: true直接删除,false进入回收站
              required: true
              type: boolean
              paramType: form

        """
        try:
            is_force = request.data.get("is_force", False)

            code, msg, event = app_manage_service.delete(
                self.user, self.tenant, self.service, is_force)
            bean = {}
            if event:
                bean = event.to_dict()
                bean["type_cn"] = event_service.translate_event_type(
                    event.type)
            if code != 200:
                return Response(general_message(code,
                                                "delete service error",
                                                msg,
                                                bean=bean),
                                status=code)
            result = general_message(code, "success", "操作成功", bean=bean)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
Exemple #10
0
 def post(self, request, *args, **kwargs):
     """
     更新
     """
     try:
         allow_create, tips = app_service.verify_source(
             self.tenant, self.service.service_region, 0, "start_app")
         if not allow_create:
             return Response(
                 general_message(412, "resource is not enough",
                                 "资源不足,无法更新"))
         code, msg, event = app_manage_service.upgrade(
             self.tenant, self.service, self.user)
         bean = {}
         if event:
             bean = event.to_dict()
             bean["type_cn"] = event_service.translate_event_type(
                 event.type)
         if code != 200:
             return Response(general_message(code,
                                             "upgrade app error",
                                             msg,
                                             bean=bean),
                             status=code)
         result = general_message(code, "success", "操作成功", bean=bean)
     except ServiceHandleException as e:
         raise e
     except ResourceNotEnoughException as re:
         logger.exception(re)
         return Response(general_message(10406, "resource is not enough",
                                         re.message),
                         status=412)
     except AccountOverdueException as re:
         logger.exception(re)
         return Response(general_message(10410, "resource is not enough",
                                         re.message),
                         status=412)
     except Exception as e:
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=result["code"])