123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- /*
- 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.
- */
- // This file was autogenerated by go-to-protobuf. Do not edit it manually!
- syntax = "proto2";
- package k8s.io.api.resource.v1alpha2;
- import "k8s.io/api/core/v1/generated.proto";
- import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
- import "k8s.io/apimachinery/pkg/runtime/generated.proto";
- import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
- // Package-wide variables from generator "generated".
- option go_package = "k8s.io/api/resource/v1alpha2";
- // AllocationResult contains attributes of an allocated resource.
- message AllocationResult {
- // ResourceHandles contain the state associated with an allocation that
- // should be maintained throughout the lifetime of a claim. Each
- // ResourceHandle contains data that should be passed to a specific kubelet
- // plugin once it lands on a node. This data is returned by the driver
- // after a successful allocation and is opaque to Kubernetes. Driver
- // documentation may explain to users how to interpret this data if needed.
- //
- // Setting this field is optional. It has a maximum size of 32 entries.
- // If null (or empty), it is assumed this allocation will be processed by a
- // single kubelet plugin with no ResourceHandle data attached. The name of
- // the kubelet plugin invoked will match the DriverName set in the
- // ResourceClaimStatus this AllocationResult is embedded in.
- //
- // +listType=atomic
- // +optional
- repeated ResourceHandle resourceHandles = 1;
- // This field will get set by the resource driver after it has allocated
- // the resource to inform the scheduler where it can schedule Pods using
- // the ResourceClaim.
- //
- // Setting this field is optional. If null, the resource is available
- // everywhere.
- // +optional
- optional k8s.io.api.core.v1.NodeSelector availableOnNodes = 2;
- // Shareable determines whether the resource supports more
- // than one consumer at a time.
- // +optional
- optional bool shareable = 3;
- }
- // PodSchedulingContext objects hold information that is needed to schedule
- // a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation
- // mode.
- //
- // This is an alpha type and requires enabling the DynamicResourceAllocation
- // feature gate.
- message PodSchedulingContext {
- // Standard object metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec describes where resources for the Pod are needed.
- optional PodSchedulingContextSpec spec = 2;
- // Status describes where resources for the Pod can be allocated.
- // +optional
- optional PodSchedulingContextStatus status = 3;
- }
- // PodSchedulingContextList is a collection of Pod scheduling objects.
- message PodSchedulingContextList {
- // Standard list metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is the list of PodSchedulingContext objects.
- repeated PodSchedulingContext items = 2;
- }
- // PodSchedulingContextSpec describes where resources for the Pod are needed.
- message PodSchedulingContextSpec {
- // SelectedNode is the node for which allocation of ResourceClaims that
- // are referenced by the Pod and that use "WaitForFirstConsumer"
- // allocation is to be attempted.
- // +optional
- optional string selectedNode = 1;
- // PotentialNodes lists nodes where the Pod might be able to run.
- //
- // The size of this field is limited to 128. This is large enough for
- // many clusters. Larger clusters may need more attempts to find a node
- // that suits all pending resources. This may get increased in the
- // future, but not reduced.
- //
- // +listType=set
- // +optional
- repeated string potentialNodes = 2;
- }
- // PodSchedulingContextStatus describes where resources for the Pod can be allocated.
- message PodSchedulingContextStatus {
- // ResourceClaims describes resource availability for each
- // pod.spec.resourceClaim entry where the corresponding ResourceClaim
- // uses "WaitForFirstConsumer" allocation mode.
- //
- // +listType=map
- // +listMapKey=name
- // +optional
- repeated ResourceClaimSchedulingStatus resourceClaims = 1;
- }
- // ResourceClaim describes which resources are needed by a resource consumer.
- // Its status tracks whether the resource has been allocated and what the
- // resulting attributes are.
- //
- // This is an alpha type and requires enabling the DynamicResourceAllocation
- // feature gate.
- message ResourceClaim {
- // Standard object metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec describes the desired attributes of a resource that then needs
- // to be allocated. It can only be set once when creating the
- // ResourceClaim.
- optional ResourceClaimSpec spec = 2;
- // Status describes whether the resource is available and with which
- // attributes.
- // +optional
- optional ResourceClaimStatus status = 3;
- }
- // ResourceClaimConsumerReference contains enough information to let you
- // locate the consumer of a ResourceClaim. The user must be a resource in the same
- // namespace as the ResourceClaim.
- message ResourceClaimConsumerReference {
- // APIGroup is the group for the resource being referenced. It is
- // empty for the core API. This matches the group in the APIVersion
- // that is used when creating the resources.
- // +optional
- optional string apiGroup = 1;
- // Resource is the type of resource being referenced, for example "pods".
- optional string resource = 3;
- // Name is the name of resource being referenced.
- optional string name = 4;
- // UID identifies exactly one incarnation of the resource.
- optional string uid = 5;
- }
- // ResourceClaimList is a collection of claims.
- message ResourceClaimList {
- // Standard list metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is the list of resource claims.
- repeated ResourceClaim items = 2;
- }
- // ResourceClaimParametersReference contains enough information to let you
- // locate the parameters for a ResourceClaim. The object must be in the same
- // namespace as the ResourceClaim.
- message ResourceClaimParametersReference {
- // APIGroup is the group for the resource being referenced. It is
- // empty for the core API. This matches the group in the APIVersion
- // that is used when creating the resources.
- // +optional
- optional string apiGroup = 1;
- // Kind is the type of resource being referenced. This is the same
- // value as in the parameter object's metadata, for example "ConfigMap".
- optional string kind = 2;
- // Name is the name of resource being referenced.
- optional string name = 3;
- }
- // ResourceClaimSchedulingStatus contains information about one particular
- // ResourceClaim with "WaitForFirstConsumer" allocation mode.
- message ResourceClaimSchedulingStatus {
- // Name matches the pod.spec.resourceClaims[*].Name field.
- // +optional
- optional string name = 1;
- // UnsuitableNodes lists nodes that the ResourceClaim cannot be
- // allocated for.
- //
- // The size of this field is limited to 128, the same as for
- // PodSchedulingSpec.PotentialNodes. This may get increased in the
- // future, but not reduced.
- //
- // +listType=set
- // +optional
- repeated string unsuitableNodes = 2;
- }
- // ResourceClaimSpec defines how a resource is to be allocated.
- message ResourceClaimSpec {
- // ResourceClassName references the driver and additional parameters
- // via the name of a ResourceClass that was created as part of the
- // driver deployment.
- optional string resourceClassName = 1;
- // ParametersRef references a separate object with arbitrary parameters
- // that will be used by the driver when allocating a resource for the
- // claim.
- //
- // The object must be in the same namespace as the ResourceClaim.
- // +optional
- optional ResourceClaimParametersReference parametersRef = 2;
- // Allocation can start immediately or when a Pod wants to use the
- // resource. "WaitForFirstConsumer" is the default.
- // +optional
- optional string allocationMode = 3;
- }
- // ResourceClaimStatus tracks whether the resource has been allocated and what
- // the resulting attributes are.
- message ResourceClaimStatus {
- // DriverName is a copy of the driver name from the ResourceClass at
- // the time when allocation started.
- // +optional
- optional string driverName = 1;
- // Allocation is set by the resource driver once a resource or set of
- // resources has been allocated successfully. If this is not specified, the
- // resources have not been allocated yet.
- // +optional
- optional AllocationResult allocation = 2;
- // ReservedFor indicates which entities are currently allowed to use
- // the claim. A Pod which references a ResourceClaim which is not
- // reserved for that Pod will not be started.
- //
- // There can be at most 32 such reservations. This may get increased in
- // the future, but not reduced.
- //
- // +listType=map
- // +listMapKey=uid
- // +optional
- repeated ResourceClaimConsumerReference reservedFor = 3;
- // DeallocationRequested indicates that a ResourceClaim is to be
- // deallocated.
- //
- // The driver then must deallocate this claim and reset the field
- // together with clearing the Allocation field.
- //
- // While DeallocationRequested is set, no new consumers may be added to
- // ReservedFor.
- // +optional
- optional bool deallocationRequested = 4;
- }
- // ResourceClaimTemplate is used to produce ResourceClaim objects.
- message ResourceClaimTemplate {
- // Standard object metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Describes the ResourceClaim that is to be generated.
- //
- // This field is immutable. A ResourceClaim will get created by the
- // control plane for a Pod when needed and then not get updated
- // anymore.
- optional ResourceClaimTemplateSpec spec = 2;
- }
- // ResourceClaimTemplateList is a collection of claim templates.
- message ResourceClaimTemplateList {
- // Standard list metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is the list of resource claim templates.
- repeated ResourceClaimTemplate items = 2;
- }
- // ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
- message ResourceClaimTemplateSpec {
- // ObjectMeta may contain labels and annotations that will be copied into the PVC
- // when creating it. No other fields are allowed and will be rejected during
- // validation.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec for the ResourceClaim. The entire content is copied unchanged
- // into the ResourceClaim that gets created from this template. The
- // same fields as in a ResourceClaim are also valid here.
- optional ResourceClaimSpec spec = 2;
- }
- // ResourceClass is used by administrators to influence how resources
- // are allocated.
- //
- // This is an alpha type and requires enabling the DynamicResourceAllocation
- // feature gate.
- message ResourceClass {
- // Standard object metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // DriverName defines the name of the dynamic resource driver that is
- // used for allocation of a ResourceClaim that uses this class.
- //
- // Resource drivers have a unique name in forward domain order
- // (acme.example.com).
- optional string driverName = 2;
- // ParametersRef references an arbitrary separate object that may hold
- // parameters that will be used by the driver when allocating a
- // resource that uses this class. A dynamic resource driver can
- // distinguish between parameters stored here and and those stored in
- // ResourceClaimSpec.
- // +optional
- optional ResourceClassParametersReference parametersRef = 3;
- // Only nodes matching the selector will be considered by the scheduler
- // when trying to find a Node that fits a Pod when that Pod uses
- // a ResourceClaim that has not been allocated yet.
- //
- // Setting this field is optional. If null, all nodes are candidates.
- // +optional
- optional k8s.io.api.core.v1.NodeSelector suitableNodes = 4;
- }
- // ResourceClassList is a collection of classes.
- message ResourceClassList {
- // Standard list metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is the list of resource classes.
- repeated ResourceClass items = 2;
- }
- // ResourceClassParametersReference contains enough information to let you
- // locate the parameters for a ResourceClass.
- message ResourceClassParametersReference {
- // APIGroup is the group for the resource being referenced. It is
- // empty for the core API. This matches the group in the APIVersion
- // that is used when creating the resources.
- // +optional
- optional string apiGroup = 1;
- // Kind is the type of resource being referenced. This is the same
- // value as in the parameter object's metadata.
- optional string kind = 2;
- // Name is the name of resource being referenced.
- optional string name = 3;
- // Namespace that contains the referenced resource. Must be empty
- // for cluster-scoped resources and non-empty for namespaced
- // resources.
- // +optional
- optional string namespace = 4;
- }
- // ResourceHandle holds opaque resource data for processing by a specific kubelet plugin.
- message ResourceHandle {
- // DriverName specifies the name of the resource driver whose kubelet
- // plugin should be invoked to process this ResourceHandle's data once it
- // lands on a node. This may differ from the DriverName set in
- // ResourceClaimStatus this ResourceHandle is embedded in.
- optional string driverName = 1;
- // Data contains the opaque data associated with this ResourceHandle. It is
- // set by the controller component of the resource driver whose name
- // matches the DriverName set in the ResourceClaimStatus this
- // ResourceHandle is embedded in. It is set at allocation time and is
- // intended for processing by the kubelet plugin whose name matches
- // the DriverName set in this ResourceHandle.
- //
- // The maximum size of this field is 16KiB. This may get increased in the
- // future, but not reduced.
- // +optional
- optional string data = 2;
- }
|