mirror of
https://github.com/helmfile/helmfile.git
synced 2026-09-30 08:32:48 +02:00
fix(#507): support assign --post-renderer within helmfile flags and helmdefault or release config
1. only implement post-renderer flags this patch 2. As mumoshu advise, add helmfile flags `--post-render` and add the postRenderer config in helmDefaults and release. the priority is helmfile flags > release > helmDefaults. 3. fix the test case in state_test.go and some other tests. Signed-off-by: guofutan <guofutan@tencent.com> Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
+14
-23
@@ -36,7 +36,7 @@ type execer struct {
|
||||
logger *zap.SugaredLogger
|
||||
kubeContext string
|
||||
extra []string
|
||||
postRenderers []string
|
||||
postRenderer string
|
||||
decryptedSecretMutex sync.Mutex
|
||||
decryptedSecrets map[string]*decryptedSecret
|
||||
writeTempFile func([]byte) (string, error)
|
||||
@@ -132,23 +132,7 @@ func New(helmBinary string, enableLiveOutput bool, logger *zap.SugaredLogger, ku
|
||||
}
|
||||
|
||||
func (helm *execer) SetExtraArgs(args ...string) {
|
||||
var extraArgs []string
|
||||
var renderArgs []string
|
||||
// reset the postRenderers and filter --post-renderer=xx or --post-renderer xxx from args and put into helm.postRenderers
|
||||
for i := 0; i < len(args); i++ {
|
||||
if strings.HasPrefix(args[i], "--post-renderer=") || strings.HasPrefix(args[i], "--post-renderer-args=") {
|
||||
renderArgs = append(renderArgs, args[i])
|
||||
} else if (args[i] == "--post-renderer" || args[i] == "--post-renderer-args") && i < len(args)-1 {
|
||||
renderArgs = append(renderArgs, args[i])
|
||||
renderArgs = append(renderArgs, args[i+1])
|
||||
i++
|
||||
} else {
|
||||
extraArgs = append(extraArgs, args[i])
|
||||
}
|
||||
}
|
||||
|
||||
helm.extra = extraArgs
|
||||
helm.postRenderers = renderArgs
|
||||
helm.extra = args
|
||||
}
|
||||
|
||||
func (helm *execer) SetHelmBinary(bin string) {
|
||||
@@ -159,6 +143,14 @@ func (helm *execer) SetEnableLiveOutput(enableLiveOutput bool) {
|
||||
helm.enableLiveOutput = enableLiveOutput
|
||||
}
|
||||
|
||||
func (helm *execer) SetPostRenderer(postRenderer string) {
|
||||
helm.postRenderer = postRenderer
|
||||
}
|
||||
|
||||
func (helm *execer) GetPostRenderer() string {
|
||||
return helm.postRenderer
|
||||
}
|
||||
|
||||
func (helm *execer) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials string, skipTLSVerify string) error {
|
||||
var args []string
|
||||
var out []byte
|
||||
@@ -268,8 +260,8 @@ func (helm *execer) SyncRelease(context HelmContext, name, chart string, flags .
|
||||
env["HELM_TILLER_HISTORY_MAX"] = strconv.Itoa(context.HistoryMax)
|
||||
}
|
||||
|
||||
if helm.IsHelm3() {
|
||||
flags = append(flags, helm.postRenderers...)
|
||||
if helm.IsHelm3() && helm.postRenderer != "" {
|
||||
flags = append(flags, "--post-renderer", helm.postRenderer)
|
||||
}
|
||||
|
||||
out, err := helm.exec(append(append(preArgs, "upgrade", "--install", name, chart), flags...), env, nil)
|
||||
@@ -411,10 +403,9 @@ func (helm *execer) TemplateRelease(name string, chart string, flags ...string)
|
||||
args = []string{"template", chart, "--name", name}
|
||||
}
|
||||
|
||||
if helm.IsHelm3() {
|
||||
flags = append(flags, helm.postRenderers...)
|
||||
if helm.IsHelm3() && helm.postRenderer != "" {
|
||||
flags = append(flags, "--post-renderer", helm.postRenderer)
|
||||
}
|
||||
|
||||
out, err := helm.exec(append(args, flags...), map[string]string{}, nil)
|
||||
|
||||
var outputToFile bool
|
||||
|
||||
+24
-23
@@ -69,29 +69,6 @@ func Test_SetExtraArgs(t *testing.T) {
|
||||
if !reflect.DeepEqual(helm.extra, []string{"alpha", "beta"}) {
|
||||
t.Error("helmexec.SetExtraArgs() - two extra arguments missing (overwriting the previous value)")
|
||||
}
|
||||
|
||||
helm.SetExtraArgs("--post-renderer=aaa")
|
||||
fmt.Println(helm.postRenderers)
|
||||
if !reflect.DeepEqual(helm.postRenderers, []string{"--post-renderer=aaa"}) {
|
||||
t.Error("helmexec.SetExtraArgs() - post-renderer assign arguments missing ")
|
||||
}
|
||||
|
||||
helm.SetExtraArgs("--post-renderer", "aaa")
|
||||
fmt.Println(helm.postRenderers)
|
||||
if !reflect.DeepEqual(helm.postRenderers, []string{"--post-renderer", "aaa"}) {
|
||||
t.Error("helmexec.SetExtraArgs() - post-renderer blank arguments missing ")
|
||||
}
|
||||
|
||||
helm.SetExtraArgs("--post-renderer-args=bbb")
|
||||
fmt.Println(helm.postRenderers)
|
||||
if !reflect.DeepEqual(helm.postRenderers, []string{"--post-renderer-args=bbb"}) {
|
||||
t.Error("helmexec.SetExtraArgs() - post-renderer-args assign arguments missing")
|
||||
}
|
||||
|
||||
helm.SetExtraArgs("--post-renderer", "aaa", "--post-renderer-args=bbb")
|
||||
if !reflect.DeepEqual(helm.postRenderers, []string{"--post-renderer", "aaa", "--post-renderer-args=bbb"}) {
|
||||
t.Error("helmexec.SetExtraArgs() - post-renderer arguments not be set correct")
|
||||
}
|
||||
}
|
||||
|
||||
func Test_SetHelmBinary(t *testing.T) {
|
||||
@@ -116,6 +93,30 @@ func Test_SetEnableLiveOutput(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func Test_SetPostRenderer(t *testing.T) {
|
||||
helm := MockExecer(NewLogger(os.Stdout, "info"), "dev")
|
||||
if helm.enableLiveOutput {
|
||||
t.Error("helmexec.enableLiveOutput should not be enabled by default")
|
||||
}
|
||||
postRendererFoo := "/bin/rewrite-repo.sh"
|
||||
helm.SetPostRenderer(postRendererFoo)
|
||||
if helm.postRenderer != postRendererFoo {
|
||||
t.Errorf("helmexec.SetPostRenderer() - actual = %s expect = %s", helm.postRenderer, postRendererFoo)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_GetPostRenderer(t *testing.T) {
|
||||
helm := MockExecer(NewLogger(os.Stdout, "info"), "dev")
|
||||
if helm.enableLiveOutput {
|
||||
t.Error("helmexec.enableLiveOutput should not be enabled by default")
|
||||
}
|
||||
postRendererFoo := "/bin/rewrite-repo.sh"
|
||||
helm.SetPostRenderer(postRendererFoo)
|
||||
if helm.GetPostRenderer() != postRendererFoo {
|
||||
t.Errorf("helmexec.GetPostRenderer() - actual = %s expect = %s", helm.GetPostRenderer(), postRendererFoo)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_AddRepo_Helm_3_3_2(t *testing.T) {
|
||||
var buffer bytes.Buffer
|
||||
logger := NewLogger(&buffer, "debug")
|
||||
|
||||
@@ -14,6 +14,8 @@ type Interface interface {
|
||||
SetExtraArgs(args ...string)
|
||||
SetHelmBinary(bin string)
|
||||
SetEnableLiveOutput(enableLiveOutput bool)
|
||||
SetPostRenderer(postRenderer string)
|
||||
GetPostRenderer() string
|
||||
|
||||
AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials string, skipTLSVerify string) error
|
||||
UpdateRepo() error
|
||||
|
||||
Reference in New Issue
Block a user