feat: 支持OAM配置修改同步到网元
This commit is contained in:
@@ -368,13 +368,11 @@ func (r *NeInfoImpl) neConfOAMData() map[string]any {
|
||||
"oamConfig": map[string]any{
|
||||
"enable": true,
|
||||
"ipType": "ipv4",
|
||||
// 必改
|
||||
"ipv4": "172.60.5.1",
|
||||
"ipv4": "172.60.5.1", // 必改
|
||||
"ipv6": "",
|
||||
"port": 33030,
|
||||
"scheme": "http",
|
||||
// 必改
|
||||
"neConfig": map[string]any{
|
||||
"neConfig": map[string]any{ // 必改
|
||||
"neId": "001",
|
||||
"rmUid": "4400HX1XXX001",
|
||||
"neName": "XXX_001",
|
||||
@@ -387,22 +385,20 @@ func (r *NeInfoImpl) neConfOAMData() map[string]any {
|
||||
"snmpConfig": map[string]any{
|
||||
"enable": false,
|
||||
"ipType": "ipv4",
|
||||
// 必改
|
||||
"ipv4": "172.60.5.2",
|
||||
"ipv6": "",
|
||||
"port": 4957,
|
||||
"ipv4": "172.60.5.2", // 必改
|
||||
"ipv6": "",
|
||||
"port": 4957,
|
||||
},
|
||||
"kpiConfig": map[string]any{
|
||||
"enable": true,
|
||||
// 必改
|
||||
"timer": 60,
|
||||
"timer": 60, // 必改
|
||||
},
|
||||
"pubConfigPath": "/usr/local/etc/conf/para5G.yaml",
|
||||
// "pubConfigPath": "/usr/local/etc/conf/para5G.yaml",
|
||||
}
|
||||
}
|
||||
|
||||
// neConfOAMRead 网元OAM配置文件读取
|
||||
func (r *NeInfoImpl) neConfOAMRead(neType, neId string) (map[string]any, error) {
|
||||
func (r *NeInfoImpl) NeConfOAMRead(neType, neId string) (map[string]any, error) {
|
||||
neTypeLower := strings.ToLower(neType)
|
||||
// 网管本地路径
|
||||
omcPath := "/usr/local/etc/omc/ne_config"
|
||||
@@ -478,25 +474,29 @@ func (r *NeInfoImpl) neConfOAMWirte(neType, neId string, content any, sync bool)
|
||||
}
|
||||
|
||||
// NeConfOAMSync 网元OAM配置文件生成并同步
|
||||
func (r *NeInfoImpl) NeConfOAMSync(neInfo model.NeInfo, sync bool) error {
|
||||
oamData, err := r.neConfOAMRead(neInfo.NeType, neInfo.NeId)
|
||||
func (r *NeInfoImpl) NeConfOAMSync(neInfo model.NeInfo, content map[string]any, sync bool) error {
|
||||
oamData, err := r.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
|
||||
if strings.Contains(neInfo.IP, ":") {
|
||||
item["ipType"] = "ipv6"
|
||||
item["ipv6"] = neInfo.IP
|
||||
}
|
||||
if strings.Contains(neInfo.IP, ".") {
|
||||
item["ipType"] = "ipv4"
|
||||
item["ipv4"] = neInfo.IP
|
||||
}
|
||||
|
||||
oamData["httpManageCfg"] = item
|
||||
}
|
||||
// 对网管HTTP配置
|
||||
if v, ok := oamData["oamConfig"]; ok {
|
||||
item := v.(map[string]any)
|
||||
item["enable"] = true
|
||||
if omcIP, ok := r.Para5GData["OMCIP"]; ok && omcIP != "" {
|
||||
item["ipv4"] = omcIP
|
||||
}
|
||||
item["neConfig"] = map[string]string{
|
||||
"neId": neInfo.NeId,
|
||||
"rmUid": neInfo.RmUID,
|
||||
@@ -506,18 +506,59 @@ func (r *NeInfoImpl) NeConfOAMSync(neInfo model.NeInfo, sync bool) error {
|
||||
"province": neInfo.Province,
|
||||
"pvFlag": neInfo.PvFlag,
|
||||
}
|
||||
|
||||
if omcIP, ok := r.Para5GData["OMC_IP"]; ok && omcIP != "" {
|
||||
if strings.Contains(omcIP, ":") {
|
||||
item["ipType"] = "ipv6"
|
||||
item["ipv6"] = omcIP
|
||||
}
|
||||
if strings.Contains(omcIP, ".") {
|
||||
item["ipType"] = "ipv4"
|
||||
item["ipv4"] = omcIP
|
||||
}
|
||||
}
|
||||
|
||||
if oamEnable, ok := content["oamEnable"]; ok && oamEnable != nil {
|
||||
item["enable"] = parse.Boolean(oamEnable)
|
||||
}
|
||||
if oamPort, ok := content["oamPort"]; ok && oamPort != nil {
|
||||
item["port"] = parse.Number(oamPort)
|
||||
}
|
||||
oamData["oamConfig"] = item
|
||||
}
|
||||
// 对网管SNMP配置
|
||||
if v, ok := oamData["snmpConfig"]; ok {
|
||||
item := v.(map[string]any)
|
||||
item["ipv4"] = neInfo.IP
|
||||
if strings.Contains(neInfo.IP, ":") {
|
||||
item["ipType"] = "ipv6"
|
||||
item["ipv6"] = neInfo.IP
|
||||
}
|
||||
if strings.Contains(neInfo.IP, ".") {
|
||||
item["ipType"] = "ipv4"
|
||||
item["ipv4"] = neInfo.IP
|
||||
}
|
||||
|
||||
if snmpEnable, ok := content["snmpEnable"]; ok && snmpEnable != nil {
|
||||
item["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)
|
||||
item["enable"] = true
|
||||
if neInfo.NeType == "UPF" {
|
||||
item["timer"] = 5
|
||||
}
|
||||
|
||||
if kpiEnable, ok := content["kpiEnable"]; ok && kpiEnable != nil {
|
||||
item["enable"] = parse.Boolean(kpiEnable)
|
||||
}
|
||||
if kpiTimer, ok := content["kpiTimer"]; ok && kpiTimer != nil {
|
||||
item["timer"] = parse.Number(kpiTimer)
|
||||
}
|
||||
oamData["kpiConfig"] = item
|
||||
}
|
||||
if err := NewNeInfoImpl.neConfOAMWirte(neInfo.NeType, neInfo.NeId, oamData, sync); err != nil {
|
||||
@@ -586,7 +627,7 @@ func (r *NeInfoImpl) NeConfPara5GWirte(content map[string]any, syncNE []string)
|
||||
neFilePath := "/usr/local/etc/conf/para5G.yaml"
|
||||
neFileDir := filepath.ToSlash(filepath.Dir(neFilePath))
|
||||
// 修改网元文件权限
|
||||
sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p %s && sudo chmod o+w %s && sudo chmod o+w %s", neFileDir, neFileDir, neFilePath))
|
||||
sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p %s && sudo chmod o+w %s && sudo touch %s && sudo chmod o+w %s", neFileDir, neFileDir, neFilePath, neFilePath))
|
||||
// 复制到网元进行覆盖
|
||||
if err = sftpClient.CopyFileLocalToRemote(omcFilePath, neFilePath); err != nil {
|
||||
errMsg = append(errMsg, fmt.Sprintf("%s : please check if scp remote copy is allowed", ti))
|
||||
|
||||
Reference in New Issue
Block a user