Files
csharp/src/KubernetesClient/generated/Models/V1beta1CSIDriverSpec.cs
Boshi Lian 225bb1f59b Gen v1.21.0 (#603)
* gen v1.21.0

* update version converter

* bump version to 5

* remove support of netstandard2.0

* update test dependency
2021-04-09 13:37:17 -07:00

305 lines
16 KiB
C#
Generated

// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>
namespace k8s.Models
{
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
/// <summary>
/// CSIDriverSpec is the specification of a CSIDriver.
/// </summary>
public partial class V1beta1CSIDriverSpec
{
/// <summary>
/// Initializes a new instance of the V1beta1CSIDriverSpec class.
/// </summary>
public V1beta1CSIDriverSpec()
{
CustomInit();
}
/// <summary>
/// Initializes a new instance of the V1beta1CSIDriverSpec class.
/// </summary>
/// <param name="attachRequired">attachRequired indicates this CSI
/// volume driver requires an attach operation (because it implements
/// the CSI ControllerPublishVolume() method), and that the Kubernetes
/// attach detach controller should call the attach volume interface
/// which checks the volumeattachment status and waits until the volume
/// is attached before proceeding to mounting. The CSI
/// external-attacher coordinates with CSI volume driver and updates
/// the volumeattachment status when the attach operation is complete.
/// If the CSIDriverRegistry feature gate is enabled and the value is
/// specified to false, the attach operation will be skipped. Otherwise
/// the attach operation will be called.
///
/// This field is immutable.</param>
/// <param name="fsGroupPolicy">Defines if the underlying volume
/// supports changing ownership and permission of the volume before
/// being mounted. Refer to the specific FSGroupPolicy values for
/// additional details. This field is alpha-level, and is only honored
/// by servers that enable the CSIVolumeFSGroupPolicy feature gate.
///
/// This field is immutable.</param>
/// <param name="podInfoOnMount">If set to true, podInfoOnMount
/// indicates this CSI volume driver requires additional pod
/// information (like podName, podUID, etc.) during mount operations.
/// If set to false, pod information will not be passed on mount.
/// Default is false. The CSI driver specifies podInfoOnMount as part
/// of driver deployment. If true, Kubelet will pass pod information as
/// VolumeContext in the CSI NodePublishVolume() calls. The CSI driver
/// is responsible for parsing and validating the information passed in
/// as VolumeContext. The following VolumeConext will be passed if
/// podInfoOnMount is set to true. This list might grow, but the prefix
/// will be used. "csi.storage.k8s.io/pod.name": pod.Name
/// "csi.storage.k8s.io/pod.namespace": pod.Namespace
/// "csi.storage.k8s.io/pod.uid": string(pod.UID)
/// "csi.storage.k8s.io/ephemeral": "true" if the volume is an
/// ephemeral inline volume
/// defined by a CSIVolumeSource, otherwise "false"
///
/// "csi.storage.k8s.io/ephemeral" is a new feature in Kubernetes 1.16.
/// It is only required for drivers which support both the "Persistent"
/// and "Ephemeral" VolumeLifecycleMode. Other drivers can leave pod
/// info disabled and/or ignore this field. As Kubernetes 1.15 doesn't
/// support this field, drivers can only support one mode when deployed
/// on such a cluster and the deployment determines which mode that is,
/// for example via a command line parameter of the driver.
///
/// This field is immutable.</param>
/// <param name="requiresRepublish">RequiresRepublish indicates the CSI
/// driver wants `NodePublishVolume` being periodically called to
/// reflect any possible change in the mounted volume. This field
/// defaults to false.
///
/// Note: After a successful initial NodePublishVolume call, subsequent
/// calls to NodePublishVolume should only update the contents of the
/// volume. New mount points will not be seen by a running container.
///
/// This is a beta feature and only available when the
/// CSIServiceAccountToken feature is enabled.</param>
/// <param name="storageCapacity">If set to true, storageCapacity
/// indicates that the CSI volume driver wants pod scheduling to
/// consider the storage capacity that the driver deployment will
/// report by creating CSIStorageCapacity objects with capacity
/// information.
///
/// The check can be enabled immediately when deploying a driver. In
/// that case, provisioning new volumes with late binding will pause
/// until the driver deployment has published some suitable
/// CSIStorageCapacity object.
///
/// Alternatively, the driver can be deployed with the field unset or
/// false and it can be flipped later when storage capacity information
/// has been published.
///
/// This field is immutable.
///
/// This is a beta field and only available when the CSIStorageCapacity
/// feature is enabled. The default is false.</param>
/// <param name="tokenRequests">TokenRequests indicates the CSI driver
/// needs pods' service account tokens it is mounting volume for to do
/// necessary authentication. Kubelet will pass the tokens in
/// VolumeContext in the CSI NodePublishVolume calls. The CSI driver
/// should parse and validate the following VolumeContext:
/// "csi.storage.k8s.io/serviceAccount.tokens": {
/// "&lt;audience&gt;": {
/// "token": &lt;token&gt;,
/// "expirationTimestamp": &lt;expiration timestamp in RFC3339&gt;,
/// },
/// ...
/// }
///
/// Note: Audience in each TokenRequest should be different and at most
/// one token is empty string. To receive a new token after expiry,
/// RequiresRepublish can be used to trigger NodePublishVolume
/// periodically.
///
/// This is a beta feature and only available when the
/// CSIServiceAccountToken feature is enabled.</param>
/// <param name="volumeLifecycleModes">VolumeLifecycleModes defines
/// what kind of volumes this CSI volume driver supports. The default
/// if the list is empty is "Persistent", which is the usage defined by
/// the CSI specification and implemented in Kubernetes via the usual
/// PV/PVC mechanism. The other mode is "Ephemeral". In this mode,
/// volumes are defined inline inside the pod spec with CSIVolumeSource
/// and their lifecycle is tied to the lifecycle of that pod. A driver
/// has to be aware of this because it is only going to get a
/// NodePublishVolume call for such a volume. For more information
/// about implementing this mode, see
/// https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html
/// A driver can support one or more of these modes and more modes may
/// be added in the future.
///
/// This field is immutable.</param>
public V1beta1CSIDriverSpec(bool? attachRequired = default(bool?), string fsGroupPolicy = default(string), bool? podInfoOnMount = default(bool?), bool? requiresRepublish = default(bool?), bool? storageCapacity = default(bool?), IList<V1beta1TokenRequest> tokenRequests = default(IList<V1beta1TokenRequest>), IList<string> volumeLifecycleModes = default(IList<string>))
{
AttachRequired = attachRequired;
FsGroupPolicy = fsGroupPolicy;
PodInfoOnMount = podInfoOnMount;
RequiresRepublish = requiresRepublish;
StorageCapacity = storageCapacity;
TokenRequests = tokenRequests;
VolumeLifecycleModes = volumeLifecycleModes;
CustomInit();
}
/// <summary>
/// An initialization method that performs custom operations like setting defaults
/// </summary>
partial void CustomInit();
/// <summary>
/// Gets or sets attachRequired indicates this CSI volume driver
/// requires an attach operation (because it implements the CSI
/// ControllerPublishVolume() method), and that the Kubernetes attach
/// detach controller should call the attach volume interface which
/// checks the volumeattachment status and waits until the volume is
/// attached before proceeding to mounting. The CSI external-attacher
/// coordinates with CSI volume driver and updates the volumeattachment
/// status when the attach operation is complete. If the
/// CSIDriverRegistry feature gate is enabled and the value is
/// specified to false, the attach operation will be skipped. Otherwise
/// the attach operation will be called.
///
/// This field is immutable.
/// </summary>
[JsonProperty(PropertyName = "attachRequired")]
public bool? AttachRequired { get; set; }
/// <summary>
/// Gets or sets defines if the underlying volume supports changing
/// ownership and permission of the volume before being mounted. Refer
/// to the specific FSGroupPolicy values for additional details. This
/// field is alpha-level, and is only honored by servers that enable
/// the CSIVolumeFSGroupPolicy feature gate.
///
/// This field is immutable.
/// </summary>
[JsonProperty(PropertyName = "fsGroupPolicy")]
public string FsGroupPolicy { get; set; }
/// <summary>
/// Gets or sets if set to true, podInfoOnMount indicates this CSI
/// volume driver requires additional pod information (like podName,
/// podUID, etc.) during mount operations. If set to false, pod
/// information will not be passed on mount. Default is false. The CSI
/// driver specifies podInfoOnMount as part of driver deployment. If
/// true, Kubelet will pass pod information as VolumeContext in the CSI
/// NodePublishVolume() calls. The CSI driver is responsible for
/// parsing and validating the information passed in as VolumeContext.
/// The following VolumeConext will be passed if podInfoOnMount is set
/// to true. This list might grow, but the prefix will be used.
/// "csi.storage.k8s.io/pod.name": pod.Name
/// "csi.storage.k8s.io/pod.namespace": pod.Namespace
/// "csi.storage.k8s.io/pod.uid": string(pod.UID)
/// "csi.storage.k8s.io/ephemeral": "true" if the volume is an
/// ephemeral inline volume
/// defined by a CSIVolumeSource, otherwise "false"
///
/// "csi.storage.k8s.io/ephemeral" is a new feature in Kubernetes 1.16.
/// It is only required for drivers which support both the "Persistent"
/// and "Ephemeral" VolumeLifecycleMode. Other drivers can leave pod
/// info disabled and/or ignore this field. As Kubernetes 1.15 doesn't
/// support this field, drivers can only support one mode when deployed
/// on such a cluster and the deployment determines which mode that is,
/// for example via a command line parameter of the driver.
///
/// This field is immutable.
/// </summary>
[JsonProperty(PropertyName = "podInfoOnMount")]
public bool? PodInfoOnMount { get; set; }
/// <summary>
/// Gets or sets requiresRepublish indicates the CSI driver wants
/// `NodePublishVolume` being periodically called to reflect any
/// possible change in the mounted volume. This field defaults to
/// false.
///
/// Note: After a successful initial NodePublishVolume call, subsequent
/// calls to NodePublishVolume should only update the contents of the
/// volume. New mount points will not be seen by a running container.
///
/// This is a beta feature and only available when the
/// CSIServiceAccountToken feature is enabled.
/// </summary>
[JsonProperty(PropertyName = "requiresRepublish")]
public bool? RequiresRepublish { get; set; }
/// <summary>
/// Gets or sets if set to true, storageCapacity indicates that the CSI
/// volume driver wants pod scheduling to consider the storage capacity
/// that the driver deployment will report by creating
/// CSIStorageCapacity objects with capacity information.
///
/// The check can be enabled immediately when deploying a driver. In
/// that case, provisioning new volumes with late binding will pause
/// until the driver deployment has published some suitable
/// CSIStorageCapacity object.
///
/// Alternatively, the driver can be deployed with the field unset or
/// false and it can be flipped later when storage capacity information
/// has been published.
///
/// This field is immutable.
///
/// This is a beta field and only available when the CSIStorageCapacity
/// feature is enabled. The default is false.
/// </summary>
[JsonProperty(PropertyName = "storageCapacity")]
public bool? StorageCapacity { get; set; }
/// <summary>
/// Gets or sets tokenRequests indicates the CSI driver needs pods'
/// service account tokens it is mounting volume for to do necessary
/// authentication. Kubelet will pass the tokens in VolumeContext in
/// the CSI NodePublishVolume calls. The CSI driver should parse and
/// validate the following VolumeContext:
/// "csi.storage.k8s.io/serviceAccount.tokens": {
/// "&amp;lt;audience&amp;gt;": {
/// "token": &amp;lt;token&amp;gt;,
/// "expirationTimestamp": &amp;lt;expiration timestamp in
/// RFC3339&amp;gt;,
/// },
/// ...
/// }
///
/// Note: Audience in each TokenRequest should be different and at most
/// one token is empty string. To receive a new token after expiry,
/// RequiresRepublish can be used to trigger NodePublishVolume
/// periodically.
///
/// This is a beta feature and only available when the
/// CSIServiceAccountToken feature is enabled.
/// </summary>
[JsonProperty(PropertyName = "tokenRequests")]
public IList<V1beta1TokenRequest> TokenRequests { get; set; }
/// <summary>
/// Gets or sets volumeLifecycleModes defines what kind of volumes this
/// CSI volume driver supports. The default if the list is empty is
/// "Persistent", which is the usage defined by the CSI specification
/// and implemented in Kubernetes via the usual PV/PVC mechanism. The
/// other mode is "Ephemeral". In this mode, volumes are defined inline
/// inside the pod spec with CSIVolumeSource and their lifecycle is
/// tied to the lifecycle of that pod. A driver has to be aware of this
/// because it is only going to get a NodePublishVolume call for such a
/// volume. For more information about implementing this mode, see
/// https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html
/// A driver can support one or more of these modes and more modes may
/// be added in the future.
///
/// This field is immutable.
/// </summary>
[JsonProperty(PropertyName = "volumeLifecycleModes")]
public IList<string> VolumeLifecycleModes { get; set; }
}
}