From 49a7d10ea068ecdef61cb17507a32264638243f0 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 30 Apr 2024 20:24:37 +0800 Subject: [PATCH] =?UTF-8?q?ref=20=E7=BD=91=E5=85=83=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=94=AF=E6=8C=81=E5=AE=89=E8=A3=85=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ne_version.impl.go | 396 ++++++++++++++++-- 1 file changed, 368 insertions(+), 28 deletions(-) diff --git a/src/modules/network_element/service/ne_version.impl.go b/src/modules/network_element/service/ne_version.impl.go index 1d8a2737..2d2b378f 100644 --- a/src/modules/network_element/service/ne_version.impl.go +++ b/src/modules/network_element/service/ne_version.impl.go @@ -4,10 +4,10 @@ import ( "fmt" "os" "path/filepath" - "runtime" "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" @@ -119,6 +119,12 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp nePath := "/tmp" neFilePath := fmt.Sprintf("%s/%s", nePath, fileName) + // 网元信息 + neInfo := NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neVersion.NeType, neVersion.NeId) + if neInfo.NeId != neVersion.NeId { + return "", fmt.Errorf("error found neinfo") + } + // 网元主机的SSH客户端 sshClient, err := NewNeInfoImpl.NeRunSSHclient(neVersion.NeType, neVersion.NeId) if err != nil { @@ -137,28 +143,23 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp return "", fmt.Errorf("error uploading package") } + var para5GData map[string]any if action == "install" { - // ========= para5G公共参数文件 start ========= - // 网管本地路径 - omcPara5GFilePath := "/usr/local/etc/omc/para5G.yaml" - if runtime.GOOS == "windows" { - omcPara5GFilePath = fmt.Sprintf("C:%s", omcPara5GFilePath) + // ========= 网元公共配置文件 start ========= + para5GData, err = NewNeInfoImpl.NeConfPara5GRead() + if para5GData == nil || err != nil { + return "", fmt.Errorf("error read para5G file info") } - // 网元端配置路径 - nePara5GFilePath := "/usr/local/etc/conf/para5G.yaml" - nePara5GFileDir := filepath.ToSlash(filepath.Dir(nePara5GFilePath)) - // 修改网元文件权限 - sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p %s && sudo chmod o+w %s && sudo chmod o+w %s", nePara5GFileDir, nePara5GFileDir, nePara5GFilePath)) - // 复制到网元进行覆盖 - if err = sftpClient.CopyFileLocalToRemote(omcPara5GFilePath, nePara5GFilePath); err != nil { - return "", fmt.Errorf("please check if scp remote copy is allowed") + if err := NewNeInfoImpl.NeConfPara5GWirte(para5GData, []string{fmt.Sprintf("%s@%s", neInfo.NeType, neInfo.NeId)}); err != nil { + return "", fmt.Errorf("error wirte OAM file info") } - // ========= para5G公共参数文件 end ========= + // ========= 网元公共配置文件 end =========== } // ========= 安装命令 start ========= + neTypeLower := strings.ToLower(neInfo.NeType) // 命令终止结束标记 - okFlagStr := fmt.Sprintf("%s version %s successful!", neVersion.NeType, action) + okFlagStr := fmt.Sprintf("%s version %s successful!", neTypeLower, action) // 安装软件包 pkgCmdStr := fmt.Sprintf("sudo dpkg -i %s", neFilePath) fileExt := filepath.Ext(strings.ToLower(fileName)) @@ -166,9 +167,9 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh %s", neFilePath) } - // 预先参数 + // 组合命令输入 cmdStrArr := []string{} - if neVersion.NeType == "OMC" { + if neInfo.NeType == "OMC" { cmdStrArr = append(cmdStrArr, pkgCmdStr) if action == "install" { cmdStrArr = append(cmdStrArr, "sudo /usr/local/omc/bin/setomc.sh -m install") // 初始化数据库 @@ -178,7 +179,7 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp } cmdStrArr = append(cmdStrArr, "sudo /usr/local/omc/bin/omcsvc.sh restart") return sshClient.RunCMD(fmt.Sprintf("nohup sh -c \"sleep 3s && %s\" > /dev/null 2>&1 & \n", strings.Join(cmdStrArr, " && "))) - } else if neVersion.NeType == "IMS" { + } else if neInfo.NeType == "IMS" { if !strings.Contains(strings.ToLower(fileName), "ims") { return "", fmt.Errorf("error file package not ims") } @@ -186,15 +187,19 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") cmdStrArr = append(cmdStrArr, "sudo ims-stop || true && sudo ims-start") // 公网 PLMN地址 - pubIP, pubIPOk := preinput["pubIP"] - mcc, mccOk := preinput["mcc"] - mnc, mncOk := preinput["mnc"] - if pubIPOk && pubIP != "" && mccOk && mcc != "" && mncOk && mnc != "" { - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo /usr/local/etc/ims/default/tools/modipplmn.sh %s %s %s \n", pubIP, mcc, mnc)) + sipIP, sipIPOk := para5GData["SIPIP"] + mcc, mccOk := para5GData["MCC"] + mnc, mncOk := para5GData["MNC"] + if sipIPOk && sipIP != "" && mccOk && mcc != "" && mncOk && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo /usr/local/etc/ims/default/tools/modipplmn.sh %s %s %s \n", sipIP, mcc, mnc)) } // 内网 服务地址 - if priIP, ok := preinput["priIP"]; ok && priIP != "" { - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo /usr/local/etc/ims/default/tools/modintraip.sh %s \n", priIP)) + if imsIP, ok := para5GData["IMSIP"]; ok && imsIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo /usr/local/etc/ims/default/tools/modintraip.sh %s \n", imsIP)) + } + // IWF连接PCF服务 + if pcfIP, ok := para5GData["PCFIP"]; ok && pcfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/iwf/iwf_conf.yaml \n", pcfIP)) } // 30s后停止服务 cmdStrArr = append(cmdStrArr, "nohup sh -c \"sleep 30s && sudo ims-stop\" > /dev/null 2>&1 & \n") @@ -204,9 +209,291 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp cmdStrArr = append(cmdStrArr, "sudo ims-start \n") } } else { - neTypeLower := strings.ToLower(neVersion.NeType) if action == "install" { cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") + + // AMF配置修改 + if neTypeLower == "amf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/amf/default/amfcfg.yaml /usr/local/etc/amf/amfcfg.yaml \n") + if amfIP, ok := para5GData["AMFIP"]; ok && amfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", amfIP)) + } + if n2IP, ok := para5GData["N2IP"]; ok && n2IP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.120/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", n2IP)) + } + if mcc, ok := para5GData["MCC"]; ok && mcc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", mcc)) + } + if mnc, ok := para5GData["MNC"]; ok && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", mnc)) + } + if sst, ok := para5GData["SST"]; ok && sst != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", sst)) + } + if sd, ok := para5GData["SD"]; ok && sd != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", sd)) + } + if nrtac, ok := para5GData["NRTAC"]; ok && nrtac != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/- 4388/- %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", nrtac)) + } + if ausfIP, ok := para5GData["AUSFIP"]; ok && ausfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", ausfIP)) + } + if udmIP, ok := para5GData["UDMIP"]; ok && udmIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", udmIP)) + } + if smfIP, ok := para5GData["SMFIP"]; ok && smfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", smfIP)) + } + if pcfIP, ok := para5GData["PCFIP"]; ok && pcfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", pcfIP)) + } + if dnn, ok := para5GData["DNN"]; ok && dnn != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/- internet/- %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", dnn)) + } + } + // AUSF配置修改 + if neTypeLower == "ausf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/ausf/default/ausfcfg.yaml /usr/local/etc/ausf/ausfcfg.yaml \n") + if ausfIP, ok := para5GData["AUSFIP"]; ok && ausfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", ausfIP)) + } + if udmIP, ok := para5GData["UDMIP"]; ok && udmIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", udmIP)) + } + if mcc, ok := para5GData["MCC"]; ok && mcc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", mcc)) + } + if mnc, ok := para5GData["MNC"]; ok && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", mnc)) + } + } + // UDM配置修改 + if neTypeLower == "udm" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/udmcfg.yaml /usr/local/etc/udm/udmcfg.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/oam_manager.yaml /usr/local/etc/udm/oam_manager.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/nssai.yaml /usr/local/etc/udm/nssai.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/snssai.yaml /usr/local/etc/udm/snssai.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/as.yaml /usr/local/etc/udm/as.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/dnn.yaml /usr/local/etc/udm/dnn.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/scscfSet.yaml /usr/local/etc/udm/scscfSet.yaml \n") + + if udmIP, ok := para5GData["UDMIP"]; ok && udmIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", udmIP)) + } + if ausfIP, ok := para5GData["AUSFIP"]; ok && ausfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", ausfIP)) + } + if amfIP, ok := para5GData["AMFIP"]; ok && amfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", amfIP)) + } + mcc, mccOk := para5GData["MCC"] + mnc, mncOk := para5GData["MNC"] + if mccOk && mcc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/udm/udmcfg.yaml \n", mcc)) + } + if mncOk && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/udm/udmcfg.yaml \n", mnc)) + } + if mccOk && mcc != "" && mncOk && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc0%s.mcc%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", mnc, mcc)) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc0%s.mcc%s/g\" /usr/local/etc/udm/as.yaml \n", mnc, mcc)) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc0%s.mcc%s/g\" /usr/local/etc/udm/scscfSet.yaml \n", mnc, mcc)) + } + if sst, ok := para5GData["SST"]; ok && sst != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/udm/nssai.yaml \n", sst)) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/udm/snssai.yaml \n", sst)) + } + if sd, ok := para5GData["SD"]; ok && sd != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/udm/nssai.yaml \n", sd)) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/udm/snssai.yaml \n", sd)) + } + if dnn, ok := para5GData["DNN"]; ok && dnn != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/internet/%s/g\" /usr/local/etc/udm/snssai.yaml \n", dnn)) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/internet/%s/g\" /usr/local/etc/udm/dnn.yaml \n", dnn)) + } + if sipIP, ok := para5GData["SIPIP"]; ok && sipIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.110/%s/g\" /usr/local/etc/udm/as.yaml \n", sipIP)) + } + } + // SMF配置修改 + if neTypeLower == "smf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/smf/default/smf_conf.yaml /usr/local/etc/smf/smf_conf.yaml \n") + if sipIP, ok := para5GData["SIPIP"]; ok && sipIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.110/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", sipIP)) + } + if amfIP, ok := para5GData["AMFIP"]; ok && amfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", amfIP)) + } + if udmIP, ok := para5GData["UDMIP"]; ok && udmIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", udmIP)) + } + if smfIP, ok := para5GData["SMFIP"]; ok && smfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", smfIP)) + } + if pcfIP, ok := para5GData["PCFIP"]; ok && pcfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", pcfIP)) + } + if upfIP, ok := para5GData["UPFIP"]; ok && upfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", upfIP)) + } + if dnn, ok := para5GData["DNN"]; ok && dnn != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/internet/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", dnn)) + } + if ueIP, ok := para5GData["UEIP"]; ok && ueIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|10.2.1.0/24|%s/24|g\" /usr/local/etc/smf/smf_conf.yaml \n", ueIP)) + } + } + // PCF配置修改 + if neTypeLower == "pcf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/pcf/default/pcfcfg.yaml /usr/local/etc/pcf/pcfcfg.yaml \n") + if amfIP, ok := para5GData["AMFIP"]; ok && amfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", amfIP)) + } + if udmIP, ok := para5GData["UDMIP"]; ok && udmIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", udmIP)) + } + if pcfIP, ok := para5GData["PCFIP"]; ok && pcfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", pcfIP)) + } + mcc, mccOk := para5GData["MCC"] + mnc, mncOk := para5GData["MNC"] + if mccOk && mcc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", mcc)) + } + if mncOk && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", mnc)) + } + if mccOk && mcc != "" && mncOk && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc0%s.mcc%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", mnc, mcc)) + } + } + + // UPF配置修改-标准版 + if upfType, ok := para5GData["UPFType"]; ok && upfType == "Standard" && neTypeLower == "upf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/upf/default/upfcfg.yaml /usr/local/etc/upf/upfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/upf/default/upfForwarder_1.yaml /usr/local/etc/upf/upfForwarder_1.yaml \n") + if upfIP, ok := para5GData["UPFIP"]; ok && upfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/upf/upfcfg.yaml \n", upfIP)) + } + if n3IP, ok := para5GData["N3IP"]; ok && n3IP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.190/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", n3IP)) + } + if n3MAC, ok := para5GData["N3MAC"]; ok && n3MAC != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/macAddr: \"00:00:00:00:00:00\"/s/macAddr: \"00:00:00:00:00:00\"/macAddr: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", n3MAC)) + } + if n3PCI, ok := para5GData["N3PCI"]; ok && n3PCI != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/interfacePCI: \"0000:00:00.0\"/s/interfacePCI: \"0000:00:00.0\"/interfacePCI: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", n3PCI)) + } + if n3Mask, ok := para5GData["N3Mask"]; ok && n3Mask != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/ipv4Mask: \"255.255.240.0\"/s/ipv4Mask: \"255.255.240.0\"/ipv4Mask: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", n3Mask)) + } + if nN3GW, ok := para5GData["nN3GW"]; ok && nN3GW != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/gatewayIpv4: 192.168.1.254/s/gatewayIpv4: 192.168.1.254/gatewayIpv4: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", nN3GW)) + } + if n6IP, ok := para5GData["N6IP"]; ok && n6IP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.191/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", n6IP)) + } + if n6MAC, ok := para5GData["N6MAC"]; ok && n6MAC != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/macAddr: \"00:00:00:00:00:00\"/s/macAddr: \"00:00:00:00:00:00\"/macAddr: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", n6MAC)) + } + if n6PCI, ok := para5GData["N6PCI"]; ok && n6PCI != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/interfacePCI: \"0000:00:00.0\"/s/interfacePCI: \"0000:00:00.0\"/interfacePCI: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", n6PCI)) + } + if n6Mask, ok := para5GData["N6Mask"]; ok && n6Mask != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ipv4Mask: \"255.255.240.0\"/s/ipv4Mask: \"255.255.240.0\"/ipv4Mask: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", n6Mask)) + } + if nN6GW, ok := para5GData["nN6GW"]; ok && nN6GW != "" { + 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", nN6GW)) + } + } + // UPF配置修改-轻量版 + if upfType, ok := para5GData["UPFType"]; ok && upfType == "Light" && neTypeLower == "upf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/upf/default/upfcfg.yaml /usr/local/etc/upf/upfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/upf/default/upfForwarder_1.yaml /usr/local/etc/upf/upfForwarder_1.yaml \n") + if upfIP, ok := para5GData["UPFIP"]; ok && upfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/upf/upfcfg.yaml \n", upfIP)) + } + if n3IP, ok := para5GData["N3IP"]; ok && n3IP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.190/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", n3IP)) + } + if n3Mask, ok := para5GData["N3Mask"]; ok && n3Mask != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/ipv4Mask: \"255.255.240.0\"/s/ipv4Mask: \"255.255.240.0\"/ipv4Mask: \"'%s'\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", n3Mask)) + } + if ueIP, ok := para5GData["UEIP"]; ok && ueIP != "" { + 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", ueIP)) + } + if ueIPMask, ok := para5GData["UEIPMask"]; ok && ueIPMask != "" { + 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", ueIPMask)) + } + 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") + } + + // MME配置修改 + if neTypeLower == "mme" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/mme/default/mme.conf /usr/local/etc/mme/mme.conf \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/epsApn.yaml /usr/local/etc/udm/epsApn.yaml \n") + if smfIP, ok := para5GData["SMFIP"]; ok && smfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/mme/mme.conf \n", smfIP)) + } + if mmeIPs1, ok := para5GData["S1_MMEIP"]; ok && mmeIPs1 != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|192.168.8.220/20|%s|g\" /usr/local/etc/mme/mme.conf \n", mmeIPs1)) + } + if mmeIPs10, ok := para5GData["S20_MMEIP"]; ok && mmeIPs10 != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.220/24|%s|g\" /usr/local/etc/mme/mme.conf \n", mmeIPs10)) + } + if mmeIPs11, ok := para5GData["S21_MMEIP"]; ok && mmeIPs11 != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.221/24|%s|g\" /usr/local/etc/mme/mme.conf \n", mmeIPs11)) + } + mcc, mccOk := para5GData["MCC"] + mnc, mncOk := para5GData["MNC"] + if mccOk && mcc != "" && mncOk && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc0%s.mcc%s/g\" /usr/local/etc/mme/mme.conf \n", mnc, mcc)) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/\"00101\"/\"%s%s\"/g\" /usr/local/etc/mme/mme.conf \n", mcc, mnc)) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/MCC=\"001\" ; MNC=\"01\";/MCC=\"%s\" ; MNC=\"%s\";/g\" /usr/local/etc/mme/mme.conf \n", mcc, mnc)) + } + if ltetac, ok := para5GData["LTETAC"]; ok && ltetac != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/TAC = \"1\";/TAC = \"%s\";/g\" /usr/local/etc/mme/mme.conf \n", ltetac)) + } + if dnn, ok := para5GData["DNN"]; ok && dnn != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/internet/%s/g\" /usr/local/etc/udm/epsApn.yaml \n", dnn)) + } + // SMF开启 + cmdStrArr = append(cmdStrArr, "sudo sed -i \"/^ *gxcfg:/,/^ *[^ ]/{s/enable: false/enable: true/;b};\" /usr/local/etc/smf/smf_conf.yaml \n") + } + + // NSSF配置修改 + if neTypeLower == "nssf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/nssf/default/nssfcfg.yaml /usr/local/etc/nssf/nssfcfg.yaml \n") + if nssfIP, ok := para5GData["NSSFIP"]; ok && nssfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.170/%s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", nssfIP)) + } + if nrfIP, ok := para5GData["NRFIP"]; ok && nrfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", nrfIP)) + } + if mcc, mccOk := para5GData["MCC"]; mccOk && mcc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", mcc)) + } + if mnc, mncOk := para5GData["MNC"]; mncOk && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", mnc)) + } + } + // NRF配置修改 + if neTypeLower == "nrf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/nrf/default/nssfcfg.yaml /usr/local/etc/nrf/nrfcfg.yaml \n") + if nrfIP, ok := para5GData["NRFIP"]; ok && nrfIP != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/nrf/nrfcfg.yaml \n", nrfIP)) + } + if mcc, mccOk := para5GData["MCC"]; mccOk && mcc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", mcc)) + } + if mnc, mncOk := para5GData["MNC"]; mncOk && mnc != "" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", mnc)) + } + } + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo service %s restart \n", neTypeLower)) // 30s后停止服务 cmdStrArr = append(cmdStrArr, fmt.Sprintf("nohup sh -c \"sleep 30s && sudo service %s stop\" > /dev/null 2>&1 & \n", neTypeLower)) @@ -284,8 +571,61 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp // 等待写入协程完成 <-done - // 执行到最后语句的更新Version + // 执行到最后语句 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 { + return "", fmt.Errorf("error wirte OAM file info") + } + // ========= 网元OAM配置文件 end =========== + } + + // 更新Version verInfo := NewNeVersionImpl.SelectByNeTypeAndNeID(neVersion.NeType, neVersion.NeId) if verInfo.NeId == neVersion.NeId { curName := verInfo.Name