Fix post-renderer flag not working in diff and template subcommand (#691)
Signed-off-by: xiaomudk <xiaomudk@gmail.com>
This commit is contained in:
parent
37c213210e
commit
a8574ba0cf
|
|
@ -51,6 +51,7 @@ func NewDiffCmd(globalCfg *config.GlobalImpl) *cobra.Command {
|
|||
f.StringArrayVar(&diffOptions.Suppress, "suppress", nil, "suppress specified Kubernetes objects in the output. Can be provided multiple times. For example: --suppress KeycloakClient --suppress VaultSecret")
|
||||
f.BoolVar(&diffOptions.ReuseValues, "reuse-values", false, `Override helmDefaults.reuseValues "helm diff upgrade --install --reuse-values"`)
|
||||
f.BoolVar(&diffOptions.ResetValues, "reset-values", false, `Override helmDefaults.reuseValues "helm diff upgrade --install --reset-values"`)
|
||||
f.StringVar(&diffOptions.PostRenderer, "post-renderer", "", `pass --post-renderer to "helm template" or "helm upgrade --install"`)
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1569,6 +1569,7 @@ func (a *App) diff(r *Run, c DiffConfigProvider) (*string, bool, bool, []error)
|
|||
helm := r.helm
|
||||
|
||||
helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...)
|
||||
helm.SetPostRenderer(c.PostRenderer())
|
||||
|
||||
var errs []error
|
||||
|
||||
|
|
@ -1873,6 +1874,8 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
|
|||
helm.SetExtraArgs(args...)
|
||||
}
|
||||
|
||||
helm.SetPostRenderer(c.PostRenderer())
|
||||
|
||||
opts := &state.TemplateOpts{
|
||||
Set: c.Set(),
|
||||
IncludeCRDs: c.IncludeCRDs(),
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ type SyncConfigProvider interface {
|
|||
|
||||
type DiffConfigProvider interface {
|
||||
Args() string
|
||||
PostRenderer() string
|
||||
|
||||
Values() []string
|
||||
Set() []string
|
||||
|
|
|
|||
|
|
@ -150,6 +150,10 @@ func (a diffConfig) ResetValues() bool {
|
|||
return !a.reuseValues
|
||||
}
|
||||
|
||||
func (a diffConfig) PostRenderer() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func TestDiff(t *testing.T) {
|
||||
type flags struct {
|
||||
skipNeeds bool
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ type DiffOptions struct {
|
|||
ReuseValues bool
|
||||
// ResetValues is true if helm command should reset values to charts' default
|
||||
ResetValues bool
|
||||
// Propagate '--post-renderer' to helmv3 template and helm install
|
||||
PostRenderer string
|
||||
}
|
||||
|
||||
// NewDiffOptions creates a new Apply
|
||||
|
|
@ -171,3 +173,8 @@ func (t *DiffImpl) ReuseValues() bool {
|
|||
func (t *DiffImpl) ResetValues() bool {
|
||||
return t.DiffOptions.ResetValues
|
||||
}
|
||||
|
||||
// PostRenderer returns the PostRenderer.
|
||||
func (t *DiffImpl) PostRenderer() string {
|
||||
return t.DiffOptions.PostRenderer
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,10 +29,10 @@ func (st *HelmState) appendHelmXFlags(flags []string, release *ReleaseSpec) []st
|
|||
func (st *HelmState) appendPostRenderFlags(flags []string, release *ReleaseSpec, helm helmexec.Interface) []string {
|
||||
switch {
|
||||
// helm.GetPostRenderer() comes from cmd flag.
|
||||
case helm.GetPostRenderer() != "":
|
||||
flags = append(flags, "--post-renderer", helm.GetPostRenderer())
|
||||
case release.PostRenderer != nil && *release.PostRenderer != "":
|
||||
flags = append(flags, "--post-renderer", *release.PostRenderer)
|
||||
case helm.GetPostRenderer() != "":
|
||||
flags = append(flags, "--post-renderer", helm.GetPostRenderer())
|
||||
case st.HelmDefaults.PostRenderer != nil && *st.HelmDefaults.PostRenderer != "":
|
||||
flags = append(flags, "--post-renderer", *st.HelmDefaults.PostRenderer)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ ${kubectl} create namespace ${test_ns} || fail "Could not create namespace ${tes
|
|||
. ${dir}/test-cases/secretssops.sh
|
||||
. ${dir}/test-cases/yaml-overwrite.sh
|
||||
. ${dir}/test-cases/chart-needs.sh
|
||||
. ${dir}/test-cases/postrender-diff.sh
|
||||
. ${dir}/test-cases/postrender.sh
|
||||
|
||||
# ALL DONE -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
postrender_diff_case_input_dir="${cases_dir}/postrender-diff/input"
|
||||
postrender_diff_case_output_dir="${cases_dir}/postrender-diff/output"
|
||||
|
||||
config_file="helmfile.yaml"
|
||||
if [[ ${HELMFILE_V1MODE} = true ]]; then
|
||||
pushd "${postrender_diff_case_input_dir}"
|
||||
mv "${config_file}" "${config_file}.gotmpl"
|
||||
config_file="${config_file}.gotmpl"
|
||||
popd
|
||||
fi
|
||||
|
||||
postrender_diff_out_file=${postrender_diff_case_output_dir}/result
|
||||
if [[ $EXTRA_HELMFILE_FLAGS == *--enable-live-output* ]]; then
|
||||
postrender_diff_out_file=${postrender_diff_case_output_dir}/result-live
|
||||
fi
|
||||
|
||||
postrender_diff_tmp=$(mktemp -d)
|
||||
postrender_diff_reverse=${postrender_diff_tmp}/postrender.diff.build.yaml
|
||||
|
||||
test_start "postrender diff"
|
||||
info "Comparing postrender diff output ${postrender_diff_reverse} with ${postrender_diff_case_output_dir}/result.yaml"
|
||||
for i in $(seq 10); do
|
||||
info "Comparing build/postrender-diff #$i"
|
||||
${helmfile} -f ${postrender_diff_case_input_dir}/${config_file} diff --concurrency 1 &> ${postrender_diff_reverse} || fail "\"helmfile diff\" shouldn't fail"
|
||||
diff -u ${postrender_diff_out_file} ${postrender_diff_reverse} || fail "\"helmfile diff\" should be consistent"
|
||||
echo code=$?
|
||||
done
|
||||
test_pass "postrender diff"
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
postrender_case_input_dir="${cases_dir}/postrender/input"
|
||||
postrender_case_output_dir="${cases_dir}/postrender/output"
|
||||
|
||||
config_file="helmfile.yaml"
|
||||
if [[ ${HELMFILE_V1MODE} = true ]]; then
|
||||
pushd "${postrender_case_input_dir}"
|
||||
mv "${config_file}" "${config_file}.gotmpl"
|
||||
config_file="${config_file}.gotmpl"
|
||||
popd
|
||||
fi
|
||||
|
||||
postrender_diff_out_file=${postrender_case_output_dir}/diff-result
|
||||
if [[ $EXTRA_HELMFILE_FLAGS == *--enable-live-output* ]]; then
|
||||
postrender_diff_out_file=${postrender_case_output_dir}/diff-result-live
|
||||
fi
|
||||
|
||||
postrender_template_out_file=${postrender_case_output_dir}/template-result
|
||||
if [[ $EXTRA_HELMFILE_FLAGS == *--enable-live-output* ]]; then
|
||||
postrender_template_out_file=${postrender_case_output_dir}/template-result-live
|
||||
fi
|
||||
|
||||
postrender_diff_tmp=$(mktemp -d)
|
||||
postrender_diff_reverse=${postrender_diff_tmp}/postrender.diff.build.yaml
|
||||
postrender_template_reverse=${postrender_diff_tmp}/postrender.template.build.yaml
|
||||
|
||||
test_start "postrender diff"
|
||||
info "Comparing postrender diff output ${postrender_diff_reverse} with ${postrender_case_output_dir}/result.yaml"
|
||||
for i in $(seq 10); do
|
||||
info "Comparing build/postrender-diff #$i"
|
||||
${helmfile} -f ${postrender_case_input_dir}/${config_file} diff --concurrency 1 --post-renderer ./add-cm1.bash &> ${postrender_diff_reverse} || fail "\"helmfile diff\" shouldn't fail"
|
||||
diff -u ${postrender_diff_out_file} ${postrender_diff_reverse} || fail "\"helmfile diff\" should be consistent"
|
||||
echo code=$?
|
||||
done
|
||||
test_pass "postrender diff"
|
||||
|
||||
test_start "postrender template"
|
||||
info "Comparing postrender template output ${postrender_template_reverse} with ${postrender_case_output_dir}/result.yaml"
|
||||
for i in $(seq 10); do
|
||||
info "Comparing build/postrender-diff #$i"
|
||||
${helmfile} -f ${postrender_case_input_dir}/${config_file} template --concurrency 1 --post-renderer ./add-cm1.bash &> ${postrender_template_reverse} || fail "\"helmfile template\" shouldn't fail"
|
||||
diff -u ${postrender_template_out_file} ${postrender_template_reverse} || fail "\"helmfile template\" should be consistent"
|
||||
echo code=$?
|
||||
done
|
||||
test_pass "postrender template"
|
||||
|
|
@ -1,6 +1,3 @@
|
|||
helmDefaults:
|
||||
postRenderer: ./add-cm1.bash
|
||||
|
||||
releases:
|
||||
- name: foo
|
||||
chart: ../../../charts/raw
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
Building dependency release=foo, chart=../../../charts/raw
|
||||
Building dependency release=baz, chart=../../../charts/raw
|
||||
Templating release=foo, chart=../../../charts/raw
|
||||
---
|
||||
# Source: raw/templates/resources.yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: foo-1
|
||||
namespace: helmfile-tests
|
||||
data:
|
||||
foo: FOO
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
data:
|
||||
two: TWO
|
||||
metadata:
|
||||
name: cm2
|
||||
|
||||
Templating release=baz, chart=../../../charts/raw
|
||||
---
|
||||
# Source: raw/templates/resources.yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: baz-3
|
||||
namespace: helmfile-tests
|
||||
data:
|
||||
baz: BAZ
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
data:
|
||||
one: ONE
|
||||
metadata:
|
||||
name: cm1
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
Live output is enabled
|
||||
Building dependency release=foo, chart=../../../charts/raw
|
||||
Building dependency release=baz, chart=../../../charts/raw
|
||||
Templating release=foo, chart=../../../charts/raw
|
||||
---
|
||||
# Source: raw/templates/resources.yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: foo-1
|
||||
namespace: helmfile-tests
|
||||
data:
|
||||
foo: FOO
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
data:
|
||||
two: TWO
|
||||
metadata:
|
||||
name: cm2
|
||||
|
||||
Templating release=baz, chart=../../../charts/raw
|
||||
---
|
||||
# Source: raw/templates/resources.yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: baz-3
|
||||
namespace: helmfile-tests
|
||||
data:
|
||||
baz: BAZ
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
data:
|
||||
one: ONE
|
||||
metadata:
|
||||
name: cm1
|
||||
|
||||
Loading…
Reference in New Issue