dynamic-resource-allocationk8s.io/dynamic-resource-allocation/cel Index | Files

package cel

import "k8s.io/dynamic-resource-allocation/cel"

Index

Functions

func GetCompiler

func GetCompiler() *compiler

Types

type Cache

type Cache struct {
	// contains filtered or unexported fields
}

Cache is a thread-safe LRU cache for a compiled CEL expression.

func NewCache

func NewCache(maxCacheEntries int) *Cache

NewCache creates a cache. The maximum number of entries determines how many entries are cached at most before dropping the oldest entry.

func (*Cache) GetOrCompile

func (c *Cache) GetOrCompile(expression string) CompilationResult

GetOrCompile checks whether the cache already has a compilation result and returns that if available. Otherwise it compiles, stores successful results and returns the new result.

Cost estimation is disabled.

type CompilationResult

type CompilationResult struct {
	Program     cel.Program
	Error       *apiservercel.Error
	Expression  string
	OutputType  *cel.Type
	Environment *cel.Env

	// MaxCost represents the worst-case cost of the compiled MessageExpression in terms of CEL's cost units,
	// as used by cel.EstimateCost.
	MaxCost uint64
	// contains filtered or unexported fields
}

CompilationResult represents a compiled expression.

func (CompilationResult) DeviceMatches

func (c CompilationResult) DeviceMatches(ctx context.Context, input Device) (bool, *cel.EvalDetails, error)

type Device

type Device struct {
	// Driver gets used as domain for any attribute which does not already
	// have a domain prefix. If set, then it is also made available as a
	// string attribute.
	Driver     string
	Attributes map[resourceapi.QualifiedName]resourceapi.DeviceAttribute
	Capacity   map[resourceapi.QualifiedName]resourceapi.DeviceCapacity
}

Device defines the input values for a CEL selector expression.

type Options

type Options struct {
	// EnvType allows to override the default environment type [environment.StoredExpressions].
	EnvType *environment.Type

	// CostLimit allows overriding the default runtime cost limit [resourceapi.CELSelectorExpressionMaxCost].
	CostLimit *uint64

	// DisableCostEstimation can be set to skip estimating the worst-case CEL cost.
	// If disabled or after an error, [CompilationResult.MaxCost] will be set to [math.Uint64].
	DisableCostEstimation bool
}

Options contains several additional parameters for [CompileCELExpression]. All of them have reasonable defaults.

Source Files

cache.go compile.go

Version
v0.33.0 (latest)
Published
Apr 23, 2025
Platform
linux/amd64
Imports
23 packages
Last checked
8 hours ago

Tools for package owners.