Updates based on review comments
Signed-off-by: Anton Bretting <sajfer@gmail.com>
This commit is contained in:
parent
5b88006e86
commit
3c0456c577
|
|
@ -15,7 +15,6 @@ import (
|
|||
|
||||
"github.com/variantdev/vals"
|
||||
"go.uber.org/zap"
|
||||
"golang.org/x/exp/slices"
|
||||
|
||||
"github.com/helmfile/helmfile/pkg/argparser"
|
||||
"github.com/helmfile/helmfile/pkg/filesystem"
|
||||
|
|
@ -1324,11 +1323,7 @@ func (a *App) apply(r *Run, c ApplyConfigProvider) (bool, bool, []error) {
|
|||
}
|
||||
}
|
||||
|
||||
releasesWithPreApply := getReleasesWithPreApply(toApplyWithNeeds)
|
||||
|
||||
infoMsg = preApplyInfoMsg(releasesWithPreApply, infoMsg)
|
||||
|
||||
if releasesToBeDeleted == nil && releasesToBeUpdated == nil && releasesWithPreApply == nil {
|
||||
if releasesToBeDeleted == nil && releasesToBeUpdated == nil {
|
||||
if infoMsg != nil {
|
||||
logger := c.Logger()
|
||||
logger.Infof("")
|
||||
|
|
@ -1357,8 +1352,8 @@ Do you really want to apply?
|
|||
if !interactive || interactive && r.askForConfirmation(confMsg) {
|
||||
r.helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...)
|
||||
|
||||
for _, release := range releasesWithPreApply {
|
||||
a.Logger.Infof("\nRunning preapply hook for %s:", release.Name)
|
||||
for _, release := range st.Releases {
|
||||
// a.Logger.Infof("\nRunning preapply hook for %s:", release.Name)
|
||||
if _, err := st.TriggerPreapplyEvent(&release, "apply"); err != nil {
|
||||
applyErrs = append(applyErrs, err)
|
||||
continue
|
||||
|
|
@ -1421,35 +1416,6 @@ Do you really want to apply?
|
|||
return true, true, applyErrs
|
||||
}
|
||||
|
||||
func getReleasesWithPreApply(releases []state.ReleaseSpec) []state.ReleaseSpec {
|
||||
var releasesWithPreApply []state.ReleaseSpec
|
||||
for _, r := range releases {
|
||||
release := r
|
||||
for _, hook := range release.Hooks {
|
||||
if slices.Contains(hook.Events, "preapply") {
|
||||
releasesWithPreApply = append(releasesWithPreApply, release)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return releasesWithPreApply
|
||||
}
|
||||
|
||||
func preApplyInfoMsg(releasesWithPreApply []state.ReleaseSpec, infoMsg *string) *string {
|
||||
if len(releasesWithPreApply) > 0 {
|
||||
msg := "Releases with preapply hooks: \n"
|
||||
if infoMsg != nil {
|
||||
msg = fmt.Sprintf("%s\n%s", *infoMsg, msg)
|
||||
}
|
||||
infoMsg = &msg
|
||||
}
|
||||
for _, release := range releasesWithPreApply {
|
||||
tmp := fmt.Sprintf("%s %s (%s)\n", *infoMsg, release.Name, release.Chart)
|
||||
infoMsg = &tmp
|
||||
}
|
||||
return infoMsg
|
||||
}
|
||||
|
||||
func (a *App) delete(r *Run, purge bool, c DestroyConfigProvider) (bool, []error) {
|
||||
st := r.state
|
||||
helm := r.helm
|
||||
|
|
|
|||
|
|
@ -8,14 +8,10 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/variantdev/vals"
|
||||
"k8s.io/utils/pointer"
|
||||
|
||||
"github.com/helmfile/helmfile/pkg/event"
|
||||
"github.com/helmfile/helmfile/pkg/exectest"
|
||||
"github.com/helmfile/helmfile/pkg/helmexec"
|
||||
"github.com/helmfile/helmfile/pkg/state"
|
||||
"github.com/helmfile/helmfile/pkg/testhelper"
|
||||
)
|
||||
|
||||
|
|
@ -266,175 +262,3 @@ releases:
|
|||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetReleasesWithPreApply(t *testing.T) {
|
||||
tests := []struct {
|
||||
releases []state.ReleaseSpec
|
||||
preApplyreleases []state.ReleaseSpec
|
||||
}{
|
||||
{
|
||||
[]state.ReleaseSpec{
|
||||
{
|
||||
Chart: "foo/bar",
|
||||
Name: "foobar",
|
||||
Namespace: "foobar",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"prepare",
|
||||
"preapply",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Chart: "foo/foo",
|
||||
Name: "foo",
|
||||
Namespace: "foo",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"prepare",
|
||||
"presync",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Chart: "bar/bar",
|
||||
Name: "bar",
|
||||
Namespace: "bar",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"preapply",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
[]state.ReleaseSpec{
|
||||
{
|
||||
Chart: "foo/bar",
|
||||
Name: "foobar",
|
||||
Namespace: "foobar",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"prepare",
|
||||
"preapply",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Chart: "bar/bar",
|
||||
Name: "bar",
|
||||
Namespace: "bar",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"preapply",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
preApply := getReleasesWithPreApply(test.releases)
|
||||
require.Equal(t, test.preApplyreleases, preApply)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPreApplyInfoMsg(t *testing.T) {
|
||||
tests := []struct {
|
||||
preApplyreleases []state.ReleaseSpec
|
||||
infoMsg *string
|
||||
expected *string
|
||||
}{
|
||||
{
|
||||
[]state.ReleaseSpec{
|
||||
{
|
||||
Chart: "foo/bar",
|
||||
Name: "foobar",
|
||||
Namespace: "foobar",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"prepare",
|
||||
"preapply",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Chart: "bar/bar",
|
||||
Name: "bar",
|
||||
Namespace: "bar",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"preapply",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
pointer.String("infoMsg\n"),
|
||||
pointer.String(`infoMsg
|
||||
|
||||
Releases with preapply hooks:
|
||||
foobar (foo/bar)
|
||||
bar (bar/bar)
|
||||
`),
|
||||
},
|
||||
{
|
||||
[]state.ReleaseSpec{
|
||||
{
|
||||
Chart: "foo/bar",
|
||||
Name: "foobar",
|
||||
Namespace: "foobar",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"prepare",
|
||||
"preapply",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Chart: "bar/bar",
|
||||
Name: "bar",
|
||||
Namespace: "bar",
|
||||
Hooks: []event.Hook{
|
||||
{
|
||||
Events: []string{
|
||||
"preapply",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
pointer.String(""),
|
||||
pointer.String(`
|
||||
Releases with preapply hooks:
|
||||
foobar (foo/bar)
|
||||
bar (bar/bar)
|
||||
`),
|
||||
},
|
||||
{
|
||||
[]state.ReleaseSpec{},
|
||||
pointer.String(""),
|
||||
pointer.String(""),
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
infoMsg := preApplyInfoMsg(test.preApplyreleases, test.infoMsg)
|
||||
require.Equal(t, *test.expected, *infoMsg)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
hook[prepare] logs | foo
|
||||
hook[prepare] logs |
|
||||
|
||||
Running preapply hook for foo:
|
||||
|
||||
hook[preapply] logs | foo
|
||||
hook[preapply] logs |
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
|
||||
Running preapply hook for foo:
|
||||
|
||||
hook[preapply] logs | foo
|
||||
hook[preapply] logs |
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue