93 lines
4.1 KiB
Go
93 lines
4.1 KiB
Go
/*
|
|
Copyright The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
// Code generated by applyconfiguration-gen. DO NOT EDIT.
|
|
|
|
package v1beta1
|
|
|
|
// CELDeviceSelectorApplyConfiguration represents a declarative configuration of the CELDeviceSelector type for use
|
|
// with apply.
|
|
//
|
|
// CELDeviceSelector contains a CEL expression for selecting a device.
|
|
type CELDeviceSelectorApplyConfiguration struct {
|
|
// Expression is a CEL expression which evaluates a single device. It
|
|
// must evaluate to true when the device under consideration satisfies
|
|
// the desired criteria, and false when it does not. Any other result
|
|
// is an error and causes allocation of devices to abort.
|
|
//
|
|
// The expression's input is an object named "device", which carries
|
|
// the following properties:
|
|
// - driver (string): the name of the driver which defines this device.
|
|
// - attributes (map[string]object): the device's attributes, grouped by prefix
|
|
// (e.g. device.attributes["dra.example.com"] evaluates to an object with all
|
|
// of the attributes which were prefixed by "dra.example.com".
|
|
// - capacity (map[string]object): the device's capacities, grouped by prefix.
|
|
// - allowMultipleAllocations (bool): the allowMultipleAllocations property of the device
|
|
// (v1.34+ with the DRAConsumableCapacity feature enabled).
|
|
//
|
|
// Example: Consider a device with driver="dra.example.com", which exposes
|
|
// two attributes named "model" and "ext.example.com/family" and which
|
|
// exposes one capacity named "modules". This input to this expression
|
|
// would have the following fields:
|
|
//
|
|
// device.driver
|
|
// device.attributes["dra.example.com"].model
|
|
// device.attributes["ext.example.com"].family
|
|
// device.capacity["dra.example.com"].modules
|
|
//
|
|
// The device.driver field can be used to check for a specific driver,
|
|
// either as a high-level precondition (i.e. you only want to consider
|
|
// devices from this driver) or as part of a multi-clause expression
|
|
// that is meant to consider devices from different drivers.
|
|
//
|
|
// The value type of each attribute is defined by the device
|
|
// definition, and users who write these expressions must consult the
|
|
// documentation for their specific drivers. The value type of each
|
|
// capacity is Quantity.
|
|
//
|
|
// If an unknown prefix is used as a lookup in either device.attributes
|
|
// or device.capacity, an empty map will be returned. Any reference to
|
|
// an unknown field will cause an evaluation error and allocation to
|
|
// abort.
|
|
//
|
|
// A robust expression should check for the existence of attributes
|
|
// before referencing them.
|
|
//
|
|
// For ease of use, the cel.bind() function is enabled, and can be used
|
|
// to simplify expressions that access multiple attributes with the
|
|
// same domain. For example:
|
|
//
|
|
// cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
|
|
//
|
|
// The length of the expression must be smaller or equal to 10 Ki. The
|
|
// cost of evaluating it is also limited based on the estimated number
|
|
// of logical steps.
|
|
Expression *string `json:"expression,omitempty"`
|
|
}
|
|
|
|
// CELDeviceSelectorApplyConfiguration constructs a declarative configuration of the CELDeviceSelector type for use with
|
|
// apply.
|
|
func CELDeviceSelector() *CELDeviceSelectorApplyConfiguration {
|
|
return &CELDeviceSelectorApplyConfiguration{}
|
|
}
|
|
|
|
// WithExpression sets the Expression field in the declarative configuration to the given value
|
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
|
// If called multiple times, the Expression field is set to the value of the last call.
|
|
func (b *CELDeviceSelectorApplyConfiguration) WithExpression(value string) *CELDeviceSelectorApplyConfiguration {
|
|
b.Expression = &value
|
|
return b
|
|
}
|