feat: OMC参数配置添加NE信令跟踪服务开关
This commit is contained in:
@@ -171,6 +171,13 @@ func Get(key string) any {
|
||||
return conf.Get(key)
|
||||
}
|
||||
|
||||
// Set 设置配置信息
|
||||
//
|
||||
// Set("redis.defaultDataSourceName", "std")
|
||||
func Set(key string, value any) {
|
||||
conf.Set(key, value)
|
||||
}
|
||||
|
||||
// GetAssetsDirFS 访问程序内全局资源访问
|
||||
func GetAssetsDirFS() *embed.FS {
|
||||
return conf.Get("AssetsDir").(*embed.FS)
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
neFetchlink "be.ems/src/modules/network_element/fetch_link"
|
||||
"be.ems/src/modules/network_element/model"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
traceService "be.ems/src/modules/trace/service"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
@@ -214,12 +215,17 @@ func (s NeConfigController) DataInfo(c *gin.Context) {
|
||||
}
|
||||
|
||||
if query.NeType == "OMC" {
|
||||
var o *cm_omc.ConfigOMC
|
||||
resData, err := o.Query(query.ParamName)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
if query.ParamName == "alarmEmailForward" || query.ParamName == "alarmSMSForward" {
|
||||
var o *cm_omc.ConfigOMC
|
||||
resData, err := o.Query(query.ParamName)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(200, resp.OkData(resData))
|
||||
return
|
||||
}
|
||||
resData := s.neConfigService.GetOMCYaml(query.ParamName)
|
||||
c.JSON(200, resp.OkData(resData))
|
||||
return
|
||||
}
|
||||
@@ -268,13 +274,26 @@ func (s NeConfigController) DataEdit(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
if body.NeType == "OMC" {
|
||||
var o *cm_omc.ConfigOMC
|
||||
resData, err := o.Modify(body.ParamName, body.ParamData)
|
||||
if body.ParamName == "alarmEmailForward" || body.ParamName == "alarmSMSForward" {
|
||||
var o *cm_omc.ConfigOMC
|
||||
resData, err := o.Modify(body.ParamName, body.ParamData)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(200, resp.OkData(resData))
|
||||
return
|
||||
}
|
||||
err := s.neConfigService.ModifyOMCYaml(body.ParamName, body.Loc, body.ParamData)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(200, resp.OkData(resData))
|
||||
// 重开跟踪任务信令数据通道UDP
|
||||
if body.ParamName == "trace" {
|
||||
traceService.NewTraceTask.CreateUDP(true)
|
||||
}
|
||||
c.JSON(200, resp.Ok(nil))
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
56
src/modules/network_element/service/ne_config_omc.go
Normal file
56
src/modules/network_element/service/ne_config_omc.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"be.ems/src/framework/cmd"
|
||||
"be.ems/src/framework/config"
|
||||
)
|
||||
|
||||
// GetOMCYaml 获取OMC网元配置文件 /usr/local/etc/omc/omc.yaml
|
||||
func (r NeConfig) GetOMCYaml(paramName string) []map[string]any {
|
||||
if paramName == "trace" {
|
||||
traceData := config.Get("trace").(map[string]any)
|
||||
return []map[string]any{traceData}
|
||||
}
|
||||
return []map[string]any{}
|
||||
}
|
||||
|
||||
// ModifyOMCYaml 修改OMC网元配置文件 /usr/local/etc/omc/omc.yaml
|
||||
func (r NeConfig) ModifyOMCYaml(paramName, loc string, paramData any) error {
|
||||
neConfig := r.FindByNeTypeAndParamName("OMC", paramName)
|
||||
if neConfig.ParamType == "list" {
|
||||
if paramName == "trace" {
|
||||
configPath := fmt.Sprint(config.Get("config")) // 获取配置文件路径
|
||||
paramDataMap := paramData.(map[string]any)
|
||||
for k, v := range paramDataMap {
|
||||
config.Set(fmt.Sprintf("trace.%s", strings.ToLower(k)), v)
|
||||
if runtime.GOOS == "windows" {
|
||||
continue // Windows系统不支持sed命令
|
||||
}
|
||||
// 修改参数较少,直接命令改文件内容
|
||||
if k == "enabled" {
|
||||
// sed 's/enabled: \(true\|false\) # trace enabled/enabled: true # trace enabled/' /usr/local/etc/omc/omc.yaml
|
||||
cmd.Execf("sed -i 's/enabled: \\(true\\|false\\) # trace enabled/enabled: %v # trace enabled/' %s", v, configPath)
|
||||
}
|
||||
if k == "host" {
|
||||
// sed 's/host: ".*" # trace host/host: "127.2.2.2" # trace host/' /usr/local/etc/omc/omc.yaml
|
||||
cmd.Execf("sed -i 's/host: \".*\" # trace host/host: \"%v\" # trace host/' %s", v, configPath)
|
||||
}
|
||||
if k == "port" {
|
||||
// sed 's/port: [0-9]\+ # trace port/port: 6964 # trace port/' /usr/local/etc/omc/omc.yaml
|
||||
cmd.Execf("sed -i 's/port: [0-9]\\+ # trace port/port: %v # trace port/' %s", v, configPath)
|
||||
}
|
||||
}
|
||||
// 重开跟踪任务信令数据通道UDP
|
||||
// service.NewTraceTask.CreateUDP(true) 方法导致循环引用,抛给上层调用
|
||||
return nil
|
||||
}
|
||||
}
|
||||
if neConfig.ParamType == "array" {
|
||||
// TODO
|
||||
}
|
||||
return fmt.Errorf("not found method paramName")
|
||||
}
|
||||
@@ -22,22 +22,25 @@ import (
|
||||
// 实例化数据层 TraceTask 结构体
|
||||
var NewTraceTask = &TraceTask{
|
||||
udpService: socket.SocketUDP{},
|
||||
tcpService: socket.SocketTCP{},
|
||||
traceTaskRepository: repository.NewTraceTask,
|
||||
traceDataRepository: repository.NewTraceData,
|
||||
}
|
||||
|
||||
// TraceTask 跟踪任务 服务层处理
|
||||
type TraceTask struct {
|
||||
// UDP服务对象
|
||||
udpService socket.SocketUDP
|
||||
// 跟踪_任务数据信息
|
||||
traceTaskRepository *repository.TraceTask
|
||||
// 跟踪_数据信息
|
||||
traceDataRepository *repository.TraceData
|
||||
udpService socket.SocketUDP // UDP服务对象
|
||||
tcpService socket.SocketTCP // 测试用,后续调整TODO
|
||||
traceTaskRepository *repository.TraceTask // 跟踪_任务数据信息
|
||||
traceDataRepository *repository.TraceData // 跟踪_数据信息
|
||||
}
|
||||
|
||||
// CreateUDP 创建UDP数据通道
|
||||
func (r TraceTask) CreateUDP() error {
|
||||
func (r *TraceTask) CreateUDP(reload bool) error {
|
||||
if reload {
|
||||
r.CloseUDP() // 关闭之前的UDP服务
|
||||
}
|
||||
|
||||
// 跟踪配置是否开启
|
||||
host, port, err := r.traceNotify()
|
||||
if err != nil {
|
||||
@@ -84,12 +87,12 @@ func (r TraceTask) CreateUDP() error {
|
||||
// ============ 本地测试接收网元UDP发过来的数据 后续调整TODO
|
||||
if config.Env() == "local" {
|
||||
// 初始化TCP服务
|
||||
tcpService := socket.SocketTCP{Addr: host, Port: port + 1}
|
||||
if _, err := tcpService.New(); err != nil {
|
||||
r.tcpService = socket.SocketTCP{Addr: host, Port: port + 1}
|
||||
if _, err := r.tcpService.New(); err != nil {
|
||||
return err
|
||||
}
|
||||
// 接收处理TCP数据
|
||||
go tcpService.Resolve(func(conn *net.Conn, err error) {
|
||||
go r.tcpService.Resolve(func(conn *net.Conn, err error) {
|
||||
if err != nil {
|
||||
logger.Errorf("TCP Resolve %s", err.Error())
|
||||
return
|
||||
@@ -125,7 +128,7 @@ func (r TraceTask) CreateUDP() error {
|
||||
}
|
||||
|
||||
// pasreUDPData 解析数据
|
||||
func (r TraceTask) pasreUDPData(buf []byte) error {
|
||||
func (r *TraceTask) pasreUDPData(buf []byte) error {
|
||||
data, err := traceHandler(buf)
|
||||
if err != nil {
|
||||
logger.Errorf("UDP Resolve UDPDataHandler Error: %s", err.Error())
|
||||
@@ -157,8 +160,9 @@ func (r TraceTask) pasreUDPData(buf []byte) error {
|
||||
}
|
||||
|
||||
// CloseUDP 关闭UDP数据通道
|
||||
func (r TraceTask) CloseUDP() {
|
||||
func (r *TraceTask) CloseUDP() {
|
||||
r.udpService.Close()
|
||||
r.tcpService.Close()
|
||||
}
|
||||
|
||||
// FindByPage 根据条件分页查询
|
||||
|
||||
@@ -141,7 +141,7 @@ func Setup(router *gin.Engine) {
|
||||
// InitLoad 初始参数
|
||||
func InitLoad() {
|
||||
// 创建跟踪任务信令数据通道UDP
|
||||
if err := service.NewTraceTask.CreateUDP(); err != nil {
|
||||
if err := service.NewTraceTask.CreateUDP(false); err != nil {
|
||||
logger.Errorf("socket udp init fail: %s", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user