From 6d5f8c71cb23f5e77bd4ec5f8aaa4d1f25a33a72 Mon Sep 17 00:00:00 2001 From: Guillaume Perrin Date: Sat, 9 May 2020 07:03:56 +0200 Subject: [PATCH] Allow skipping chart-related operations when `installed: false` (#1233) Resolves #1232 CHANGES: * Disable repo update when installed is false When install is false, we do not need to update the repositories and get the chart. Signed-off-by: Guillaume Perrin --- pkg/app/app.go | 3 +++ pkg/app/context.go | 9 +++++++++ pkg/state/state.go | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/pkg/app/app.go b/pkg/app/app.go index 8cc18155..42064dd0 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -1163,6 +1163,9 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) { releasesToRender := map[string]state.ReleaseSpec{} for _, r := range toRender { id := state.ReleaseToID(&r) + if r.Installed != nil && !*r.Installed { + continue + } releasesToRender[id] = r } diff --git a/pkg/app/context.go b/pkg/app/context.go index 1cfff7fb..9864ce06 100644 --- a/pkg/app/context.go +++ b/pkg/app/context.go @@ -17,6 +17,15 @@ func NewContext() Context { func (ctx Context) SyncReposOnce(st *state.HelmState, helm state.RepoUpdater) []error { var errs []error + hasInstalled := false + for _, release := range st.Releases { + hasInstalled = hasInstalled || release.Installed == nil || *release.Installed + } + + if !hasInstalled { + return errs + } + allUpdated := true for _, r := range st.Repositories { _, exists := ctx.updatedRepos[r.Name] diff --git a/pkg/state/state.go b/pkg/state/state.go index 9558b3b2..5ca00b73 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -975,6 +975,9 @@ func (st *HelmState) prepareDiffReleases(helm helmexec.Interface, additionalValu if !st.Releases[i].Desired() { continue } + if st.Releases[i].Installed != nil && !*(st.Releases[i].Installed) { + continue + } releases = append(releases, &st.Releases[i]) } @@ -1388,6 +1391,10 @@ func (st *HelmState) PrepareReleases(helm helmexec.Interface, helmfileCommand st for i := range st.Releases { release := st.Releases[i] + if release.Installed != nil && !*release.Installed { + continue + } + if _, err := st.triggerPrepareEvent(&release, helmfileCommand); err != nil { errs = append(errs, newReleaseFailedError(&release, err)) continue @@ -1484,6 +1491,10 @@ func (st *HelmState) BuildDeps(helm helmexec.Interface) []error { continue } + if release.Installed != nil && !*release.Installed { + continue + } + if isLocalChart(release.Chart) { if err := helm.BuildDeps(release.Name, normalizeChart(st.basePath, release.Chart)); err != nil { errs = append(errs, err)