Files
be.ems/src/modules/network_element/service/ne_config_omc.go

57 lines
2.0 KiB
Go

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.SelectNeConfigByNeTypeAndParamName("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")
}