/**
 * 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 { V1alpha2DevWorkspaceTemplateSpecComponentsItemsContainer } from './v1alpha2DevWorkspaceTemplateSpecComponentsItemsContainer';
import { V1alpha2DevWorkspaceTemplateSpecComponentsItemsCustom } from './v1alpha2DevWorkspaceTemplateSpecComponentsItemsCustom';
import { V1alpha2DevWorkspaceTemplateSpecComponentsItemsImage } from './v1alpha2DevWorkspaceTemplateSpecComponentsItemsImage';
import { V1alpha2DevWorkspaceTemplateSpecComponentsItemsKubernetes } from './v1alpha2DevWorkspaceTemplateSpecComponentsItemsKubernetes';
import { V1alpha2DevWorkspaceTemplateSpecComponentsItemsOpenshift } from './v1alpha2DevWorkspaceTemplateSpecComponentsItemsOpenshift';
import { V1alpha2DevWorkspaceTemplateSpecComponentsItemsPlugin } from './v1alpha2DevWorkspaceTemplateSpecComponentsItemsPlugin';
import { V1alpha2DevWorkspaceTemplateSpecComponentsItemsVolume } from './v1alpha2DevWorkspaceTemplateSpecComponentsItemsVolume';

export class V1alpha2DevWorkspaceTemplateSpecComponents {
    /**
    * Map of implementation-dependant free-form YAML attributes.
    */
    'attributes'?: object;
    'container'?: V1alpha2DevWorkspaceTemplateSpecComponentsItemsContainer;
    'custom'?: V1alpha2DevWorkspaceTemplateSpecComponentsItemsCustom;
    'image'?: V1alpha2DevWorkspaceTemplateSpecComponentsItemsImage;
    'kubernetes'?: V1alpha2DevWorkspaceTemplateSpecComponentsItemsKubernetes;
    /**
    * 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'?: V1alpha2DevWorkspaceTemplateSpecComponentsItemsOpenshift;
    'plugin'?: V1alpha2DevWorkspaceTemplateSpecComponentsItemsPlugin;
    'volume'?: V1alpha2DevWorkspaceTemplateSpecComponentsItemsVolume;

    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": "V1alpha2DevWorkspaceTemplateSpecComponentsItemsContainer"
        },
        {
            "name": "custom",
            "baseName": "custom",
            "type": "V1alpha2DevWorkspaceTemplateSpecComponentsItemsCustom"
        },
        {
            "name": "image",
            "baseName": "image",
            "type": "V1alpha2DevWorkspaceTemplateSpecComponentsItemsImage"
        },
        {
            "name": "kubernetes",
            "baseName": "kubernetes",
            "type": "V1alpha2DevWorkspaceTemplateSpecComponentsItemsKubernetes"
        },
        {
            "name": "name",
            "baseName": "name",
            "type": "string"
        },
        {
            "name": "openshift",
            "baseName": "openshift",
            "type": "V1alpha2DevWorkspaceTemplateSpecComponentsItemsOpenshift"
        },
        {
            "name": "plugin",
            "baseName": "plugin",
            "type": "V1alpha2DevWorkspaceTemplateSpecComponentsItemsPlugin"
        },
        {
            "name": "volume",
            "baseName": "volume",
            "type": "V1alpha2DevWorkspaceTemplateSpecComponentsItemsVolume"
        }    ];

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

