fix regression that `--namespace` breaks delete/destroy and possibly sync/apply as well
The problem was that `--namespace NS` had been not taken into account while deleting releases, that resulted in releases that should be deleted are not deleted.
This commit is contained in:
		
							parent
							
								
									8d7c79a323
								
							
						
					
					
						commit
						77082cef58
					
				| 
						 | 
					@ -451,7 +451,7 @@ func printBatches(batches [][]state.Release) string {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func withDAG(templated *state.HelmState, helm helmexec.Interface, logger *zap.SugaredLogger, reverse bool, converge func(*state.HelmState, helmexec.Interface) (bool, []error)) (bool, []error) {
 | 
					func withDAG(templated *state.HelmState, helm helmexec.Interface, logger *zap.SugaredLogger, reverse bool, converge func(*state.HelmState, helmexec.Interface) (bool, []error)) (bool, []error) {
 | 
				
			||||||
	batches, err := state.PlanReleases(templated.Releases, templated.Selectors, reverse)
 | 
						batches, err := templated.PlanReleases(reverse)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return false, []error{err}
 | 
							return false, []error{err}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -679,7 +679,7 @@ func (a *App) apply(r *Run, c ApplyConfigProvider) (bool, []error) {
 | 
				
			||||||
		Set:     c.Set(),
 | 
							Set:     c.Set(),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	allReleases := st.Releases
 | 
						allReleases := st.GetReleasesWithOverrides()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var changedReleases []state.ReleaseSpec
 | 
						var changedReleases []state.ReleaseSpec
 | 
				
			||||||
	var deletingReleases []state.ReleaseSpec
 | 
						var deletingReleases []state.ReleaseSpec
 | 
				
			||||||
| 
						 | 
					@ -688,7 +688,7 @@ func (a *App) apply(r *Run, c ApplyConfigProvider) (bool, []error) {
 | 
				
			||||||
	// TODO Better way to detect diff on only filtered releases
 | 
						// TODO Better way to detect diff on only filtered releases
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if len(st.Selectors) > 0 {
 | 
							if len(st.Selectors) > 0 {
 | 
				
			||||||
			releases, err := st.GetFilteredReleases()
 | 
								releases, err := st.GetSelectedReleasesWithOverrides()
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				return false, []error{err}
 | 
									return false, []error{err}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -835,20 +835,13 @@ func (a *App) delete(r *Run, purge bool, c DestroyConfigProvider) (bool, []error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	affectedReleases := state.AffectedReleases{}
 | 
						affectedReleases := state.AffectedReleases{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var toSync []state.ReleaseSpec
 | 
						toSync, err := st.GetSelectedReleasesWithOverrides()
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if len(st.Selectors) > 0 {
 | 
					 | 
				
			||||||
		var err error
 | 
					 | 
				
			||||||
		toSync, err = st.GetFilteredReleases()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return false, []error{err}
 | 
							return false, []error{err}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(toSync) == 0 {
 | 
						if len(toSync) == 0 {
 | 
				
			||||||
		return false, nil
 | 
							return false, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		toSync = st.Releases
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	toDelete, err := st.DetectReleasesToBeDeleted(helm, toSync)
 | 
						toDelete, err := st.DetectReleasesToBeDeleted(helm, toSync)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -925,7 +918,7 @@ func (a *App) sync(r *Run, c SyncConfigProvider) (bool, []error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(st.Selectors) > 0 {
 | 
						if len(st.Selectors) > 0 {
 | 
				
			||||||
		var err error
 | 
							var err error
 | 
				
			||||||
		toSync, err = st.GetFilteredReleases()
 | 
							toSync, err = st.GetSelectedReleasesWithOverrides()
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, []error{err}
 | 
								return false, []error{err}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -1047,7 +1040,7 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(st.Selectors) > 0 {
 | 
						if len(st.Selectors) > 0 {
 | 
				
			||||||
		var err error
 | 
							var err error
 | 
				
			||||||
		templatedReleases, err = st.GetFilteredReleases()
 | 
							templatedReleases, err = st.GetSelectedReleasesWithOverrides()
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, []error{err}
 | 
								return false, []error{err}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1226,7 +1226,31 @@ func (st *HelmState) Clean() []error {
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func MarkFilteredReleases(releases []ReleaseSpec, selectors []string) ([]Release, error) {
 | 
					func (st *HelmState) GetReleasesWithOverrides() []ReleaseSpec {
 | 
				
			||||||
 | 
						var rs []ReleaseSpec
 | 
				
			||||||
 | 
						for _, r := range st.Releases {
 | 
				
			||||||
 | 
							var spec ReleaseSpec
 | 
				
			||||||
 | 
							spec = r
 | 
				
			||||||
 | 
							st.ApplyOverrides(&spec)
 | 
				
			||||||
 | 
							rs = append(rs, spec)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return rs
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (st *HelmState) SelectReleasesWithOverrides() ([]Release, error) {
 | 
				
			||||||
 | 
						rs, err := markFilteredReleases(st.GetReleasesWithOverrides(), st.Selectors)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for _, r := range rs {
 | 
				
			||||||
 | 
							spec := r.ReleaseSpec
 | 
				
			||||||
 | 
							st.ApplyOverrides(&spec)
 | 
				
			||||||
 | 
							r.ReleaseSpec = spec
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return rs, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func markFilteredReleases(releases []ReleaseSpec, selectors []string) ([]Release, error) {
 | 
				
			||||||
	var filteredReleases []Release
 | 
						var filteredReleases []Release
 | 
				
			||||||
	filters := []ReleaseFilter{}
 | 
						filters := []ReleaseFilter{}
 | 
				
			||||||
	for _, label := range selectors {
 | 
						for _, label := range selectors {
 | 
				
			||||||
| 
						 | 
					@ -1266,8 +1290,8 @@ func MarkFilteredReleases(releases []ReleaseSpec, selectors []string) ([]Release
 | 
				
			||||||
	return filteredReleases, nil
 | 
						return filteredReleases, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (st *HelmState) GetFilteredReleases() ([]ReleaseSpec, error) {
 | 
					func (st *HelmState) GetSelectedReleasesWithOverrides() ([]ReleaseSpec, error) {
 | 
				
			||||||
	filteredReleases, err := MarkFilteredReleases(st.Releases, st.Selectors)
 | 
						filteredReleases, err := st.SelectReleasesWithOverrides()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -1282,7 +1306,7 @@ func (st *HelmState) GetFilteredReleases() ([]ReleaseSpec, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FilterReleases allows for the execution of helm commands against a subset of the releases in the helmfile.
 | 
					// FilterReleases allows for the execution of helm commands against a subset of the releases in the helmfile.
 | 
				
			||||||
func (st *HelmState) FilterReleases() error {
 | 
					func (st *HelmState) FilterReleases() error {
 | 
				
			||||||
	releases, err := st.GetFilteredReleases()
 | 
						releases, err := st.GetSelectedReleasesWithOverrides()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -108,8 +108,8 @@ type PlanOpts struct {
 | 
				
			||||||
	Reverse bool
 | 
						Reverse bool
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func PlanReleases(releases []ReleaseSpec, selectors []string, reverse bool) ([][]Release, error) {
 | 
					func (st *HelmState) PlanReleases(reverse bool) ([][]Release, error) {
 | 
				
			||||||
	marked, err := MarkFilteredReleases(releases, selectors)
 | 
						marked, err := st.SelectReleasesWithOverrides()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue