/// <summary>
 /// Initializes a new instance of the <see cref="V1PersistentVolumeSpec" /> class.
 /// </summary>
 /// <param name="AccessModes">AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes.</param>
 /// <param name="AwsElasticBlockStore">AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet&#39;s host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore.</param>
 /// <param name="AzureDisk">AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod..</param>
 /// <param name="AzureFile">AzureFile represents an Azure File Service mount on the host and bind mount to the pod..</param>
 /// <param name="Capacity">A description of the persistent volume&#39;s resources and capacity. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity.</param>
 /// <param name="Cephfs">CephFS represents a Ceph FS mount on the host that shares a pod&#39;s lifetime.</param>
 /// <param name="Cinder">Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md.</param>
 /// <param name="ClaimRef">ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#binding.</param>
 /// <param name="Fc">FC represents a Fibre Channel resource that is attached to a kubelet&#39;s host machine and then exposed to the pod..</param>
 /// <param name="FlexVolume">FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future..</param>
 /// <param name="Flocker">Flocker represents a Flocker volume attached to a kubelet&#39;s host machine and exposed to the pod for its usage. This depends on the Flocker control service being running.</param>
 /// <param name="GcePersistentDisk">GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet&#39;s host machine and then exposed to the pod. Provisioned by an admin. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk.</param>
 /// <param name="Glusterfs">Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md.</param>
 /// <param name="HostPath">HostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath.</param>
 /// <param name="Iscsi">ISCSI represents an ISCSI Disk resource that is attached to a kubelet&#39;s host machine and then exposed to the pod. Provisioned by an admin..</param>
 /// <param name="Nfs">NFS represents an NFS mount on the host. Provisioned by an admin. More info: http://kubernetes.io/docs/user-guide/volumes#nfs.</param>
 /// <param name="PersistentVolumeReclaimPolicy">What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#recycling-policy.</param>
 /// <param name="PhotonPersistentDisk">PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.</param>
 /// <param name="Quobyte">Quobyte represents a Quobyte mount on the host that shares a pod&#39;s lifetime.</param>
 /// <param name="Rbd">RBD represents a Rados Block Device mount on the host that shares a pod&#39;s lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md.</param>
 /// <param name="VsphereVolume">VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.</param>
 public V1PersistentVolumeSpec(List <string> AccessModes = default(List <string>), V1AWSElasticBlockStoreVolumeSource AwsElasticBlockStore = default(V1AWSElasticBlockStoreVolumeSource), V1AzureDiskVolumeSource AzureDisk = default(V1AzureDiskVolumeSource), V1AzureFileVolumeSource AzureFile = default(V1AzureFileVolumeSource), Dictionary <string, ResourceQuantity> Capacity = default(Dictionary <string, ResourceQuantity>), V1CephFSVolumeSource Cephfs = default(V1CephFSVolumeSource), V1CinderVolumeSource Cinder = default(V1CinderVolumeSource), V1ObjectReference ClaimRef = default(V1ObjectReference), V1FCVolumeSource Fc = default(V1FCVolumeSource), V1FlexVolumeSource FlexVolume = default(V1FlexVolumeSource), V1FlockerVolumeSource Flocker = default(V1FlockerVolumeSource), V1GCEPersistentDiskVolumeSource GcePersistentDisk = default(V1GCEPersistentDiskVolumeSource), V1GlusterfsVolumeSource Glusterfs = default(V1GlusterfsVolumeSource), V1HostPathVolumeSource HostPath = default(V1HostPathVolumeSource), V1ISCSIVolumeSource Iscsi = default(V1ISCSIVolumeSource), V1NFSVolumeSource Nfs = default(V1NFSVolumeSource), string PersistentVolumeReclaimPolicy = default(string), V1PhotonPersistentDiskVolumeSource PhotonPersistentDisk = default(V1PhotonPersistentDiskVolumeSource), V1QuobyteVolumeSource Quobyte = default(V1QuobyteVolumeSource), V1RBDVolumeSource Rbd = default(V1RBDVolumeSource), V1VsphereVirtualDiskVolumeSource VsphereVolume = default(V1VsphereVirtualDiskVolumeSource))
 {
     this.AccessModes          = AccessModes;
     this.AwsElasticBlockStore = AwsElasticBlockStore;
     this.AzureDisk            = AzureDisk;
     this.AzureFile            = AzureFile;
     this.Capacity             = Capacity;
     this.Cephfs                        = Cephfs;
     this.Cinder                        = Cinder;
     this.ClaimRef                      = ClaimRef;
     this.Fc                            = Fc;
     this.FlexVolume                    = FlexVolume;
     this.Flocker                       = Flocker;
     this.GcePersistentDisk             = GcePersistentDisk;
     this.Glusterfs                     = Glusterfs;
     this.HostPath                      = HostPath;
     this.Iscsi                         = Iscsi;
     this.Nfs                           = Nfs;
     this.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy;
     this.PhotonPersistentDisk          = PhotonPersistentDisk;
     this.Quobyte                       = Quobyte;
     this.Rbd                           = Rbd;
     this.VsphereVolume                 = VsphereVolume;
 }