Navigation Menu

Skip to content

Commit

Permalink
fix(helm): filter helm list to print latest release
Browse files Browse the repository at this point in the history
`helm list` should only list latest release

fixes helm#3208
  • Loading branch information
adamreese committed Jan 11, 2018
1 parent 5a73f9e commit 850db30
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
26 changes: 25 additions & 1 deletion cmd/helm/list.go
Expand Up @@ -156,7 +156,7 @@ func (l *listCmd) run() error {
fmt.Fprintf(l.out, "\tnext: %s\n", res.Next)
}

rels := res.Releases
rels := filterList(res.Releases)

if l.short {
for _, r := range rels {
Expand All @@ -168,6 +168,30 @@ func (l *listCmd) run() error {
return nil
}

// filterList returns a list scrubbed of old releases.
func filterList(rels []*release.Release) []*release.Release {
idx := map[string]int32{}

for _, r := range rels {
name, version := r.GetName(), r.GetVersion()
if max, ok := idx[name]; ok {
// check if we have a greater version already
if max > version {
continue
}
}
idx[name] = version
}

uniq := make([]*release.Release, 0, len(idx))
for _, r := range rels {
if idx[r.GetName()] == r.GetVersion() {
uniq = append(uniq, r)
}
}
return uniq
}

// statusCodes gets the list of status codes that are to be included in the results.
func (l *listCmd) statusCodes() []release.Status_Code {
if l.all {
Expand Down
8 changes: 8 additions & 0 deletions cmd/helm/list_test.go
Expand Up @@ -118,6 +118,14 @@ func TestListCmd(t *testing.T) {
},
expected: "thomas-guide\nwild-idea\ncrazy-maps",
},
{
name: "with old releases",
resp: []*release.Release{
helm.ReleaseMock(&helm.MockReleaseOptions{Name: "thomas-guide"}),
helm.ReleaseMock(&helm.MockReleaseOptions{Name: "thomas-guide", StatusCode: release.Status_FAILED}),
},
expected: "thomas-guide",
},
}

var buf bytes.Buffer
Expand Down

0 comments on commit 850db30

Please sign in to comment.