From bafc4b4c851f15101e96d314dc6f4779ea0c82c0 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Wed, 17 Jan 2024 15:44:09 +0800 Subject: [PATCH] fix: activate ne pkg issue --- features/cm/software.go | 127 +++++++++++++++++++++------------------- misc/actpkg.sh | 16 +++++ misc/spawndpkg.sh | 9 --- 3 files changed, 82 insertions(+), 70 deletions(-) create mode 100644 misc/actpkg.sh delete mode 100644 misc/spawndpkg.sh diff --git a/features/cm/software.go b/features/cm/software.go index 3354c9fe..5cdc2e9e 100644 --- a/features/cm/software.go +++ b/features/cm/software.go @@ -686,71 +686,76 @@ func ActiveSoftwareToNF(w http.ResponseWriter, r *http.Request) { if !config.GetYamlConfig().OMC.TestMode { filePath := (*neVersion)[0]["file_path"] sshHost := fmt.Sprintf("%s@%s", config.GetYamlConfig().NE.User, neInfo.Ip) - fileType := global.IsRpmOrDebPackage(filePath) - if fileType == 1 { - rpmCmd := fmt.Sprintf("sudo rpm -Uvh '%s'", filePath) - cmd := exec.Command("ssh", sshHost, rpmCmd) - out, err := cmd.CombinedOutput() - log.Debugf("Exec output: %v", string(out)) - if err != nil { - log.Error("Faile to execute rpm command:", err) - services.ResponseInternalServerError500ProcessError(w, err) - return - } - } else if fileType == 2 { - srcFile := fmt.Sprintf("%s/spawndpkg.sh", config.GetYamlConfig().OMC.BinDir) + srcFile := fmt.Sprintf("%s/actpkg.sh", config.GetYamlConfig().OMC.BinDir) - scpDir := fmt.Sprintf("%s@%s:%s", config.GetYamlConfig().NE.User, - neInfo.Ip, config.GetYamlConfig().NE.ScpDir) - cmd := exec.Command("scp", "-r", srcFile, scpDir) - _, err := cmd.CombinedOutput() - if err != nil { - log.Errorf("Faile to scp NF: neType=%s, neId=%s, ip=%s", neType, neId, neInfo.Ip) - services.ResponseInternalServerError500ProcessError(w, err) - return - } - var inputStr string = "n" - var timeout int = 180 - if config.GetYamlConfig().NE.DpkgOverwrite { - inputStr = "y" - } - if config.GetYamlConfig().NE.DpkgTimeout != 0 { - timeout = config.GetYamlConfig().NE.DpkgTimeout - } - dpkgCmd := fmt.Sprintf("sudo %s/spawndpkg.sh %d %s '%s'", - config.GetYamlConfig().NE.ScpDir, timeout, inputStr, filePath) - err = RunSSHCmd(sshHost, dpkgCmd) - if err != nil { - log.Errorf("Faile to execute dpkg command: %s, error: %v", dpkgCmd, err) - services.ResponseInternalServerError500ProcessError(w, err) - return - } - // timeout := time.Duration(config.GetYamlConfig().OMC.CmdTimeout) * time.Second - // ctx, cancel := context.WithTimeout(context.Background(), timeout) // 设置超时 - // defer cancel() - // cmd := exec.CommandContext(ctx, "ssh", sshHost, dpkgCmd) - // var stdout, stderr bytes.Buffer - // cmd.Stdout = &stdout - // cmd.Stderr = &stderr - // err := cmd.Start() - // if err != nil { - // log.Error("Faile to execute dpkg command: %v, err: %s", err, stderr.String()) - // services.ResponseInternalServerError500ProcessError(w, err) - // return - // } - // out, err := cmd.CombinedOutput() - // log.Debugf("Exec output: %v", string(out)) - // if err != nil { - // log.Error("Faile to execute dpkg command:", err) - // services.ResponseInternalServerError500ProcessError(w, err) - // return - // } - } else { - err := global.ErrCMUnknownSoftwareFormat - log.Error(err) + scpDir := fmt.Sprintf("%s@%s:%s", config.GetYamlConfig().NE.User, + neInfo.Ip, config.GetYamlConfig().NE.ScpDir) + cmd := exec.Command("scp", "-r", srcFile, scpDir) + _, err := cmd.CombinedOutput() + if err != nil { + log.Errorf("Faile to scp NF: neType=%s, neId=%s, ip=%s", neType, neId, neInfo.Ip) services.ResponseInternalServerError500ProcessError(w, err) return } + + dpkgCmd := fmt.Sprintf("sudo %s/actpkg.sh '%s'", + config.GetYamlConfig().NE.ScpDir, filePath) + err = RunSSHCmd(sshHost, dpkgCmd) + if err != nil { + log.Errorf("Faile to execute dpkg command: %s, error: %v", dpkgCmd, err) + services.ResponseInternalServerError500ProcessError(w, err) + return + } + + // fileType := global.IsRpmOrDebPackage(filePath) + // if fileType == 1 { + // srcFile := fmt.Sprintf("%s/spawnrpm.sh", config.GetYamlConfig().OMC.BinDir) + + // scpDir := fmt.Sprintf("%s@%s:%s", config.GetYamlConfig().NE.User, + // neInfo.Ip, config.GetYamlConfig().NE.ScpDir) + // cmd := exec.Command("scp", "-r", srcFile, scpDir) + // _, err := cmd.CombinedOutput() + // if err != nil { + // log.Errorf("Faile to scp NF: neType=%s, neId=%s, ip=%s", neType, neId, neInfo.Ip) + // services.ResponseInternalServerError500ProcessError(w, err) + // return + // } + + // dpkgCmd := fmt.Sprintf("sudo %s/spawnrpm.sh '%s'", + // config.GetYamlConfig().NE.ScpDir, filePath) + // err = RunSSHCmd(sshHost, dpkgCmd) + // if err != nil { + // log.Errorf("Faile to execute dpkg command: %s, error: %v", dpkgCmd, err) + // services.ResponseInternalServerError500ProcessError(w, err) + // return + // } + // } else if fileType == 2 { + // srcFile := fmt.Sprintf("%s/spawndpkg.sh", config.GetYamlConfig().OMC.BinDir) + + // scpDir := fmt.Sprintf("%s@%s:%s", config.GetYamlConfig().NE.User, + // neInfo.Ip, config.GetYamlConfig().NE.ScpDir) + // cmd := exec.Command("scp", "-r", srcFile, scpDir) + // _, err := cmd.CombinedOutput() + // if err != nil { + // log.Errorf("Faile to scp NF: neType=%s, neId=%s, ip=%s", neType, neId, neInfo.Ip) + // services.ResponseInternalServerError500ProcessError(w, err) + // return + // } + + // dpkgCmd := fmt.Sprintf("sudo %s/spawndpkg.sh '%s'", + // config.GetYamlConfig().NE.ScpDir, filePath) + // err = RunSSHCmd(sshHost, dpkgCmd) + // if err != nil { + // log.Errorf("Faile to execute dpkg command: %s, error: %v", dpkgCmd, err) + // services.ResponseInternalServerError500ProcessError(w, err) + // return + // } + // } else { + // err := global.ErrCMUnknownSoftwareFormat + // log.Error(err) + // services.ResponseInternalServerError500ProcessError(w, err) + // return + // } switch neTypeLower { case "omc": restartCmd := fmt.Sprintf("sudo %s/bin/omcsvc.sh restart", config.GetYamlConfig().NE.OmcDir) diff --git a/misc/actpkg.sh b/misc/actpkg.sh new file mode 100644 index 00000000..2a22a340 --- /dev/null +++ b/misc/actpkg.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +expect <