package cel

import "k8s.io/apiserver/pkg/admission/plugin/cel"

Index

Constants

const (
	ObjectVarName    = "object"
	OldObjectVarName = "oldObject"
	ParamsVarName    = "params"
	RequestVarName   = "request"
)

Functions

func CreateAdmissionRequest

func CreateAdmissionRequest(attr admission.Attributes) *admissionv1.AdmissionRequest

TODO: to reuse https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/request/admissionreview.go#L154

Types

type CompilationResult

type CompilationResult struct {
	Program            cel.Program
	Error              *apiservercel.Error
	ExpressionAccessor ExpressionAccessor
}

CompilationResult represents a compiled validations expression.

func CompileCELExpression

func CompileCELExpression(expressionAccessor ExpressionAccessor, hasParams bool) CompilationResult

CompileCELExpression returns a compiled CEL expression.

type EvaluationResult

type EvaluationResult struct {
	EvalResult         ref.Val
	ExpressionAccessor ExpressionAccessor
	Elapsed            time.Duration
	Error              error
}

EvaluationResult contains the minimal required fields and metadata of a cel evaluation

type ExpressionAccessor

type ExpressionAccessor interface {
	GetExpression() string
}

type Filter

type Filter interface {
	// ForInput converts compiled CEL-typed values into evaluated CEL-typed values
	ForInput(versionedAttr *generic.VersionedAttributes, versionedParams runtime.Object, request *v1.AdmissionRequest) ([]EvaluationResult, error)

	// CompilationErrors returns a list of errors from the compilation of the evaluator
	CompilationErrors() []error
}

Filter contains a function to evaluate compiled CEL-typed values It expects the inbound object to already have been converted to the version expected by the underlying CEL code (which is indicated by the match criteria of a policy definition). versionedParams may be nil.

func NewFilter

func NewFilter(compilationResults []CompilationResult) Filter

type FilterCompiler

type FilterCompiler interface {
	// Compile is used for the cel expression compilation
	Compile(expressions []ExpressionAccessor, hasParam bool) Filter
}

FilterCompiler contains a function to assist with converting types and values to/from CEL-typed values.

func NewFilterCompiler

func NewFilterCompiler() FilterCompiler

type MatchCondition

type MatchCondition struct {
	Expression string
}

MatchCondition contains the inputs needed to compile, evaluate and match a cel expression

func (*MatchCondition) GetExpression

func (v *MatchCondition) GetExpression() string

Source Files

compile.go filter.go interface.go

Version
v0.27.0-alpha.3
Published
Mar 3, 2023
Platform
js/wasm
Imports
17 packages
Last checked
11 minutes ago

Tools for package owners.