From f5bdd5ec2d950cc6dbca321da2e43b49d20986a3 Mon Sep 17 00:00:00 2001 From: Frederic CORDIER Date: Fri, 17 Oct 2025 15:33:33 +0200 Subject: [PATCH 1/3] feat: create internal package --- .../csv-app.go => internal/cvm/cvm.go} | 37 ++----------------- apploader/internal/cvm/types.go | 30 +++++++++++++++ .../secret}/secret.go | 13 +------ 3 files changed, 35 insertions(+), 45 deletions(-) rename apploader/{csv-app/csv-app.go => internal/cvm/cvm.go} (92%) create mode 100644 apploader/internal/cvm/types.go rename apploader/{secret_server => internal/secret}/secret.go (69%) diff --git a/apploader/csv-app/csv-app.go b/apploader/internal/cvm/cvm.go similarity index 92% rename from apploader/csv-app/csv-app.go rename to apploader/internal/cvm/cvm.go index 54e697e..bc18cc5 100644 --- a/apploader/csv-app/csv-app.go +++ b/apploader/internal/cvm/cvm.go @@ -1,4 +1,4 @@ -package csvapp +package cvm /* #include @@ -7,9 +7,9 @@ package csvapp */ import "C" import ( + "apploader/internal/secret" "apploader/pkg/conversion" "apploader/pkg/file" - "apploader/secret_server" "fmt" "io/ioutil" "log" @@ -36,42 +36,13 @@ const ( SUPERVISOR_PATH = "/workplace/supervisord/apploader" ) -type CsvApp struct { - Kind string `yaml:"kind"` - AppInfo []*TaskInfo `yaml:"app"` - CsvAssistants []*TaskInfo `yaml:"csvAssistants"` -} - -type TaskInfo struct { - TLSInfo *TLSInfo `yaml:"tls"` - Name string `yaml:"name"` - Type string `yaml:"type"` - Entrypoint string `yaml:"entrypoint"` - Env interface{} `yaml:"env"` - Priority int `yaml:"-"` - Args []string `yaml:"args"` -} - -type SupervisorConf struct { - Name string - Command string - Workplace string - Environment string - Priority int -} - -type TLSInfo struct { - CertPath string `yaml:"certPath"` - CommonName string `yaml:"commonName"` -} - func DoJob(ca *TaskInfo) error { if ca.Type != JOB { return fmt.Errorf("this task is not a job") } envs := make([]string, 0) - for k, v := range secret_server.Secret { + for k, v := range secret.Secret { envs = append(envs, fmt.Sprintf("%s=%s", k, v)) } @@ -218,7 +189,7 @@ func ExecvDockerApp(ca *TaskInfo) { } } - for k, v := range secret_server.Secret { + for k, v := range secret.Secret { err := os.Setenv(k, v) if err != nil { log.Fatalf("set secret env failed, error: %s\n", err.Error()) diff --git a/apploader/internal/cvm/types.go b/apploader/internal/cvm/types.go new file mode 100644 index 0000000..7e996a0 --- /dev/null +++ b/apploader/internal/cvm/types.go @@ -0,0 +1,30 @@ +package cvm + +type CsvApp struct { + Kind string `yaml:"kind"` + AppInfo []*TaskInfo `yaml:"app"` + CsvAssistants []*TaskInfo `yaml:"csvAssistants"` +} + +type TaskInfo struct { + TLSInfo *TLSInfo `yaml:"tls"` + Name string `yaml:"name"` + Type string `yaml:"type"` + Entrypoint string `yaml:"entrypoint"` + Env interface{} `yaml:"env"` + Priority int `yaml:"-"` + Args []string `yaml:"args"` +} + +type SupervisorConf struct { + Name string + Command string + Workplace string + Environment string + Priority int +} + +type TLSInfo struct { + CertPath string `yaml:"certPath"` + CommonName string `yaml:"commonName"` +} diff --git a/apploader/secret_server/secret.go b/apploader/internal/secret/secret.go similarity index 69% rename from apploader/secret_server/secret.go rename to apploader/internal/secret/secret.go index 8f24b09..380cb4a 100644 --- a/apploader/secret_server/secret.go +++ b/apploader/internal/secret/secret.go @@ -1,4 +1,4 @@ -package secret_server +package secret import ( "log" @@ -29,17 +29,6 @@ func StartSecretServer() { }) }) - //r.GET("/secret", func(c *gin.Context) { - // k := c.PostForm("key") - // - // v := Secret[k] - // fmt.Println(v) - // c.JSON(http.StatusOK, gin.H{ - // "code": 200, - // "message": "update secret successful", - // "value":v, - // }) - //}) log.Printf("secret server start successful") r.Run(":9090") // listen and serve on 0.0.0.0:8080 } From fa47367deb00f5eb32645006f6d5a25a2b9a1f56 Mon Sep 17 00:00:00 2001 From: Frederic CORDIER Date: Fri, 17 Oct 2025 16:11:14 +0200 Subject: [PATCH 2/3] feat: create internal package and move/rename existing package --- apploader/internal/cvm/cvm.go | 107 +------------------------------- apploader/internal/cvm/types.go | 11 ++-- apploader/main.go | 8 +-- 3 files changed, 10 insertions(+), 116 deletions(-) diff --git a/apploader/internal/cvm/cvm.go b/apploader/internal/cvm/cvm.go index bc18cc5..551d9f0 100644 --- a/apploader/internal/cvm/cvm.go +++ b/apploader/internal/cvm/cvm.go @@ -11,7 +11,6 @@ import ( "apploader/pkg/conversion" "apploader/pkg/file" "fmt" - "io/ioutil" "log" "os" "os/exec" @@ -57,43 +56,6 @@ func DoJob(ca *TaskInfo) error { } } - if ca.TLSInfo != nil { - encryptedDir := "/workplace/encryptedData" - log.Printf("[warning] use PKI, please make sure %s is an encrypted disk", encryptedDir) - caPath := path.Join(encryptedDir, "pki") - if !file.Exists(path.Join(caPath, "existed")) { - err := RunCommand("/workplace/csv-agent/csvassistants/pkitool/pkitool", nil, "cert", "-m", "ca", "-a", caPath, "-c", "/workplace/csv-agent/csvassistants/pkitool/conf/cert-conf") - if err != nil { - return fmt.Errorf("init pki ca failed, error: %s", err.Error()) - } - err = ioutil.WriteFile(path.Join(caPath, "existed"), []byte("existed"), os.ModePerm) - if err != nil { - os.RemoveAll(caPath) - return fmt.Errorf("mark ca existed faield, error: %s", err.Error()) - } - } - if !file.Exists(path.Join(ca.TLSInfo.CertPath, "existed")) { - err := RunCommand("/workplace/csv-agent/csvassistants/pkitool/pkitool", nil, "cert", "-m", "server", "-a", caPath, "-o", ca.TLSInfo.CertPath, "-n", ca.TLSInfo.CommonName) - if err != nil { - return fmt.Errorf("create tls cert failed, error: %s\n", err.Error()) - } - - err = ioutil.WriteFile(path.Join(ca.TLSInfo.CertPath, "existed"), []byte("existed"), os.ModePerm) - if err != nil { - os.RemoveAll(ca.TLSInfo.CertPath) - return fmt.Errorf("mark ca existed faield, error: %s", err.Error()) - } - } - - caString, err := ioutil.ReadFile(path.Join(caPath, "ca.crt")) - if err != nil { - return fmt.Errorf("read ca.crt failed, error: %s", err.Error()) - } - log.Println("the ca.crt is as follow") - fmt.Printf("%s", caString) - log.Println("*********************************") - } - log.Printf("entrypoint is %s", ca.Entrypoint) return RunCommand(ca.Entrypoint, envs, ca.Args...) @@ -160,35 +122,6 @@ func ExecvDockerApp(ca *TaskInfo) { log.Fatalf("task is not a docker app") } - if ca.TLSInfo != nil { - encryptedDir := "/workplace/encryptedData" - log.Printf("[warning] use PKI, please make sure %s is an encrypted disk", encryptedDir) - caPath := path.Join(encryptedDir, "pki") - if !file.Exists(path.Join(caPath, "existed")) { - err := RunCommand("/workplace/csv-agent/csvassistants/pkitool/pkitool", nil, "cert", "-m", "ca", "-a", caPath, "-c", "/workplace/csv-agent/csvassistants/pkitool/conf/cert-conf") - if err != nil { - log.Fatalf("init pki ca failed, error: %s", err.Error()) - } - err = ioutil.WriteFile(path.Join(caPath, "existed"), []byte("existed"), os.ModePerm) - if err != nil { - os.RemoveAll(caPath) - log.Fatalf("mark ca existed faield, error: %s", err.Error()) - } - } - if !file.Exists(path.Join(ca.TLSInfo.CertPath, "existed")) { - err := RunCommand("/workplace/csv-agent/csvassistants/pkitool/pkitool", nil, "cert", "-m", "server", "-a", caPath, "-o", ca.TLSInfo.CertPath, "-n", ca.TLSInfo.CommonName) - if err != nil { - log.Fatalf("create tls cert failed, error: %s\n", err.Error()) - } - - err = ioutil.WriteFile(path.Join(ca.TLSInfo.CertPath, "existed"), []byte("existed"), os.ModePerm) - if err != nil { - os.RemoveAll(ca.TLSInfo.CertPath) - log.Fatalf("mark ca existed faield, error: %s", err.Error()) - } - } - } - for k, v := range secret.Secret { err := os.Setenv(k, v) if err != nil { @@ -217,42 +150,6 @@ func CreateSevers(ca *TaskInfo) error { if ca.Type != SERVER { return fmt.Errorf("task is not a server") } - if ca.TLSInfo != nil { - encryptedDir := "/workplace/encryptedData" - log.Printf("[warning] use PKI, please make sure %s is an encrypted disk", encryptedDir) - caPath := path.Join(encryptedDir, "pki") - if !file.Exists(path.Join(caPath, "existed")) { - err := RunCommand("/workplace/csv-agent/csvassistants/pkitool/pkitool", nil, "cert", "-m", "ca", "-a", caPath, "-c", "/workplace/csv-agent/csvassistants/pkitool/conf/cert-conf") - if err != nil { - return fmt.Errorf("init pki ca failed, error: %s", err.Error()) - } - err = ioutil.WriteFile(path.Join(caPath, "existed"), []byte("existed"), os.ModePerm) - if err != nil { - os.RemoveAll(caPath) - return fmt.Errorf("mark ca existed faield, error: %s", err.Error()) - } - } - if !file.Exists(path.Join(ca.TLSInfo.CertPath, "existed")) { - err := RunCommand("/workplace/csv-agent/csvassistants/pkitool/pkitool", nil, "cert", "-m", "server", "-a", caPath, "-o", ca.TLSInfo.CertPath, "-n", ca.TLSInfo.CommonName) - if err != nil { - return fmt.Errorf("create tls cert failed, error: %s\n", err.Error()) - } - - err = ioutil.WriteFile(path.Join(ca.TLSInfo.CertPath, "existed"), []byte("existed"), os.ModePerm) - if err != nil { - os.RemoveAll(ca.TLSInfo.CertPath) - return fmt.Errorf("mark ca existed faield, error: %s", err.Error()) - } - } - - caString, err := ioutil.ReadFile(path.Join(caPath, "ca.crt")) - if err != nil { - return fmt.Errorf("read ca.crt failed, error: %s", err.Error()) - } - log.Println("the ca.crt is as follow") - fmt.Printf("%s", caString) - log.Println("*********************************") - } envs := make([]string, 0) @@ -303,11 +200,11 @@ func CreateSevers(ca *TaskInfo) error { } func Start() { - appfile, err := ioutil.ReadFile("conf/app.yml") + appfile, err := os.ReadFile("conf/app.yml") if err != nil { log.Fatalf("read app.yml failed, error: %s\n", err.Error()) } - csvApp := new(CsvApp) + csvApp := new(CvmApp) err = yaml.Unmarshal(appfile, &csvApp) if err != nil { log.Fatalf("unmarshal app.yml failed, error: %s\n", err.Error()) diff --git a/apploader/internal/cvm/types.go b/apploader/internal/cvm/types.go index 7e996a0..1f7c929 100644 --- a/apploader/internal/cvm/types.go +++ b/apploader/internal/cvm/types.go @@ -1,13 +1,14 @@ package cvm -type CsvApp struct { +// CvmApp is the main application configuration +type CvmApp struct { Kind string `yaml:"kind"` AppInfo []*TaskInfo `yaml:"app"` CsvAssistants []*TaskInfo `yaml:"csvAssistants"` } +// TaskInfo is the information of a task type TaskInfo struct { - TLSInfo *TLSInfo `yaml:"tls"` Name string `yaml:"name"` Type string `yaml:"type"` Entrypoint string `yaml:"entrypoint"` @@ -16,6 +17,7 @@ type TaskInfo struct { Args []string `yaml:"args"` } +// SupervisorConf is the configuration of a supervisor type SupervisorConf struct { Name string Command string @@ -23,8 +25,3 @@ type SupervisorConf struct { Environment string Priority int } - -type TLSInfo struct { - CertPath string `yaml:"certPath"` - CommonName string `yaml:"commonName"` -} diff --git a/apploader/main.go b/apploader/main.go index 69cdc55..26d8454 100644 --- a/apploader/main.go +++ b/apploader/main.go @@ -1,15 +1,15 @@ package main import ( - csvapp "apploader/csv-app" - "apploader/secret_server" + "apploader/internal/cvm" + "apploader/internal/secret" "log" "os" ) func main() { log.SetFlags(log.Lshortfile | log.LstdFlags) - go secret_server.StartSecretServer() - csvapp.Start() + go secret.StartSecretServer() + cvm.Start() os.Exit(0) } From 6fa8deadf457382fb1b840c1f639684c83517ed2 Mon Sep 17 00:00:00 2001 From: Frederic CORDIER Date: Fri, 17 Oct 2025 17:23:24 +0200 Subject: [PATCH 3/3] refactor: csv prefix to cvm prefix --- apploader/internal/cvm/cvm.go | 8 ++++---- apploader/internal/cvm/types.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apploader/internal/cvm/cvm.go b/apploader/internal/cvm/cvm.go index 551d9f0..8b39cfa 100644 --- a/apploader/internal/cvm/cvm.go +++ b/apploader/internal/cvm/cvm.go @@ -204,8 +204,8 @@ func Start() { if err != nil { log.Fatalf("read app.yml failed, error: %s\n", err.Error()) } - csvApp := new(CvmApp) - err = yaml.Unmarshal(appfile, &csvApp) + cvmApp := new(CvmApp) + err = yaml.Unmarshal(appfile, &cvmApp) if err != nil { log.Fatalf("unmarshal app.yml failed, error: %s\n", err.Error()) } @@ -213,9 +213,9 @@ func Start() { log.Println("do all the job over") - startTask(csvApp.CsvAssistants) + startTask(cvmApp.CvmAssistants) - startTask(csvApp.AppInfo) + startTask(cvmApp.AppInfo) } func startTask(tasks []*TaskInfo) { diff --git a/apploader/internal/cvm/types.go b/apploader/internal/cvm/types.go index 1f7c929..1757131 100644 --- a/apploader/internal/cvm/types.go +++ b/apploader/internal/cvm/types.go @@ -4,7 +4,7 @@ package cvm type CvmApp struct { Kind string `yaml:"kind"` AppInfo []*TaskInfo `yaml:"app"` - CsvAssistants []*TaskInfo `yaml:"csvAssistants"` + CvmAssistants []*TaskInfo `yaml:"csvAssistants"` } // TaskInfo is the information of a task