Skip to content

Commit a311f52

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

File tree

7 files changed

+141
-54
lines changed

7 files changed

+141
-54
lines changed

go.mod

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ require (
1414
github.com/go-bindata/go-bindata/v3 v3.1.3
1515
github.com/go-logr/logr v0.4.0
1616
github.com/golang/mock v1.5.0
17-
github.com/google/cel-go v0.9.0
1817
github.com/google/go-cmp v0.5.6
1918
github.com/googleapis/gnostic v0.5.5
2019
github.com/itchyny/gojq v0.11.0
@@ -39,7 +38,6 @@ require (
3938
github.com/stretchr/testify v1.7.0
4039
golang.org/x/net v0.0.0-20210825183410-e898025ed96a
4140
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac
42-
google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2
4341
google.golang.org/grpc v1.40.0
4442
gopkg.in/yaml.v2 v2.4.0
4543
helm.sh/helm/v3 v3.6.1

pkg/controller/registry/resolver/cache/predicates.go

Lines changed: 12 additions & 12 deletions
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
}

pkg/controller/registry/resolver/resolver.go

Lines changed: 9 additions & 13 deletions
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

pkg/controller/registry/resolver/resolver_test.go

Lines changed: 3 additions & 3 deletions
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)

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

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

vendor/github.com/operator-framework/api/pkg/constraints/constraint.go

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

vendor/modules.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ github.com/golang/protobuf/ptypes/wrappers
290290
# github.com/google/btree v1.0.1
291291
github.com/google/btree
292292
# github.com/google/cel-go v0.9.0
293-
## explicit
294293
github.com/google/cel-go/cel
295294
github.com/google/cel-go/checker
296295
github.com/google/cel-go/checker/decls
@@ -519,6 +518,7 @@ github.com/openshift/client-go/config/listers/config/v1
519518
# github.com/operator-framework/api v0.10.8-0.20211210205029-40cb9fd4036a
520519
## explicit
521520
github.com/operator-framework/api/crds
521+
github.com/operator-framework/api/pkg/constraints
522522
github.com/operator-framework/api/pkg/lib/version
523523
github.com/operator-framework/api/pkg/manifests
524524
github.com/operator-framework/api/pkg/operators
@@ -856,7 +856,6 @@ google.golang.org/appengine/internal/remote_api
856856
google.golang.org/appengine/internal/urlfetch
857857
google.golang.org/appengine/urlfetch
858858
# google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2
859-
## explicit
860859
google.golang.org/genproto/googleapis/api/annotations
861860
google.golang.org/genproto/googleapis/api/expr/v1alpha1
862861
google.golang.org/genproto/googleapis/api/httpbody

0 commit comments

Comments
 (0)