diff --git a/features/pm/performance.go b/features/pm/performance.go index 94aea455..c7a5b3b3 100644 --- a/features/pm/performance.go +++ b/features/pm/performance.go @@ -335,135 +335,6 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) { services.ResponseStatusOK204NoContent(w) } -// PostGoldKPIFromNF 已废弃 -// post kpi report from NEs, insert insto gold_kpi table, discard... -func PostGoldKPIFromNF(w http.ResponseWriter, r *http.Request) { - log.Debug("PostKPIReportFromNF processing... ") - - vars := mux.Vars(r) - apiVer := vars["apiVersion"] - if apiVer != global.ApiVersionV1 { - log.Error("Uri api version is invalid. apiVersion:", apiVer) - services.ResponseNotFound404UriNotExist(w, r) - return - } - - // body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) - body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) - if err != nil { - log.Error("Faile to io.ReadAll: ", err) - services.ResponseNotFound404UriNotExist(w, r) - return - } - log.Trace("Request body:", string(body)) - kpiReport := new(KpiReport) - _ = json.Unmarshal(body, &kpiReport) - log.Trace("kpiReport:", kpiReport) - - session := xEngine.NewSession() - defer session.Close() - goldKpi := new(GoldKpi) - layout := time.RFC3339Nano - goldKpi.Date = GetDateFromTimeString(layout, kpiReport.Task.Period.StartTime) - goldKpi.Index, _ = strconv.Atoi(vars["index"]) - goldKpi.StartTime = global.GetFmtTimeString(layout, kpiReport.Task.Period.StartTime, time.DateTime) - goldKpi.EndTime = global.GetFmtTimeString(layout, kpiReport.Task.Period.EndTime, time.DateTime) - // get time granularity from startTime and endTime - seconds, _ := global.GetSecondDuration(goldKpi.StartTime, goldKpi.EndTime) - goldKpi.Granularity = 60 - if seconds != 0 && seconds <= math.MaxInt8 && seconds >= math.MinInt8 { - goldKpi.Granularity = int8(seconds) - } - goldKpi.NEName = kpiReport.Task.NE.NEName - goldKpi.RmUid = kpiReport.Task.NE.RmUID - goldKpi.NEType = kpiReport.Task.NE.NeType - goldKpi.Timestamp = global.GetFmtTimeString(layout, kpiReport.Timestamp, time.DateTime) - // 黄金指标事件对象 - kpiEvent := map[string]any{ - // kip_id ... - "neType": goldKpi.NEType, - "neName": goldKpi.NEName, - "rmUID": goldKpi.RmUid, - "startIndex": goldKpi.Index, - "timeGroup": goldKpi.StartTime, - } - // insert into new kpi_report_xxx table - kpiData := new(KpiData) - kpiData.Date = goldKpi.Date - kpiData.Index = goldKpi.Index - //st, _ := time.ParseInLocation(time.RFC3339Nano, kpiReport.Task.Period.StartTime, time.Local) - //et, _ := time.ParseInLocation(time.RFC3339Nano, kpiReport.Task.Period.EndTime, time.Local) - kpiData.StartTime = goldKpi.StartTime - kpiData.EndTime = goldKpi.EndTime - kpiData.Granularity = goldKpi.Granularity - kpiData.NEName = goldKpi.NEName - kpiData.NEType = goldKpi.NEType - kpiData.RmUid = goldKpi.RmUid - kpiVal := new(KPIVal) - kpiData.CreatedAt = time.Now().UnixMilli() - for _, k := range kpiReport.Task.NE.KPIs { - kpiEvent[k.KPIID] = k.Value // kip_id - goldKpi.KpiId = k.KPIID - goldKpi.Value = k.Value - goldKpi.Error = k.Err - - kpiVal.KPIID = k.KPIID - kpiVal.Value = int64(k.Value) - kpiVal.Err = k.Err - kpiData.KPIValues = append(kpiData.KPIValues, *kpiVal) - - //log.Trace("goldKpi:", goldKpi) - - // 启动事务 - err := session.Begin() - if err != nil { - log.Error("Failed to Begin gold_kpi:", err) - services.ResponseInternalServerError500ProcessError(w, err) - return - } - gkpi := &GoldKpi{} - _, err = session.Where("id = ?", 1).ForUpdate().Get(gkpi) - if err != nil { - // 回滚事务 - session.Rollback() - log.Error("Failed to ForUpdate gold_kpi:", err) - services.ResponseInternalServerError500ProcessError(w, err) - return - } - affected, err := session.Insert(goldKpi) - if err != nil && affected <= 0 { - session.Rollback() - log.Error("Failed to insert gold_kpi:", err) - services.ResponseInternalServerError500ProcessError(w, err) - return - } - // 提交事务 - err = session.Commit() - if err != nil { - log.Error("Failed to Commit gold_kpi:", err) - services.ResponseInternalServerError500ProcessError(w, err) - return - } - } - - // insert kpi_report table, no session - tableName := "kpi_report_" + strings.ToLower(kpiReport.Task.NE.NeType) - affected, err := xEngine.Table(tableName).Insert(kpiData) - if err != nil && affected <= 0 { - log.Errorf("Failed to insert %s:%v", tableName, err) - services.ResponseInternalServerError500ProcessError(w, err) - return - } - - // 推送到ws订阅组 - wsService.NewWSSend.ByGroupID(wsService.GROUP_KPI, kpiEvent) - if goldKpi.NEType == "UPF" { - wsService.NewWSSend.ByGroupID(wsService.GROUP_KPI_UPF, kpiEvent) - } - - services.ResponseStatusOK204NoContent(w) -} - type MeasureTask struct { Tasks []Task `json:"Tasks"` NotifyUrl string `json:"NotifyUrl"` /* "http://xEngine.xEngine.xEngine.x:xxxx/api/rest/performanceManagement/v1/elementType/smf/objectType/measureReport */