/**
 * Argo Workflows API
 * Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. For more information, please see https://argoproj.github.io/argo-workflows/
 *
 * OpenAPI spec version: VERSION
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { IoK8sApiCoreV1AWSElasticBlockStoreVolumeSource } from '../models/IoK8sApiCoreV1AWSElasticBlockStoreVolumeSource';
import { IoK8sApiCoreV1AzureDiskVolumeSource } from '../models/IoK8sApiCoreV1AzureDiskVolumeSource';
import { IoK8sApiCoreV1AzureFileVolumeSource } from '../models/IoK8sApiCoreV1AzureFileVolumeSource';
import { IoK8sApiCoreV1CSIVolumeSource } from '../models/IoK8sApiCoreV1CSIVolumeSource';
import { IoK8sApiCoreV1CephFSVolumeSource } from '../models/IoK8sApiCoreV1CephFSVolumeSource';
import { IoK8sApiCoreV1CinderVolumeSource } from '../models/IoK8sApiCoreV1CinderVolumeSource';
import { IoK8sApiCoreV1ConfigMapVolumeSource } from '../models/IoK8sApiCoreV1ConfigMapVolumeSource';
import { IoK8sApiCoreV1DownwardAPIVolumeSource } from '../models/IoK8sApiCoreV1DownwardAPIVolumeSource';
import { IoK8sApiCoreV1EmptyDirVolumeSource } from '../models/IoK8sApiCoreV1EmptyDirVolumeSource';
import { IoK8sApiCoreV1EphemeralVolumeSource } from '../models/IoK8sApiCoreV1EphemeralVolumeSource';
import { IoK8sApiCoreV1FCVolumeSource } from '../models/IoK8sApiCoreV1FCVolumeSource';
import { IoK8sApiCoreV1FlexVolumeSource } from '../models/IoK8sApiCoreV1FlexVolumeSource';
import { IoK8sApiCoreV1FlockerVolumeSource } from '../models/IoK8sApiCoreV1FlockerVolumeSource';
import { IoK8sApiCoreV1GCEPersistentDiskVolumeSource } from '../models/IoK8sApiCoreV1GCEPersistentDiskVolumeSource';
import { IoK8sApiCoreV1GitRepoVolumeSource } from '../models/IoK8sApiCoreV1GitRepoVolumeSource';
import { IoK8sApiCoreV1GlusterfsVolumeSource } from '../models/IoK8sApiCoreV1GlusterfsVolumeSource';
import { IoK8sApiCoreV1HostPathVolumeSource } from '../models/IoK8sApiCoreV1HostPathVolumeSource';
import { IoK8sApiCoreV1ISCSIVolumeSource } from '../models/IoK8sApiCoreV1ISCSIVolumeSource';
import { IoK8sApiCoreV1NFSVolumeSource } from '../models/IoK8sApiCoreV1NFSVolumeSource';
import { IoK8sApiCoreV1PersistentVolumeClaimVolumeSource } from '../models/IoK8sApiCoreV1PersistentVolumeClaimVolumeSource';
import { IoK8sApiCoreV1PhotonPersistentDiskVolumeSource } from '../models/IoK8sApiCoreV1PhotonPersistentDiskVolumeSource';
import { IoK8sApiCoreV1PortworxVolumeSource } from '../models/IoK8sApiCoreV1PortworxVolumeSource';
import { IoK8sApiCoreV1ProjectedVolumeSource } from '../models/IoK8sApiCoreV1ProjectedVolumeSource';
import { IoK8sApiCoreV1QuobyteVolumeSource } from '../models/IoK8sApiCoreV1QuobyteVolumeSource';
import { IoK8sApiCoreV1RBDVolumeSource } from '../models/IoK8sApiCoreV1RBDVolumeSource';
import { IoK8sApiCoreV1ScaleIOVolumeSource } from '../models/IoK8sApiCoreV1ScaleIOVolumeSource';
import { IoK8sApiCoreV1SecretVolumeSource } from '../models/IoK8sApiCoreV1SecretVolumeSource';
import { IoK8sApiCoreV1StorageOSVolumeSource } from '../models/IoK8sApiCoreV1StorageOSVolumeSource';
import { IoK8sApiCoreV1VsphereVirtualDiskVolumeSource } from '../models/IoK8sApiCoreV1VsphereVirtualDiskVolumeSource';
import { HttpFile } from '../http/http';

/**
* Volume represents a named volume in a pod that may be accessed by any container in the pod.
*/
export class IoK8sApiCoreV1Volume {
    'awsElasticBlockStore'?: IoK8sApiCoreV1AWSElasticBlockStoreVolumeSource;
    'azureDisk'?: IoK8sApiCoreV1AzureDiskVolumeSource;
    'azureFile'?: IoK8sApiCoreV1AzureFileVolumeSource;
    'cephfs'?: IoK8sApiCoreV1CephFSVolumeSource;
    'cinder'?: IoK8sApiCoreV1CinderVolumeSource;
    'configMap'?: IoK8sApiCoreV1ConfigMapVolumeSource;
    'csi'?: IoK8sApiCoreV1CSIVolumeSource;
    'downwardAPI'?: IoK8sApiCoreV1DownwardAPIVolumeSource;
    'emptyDir'?: IoK8sApiCoreV1EmptyDirVolumeSource;
    'ephemeral'?: IoK8sApiCoreV1EphemeralVolumeSource;
    'fc'?: IoK8sApiCoreV1FCVolumeSource;
    'flexVolume'?: IoK8sApiCoreV1FlexVolumeSource;
    'flocker'?: IoK8sApiCoreV1FlockerVolumeSource;
    'gcePersistentDisk'?: IoK8sApiCoreV1GCEPersistentDiskVolumeSource;
    'gitRepo'?: IoK8sApiCoreV1GitRepoVolumeSource;
    'glusterfs'?: IoK8sApiCoreV1GlusterfsVolumeSource;
    'hostPath'?: IoK8sApiCoreV1HostPathVolumeSource;
    'iscsi'?: IoK8sApiCoreV1ISCSIVolumeSource;
    /**
    * Volume\'s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
    */
    'name': string;
    'nfs'?: IoK8sApiCoreV1NFSVolumeSource;
    'persistentVolumeClaim'?: IoK8sApiCoreV1PersistentVolumeClaimVolumeSource;
    'photonPersistentDisk'?: IoK8sApiCoreV1PhotonPersistentDiskVolumeSource;
    'portworxVolume'?: IoK8sApiCoreV1PortworxVolumeSource;
    'projected'?: IoK8sApiCoreV1ProjectedVolumeSource;
    'quobyte'?: IoK8sApiCoreV1QuobyteVolumeSource;
    'rbd'?: IoK8sApiCoreV1RBDVolumeSource;
    'scaleIO'?: IoK8sApiCoreV1ScaleIOVolumeSource;
    'secret'?: IoK8sApiCoreV1SecretVolumeSource;
    'storageos'?: IoK8sApiCoreV1StorageOSVolumeSource;
    'vsphereVolume'?: IoK8sApiCoreV1VsphereVirtualDiskVolumeSource;

