...

Text file src/k8s.io/api/resource/v1alpha2/generated.proto

Documentation: k8s.io/api/resource/v1alpha2

     1/*
     2Copyright The Kubernetes Authors.
     3
     4Licensed under the Apache License, Version 2.0 (the "License");
     5you may not use this file except in compliance with the License.
     6You may obtain a copy of the License at
     7
     8    http://www.apache.org/licenses/LICENSE-2.0
     9
    10Unless required by applicable law or agreed to in writing, software
    11distributed under the License is distributed on an "AS IS" BASIS,
    12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13See the License for the specific language governing permissions and
    14limitations under the License.
    15*/
    16
    17
    18// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    19
    20syntax = "proto2";
    21
    22package k8s.io.api.resource.v1alpha2;
    23
    24import "k8s.io/api/core/v1/generated.proto";
    25import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
    26import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    27import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    28import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    29
    30// Package-wide variables from generator "generated".
    31option go_package = "k8s.io/api/resource/v1alpha2";
    32
    33// AllocationResult contains attributes of an allocated resource.
    34message AllocationResult {
    35  // ResourceHandles contain the state associated with an allocation that
    36  // should be maintained throughout the lifetime of a claim. Each
    37  // ResourceHandle contains data that should be passed to a specific kubelet
    38  // plugin once it lands on a node. This data is returned by the driver
    39  // after a successful allocation and is opaque to Kubernetes. Driver
    40  // documentation may explain to users how to interpret this data if needed.
    41  //
    42  // Setting this field is optional. It has a maximum size of 32 entries.
    43  // If null (or empty), it is assumed this allocation will be processed by a
    44  // single kubelet plugin with no ResourceHandle data attached. The name of
    45  // the kubelet plugin invoked will match the DriverName set in the
    46  // ResourceClaimStatus this AllocationResult is embedded in.
    47  //
    48  // +listType=atomic
    49  // +optional
    50  repeated ResourceHandle resourceHandles = 1;
    51
    52  // This field will get set by the resource driver after it has allocated
    53  // the resource to inform the scheduler where it can schedule Pods using
    54  // the ResourceClaim.
    55  //
    56  // Setting this field is optional. If null, the resource is available
    57  // everywhere.
    58  // +optional
    59  optional k8s.io.api.core.v1.NodeSelector availableOnNodes = 2;
    60
    61  // Shareable determines whether the resource supports more
    62  // than one consumer at a time.
    63  // +optional
    64  optional bool shareable = 3;
    65}
    66
    67// AllocationResultModel must have one and only one field set.
    68message AllocationResultModel {
    69  // NamedResources describes the allocation result when using the named resources model.
    70  //
    71  // +optional
    72  optional NamedResourcesAllocationResult namedResources = 1;
    73}
    74
    75// DriverAllocationResult contains vendor parameters and the allocation result for
    76// one request.
    77message DriverAllocationResult {
    78  // VendorRequestParameters are the per-request configuration parameters
    79  // from the time that the claim was allocated.
    80  //
    81  // +optional
    82  optional k8s.io.apimachinery.pkg.runtime.RawExtension vendorRequestParameters = 1;
    83
    84  optional AllocationResultModel allocationResultModel = 2;
    85}
    86
    87// DriverRequests describes all resources that are needed from one particular driver.
    88message DriverRequests {
    89  // DriverName is the name used by the DRA driver kubelet plugin.
    90  optional string driverName = 1;
    91
    92  // VendorParameters are arbitrary setup parameters for all requests of the
    93  // claim. They are ignored while allocating the claim.
    94  //
    95  // +optional
    96  optional k8s.io.apimachinery.pkg.runtime.RawExtension vendorParameters = 2;
    97
    98  // Requests describes all resources that are needed from the driver.
    99  // +listType=atomic
   100  repeated ResourceRequest requests = 3;
   101}
   102
   103// NamedResourcesAllocationResult is used in AllocationResultModel.
   104message NamedResourcesAllocationResult {
   105  // Name is the name of the selected resource instance.
   106  optional string name = 1;
   107}
   108
   109// NamedResourcesAttribute is a combination of an attribute name and its value.
   110message NamedResourcesAttribute {
   111  // Name is unique identifier among all resource instances managed by
   112  // the driver on the node. It must be a DNS subdomain.
   113  optional string name = 1;
   114
   115  optional NamedResourcesAttributeValue attributeValue = 2;
   116}
   117
   118// NamedResourcesAttributeValue must have one and only one field set.
   119message NamedResourcesAttributeValue {
   120  // QuantityValue is a quantity.
   121  optional k8s.io.apimachinery.pkg.api.resource.Quantity quantity = 6;
   122
   123  // BoolValue is a true/false value.
   124  optional bool bool = 2;
   125
   126  // IntValue is a 64-bit integer.
   127  optional int64 int = 7;
   128
   129  // IntSliceValue is an array of 64-bit integers.
   130  optional NamedResourcesIntSlice intSlice = 8;
   131
   132  // StringValue is a string.
   133  optional string string = 5;
   134
   135  // StringSliceValue is an array of strings.
   136  optional NamedResourcesStringSlice stringSlice = 9;
   137
   138  // VersionValue is a semantic version according to semver.org spec 2.0.0.
   139  optional string version = 10;
   140}
   141
   142// NamedResourcesFilter is used in ResourceFilterModel.
   143message NamedResourcesFilter {
   144  // Selector is a CEL expression which must evaluate to true if a
   145  // resource instance is suitable. The language is as defined in
   146  // https://kubernetes.io/docs/reference/using-api/cel/
   147  //
   148  // In addition, for each type NamedResourcesin AttributeValue there is a map that
   149  // resolves to the corresponding value of the instance under evaluation.
   150  // For example:
   151  //
   152  //    attributes.quantity["a"].isGreaterThan(quantity("0")) &&
   153  //    attributes.stringslice["b"].isSorted()
   154  optional string selector = 1;
   155}
   156
   157// NamedResourcesInstance represents one individual hardware instance that can be selected based
   158// on its attributes.
   159message NamedResourcesInstance {
   160  // Name is unique identifier among all resource instances managed by
   161  // the driver on the node. It must be a DNS subdomain.
   162  optional string name = 1;
   163
   164  // Attributes defines the attributes of this resource instance.
   165  // The name of each attribute must be unique.
   166  //
   167  // +listType=atomic
   168  // +optional
   169  repeated NamedResourcesAttribute attributes = 2;
   170}
   171
   172// NamedResourcesIntSlice contains a slice of 64-bit integers.
   173message NamedResourcesIntSlice {
   174  // Ints is the slice of 64-bit integers.
   175  //
   176  // +listType=atomic
   177  repeated int64 ints = 1;
   178}
   179
   180// NamedResourcesRequest is used in ResourceRequestModel.
   181message NamedResourcesRequest {
   182  // Selector is a CEL expression which must evaluate to true if a
   183  // resource instance is suitable. The language is as defined in
   184  // https://kubernetes.io/docs/reference/using-api/cel/
   185  //
   186  // In addition, for each type NamedResourcesin AttributeValue there is a map that
   187  // resolves to the corresponding value of the instance under evaluation.
   188  // For example:
   189  //
   190  //    attributes.quantity["a"].isGreaterThan(quantity("0")) &&
   191  //    attributes.stringslice["b"].isSorted()
   192  optional string selector = 1;
   193}
   194
   195// NamedResourcesResources is used in ResourceModel.
   196message NamedResourcesResources {
   197  // The list of all individual resources instances currently available.
   198  //
   199  // +listType=atomic
   200  repeated NamedResourcesInstance instances = 1;
   201}
   202
   203// NamedResourcesStringSlice contains a slice of strings.
   204message NamedResourcesStringSlice {
   205  // Strings is the slice of strings.
   206  //
   207  // +listType=atomic
   208  repeated string strings = 1;
   209}
   210
   211// PodSchedulingContext objects hold information that is needed to schedule
   212// a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation
   213// mode.
   214//
   215// This is an alpha type and requires enabling the DynamicResourceAllocation
   216// feature gate.
   217message PodSchedulingContext {
   218  // Standard object metadata
   219  // +optional
   220  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   221
   222  // Spec describes where resources for the Pod are needed.
   223  optional PodSchedulingContextSpec spec = 2;
   224
   225  // Status describes where resources for the Pod can be allocated.
   226  // +optional
   227  optional PodSchedulingContextStatus status = 3;
   228}
   229
   230// PodSchedulingContextList is a collection of Pod scheduling objects.
   231message PodSchedulingContextList {
   232  // Standard list metadata
   233  // +optional
   234  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   235
   236  // Items is the list of PodSchedulingContext objects.
   237  repeated PodSchedulingContext items = 2;
   238}
   239
   240// PodSchedulingContextSpec describes where resources for the Pod are needed.
   241message PodSchedulingContextSpec {
   242  // SelectedNode is the node for which allocation of ResourceClaims that
   243  // are referenced by the Pod and that use "WaitForFirstConsumer"
   244  // allocation is to be attempted.
   245  // +optional
   246  optional string selectedNode = 1;
   247
   248  // PotentialNodes lists nodes where the Pod might be able to run.
   249  //
   250  // The size of this field is limited to 128. This is large enough for
   251  // many clusters. Larger clusters may need more attempts to find a node
   252  // that suits all pending resources. This may get increased in the
   253  // future, but not reduced.
   254  //
   255  // +listType=atomic
   256  // +optional
   257  repeated string potentialNodes = 2;
   258}
   259
   260// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
   261message PodSchedulingContextStatus {
   262  // ResourceClaims describes resource availability for each
   263  // pod.spec.resourceClaim entry where the corresponding ResourceClaim
   264  // uses "WaitForFirstConsumer" allocation mode.
   265  //
   266  // +listType=map
   267  // +listMapKey=name
   268  // +optional
   269  repeated ResourceClaimSchedulingStatus resourceClaims = 1;
   270}
   271
   272// ResourceClaim describes which resources are needed by a resource consumer.
   273// Its status tracks whether the resource has been allocated and what the
   274// resulting attributes are.
   275//
   276// This is an alpha type and requires enabling the DynamicResourceAllocation
   277// feature gate.
   278message ResourceClaim {
   279  // Standard object metadata
   280  // +optional
   281  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   282
   283  // Spec describes the desired attributes of a resource that then needs
   284  // to be allocated. It can only be set once when creating the
   285  // ResourceClaim.
   286  optional ResourceClaimSpec spec = 2;
   287
   288  // Status describes whether the resource is available and with which
   289  // attributes.
   290  // +optional
   291  optional ResourceClaimStatus status = 3;
   292}
   293
   294// ResourceClaimConsumerReference contains enough information to let you
   295// locate the consumer of a ResourceClaim. The user must be a resource in the same
   296// namespace as the ResourceClaim.
   297message ResourceClaimConsumerReference {
   298  // APIGroup is the group for the resource being referenced. It is
   299  // empty for the core API. This matches the group in the APIVersion
   300  // that is used when creating the resources.
   301  // +optional
   302  optional string apiGroup = 1;
   303
   304  // Resource is the type of resource being referenced, for example "pods".
   305  optional string resource = 3;
   306
   307  // Name is the name of resource being referenced.
   308  optional string name = 4;
   309
   310  // UID identifies exactly one incarnation of the resource.
   311  optional string uid = 5;
   312}
   313
   314// ResourceClaimList is a collection of claims.
   315message ResourceClaimList {
   316  // Standard list metadata
   317  // +optional
   318  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   319
   320  // Items is the list of resource claims.
   321  repeated ResourceClaim items = 2;
   322}
   323
   324// ResourceClaimParameters defines resource requests for a ResourceClaim in an
   325// in-tree format understood by Kubernetes.
   326message ResourceClaimParameters {
   327  // Standard object metadata
   328  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   329
   330  // If this object was created from some other resource, then this links
   331  // back to that resource. This field is used to find the in-tree representation
   332  // of the claim parameters when the parameter reference of the claim refers
   333  // to some unknown type.
   334  // +optional
   335  optional ResourceClaimParametersReference generatedFrom = 2;
   336
   337  // Shareable indicates whether the allocated claim is meant to be shareable
   338  // by multiple consumers at the same time.
   339  // +optional
   340  optional bool shareable = 3;
   341
   342  // DriverRequests describes all resources that are needed for the
   343  // allocated claim. A single claim may use resources coming from
   344  // different drivers. For each driver, this array has at most one
   345  // entry which then may have one or more per-driver requests.
   346  //
   347  // May be empty, in which case the claim can always be allocated.
   348  //
   349  // +listType=atomic
   350  repeated DriverRequests driverRequests = 4;
   351}
   352
   353// ResourceClaimParametersList is a collection of ResourceClaimParameters.
   354message ResourceClaimParametersList {
   355  // Standard list metadata
   356  // +optional
   357  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   358
   359  // Items is the list of node resource capacity objects.
   360  repeated ResourceClaimParameters items = 2;
   361}
   362
   363// ResourceClaimParametersReference contains enough information to let you
   364// locate the parameters for a ResourceClaim. The object must be in the same
   365// namespace as the ResourceClaim.
   366message ResourceClaimParametersReference {
   367  // APIGroup is the group for the resource being referenced. It is
   368  // empty for the core API. This matches the group in the APIVersion
   369  // that is used when creating the resources.
   370  // +optional
   371  optional string apiGroup = 1;
   372
   373  // Kind is the type of resource being referenced. This is the same
   374  // value as in the parameter object's metadata, for example "ConfigMap".
   375  optional string kind = 2;
   376
   377  // Name is the name of resource being referenced.
   378  optional string name = 3;
   379}
   380
   381// ResourceClaimSchedulingStatus contains information about one particular
   382// ResourceClaim with "WaitForFirstConsumer" allocation mode.
   383message ResourceClaimSchedulingStatus {
   384  // Name matches the pod.spec.resourceClaims[*].Name field.
   385  // +optional
   386  optional string name = 1;
   387
   388  // UnsuitableNodes lists nodes that the ResourceClaim cannot be
   389  // allocated for.
   390  //
   391  // The size of this field is limited to 128, the same as for
   392  // PodSchedulingSpec.PotentialNodes. This may get increased in the
   393  // future, but not reduced.
   394  //
   395  // +listType=atomic
   396  // +optional
   397  repeated string unsuitableNodes = 2;
   398}
   399
   400// ResourceClaimSpec defines how a resource is to be allocated.
   401message ResourceClaimSpec {
   402  // ResourceClassName references the driver and additional parameters
   403  // via the name of a ResourceClass that was created as part of the
   404  // driver deployment.
   405  optional string resourceClassName = 1;
   406
   407  // ParametersRef references a separate object with arbitrary parameters
   408  // that will be used by the driver when allocating a resource for the
   409  // claim.
   410  //
   411  // The object must be in the same namespace as the ResourceClaim.
   412  // +optional
   413  optional ResourceClaimParametersReference parametersRef = 2;
   414
   415  // Allocation can start immediately or when a Pod wants to use the
   416  // resource. "WaitForFirstConsumer" is the default.
   417  // +optional
   418  optional string allocationMode = 3;
   419}
   420
   421// ResourceClaimStatus tracks whether the resource has been allocated and what
   422// the resulting attributes are.
   423message ResourceClaimStatus {
   424  // DriverName is a copy of the driver name from the ResourceClass at
   425  // the time when allocation started.
   426  // +optional
   427  optional string driverName = 1;
   428
   429  // Allocation is set by the resource driver once a resource or set of
   430  // resources has been allocated successfully. If this is not specified, the
   431  // resources have not been allocated yet.
   432  // +optional
   433  optional AllocationResult allocation = 2;
   434
   435  // ReservedFor indicates which entities are currently allowed to use
   436  // the claim. A Pod which references a ResourceClaim which is not
   437  // reserved for that Pod will not be started.
   438  //
   439  // There can be at most 32 such reservations. This may get increased in
   440  // the future, but not reduced.
   441  //
   442  // +listType=map
   443  // +listMapKey=uid
   444  // +patchStrategy=merge
   445  // +patchMergeKey=uid
   446  // +optional
   447  repeated ResourceClaimConsumerReference reservedFor = 3;
   448
   449  // DeallocationRequested indicates that a ResourceClaim is to be
   450  // deallocated.
   451  //
   452  // The driver then must deallocate this claim and reset the field
   453  // together with clearing the Allocation field.
   454  //
   455  // While DeallocationRequested is set, no new consumers may be added to
   456  // ReservedFor.
   457  // +optional
   458  optional bool deallocationRequested = 4;
   459}
   460
   461// ResourceClaimTemplate is used to produce ResourceClaim objects.
   462message ResourceClaimTemplate {
   463  // Standard object metadata
   464  // +optional
   465  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   466
   467  // Describes the ResourceClaim that is to be generated.
   468  //
   469  // This field is immutable. A ResourceClaim will get created by the
   470  // control plane for a Pod when needed and then not get updated
   471  // anymore.
   472  optional ResourceClaimTemplateSpec spec = 2;
   473}
   474
   475// ResourceClaimTemplateList is a collection of claim templates.
   476message ResourceClaimTemplateList {
   477  // Standard list metadata
   478  // +optional
   479  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   480
   481  // Items is the list of resource claim templates.
   482  repeated ResourceClaimTemplate items = 2;
   483}
   484
   485// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
   486message ResourceClaimTemplateSpec {
   487  // ObjectMeta may contain labels and annotations that will be copied into the PVC
   488  // when creating it. No other fields are allowed and will be rejected during
   489  // validation.
   490  // +optional
   491  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   492
   493  // Spec for the ResourceClaim. The entire content is copied unchanged
   494  // into the ResourceClaim that gets created from this template. The
   495  // same fields as in a ResourceClaim are also valid here.
   496  optional ResourceClaimSpec spec = 2;
   497}
   498
   499// ResourceClass is used by administrators to influence how resources
   500// are allocated.
   501//
   502// This is an alpha type and requires enabling the DynamicResourceAllocation
   503// feature gate.
   504message ResourceClass {
   505  // Standard object metadata
   506  // +optional
   507  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   508
   509  // DriverName defines the name of the dynamic resource driver that is
   510  // used for allocation of a ResourceClaim that uses this class.
   511  //
   512  // Resource drivers have a unique name in forward domain order
   513  // (acme.example.com).
   514  optional string driverName = 2;
   515
   516  // ParametersRef references an arbitrary separate object that may hold
   517  // parameters that will be used by the driver when allocating a
   518  // resource that uses this class. A dynamic resource driver can
   519  // distinguish between parameters stored here and and those stored in
   520  // ResourceClaimSpec.
   521  // +optional
   522  optional ResourceClassParametersReference parametersRef = 3;
   523
   524  // Only nodes matching the selector will be considered by the scheduler
   525  // when trying to find a Node that fits a Pod when that Pod uses
   526  // a ResourceClaim that has not been allocated yet.
   527  //
   528  // Setting this field is optional. If null, all nodes are candidates.
   529  // +optional
   530  optional k8s.io.api.core.v1.NodeSelector suitableNodes = 4;
   531
   532  // If and only if allocation of claims using this class is handled
   533  // via structured parameters, then StructuredParameters must be set to true.
   534  // +optional
   535  optional bool structuredParameters = 5;
   536}
   537
   538// ResourceClassList is a collection of classes.
   539message ResourceClassList {
   540  // Standard list metadata
   541  // +optional
   542  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   543
   544  // Items is the list of resource classes.
   545  repeated ResourceClass items = 2;
   546}
   547
   548// ResourceClassParameters defines resource requests for a ResourceClass in an
   549// in-tree format understood by Kubernetes.
   550message ResourceClassParameters {
   551  // Standard object metadata
   552  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   553
   554  // If this object was created from some other resource, then this links
   555  // back to that resource. This field is used to find the in-tree representation
   556  // of the class parameters when the parameter reference of the class refers
   557  // to some unknown type.
   558  // +optional
   559  optional ResourceClassParametersReference generatedFrom = 2;
   560
   561  // VendorParameters are arbitrary setup parameters for all claims using
   562  // this class. They are ignored while allocating the claim. There must
   563  // not be more than one entry per driver.
   564  //
   565  // +listType=atomic
   566  // +optional
   567  repeated VendorParameters vendorParameters = 3;
   568
   569  // Filters describes additional contraints that must be met when using the class.
   570  //
   571  // +listType=atomic
   572  repeated ResourceFilter filters = 4;
   573}
   574
   575// ResourceClassParametersList is a collection of ResourceClassParameters.
   576message ResourceClassParametersList {
   577  // Standard list metadata
   578  // +optional
   579  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   580
   581  // Items is the list of node resource capacity objects.
   582  repeated ResourceClassParameters items = 2;
   583}
   584
   585// ResourceClassParametersReference contains enough information to let you
   586// locate the parameters for a ResourceClass.
   587message ResourceClassParametersReference {
   588  // APIGroup is the group for the resource being referenced. It is
   589  // empty for the core API. This matches the group in the APIVersion
   590  // that is used when creating the resources.
   591  // +optional
   592  optional string apiGroup = 1;
   593
   594  // Kind is the type of resource being referenced. This is the same
   595  // value as in the parameter object's metadata.
   596  optional string kind = 2;
   597
   598  // Name is the name of resource being referenced.
   599  optional string name = 3;
   600
   601  // Namespace that contains the referenced resource. Must be empty
   602  // for cluster-scoped resources and non-empty for namespaced
   603  // resources.
   604  // +optional
   605  optional string namespace = 4;
   606}
   607
   608// ResourceFilter is a filter for resources from one particular driver.
   609message ResourceFilter {
   610  // DriverName is the name used by the DRA driver kubelet plugin.
   611  optional string driverName = 1;
   612
   613  optional ResourceFilterModel resourceFilterModel = 2;
   614}
   615
   616// ResourceFilterModel must have one and only one field set.
   617message ResourceFilterModel {
   618  // NamedResources describes a resource filter using the named resources model.
   619  //
   620  // +optional
   621  optional NamedResourcesFilter namedResources = 1;
   622}
   623
   624// ResourceHandle holds opaque resource data for processing by a specific kubelet plugin.
   625message ResourceHandle {
   626  // DriverName specifies the name of the resource driver whose kubelet
   627  // plugin should be invoked to process this ResourceHandle's data once it
   628  // lands on a node. This may differ from the DriverName set in
   629  // ResourceClaimStatus this ResourceHandle is embedded in.
   630  optional string driverName = 1;
   631
   632  // Data contains the opaque data associated with this ResourceHandle. It is
   633  // set by the controller component of the resource driver whose name
   634  // matches the DriverName set in the ResourceClaimStatus this
   635  // ResourceHandle is embedded in. It is set at allocation time and is
   636  // intended for processing by the kubelet plugin whose name matches
   637  // the DriverName set in this ResourceHandle.
   638  //
   639  // The maximum size of this field is 16KiB. This may get increased in the
   640  // future, but not reduced.
   641  // +optional
   642  optional string data = 2;
   643
   644  // If StructuredData is set, then it needs to be used instead of Data.
   645  //
   646  // +optional
   647  optional StructuredResourceHandle structuredData = 5;
   648}
   649
   650// ResourceModel must have one and only one field set.
   651message ResourceModel {
   652  // NamedResources describes available resources using the named resources model.
   653  //
   654  // +optional
   655  optional NamedResourcesResources namedResources = 1;
   656}
   657
   658// ResourceRequest is a request for resources from one particular driver.
   659message ResourceRequest {
   660  // VendorParameters are arbitrary setup parameters for the requested
   661  // resource. They are ignored while allocating a claim.
   662  //
   663  // +optional
   664  optional k8s.io.apimachinery.pkg.runtime.RawExtension vendorParameters = 1;
   665
   666  optional ResourceRequestModel resourceRequestModel = 2;
   667}
   668
   669// ResourceRequestModel must have one and only one field set.
   670message ResourceRequestModel {
   671  // NamedResources describes a request for resources with the named resources model.
   672  //
   673  // +optional
   674  optional NamedResourcesRequest namedResources = 1;
   675}
   676
   677// ResourceSlice provides information about available
   678// resources on individual nodes.
   679message ResourceSlice {
   680  // Standard object metadata
   681  // +optional
   682  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   683
   684  // NodeName identifies the node which provides the resources
   685  // if they are local to a node.
   686  //
   687  // A field selector can be used to list only ResourceSlice
   688  // objects with a certain node name.
   689  //
   690  // +optional
   691  optional string nodeName = 2;
   692
   693  // DriverName identifies the DRA driver providing the capacity information.
   694  // A field selector can be used to list only ResourceSlice
   695  // objects with a certain driver name.
   696  optional string driverName = 3;
   697
   698  optional ResourceModel resourceModel = 4;
   699}
   700
   701// ResourceSliceList is a collection of ResourceSlices.
   702message ResourceSliceList {
   703  // Standard list metadata
   704  // +optional
   705  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   706
   707  // Items is the list of node resource capacity objects.
   708  repeated ResourceSlice items = 2;
   709}
   710
   711// StructuredResourceHandle is the in-tree representation of the allocation result.
   712message StructuredResourceHandle {
   713  // VendorClassParameters are the per-claim configuration parameters
   714  // from the resource class at the time that the claim was allocated.
   715  //
   716  // +optional
   717  optional k8s.io.apimachinery.pkg.runtime.RawExtension vendorClassParameters = 1;
   718
   719  // VendorClaimParameters are the per-claim configuration parameters
   720  // from the resource claim parameters at the time that the claim was
   721  // allocated.
   722  //
   723  // +optional
   724  optional k8s.io.apimachinery.pkg.runtime.RawExtension vendorClaimParameters = 2;
   725
   726  // NodeName is the name of the node providing the necessary resources
   727  // if the resources are local to a node.
   728  //
   729  // +optional
   730  optional string nodeName = 4;
   731
   732  // Results lists all allocated driver resources.
   733  //
   734  // +listType=atomic
   735  repeated DriverAllocationResult results = 5;
   736}
   737
   738// VendorParameters are opaque parameters for one particular driver.
   739message VendorParameters {
   740  // DriverName is the name used by the DRA driver kubelet plugin.
   741  optional string driverName = 1;
   742
   743  // Parameters can be arbitrary setup parameters. They are ignored while
   744  // allocating a claim.
   745  //
   746  // +optional
   747  optional k8s.io.apimachinery.pkg.runtime.RawExtension parameters = 2;
   748}
   749

View as plain text