# coding=utf-8
# *** WARNING: this file was generated by pulumigen. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from ... import _utilities
from ... import meta as _meta

__all__ = [
    'StorageVersionMigrationSpecPatchArgs',
    'StorageVersionMigrationSpecPatchArgsDict',
    'StorageVersionMigrationSpecArgs',
    'StorageVersionMigrationSpecArgsDict',
    'StorageVersionMigrationStatusArgs',
    'StorageVersionMigrationStatusArgsDict',
    'StorageVersionMigrationArgs',
    'StorageVersionMigrationArgsDict',
]

class StorageVersionMigrationSpecPatchArgsDict(TypedDict):
    """
    Spec of the storage version migration.
    """
    resource: NotRequired[pulumi.Input['_meta.v1.GroupResourcePatchArgsDict']]
    """
    The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.
    """

@pulumi.input_type
class StorageVersionMigrationSpecPatchArgs:
    def __init__(__self__, *,
                 resource: Optional[pulumi.Input['_meta.v1.GroupResourcePatchArgs']] = None):
        """
        Spec of the storage version migration.

        :param pulumi.Input['_meta.v1.GroupResourcePatchArgs'] resource: The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.
        """
        if resource is not None:
            pulumi.set(__self__, "resource", resource)

    @_builtins.property
    @pulumi.getter
    def resource(self) -> Optional[pulumi.Input['_meta.v1.GroupResourcePatchArgs']]:
        """
        The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.
        """
        return pulumi.get(self, "resource")

    @resource.setter
    def resource(self, value: Optional[pulumi.Input['_meta.v1.GroupResourcePatchArgs']]):
        pulumi.set(self, "resource", value)


class StorageVersionMigrationSpecArgsDict(TypedDict):
    """
    Spec of the storage version migration.
    """
    resource: pulumi.Input['_meta.v1.GroupResourceArgsDict']
    """
    The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.
    """

@pulumi.input_type
class StorageVersionMigrationSpecArgs:
    def __init__(__self__, *,
                 resource: pulumi.Input['_meta.v1.GroupResourceArgs']):
        """
        Spec of the storage version migration.

        :param pulumi.Input['_meta.v1.GroupResourceArgs'] resource: The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.
        """
        pulumi.set(__self__, "resource", resource)

    @_builtins.property
    @pulumi.getter
    def resource(self) -> pulumi.Input['_meta.v1.GroupResourceArgs']:
        """
        The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.
        """
        return pulumi.get(self, "resource")

    @resource.setter
    def resource(self, value: pulumi.Input['_meta.v1.GroupResourceArgs']):
        pulumi.set(self, "resource", value)


class StorageVersionMigrationStatusArgsDict(TypedDict):
    """
    Status of the storage version migration.
    """
    conditions: NotRequired[pulumi.Input[Sequence[pulumi.Input['_meta.v1.ConditionArgsDict']]]]
    """
    The latest available observations of the migration's current state.
    """
    resource_version: NotRequired[pulumi.Input[_builtins.str]]
    """
    ResourceVersion to compare with the GC cache for performing the migration. This is the current resource version of given group, version and resource when kube-controller-manager first observes this StorageVersionMigration resource.
    """

