fix: helmfile should not complain on missing values files for undesired releases (#526)
Fixes #519
This commit is contained in:
		
							parent
							
								
									3edc7d6f33
								
							
						
					
					
						commit
						eb36e93c5a
					
				|  | @ -202,7 +202,14 @@ type syncPrepareResult struct { | |||
| 
 | ||||
| // SyncReleases wrapper for executing helm upgrade on the releases
 | ||||
| func (st *HelmState) prepareSyncReleases(helm helmexec.Interface, additionalValues []string, concurrency int) ([]syncPrepareResult, []error) { | ||||
| 	releases := st.Releases | ||||
| 	releases := []*ReleaseSpec{} | ||||
| 	for i, _ := range st.Releases { | ||||
| 		if !st.Releases[i].Desired() { | ||||
| 			continue | ||||
| 		} | ||||
| 		releases = append(releases, &st.Releases[i]) | ||||
| 	} | ||||
| 
 | ||||
| 	numReleases := len(releases) | ||||
| 	jobs := make(chan *ReleaseSpec, numReleases) | ||||
| 	results := make(chan syncPrepareResult, numReleases) | ||||
|  | @ -215,7 +222,7 @@ func (st *HelmState) prepareSyncReleases(helm helmexec.Interface, additionalValu | |||
| 		numReleases, | ||||
| 		func() { | ||||
| 			for i := 0; i < numReleases; i++ { | ||||
| 				jobs <- &releases[i] | ||||
| 				jobs <- releases[i] | ||||
| 			} | ||||
| 			close(jobs) | ||||
| 		}, | ||||
|  | @ -284,7 +291,7 @@ func (st *HelmState) DetectReleasesToBeDeleted(helm helmexec.Interface) ([]*Rele | |||
| 	detected := []*ReleaseSpec{} | ||||
| 	for i, _ := range st.Releases { | ||||
| 		release := st.Releases[i] | ||||
| 		if release.Installed != nil && !*release.Installed { | ||||
| 		if !release.Desired() { | ||||
| 			installed, err := isReleaseInstalled(helm, release) | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
|  | @ -322,7 +329,7 @@ func (st *HelmState) SyncReleases(helm helmexec.Interface, additionalValues []st | |||
| 				flags := prep.flags | ||||
| 				chart := normalizeChart(st.basePath, release.Chart) | ||||
| 				var relErr *ReleaseError | ||||
| 				if release.Installed != nil && !*release.Installed { | ||||
| 				if !release.Desired() { | ||||
| 					installed, err := isReleaseInstalled(helm, *release) | ||||
| 					if err != nil { | ||||
| 						relErr = &ReleaseError{release, err} | ||||
|  | @ -457,6 +464,10 @@ func (st *HelmState) TemplateReleases(helm helmexec.Interface, additionalValues | |||
| 	} | ||||
| 
 | ||||
| 	for _, release := range st.Releases { | ||||
| 		if !release.Desired() { | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		flags, err := st.flagsForTemplate(helm, &release) | ||||
| 		if err != nil { | ||||
| 			errs = append(errs, err) | ||||
|  | @ -513,6 +524,10 @@ func (st *HelmState) LintReleases(helm helmexec.Interface, additionalValues []st | |||
| 	} | ||||
| 
 | ||||
| 	for _, release := range st.Releases { | ||||
| 		if !release.Desired() { | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		flags, err := st.flagsForLint(helm, &release) | ||||
| 		if err != nil { | ||||
| 			errs = append(errs, err) | ||||
|  | @ -717,6 +732,9 @@ func (st *HelmState) DiffReleases(helm helmexec.Interface, additionalValues []st | |||
| 
 | ||||
| func (st *HelmState) ReleaseStatuses(helm helmexec.Interface, workerLimit int) []error { | ||||
| 	return st.scatterGatherReleases(helm, workerLimit, func(release ReleaseSpec) error { | ||||
| 		if !release.Desired() { | ||||
| 			return nil | ||||
| 		} | ||||
| 		return helm.ReleaseStatus(release.Name) | ||||
| 	}) | ||||
| } | ||||
|  | @ -742,6 +760,10 @@ func (st *HelmState) DeleteReleases(helm helmexec.Interface, purge bool) []error | |||
| // TestReleases wrapper for executing helm test on the releases
 | ||||
| func (st *HelmState) TestReleases(helm helmexec.Interface, cleanup bool, timeout int, concurrency int) []error { | ||||
| 	return st.scatterGatherReleases(helm, concurrency, func(release ReleaseSpec) error { | ||||
| 		if !release.Desired() { | ||||
| 			return nil | ||||
| 		} | ||||
| 
 | ||||
| 		flags := []string{} | ||||
| 		if cleanup { | ||||
| 			flags = append(flags, "--cleanup") | ||||
|  |  | |||
|  | @ -1126,12 +1126,51 @@ func TestHelmState_ReleaseStatuses(t *testing.T) { | |||
| 			helm:    &mockHelmExec{}, | ||||
| 			wantErr: true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "complain missing values file for desired release", | ||||
| 			releases: []ReleaseSpec{ | ||||
| 				{ | ||||
| 					Name: "error", | ||||
| 					Values: []interface{}{ | ||||
| 						"foo.yaml", | ||||
| 					}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			helm:    &mockHelmExec{}, | ||||
| 			wantErr: true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "should not complain missing values file for undesired release", | ||||
| 			releases: []ReleaseSpec{ | ||||
| 				{ | ||||
| 					Name: "error", | ||||
| 					Values: []interface{}{ | ||||
| 						"foo.yaml", | ||||
| 					}, | ||||
| 					Installed: boolValue(false), | ||||
| 				}, | ||||
| 			}, | ||||
| 			helm:    &mockHelmExec{}, | ||||
| 			wantErr: false, | ||||
| 		}, | ||||
| 	} | ||||
| 	for _, tt := range tests { | ||||
| 		i := func(t *testing.T) { | ||||
| 			state := &HelmState{ | ||||
| 				Releases: tt.releases, | ||||
| 				logger:   logger, | ||||
| 				fileExists: func(f string) (bool, error) { | ||||
| 					if f != "foo.yaml" { | ||||
| 						return false, fmt.Errorf("unexpected file: %s", f) | ||||
| 					} | ||||
| 					return true, nil | ||||
| 				}, | ||||
| 				readFile: func(f string) ([]byte, error) { | ||||
| 					if f != "foo.yaml" { | ||||
| 						return nil, fmt.Errorf("unexpected file: %s", f) | ||||
| 					} | ||||
| 					return []byte{}, nil | ||||
| 				}, | ||||
| 			} | ||||
| 			errs := state.ReleaseStatuses(tt.helm, 1) | ||||
| 			if (errs != nil) != tt.wantErr { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue