Fix preapply hook behavior

Fixes #399

Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
This commit is contained in:
Yusuke Kuoka 2022-10-10 08:26:56 +00:00 committed by yxxhero
parent ff107103da
commit c2ea0f0355
1 changed files with 15 additions and 26 deletions

View File

@ -1360,32 +1360,33 @@ Do you really want to apply?
st.Releases = selectedAndNeededReleases
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)...)
// We deleted releases by traversing the DAG in reverse order
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 {
var (
rs []state.ReleaseSpec
preapplyErrors []error
)
var rs []state.ReleaseSpec
for _, r := range subst.Releases {
release := r
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)
}
}
if len(preapplyErrors) > 0 {
return preapplyErrors
}
subst.Releases = rs
return subst.DeleteReleasesForSync(&affectedReleases, helm, c.Concurrency())
@ -1399,27 +1400,15 @@ Do you really want to apply?
// We upgrade releases by traversing the DAG
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 {
var (
rs []state.ReleaseSpec
preapplyErrors []error
)
var rs []state.ReleaseSpec
for _, r := range subst.Releases {
release := r
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)
}
}
if len(preapplyErrors) > 0 {
return preapplyErrors
}
subst.Releases = rs
syncOpts := &state.SyncOpts{