Skip to content

Support parsing cel_expr_string from XDS CelExpression #42038

@isker

Description

@isker

This field is not handled by Envoy here:

absl::StatusOr<CompiledExpression>
CompiledExpression::Create(const BuilderInstanceSharedConstPtr& builder,
const xds::type::v3::CelExpression& xds_expr) {
// First try to get expression from the new CEL canonical format.
if (xds_expr.has_cel_expr_checked()) {
return Create(builder, xds_expr.cel_expr_checked().expr());
} else if (xds_expr.has_cel_expr_parsed()) {
return Create(builder, xds_expr.cel_expr_parsed().expr());
}
// Fallback to handling legacy formats for backward compatibility.
switch (xds_expr.expr_specifier_case()) {
case xds::type::v3::CelExpression::ExprSpecifierCase::kParsedExpr:
return Create(builder, xds_expr.parsed_expr().expr());
case xds::type::v3::CelExpression::ExprSpecifierCase::kCheckedExpr:
return Create(builder, xds_expr.checked_expr().expr());
default:
return absl::InvalidArgumentError("CEL expression not set.");
}
PANIC_DUE_TO_CORRUPT_ENUM;
}

Metadata

Metadata

Assignees

Labels

area/celenhancementFeature requests. Not bugs or questions.questionQuestions that are neither investigations, bugs, nor enhancements

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions