MCPcopy
hub / github.com/helm/helm / Query

Method Query

pkg/storage/driver/memory.go:118–156  ·  view source on GitHub ↗

Query returns the set of releases that match the provided set of labels

(keyvals map[string]string)

Source from the content-addressed store, hash-verified

116
117// Query returns the set of releases that match the provided set of labels
118func (mem *Memory) Query(keyvals map[string]string) ([]release.Releaser, error) {
119 defer unlock(mem.rlock())
120
121 var lbs labels
122
123 lbs.init()
124 lbs.fromMap(keyvals)
125
126 var ls []release.Releaser
127 for namespace := range mem.cache {
128 if mem.namespace != "" {
129 // Should only query releases of this namespace
130 namespace = mem.namespace
131 }
132 for _, recs := range mem.cache[namespace] {
133 recs.Iter(func(_ int, rec *record) bool {
134 // A query for a release name that doesn't exist (has been deleted)
135 // can cause rec to be nil.
136 if rec == nil {
137 return false
138 }
139 if rec.lbs.match(lbs) {
140 ls = append(ls, rec.rls)
141 }
142 return true
143 })
144 }
145 if mem.namespace != "" {
146 // Should only query releases of this namespace
147 break
148 }
149 }
150
151 if len(ls) == 0 {
152 return nil, ErrReleaseNotFound
153 }
154
155 return ls, nil
156}
157
158// Create creates a new release or returns ErrReleaseExists.
159func (mem *Memory) Create(key string, rel release.Releaser) error {

Callers

nothing calls this directly

Calls 6

rlockMethod · 0.95
initMethod · 0.95
fromMapMethod · 0.95
unlockFunction · 0.85
IterMethod · 0.80
matchMethod · 0.80

Tested by

no test coverage detected