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"])
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)
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"])
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"])
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"])
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"])