* gen v1.21.0 * update version converter * bump version to 5 * remove support of netstandard2.0 * update test dependency
305 lines
16 KiB
C#
Generated
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": {
|
|
/// "<audience>": {
|
|
/// "token": <token>,
|
|
/// "expirationTimestamp": <expiration timestamp in RFC3339>,
|
|
/// },
|
|
/// ...
|
|
/// }
|
|
///
|
|
/// 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": {
|
|
/// "&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.
|
|
/// </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; }
|
|
|
|
}
|
|
}
|