constraints

package
v0.16.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2022 License: Apache-2.0 Imports: 10 Imported by: 6

Documentation

Index

Constants

View Source
const OLMConstraintType = "olm.constraint"

OLMConstraintType is the schema "type" key for all constraints known to OLM (except for legacy types).

View Source
const PropertiesKey = "properties"

PropertiesKey is the key for bundle properties map (input data for CEL evaluation)

Variables

View Source
var ErrMaxConstraintSizeExceeded = fmt.Errorf("olm.constraint value is greater than max constraint size %d bytes", maxConstraintSize)

ErrMaxConstraintSizeExceeded is returned when a constraint's size > maxConstraintSize.

Functions

This section is empty.

Types

type Cel

type Cel struct {
	// The CEL expression
	Rule string `json:"rule" yaml:"rule"`
}

Cel is a struct representing CEL expression information

type CelEnvironment

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

CelEnvironment is a struct that encapsulates CEL custom program enviroment

func NewCelEnvironment

func NewCelEnvironment() *CelEnvironment

NewCelEnvironment returns a CEL environment which can be used to evaluate CEL expression and an error if occurs

func (*CelEnvironment) Validate

func (e *CelEnvironment) Validate(rule string) (CelProgram, error)

Validate to validate the CEL expression string by compiling it into CEL program

type CelProgram

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

CelProgram is a struct that encapsulates compiled CEL program

func (CelProgram) Evaluate

func (e CelProgram) Evaluate(data map[string]interface{}) (bool, error)

Evaluate to evaluate the compiled CEL program against input data (map)

type CompoundConstraint

type CompoundConstraint struct {
	Constraints []Constraint `json:"constraints" yaml:"constraints"`
}

CompoundConstraint holds a list of potentially nested constraints over which a boolean operation is applied.

type Constraint

type Constraint struct {
	// Constraint failure message that surfaces in resolution
	// This field is optional
	FailureMessage string `json:"failureMessage,omitempty" yaml:"failureMessage,omitempty"`

	// The cel struct that contraints CEL expression
	Cel *Cel `json:"cel,omitempty" yaml:"cel,omitempty"`

	// Package defines a constraint for a package within a version range.
	Package *PackageConstraint `json:"package,omitempty" yaml:"package,omitempty"`

	// GVK defines a constraint for a GVK.
	GVK *GVKConstraint `json:"gvk,omitempty" yaml:"gvk,omitempty"`

	// All, Any, and Not are compound constraints. See this enhancement for details:
	// https://github.com/operator-framework/enhancements/blob/master/enhancements/compound-bundle-constraints.md
	All *CompoundConstraint `json:"all,omitempty" yaml:"all,omitempty"`
	Any *CompoundConstraint `json:"any,omitempty" yaml:"any,omitempty"`
	// A note on Not: this constraint isn't particularly useful by itself.
	// It should be used within an All constraint alongside some other constraint type
	// since saying "do not use any of these GVKs/packages/etc." without an alternative
	// doesn't make sense.
	Not *CompoundConstraint `json:"not,omitempty" yaml:"not,omitempty"`
}

Constraint holds parsed, potentially nested dependency constraints.

func Parse

func Parse(v json.RawMessage) (c Constraint, err error)

Parse parses an olm.constraint property's value recursively into a Constraint. Unknown value schemas result in an error. Constraints that exceed the number of bytes defined by maxConstraintSize result results in an error.

type GVKConstraint

type GVKConstraint struct {
	Group   string `json:"group" yaml:"group"`
	Kind    string `json:"kind" yaml:"kind"`
	Version string `json:"version" yaml:"version"`
}

GVKConstraint defines a GVK constraint.

type PackageConstraint

type PackageConstraint struct {
	// PackageName is the name of the package.
	PackageName string `json:"packageName" yaml:"packageName"`
	// VersionRange required for the package.
	VersionRange string `json:"versionRange" yaml:"versionRange"`
}

PackageConstraint defines a package constraint.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL