mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-20 04:48:16 +02:00
declare "reuse values" control mode in helmDefaults (#527)
* support for helmDefaults.reuseValues Signed-off-by: Karol Ossowski <k@koralsky.pl>
This commit is contained in:
+61
-50
@@ -150,6 +150,8 @@ type HelmSpec struct {
|
||||
// This is relevant only when your release uses a local chart or a directory containing K8s manifests or a Kustomization
|
||||
// as a Helm chart.
|
||||
SkipDeps bool `yaml:"skipDeps"`
|
||||
// on helm upgrade/diff, reuse values currently set in the release and merge them with the ones defined within helmfile
|
||||
ReuseValues bool `yaml:"reuseValues"`
|
||||
|
||||
TLS bool `yaml:"tls"`
|
||||
TLSCACert string `yaml:"tlsCACert,omitempty"`
|
||||
@@ -584,7 +586,7 @@ func (st *HelmState) prepareSyncReleases(helm helmexec.Interface, additionalValu
|
||||
flags = append(flags, "--wait-for-jobs")
|
||||
}
|
||||
|
||||
if opts.ReuseValues {
|
||||
if opts.ReuseValues || st.HelmDefaults.ReuseValues {
|
||||
flags = append(flags, "--reuse-values")
|
||||
} else {
|
||||
flags = append(flags, "--reset-values")
|
||||
@@ -1626,6 +1628,62 @@ type diffPrepareResult struct {
|
||||
upgradeDueToSkippedDiff bool
|
||||
}
|
||||
|
||||
func (st *HelmState) commonDiffFlags(detailedExitCode bool, includeTests bool, suppress []string, suppressSecrets bool, showSecrets bool, noHooks bool, opt *DiffOpts) []string {
|
||||
var flags []string
|
||||
|
||||
if detailedExitCode {
|
||||
flags = append(flags, "--detailed-exitcode")
|
||||
}
|
||||
|
||||
if includeTests {
|
||||
flags = append(flags, "--include-tests")
|
||||
}
|
||||
|
||||
for _, s := range suppress {
|
||||
flags = append(flags, "--suppress", s)
|
||||
}
|
||||
|
||||
if suppressSecrets {
|
||||
flags = append(flags, "--suppress-secrets")
|
||||
}
|
||||
|
||||
if showSecrets {
|
||||
flags = append(flags, "--show-secrets")
|
||||
}
|
||||
|
||||
if noHooks {
|
||||
flags = append(flags, "--no-hooks")
|
||||
}
|
||||
|
||||
if opt.NoColor {
|
||||
flags = append(flags, "--no-color")
|
||||
} else if opt.Color {
|
||||
flags = append(flags, "--color")
|
||||
}
|
||||
|
||||
if opt.Context > 0 {
|
||||
flags = append(flags, "--context", fmt.Sprintf("%d", opt.Context))
|
||||
}
|
||||
|
||||
if opt.Output != "" {
|
||||
flags = append(flags, "--output", opt.Output)
|
||||
}
|
||||
|
||||
if opt.ReuseValues || st.HelmDefaults.ReuseValues {
|
||||
flags = append(flags, "--reuse-values")
|
||||
} else {
|
||||
flags = append(flags, "--reset-values")
|
||||
}
|
||||
|
||||
if opt.Set != nil {
|
||||
for _, s := range opt.Set {
|
||||
flags = append(flags, "--set", s)
|
||||
}
|
||||
}
|
||||
|
||||
return flags
|
||||
}
|
||||
|
||||
func (st *HelmState) prepareDiffReleases(helm helmexec.Interface, additionalValues []string, concurrency int, detailedExitCode bool, includeTests bool, suppress []string, suppressSecrets bool, showSecrets bool, noHooks bool, opts ...DiffOpt) ([]diffPrepareResult, []error) {
|
||||
opt := &DiffOpts{}
|
||||
for _, o := range opts {
|
||||
@@ -1670,6 +1728,7 @@ func (st *HelmState) prepareDiffReleases(helm helmexec.Interface, additionalValu
|
||||
jobs := make(chan *ReleaseSpec, numReleases)
|
||||
results := make(chan diffPrepareResult, numReleases)
|
||||
resultsMap := map[string]diffPrepareResult{}
|
||||
commonDiffFlags := st.commonDiffFlags(detailedExitCode, includeTests, suppress, suppressSecrets, showSecrets, noHooks, opt)
|
||||
|
||||
rs := []diffPrepareResult{}
|
||||
errs := []error{}
|
||||
@@ -1719,55 +1778,7 @@ func (st *HelmState) prepareDiffReleases(helm helmexec.Interface, additionalValu
|
||||
flags = append(flags, "--values", valfile)
|
||||
}
|
||||
|
||||
if detailedExitCode {
|
||||
flags = append(flags, "--detailed-exitcode")
|
||||
}
|
||||
|
||||
if includeTests {
|
||||
flags = append(flags, "--include-tests")
|
||||
}
|
||||
|
||||
for _, s := range suppress {
|
||||
flags = append(flags, "--suppress", s)
|
||||
}
|
||||
|
||||
if suppressSecrets {
|
||||
flags = append(flags, "--suppress-secrets")
|
||||
}
|
||||
|
||||
if showSecrets {
|
||||
flags = append(flags, "--show-secrets")
|
||||
}
|
||||
|
||||
if noHooks {
|
||||
flags = append(flags, "--no-hooks")
|
||||
}
|
||||
|
||||
if opt.NoColor {
|
||||
flags = append(flags, "--no-color")
|
||||
} else if opt.Color {
|
||||
flags = append(flags, "--color")
|
||||
}
|
||||
|
||||
if opt.Context > 0 {
|
||||
flags = append(flags, "--context", fmt.Sprintf("%d", opt.Context))
|
||||
}
|
||||
|
||||
if opt.Output != "" {
|
||||
flags = append(flags, "--output", opt.Output)
|
||||
}
|
||||
|
||||
if opt.ReuseValues {
|
||||
flags = append(flags, "--reuse-values")
|
||||
} else {
|
||||
flags = append(flags, "--reset-values")
|
||||
}
|
||||
|
||||
if opt.Set != nil {
|
||||
for _, s := range opt.Set {
|
||||
flags = append(flags, "--set", s)
|
||||
}
|
||||
}
|
||||
flags = append(flags, commonDiffFlags...)
|
||||
|
||||
if len(errs) > 0 {
|
||||
rsErrs := make([]*ReleaseError, len(errs))
|
||||
|
||||
+36
-12
@@ -2507,9 +2507,10 @@ func TestHelmState_Delete(t *testing.T) {
|
||||
|
||||
func TestDiffpareSyncReleases(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
flags []string
|
||||
diffOptions *DiffOpts
|
||||
name string
|
||||
flags []string
|
||||
diffOptions *DiffOpts
|
||||
helmDefaults *HelmSpec
|
||||
}{
|
||||
{
|
||||
name: "reuse-values",
|
||||
@@ -2517,11 +2518,21 @@ func TestDiffpareSyncReleases(t *testing.T) {
|
||||
diffOptions: &DiffOpts{
|
||||
ReuseValues: true,
|
||||
},
|
||||
helmDefaults: &HelmSpec{},
|
||||
},
|
||||
{
|
||||
name: "reset-values",
|
||||
flags: []string{"--reset-values"},
|
||||
name: "reset-values",
|
||||
flags: []string{"--reset-values"},
|
||||
diffOptions: &DiffOpts{},
|
||||
helmDefaults: &HelmSpec{},
|
||||
},
|
||||
{
|
||||
name: "default-reuse-values",
|
||||
flags: []string{"--reuse-values"},
|
||||
diffOptions: &DiffOpts{},
|
||||
helmDefaults: &HelmSpec{
|
||||
ReuseValues: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2534,7 +2545,8 @@ func TestDiffpareSyncReleases(t *testing.T) {
|
||||
}
|
||||
state := &HelmState{
|
||||
ReleaseSetSpec: ReleaseSetSpec{
|
||||
Releases: releases,
|
||||
Releases: releases,
|
||||
HelmDefaults: *tt.helmDefaults,
|
||||
},
|
||||
logger: logger,
|
||||
valsRuntime: valsRuntime,
|
||||
@@ -2555,9 +2567,10 @@ func TestDiffpareSyncReleases(t *testing.T) {
|
||||
|
||||
func TestPrepareSyncReleases(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
flags []string
|
||||
syncOptions *SyncOpts
|
||||
name string
|
||||
flags []string
|
||||
syncOptions *SyncOpts
|
||||
helmDefaults *HelmSpec
|
||||
}{
|
||||
{
|
||||
name: "reuse-values",
|
||||
@@ -2565,11 +2578,21 @@ func TestPrepareSyncReleases(t *testing.T) {
|
||||
syncOptions: &SyncOpts{
|
||||
ReuseValues: true,
|
||||
},
|
||||
helmDefaults: &HelmSpec{},
|
||||
},
|
||||
{
|
||||
name: "reset-values",
|
||||
flags: []string{"--reset-values"},
|
||||
name: "reset-values",
|
||||
flags: []string{"--reset-values"},
|
||||
syncOptions: &SyncOpts{},
|
||||
helmDefaults: &HelmSpec{},
|
||||
},
|
||||
{
|
||||
name: "reuse-default-values",
|
||||
flags: []string{"--reuse-values"},
|
||||
syncOptions: &SyncOpts{},
|
||||
helmDefaults: &HelmSpec{
|
||||
ReuseValues: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2582,7 +2605,8 @@ func TestPrepareSyncReleases(t *testing.T) {
|
||||
}
|
||||
state := &HelmState{
|
||||
ReleaseSetSpec: ReleaseSetSpec{
|
||||
Releases: releases,
|
||||
Releases: releases,
|
||||
HelmDefaults: *tt.helmDefaults,
|
||||
},
|
||||
logger: logger,
|
||||
valsRuntime: valsRuntime,
|
||||
|
||||
Reference in New Issue
Block a user