Skip to content

Commit

Permalink
Add canonical CEL support: dev.cel.expr (cncf#75)
Browse files Browse the repository at this point in the history
Signed-off-by: Sergii Tkachenko <sergiitk@google.com>
  • Loading branch information
sergiitk committed Nov 17, 2023
1 parent 3a472e5 commit 0f5e0d9
Show file tree
Hide file tree
Showing 7 changed files with 134 additions and 53 deletions.
4 changes: 4 additions & 0 deletions bazel/external_proto_deps.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,14 @@ EXTERNAL_PROTO_GO_BAZEL_DEP_MAP = {
# go_googleapis in https://github.com/bazelbuild/rules_go/blob/master/go/dependencies.rst#overriding-dependencies
"@com_google_googleapis//google/api/expr/v1alpha1:checked_proto": "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto": "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
"@dev_cel//proto/cel/expr:checked_proto": "@dev_cel//proto/cel/expr:checked_go_proto",
"@dev_cel//proto/cel/expr:syntax_proto": "@dev_cel//proto/cel/expr:syntax_go_proto",
}

# This maps from the Bazel proto_library target to the C++ language binding target for external dependencies.
EXTERNAL_PROTO_CC_BAZEL_DEP_MAP = {
"@com_google_googleapis//google/api/expr/v1alpha1:checked_proto": "@com_google_googleapis//google/api/expr/v1alpha1:checked_cc_proto",
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto": "@com_google_googleapis//google/api/expr/v1alpha1:syntax_cc_proto",
"@dev_cel//proto/cel/expr:checked_proto": "@dev_cel//proto/cel/expr:checked_cc_proto",
"@dev_cel//proto/cel/expr:syntax_proto": "@dev_cel//proto/cel/expr:syntax_cc_proto",
}
4 changes: 4 additions & 0 deletions bazel/repositories.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ def xds_api_dependencies():
"com_google_protobuf",
locations = REPOSITORY_LOCATIONS,
)
xds_http_archive(
name = "dev_cel",
locations = REPOSITORY_LOCATIONS,
)
xds_http_archive(
"io_bazel_rules_go",
locations = REPOSITORY_LOCATIONS,
Expand Down
5 changes: 5 additions & 0 deletions bazel/repository_locations.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ REPOSITORY_LOCATIONS = dict(
strip_prefix = "protobuf-3.21.5",
urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.21.5.zip"],
),
dev_cel = dict(
sha256 = "6d4bf5a0ac04b35c421cb8317cd35bbe78aacffee787bc7aa89daa1e211ff6be",
strip_prefix = "cel-spec-0.13.0",
urls = ["https://github.com/google/cel-spec/archive/refs/tags/v0.13.0.tar.gz"],
),
io_bazel_rules_go = dict(
sha256 = "6dc2da7ab4cf5d7bfc7c949776b1b7c733f05e56edc4bcd9022bb249d2e2a996",
urls = [
Expand Down
122 changes: 79 additions & 43 deletions go/xds/type/v3/cel.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 20 additions & 6 deletions go/xds/type/v3/cel.pb.validate.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions xds/type/v3/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ xds_proto_package(
"//xds/annotations/v3:pkg",
"@com_google_googleapis//google/api/expr/v1alpha1:checked_proto",
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto",
"@dev_cel//proto/cel/expr:checked_proto",
"@dev_cel//proto/cel/expr:syntax_proto",
],
)
24 changes: 20 additions & 4 deletions xds/type/v3/cel.proto
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ package xds.type.v3;

import "google/api/expr/v1alpha1/checked.proto";
import "google/api/expr/v1alpha1/syntax.proto";
import "cel/expr/checked.proto";
import "cel/expr/syntax.proto";
import "google/protobuf/wrappers.proto";

import "xds/annotations/v3/status.proto";
Expand All @@ -23,14 +25,28 @@ option (xds.annotations.v3.file_status).work_in_progress = true;
// <https://github.com/google/cel-spec>`_ (CEL) program.
message CelExpression {
oneof expr_specifier {
option (validate.required) = true;

// Parsed expression in abstract syntax tree (AST) form.
google.api.expr.v1alpha1.ParsedExpr parsed_expr = 1;
//
// Deprecated -- use ``cel_expr_parsed`` field instead.
// If ``cel_expr_parsed`` or ``cel_expr_checked`` is set, this field is not used.
google.api.expr.v1alpha1.ParsedExpr parsed_expr = 1 [deprecated = true];

// Parsed expression in abstract syntax tree (AST) form that has been successfully type checked.
google.api.expr.v1alpha1.CheckedExpr checked_expr = 2;
//
// Deprecated -- use ``cel_expr_checked`` field instead.
// If ``cel_expr_parsed`` or ``cel_expr_checked`` is set, this field is not used.
google.api.expr.v1alpha1.CheckedExpr checked_expr = 2 [deprecated = true];
}

// Parsed expression in abstract syntax tree (AST) form.
//
// If ``cel_expr_checked`` is set, this field is not used.
cel.expr.ParsedExpr cel_expr_parsed = 3;

// Parsed expression in abstract syntax tree (AST) form that has been successfully type checked.
//
// If set, takes precedence over ``cel_expr_parsed``.
cel.expr.CheckedExpr cel_expr_checked = 4;
}

// Extracts a string by evaluating a `Common Expression Language
Expand Down

0 comments on commit 0f5e0d9

Please sign in to comment.