@pulumi.input_type
class StorageVersionMigrationStatusArgs:
    def __init__(__self__, *,
                 conditions: Optional[pulumi.Input[Sequence[pulumi.Input['_meta.v1.ConditionArgs']]]] = None,
                 resource_version: Optional[pulumi.Input[_builtins.str]] = None):
        """
        Status of the storage version migration.

        :param pulumi.Input[Sequence[pulumi.Input['_meta.v1.ConditionArgs']]] conditions: The latest available observations of the migration's current state.
        :param pulumi.Input[_builtins.str] resource_version: ResourceVersion to compare with the GC cache for performing the migration. This is the current resource version of given group, version and resource when kube-controller-manager first observes this StorageVersionMigration resource.
        """
        if conditions is not None:
            pulumi.set(__self__, "conditions", conditions)
        if resource_version is not None:
            pulumi.set(__self__, "resource_version", resource_version)

    @_builtins.property
    @pulumi.getter
    def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['_meta.v1.ConditionArgs']]]]:
        """
        The latest available observations of the migration's current state.
        """
        return pulumi.get(self, "conditions")

    @conditions.setter
    def conditions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['_meta.v1.ConditionArgs']]]]):
        pulumi.set(self, "conditions", value)

    @_builtins.property
    @pulumi.getter(name="resourceVersion")
    def resource_version(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        ResourceVersion to compare with the GC cache for performing the migration. This is the current resource version of given group, version and resource when kube-controller-manager first observes this StorageVersionMigration resource.
        """
        return pulumi.get(self, "resource_version")

    @resource_version.setter
    def resource_version(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "resource_version", value)


class StorageVersionMigrationArgsDict(TypedDict):
    """
    StorageVersionMigration represents a migration of stored data to the latest storage version.
    """
    api_version: NotRequired[pulumi.Input[_builtins.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: NotRequired[pulumi.Input[_builtins.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: NotRequired[pulumi.Input['_meta.v1.ObjectMetaArgsDict']]
    """
    Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    """
    spec: NotRequired[pulumi.Input['StorageVersionMigrationSpecArgsDict']]
    """
    Specification of the migration.
    """
    status: NotRequired[pulumi.Input['StorageVersionMigrationStatusArgsDict']]
    """
    Status of the migration.
    """

@pulumi.input_type
class StorageVersionMigrationArgs:
    def __init__(__self__, *,
                 api_version: Optional[pulumi.Input[_builtins.str]] = None,
                 kind: Optional[pulumi.Input[_builtins.str]] = None,
                 metadata: Optional[pulumi.Input['_meta.v1.ObjectMetaArgs']] = None,
                 spec: Optional[pulumi.Input['StorageVersionMigrationSpecArgs']] = None,
                 status: Optional[pulumi.Input['StorageVersionMigrationStatusArgs']] = None):
        """
        StorageVersionMigration represents a migration of stored data to the latest storage version.

        :param pulumi.Input[_builtins.str] api_version: 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
        :param pulumi.Input[_builtins.str] kind: 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
        :param pulumi.Input['_meta.v1.ObjectMetaArgs'] metadata: Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
        :param pulumi.Input['StorageVersionMigrationSpecArgs'] spec: Specification of the migration.
        :param pulumi.Input['StorageVersionMigrationStatusArgs'] status: Status of the migration.
        """
        if api_version is not None:
            pulumi.set(__self__, "api_version", 'storagemigration.k8s.io/v1beta1')
        if kind is not None:
            pulumi.set(__self__, "kind", 'StorageVersionMigration')
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)
        if status is not None:
            pulumi.set(__self__, "status", status)

    @_builtins.property
    @pulumi.getter(name="apiVersion")
    def api_version(self) -> Optional[pulumi.Input[_builtins.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
        """
        return pulumi.get(self, "api_version")

    @api_version.setter
    def api_version(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "api_version", value)

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[pulumi.Input[_builtins.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
        """
        return pulumi.get(self, "kind")

    @kind.setter
    def kind(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "kind", value)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional[pulumi.Input['_meta.v1.ObjectMetaArgs']]:
        """
        Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
        """
        return pulumi.get(self, "metadata")

    @metadata.setter
    def metadata(self, value: Optional[pulumi.Input['_meta.v1.ObjectMetaArgs']]):
        pulumi.set(self, "metadata", value)

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional[pulumi.Input['StorageVersionMigrationSpecArgs']]:
        """
        Specification of the migration.
        """
        return pulumi.get(self, "spec")

    @spec.setter
    def spec(self, value: Optional[pulumi.Input['StorageVersionMigrationSpecArgs']]):
        pulumi.set(self, "spec", value)

    @_builtins.property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input['StorageVersionMigrationStatusArgs']]:
        """
        Status of the migration.
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: Optional[pulumi.Input['StorageVersionMigrationStatusArgs']]):
        pulumi.set(self, "status", value)


