mirror of
https://github.com/kubernetes/client-go.git
synced 2026-02-22 08:03:18 +00:00
246 lines
12 KiB
Go
246 lines
12 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
|
|
|
|
import (
|
|
resourcev1beta1 "k8s.io/api/resource/v1beta1"
|
|
)
|
|
|
|
// DeviceRequestApplyConfiguration represents a declarative configuration of the DeviceRequest type for use
|
|
// with apply.
|
|
//
|
|
// DeviceRequest is a request for devices required for a claim.
|
|
// This is typically a request for a single resource like a device, but can
|
|
// also ask for several identical devices.
|
|
type DeviceRequestApplyConfiguration struct {
|
|
// Name can be used to reference this request in a pod.spec.containers[].resources.claims
|
|
// entry and in a constraint of the claim.
|
|
//
|
|
// Must be a DNS label and unique among all DeviceRequests in a
|
|
// ResourceClaim.
|
|
Name *string `json:"name,omitempty"`
|
|
// DeviceClassName references a specific DeviceClass, which can define
|
|
// additional configuration and selectors to be inherited by this
|
|
// request.
|
|
//
|
|
// A class is required if no subrequests are specified in the
|
|
// firstAvailable list and no class can be set if subrequests
|
|
// are specified in the firstAvailable list.
|
|
// Which classes are available depends on the cluster.
|
|
//
|
|
// Administrators may use this to restrict which devices may get
|
|
// requested by only installing classes with selectors for permitted
|
|
// devices. If users are free to request anything without restrictions,
|
|
// then administrators can create an empty DeviceClass for users
|
|
// to reference.
|
|
DeviceClassName *string `json:"deviceClassName,omitempty"`
|
|
// Selectors define criteria which must be satisfied by a specific
|
|
// device in order for that device to be considered for this
|
|
// request. All selectors must be satisfied for a device to be
|
|
// considered.
|
|
//
|
|
// This field can only be set when deviceClassName is set and no subrequests
|
|
// are specified in the firstAvailable list.
|
|
Selectors []DeviceSelectorApplyConfiguration `json:"selectors,omitempty"`
|
|
// AllocationMode and its related fields define how devices are allocated
|
|
// to satisfy this request. Supported values are:
|
|
//
|
|
// - ExactCount: This request is for a specific number of devices.
|
|
// This is the default. The exact number is provided in the
|
|
// count field.
|
|
//
|
|
// - All: This request is for all of the matching devices in a pool.
|
|
// At least one device must exist on the node for the allocation to succeed.
|
|
// Allocation will fail if some devices are already allocated,
|
|
// unless adminAccess is requested.
|
|
//
|
|
// If AllocationMode is not specified, the default mode is ExactCount. If
|
|
// the mode is ExactCount and count is not specified, the default count is
|
|
// one. Any other requests must specify this field.
|
|
//
|
|
// This field can only be set when deviceClassName is set and no subrequests
|
|
// are specified in the firstAvailable list.
|
|
//
|
|
// More modes may get added in the future. Clients must refuse to handle
|
|
// requests with unknown modes.
|
|
AllocationMode *resourcev1beta1.DeviceAllocationMode `json:"allocationMode,omitempty"`
|
|
// Count is used only when the count mode is "ExactCount". Must be greater than zero.
|
|
// If AllocationMode is ExactCount and this field is not specified, the default is one.
|
|
//
|
|
// This field can only be set when deviceClassName is set and no subrequests
|
|
// are specified in the firstAvailable list.
|
|
Count *int64 `json:"count,omitempty"`
|
|
// AdminAccess indicates that this is a claim for administrative access
|
|
// to the device(s). Claims with AdminAccess are expected to be used for
|
|
// monitoring or other management services for a device. They ignore
|
|
// all ordinary claims to the device with respect to access modes and
|
|
// any resource allocations.
|
|
//
|
|
// This field can only be set when deviceClassName is set and no subrequests
|
|
// are specified in the firstAvailable list.
|
|
//
|
|
// This is an alpha field and requires enabling the DRAAdminAccess
|
|
// feature gate. Admin access is disabled if this field is unset or
|
|
// set to false, otherwise it is enabled.
|
|
AdminAccess *bool `json:"adminAccess,omitempty"`
|
|
// FirstAvailable contains subrequests, of which exactly one will be
|
|
// satisfied by the scheduler to satisfy this request. It tries to
|
|
// satisfy them in the order in which they are listed here. So if
|
|
// there are two entries in the list, the scheduler will only check
|
|
// the second one if it determines that the first one cannot be used.
|
|
//
|
|
// This field may only be set in the entries of DeviceClaim.Requests.
|
|
//
|
|
// DRA does not yet implement scoring, so the scheduler will
|
|
// select the first set of devices that satisfies all the
|
|
// requests in the claim. And if the requirements can
|
|
// be satisfied on more than one node, other scheduling features
|
|
// will determine which node is chosen. This means that the set of
|
|
// devices allocated to a claim might not be the optimal set
|
|
// available to the cluster. Scoring will be implemented later.
|
|
FirstAvailable []DeviceSubRequestApplyConfiguration `json:"firstAvailable,omitempty"`
|
|
// If specified, the request's tolerations.
|
|
//
|
|
// Tolerations for NoSchedule are required to allocate a
|
|
// device which has a taint with that effect. The same applies
|
|
// to NoExecute.
|
|
//
|
|
// In addition, should any of the allocated devices get tainted
|
|
// with NoExecute after allocation and that effect is not tolerated,
|
|
// then all pods consuming the ResourceClaim get deleted to evict
|
|
// them. The scheduler will not let new pods reserve the claim while
|
|
// it has these tainted devices. Once all pods are evicted, the
|
|
// claim will get deallocated.
|
|
//
|
|
// The maximum number of tolerations is 16.
|
|
//
|
|
// This field can only be set when deviceClassName is set and no subrequests
|
|
// are specified in the firstAvailable list.
|
|
//
|
|
// This is an alpha field and requires enabling the DRADeviceTaints
|
|
// feature gate.
|
|
Tolerations []DeviceTolerationApplyConfiguration `json:"tolerations,omitempty"`
|
|
// Capacity define resource requirements against each capacity.
|
|
//
|
|
// If this field is unset and the device supports multiple allocations,
|
|
// the default value will be applied to each capacity according to requestPolicy.
|
|
// For the capacity that has no requestPolicy, default is the full capacity value.
|
|
//
|
|
// Applies to each device allocation.
|
|
// If Count > 1,
|
|
// the request fails if there aren't enough devices that meet the requirements.
|
|
// If AllocationMode is set to All,
|
|
// the request fails if there are devices that otherwise match the request,
|
|
// and have this capacity, with a value >= the requested amount, but which cannot be allocated to this request.
|
|
Capacity *CapacityRequirementsApplyConfiguration `json:"capacity,omitempty"`
|
|
}
|
|
|
|
// DeviceRequestApplyConfiguration constructs a declarative configuration of the DeviceRequest type for use with
|
|
// apply.
|
|
func DeviceRequest() *DeviceRequestApplyConfiguration {
|
|
return &DeviceRequestApplyConfiguration{}
|
|
}
|
|
|
|
// WithName sets the Name 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 Name field is set to the value of the last call.
|
|
func (b *DeviceRequestApplyConfiguration) WithName(value string) *DeviceRequestApplyConfiguration {
|
|
b.Name = &value
|
|
return b
|
|
}
|
|
|
|
// WithDeviceClassName sets the DeviceClassName 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 DeviceClassName field is set to the value of the last call.
|
|
func (b *DeviceRequestApplyConfiguration) WithDeviceClassName(value string) *DeviceRequestApplyConfiguration {
|
|
b.DeviceClassName = &value
|
|
return b
|
|
}
|
|
|
|
// WithSelectors adds the given value to the Selectors field in the declarative configuration
|
|
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
|
|
// If called multiple times, values provided by each call will be appended to the Selectors field.
|
|
func (b *DeviceRequestApplyConfiguration) WithSelectors(values ...*DeviceSelectorApplyConfiguration) *DeviceRequestApplyConfiguration {
|
|
for i := range values {
|
|
if values[i] == nil {
|
|
panic("nil value passed to WithSelectors")
|
|
}
|
|
b.Selectors = append(b.Selectors, *values[i])
|
|
}
|
|
return b
|
|
}
|
|
|
|
// WithAllocationMode sets the AllocationMode 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 AllocationMode field is set to the value of the last call.
|
|
func (b *DeviceRequestApplyConfiguration) WithAllocationMode(value resourcev1beta1.DeviceAllocationMode) *DeviceRequestApplyConfiguration {
|
|
b.AllocationMode = &value
|
|
return b
|
|
}
|
|
|
|
// WithCount sets the Count 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 Count field is set to the value of the last call.
|
|
func (b *DeviceRequestApplyConfiguration) WithCount(value int64) *DeviceRequestApplyConfiguration {
|
|
b.Count = &value
|
|
return b
|
|
}
|
|
|
|
// WithAdminAccess sets the AdminAccess 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 AdminAccess field is set to the value of the last call.
|
|
func (b *DeviceRequestApplyConfiguration) WithAdminAccess(value bool) *DeviceRequestApplyConfiguration {
|
|
b.AdminAccess = &value
|
|
return b
|
|
}
|
|
|
|
// WithFirstAvailable adds the given value to the FirstAvailable field in the declarative configuration
|
|
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
|
|
// If called multiple times, values provided by each call will be appended to the FirstAvailable field.
|
|
func (b *DeviceRequestApplyConfiguration) WithFirstAvailable(values ...*DeviceSubRequestApplyConfiguration) *DeviceRequestApplyConfiguration {
|
|
for i := range values {
|
|
if values[i] == nil {
|
|
panic("nil value passed to WithFirstAvailable")
|
|
}
|
|
b.FirstAvailable = append(b.FirstAvailable, *values[i])
|
|
}
|
|
return b
|
|
}
|
|
|
|
// WithTolerations adds the given value to the Tolerations field in the declarative configuration
|
|
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
|
|
// If called multiple times, values provided by each call will be appended to the Tolerations field.
|
|
func (b *DeviceRequestApplyConfiguration) WithTolerations(values ...*DeviceTolerationApplyConfiguration) *DeviceRequestApplyConfiguration {
|
|
for i := range values {
|
|
if values[i] == nil {
|
|
panic("nil value passed to WithTolerations")
|
|
}
|
|
b.Tolerations = append(b.Tolerations, *values[i])
|
|
}
|
|
return b
|
|
}
|
|
|
|
// WithCapacity sets the Capacity 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 Capacity field is set to the value of the last call.
|
|
func (b *DeviceRequestApplyConfiguration) WithCapacity(value *CapacityRequirementsApplyConfiguration) *DeviceRequestApplyConfiguration {
|
|
b.Capacity = value
|
|
return b
|
|
}
|