프로세스 재시작 요청 추가
This commit is contained in:
@ -2,7 +2,6 @@ package server
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
@ -10,6 +9,7 @@ import (
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"repositories.action2quare.com/ayo/gocommon/logger"
|
||||
@ -140,6 +140,43 @@ func (h *houstonHandler) DeleteDeploySource(w http.ResponseWriter, r *http.Reque
|
||||
}
|
||||
}
|
||||
|
||||
func (h *houstonHandler) findLastestConfigFile(name string) (string, error) {
|
||||
logger.Println("findLastestConfigFile :", name)
|
||||
configFiles, err := os.ReadDir(path.Join(h.deployPath, name, "config"))
|
||||
if err != nil {
|
||||
logger.Println("findLastestConfigFile failed :", err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
var cf fs.FileInfo
|
||||
for _, file := range configFiles {
|
||||
if file.IsDir() {
|
||||
continue
|
||||
}
|
||||
if strings.HasPrefix(file.Name(), "config.") {
|
||||
test, err := file.Info()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if cf == nil {
|
||||
cf = test
|
||||
} else if test.ModTime().After(cf.ModTime()) {
|
||||
cf = test
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if cf != nil {
|
||||
logger.Println("findLastestConfigFile cf found :", cf.Name())
|
||||
return path.Join(sub_folder_name_deploys, name, "config", cf.Name()), nil
|
||||
}
|
||||
|
||||
logger.Println("findLastestConfigFile cf NOT found")
|
||||
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (h *houstonHandler) Deploy(w http.ResponseWriter, r *http.Request) {
|
||||
// <form action="/houston" method="post" enctype="multipart/form-data">
|
||||
// <input type="text" name="name">
|
||||
@ -191,9 +228,11 @@ func (h *houstonHandler) Deploy(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
configPath := ""
|
||||
if _, err := os.Stat(path.Join(h.deployPath, name, "config", "config.json")); err == nil || errors.Is(err, fs.ErrExist) {
|
||||
configPath = path.Join(sub_folder_name_deploys, name, "config", "config.json")
|
||||
configPath, err := h.findLastestConfigFile(name)
|
||||
if err != nil {
|
||||
logger.Println(err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
h.Operation().Deploy(MakeDeployRequest(
|
||||
@ -310,6 +349,51 @@ func (h *houstonHandler) StopProcess(w http.ResponseWriter, r *http.Request) {
|
||||
}, targets))
|
||||
}
|
||||
|
||||
func (h *houstonHandler) RestartProcess(w http.ResponseWriter, r *http.Request) {
|
||||
// <form action="/houston" method="post" enctype="multipart/form-data">
|
||||
// <input type="text" name="name">
|
||||
// <input type="text" name="target">
|
||||
// <input type="text" name="pid">
|
||||
// <input type="text" name="config">
|
||||
// </form>
|
||||
pidstr := r.FormValue("pid")
|
||||
target := r.FormValue("target")
|
||||
name := r.FormValue("name")
|
||||
if len(target) == 0 || len(pidstr) == 0 || len(name) == 0 {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
deployConfig := false
|
||||
configstr := r.FormValue("config")
|
||||
if len(configstr) > 0 {
|
||||
deployConfig, _ = strconv.ParseBool(configstr)
|
||||
}
|
||||
|
||||
pid, err := strconv.ParseInt(pidstr, 10, 0)
|
||||
if err != nil {
|
||||
logger.Println(err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
var configPath string
|
||||
if deployConfig {
|
||||
configPath, err = h.findLastestConfigFile(name)
|
||||
if err != nil {
|
||||
logger.Println(err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
h.Operation().RestartProcess(MakeRestartRequest(shared.RestartProcessRequest{
|
||||
Name: name,
|
||||
Pid: int32(pid),
|
||||
Config: configPath,
|
||||
}, []string{target}))
|
||||
}
|
||||
|
||||
func (h *houstonHandler) UploadLogs(w http.ResponseWriter, r *http.Request) {
|
||||
// <form action="/houston" method="post" enctype="multipart/form-data">
|
||||
// <input type="text" name="name">
|
||||
|
||||
Reference in New Issue
Block a user