Skip to content

Commit 163608d

Browse files
Merge pull request #1699 from dinhxuanvu/deprecated-filter
feat(resolver): filtering deprecated bundles in resolver
2 parents a8b00ef + 1ca55ff commit 163608d

File tree

7 files changed

+209
-128
lines changed

7 files changed

+209
-128
lines changed

pkg/controller/registry/resolver/cache.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,9 @@ type OperatorPredicate func(*Operator) bool
371371
func (s *CatalogSnapshot) Find(p ...OperatorPredicate) []*Operator {
372372
s.m.RLock()
373373
defer s.m.RUnlock()
374+
if len(p) > 0 {
375+
p = append(p, WithoutDeprecatedProperty())
376+
}
374377
return Filter(s.operators, p...)
375378
}
376379

@@ -416,6 +419,17 @@ func WithPackage(pkg string) OperatorPredicate {
416419
}
417420
}
418421

422+
func WithoutDeprecatedProperty() OperatorPredicate {
423+
return func(o *Operator) bool {
424+
for _, p := range o.bundle.GetProperties() {
425+
if p.GetType() == string(opregistry.DeprecatedType) {
426+
return false
427+
}
428+
}
429+
return true
430+
}
431+
}
432+
419433
func WithVersionInRange(r semver.Range) OperatorPredicate {
420434
return func(o *Operator) bool {
421435
return o.version != nil && r(*o.version)

pkg/controller/registry/resolver/cache_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ func TestStripPluralRequiredAndProvidedAPIKeys(t *testing.T) {
314314
Kind: "K",
315315
Plural: "ks",
316316
}: {},
317-
}, nil),
317+
}, nil, false),
318318
Dependencies: apiSetToDependencies(map[opregistry.APIKey]struct{}{
319319
{
320320
Group: "g2",

pkg/controller/registry/resolver/resolver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ func (r *SatResolver) getBundleInstallables(catalog registry.CatalogKey, predica
297297
errs = append(errs, err)
298298
continue
299299
}
300+
300301
for _, d := range dependencyPredicates {
301302
// errors ignored; this will build an empty/unsatisfiable dependency if no candidates are found
302303
candidateBundles, _ := AtLeast(1, namespacedCache.FindPreferred(&bundle.sourceInfo.Catalog, d))

pkg/controller/registry/resolver/resolver_test.go

Lines changed: 177 additions & 122 deletions
Large diffs are not rendered by default.

pkg/controller/registry/resolver/util_test.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ func apiSetToDependencies(crds, apis APISet) (out []*api.Dependency) {
215215
return
216216
}
217217

218-
func apiSetToProperties(crds, apis APISet) (out []*api.Property) {
218+
func apiSetToProperties(crds, apis APISet, deprecated bool) (out []*api.Property) {
219219
out = make([]*api.Property, 0)
220220
for a := range crds {
221221
val, err := json.Marshal(opregistry.GVKProperty{
@@ -245,6 +245,16 @@ func apiSetToProperties(crds, apis APISet) (out []*api.Property) {
245245
Value: string(val),
246246
})
247247
}
248+
if deprecated {
249+
val, err := json.Marshal(opregistry.DeprecatedProperty{})
250+
if err != nil {
251+
panic(err)
252+
}
253+
out = append(out, &api.Property{
254+
Type: opregistry.DeprecatedType,
255+
Value: string(val),
256+
})
257+
}
248258
if len(out) == 0 {
249259
return nil
250260
}
@@ -297,7 +307,7 @@ func bundle(name, pkg, channel, replaces string, providedCRDs, requiredCRDs, pro
297307
RequiredApis: apiSetToGVK(requiredCRDs, requiredAPIServices),
298308
Replaces: replaces,
299309
Dependencies: apiSetToDependencies(requiredCRDs, requiredAPIServices),
300-
Properties: apiSetToProperties(providedCRDs, providedAPIServices),
310+
Properties: apiSetToProperties(providedCRDs, providedAPIServices, false),
301311
}
302312
for _, f := range opts {
303313
f(b)

test/e2e/installplan_e2e_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import (
44
"context"
55
"errors"
66
"fmt"
7-
"github.com/operator-framework/operator-lifecycle-manager/test/e2e/ctx"
87
"strings"
98
"sync"
109
"time"
1110

11+
"github.com/operator-framework/operator-lifecycle-manager/test/e2e/ctx"
12+
1213
"github.com/blang/semver"
1314
. "github.com/onsi/ginkgo"
1415
"github.com/onsi/ginkgo/extensions/table"

vendor/github.com/operator-framework/operator-registry/pkg/sqlite/load.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)