pull/32388/merge
Ratul Basak 3 days ago committed by GitHub
commit e784299822
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -99,8 +99,8 @@ const (
// List is the action for listing releases.
//
// It provides, for example, the implementation of 'helm list'.
// It returns no more than one revision of every release in one specific, or in
// all, namespaces.
// It returns the latest revision of every release in one specific, or in all,
// namespaces, unless superseded releases are requested.
// To list all the revisions of a specific release, see the History action.
type List struct {
cfg *Configuration
@ -117,7 +117,7 @@ type List struct {
ByDate bool
SortReverse bool
// StateMask accepts a bitmask of states for items to show.
// The default is ListDeployed
// The default is ListAll.
StateMask ListStates
// Limit is the number of items to return per Run()
Limit int
@ -185,10 +185,11 @@ func (l *List) Run() ([]ri.Releaser, error) {
return nil, err
}
// by definition, superseded releases are never shown if
// only the latest releases are returned. so if requested statemask
// is _only_ ListSuperseded, skip the latest release filter
if l.StateMask != ListSuperseded {
// By definition, superseded releases are never shown if only the latest
// releases are returned. Skip the latest release filter whenever the state
// mask includes superseded releases, including in combination with other
// states.
if l.StateMask&ListSuperseded == 0 {
rresults = filterLatestReleases(rresults)
}

@ -249,6 +249,74 @@ func TestList_StateMaskWithStaleRevisions(t *testing.T) {
is.Equal("failed", ac0.Name())
}
func TestList_StateMaskWithSupersededRevisions(t *testing.T) {
tests := []struct {
name string
stateMask ListStates
expected map[int]common.Status
}{
{
name: "superseded only",
stateMask: ListSuperseded,
expected: map[int]common.Status{
1: common.StatusSuperseded,
},
},
{
name: "superseded and deployed",
stateMask: ListSuperseded | ListDeployed,
expected: map[int]common.Status{
1: common.StatusSuperseded,
2: common.StatusDeployed,
},
},
{
name: "all states",
stateMask: ListAll,
expected: map[int]common.Status{
1: common.StatusSuperseded,
2: common.StatusDeployed,
},
},
{
name: "deployed only",
stateMask: ListDeployed,
expected: map[int]common.Status{
2: common.StatusDeployed,
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
lister := newListFixture(t)
lister.StateMask = tt.stateMask
oldRelease := namedReleaseStub("release", common.StatusSuperseded)
oldRelease.Namespace = "default"
oldRelease.Version = 1
currentRelease := namedReleaseStub("release", common.StatusDeployed)
currentRelease.Namespace = "default"
currentRelease.Version = 2
for _, rel := range []*release.Release{oldRelease, currentRelease} {
require.NoError(t, lister.cfg.Releases.Create(rel))
}
results, err := lister.Run()
require.NoError(t, err)
actual := make(map[int]common.Status, len(results))
for _, result := range results {
accessor, err := ri.NewAccessor(result)
require.NoError(t, err)
actual[accessor.Version()] = common.Status(accessor.Status())
}
assert.Equal(t, tt.expected, actual)
})
}
}
func makeMeSomeReleasesWithStaleFailure(t *testing.T, store *storage.Storage) {
t.Helper()
one := namedReleaseStub("clean", common.StatusDeployed)

@ -280,7 +280,21 @@ func compListReleases(toComplete string, ignoredReleaseNames []string, cfg *acti
var choices []string
filteredReleases := filterReleases(releases, ignoredReleaseNames)
// Completions are release names, so keep only the latest revision of each
// release even though ListAll also returns superseded revisions.
latestReleases := make([]*release.Release, 0, len(filteredReleases))
indices := make(map[string]int, len(filteredReleases))
for _, rel := range filteredReleases {
if index, ok := indices[rel.Name]; ok {
if rel.Version > latestReleases[index].Version {
latestReleases[index] = rel
}
continue
}
indices[rel.Name] = len(latestReleases)
latestReleases = append(latestReleases, rel)
}
for _, rel := range latestReleases {
choices = append(choices,
fmt.Sprintf("%s\t%s-%s -> %s", rel.Name, rel.Chart.Metadata.Name, rel.Chart.Metadata.Version, rel.Info.Status.String()))
}

@ -222,6 +222,11 @@ func TestListCmd(t *testing.T) {
cmd: "list --superseded",
golden: "output/list-superseded.txt",
rels: releaseFixture,
}, {
name: "list deployed and superseded releases",
cmd: "list --deployed --superseded",
golden: "output/list-deployed-superseded.txt",
rels: releaseFixture,
}, {
name: "list uninstalled releases",
cmd: "list --uninstalled",

@ -4,6 +4,7 @@ hummingbird default 1 2016-01-16 00:00:03 +0000 UTC deployed chi
rocket default 1 2016-01-16 00:00:02 +0000 UTC failed chickadee-1.0.0 0.0.1
thanos default 1 2016-01-16 00:00:01 +0000 UTC pending-install chickadee-1.0.0 0.0.1
starlord default 2 2016-01-16 00:00:01 +0000 UTC deployed chickadee-1.0.0 0.0.1
starlord default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
groot default 1 2016-01-16 00:00:01 +0000 UTC uninstalled chickadee-1.0.0 0.0.1
gamora default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
drax default 1 2016-01-16 00:00:01 +0000 UTC uninstalling chickadee-1.0.0 0.0.1

@ -2,6 +2,7 @@ NAME NAMESPACE REVISION UPDATED STATUS CHA
drax default 1 2016-01-16 00:00:01 +0000 UTC uninstalling chickadee-1.0.0 0.0.1
gamora default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
groot default 1 2016-01-16 00:00:01 +0000 UTC uninstalled chickadee-1.0.0 0.0.1
starlord default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
starlord default 2 2016-01-16 00:00:01 +0000 UTC deployed chickadee-1.0.0 0.0.1
thanos default 1 2016-01-16 00:00:01 +0000 UTC pending-install chickadee-1.0.0 0.0.1
rocket default 1 2016-01-16 00:00:02 +0000 UTC failed chickadee-1.0.0 0.0.1

@ -4,5 +4,6 @@ groot default 1 2016-01-16 00:00:01 +0000 UTC uninstalled chickadee-1.
hummingbird default 1 2016-01-16 00:00:03 +0000 UTC deployed chickadee-1.0.0 0.0.1
iguana default 2 2016-01-16 00:00:04 +0000 UTC deployed chickadee-1.0.0 0.0.1
rocket default 1 2016-01-16 00:00:02 +0000 UTC failed chickadee-1.0.0 0.0.1
starlord default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
starlord default 2 2016-01-16 00:00:01 +0000 UTC deployed chickadee-1.0.0 0.0.1
thanos default 1 2016-01-16 00:00:01 +0000 UTC pending-install chickadee-1.0.0 0.0.1

@ -4,5 +4,6 @@ groot default 1 2016-01-16 00:00:01 +0000 UTC uninstalled chi
hummingbird default 1 2016-01-16 00:00:03 +0000 UTC deployed chickadee-1.0.0 0.0.1
iguana default 2 2016-01-16 00:00:04 +0000 UTC deployed chickadee-1.0.0 0.0.1
rocket default 1 2016-01-16 00:00:02 +0000 UTC failed chickadee-1.0.0 0.0.1
starlord default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
starlord default 2 2016-01-16 00:00:01 +0000 UTC deployed chickadee-1.0.0 0.0.1
thanos default 1 2016-01-16 00:00:01 +0000 UTC pending-install chickadee-1.0.0 0.0.1

@ -1,6 +1,7 @@
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
thanos default 1 2016-01-16 00:00:01 +0000 UTC pending-install chickadee-1.0.0 0.0.1
starlord default 2 2016-01-16 00:00:01 +0000 UTC deployed chickadee-1.0.0 0.0.1
starlord default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
rocket default 1 2016-01-16 00:00:02 +0000 UTC failed chickadee-1.0.0 0.0.1
iguana default 2 2016-01-16 00:00:04 +0000 UTC deployed chickadee-1.0.0 0.0.1
hummingbird default 1 2016-01-16 00:00:03 +0000 UTC deployed chickadee-1.0.0 0.0.1

@ -1 +1 @@
["drax","gamora","groot","hummingbird","iguana","rocket","starlord","thanos"]
["drax","gamora","groot","hummingbird","iguana","rocket","starlord","starlord","thanos"]

@ -5,4 +5,5 @@
- iguana
- rocket
- starlord
- starlord
- thanos

@ -5,4 +5,5 @@ hummingbird
iguana
rocket
starlord
starlord
thanos

@ -5,5 +5,6 @@ groot default 1 2016-01-16 00:00:01 +0000 UTC uninstalled chi
hummingbird default 1 2016-01-16 00:00:03 +0000 UTC deployed chickadee-1.0.0 0.0.1
iguana default 2 2016-01-16 00:00:04 +0000 UTC deployed chickadee-1.0.0 0.0.1
rocket default 1 2016-01-16 00:00:02 +0000 UTC failed chickadee-1.0.0 0.0.1
starlord default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
starlord default 2 2016-01-16 00:00:01 +0000 UTC deployed chickadee-1.0.0 0.0.1
thanos default 1 2016-01-16 00:00:01 +0000 UTC pending-install chickadee-1.0.0 0.0.1

@ -0,0 +1,6 @@
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
gamora default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
hummingbird default 1 2016-01-16 00:00:03 +0000 UTC deployed chickadee-1.0.0 0.0.1
iguana default 2 2016-01-16 00:00:04 +0000 UTC deployed chickadee-1.0.0 0.0.1
starlord default 1 2016-01-16 00:00:01 +0000 UTC superseded chickadee-1.0.0 0.0.1
starlord default 2 2016-01-16 00:00:01 +0000 UTC deployed chickadee-1.0.0 0.0.1
Loading…
Cancel
Save