perf: 重构网元版本安装命令步骤

This commit is contained in:
TsMask
2024-05-29 16:58:20 +08:00
parent 57a18656df
commit f098409624
2 changed files with 184 additions and 128 deletions

View File

@@ -704,23 +704,23 @@ func (r *NeInfoImpl) neConfPara5GDataConvert(content map[string]any) map[string]
"UE_IP": ueIP,
"UE_MASK": ueMask,
"UE_CIDR": ueCicr,
"UPF_TYPE": "LightUPF", // StandardUPF LightUPF
"UPF_TYPE": external["upf_type"].(string), // StandardUPF LightUPF
"N3_IP": n3IP,
"N3_MASK": n3Mask,
"N3_GW": external["upfn3_gw"].(string),
"N3_PCI": "0000:00:00.0",
"N3_MAC": "00:00:00:00:00:00",
"N3_PCI": external["upfn3_pci"].(string),
"N3_MAC": external["upfn3_mac"].(string),
"N6_IP": n6IP,
"N6_MASK": n6Mask,
"N6_GW": external["upfn6_gw"].(string),
"N6_PCI": "0000:00:00.0",
"N6_MAC": "00:00:00:00:00:00",
"N6_PCI": external["upfn6_pci"].(string),
"N6_MAC": external["upfn6_mac"].(string),
"SIP_IP": "192.168.8.110",
"SIP_IP": external["ims_sip_ip"].(string),
"S1_MMEIP": "192.168.8.220",
"S11_MMEIP": "172.16.5.220",
"S10_MMEIP": "172.16.5.221",
"S1_MMEIP": external["mmes1_ip"].(string),
"S11_MMEIP": external["mmes11_ip"].(string),
"S10_MMEIP": external["mmes10_ip"].(string),
// sbi
"OMC_IP": sbi["omc_ip"].(string),

View File

@@ -8,6 +8,7 @@ import (
"time"
"be.ems/src/framework/utils/file"
"be.ems/src/framework/utils/ssh"
"be.ems/src/modules/network_element/model"
"be.ems/src/modules/network_element/repository"
)
@@ -87,6 +88,14 @@ func (r *NeVersionImpl) SelectByNeTypeAndNeID(neType, neId string) model.NeVersi
//
// action 安装行为install upgrade rollback
func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinput map[string]string) (string, error) {
// 网元主机的SSH客户端
sshClient, err := NewNeInfoImpl.NeRunSSHclient(neVersion.NeType, neVersion.NeId)
if err != nil {
return "", err
}
defer sshClient.Close()
// ========= 文件传输阶段 =========
softwarePath := neVersion.Path
if action == "install" || action == "upgrade" {
softwarePath = neVersion.NewPath
@@ -94,68 +103,106 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
if action == "rollback" {
softwarePath = neVersion.PrePath
}
// 检查文件是否存在
localFilePath := file.ParseUploadFilePath(softwarePath)
if _, err := os.Stat(localFilePath); err != nil {
return "", fmt.Errorf("file read failure")
}
fileName := filepath.Base(softwarePath)
if strings.Contains(fileName, "*") {
fileName = strings.ReplaceAll(fileName, "*", "_")
}
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)
neFilePaths, err := r.operateFile(sshClient, softwarePath)
if err != nil {
return "", err
}
defer sshClient.Close()
// 网元主机的SSH客户端进行文件传输
sftpClient, err := sshClient.NewClientSFTP()
if err != nil {
return "", err
}
defer sftpClient.Close()
// 上传软件包到 /tmp
if err = sftpClient.CopyFileLocalToRemote(localFilePath, neFilePath); err != nil {
return "", fmt.Errorf("error uploading package")
}
// ========= 安装时设置 =========
if action == "install" {
// ========= 网元公共配置文件 start =========
// 网元公共配置文件
para5GMap, err := NewNeInfoImpl.NeConfPara5GRead()
if para5GMap == nil || err != nil {
return "", fmt.Errorf("error read para5G file info")
}
if err := NewNeInfoImpl.NeConfPara5GWirte(para5GMap, []string{fmt.Sprintf("%s@%s", neInfo.NeType, neInfo.NeId)}); err != nil {
if err := NewNeInfoImpl.NeConfPara5GWirte(para5GMap, []string{fmt.Sprintf("%s@%s", neVersion.NeType, neVersion.NeId)}); err != nil {
return "", fmt.Errorf("error wirte para5G file info")
}
// ========= 网元公共配置文件 end ===========
}
// ========= 安装命令 start =========
neTypeLower := strings.ToLower(neInfo.NeType)
// ========= 命令生成阶段 =========
okFlagStr, cmdStrArr, err := r.operateCommand(action, neVersion.NeType, neFilePaths)
if err != nil {
return "", err
}
// 操作自己omc时
if neVersion.NeType == "OMC" {
return sshClient.RunCMD(fmt.Sprintf("nohup sh -c \"sleep 3s && %s\" > /dev/null 2>&1 & \n", strings.Join(cmdStrArr, " && ")))
}
// ========= 执行阶段 =========
commandLine, err := r.operateRun(sshClient, preinput, cmdStrArr, neVersion.NeType, okFlagStr)
if err != nil {
return "", err
}
// ========= 完成阶段 =========
if strings.LastIndex(commandLine, okFlagStr) > 5 {
if err := r.operateDome(action, neVersion); err != nil {
return "", err
}
}
return commandLine, nil
}
// operateDome 操作版本-文件传输阶段
func (r *NeVersionImpl) operateFile(sshClient *ssh.ConnSSH, softwarePath string) ([]string, error) {
// 网元主机的SSH客户端进行文件传输
sftpClient, err := sshClient.NewClientSFTP()
if err != nil {
return nil, err
}
defer sftpClient.Close()
nePath := "/tmp"
copyFileToNeMap := map[string]string{}
// 统一处理多个文件和单个文件的情况
var softwarePaths []string
if strings.Contains(softwarePath, ",") {
softwarePaths = strings.Split(softwarePath, ",")
} else {
softwarePaths = []string{softwarePath}
}
for _, path := range softwarePaths {
// 检查文件是否存在
localFilePath := file.ParseUploadFilePath(path)
if _, err := os.Stat(localFilePath); err != nil {
return nil, fmt.Errorf("file read failure")
}
fileName := filepath.Base(path)
neFilePath := fmt.Sprintf("%s/%s", nePath, fileName)
copyFileToNeMap[localFilePath] = neFilePath
}
// 上传软件包到 /tmp
neFilePaths := []string{}
for k, v := range copyFileToNeMap {
if err = sftpClient.CopyFileLocalToRemote(k, v); err != nil {
return nil, fmt.Errorf("error uploading package")
}
neFilePaths = append(neFilePaths, v)
}
return neFilePaths, nil
}
// operateDome 操作版本-命令生成阶段
func (r *NeVersionImpl) operateCommand(action, neType string, neFilePaths []string) (string, []string, error) {
neTypeLower := strings.ToLower(neType)
// 命令终止结束标记
okFlagStr := fmt.Sprintf("%s version %s successful!", neTypeLower, action)
// 安装软件包
pkgCmdStr := fmt.Sprintf("sudo dpkg -i %s", neFilePath)
fileExt := filepath.Ext(strings.ToLower(fileName))
pkgCmdStr := fmt.Sprintf("sudo dpkg -i %s", strings.Join(neFilePaths, " "))
fileExt := filepath.Ext(strings.ToLower(neFilePaths[0]))
if strings.HasSuffix(fileExt, "rpm") {
pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh %s", neFilePath)
pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh %s", strings.Join(neFilePaths, " "))
}
// 组合命令输入
cmdStrArr := []string{}
if neInfo.NeType == "OMC" {
if neType == "OMC" {
cmdStrArr = append(cmdStrArr, pkgCmdStr)
if action == "install" {
cmdStrArr = append(cmdStrArr, "sudo /usr/local/omc/bin/setomc.sh -m install") // 初始化数据库
@@ -164,11 +211,7 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
cmdStrArr = append(cmdStrArr, "sudo /usr/local/omc/bin/setomc.sh -m upgrade") // 升级数据库
}
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 neInfo.NeType == "IMS" {
if !strings.Contains(strings.ToLower(fileName), "ims") {
return "", fmt.Errorf("error file package not ims")
}
} else if neType == "IMS" {
if action == "install" {
para5GData := NewNeInfoImpl.Para5GData
cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n")
@@ -180,24 +223,26 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
// IWF连接PCF服务
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/iwf/iwf_conf.yaml \n", para5GData["PCF_IP"]))
// HOST
mnc_mcc := fmt.Sprintf("mnc%s.mcc%s", para5GData["MNC_DOMAIN"], para5GData["MCC"])
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s ims' /etc/hosts || echo '%s ims' | sudo tee -a /etc/hosts \n", para5GData["IMS_IP"], para5GData["IMS_IP"]))
hssHost := fmt.Sprintf("%s hss.ims.%s.3gppnetwork.org ims", para5GData["UDM_IP"], mnc_mcc)
mnc_mcc := fmt.Sprintf("mnc%s.mcc%s", para5GData["MNC_DOMAIN"], para5GData["MCC"])
hssHost := fmt.Sprintf("%s hss.ims.%s.3gppnetwork.org hss", para5GData["UDM_IP"], mnc_mcc)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", hssHost, hssHost))
pcrfHost := fmt.Sprintf("%s pcrf.epc.%s.3gppnetwork.org ims\n", para5GData["IMS_IP"], mnc_mcc)
pcrfHost := fmt.Sprintf("%s pcrf.epc.%s.3gppnetwork.org pcrf\n", para5GData["IMS_IP"], mnc_mcc)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", pcrfHost, pcrfHost))
imsOrgHost := fmt.Sprintf("ims.%s.3gppnetwork.org", mnc_mcc)
imsHost := fmt.Sprintf("%s %s", para5GData["SIP_IP"], imsOrgHost)
imsHost := fmt.Sprintf("%s %s ims", para5GData["SIP_IP"], imsOrgHost)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", imsHost, imsHost))
pcscfHost := fmt.Sprintf("%s pcscf.%s", para5GData["SIP_IP"], imsOrgHost)
pcscfHost := fmt.Sprintf("%s pcscf.%s pcscf", para5GData["SIP_IP"], imsOrgHost)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", pcscfHost, pcscfHost))
icscfHost := fmt.Sprintf("%s icscf.%s", para5GData["SIP_IP"], imsOrgHost)
icscfHost := fmt.Sprintf("%s icscf.%s icscf", para5GData["SIP_IP"], imsOrgHost)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", icscfHost, icscfHost))
scscfHost := fmt.Sprintf("%s scscf.%s", para5GData["SIP_IP"], imsOrgHost)
scscfHost := fmt.Sprintf("%s scscf.%s scscf", para5GData["SIP_IP"], imsOrgHost)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", scscfHost, scscfHost))
mmtelHost := fmt.Sprintf("%s mmtel.%s", para5GData["SIP_IP"], imsOrgHost)
mmtelHost := fmt.Sprintf("%s mmtel.%s mmtel", para5GData["SIP_IP"], imsOrgHost)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", mmtelHost, mmtelHost))
smsHost := fmt.Sprintf("%s sms.%s", para5GData["SIP_IP"], imsOrgHost)
mrfcHost := fmt.Sprintf("%s mrfc.%s mrfc", para5GData["SIP_IP"], imsOrgHost)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", mrfcHost, mrfcHost))
smsHost := fmt.Sprintf("%s smsc.%s smsc", para5GData["SIP_IP"], imsOrgHost)
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", smsHost, smsHost))
// 30s后停止服务
@@ -230,6 +275,7 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.200/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["LMF_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.210/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["NEF_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/- internet/- %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["DNN_DATA"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s n2' /etc/hosts || echo '%s n2' | sudo tee -a /etc/hosts \n", para5GData["N2_IP"], para5GData["N2_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s amf' /etc/hosts || echo '%s amf' | sudo tee -a /etc/hosts \n", para5GData["AMF_IP"], para5GData["AMF_IP"]))
}
// AUSF配置修改
@@ -266,6 +312,8 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["SD"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: internet/dnn: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["DNN_DATA"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: ims/dnn: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["DNN_IMS"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/serviceSelection: 'internet'/serviceSelection: '%s'/g\" /usr/local/etc/udm/epsApn.yaml \n", para5GData["DNN_DATA"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/serviceSelection: 'ims'serviceSelection: '%s'/g\" /usr/local/etc/udm/epsApn.yaml \n", para5GData["DNN_IMS"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: internet/dnn: %s/g\" /usr/local/etc/udm/dnn.yaml \n", para5GData["DNN_DATA"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: ims/dnn: %s/g\" /usr/local/etc/udm/dnn.yaml \n", para5GData["DNN_IMS"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.18.81/%s/g\" /usr/local/etc/udm/as.yaml \n", para5GData["SIP_IP"]))
@@ -332,6 +380,8 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
cmdStrArr = append(cmdStrArr, "sudo sed -i 's/driverType: vmxnet3/driverType: \"\"/g' /usr/local/etc/upf/upfForwarder_1.yaml \n")
}
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upf' /etc/hosts || echo '%s upf' | sudo tee -a /etc/hosts \n", para5GData["UPF_IP"], para5GData["UPF_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upfn3' /etc/hosts || echo '%s upfn3' | sudo tee -a /etc/hosts \n", para5GData["N3_IP"], para5GData["N3_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upfn6' /etc/hosts || echo '%s upfn6' | sudo tee -a /etc/hosts \n", para5GData["N6_IP"], para5GData["N6_IP"]))
}
// NRF配置修改
@@ -354,11 +404,9 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
// MME配置修改 - 4G
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")
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["AMF_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["SMF_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|192.168.8.220/20|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S1_MMEIP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|192.168.8.220|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S1_MMEIP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.220/24|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S11_MMEIP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.221/24|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S10_MMEIP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["MNC_DOMAIN"], para5GData["MCC"]))
@@ -366,12 +414,9 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
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", para5GData["MCC"], para5GData["MNC"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/TAC = \"1\";/TAC = \"%s\";/g\" /usr/local/etc/mme/mme.conf \n", para5GData["TAC"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/TAC = 1;/TAC = %s;/g\" /usr/local/etc/mme/mme.conf \n", para5GData["TAC"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/internet/%s/g\" /usr/local/etc/udm/epsApn.yaml \n", para5GData["DNN_DATA"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/ims/%s/g\" /usr/local/etc/udm/epsApn.yaml \n", para5GData["DNN_IMS"]))
// SMF开启
cmdStrArr = append(cmdStrArr, "sudo sed -i \"/^ *gxcfg:/,/^ *[^ ]/{s/enable: false/enable: true/;b};\" /usr/local/etc/smf/smf_conf.yaml \n")
cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s mme' /etc/hosts || echo '%s mme' | sudo tee -a /etc/hosts \n", para5GData["S11_MMEIP"], para5GData["S11_MMEIP"]))
}
// N3IWF配置修改
if neTypeLower == "n3iwf" {
@@ -399,22 +444,26 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
}
// 删除软件包
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo rm %s \n", neFilePath))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo rm %s \n", strings.Join(neFilePaths, " ")))
// 结束
cmdStrArr = append(cmdStrArr, fmt.Sprintf("echo '%s' \n", okFlagStr))
// ========= 安装命令 end =========
return okFlagStr, cmdStrArr, nil
}
// operateDome 操作版本-执行阶段
func (r *NeVersionImpl) operateRun(sshClient *ssh.ConnSSH, preinput map[string]string, cmdStrArr []string, neType string, okFlagStr string) (string, error) {
// ssh连接会话
clientSession, err := sshClient.NewClientSession(80, 24)
clientSession, err := sshClient.NewClientSession(127, 42)
if err != nil {
return "", fmt.Errorf("neinfo ssh client session new err")
}
defer clientSession.Close()
firstRead := true // 首次命令进行记录日志信息
logMsg := "" // 日志信息
commandLineText := "" // 日志信息
done := make(chan bool) // 完成信号
// 超时退出 30s
// 超时退出 60s
timeoutTicker := time.NewTicker(60 * time.Second)
defer timeoutTicker.Stop()
// 实时读取SSH消息直接输出
@@ -432,10 +481,10 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
outputStr := string(outputByte)
// 非首次进行记录命令
if !firstRead {
logMsg += outputStr
commandLineText += outputStr
}
// IMS预输入 P/I/S-CSCF Config 配置覆盖
if neVersion.NeType == "IMS" && strings.Contains(outputStr, "(P/I/S-CSCF Config)? <y/n>") {
if neType == "IMS" && strings.Contains(outputStr, "(P/I/S-CSCF Config)? <y/n>") {
if pisCSCF, ok := preinput["pisCSCF"]; ok && pisCSCF != "" {
clientSession.Write(fmt.Sprintf("%s \n", pisCSCF))
} else {
@@ -465,56 +514,63 @@ func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinp
// 等待写入协程完成
<-done
// 执行到最后语句
if strings.LastIndex(logMsg, okFlagStr) > 5 {
if action == "install" {
// ========= 网元OAM配置文件 start ==========
if err := NewNeInfoImpl.NeConfOAMSync(neInfo, nil, 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
curVersion := verInfo.Version
curPath := verInfo.Path
if action == "install" {
verInfo.Name = neVersion.NewName
verInfo.Version = neVersion.NewVersion
verInfo.Path = neVersion.NewPath
verInfo.PreName = "-"
verInfo.PreVersion = "-"
verInfo.PrePath = "-"
verInfo.NewName = "-"
verInfo.NewVersion = "-"
verInfo.NewPath = "-"
}
if action == "upgrade" {
verInfo.Name = neVersion.NewName
verInfo.Version = neVersion.NewVersion
verInfo.Path = neVersion.NewPath
verInfo.PreName = curName
verInfo.PreVersion = curVersion
verInfo.PrePath = curPath
verInfo.NewName = "-"
verInfo.NewVersion = "-"
verInfo.NewPath = "-"
}
if action == "rollback" {
verInfo.Name = neVersion.PreName
verInfo.Version = neVersion.PreVersion
verInfo.Path = neVersion.PrePath
verInfo.PreName = curName
verInfo.PreVersion = curVersion
verInfo.PrePath = curPath
}
verInfo.Status = "1"
NewNeVersionImpl.Update(verInfo)
}
}
return logMsg, nil
return commandLineText, nil
}
// operateDome 操作版本-完成阶段
func (r *NeVersionImpl) operateDome(action string, neVersion model.NeVersion) error {
if action == "install" {
// 网元信息
neInfo := NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neVersion.NeType, neVersion.NeId)
if neInfo.NeId != neVersion.NeId {
return fmt.Errorf("error found neinfo")
}
// ========= 网元OAM配置文件 start ==========
if err := NewNeInfoImpl.NeConfOAMSync(neInfo, nil, true); err != nil {
return fmt.Errorf("error wirte OAM file info")
}
// ========= 网元OAM配置文件 end ===========
}
// 更新Version
verInfo := r.SelectByNeTypeAndNeID(neVersion.NeType, neVersion.NeId)
if verInfo.NeId == neVersion.NeId {
curName := verInfo.Name
curVersion := verInfo.Version
curPath := verInfo.Path
if action == "install" {
verInfo.Name = neVersion.NewName
verInfo.Version = neVersion.NewVersion
verInfo.Path = neVersion.NewPath
verInfo.PreName = "-"
verInfo.PreVersion = "-"
verInfo.PrePath = "-"
verInfo.NewName = "-"
verInfo.NewVersion = "-"
verInfo.NewPath = "-"
}
if action == "upgrade" {
verInfo.Name = neVersion.NewName
verInfo.Version = neVersion.NewVersion
verInfo.Path = neVersion.NewPath
verInfo.PreName = curName
verInfo.PreVersion = curVersion
verInfo.PrePath = curPath
verInfo.NewName = "-"
verInfo.NewVersion = "-"
verInfo.NewPath = "-"
}
if action == "rollback" {
verInfo.Name = neVersion.PreName
verInfo.Version = neVersion.PreVersion
verInfo.Path = neVersion.PrePath
verInfo.PreName = curName
verInfo.PreVersion = curVersion
verInfo.PrePath = curPath
}
verInfo.Status = "1"
NewNeVersionImpl.Update(verInfo)
}
return nil
}