fix: KPI上报推送到对应网元,查询改用时间戳避免时区转换问题
This commit is contained in:
@@ -2,7 +2,6 @@ package pm
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"math"
|
||||
@@ -16,12 +15,13 @@ import (
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
"be.ems/restagent/config"
|
||||
"xorm.io/xorm"
|
||||
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
wsService "be.ems/src/modules/ws/service"
|
||||
"github.com/go-resty/resty/v2"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/gorilla/mux"
|
||||
"xorm.io/xorm"
|
||||
)
|
||||
|
||||
type Response struct {
|
||||
@@ -226,14 +226,6 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
granularity = int8(seconds)
|
||||
}
|
||||
|
||||
// 黄金指标事件对象
|
||||
kpiEvent := map[string]any{
|
||||
// kip_id ...
|
||||
"neType": kpiReport.Task.NE.NeType,
|
||||
"neName": kpiReport.Task.NE.NEName,
|
||||
"startIndex": kpiIndex,
|
||||
"timeGroup": startTime,
|
||||
}
|
||||
// insert into new kpi_report_xxx table
|
||||
kpiData := new(KpiData)
|
||||
kpiData.Date = startTime
|
||||
@@ -248,6 +240,15 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
kpiData.RmUid = kpiReport.Task.NE.RmUID
|
||||
kpiVal := new(KPIVal)
|
||||
kpiData.CreatedAt = time.Now().UnixMilli()
|
||||
|
||||
// 黄金指标事件对象
|
||||
kpiEvent := map[string]any{
|
||||
// kip_id ...
|
||||
"neType": kpiReport.Task.NE.NeType,
|
||||
"neName": kpiReport.Task.NE.NEName,
|
||||
"startIndex": kpiIndex,
|
||||
"timeGroup": kpiData.CreatedAt,
|
||||
}
|
||||
for _, k := range kpiReport.Task.NE.KPIs {
|
||||
kpiEvent[k.KPIID] = k.Value // kip_id
|
||||
|
||||
@@ -266,15 +267,20 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// 推送到ws订阅组
|
||||
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI, kpiEvent)
|
||||
if kpiReport.Task.NE.NeType == "UPF" {
|
||||
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF, kpiEvent)
|
||||
// 发送到匹配的网元
|
||||
neInfo := neService.NewNeInfoImpl.SelectNeInfoByRmuid(kpiData.RmUid)
|
||||
if neInfo.RmUID == kpiData.RmUid {
|
||||
// 推送到ws订阅组
|
||||
wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent)
|
||||
if neInfo.NeType == "UPF" {
|
||||
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF+neInfo.NeId, kpiEvent)
|
||||
}
|
||||
}
|
||||
|
||||
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... ")
|
||||
@@ -639,7 +645,7 @@ func PostMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
if neInfo == nil {
|
||||
err := errors.New(fmt.Sprintf("not found target NE neType=%s, neId=%s", neType, neId))
|
||||
err := fmt.Errorf("not found target NE neType=%s, neId=%s", neType, neId)
|
||||
log.Error(err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
@@ -692,7 +698,7 @@ func PostMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
default:
|
||||
err = errors.New(fmt.Sprintf("measure task status must be inactive id=%d", id))
|
||||
err = fmt.Errorf("measure task status must be inactive id=%d", id)
|
||||
log.Error("Unable to active measure task:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
@@ -719,7 +725,7 @@ func PostMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
|
||||
services.TransportResponse(w, response.StatusCode(), response.Body())
|
||||
return
|
||||
} else {
|
||||
err = errors.New(fmt.Sprintf("failed to active measure task, NF return error status=%v", response.Status()))
|
||||
err = fmt.Errorf("failed to active measure task, NF return error status=%v", response.Status())
|
||||
log.Error("Unable to active measure task:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
@@ -932,8 +938,6 @@ func PatchMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
if neInfo == nil {
|
||||
em := errors.New("Not found NE info in database")
|
||||
log.Error(em)
|
||||
taskInfo := new(dborm.MeasureTask)
|
||||
taskInfo.Status = dborm.MeasureTaskStatusInactive
|
||||
affected, err := dborm.XormUpdateTableById(id, dborm.TableNameMeasureTask, taskInfo)
|
||||
@@ -986,7 +990,6 @@ func PatchMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
services.ResponseWithJson(w, response.StatusCode(), respMsg)
|
||||
return
|
||||
}
|
||||
|
||||
type Measurement struct {
|
||||
|
||||
Reference in New Issue
Block a user