# autogenerated module
from typing import List, Optional, TYPE_CHECKING

from ._schema import dataclass, field, DictMixin

if TYPE_CHECKING:   # Fix for pycharm autocompletion https://youtrack.jetbrains.com/issue/PY-54560
    from dataclasses import dataclass, field

from . import meta_v1
from . import core_v1


@dataclass
class PodPreset(DictMixin):
    """PodPreset is a policy resource that defines additional runtime requirements
      for a Pod.

      **parameters**

      * **apiVersion** ``Optional[str]`` - APIVersion defines the versioned schema of this representation of an object.
        Servers should convert recognized schemas to the latest internal value, and
        may reject unrecognized values. More info:
        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
      * **kind** ``Optional[str]`` - Kind is a string value representing the REST resource this object represents.
        Servers may infer this from the endpoint the client submits requests to.
        Cannot be updated. In CamelCase. More info:
        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
      * **metadata** ``Optional[meta_v1.ObjectMeta]`` - 
      * **spec** ``Optional[PodPresetSpec]`` - 
    """
    apiVersion: 'Optional[str]' = None
    kind: 'Optional[str]' = None
    metadata: 'Optional[meta_v1.ObjectMeta]' = None
    spec: 'Optional[PodPresetSpec]' = None


@dataclass
class PodPresetList(DictMixin):
    """PodPresetList is a list of PodPreset objects.

      **parameters**

      * **items** ``List[PodPreset]`` - Items is a list of schema objects.
      * **apiVersion** ``Optional[str]`` - APIVersion defines the versioned schema of this representation of an object.
        Servers should convert recognized schemas to the latest internal value, and
        may reject unrecognized values. More info:
        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
      * **kind** ``Optional[str]`` - Kind is a string value representing the REST resource this object represents.
        Servers may infer this from the endpoint the client submits requests to.
        Cannot be updated. In CamelCase. More info:
        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
      * **metadata** ``Optional[meta_v1.ListMeta]`` - Standard list metadata. More info:
        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    """
    items: 'List[PodPreset]'
    apiVersion: 'Optional[str]' = None
    kind: 'Optional[str]' = None
    metadata: 'Optional[meta_v1.ListMeta]' = None


@dataclass
class PodPresetSpec(DictMixin):
    """PodPresetSpec is a description of a pod preset.

      **parameters**

      * **env** ``Optional[List[core_v1.EnvVar]]`` - Env defines the collection of EnvVar to inject into containers.
      * **envFrom** ``Optional[List[core_v1.EnvFromSource]]`` - EnvFrom defines the collection of EnvFromSource to inject into containers.
      * **selector** ``Optional[meta_v1.LabelSelector]`` - Selector is a label query over a set of resources, in this case pods.
        Required.
      * **volumeMounts** ``Optional[List[core_v1.VolumeMount]]`` - VolumeMounts defines the collection of VolumeMount to inject into containers.
      * **volumes** ``Optional[List[core_v1.Volume]]`` - Volumes defines the collection of Volume to inject into the pod.
    """
    env: 'Optional[List[core_v1.EnvVar]]' = None
    envFrom: 'Optional[List[core_v1.EnvFromSource]]' = None
    selector: 'Optional[meta_v1.LabelSelector]' = None
    volumeMounts: 'Optional[List[core_v1.VolumeMount]]' = None
    volumes: 'Optional[List[core_v1.Volume]]' = None


