From 3a5e906222e6dbf40dcb52cf56cdae3e8aa9da1a Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Mon, 29 Jan 2024 16:09:08 +0800 Subject: [PATCH] fix: loadpconf and get nbinfo --- features/cm/ne.go | 2 +- features/ue/ue.go | 77 +++++++++++++++++++++++++++++++++++++++++++ lib/dborm/dborm.go | 35 +++++++++++++++++++- tools/loadpconf/db.go | 18 +++++++--- 4 files changed, 125 insertions(+), 7 deletions(-) diff --git a/features/cm/ne.go b/features/cm/ne.go index 458850f8..06f14004 100644 --- a/features/cm/ne.go +++ b/features/cm/ne.go @@ -136,7 +136,7 @@ func PostNeInfo(w http.ResponseWriter, r *http.Request) { services.ResponseNotFound404UriNotExist(w, r) return } - log.Debug("Body:", string(body)) + log.Trace("Body:", string(body)) neInfo := new(dborm.NeInfo) err = json.Unmarshal(body, neInfo) diff --git a/features/ue/ue.go b/features/ue/ue.go index 6bdbf949..a49dc3fd 100644 --- a/features/ue/ue.go +++ b/features/ue/ue.go @@ -639,6 +639,83 @@ func GetNBInfoFromNF(w http.ResponseWriter, r *http.Request) { } } +// Get Radio Info from NF/NFs +func GetNBInfoAllFromNF(w http.ResponseWriter, r *http.Request) { + log.Info("GetNBInfoAllFromNF processing... ") + + vars := mux.Vars(r) + neType := vars["elementTypeValue"] + if neType == "" { + services.ResponseNotFound404UriNotExist(w, r) + return + } + //neTypeLower := strings.ToLower(neType) + // var neID string + neIDs := services.GetParamsArrByName("neId", r) + // if len(neIDs) == 1 { + // neID = neIDs[0] + // } else { + // services.ResponseNotFound404UriNotExist(w, r) + // return + // } + + // token, err := services.CheckFrontValidRequest(w, r) + // if err != nil { + // log.Error("Request error:", err) + // return + // } + // log.Debug("token:", token) + + //var ret error + var statusCode int = 500 + var dataResponse []services.MapResponse + var neInfos []dborm.NeInfo + dborm.XormGetNeInfo2(neType, neIDs, &neInfos) + for _, neInfo := range neInfos { + // neInfo, err := dborm.XormGetNeInfo(neType, neID) + // if err != nil { + // log.Error("Failed to XormGetNeInfo:", err) + // services.ResponseInternalServerError500ProcessError(w, err) + // return + // } else if neInfo == nil { + // err := global.ErrCMNotFoundTargetNE + // log.Error(global.ErrCMNotFoundTargetNE) + // services.ResponseInternalServerError500ProcessError(w, err) + // return + // } + + hostUri := fmt.Sprintf("http://%s:%v", neInfo.Ip, neInfo.Port) + requestURI2NF := fmt.Sprintf("%s%s", hostUri, r.RequestURI) + + log.Debug("requestURI2NF:", requestURI2NF) + + resp, err := client.R(). + EnableTrace(). + SetHeaders(map[string]string{tokenConst.HEADER_KEY: r.Header.Get(tokenConst.HEADER_KEY)}). + //SetHeaders(map[string]string{"accessToken": token}). + 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:", err) + continue + // services.ResponseInternalServerError500ProcessError(w, err) + // return + } else { + switch resp.StatusCode() { + case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted: + var response services.MapResponse + _ = json.Unmarshal(resp.Body(), &response) + dataResponse = append(dataResponse, response) + statusCode = http.StatusOK + } + } + } + var response services.DataResponse + response.Data = dataResponse + services.ResponseWithJson(w, statusCode, response) +} + // Get GetUEInfoFileExportNF from NF/NFs func GetUEInfoFileExportNF(w http.ResponseWriter, r *http.Request) { log.Info("GetUEInfoFromNF processing... ") diff --git a/lib/dborm/dborm.go b/lib/dborm/dborm.go index 75ff8522..5ae06e2a 100644 --- a/lib/dborm/dborm.go +++ b/lib/dborm/dborm.go @@ -298,7 +298,40 @@ func XormGetNeInfoByNeType(neType string, nes *[]NeInfo) error { } *nes = append(*nes, *ne) } - log.Debug("nes:", nes) + + return nil +} + +func XormGetNeInfo2(neType string, neIDs []string, nes *[]NeInfo) error { + log.Info("XormGetNeInfo2 processing... ") + + ne := new(NeInfo) + var rows *xorm.Rows + var err error + if len(neIDs) == 0 { + rows, err = xEngine.Table("ne_info"). + Where("status in ('0','3') and ne_type=?", neType). + Rows(ne) + } else { + rows, err = xEngine.Table("ne_info"). + In("ne_id", neIDs). + And("status in ('0','3') and ne_type=?", neType). + Rows(ne) + } + if err != nil { + log.Error("Failed to get table ne_info from database:", err) + return err + } + defer rows.Close() + for rows.Next() { + err := rows.Scan(ne) + if err != nil { + log.Error("Failed to get table ne_info from database:", err) + return err + } + *nes = append(*nes, *ne) + } + return nil } diff --git a/tools/loadpconf/db.go b/tools/loadpconf/db.go index 6ecbd28e..c460a3a9 100644 --- a/tools/loadpconf/db.go +++ b/tools/loadpconf/db.go @@ -46,6 +46,14 @@ func XormInsertParamConfig(mapJson *map[string]interface{}) (int64, error) { } fmt.Printf("n: %s", n) + session := xEngine.NewSession() + defer session.Close() + _, err = session.Table("param_config").Where("ne_type = ?", strings.ToUpper(n)).Delete() + if err != nil { + fmt.Println("Failed to delete param_config:", err) + } + session.Commit() + for t, p := range d.(map[string]interface{}) { if p == nil { break @@ -77,17 +85,17 @@ func XormInsertParamConfig(mapJson *map[string]interface{}) (int64, error) { session := xEngine.NewSession() defer session.Close() - _, err = session.Table("param_config").Where("ne_type = ? and top_tag = ?", paramConfig.NeType, paramConfig.TopTag).Delete() - if err != nil { - fmt.Println("Failed to delete param_config:", err) - } + // _, err = session.Table("param_config").Where("ne_type = ? and top_tag = ?", paramConfig.NeType, paramConfig.TopTag).Delete() + // if err != nil { + // fmt.Println("Failed to delete param_config:", err) + // } a, err = session.Insert(paramConfig) if err != nil { fmt.Println("Failed to insert param_config:", err) } + session.Commit() affected += a } } - return affected, err }