parent
2ecf5780f3
commit
5f1698d0ed
|
|
@ -4,16 +4,14 @@ import (
|
|||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/roboll/helmfile/pkg/helmexec"
|
||||
"github.com/roboll/helmfile/pkg/remote"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
|
||||
"github.com/imdario/mergo"
|
||||
"github.com/roboll/helmfile/pkg/environment"
|
||||
"github.com/roboll/helmfile/pkg/helmexec"
|
||||
"github.com/roboll/helmfile/pkg/remote"
|
||||
"github.com/roboll/helmfile/pkg/state"
|
||||
"github.com/variantdev/vals"
|
||||
"go.uber.org/zap"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -68,11 +66,7 @@ func (ld *desiredStateLoader) Load(f string, opts LoadOpts) (*state.HelmState, e
|
|||
}
|
||||
|
||||
if opts.Reverse {
|
||||
rev := func(i, j int) bool {
|
||||
return j < i
|
||||
}
|
||||
sort.Slice(st.Releases, rev)
|
||||
sort.Slice(st.Helmfiles, rev)
|
||||
st.Reverse()
|
||||
}
|
||||
|
||||
if ld.overrideKubeContext != "" {
|
||||
|
|
|
|||
|
|
@ -156,8 +156,8 @@ anotherbackend 4 Fri Nov 1 08:40:07 2019 DEPLOYED anotherbackend-3.1.0
|
|||
{Name: "backend-v2", Flags: []string{}},
|
||||
{Name: "backend-v1", Flags: []string{}},
|
||||
{Name: "anotherbackend", Flags: []string{}},
|
||||
{Name: "database", Flags: []string{}},
|
||||
{Name: "servicemesh", Flags: []string{}},
|
||||
{Name: "database", Flags: []string{}},
|
||||
{Name: "front-proxy", Flags: []string{}},
|
||||
{Name: "logging", Flags: []string{}},
|
||||
},
|
||||
|
|
@ -291,7 +291,7 @@ GROUP RELEASES
|
|||
1 frontend-v3, frontend-v2, frontend-v1
|
||||
2 backend-v2, backend-v1
|
||||
3 anotherbackend
|
||||
4 database, servicemesh
|
||||
4 servicemesh, database
|
||||
5 front-proxy, logging
|
||||
|
||||
processing releases in group 1/5: frontend-v3, frontend-v2, frontend-v1
|
||||
|
|
@ -303,9 +303,9 @@ release "backend-v2" processed
|
|||
release "backend-v1" processed
|
||||
processing releases in group 3/5: anotherbackend
|
||||
release "anotherbackend" processed
|
||||
processing releases in group 4/5: database, servicemesh
|
||||
release "database" processed
|
||||
processing releases in group 4/5: servicemesh, database
|
||||
release "servicemesh" processed
|
||||
release "database" processed
|
||||
processing releases in group 5/5: front-proxy, logging
|
||||
release "front-proxy" processed
|
||||
release "logging" processed
|
||||
|
|
@ -318,8 +318,8 @@ frontend-v1
|
|||
backend-v2
|
||||
backend-v1
|
||||
anotherbackend
|
||||
database
|
||||
servicemesh
|
||||
database
|
||||
front-proxy
|
||||
logging
|
||||
`,
|
||||
|
|
|
|||
|
|
@ -2622,3 +2622,13 @@ func (st *HelmState) LoadYAMLForEmbedding(release *ReleaseSpec, entries []interf
|
|||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (st *HelmState) Reverse() {
|
||||
for i, j := 0, len(st.Releases)-1; i < j; i, j = i+1, j-1 {
|
||||
st.Releases[i], st.Releases[j] = st.Releases[j], st.Releases[i]
|
||||
}
|
||||
|
||||
for i, j := 0, len(st.Helmfiles)-1; i < j; i, j = i+1, j-1 {
|
||||
st.Helmfiles[i], st.Helmfiles[j] = st.Helmfiles[j], st.Helmfiles[i]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2235,3 +2235,33 @@ func TestHelmState_Delete(t *testing.T) {
|
|||
t.Run(tt.name, f)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReverse(t *testing.T) {
|
||||
num := 8
|
||||
st := &HelmState{}
|
||||
|
||||
for i := 0; i < num; i++ {
|
||||
name := fmt.Sprintf("%d", i)
|
||||
st.Helmfiles = append(st.Helmfiles, SubHelmfileSpec{
|
||||
Path: name,
|
||||
})
|
||||
st.Releases = append(st.Releases, ReleaseSpec{
|
||||
Name: name,
|
||||
})
|
||||
}
|
||||
|
||||
st.Reverse()
|
||||
|
||||
for i := 0; i < num; i++ {
|
||||
j := num - 1 - i
|
||||
want := fmt.Sprintf("%d", j)
|
||||
|
||||
if got := st.Helmfiles[i].Path; got != want {
|
||||
t.Errorf("sub-helmfile at %d has incorrect path: want %q, got %q", i, want, got)
|
||||
}
|
||||
|
||||
if got := st.Releases[i].Name; got != want {
|
||||
t.Errorf("release at %d has incorrect name: want %q, got %q", i, want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue