mirror of
https://github.com/helm/helm.git
synced 2026-05-28 04:35:48 -04:00
Move selector filtering after latest release version filtering
Signed-off-by: Dmitry Chepurovskiy <dm3ch@dm3ch.net>
This commit is contained in:
parent
2ea8f805b9
commit
266c74f390
2 changed files with 22 additions and 12 deletions
|
|
@ -154,22 +154,12 @@ func (l *List) Run() ([]*release.Release, error) {
|
|||
}
|
||||
}
|
||||
|
||||
selectorObj, err := labels.Parse(l.Selector)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
results, err := l.cfg.Releases.List(func(rel *release.Release) bool {
|
||||
// Skip anything that doesn't match the filter.
|
||||
if filter != nil && !filter.MatchString(rel.Name) {
|
||||
return false
|
||||
}
|
||||
|
||||
// Skip anything that doesn't match the selector
|
||||
if !selectorObj.Matches(labels.Set(rel.Labels)) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
|
||||
|
|
@ -192,6 +182,13 @@ func (l *List) Run() ([]*release.Release, error) {
|
|||
// latest releases, otherwise outdated entries can be returned
|
||||
results = l.filterStateMask(results)
|
||||
|
||||
// Skip anything that doesn't match the selector
|
||||
selectorObj, err := labels.Parse(l.Selector)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
results = l.filterSelector(results, selectorObj)
|
||||
|
||||
// Unfortunately, we have to sort before truncating, which can incur substantial overhead
|
||||
l.sort(results)
|
||||
|
||||
|
|
@ -274,6 +271,18 @@ func (l *List) filterStateMask(releases []*release.Release) []*release.Release {
|
|||
return desiredStateReleases
|
||||
}
|
||||
|
||||
func (l *List) filterSelector(releases []*release.Release, selector labels.Selector) []*release.Release {
|
||||
desiredStateReleases := make([]*release.Release, 0)
|
||||
|
||||
for _, rls := range releases {
|
||||
if selector.Matches(labels.Set(rls.Labels)) {
|
||||
desiredStateReleases = append(desiredStateReleases, rls)
|
||||
}
|
||||
}
|
||||
|
||||
return desiredStateReleases
|
||||
}
|
||||
|
||||
// SetStateMask calculates the state mask based on parameters.
|
||||
func (l *List) SetStateMask() {
|
||||
if l.All {
|
||||
|
|
|
|||
|
|
@ -37,8 +37,9 @@ type Release struct {
|
|||
Version int `json:"version,omitempty"`
|
||||
// Namespace is the kubernetes namespace of the release.
|
||||
Namespace string `json:"namespace,omitempty"`
|
||||
// Labels of the release
|
||||
Labels map[string]string `json:"labels,omitempty"`
|
||||
// Labels of the release.
|
||||
// Disabled encoding into Json cause labels are stored in storage driver metadata field.
|
||||
Labels map[string]string `json:"-"`
|
||||
}
|
||||
|
||||
// SetStatus is a helper for setting the status on a release.
|
||||
|
|
|
|||
Loading…
Reference in a new issue