    static readonly discriminator: string | undefined = undefined;

    static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [
        {
            "name": "awsElasticBlockStore",
            "baseName": "awsElasticBlockStore",
            "type": "IoK8sApiCoreV1AWSElasticBlockStoreVolumeSource",
            "format": ""
        },
        {
            "name": "azureDisk",
            "baseName": "azureDisk",
            "type": "IoK8sApiCoreV1AzureDiskVolumeSource",
            "format": ""
        },
        {
            "name": "azureFile",
            "baseName": "azureFile",
            "type": "IoK8sApiCoreV1AzureFileVolumeSource",
            "format": ""
        },
        {
            "name": "cephfs",
            "baseName": "cephfs",
            "type": "IoK8sApiCoreV1CephFSVolumeSource",
            "format": ""
        },
        {
            "name": "cinder",
            "baseName": "cinder",
            "type": "IoK8sApiCoreV1CinderVolumeSource",
            "format": ""
        },
        {
            "name": "configMap",
            "baseName": "configMap",
            "type": "IoK8sApiCoreV1ConfigMapVolumeSource",
            "format": ""
        },
        {
            "name": "csi",
            "baseName": "csi",
            "type": "IoK8sApiCoreV1CSIVolumeSource",
            "format": ""
        },
        {
            "name": "downwardAPI",
            "baseName": "downwardAPI",
            "type": "IoK8sApiCoreV1DownwardAPIVolumeSource",
            "format": ""
        },
        {
            "name": "emptyDir",
            "baseName": "emptyDir",
            "type": "IoK8sApiCoreV1EmptyDirVolumeSource",
            "format": ""
        },
        {
            "name": "ephemeral",
            "baseName": "ephemeral",
            "type": "IoK8sApiCoreV1EphemeralVolumeSource",
            "format": ""
        },
        {
            "name": "fc",
            "baseName": "fc",
            "type": "IoK8sApiCoreV1FCVolumeSource",
            "format": ""
        },
        {
            "name": "flexVolume",
            "baseName": "flexVolume",
            "type": "IoK8sApiCoreV1FlexVolumeSource",
            "format": ""
        },
        {
            "name": "flocker",
            "baseName": "flocker",
            "type": "IoK8sApiCoreV1FlockerVolumeSource",
            "format": ""
        },
        {
            "name": "gcePersistentDisk",
            "baseName": "gcePersistentDisk",
            "type": "IoK8sApiCoreV1GCEPersistentDiskVolumeSource",
            "format": ""
        },
        {
            "name": "gitRepo",
            "baseName": "gitRepo",
            "type": "IoK8sApiCoreV1GitRepoVolumeSource",
            "format": ""
        },
        {
            "name": "glusterfs",
            "baseName": "glusterfs",
            "type": "IoK8sApiCoreV1GlusterfsVolumeSource",
            "format": ""
        },
        {
            "name": "hostPath",
            "baseName": "hostPath",
            "type": "IoK8sApiCoreV1HostPathVolumeSource",
            "format": ""
        },
        {
            "name": "iscsi",
            "baseName": "iscsi",
            "type": "IoK8sApiCoreV1ISCSIVolumeSource",
            "format": ""
        },
        {
            "name": "name",
            "baseName": "name",
            "type": "string",
            "format": ""
        },
        {
            "name": "nfs",
            "baseName": "nfs",
            "type": "IoK8sApiCoreV1NFSVolumeSource",
            "format": ""
        },
        {
            "name": "persistentVolumeClaim",
            "baseName": "persistentVolumeClaim",
            "type": "IoK8sApiCoreV1PersistentVolumeClaimVolumeSource",
            "format": ""
        },
        {
            "name": "photonPersistentDisk",
            "baseName": "photonPersistentDisk",
            "type": "IoK8sApiCoreV1PhotonPersistentDiskVolumeSource",
            "format": ""
        },
        {
            "name": "portworxVolume",
            "baseName": "portworxVolume",
            "type": "IoK8sApiCoreV1PortworxVolumeSource",
            "format": ""
        },
        {
            "name": "projected",
            "baseName": "projected",
            "type": "IoK8sApiCoreV1ProjectedVolumeSource",
            "format": ""
        },
        {
            "name": "quobyte",
            "baseName": "quobyte",
            "type": "IoK8sApiCoreV1QuobyteVolumeSource",
            "format": ""
        },
        {
            "name": "rbd",
            "baseName": "rbd",
            "type": "IoK8sApiCoreV1RBDVolumeSource",
            "format": ""
        },
        {
            "name": "scaleIO",
            "baseName": "scaleIO",
            "type": "IoK8sApiCoreV1ScaleIOVolumeSource",
            "format": ""
        },
        {
            "name": "secret",
            "baseName": "secret",
            "type": "IoK8sApiCoreV1SecretVolumeSource",
            "format": ""
        },
        {
            "name": "storageos",
            "baseName": "storageos",
            "type": "IoK8sApiCoreV1StorageOSVolumeSource",
            "format": ""
        },
        {
            "name": "vsphereVolume",
            "baseName": "vsphereVolume",
            "type": "IoK8sApiCoreV1VsphereVirtualDiskVolumeSource",
            "format": ""
        }    ];

    static getAttributeTypeMap() {
        return IoK8sApiCoreV1Volume.attributeTypeMap;
    }

    public constructor() {
    }
}

