perf: 优化para5G参数,移除网元版本新增修改删除接口
This commit is contained in:
@@ -1,13 +1,9 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"be.ems/src/framework/i18n"
|
||||
"be.ems/src/framework/utils/ctx"
|
||||
"be.ems/src/framework/utils/parse"
|
||||
"be.ems/src/framework/vo/result"
|
||||
"be.ems/src/modules/network_element/model"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gin-gonic/gin/binding"
|
||||
@@ -57,100 +53,6 @@ func (s *NeVersionController) Info(c *gin.Context) {
|
||||
c.JSON(200, result.OkData(neVersion))
|
||||
}
|
||||
|
||||
// 网元版本信息新增
|
||||
//
|
||||
// POST /
|
||||
func (s *NeVersionController) Add(c *gin.Context) {
|
||||
language := ctx.AcceptLanguage(c)
|
||||
var body model.NeVersion
|
||||
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
||||
if err != nil || body.ID != "" {
|
||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||
return
|
||||
}
|
||||
|
||||
// 检查属性值唯一
|
||||
uniqueInfo := s.neVersionService.CheckUniqueTypeAndID(body.NeType, body.NeId, "")
|
||||
if !uniqueInfo {
|
||||
// 网元版本操作【%s】失败,网元类型信息已存在
|
||||
msg := i18n.TTemplate(language, "neVersion.errKeyExists", map[string]any{"name": body.NeType})
|
||||
c.JSON(200, result.ErrMsg(msg))
|
||||
return
|
||||
}
|
||||
|
||||
body.CreateBy = ctx.LoginUserToUserName(c)
|
||||
insertId := s.neVersionService.Insert(body)
|
||||
if insertId != "" {
|
||||
c.JSON(200, result.Ok(nil))
|
||||
return
|
||||
}
|
||||
c.JSON(200, result.Err(nil))
|
||||
}
|
||||
|
||||
// 网元版本信息修改
|
||||
//
|
||||
// PUT /
|
||||
func (s *NeVersionController) Edit(c *gin.Context) {
|
||||
language := ctx.AcceptLanguage(c)
|
||||
var body model.NeVersion
|
||||
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
||||
if err != nil || body.ID == "" {
|
||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||
return
|
||||
}
|
||||
|
||||
// 检查属性值唯一
|
||||
uniqueInfo := s.neVersionService.CheckUniqueTypeAndID(body.NeType, body.NeId, body.ID)
|
||||
if !uniqueInfo {
|
||||
// 网元版本操作【%s】失败,网元类型信息已存在
|
||||
msg := i18n.TTemplate(language, "neVersion.errKeyExists", map[string]any{"name": body.NeType})
|
||||
c.JSON(200, result.ErrMsg(msg))
|
||||
return
|
||||
}
|
||||
|
||||
// 检查是否存在
|
||||
neVersion := s.neVersionService.SelectById(body.ID)
|
||||
if neVersion.ID != body.ID {
|
||||
// 没有可访问网元版本数据!
|
||||
c.JSON(200, result.ErrMsg(i18n.TKey(language, "neVersion.noData")))
|
||||
return
|
||||
}
|
||||
|
||||
body.UpdateBy = ctx.LoginUserToUserName(c)
|
||||
rows := s.neVersionService.Update(body)
|
||||
if rows > 0 {
|
||||
c.JSON(200, result.Ok(nil))
|
||||
return
|
||||
}
|
||||
c.JSON(200, result.Err(nil))
|
||||
}
|
||||
|
||||
// 网元版本信息删除
|
||||
//
|
||||
// DELETE /:versionIds
|
||||
func (s *NeVersionController) Remove(c *gin.Context) {
|
||||
language := ctx.AcceptLanguage(c)
|
||||
versionIds := c.Param("versionIds")
|
||||
if versionIds == "" {
|
||||
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
||||
return
|
||||
}
|
||||
// 处理字符转id数组后去重
|
||||
ids := strings.Split(versionIds, ",")
|
||||
uniqueIDs := parse.RemoveDuplicates(ids)
|
||||
if len(uniqueIDs) <= 0 {
|
||||
c.JSON(200, result.Err(nil))
|
||||
return
|
||||
}
|
||||
rows, err := s.neVersionService.DeleteByIds(uniqueIDs)
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error())))
|
||||
return
|
||||
}
|
||||
msg := i18n.TTemplate(language, "app.common.deleteSuccess", map[string]any{"num": rows})
|
||||
c.JSON(200, result.OkMsg(msg))
|
||||
}
|
||||
|
||||
// 网元版本操作
|
||||
//
|
||||
// POST /operate
|
||||
|
||||
@@ -58,24 +58,6 @@ func Setup(router *gin.Engine) {
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewNeInfo.ListAll,
|
||||
)
|
||||
neInfoGroup.GET("/configFile",
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewNeInfo.ConfigFileRead,
|
||||
)
|
||||
neInfoGroup.PUT("/configFile",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neInfo", collectlogs.BUSINESS_TYPE_OTHER)),
|
||||
controller.NewNeInfo.ConfigFileWrite,
|
||||
)
|
||||
neInfoGroup.GET("/oamFile",
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewNeInfo.OAMFileRead,
|
||||
)
|
||||
neInfoGroup.PUT("/oamFile",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neInfo", collectlogs.BUSINESS_TYPE_OTHER)),
|
||||
controller.NewNeInfo.OAMFileWrite,
|
||||
)
|
||||
neInfoGroup.GET("/para5GFile",
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewNeInfo.Para5GFileRead,
|
||||
@@ -197,21 +179,6 @@ func Setup(router *gin.Engine) {
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewNeVersion.Info,
|
||||
)
|
||||
neVersionGroup.POST("",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neVersion", collectlogs.BUSINESS_TYPE_INSERT)),
|
||||
controller.NewNeVersion.Add,
|
||||
)
|
||||
neVersionGroup.PUT("",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neVersion", collectlogs.BUSINESS_TYPE_UPDATE)),
|
||||
controller.NewNeVersion.Edit,
|
||||
)
|
||||
neVersionGroup.DELETE("/:versionIds",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neVersion", collectlogs.BUSINESS_TYPE_DELETE)),
|
||||
controller.NewNeVersion.Remove,
|
||||
)
|
||||
neVersionGroup.POST("/operate",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neVersion", collectlogs.BUSINESS_TYPE_OTHER)),
|
||||
@@ -250,11 +217,6 @@ func Setup(router *gin.Engine) {
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neSoftware", collectlogs.BUSINESS_TYPE_OTHER)),
|
||||
controller.NewNeSoftware.NewNeVersion,
|
||||
)
|
||||
neSoftwareGroup.POST("/install",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neSoftware", collectlogs.BUSINESS_TYPE_OTHER)),
|
||||
controller.NewNeSoftware.Install,
|
||||
)
|
||||
}
|
||||
|
||||
// 网元授权激活信息
|
||||
@@ -268,21 +230,6 @@ func Setup(router *gin.Engine) {
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewNeLicense.Info,
|
||||
)
|
||||
neLicenseGroup.POST("",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neLicense", collectlogs.BUSINESS_TYPE_INSERT)),
|
||||
controller.NewNeLicense.Add,
|
||||
)
|
||||
neLicenseGroup.PUT("",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neLicense", collectlogs.BUSINESS_TYPE_UPDATE)),
|
||||
controller.NewNeLicense.Edit,
|
||||
)
|
||||
neLicenseGroup.DELETE("/:licenseIds",
|
||||
middleware.PreAuthorize(nil),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neLicense", collectlogs.BUSINESS_TYPE_DELETE)),
|
||||
controller.NewNeLicense.Remove,
|
||||
)
|
||||
neLicenseGroup.GET("/byTypeAndID",
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewNeLicense.NeTypeAndID,
|
||||
@@ -416,4 +363,8 @@ func InitLoad() {
|
||||
// 启动时,清除缓存-网元类型
|
||||
service.NewNeInfoImpl.ClearNeCacheByNeType("*")
|
||||
service.NewNeInfoImpl.SelectNeInfoByRmuid("")
|
||||
// 启动时,网元公共参数数据记录到全局变量
|
||||
if para5GMap, err := service.NewNeInfoImpl.NeConfPara5GRead(); para5GMap != nil && err == nil {
|
||||
service.NewNeInfoImpl.NeConfPara5GWirte(para5GMap, nil)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,4 @@ type INeVersion interface {
|
||||
|
||||
// DeleteByIds 批量删除信息
|
||||
DeleteByIds(ids []string) int64
|
||||
|
||||
// CheckUniqueTypeAndID 校验网元类型和网元ID是否唯一
|
||||
CheckUniqueTypeAndID(neVersion model.NeVersion) string
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -181,41 +180,6 @@ func (r *NeVersionImpl) SelectByIds(cmdIds []string) []model.NeVersion {
|
||||
return r.convertResultRows(results)
|
||||
}
|
||||
|
||||
// CheckUniqueTypeAndID 校验网元类型和网元ID是否唯一
|
||||
func (r *NeVersionImpl) CheckUniqueTypeAndID(neVersion model.NeVersion) string {
|
||||
// 查询条件拼接
|
||||
var conditions []string
|
||||
var params []any
|
||||
if neVersion.NeType != "" {
|
||||
conditions = append(conditions, "ne_type = ?")
|
||||
params = append(params, neVersion.NeType)
|
||||
}
|
||||
if neVersion.NeId != "" {
|
||||
conditions = append(conditions, "ne_id = ?")
|
||||
params = append(params, neVersion.NeId)
|
||||
}
|
||||
|
||||
// 构建查询条件语句
|
||||
whereSql := ""
|
||||
if len(conditions) > 0 {
|
||||
whereSql += " where " + strings.Join(conditions, " and ")
|
||||
} else {
|
||||
return ""
|
||||
}
|
||||
|
||||
// 查询数据
|
||||
querySql := "select id as 'str' from ne_version " + whereSql + " limit 1"
|
||||
results, err := datasource.RawDB("", querySql, params)
|
||||
if err != nil {
|
||||
logger.Errorf("query err %v", err)
|
||||
return ""
|
||||
}
|
||||
if len(results) > 0 {
|
||||
return fmt.Sprint(results[0]["str"])
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// Insert 新增信息
|
||||
func (r *NeVersionImpl) Insert(neVersion model.NeVersion) string {
|
||||
// 参数拼接
|
||||
|
||||
@@ -25,9 +25,6 @@ type INeVersion interface {
|
||||
// SelectByNeTypeAndNeID 通过网元类型和网元ID查询
|
||||
SelectByNeTypeAndNeID(neType, neId string) model.NeVersion
|
||||
|
||||
// CheckUniqueTypeAndID 校验网元类型和网元ID是否唯一
|
||||
CheckUniqueTypeAndID(neType, neId, id string) bool
|
||||
|
||||
// Operate 操作版本上传到网元主机执行命令
|
||||
//
|
||||
// action 安装行为:install upgrade rollback
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/lib/core/utils/parse"
|
||||
"be.ems/src/framework/utils/file"
|
||||
"be.ems/src/modules/network_element/model"
|
||||
"be.ems/src/modules/network_element/repository"
|
||||
@@ -84,18 +83,6 @@ func (r *NeVersionImpl) SelectByNeTypeAndNeID(neType, neId string) model.NeVersi
|
||||
return model.NeVersion{}
|
||||
}
|
||||
|
||||
// CheckUniqueTypeAndID 校验网元类型和网元ID是否唯一
|
||||
func (r *NeVersionImpl) CheckUniqueTypeAndID(neType, neId, id string) bool {
|
||||
uniqueId := r.neVersionRepository.CheckUniqueTypeAndID(model.NeVersion{
|
||||
NeType: neType,
|
||||
NeId: neId,
|
||||
})
|
||||
if uniqueId == id {
|
||||
return true
|
||||
}
|
||||
return uniqueId == ""
|
||||
}
|
||||
|
||||
// Operate 操作版本上传到网元主机执行命令
|
||||
//
|
||||
// action 安装行为:install upgrade rollback
|
||||
@@ -143,7 +130,6 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
|
||||
return "", fmt.Errorf("error uploading package")
|
||||
}
|
||||
|
||||
var para5GData map[string]string
|
||||
if action == "install" {
|
||||
// ========= 网元公共配置文件 start =========
|
||||
para5GMap, err := NewNeInfoImpl.NeConfPara5GRead()
|
||||
@@ -153,7 +139,6 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
|
||||
if err := NewNeInfoImpl.NeConfPara5GWirte(para5GMap, []string{fmt.Sprintf("%s@%s", neInfo.NeType, neInfo.NeId)}); err != nil {
|
||||
return "", fmt.Errorf("error wirte OAM file info")
|
||||
}
|
||||
para5GData = NewNeInfoImpl.NeConfPara5GDataConvert(para5GMap)
|
||||
// ========= 网元公共配置文件 end ===========
|
||||
}
|
||||
|
||||
@@ -185,6 +170,7 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
|
||||
return "", fmt.Errorf("error file package not ims")
|
||||
}
|
||||
if action == "install" {
|
||||
para5GData := NewNeInfoImpl.Para5GData
|
||||
cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n")
|
||||
cmdStrArr = append(cmdStrArr, "sudo ims-stop || true && sudo ims-start \n")
|
||||
// 公网 PLMN地址
|
||||
@@ -202,6 +188,7 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
|
||||
}
|
||||
} else {
|
||||
if action == "install" {
|
||||
para5GData := NewNeInfoImpl.Para5GData
|
||||
cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n")
|
||||
|
||||
// AMF配置修改
|
||||
@@ -291,10 +278,10 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
|
||||
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/gatewayIpv4: 192.168.1.254/s/gatewayIpv4: 192.168.1.254/gatewayIpv4: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_GW"]))
|
||||
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ueIpv4: 10.2.1.0/s/ueIpv4: 10.2.1.0/ueIpv4: %s'/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["UE_IP"]))
|
||||
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ueIpv4Mask: 255.255.255.0/s/ueIpv4Mask: 255.255.255.0/ueIpv4Mask: %s'/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["UE_MASK"]))
|
||||
// 轻量
|
||||
// 轻量版
|
||||
// cmdStrArr = append(cmdStrArr, "sudo sed -i \"s/192.168.8.191/0.0.0.0/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n")
|
||||
// cmdStrArr = append(cmdStrArr, "sudo sed -i \"s/type: upfd/type: tun/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n")
|
||||
// cmdStrArr = append(cmdStrArr, "sudo sed -i 's/driverType: \"vmxnet3\"/driverType: \"\"/g' /usr/local/etc/upf/upfForwarder_1.yaml \n")
|
||||
// cmdStrArr = append(cmdStrArr, "sudo sed -i 's/driverType: vmxnet3/driverType: \"\"/g' /usr/local/etc/upf/upfForwarder_1.yaml \n")
|
||||
}
|
||||
|
||||
// NRF配置修改
|
||||
@@ -425,51 +412,7 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
|
||||
if strings.LastIndex(logMsg, okFlagStr) > 5 {
|
||||
if action == "install" {
|
||||
// ========= 网元OAM配置文件 start ==========
|
||||
oamData, err := NewNeInfoImpl.NeConfOAMRead(neInfo.NeType, neInfo.NeId)
|
||||
if oamData == nil || err != nil {
|
||||
return "", fmt.Errorf("error read OAM file info")
|
||||
}
|
||||
// 网元HTTP服务
|
||||
if v, ok := oamData["httpManageCfg"]; ok {
|
||||
item := v.(map[string]any)
|
||||
item["ipv4"] = neInfo.IP
|
||||
item["port"] = neInfo.Port
|
||||
oamData["httpManageCfg"] = item
|
||||
}
|
||||
// 对网管HTTP配置
|
||||
if v, ok := oamData["oamConfig"]; ok {
|
||||
item := v.(map[string]any)
|
||||
item["enable"] = true
|
||||
if omcIP, ok := para5GData["OMCIP"]; ok && omcIP != "" {
|
||||
item["ipv4"] = omcIP
|
||||
}
|
||||
item["neConfig"] = map[string]string{
|
||||
"neId": neInfo.NeId,
|
||||
"rmUid": neInfo.RmUID,
|
||||
"neName": neInfo.NeName,
|
||||
"dn": neInfo.Dn,
|
||||
"vendorName": neInfo.VendorName,
|
||||
"province": neInfo.Province,
|
||||
"pvFlag": neInfo.PvFlag,
|
||||
}
|
||||
oamData["oamConfig"] = item
|
||||
}
|
||||
// 对网管SNMP配置
|
||||
if v, ok := oamData["snmpConfig"]; ok {
|
||||
item := v.(map[string]any)
|
||||
item["ipv4"] = neInfo.IP
|
||||
oamData["snmpConfig"] = item
|
||||
}
|
||||
// 对网管KPI上报配置
|
||||
if v, ok := oamData["kpiConfig"]; ok {
|
||||
item := v.(map[string]any)
|
||||
item["enable"] = true
|
||||
if kpiTimer, ok := para5GData["KPI_TIMER"]; ok && kpiTimer != "" {
|
||||
item["timer"] = parse.Number(kpiTimer)
|
||||
}
|
||||
oamData["kpiConfig"] = item
|
||||
}
|
||||
if err := NewNeInfoImpl.NeConfOAMWirte(neInfo.NeType, neInfo.NeId, oamData, true); err != nil {
|
||||
if err := NewNeInfoImpl.NeConfOAMSync(neInfo, true); err != nil {
|
||||
return "", fmt.Errorf("error wirte OAM file info")
|
||||
}
|
||||
// ========= 网元OAM配置文件 end ===========
|
||||
|
||||
Reference in New Issue
Block a user