Skip to content

Commit 1c0510a

Browse files
committed
Use constraints library from api with simplified CEL library
Signed-off-by: Vu Dinh <[email protected]>
1 parent 574293b commit 1c0510a

File tree

4 files changed

+64
-49
lines changed

4 files changed

+64
-49
lines changed

Diff for: pkg/controller/registry/resolver/cache/predicates.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
"github.com/blang/semver/v4"
99

10-
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/constraints"
10+
"github.com/operator-framework/api/pkg/constraints"
1111
opregistry "github.com/operator-framework/operator-registry/pkg/registry"
1212
)
1313

@@ -331,13 +331,13 @@ func CountingPredicate(p Predicate, n *int) Predicate {
331331
return countingPredicate{p: p, n: n}
332332
}
333333

334-
type evaluatorPredicate struct {
335-
evaluator constraints.Evaluator
336-
rule string
337-
message string
334+
type celPredicate struct {
335+
program constraints.CelProgram
336+
rule string
337+
message string
338338
}
339339

340-
func (ep *evaluatorPredicate) Test(entry *Entry) bool {
340+
func (cp *celPredicate) Test(entry *Entry) bool {
341341
props := make([]map[string]interface{}, len(entry.Properties))
342342
for i, p := range entry.Properties {
343343
var v interface{}
@@ -350,21 +350,21 @@ func (ep *evaluatorPredicate) Test(entry *Entry) bool {
350350
}
351351
}
352352

353-
ok, err := ep.evaluator.Evaluate(map[string]interface{}{"properties": props})
353+
ok, err := cp.program.Evaluate(map[string]interface{}{"properties": props})
354354
if err != nil {
355355
return false
356356
}
357357
return ok
358358
}
359359

360-
func EvaluatorPredicate(provider constraints.EvaluatorProvider, rule string, message string) (Predicate, error) {
361-
eval, err := provider.Evaluator(rule)
360+
func CreateCelPredicate(env *constraints.CelEnvironment, rule string, message string) (Predicate, error) {
361+
prog, err := env.Validate(rule)
362362
if err != nil {
363363
return nil, err
364364
}
365-
return &evaluatorPredicate{evaluator: eval, rule: rule, message: message}, nil
365+
return &celPredicate{program: prog, rule: rule, message: message}, nil
366366
}
367367

368-
func (ep *evaluatorPredicate) String() string {
369-
return fmt.Sprintf("with constraint: %q and message: %q", ep.rule, ep.message)
368+
func (cp *celPredicate) String() string {
369+
return fmt.Sprintf("with constraint: %q and message: %q", cp.rule, cp.message)
370370
}

Diff for: pkg/controller/registry/resolver/resolver.go

+9-13
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import (
1111
"github.com/sirupsen/logrus"
1212
utilerrors "k8s.io/apimachinery/pkg/util/errors"
1313

14+
"github.com/operator-framework/api/pkg/constraints"
1415
"github.com/operator-framework/api/pkg/operators/v1alpha1"
1516
v1alpha1listers "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1"
1617
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache"
17-
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/constraints"
1818
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/projection"
1919
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver"
2020
"github.com/operator-framework/operator-registry/pkg/api"
@@ -26,16 +26,16 @@ type OperatorResolver interface {
2626
}
2727

2828
type SatResolver struct {
29-
cache cache.OperatorCacheProvider
30-
log logrus.FieldLogger
31-
evaluatorProvider constraints.EvaluatorProvider
29+
cache cache.OperatorCacheProvider
30+
log logrus.FieldLogger
31+
celEnv *constraints.CelEnvironment
3232
}
3333

3434
func NewDefaultSatResolver(rcp cache.SourceProvider, catsrcLister v1alpha1listers.CatalogSourceLister, logger logrus.FieldLogger) *SatResolver {
3535
return &SatResolver{
36-
cache: cache.New(rcp, cache.WithLogger(logger), cache.WithCatalogSourceLister(catsrcLister)),
37-
log: logger,
38-
evaluatorProvider: constraints.NewCelEvaluatorProvider(),
36+
cache: cache.New(rcp, cache.WithLogger(logger), cache.WithCatalogSourceLister(catsrcLister)),
37+
log: logger,
38+
celEnv: constraints.NewCelEnvironment(),
3939
}
4040
}
4141

@@ -351,17 +351,13 @@ func (r *SatResolver) getBundleInstallables(preferredNamespace string, bundleSta
351351
continue
352352
}
353353

354-
var val struct {
355-
Message string `json:"message"`
356-
Cel *constraints.Cel `json:"cel"`
357-
}
358-
354+
var val constraints.Constraint
359355
if err := json.Unmarshal([]byte(prop.Value), &val); err != nil {
360356
errs = append(errs, err)
361357
continue
362358
}
363359

364-
pred, err := cache.EvaluatorPredicate(r.evaluatorProvider, val.Cel.Rule, val.Message)
360+
pred, err := cache.CreateCelPredicate(r.celEnv, val.Cel.Rule, val.Message)
365361
if err != nil {
366362
errs = append(errs, err)
367363
continue

Diff for: pkg/controller/registry/resolver/resolver_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ import (
1414
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1515
"k8s.io/apimachinery/pkg/labels"
1616

17+
"github.com/operator-framework/api/pkg/constraints"
1718
opver "github.com/operator-framework/api/pkg/lib/version"
1819
"github.com/operator-framework/api/pkg/operators/v1alpha1"
1920
listersv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1"
2021
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache"
21-
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/constraints"
2222
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver"
2323
"github.com/operator-framework/operator-registry/pkg/api"
2424
opregistry "github.com/operator-framework/operator-registry/pkg/registry"
@@ -2169,8 +2169,8 @@ func TestSolveOperators_GenericConstraint(t *testing.T) {
21692169
cache: cache.New(cache.StaticSourceProvider{
21702170
catalog: tt.catalog,
21712171
}),
2172-
log: logrus.New(),
2173-
evaluatorProvider: constraints.NewCelEvaluatorProvider(),
2172+
log: logrus.New(),
2173+
celEnv: constraints.NewCelEnvironment(),
21742174
}
21752175

21762176
operators, err = satResolver.SolveOperators([]string{namespace}, nil, tt.subs)

Diff for: pkg/controller/registry/resolver/constraints/cel.go renamed to vendor/github.com/operator-framework/api/pkg/constraints/cel.go

+40-21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)