/**
 * 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 { V1alpha2DevWorkspaceSpecTemplateComponentsItemsContainer } from './v1alpha2DevWorkspaceSpecTemplateComponentsItemsContainer';
import { V1alpha2DevWorkspaceSpecTemplateComponentsItemsCustom } from './v1alpha2DevWorkspaceSpecTemplateComponentsItemsCustom';
import { V1alpha2DevWorkspaceSpecTemplateComponentsItemsImage } from './v1alpha2DevWorkspaceSpecTemplateComponentsItemsImage';
import { V1alpha2DevWorkspaceSpecTemplateComponentsItemsKubernetes } from './v1alpha2DevWorkspaceSpecTemplateComponentsItemsKubernetes';
import { V1alpha2DevWorkspaceSpecTemplateComponentsItemsOpenshift } from './v1alpha2DevWorkspaceSpecTemplateComponentsItemsOpenshift';
import { V1alpha2DevWorkspaceSpecTemplateComponentsItemsPlugin } from './v1alpha2DevWorkspaceSpecTemplateComponentsItemsPlugin';
import { V1alpha2DevWorkspaceSpecTemplateComponentsItemsVolume } from './v1alpha2DevWorkspaceSpecTemplateComponentsItemsVolume';

export class V1alpha2DevWorkspaceSpecTemplateComponents {
    /**
    * Map of implementation-dependant free-form YAML attributes.
    */
    'attributes'?: object;
    'container'?: V1alpha2DevWorkspaceSpecTemplateComponentsItemsContainer;
    'custom'?: V1alpha2DevWorkspaceSpecTemplateComponentsItemsCustom;
    'image'?: V1alpha2DevWorkspaceSpecTemplateComponentsItemsImage;
    'kubernetes'?: V1alpha2DevWorkspaceSpecTemplateComponentsItemsKubernetes;
    /**
    * Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.
    */
    'name': string;
    'openshift'?: V1alpha2DevWorkspaceSpecTemplateComponentsItemsOpenshift;
    'plugin'?: V1alpha2DevWorkspaceSpecTemplateComponentsItemsPlugin;
    'volume'?: V1alpha2DevWorkspaceSpecTemplateComponentsItemsVolume;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "attributes",
            "baseName": "attributes",
            "type": "object"
        },
        {
            "name": "container",
            "baseName": "container",
            "type": "V1alpha2DevWorkspaceSpecTemplateComponentsItemsContainer"
        },
        {
            "name": "custom",
            "baseName": "custom",
            "type": "V1alpha2DevWorkspaceSpecTemplateComponentsItemsCustom"
        },
        {
            "name": "image",
            "baseName": "image",
            "type": "V1alpha2DevWorkspaceSpecTemplateComponentsItemsImage"
        },
        {
            "name": "kubernetes",
            "baseName": "kubernetes",
            "type": "V1alpha2DevWorkspaceSpecTemplateComponentsItemsKubernetes"
        },
        {
            "name": "name",
            "baseName": "name",
            "type": "string"
        },
        {
            "name": "openshift",
            "baseName": "openshift",
            "type": "V1alpha2DevWorkspaceSpecTemplateComponentsItemsOpenshift"
        },
        {
            "name": "plugin",
            "baseName": "plugin",
            "type": "V1alpha2DevWorkspaceSpecTemplateComponentsItemsPlugin"
        },
        {
            "name": "volume",
            "baseName": "volume",
            "type": "V1alpha2DevWorkspaceSpecTemplateComponentsItemsVolume"
        }    ];

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

