ref: 多core表结构和代码调整修改
This commit is contained in:
@@ -47,8 +47,8 @@ func PostCDREventFrom(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
// 是否存在网元
|
||||
neInfo := neService.NewNeInfo.FindByRmuid(body.RmUID)
|
||||
if neInfo.NeType != body.NeType || neInfo.RmUID != body.RmUID {
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", body.RmUID)
|
||||
if neInfo.NeType != body.NeType || neInfo.NeUID != body.RmUID {
|
||||
services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("network element does not exist"))
|
||||
return
|
||||
}
|
||||
@@ -88,14 +88,14 @@ func PostCDREventFrom(w http.ResponseWriter, r *http.Request) {
|
||||
switch neInfo.NeType {
|
||||
case "IMS":
|
||||
if v, ok := body.CDR["recordType"]; ok && (v == "MOC" || v == "MTSM") {
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s", wsService.GROUP_IMS_CDR, neInfo.NeId), data)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_IMS_CDR, neInfo.CoreUID, neInfo.NeUID), data)
|
||||
}
|
||||
case "SMF":
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s", wsService.GROUP_SMF_CDR, neInfo.NeId), data)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_SMF_CDR, neInfo.CoreUID, neInfo.NeUID), data)
|
||||
case "SMSC":
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s", wsService.GROUP_SMSC_CDR, neInfo.NeId), data)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_SMSC_CDR, neInfo.CoreUID, neInfo.NeUID), data)
|
||||
case "SGWC":
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s", wsService.GROUP_SGWC_CDR, neInfo.NeId), data)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_SGWC_CDR, neInfo.CoreUID, neInfo.NeUID), data)
|
||||
}
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
|
||||
@@ -15,9 +15,7 @@ import (
|
||||
"be.ems/lib/global"
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
"be.ems/src/framework/constants"
|
||||
"be.ems/src/framework/database/db"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
|
||||
"github.com/go-resty/resty/v2"
|
||||
"github.com/gorilla/mux"
|
||||
@@ -26,8 +24,6 @@ import (
|
||||
var (
|
||||
// NE CM export/import
|
||||
NeCmUri = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/cm"
|
||||
// NE info
|
||||
UriNeInfo = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
|
||||
// NE backup file
|
||||
UriNeCmFile = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}"
|
||||
// service action uri, action: start/stop/restart
|
||||
@@ -36,7 +32,6 @@ var (
|
||||
UriNeInstance = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/instance/{action}"
|
||||
|
||||
CustomNeCmUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/cm"
|
||||
CustomUriNeInfo = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
|
||||
CustomUriNeCmFile = config.UriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}"
|
||||
// service action uri, action: start/stop/restart
|
||||
CustomUriNeService = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/service/{action}"
|
||||
@@ -68,37 +63,6 @@ func init() {
|
||||
SetTimeout(time.Duration(1 * time.Second))
|
||||
}
|
||||
|
||||
func GetNeInfo(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("GetNeInfo processing... ")
|
||||
|
||||
// _, err := services.CheckFrontValidRequest(w, r)
|
||||
// if err != nil {
|
||||
// log.Error("Request error:", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" {
|
||||
log.Error("elementTypeValue is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
neId := services.GetUriParamString(r, "ne_id", ",", false, false)
|
||||
|
||||
// no, _ := strconv.ParseInt(neId, 10, 64)
|
||||
neInfo, err := dborm.XormGetNeInfo(neType, neId)
|
||||
if err != nil {
|
||||
log.Error("dborm.XormGetNeInfo is failed:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
var response services.DataResponse
|
||||
response.Data = neInfo
|
||||
services.ResponseWithJson(w, http.StatusOK, response)
|
||||
}
|
||||
|
||||
type OmcNeConfig struct {
|
||||
NeId string `json:"neId" xorm:"ne_id"` // 网元标识(内部),
|
||||
RmUID string `json:"rmUID" xorm:"rm_uid"` // rmUID 网元唯一标识
|
||||
@@ -110,291 +74,6 @@ type OmcNeConfig struct {
|
||||
Dn string `json:"dn" xorm:"dn"` // 资源里边的ManagedBy,性能的Dn,网络唯一标识
|
||||
}
|
||||
|
||||
func PostNeInfo(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("PostNeInfo processing... ")
|
||||
|
||||
// _, err := services.CheckFrontValidRequest(w, r)
|
||||
// if err != nil {
|
||||
// log.Error("Request error:", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" {
|
||||
log.Error("elementTypeValue is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
neTypeUpper := strings.ToUpper(neType)
|
||||
syncFlag := services.GetUriParamString(r, "sync2ne", ",", false, false)
|
||||
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
|
||||
if err != nil {
|
||||
log.Error("Failed to o.ReadAll:", err)
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
log.Trace("Body:", string(body))
|
||||
|
||||
neInfo := new(dborm.NeInfo)
|
||||
err = json.Unmarshal(body, neInfo)
|
||||
if err != nil {
|
||||
log.Error("Failed to json.Unmarshal:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
//neInfo.UpdateTime = time.Now().Format(time.DateTime)
|
||||
neInfo.UpdateTime = time.Now()
|
||||
log.Debug("NE info:", neInfo)
|
||||
|
||||
//if !config.GetYamlConfig().OMC.Chk2Ne {
|
||||
if syncFlag == "false" || neTypeUpper == config.GetYamlConfig().OMC.NeType {
|
||||
neInfo.Status = NEStatusMaintain
|
||||
affected, err := dborm.XormInsertNeInfo(neInfo)
|
||||
if err != nil {
|
||||
log.Error("Failed to insert Ne info:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 刷新缓存,不存在结构体网元Id空字符串
|
||||
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
|
||||
|
||||
mapRow := make(map[string]interface{})
|
||||
row := map[string]interface{}{"affectedRows": affected}
|
||||
mapRow["data"] = row
|
||||
services.ResponseWithJson(w, http.StatusOK, mapRow)
|
||||
return
|
||||
} else {
|
||||
hostUri := global.CombineHostUri(neInfo.Ip, neInfo.Port)
|
||||
//hostUri := fmt.Sprintf("http://%s:%v", neInfo.Ip, neInfo.Port)
|
||||
apiUri := fmt.Sprintf("%s/systemManagement/v1/elementType/%s/objectType/config/omcNeConfig?ne_id=%s", config.DefaultUriPrefix, strings.ToLower(neInfo.NeType), neInfo.NeId)
|
||||
requestURI2NF := fmt.Sprintf("%s%s", hostUri, apiUri)
|
||||
log.Debug("requestURI2NF:", requestURI2NF)
|
||||
|
||||
omcNeConfig := &OmcNeConfig{
|
||||
NeId: neInfo.NeId,
|
||||
RmUID: neInfo.RmUID,
|
||||
NeName: neInfo.NeName,
|
||||
PvFlag: neInfo.PvFlag,
|
||||
Province: neInfo.Province,
|
||||
VendorName: neInfo.VendorName,
|
||||
Dn: neInfo.Dn,
|
||||
}
|
||||
body, _ = json.Marshal(omcNeConfig)
|
||||
response, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
SetBody(body).
|
||||
Put(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Failed to Put:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
log.Info("StatusCode: ", response.StatusCode())
|
||||
|
||||
respMsg := make(map[string]interface{})
|
||||
switch response.StatusCode() {
|
||||
case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted:
|
||||
neInfo.Status = NEStatusActive
|
||||
affected, err := dborm.XormInsertNeInfo(neInfo)
|
||||
if err != nil {
|
||||
log.Error("Failed to dborm.XormInsertNeInfo:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
} else if affected <= 0 {
|
||||
log.Infof("Not record affected to insert ne_info")
|
||||
}
|
||||
|
||||
// 刷新缓存,不存在结构体网元Id空字符串
|
||||
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
return
|
||||
default:
|
||||
log.Info("response body:", string(response.Body()))
|
||||
body := new(map[string]interface{})
|
||||
_ = json.Unmarshal(response.Body(), &body)
|
||||
respMsg["error"] = body
|
||||
}
|
||||
|
||||
services.ResponseWithJson(w, response.StatusCode(), respMsg)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func PutNeInfo(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("PutNeInfo processing... ")
|
||||
|
||||
// _, err := services.CheckFrontValidRequest(w, r)
|
||||
// if err != nil {
|
||||
// log.Error("Request error:", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" {
|
||||
log.Error("elementTypeValue is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
neTypeLower := strings.ToLower(neType)
|
||||
neTypeUpper := strings.ToUpper(neType)
|
||||
syncFlag := services.GetUriParamString(r, "sync2ne", ",", false, false)
|
||||
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
|
||||
if err != nil {
|
||||
log.Error("Failed to io.ReadAll:", err)
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
neInfo := new(dborm.NeInfo)
|
||||
_ = json.Unmarshal(body, neInfo)
|
||||
neInfo.NeType = strings.ToUpper(neType)
|
||||
neInfo.UpdateTime = time.Now()
|
||||
log.Debug("NE info:", neInfo)
|
||||
|
||||
//if !config.GetYamlConfig().OMC.Chk2Ne {
|
||||
if syncFlag == "false" || neTypeUpper == config.GetYamlConfig().OMC.NeType {
|
||||
neInfo.Status = NEStatusMaintain
|
||||
affected, err := dborm.XormUpdateNeInfo(neInfo)
|
||||
if err != nil {
|
||||
log.Error("Failed to update Ne info:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 刷新缓存,不存在结构体网元Id空字符串
|
||||
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
|
||||
|
||||
mapRow := make(map[string]interface{})
|
||||
row := map[string]interface{}{"affectedRows": affected}
|
||||
mapRow["data"] = row
|
||||
services.ResponseWithJson(w, http.StatusOK, mapRow)
|
||||
return
|
||||
} else {
|
||||
hostUri := global.CombineHostUri(neInfo.Ip, neInfo.Port)
|
||||
//hostUri := fmt.Sprintf("http://%s:%v", neInfo.Ip, neInfo.Port)
|
||||
apiUri := fmt.Sprintf("%s/systemManagement/v1/elementType/%s/objectType/config/omcNeConfig?ne_id=%s", config.DefaultUriPrefix, neTypeLower, neInfo.NeId)
|
||||
requestURI2NF := fmt.Sprintf("%s%s", hostUri, apiUri)
|
||||
log.Debug("requestURI2NF:", requestURI2NF)
|
||||
|
||||
omcNeConfig := &OmcNeConfig{
|
||||
NeId: neInfo.NeId,
|
||||
RmUID: neInfo.RmUID,
|
||||
NeName: neInfo.NeName,
|
||||
PvFlag: neInfo.PvFlag,
|
||||
Province: neInfo.Province,
|
||||
VendorName: neInfo.VendorName,
|
||||
Dn: neInfo.Dn,
|
||||
}
|
||||
body, _ = json.Marshal(omcNeConfig)
|
||||
response, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{constants.HEADER_KEY: r.Header.Get(constants.HEADER_KEY)}).
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
SetBody(body).
|
||||
Put(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Failed to Put:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
log.Info("StatusCode: ", response.StatusCode())
|
||||
|
||||
respMsg := make(map[string]interface{})
|
||||
switch response.StatusCode() {
|
||||
case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted:
|
||||
neInfo.Status = NEStatusActive
|
||||
affected, err := dborm.XormUpdateNeInfo(neInfo)
|
||||
if err != nil {
|
||||
log.Error("Failed to dborm.XormUpdateNeInfo:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
} else if affected <= 0 {
|
||||
log.Infof("Not record affected to insert ne_info")
|
||||
}
|
||||
|
||||
// 刷新缓存,不存在结构体网元Id空字符串
|
||||
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
return
|
||||
default:
|
||||
log.Info("response body:", string(response.Body()))
|
||||
body := new(map[string]interface{})
|
||||
_ = json.Unmarshal(response.Body(), &body)
|
||||
respMsg["error"] = body
|
||||
}
|
||||
|
||||
services.ResponseWithJson(w, response.StatusCode(), respMsg)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func DeleteNeInfo(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("DeleteNeInfo processing... ")
|
||||
|
||||
// _, err := services.CheckFrontValidRequest(w, r)
|
||||
// if err != nil {
|
||||
// log.Error("Request error:", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" {
|
||||
log.Error("elementTypeValue is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
|
||||
if err != nil {
|
||||
log.Error("io.ReadAll is failed:", err)
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
neInfo := new(dborm.NeInfo)
|
||||
_ = json.Unmarshal(body, neInfo)
|
||||
neInfo.NeType = strings.ToUpper(neType)
|
||||
neInfo.NeId = services.GetUriParamString(r, "ne_id", ",", false, false)
|
||||
neInfo, err = dborm.XormGetNeInfo(neInfo.NeType, neInfo.NeId)
|
||||
if err != nil || neInfo == nil {
|
||||
log.Error("Failed to delete Ne info:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
log.Debug("NE info:", neInfo)
|
||||
|
||||
// if NE in active status, can't delete NE
|
||||
if !IsActiveNF(neInfo) {
|
||||
affected, err := dborm.XormDeleteNeInfo(neInfo)
|
||||
if err != nil {
|
||||
log.Error("Failed to delete Ne info:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 刷新缓存,不存在结构体网元Id空字符串
|
||||
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
|
||||
|
||||
mapRow := make(map[string]interface{})
|
||||
row := map[string]interface{}{"affectedRows": affected}
|
||||
mapRow["data"] = row
|
||||
services.ResponseWithJson(w, http.StatusOK, mapRow)
|
||||
return
|
||||
}
|
||||
err = global.ErrCMCannotDeleteActiveNE
|
||||
log.Error(err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
}
|
||||
|
||||
func IsActiveNF(neInfo *dborm.NeInfo) bool {
|
||||
log.Debug("IsActiveNF processing... ")
|
||||
|
||||
|
||||
@@ -1,208 +0,0 @@
|
||||
package cm
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"be.ems/lib/config"
|
||||
"be.ems/lib/core/ctx"
|
||||
"be.ems/lib/global"
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
|
||||
"github.com/go-resty/resty/v2"
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
var (
|
||||
// parameter config management
|
||||
ParamConfigUri = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
|
||||
|
||||
CustomParamConfigUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
|
||||
)
|
||||
|
||||
func GetParamConfigFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("GetParamConfigFromNF processing... ")
|
||||
|
||||
neId := ctx.GetQuery(r, "ne_id")
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" || neId == "" {
|
||||
log.Error("elementTypeValue is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
|
||||
|
||||
var response services.DataResponse
|
||||
if neInfo.NeId == neId && neInfo.NeId != "" {
|
||||
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
|
||||
log.Debug("requestURI2NF:", requestURI2NF)
|
||||
|
||||
resp, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
Get(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Failed to Get from NF:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
} else {
|
||||
_ = json.Unmarshal(resp.Body(), &response)
|
||||
}
|
||||
log.Debug("response:", response)
|
||||
}
|
||||
|
||||
services.ResponseWithJson(w, http.StatusOK, response)
|
||||
}
|
||||
|
||||
func PostParamConfigToNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("PostParamConfigToNF processing... ")
|
||||
|
||||
neId := ctx.GetQuery(r, "ne_id")
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" || neId == "" {
|
||||
log.Error("elementTypeValue is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
|
||||
|
||||
if neInfo.NeId != neId || neInfo.NeId == "" {
|
||||
log.Error("neId is empty")
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
|
||||
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
|
||||
log.Debug("requestURI2NF: POST ", requestURI2NF)
|
||||
|
||||
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) //io.LimitReader限制大小
|
||||
if err != nil {
|
||||
log.Error("io.ReadAll is failed:", err)
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
client := resty.New()
|
||||
response, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
SetBody(body).
|
||||
Post(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Failed to POST to NF:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
services.ResponseWithJson(w, http.StatusNoContent, response)
|
||||
}
|
||||
|
||||
func PutParamConfigToNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("PutParamConfigToNF processing... ")
|
||||
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" {
|
||||
log.Error("elementTypeValue is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
// OMC配置接口 /api/rest/systemManagement/v1/elementType/omc/objectType/config/omcNeConfig
|
||||
if v, ok := vars["paraName"]; ok && v == "omcNeConfig" && strings.ToLower(neType) == "omc" {
|
||||
PutOMCNeConfig(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
neId := ctx.GetQuery(r, "ne_id")
|
||||
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
|
||||
|
||||
if neInfo.NeId != neId || neInfo.NeId == "" {
|
||||
log.Error("neId is empty")
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
|
||||
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
|
||||
log.Debug("requestURI2NF: PUT ", requestURI2NF)
|
||||
|
||||
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) //io.LimitReader限制大小
|
||||
if err != nil {
|
||||
log.Error("io.ReadAll is failed:", err)
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
client := resty.New()
|
||||
response, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
SetBody(body).
|
||||
Put(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Failed to Put to NF:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
services.ResponseWithJson(w, http.StatusNoContent, response)
|
||||
}
|
||||
|
||||
// PutOMCNeConfig 网元OMC配置
|
||||
//
|
||||
// 目前没配置,返回204
|
||||
func PutOMCNeConfig(w http.ResponseWriter, r *http.Request) {
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
}
|
||||
|
||||
func DeleteParamConfigToNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("DeleteParamConfigToNF processing... ")
|
||||
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" {
|
||||
log.Error("elementTypeValue is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
neId := ctx.GetQuery(r, "ne_id")
|
||||
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
|
||||
|
||||
if neInfo.NeId != neId || neInfo.NeId == "" {
|
||||
log.Error("neId is empty")
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
|
||||
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
|
||||
log.Debug("requestURI2NF: DELETE ", requestURI2NF)
|
||||
|
||||
client := resty.New()
|
||||
response, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
Delete(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Failed to delete parameter:", err)
|
||||
services.ResponseInternalServerError500NFConnectRefused(w)
|
||||
return
|
||||
}
|
||||
|
||||
services.ResponseWithJson(w, http.StatusNoContent, response)
|
||||
}
|
||||
@@ -80,8 +80,8 @@ func PostUEEventFromAMF(c *gin.Context) {
|
||||
}
|
||||
|
||||
// 是否存在网元
|
||||
neInfo := neService.NewNeInfo.FindByRmuid(data.RmUID)
|
||||
if neInfo.NeType != "AMF" || neInfo.RmUID != data.RmUID {
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", data.RmUID)
|
||||
if neInfo.NeType != "AMF" || neInfo.NeUID != data.RmUID {
|
||||
services.ResponseInternalServerError500ProcessError(c.Writer, fmt.Errorf("network element does not exist"))
|
||||
return
|
||||
}
|
||||
@@ -165,7 +165,7 @@ func PostUEEventFromAMF(c *gin.Context) {
|
||||
// 推送到ws订阅组
|
||||
if data.NeType == "AMF" {
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE, data)
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE+"_"+neInfo.NeId, data)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_AMF_UE, neInfo.CoreUID, neInfo.NeUID), data)
|
||||
}
|
||||
|
||||
services.ResponseStatusOK204NoContent(c.Writer)
|
||||
@@ -195,8 +195,8 @@ func PostUEEvent(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
// 是否存在网元
|
||||
neInfo := neService.NewNeInfo.FindByRmuid(body.RmUID)
|
||||
if neInfo.NeType != body.NeType || neInfo.RmUID != body.RmUID {
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", body.RmUID)
|
||||
if neInfo.NeType != body.NeType || neInfo.NeUID != body.RmUID {
|
||||
services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("network element does not exist"))
|
||||
return
|
||||
}
|
||||
@@ -237,11 +237,11 @@ func PostUEEvent(w http.ResponseWriter, r *http.Request) {
|
||||
// 推送到ws订阅组
|
||||
if body.NeType == "MME" {
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_MME_UE, data)
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_MME_UE+"_"+neInfo.NeId, data)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_MME_UE, neInfo.CoreUID, neInfo.NeUID), data)
|
||||
}
|
||||
if body.NeType == "AMF" {
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE, data)
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE+"_"+neInfo.NeId, data)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_AMF_UE, neInfo.CoreUID, neInfo.NeUID), data)
|
||||
}
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
|
||||
@@ -125,7 +125,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("alarmData:", v)
|
||||
|
||||
// 是否存在网元 neId实际是rmUID
|
||||
neInfo := neService.FindByRmuid(v.NeId)
|
||||
neInfo := neService.FindByCoreUidAndNeUid("*", v.NeId)
|
||||
if neInfo.NeType != v.NeType {
|
||||
msg := fmt.Sprintf("network element does not exist %s", v.NeId)
|
||||
services.ResponseWithJson(w, 400, resp.ErrMsg(msg))
|
||||
@@ -143,7 +143,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
v.AddInfo = fmt.Sprintf("NeInfo:%s", v.NeType)
|
||||
}
|
||||
if v.ObjectUid == "" {
|
||||
v.ObjectUid = neInfo.RmUID
|
||||
v.ObjectUid = neInfo.NeUID
|
||||
}
|
||||
if v.ObjectName == "" {
|
||||
v.ObjectName = neInfo.NeName
|
||||
@@ -161,7 +161,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.NeType, neInfo.NeId)
|
||||
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.CoreUID, neInfo.NeUID)
|
||||
wsService.NewWSSend.ByGroupID(groupID, clearAlarmEvent)
|
||||
}
|
||||
if v.AlarmStatus == AlarmStatusActive {
|
||||
@@ -171,7 +171,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.NeType, neInfo.NeId)
|
||||
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.CoreUID, neInfo.NeUID)
|
||||
wsService.NewWSSend.ByGroupID(groupID, newAlarmEvent)
|
||||
}
|
||||
continue
|
||||
@@ -184,7 +184,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId)
|
||||
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
|
||||
wsService.NewWSSend.ByGroupID(groupID, clearAlarm)
|
||||
}
|
||||
if v.AlarmStatus == AlarmStatusActive {
|
||||
@@ -194,7 +194,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId)
|
||||
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
|
||||
wsService.NewWSSend.ByGroupID(groupID, newAlarm)
|
||||
}
|
||||
|
||||
@@ -232,12 +232,13 @@ func alarmClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
|
||||
alarmService := neDataService.NewAlarm
|
||||
// 检查网元告警ID是否唯一
|
||||
alarmIdArr := alarmService.Find(neDataModel.Alarm{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmId: v.AlarmId,
|
||||
})
|
||||
if len(alarmIdArr) != 1 {
|
||||
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] clear alarm not exists alarmId:%s", neInfo.NeType, neInfo.NeId, v.AlarmId)
|
||||
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] clear alarm not exists alarmId:%s", neInfo.CoreUID, neInfo.NeUID, v.AlarmId)
|
||||
}
|
||||
|
||||
// 产生时间
|
||||
@@ -245,11 +246,9 @@ func alarmClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
|
||||
|
||||
alarm := neDataModel.Alarm{
|
||||
ID: alarmIdArr[0].ID,
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
NeName: neInfo.NeName,
|
||||
Province: neInfo.Province,
|
||||
PvFlag: neInfo.PvFlag,
|
||||
AlarmSeq: alarmIdArr[0].AlarmSeq, // seq 告警序号
|
||||
AlarmId: v.AlarmId,
|
||||
AlarmTitle: v.AlarmTitle,
|
||||
@@ -276,7 +275,7 @@ func alarmClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
|
||||
if rows > 0 {
|
||||
return alarm, nil
|
||||
}
|
||||
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] clear alarm fail", neInfo.NeType, neInfo.NeId)
|
||||
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] clear alarm fail", neInfo.CoreUID, neInfo.NeUID)
|
||||
}
|
||||
|
||||
// alarmNew 新增告警
|
||||
@@ -284,24 +283,23 @@ func alarmNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
|
||||
alarmService := neDataService.NewAlarm
|
||||
// 检查网元告警ID是否唯一
|
||||
alarmIdArr := alarmService.Find(neDataModel.Alarm{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmId: v.AlarmId,
|
||||
})
|
||||
if len(alarmIdArr) > 0 {
|
||||
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] new alarm already exists alarmId:%s", neInfo.NeType, neInfo.NeId, v.AlarmId)
|
||||
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] new alarm already exists alarmId:%s", neInfo.CoreUID, neInfo.NeUID, v.AlarmId)
|
||||
}
|
||||
// seq 告警序号
|
||||
lastSeq := alarmService.FindAlarmSeqLast(neInfo.NeType, neInfo.NeId)
|
||||
lastSeq := alarmService.FindAlarmSeqLast(neInfo.CoreUID, neInfo.NeUID)
|
||||
// 产生时间
|
||||
eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||
|
||||
alarm := neDataModel.Alarm{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
NeName: neInfo.NeName,
|
||||
Province: neInfo.Province,
|
||||
PvFlag: neInfo.PvFlag,
|
||||
AlarmSeq: lastSeq + 1,
|
||||
AlarmId: v.AlarmId,
|
||||
AlarmTitle: v.AlarmTitle,
|
||||
@@ -324,7 +322,7 @@ func alarmNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
|
||||
alarm.ID = insertId
|
||||
return alarm, nil
|
||||
}
|
||||
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] new alarm fail", neInfo.NeType, neInfo.NeId)
|
||||
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] new alarm fail", neInfo.CoreUID, neInfo.NeUID)
|
||||
}
|
||||
|
||||
// alarmSaveLog 保存告警日志
|
||||
@@ -332,8 +330,9 @@ func alarmSaveLog(neInfo neModel.NeInfo, v Alarm) int64 {
|
||||
alarmLogService := neDataService.NewAlarmLog
|
||||
eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||
alarmLog := neDataModel.AlarmLog{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmSeq: int64(v.AlarmSeq),
|
||||
AlarmId: v.AlarmId,
|
||||
AlarmTitle: v.AlarmTitle,
|
||||
@@ -365,12 +364,13 @@ func alarmEventClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, er
|
||||
alarmEventService := neDataService.NewAlarmEvent
|
||||
// 检查网元告警ID是否唯一
|
||||
alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmId: v.AlarmId,
|
||||
})
|
||||
if len(alarmIdArr) != 1 {
|
||||
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] clear alarm event not exists alarmId:%s", neInfo.NeType, neInfo.NeId, v.AlarmId)
|
||||
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] clear alarm event not exists alarmId:%s", neInfo.CoreUID, neInfo.NeUID, v.AlarmId)
|
||||
}
|
||||
|
||||
// 产生时间
|
||||
@@ -378,8 +378,9 @@ func alarmEventClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, er
|
||||
|
||||
alarmEvent := neDataModel.AlarmEvent{
|
||||
ID: alarmIdArr[0].ID,
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmSeq: alarmIdArr[0].AlarmSeq, // seq 告警序号
|
||||
AlarmId: v.AlarmId,
|
||||
AlarmTitle: v.AlarmTitle,
|
||||
@@ -403,7 +404,7 @@ func alarmEventClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, er
|
||||
if rows > 0 {
|
||||
return alarmEvent, nil
|
||||
}
|
||||
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] clear alarm event fail", neInfo.NeType, neInfo.NeId)
|
||||
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] clear alarm event fail", neInfo.CoreUID, neInfo.NeUID)
|
||||
}
|
||||
|
||||
// alarmEventNew 新增告警事件
|
||||
@@ -411,21 +412,23 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro
|
||||
alarmEventService := neDataService.NewAlarmEvent
|
||||
// 检查网元告警ID是否唯一
|
||||
alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmId: v.AlarmId,
|
||||
})
|
||||
if len(alarmIdArr) > 0 {
|
||||
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event already exists alarmId:%s", neInfo.NeType, neInfo.NeId, v.AlarmId)
|
||||
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event already exists alarmId:%s", neInfo.CoreUID, neInfo.NeUID, v.AlarmId)
|
||||
}
|
||||
// seq 告警序号
|
||||
lastSeq := alarmEventService.FindAlarmEventSeqLast(neInfo.NeType, neInfo.NeId)
|
||||
lastSeq := alarmEventService.FindAlarmEventSeqLast(neInfo.CoreUID, neInfo.NeUID)
|
||||
// 产生时间
|
||||
eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||
|
||||
alarmEvent := neDataModel.AlarmEvent{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmSeq: lastSeq + 1,
|
||||
AlarmId: v.AlarmId,
|
||||
AlarmTitle: v.AlarmTitle,
|
||||
@@ -447,8 +450,9 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro
|
||||
if v.AlarmCode == constants.ALARM_EVENT_REBOOT {
|
||||
alarmService := neDataService.NewAlarm
|
||||
rows := alarmService.Find(neDataModel.Alarm{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmStatus: "1",
|
||||
})
|
||||
for _, v := range rows {
|
||||
@@ -457,11 +461,11 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro
|
||||
}
|
||||
// 网元重启后,有跟踪任务的需要重新补发启动任务
|
||||
if v.AlarmCode == constants.ALARM_EVENT_REBOOT {
|
||||
traceService.NewTraceTask.RunUnstopped(neInfo.NeType, neInfo.NeId)
|
||||
traceService.NewTraceTask.RunUnstopped(neInfo.CoreUID, neInfo.NeUID)
|
||||
}
|
||||
return alarmEvent, nil
|
||||
}
|
||||
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event fail", neInfo.NeType, neInfo.NeId)
|
||||
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event fail", neInfo.CoreUID, neInfo.NeUID)
|
||||
}
|
||||
|
||||
// mapToAlarm 将 []map[string]any 转换为 []Alarm
|
||||
@@ -505,7 +509,7 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
continue
|
||||
}
|
||||
if len(data) == 0 {
|
||||
log.Infof("Not found sync alarms, neType=%s, neId=%s", neInfo.NeType, neInfo.NeId)
|
||||
log.Infof("Not found sync alarms, neType=%s, neId=%s", neInfo.CoreUID, neInfo.NeUID)
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -519,7 +523,7 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
v.AddInfo = fmt.Sprintf("NeInfo:%s", v.NeType)
|
||||
}
|
||||
if v.ObjectUid == "" {
|
||||
v.ObjectUid = neInfo.RmUID
|
||||
v.ObjectUid = neInfo.NeUID
|
||||
}
|
||||
if v.ObjectName == "" {
|
||||
v.ObjectName = neInfo.NeName
|
||||
|
||||
@@ -188,11 +188,12 @@ func writeLog(alarmData *Alarm, toUser, forwardBy string, err error) error {
|
||||
if err != nil {
|
||||
result = err.Error()
|
||||
}
|
||||
neInfo := neService.NewNeInfo.FindByRmuid(alarmData.NeId)
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", alarmData.NeId)
|
||||
eventTime := date.ParseStrToDate(alarmData.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||
alarmForwardLog := neDataModel.AlarmForwardLog{
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
AlarmSeq: int64(alarmData.AlarmSeq),
|
||||
AlarmId: alarmData.AlarmId,
|
||||
AlarmTitle: alarmData.AlarmTitle,
|
||||
|
||||
@@ -83,13 +83,13 @@ func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
log.Debug("neType:", neType, "neId", neId)
|
||||
|
||||
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeId: neId}, false, true)
|
||||
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeUID: neId}, false, true)
|
||||
if len(neInfoArr) < 1 {
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
neInfo := neInfoArr[0]
|
||||
if neInfo.NeId != neId || neInfo.IP == "" || len(neInfo.Hosts) < 2 {
|
||||
if neInfo.NeUID != neId || neInfo.IPAddr == "" || len(neInfo.Hosts) < 2 {
|
||||
services.ResponseWithJson(w, 200, map[string]any{
|
||||
"code": 0,
|
||||
"msg": "neInfo not found",
|
||||
@@ -235,13 +235,13 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeId: neId}, false, true)
|
||||
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeUID: neId}, false, true)
|
||||
if len(neInfoArr) < 1 {
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
neInfo := neInfoArr[0]
|
||||
if neInfo.NeId != neId || neInfo.IP == "" || len(neInfo.Hosts) < 2 {
|
||||
if neInfo.NeUID != neId || neInfo.IPAddr == "" || len(neInfo.Hosts) < 2 {
|
||||
services.ResponseWithJson(w, 200, map[string]any{
|
||||
"code": 0,
|
||||
"msg": "neInfo not found",
|
||||
@@ -619,7 +619,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
// UDM 特殊命令处理
|
||||
if neType == "UDM" && mml == "dec key" {
|
||||
output, err := neService.NewNeInfo.NeRunSSHCmd(neInfo.NeType, neInfo.NeId, "cat /usr/local/etc/udm/ueKeyProfile.tmp")
|
||||
output, err := neService.NewNeInfo.NeRunSSHCmd(neInfo.CoreUID, neInfo.NeUID, "cat /usr/local/etc/udm/ueKeyProfile.tmp")
|
||||
if err != nil {
|
||||
mmlResult = append(mmlResult, err.Error())
|
||||
} else {
|
||||
@@ -645,13 +645,13 @@ func PostMMLToOMC(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
log.Debug("neType:", neType, "neId", neId)
|
||||
|
||||
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeId: neId}, false, false)
|
||||
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeUID: neId}, false, false)
|
||||
if len(neInfoArr) < 1 {
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
neInfo := neInfoArr[0]
|
||||
if neInfo.NeId != neId || neInfo.IP == "" {
|
||||
if neInfo.NeUID != neId || neInfo.IPAddr == "" {
|
||||
services.ResponseWithJson(w, 200, map[string]any{
|
||||
"code": 0,
|
||||
"msg": "neInfo not found",
|
||||
@@ -667,7 +667,7 @@ func PostMMLToOMC(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
log.Trace("Body:", string(body))
|
||||
|
||||
hostUri := fmt.Sprintf("http://%s:%d", neInfo.IP, neInfo.Port)
|
||||
hostUri := fmt.Sprintf("http://%s:%d", neInfo.IPAddr, neInfo.Port)
|
||||
omcMmlVar := &mmlp.MmlVar{
|
||||
Version: global.Version,
|
||||
Output: mmlp.DefaultFormatType,
|
||||
|
||||
@@ -168,8 +168,7 @@ func saveKPIData(kpiReport KpiReport, index int64) int64 {
|
||||
KpiValuesByte, _ := json.Marshal(KpiValues)
|
||||
kpiData := neDataModel.KpiReport{
|
||||
NeType: taskNe.NeType,
|
||||
NeName: taskNe.NEName,
|
||||
RmUid: taskNe.RmUID,
|
||||
NeUID: taskNe.RmUID,
|
||||
Date: date.ParseDateToStr(receiverTime, "2006-01-02"),
|
||||
StartTime: date.ParseDateToStr(startTime, "15:04:05"),
|
||||
EndTime: date.ParseDateToStr(endTime, "15:04:05"),
|
||||
@@ -183,8 +182,8 @@ func saveKPIData(kpiReport KpiReport, index int64) int64 {
|
||||
// 指标事件对象
|
||||
kpiEvent := map[string]any{
|
||||
"neType": kpiData.NeType,
|
||||
"neName": kpiData.NeName,
|
||||
"rmUID": kpiData.RmUid,
|
||||
"coreUid": kpiData.CoreUID,
|
||||
"neUid": kpiData.NeUID,
|
||||
"startIndex": kpiData.Index,
|
||||
"timeGroup": kpiData.CreatedAt,
|
||||
// kip_id ...
|
||||
@@ -194,15 +193,15 @@ func saveKPIData(kpiReport KpiReport, index int64) int64 {
|
||||
}
|
||||
|
||||
// 发送到匹配的网元
|
||||
neInfo := neService.NewNeInfo.FindByRmuid(kpiData.RmUid)
|
||||
if neInfo.RmUID == kpiData.RmUid {
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", kpiData.NeUID)
|
||||
if neInfo.NeUID == kpiData.NeUID {
|
||||
// 推送到ws订阅组
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.CoreUID, neInfo.NeUID), kpiEvent)
|
||||
if neInfo.NeType == "UPF" {
|
||||
// 更新UPF总流量
|
||||
upValue := parse.Number(kpiEvent["UPF.03"])
|
||||
downValue := parse.Number(kpiEvent["UPF.06"])
|
||||
neDataService.NewKpiReport.UPFTodayFlowUpdate(neInfo.RmUID, upValue, downValue)
|
||||
neDataService.NewKpiReport.UPFTodayFlowUpdate(neInfo.NeUID, upValue, downValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -248,8 +247,8 @@ func saveKPIDataC(kpiReport KpiReport, index int64) int64 {
|
||||
KpiValuesByte, _ := json.Marshal(KpiValues)
|
||||
kpiData := neDataModel.KpiCReport{
|
||||
NeType: taskNe.NeType,
|
||||
NeName: taskNe.NEName,
|
||||
RmUid: taskNe.RmUID,
|
||||
CoreUID: taskNe.NEName,
|
||||
NeUID: taskNe.RmUID,
|
||||
Date: date.ParseDateToStr(receiverTime, "2006-01-02"),
|
||||
StartTime: date.ParseDateToStr(startTime, "15:04:05"),
|
||||
EndTime: date.ParseDateToStr(endTime, "15:04:05"),
|
||||
@@ -263,8 +262,8 @@ func saveKPIDataC(kpiReport KpiReport, index int64) int64 {
|
||||
// 指标事件对象
|
||||
kpiEvent := map[string]any{
|
||||
"neType": kpiData.NeType,
|
||||
"neName": kpiData.NeName,
|
||||
"rmUID": kpiData.RmUid,
|
||||
"neName": kpiData.NeUID,
|
||||
"rmUID": kpiData.NeUID,
|
||||
"startIndex": kpiData.Index,
|
||||
"timeGroup": kpiData.CreatedAt,
|
||||
// kip_id ...
|
||||
@@ -274,10 +273,10 @@ func saveKPIDataC(kpiReport KpiReport, index int64) int64 {
|
||||
}
|
||||
|
||||
// 发送到匹配的网元
|
||||
neInfo := neService.NewNeInfo.FindByRmuid(kpiData.RmUid)
|
||||
if neInfo.RmUID == kpiData.RmUid {
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", kpiData.NeUID)
|
||||
if neInfo.NeUID == kpiData.NeUID {
|
||||
// 推送自定义KPI到ws订阅组
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiEvent)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.CoreUID, neInfo.NeUID), kpiEvent)
|
||||
}
|
||||
}
|
||||
return insertId
|
||||
@@ -379,12 +378,12 @@ func PostKPIReportFromNFOld(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
// 发送到匹配的网元
|
||||
neInfo := neService.NewNeInfo.FindByRmuid(kpiData.RmUid)
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", kpiData.RmUid)
|
||||
// custom kpi report to FE
|
||||
kpiCEvent := map[string]any{
|
||||
// kip_id ...
|
||||
"neType": kpiData.NEType,
|
||||
"neId": neInfo.NeId,
|
||||
"neId": neInfo.NeUID,
|
||||
"neName": kpiData.NEName,
|
||||
"rmUID": kpiData.RmUid,
|
||||
"startIndex": kpiData.Index,
|
||||
@@ -413,11 +412,11 @@ func PostKPIReportFromNFOld(w http.ResponseWriter, r *http.Request) {
|
||||
// KPI自定义指标入库
|
||||
kpi_c_report.InsertKpiCReport(kpiData.NEType, report)
|
||||
|
||||
if neInfo.RmUID == kpiData.RmUid {
|
||||
if neInfo.NeUID == kpiData.RmUid {
|
||||
// 推送到ws订阅组
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.CoreUID, neInfo.NeUID), kpiEvent)
|
||||
// 推送自定义KPI到ws订阅组
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiCEvent)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.CoreUID, neInfo.NeUID), kpiCEvent)
|
||||
}
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
|
||||
@@ -258,11 +258,11 @@ func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid(neType, neId)
|
||||
|
||||
var response services.MapResponse
|
||||
if neInfo.NeId == neId && neInfo.NeId != "" {
|
||||
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
|
||||
if neInfo.NeUID == neId && neInfo.NeUID != "" {
|
||||
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IPAddr, neInfo.Port, r.RequestURI)
|
||||
log.Debug("requestURI2NF:", requestURI2NF)
|
||||
resp, err := client.R().
|
||||
EnableTrace().
|
||||
@@ -652,8 +652,8 @@ func PostNBInfoFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
neInfo := neService.NewNeInfo.FindByRmuid(body.RmUID)
|
||||
if neInfo.RmUID != body.RmUID {
|
||||
neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", body.RmUID)
|
||||
if neInfo.NeUID != body.RmUID {
|
||||
services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("inconsistent network element rmUID"))
|
||||
return
|
||||
}
|
||||
@@ -674,8 +674,8 @@ func PostNBInfoFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
nbStateService.Insert(neDataModel.NBState{
|
||||
NeType: neInfo.NeType,
|
||||
NeId: neInfo.NeId,
|
||||
RmUid: neInfo.RmUID,
|
||||
CoreUID: neInfo.CoreUID,
|
||||
NeUID: neInfo.NeUID,
|
||||
Address: v.Address,
|
||||
Name: v.Name,
|
||||
Position: v.Position,
|
||||
|
||||
Reference in New Issue
Block a user