209 lines
5.9 KiB
Go
209 lines
5.9 KiB
Go
package cm
|
||
|
||
import (
|
||
"strings"
|
||
|
||
"be.ems/lib/core/utils/ctx"
|
||
"be.ems/lib/global"
|
||
"be.ems/lib/log"
|
||
"be.ems/lib/services"
|
||
"be.ems/restagent/config"
|
||
|
||
"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.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId)
|
||
|
||
var response services.DataResponse
|
||
if neInfo.NeId == 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.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId)
|
||
|
||
if neInfo.NeId != 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.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId)
|
||
|
||
if neInfo.NeId != 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.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId)
|
||
|
||
if neInfo.NeId != 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)
|
||
}
|