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 <guillaume28.perrin@gmail.com>
This commit is contained in:
Guillaume Perrin 2020-05-09 07:03:56 +02:00 committed by GitHub
parent 23be9af2db
commit 6d5f8c71cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 0 deletions

View File

@ -1163,6 +1163,9 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
releasesToRender := map[string]state.ReleaseSpec{} releasesToRender := map[string]state.ReleaseSpec{}
for _, r := range toRender { for _, r := range toRender {
id := state.ReleaseToID(&r) id := state.ReleaseToID(&r)
if r.Installed != nil && !*r.Installed {
continue
}
releasesToRender[id] = r releasesToRender[id] = r
} }

View File

@ -17,6 +17,15 @@ func NewContext() Context {
func (ctx Context) SyncReposOnce(st *state.HelmState, helm state.RepoUpdater) []error { func (ctx Context) SyncReposOnce(st *state.HelmState, helm state.RepoUpdater) []error {
var errs []error var errs []error
hasInstalled := false
for _, release := range st.Releases {
hasInstalled = hasInstalled || release.Installed == nil || *release.Installed
}
if !hasInstalled {
return errs
}
allUpdated := true allUpdated := true
for _, r := range st.Repositories { for _, r := range st.Repositories {
_, exists := ctx.updatedRepos[r.Name] _, exists := ctx.updatedRepos[r.Name]

View File

@ -975,6 +975,9 @@ func (st *HelmState) prepareDiffReleases(helm helmexec.Interface, additionalValu
if !st.Releases[i].Desired() { if !st.Releases[i].Desired() {
continue continue
} }
if st.Releases[i].Installed != nil && !*(st.Releases[i].Installed) {
continue
}
releases = append(releases, &st.Releases[i]) releases = append(releases, &st.Releases[i])
} }
@ -1388,6 +1391,10 @@ func (st *HelmState) PrepareReleases(helm helmexec.Interface, helmfileCommand st
for i := range st.Releases { for i := range st.Releases {
release := st.Releases[i] release := st.Releases[i]
if release.Installed != nil && !*release.Installed {
continue
}
if _, err := st.triggerPrepareEvent(&release, helmfileCommand); err != nil { if _, err := st.triggerPrepareEvent(&release, helmfileCommand); err != nil {
errs = append(errs, newReleaseFailedError(&release, err)) errs = append(errs, newReleaseFailedError(&release, err))
continue continue
@ -1484,6 +1491,10 @@ func (st *HelmState) BuildDeps(helm helmexec.Interface) []error {
continue continue
} }
if release.Installed != nil && !*release.Installed {
continue
}
if isLocalChart(release.Chart) { if isLocalChart(release.Chart) {
if err := helm.BuildDeps(release.Name, normalizeChart(st.basePath, release.Chart)); err != nil { if err := helm.BuildDeps(release.Name, normalizeChart(st.basePath, release.Chart)); err != nil {
errs = append(errs, err) errs = append(errs, err)