diff --git a/offline/latest.yml b/offline/latest.yml index 2429903..c551ffc 100644 --- a/offline/latest.yml +++ b/offline/latest.yml @@ -1,3 +1,3 @@ --- -version: 1.0 +version: 0.1.0 diff --git a/src/chart/conf.go b/src/chart/conf.go index b0ef83b..50cf33f 100644 --- a/src/chart/conf.go +++ b/src/chart/conf.go @@ -22,6 +22,7 @@ type repoData struct { Name string `yaml:"name"` Url string `yaml:"url"` ForceUpdate bool `yaml:"forceupdate"` + Opts string `yaml:"opts"` } type ChartRepoData struct { @@ -29,14 +30,14 @@ type ChartRepoData struct { Charts []ChartData `yaml:"charts"` } -type chartsRepoData struct { +type chartsRepoParse struct { Charts []ChartRepoData `yaml:"opencloud"` } func FromConfigFile(filename string) ([]ChartRepoData, error) { yamlFile, _ := os.ReadFile(filename) - var data chartsRepoData + var data chartsRepoParse err := yaml.Unmarshal(yamlFile, &data) if err != nil { return data.Charts, err diff --git a/src/helm/repo.go b/src/helm/repo.go index 41144e9..3d8f8e6 100644 --- a/src/helm/repo.go +++ b/src/helm/repo.go @@ -1,98 +1,102 @@ -package helm - -import ( - "fmt" - "strings" - "encoding/json" - - log "oc-deploy/log_wrapper" - "oc-deploy/utils" -) - -type HelmRepo struct { - Name string - Repository string // Url du dépôt - ForceUpdate bool - Opts string -} - -func (this HelmCommand) AddRepository(repo HelmRepo) (string, error) { - - helm_bin := this.Bin - - force_update := "--force-update=false" - if repo.ForceUpdate { - force_update = "--force-update=true" - } else { - list, _ := this.ListRepository() - if utils.StringInSlice(repo.Name, list) { - return "Existe déjà", nil - } - } - - msg := fmt.Sprintf("%s repo add %s %s %s %s", helm_bin, repo.Name, repo.Repository, force_update, repo.Opts) - log.Log().Debug().Msg(msg) - - msg = strings.TrimSuffix(msg, " ") - - cmd_args := strings.Split(msg, " ") - cmd := this.Exec(cmd_args[0], cmd_args[1:]...) - stdout, err := cmd.CombinedOutput() - - res := string(stdout) - res = strings.TrimSuffix(res, "\n") - - return res, err -} - -type parseList struct { - Name string `json:"name"` -} - -func (this HelmCommand) ListRepository() ([]string, error) { - - helm_bin := this.Bin - res := make([]string, 0, 0) - - msg := fmt.Sprintf("%s repo list -o json", helm_bin) - log.Log().Debug().Msg(msg) - - cmd_args := strings.Split(msg, " ") - - cmd := this.Exec(cmd_args[0], cmd_args[1:]...) - stdout, err := cmd.CombinedOutput() - if err != nil { - return res, err - } - - var objmap []parseList - - err = json.Unmarshal(stdout, &objmap) - if err != nil { - return res, err - } - - for _, ele := range objmap { - res = append(res, ele.Name) - } - - return res, err -} - -// helm repo remove [NAME] -func (this HelmCommand) RemoveRepository(repo HelmRepo) (string, error) { - helm_bin := this.Bin - - msg := fmt.Sprintf("%s repo remove %s", helm_bin, repo.Name) - log.Log().Debug().Msg(msg) - - cmd_args := strings.Split(msg, " ") - - cmd := this.Exec(cmd_args[0], cmd_args[1:]...) - stdout, err := cmd.CombinedOutput() - - res := string(stdout) - res = strings.TrimSuffix(res, "\n") - - return res, err -} +package helm + +import ( + "fmt" + "strings" + "encoding/json" + + log "oc-deploy/log_wrapper" + "oc-deploy/utils" +) + +type HelmRepo struct { + Name string + Repository string // Url du dépôt + ForceUpdate bool + Opts string +} + +func (this HelmCommand) AddRepository(repo HelmRepo) (string, error) { + + helm_bin := this.Bin + + force_update := "--force-update=false" + if repo.ForceUpdate { + force_update = "--force-update=true" + } else { + list, _ := this.ListRepository() + if utils.StringInSlice(repo.Name, list) { + return "Existe déjà", nil + } + } + + msg := fmt.Sprintf("%s repo add %s %s %s %s", helm_bin, repo.Name, repo.Repository, force_update, repo.Opts) + + msg = strings.TrimSuffix(msg, " ") + log.Log().Debug().Msg(msg) + + cmd_args := strings.Split(msg, " ") + cmd := this.Exec(cmd_args[0], cmd_args[1:]...) + stdout, err := cmd.CombinedOutput() + if err != nil { + return "", fmt.Errorf(string(stdout)) + } + + res := string(stdout) + res = strings.TrimSuffix(res, "\n") + log.Log().Debug().Msg(res) + + return res, nil +} + +type parseList struct { + Name string `json:"name"` +} + +func (this HelmCommand) ListRepository() ([]string, error) { + + helm_bin := this.Bin + res := make([]string, 0, 0) + + msg := fmt.Sprintf("%s repo list -o json", helm_bin) + log.Log().Debug().Msg(msg) + + cmd_args := strings.Split(msg, " ") + + cmd := this.Exec(cmd_args[0], cmd_args[1:]...) + stdout, err := cmd.CombinedOutput() + if err != nil { + return res, err + } + + var objmap []parseList + + err = json.Unmarshal(stdout, &objmap) + if err != nil { + return res, err + } + + for _, ele := range objmap { + res = append(res, ele.Name) + } + + return res, err +} + +// helm repo remove [NAME] +func (this HelmCommand) RemoveRepository(repo HelmRepo) (string, error) { + helm_bin := this.Bin + + msg := fmt.Sprintf("%s repo remove %s", helm_bin, repo.Name) + log.Log().Debug().Msg(msg) + + cmd_args := strings.Split(msg, " ") + + cmd := this.Exec(cmd_args[0], cmd_args[1:]...) + stdout, err := cmd.CombinedOutput() + + res := string(stdout) + res = strings.TrimSuffix(res, "\n") + + return res, err +} diff --git a/src/install/install.go b/src/install/install.go index c258575..de5f7d0 100644 --- a/src/install/install.go +++ b/src/install/install.go @@ -41,7 +41,8 @@ func (this *InstallClass) ChartRepo() (error) { log.Log().Info().Msg(fmt.Sprintf(" >> Helm Repo : %s", v.Repository.Name)) repo := helm.HelmRepo{Name: v.Repository.Name, Repository: v.Repository.Url, - ForceUpdate: v.Repository.ForceUpdate} + ForceUpdate: v.Repository.ForceUpdate, + Opts: v.Repository.Opts} res, err := this.commandHelm.AddRepository(repo) if err != nil { log.Log().Info().Msg(fmt.Sprintf(" << %s ", err))