def get(self, request, *args, **kwargs): group_id = request.GET.get("group_id", None) region_name = request.GET.get("region_name", None) if not group_id or not region_name: result = general_message(400, "not group_id", "参数缺失") return Response(result) services = group_service_relation_repo.get_services_obj_by_group( group_id) if not services: result = general_message(400, "not service", "当前组内无组件,无法操作") return Response(result) service_id_list = [x.service_id for x in services] try: service_status_list = region_api.service_status( self.response_region, self.tenant_name, { "service_ids": service_id_list, "enterprise_id": self.user.enterprise_id }) result = general_message(200, "success", "查询成功", list=service_status_list) return Response(result) except (region_api.CallApiError, ServiceHandleException) as e: logger.debug(e) raise ServiceHandleException(msg="region error", msg_show="访问数据中心失败")
def post(self, request, *args, **kwargs): """ --- parameters: - name: tenantName description: 租户名 required: true type: string paramType: path - name: action description: 操作名称 stop| start|upgrade|deploy required: true type: string paramType: form - name: group_id description: 组id required: true type: string paramType: path """ action = request.data.get("action", None) group_id = int(kwargs.get("group_id", None)) services = group_service_relation_repo.get_services_obj_by_group( group_id) if not services: result = general_message(400, "not service", "当前组内无组件,无法操作") return Response(result) service_ids = [service.service_id for service in services] if action not in ("stop", "start", "upgrade", "deploy"): return Response(general_message(400, "param error", "操作类型错误"), status=400) # 去除掉第三方组件 for service_id in service_ids: service_obj = service_repo.get_service_by_service_id(service_id) if service_obj and service_obj.service_source == "third_party": service_ids.remove(service_id) 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.tenant, self.user, action, service_ids, self.oauth_instance) if code != 200: result = general_message(code, "batch manage error", msg) else: result = general_message(200, "success", "操作成功") return Response(result, status=result["code"])
def get(self, request, *args, **kwargs): group_id = request.GET.get("group_id", None) region_name = request.GET.get("region_name", None) if not group_id or not region_name: result = general_message(400, "not group_id", "参数缺失") return Response(result) services = group_service_relation_repo.get_services_obj_by_group( group_id) if not services: result = general_message(400, "not service", "当前组内无应用,无法操作") return Response(result) service_id_list = [x.service_id for x in services] service_status_list = region_api.service_status( self.response_region, self.tenant_name, { "service_ids": service_id_list, "enterprise_id": self.user.enterprise_id }) result = general_message(200, "success", "查询成功", list=service_status_list) return Response(result)
def post(self, request, *args, **kwargs): """ --- parameters: - name: tenantName description: 租户名 required: true type: string paramType: path - name: action description: 操作名称 stop| start|upgrade|deploy required: true type: string paramType: form - name: group_id description: 组id required: true type: string paramType: path """ try: action = request.data.get("action", None) group_id = int(kwargs.get("group_id", None)) services = group_service_relation_repo.get_services_obj_by_group( group_id) if not services: result = general_message(400, "not service", "当前组内无应用,无法操作") return Response(result) service_ids = [service.service_id for service in services] if action not in ("stop", "start", "upgrade", "deploy"): return Response(general_message(400, "param error", "操作类型错误"), status=400) # 去除掉三方服务 for service_id in service_ids: service_obj = service_repo.get_service_by_service_id( service_id) if service_obj: if service_obj.service_source == "third_party": service_ids.remove(service_id) # 校验权限 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 action == "stop": if "stop_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) if action == "start": if "start_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) if action == "upgrade": if "restart_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) if action == "deploy": if "deploy_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) # 批量操作 code, msg = app_manage_service.batch_operations( self.tenant, self.user, action, service_ids) if code != 200: result = general_message(code, "batch manage error", msg) else: result = general_message(200, "success", "操作成功") except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=result["code"])