/**
 * Kubernetes
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { V220DevfileParentComponentsItemsContainerEndpoints } from './v220DevfileParentComponentsItemsContainerEndpoints';
import { V220DevfileParentComponentsItemsContainerEnv } from './v220DevfileParentComponentsItemsContainerEnv';
import { V220DevfileParentComponentsItemsContainerVolumeMounts } from './v220DevfileParentComponentsItemsContainerVolumeMounts';

/**
* Allows adding and configuring devworkspace-related containers
*/
export class V220DevfileParentComponentsItemsContainer {
    /**
    * The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.  Defaults to an empty array, meaning use whatever is defined in the image.
    */
    'args'?: Array<string>;
    /**
    * The command to run in the dockerimage component instead of the default one provided in the image.  Defaults to an empty array, meaning use whatever is defined in the image.
    */
    'command'?: Array<string>;
    'cpuLimit'?: string;
    'cpuRequest'?: string;
    /**
    * Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.  Default value is `false`
    */
    'dedicatedPod'?: boolean;
    'endpoints'?: Array<V220DevfileParentComponentsItemsContainerEndpoints>;
    /**
    * Environment variables used in this container.  The following variables are reserved and cannot be overridden via env:   - `$PROJECTS_ROOT`   - `$PROJECT_SOURCE`
    */
    'env'?: Array<V220DevfileParentComponentsItemsContainerEnv>;
    'image'?: string;
    'memoryLimit'?: string;
    'memoryRequest'?: string;
    /**
    * Toggles whether or not the project source code should be mounted in the component.  Defaults to true for all component types except plugins and components that set `dedicatedPod` to true.
    */
    'mountSources'?: boolean;
    /**
    * Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.
    */
    'sourceMapping'?: string;
    /**
    * List of volumes mounts that should be mounted is this container.
    */
    'volumeMounts'?: Array<V220DevfileParentComponentsItemsContainerVolumeMounts>;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "args",
            "baseName": "args",
            "type": "Array<string>"
        },
        {
            "name": "command",
            "baseName": "command",
            "type": "Array<string>"
        },
        {
            "name": "cpuLimit",
            "baseName": "cpuLimit",
            "type": "string"
        },
        {
            "name": "cpuRequest",
            "baseName": "cpuRequest",
            "type": "string"
        },
        {
            "name": "dedicatedPod",
            "baseName": "dedicatedPod",
            "type": "boolean"
        },
        {
            "name": "endpoints",
            "baseName": "endpoints",
            "type": "Array<V220DevfileParentComponentsItemsContainerEndpoints>"
        },
        {
            "name": "env",
            "baseName": "env",
            "type": "Array<V220DevfileParentComponentsItemsContainerEnv>"
        },
        {
            "name": "image",
            "baseName": "image",
            "type": "string"
        },
        {
            "name": "memoryLimit",
            "baseName": "memoryLimit",
            "type": "string"
        },
        {
            "name": "memoryRequest",
            "baseName": "memoryRequest",
            "type": "string"
        },
        {
            "name": "mountSources",
            "baseName": "mountSources",
            "type": "boolean"
        },
        {
            "name": "sourceMapping",
            "baseName": "sourceMapping",
            "type": "string"
        },
        {
            "name": "volumeMounts",
            "baseName": "volumeMounts",
            "type": "Array<V220DevfileParentComponentsItemsContainerVolumeMounts>"
        }    ];

    static getAttributeTypeMap() {
        return V220DevfileParentComponentsItemsContainer.attributeTypeMap;
    }
}

