fix: 优化网元OAM配置读取与写入逻辑,修复键名不一致问题

This commit is contained in:
TsMask
2025-05-23 11:13:14 +08:00
parent 4b13d8396b
commit 61ae1dfaa5

View File

@@ -491,47 +491,49 @@ func (r NeInfo) NeConfOAMReadSync(neType, neId string) (map[string]any, error) {
}
// UPF和SMF 全小写的key
if _, ok := oamData["httpmanagecfg"]; ok {
content := map[string]any{}
// 网元HTTP服务
// if v, ok := oamData["httpmanagecfg"]; ok {
// item := v.(map[string]any)
// }
// 对网管HTTP配置
if v, ok := oamData["oamconfig"]; ok {
if v, ok := oamData["httpmanagecfg"]; ok && v != nil {
item := v.(map[string]any)
if v, ok := item["iptype"]; ok && v != "" && v != nil {
ipType := v.(string)
if ipType == "ipv6" {
content["omcIP"] = item["ipv6"]
if v, ok := item["iptype"]; ok && v != nil {
item["ipType"] = v
delete(item, "iptype")
}
if ipType == "ipv4" {
content["omcIP"] = item["ipv4"]
oamData["httpManageCfg"] = item
delete(oamData, "httpmanagecfg")
r.neConfOAMWirte(neType, neId, oamData, false)
}
// 对网管HTTP配置
if v, ok := oamData["oamconfig"]; ok && v != nil {
item := v.(map[string]any)
if v, ok := item["iptype"]; ok && v != nil {
item["ipType"] = v
delete(item, "iptype")
}
content["oamEnable"] = item["enable"]
content["oamPort"] = item["port"]
if v, ok := item["neconfig"]; ok && v != nil {
item["neConfig"] = v
delete(item, "neconfig")
}
oamData["oamConfig"] = item
delete(oamData, "oamconfig")
r.neConfOAMWirte(neType, neId, oamData, false)
}
// 对网管SNMP配置
if v, ok := oamData["snmpconfig"]; ok {
if v, ok := oamData["snmpconfig"]; ok && v != nil {
item := v.(map[string]any)
content["snmpEnable"] = item["enable"]
content["snmpPort"] = item["port"]
if v, ok := item["iptype"]; ok && v != nil {
item["ipType"] = v
delete(item, "iptype")
}
oamData["snmpConfig"] = item
delete(oamData, "snmpconfig")
r.neConfOAMWirte(neType, neId, oamData, false)
}
// 对网管KPI上报配置
if v, ok := oamData["kpiconfig"]; ok {
if v, ok := oamData["kpiconfig"]; ok && v != nil {
item := v.(map[string]any)
content["kpiEnable"] = item["enable"]
content["kpiTimer"] = item["timer"]
}
oamData := r.neConfOAMData()
oamData["kpiConfig"] = item
delete(oamData, "kpiconfig")
r.neConfOAMWirte(neType, neId, oamData, false)
r.NeConfOAMWirteSync(model.NeInfo{
NeType: neType,
NeId: neId,
}, content, false)
return r.neConfOAMRead(neType, neId, false)
}
// NSSF和MME 配置KPIconfig名不一致时
@@ -695,24 +697,32 @@ func (r NeInfo) NeConfOAMWirteSync(neInfo model.NeInfo, content map[string]any,
return fmt.Errorf("error read OAM file info")
}
// 网元HTTP服务
if v, ok := oamData["httpManageCfg"]; ok {
item := v.(map[string]any)
item["port"] = neInfo.Port
httpManageCfg, ok := oamData["httpManageCfg"].(map[string]any)
if !ok {
neConfOAMData := r.neConfOAMData()
httpManageCfg = neConfOAMData["httpManageCfg"].(map[string]any)
}
httpManageCfg["port"] = neInfo.Port
if strings.Contains(neInfo.IP, ":") {
item["ipType"] = "ipv6"
item["ipv6"] = neInfo.IP
httpManageCfg["ipType"] = "ipv6"
httpManageCfg["ipv6"] = neInfo.IP
}
if strings.Contains(neInfo.IP, ".") {
item["ipType"] = "ipv4"
item["ipv4"] = neInfo.IP
httpManageCfg["ipType"] = "ipv4"
httpManageCfg["ipv4"] = neInfo.IP
}
delete(httpManageCfg, "iptype")
delete(oamData, "httpmanagecfg")
oamData["httpManageCfg"] = httpManageCfg
oamData["httpManageCfg"] = item
}
// 对网管HTTP配置
if v, ok := oamData["oamConfig"]; ok {
item := v.(map[string]any)
item["neConfig"] = map[string]string{
oamConfig, ok := oamData["oamConfig"].(map[string]any)
if !ok {
neConfOAMData := r.neConfOAMData()
oamConfig = neConfOAMData["oamConfig"].(map[string]any)
}
delete(oamConfig, "neconfig")
oamConfig["neConfig"] = map[string]string{
"neId": neInfo.NeId,
"rmUid": neInfo.RmUID,
"neName": neInfo.NeName,
@@ -721,75 +731,83 @@ func (r NeInfo) NeConfOAMWirteSync(neInfo model.NeInfo, content map[string]any,
"province": neInfo.Province,
"pvFlag": neInfo.PvFlag,
}
// 公共参数指定的OMC
if omcIP, ok := r.Para5GData["OMC_IP"]; ok && omcIP != "" {
if strings.Contains(omcIP, ":") {
item["ipType"] = "ipv6"
item["ipv6"] = omcIP
oamConfig["ipType"] = "ipv6"
oamConfig["ipv6"] = omcIP
}
if strings.Contains(omcIP, ".") {
item["ipType"] = "ipv4"
item["ipv4"] = omcIP
oamConfig["ipType"] = "ipv4"
oamConfig["ipv4"] = omcIP
}
}
// 传入的变更
if v, ok := content["omcIP"]; ok && v != "" && v != nil {
omcIP := v.(string)
if strings.Contains(omcIP, ":") {
item["ipType"] = "ipv6"
item["ipv6"] = omcIP
oamConfig["ipType"] = "ipv6"
oamConfig["ipv6"] = omcIP
}
if strings.Contains(omcIP, ".") {
item["ipType"] = "ipv4"
item["ipv4"] = omcIP
oamConfig["ipType"] = "ipv4"
oamConfig["ipv4"] = omcIP
}
}
delete(oamConfig, "iptype")
if oamEnable, ok := content["oamEnable"]; ok && oamEnable != nil {
item["enable"] = parse.Boolean(oamEnable)
oamConfig["enable"] = parse.Boolean(oamEnable)
}
if oamPort, ok := content["oamPort"]; ok && oamPort != nil {
item["port"] = parse.Number(oamPort)
}
oamData["oamConfig"] = item
oamConfig["port"] = parse.Number(oamPort)
}
delete(oamData, "oamconfig")
oamData["oamConfig"] = oamConfig
// 对网管SNMP配置
if v, ok := oamData["snmpConfig"]; ok {
item := v.(map[string]any)
snmpConfig, ok := oamData["snmpConfig"].(map[string]any)
if !ok {
neConfOAMData := r.neConfOAMData()
snmpConfig = neConfOAMData["snmpConfig"].(map[string]any)
}
if strings.Contains(neInfo.IP, ":") {
item["ipType"] = "ipv6"
item["ipv6"] = neInfo.IP
snmpConfig["ipType"] = "ipv6"
snmpConfig["ipv6"] = neInfo.IP
}
if strings.Contains(neInfo.IP, ".") {
item["ipType"] = "ipv4"
item["ipv4"] = neInfo.IP
snmpConfig["ipType"] = "ipv4"
snmpConfig["ipv4"] = neInfo.IP
}
delete(snmpConfig, "iptype")
if snmpEnable, ok := content["snmpEnable"]; ok && snmpEnable != nil {
item["enable"] = parse.Boolean(snmpEnable)
snmpConfig["enable"] = parse.Boolean(snmpEnable)
}
if snmpPort, ok := content["snmpPort"]; ok && snmpPort != nil {
item["port"] = parse.Number(snmpPort)
}
oamData["snmpConfig"] = item
}
// 对网管KPI上报配置
if v, ok := oamData["kpiConfig"]; ok {
item := v.(map[string]any)
if neInfo.NeType == "UPF" {
item["timer"] = 5
} else {
item["timer"] = 60
snmpConfig["port"] = parse.Number(snmpPort)
}
delete(oamData, "snmpconfig")
oamData["snmpConfig"] = snmpConfig
// 对网管KPI上报配置
kpiConfig, ok := oamData["kpiConfig"].(map[string]any)
if !ok {
neConfOAMData := r.neConfOAMData()
kpiConfig = neConfOAMData["kpiConfig"].(map[string]any)
}
if neInfo.NeType == "UPF" {
kpiConfig["timer"] = 5
} else {
kpiConfig["timer"] = 60
}
if kpiEnable, ok := content["kpiEnable"]; ok && kpiEnable != nil {
item["enable"] = parse.Boolean(kpiEnable)
kpiConfig["enable"] = parse.Boolean(kpiEnable)
}
if kpiTimer, ok := content["kpiTimer"]; ok && kpiTimer != nil {
item["timer"] = parse.Number(kpiTimer)
}
oamData["kpiConfig"] = item
kpiConfig["timer"] = parse.Number(kpiTimer)
}
delete(oamData, "kpiconfig")
oamData["kpiConfig"] = kpiConfig
if err := r.neConfOAMWirte(neInfo.NeType, neInfo.NeId, oamData, sync); err != nil {
return fmt.Errorf("error wirte OAM file info")
}