Fix preapply hook behavior
Fixes #399 Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
This commit is contained in:
		
							parent
							
								
									ff107103da
								
							
						
					
					
						commit
						c2ea0f0355
					
				|  | @ -1360,32 +1360,33 @@ Do you really want to apply? | ||||||
| 	st.Releases = selectedAndNeededReleases | 	st.Releases = selectedAndNeededReleases | ||||||
| 
 | 
 | ||||||
| 	if !interactive || interactive && r.askForConfirmation(confMsg) { | 	if !interactive || interactive && r.askForConfirmation(confMsg) { | ||||||
|  | 		if _, preapplyErrors := withDAG(st, helm, a.Logger, state.PlanOptions{Reverse: true, SelectedReleases: toDelete, SkipNeeds: true}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error { | ||||||
|  | 			for _, r := range subst.Releases { | ||||||
|  | 				release := r | ||||||
|  | 				if _, err := st.TriggerPreapplyEvent(&release, "apply"); err != nil { | ||||||
|  | 					return []error{err} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			return nil | ||||||
|  | 		})); len(preapplyErrors) > 0 { | ||||||
|  | 			return true, false, preapplyErrors | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		r.helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...) | 		r.helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...) | ||||||
| 
 | 
 | ||||||
| 		// We deleted releases by traversing the DAG in reverse order
 | 		// We deleted releases by traversing the DAG in reverse order
 | ||||||
| 		if len(releasesToBeDeleted) > 0 { | 		if len(releasesToBeDeleted) > 0 { | ||||||
| 			_, deletionErrs := withDAG(st, helm, a.Logger, state.PlanOptions{Reverse: true, SelectedReleases: toDelete, SkipNeeds: true}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error { | 			_, deletionErrs := withDAG(st, helm, a.Logger, state.PlanOptions{Reverse: true, SelectedReleases: toDelete, SkipNeeds: true}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error { | ||||||
| 				var ( | 				var rs []state.ReleaseSpec | ||||||
| 					rs             []state.ReleaseSpec |  | ||||||
| 					preapplyErrors []error |  | ||||||
| 				) |  | ||||||
| 
 | 
 | ||||||
| 				for _, r := range subst.Releases { | 				for _, r := range subst.Releases { | ||||||
| 					release := r | 					release := r | ||||||
| 					if r2, ok := releasesToBeDeleted[state.ReleaseToID(&release)]; ok { | 					if r2, ok := releasesToBeDeleted[state.ReleaseToID(&release)]; ok { | ||||||
| 						if _, err := st.TriggerPreapplyEvent(&r2, "apply"); err != nil { |  | ||||||
| 							preapplyErrors = append(applyErrs, err) |  | ||||||
| 							continue |  | ||||||
| 						} |  | ||||||
| 
 |  | ||||||
| 						rs = append(rs, r2) | 						rs = append(rs, r2) | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				if len(preapplyErrors) > 0 { |  | ||||||
| 					return preapplyErrors |  | ||||||
| 				} |  | ||||||
| 
 |  | ||||||
| 				subst.Releases = rs | 				subst.Releases = rs | ||||||
| 
 | 
 | ||||||
| 				return subst.DeleteReleasesForSync(&affectedReleases, helm, c.Concurrency()) | 				return subst.DeleteReleasesForSync(&affectedReleases, helm, c.Concurrency()) | ||||||
|  | @ -1399,27 +1400,15 @@ Do you really want to apply? | ||||||
| 		// We upgrade releases by traversing the DAG
 | 		// We upgrade releases by traversing the DAG
 | ||||||
| 		if len(releasesToBeUpdated) > 0 { | 		if len(releasesToBeUpdated) > 0 { | ||||||
| 			_, updateErrs := withDAG(st, helm, a.Logger, state.PlanOptions{SelectedReleases: toUpdate, Reverse: false, SkipNeeds: true, IncludeTransitiveNeeds: c.IncludeTransitiveNeeds()}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error { | 			_, updateErrs := withDAG(st, helm, a.Logger, state.PlanOptions{SelectedReleases: toUpdate, Reverse: false, SkipNeeds: true, IncludeTransitiveNeeds: c.IncludeTransitiveNeeds()}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error { | ||||||
| 				var ( | 				var rs []state.ReleaseSpec | ||||||
| 					rs             []state.ReleaseSpec |  | ||||||
| 					preapplyErrors []error |  | ||||||
| 				) |  | ||||||
| 
 | 
 | ||||||
| 				for _, r := range subst.Releases { | 				for _, r := range subst.Releases { | ||||||
| 					release := r | 					release := r | ||||||
| 					if r2, ok := releasesToBeUpdated[state.ReleaseToID(&release)]; ok { | 					if r2, ok := releasesToBeUpdated[state.ReleaseToID(&release)]; ok { | ||||||
| 						if _, err := st.TriggerPreapplyEvent(&r2, "apply"); err != nil { |  | ||||||
| 							preapplyErrors = append(applyErrs, err) |  | ||||||
| 							continue |  | ||||||
| 						} |  | ||||||
| 
 |  | ||||||
| 						rs = append(rs, r2) | 						rs = append(rs, r2) | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				if len(preapplyErrors) > 0 { |  | ||||||
| 					return preapplyErrors |  | ||||||
| 				} |  | ||||||
| 
 |  | ||||||
| 				subst.Releases = rs | 				subst.Releases = rs | ||||||
| 
 | 
 | ||||||
| 				syncOpts := &state.SyncOpts{ | 				syncOpts := &state.SyncOpts{ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue