Add preapply hook
Signed-off-by: Anton Bretting <sajfer@gmail.com>
This commit is contained in:
parent
9019cec4ac
commit
4e5987d833
2
go.sum
2
go.sum
|
|
@ -1373,6 +1373,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
|
|||
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||
golang.org/x/exp v0.0.0-20220428152302-39d4317da171 h1:TfdoLivD44QwvssI9Sv1xwa5DcL5XQr4au4sZ2F2NV4=
|
||||
golang.org/x/exp v0.0.0-20220428152302-39d4317da171/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
|
|
|
|||
|
|
@ -1323,7 +1323,31 @@ func (a *App) apply(r *Run, c ApplyConfigProvider) (bool, bool, []error) {
|
|||
}
|
||||
}
|
||||
|
||||
if releasesToBeDeleted == nil && releasesToBeUpdated == nil {
|
||||
var releasesWithPreApply []state.ReleaseSpec
|
||||
for _, r := range toApplyWithNeeds {
|
||||
release := r
|
||||
if len(release.Hooks) > 0 {
|
||||
for _, hook := range release.Hooks {
|
||||
if slices.Contains(hook.Events, "preapply") {
|
||||
releasesWithPreApply = append(releasesWithPreApply, release)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(releasesWithPreApply) > 0 {
|
||||
msg := "Releases with preapply hooks: \n"
|
||||
if infoMsg != nil {
|
||||
msg = fmt.Sprintf("%s%s", *infoMsg, msg)
|
||||
}
|
||||
infoMsg = &msg
|
||||
}
|
||||
for _, release := range releasesWithPreApply {
|
||||
tmp := fmt.Sprintf("%s %s (%s)", *infoMsg, release.Name, release.Chart)
|
||||
infoMsg = &tmp
|
||||
}
|
||||
|
||||
if releasesToBeDeleted == nil && releasesToBeUpdated == nil && releasesWithPreApply == nil {
|
||||
if infoMsg != nil {
|
||||
logger := c.Logger()
|
||||
logger.Infof("")
|
||||
|
|
@ -1352,6 +1376,12 @@ Do you really want to apply?
|
|||
if !interactive || interactive && r.askForConfirmation(confMsg) {
|
||||
r.helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...)
|
||||
|
||||
for _, release := range st.Releases {
|
||||
if _, err := st.TriggerPreapplyEvent(&release, "apply"); err != nil {
|
||||
syncErrs = append(syncErrs, err)
|
||||
}
|
||||
}
|
||||
|
||||
// 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 {
|
||||
|
|
|
|||
|
|
@ -2251,6 +2251,10 @@ func (st *HelmState) triggerPostsyncEvent(r *ReleaseSpec, evtErr error, helmfile
|
|||
return st.triggerReleaseEvent("postsync", evtErr, r, helmfileCommand)
|
||||
}
|
||||
|
||||
func (st *HelmState) TriggerPreapplyEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) {
|
||||
return st.triggerReleaseEvent("preapply", nil, r, helmfileCommand)
|
||||
}
|
||||
|
||||
func (st *HelmState) triggerReleaseEvent(evt string, evtErr error, r *ReleaseSpec, helmfileCmd string) (bool, error) {
|
||||
bus := &event.Bus{
|
||||
Hooks: r.Hooks,
|
||||
|
|
|
|||
Loading…
Reference in New Issue