# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins
import copy
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

__all__ = [
    'SnapshotTagArgs',
    'SnapshotTagArgsDict',
    'VolumeBaselinePerformanceArgs',
    'VolumeBaselinePerformanceArgsDict',
    'VolumeExtraPerformanceArgs',
    'VolumeExtraPerformanceArgsDict',
    'VolumeTagArgs',
    'VolumeTagArgsDict',
    'VolumeTotalPerformanceArgs',
    'VolumeTotalPerformanceArgsDict',
]

MYPY = False

if not MYPY:
    class SnapshotTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        为资源添加的用户标签的标签键。命名规则如下：不能以任何大小写形式的volc:或sys:开头。volc:或sys:开头为系统预留标签键禁止创建。只能包含语言字符、数字、空格和英文符号“_”、“.”、“:”、“/”、“=”、“+”、“-”、“@”。长度限制在1～128个字符之间。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        为资源添加的用户标签的标签值。命名规则如下：只能包含语言字符、数字、空格和英文符号“_”、“.”、“:”、“/”、“=”、“+”、“-”、“@”。允许为空，长度限制在0～256个字符之间。
        """
elif False:
    SnapshotTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SnapshotTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 为资源添加的用户标签的标签键。命名规则如下：不能以任何大小写形式的volc:或sys:开头。volc:或sys:开头为系统预留标签键禁止创建。只能包含语言字符、数字、空格和英文符号“_”、“.”、“:”、“/”、“=”、“+”、“-”、“@”。长度限制在1～128个字符之间。
        :param pulumi.Input[builtins.str] value: 为资源添加的用户标签的标签值。命名规则如下：只能包含语言字符、数字、空格和英文符号“_”、“.”、“:”、“/”、“=”、“+”、“-”、“@”。允许为空，长度限制在0～256个字符之间。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        为资源添加的用户标签的标签键。命名规则如下：不能以任何大小写形式的volc:或sys:开头。volc:或sys:开头为系统预留标签键禁止创建。只能包含语言字符、数字、空格和英文符号“_”、“.”、“:”、“/”、“=”、“+”、“-”、“@”。长度限制在1～128个字符之间。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        为资源添加的用户标签的标签值。命名规则如下：只能包含语言字符、数字、空格和英文符号“_”、“.”、“:”、“/”、“=”、“+”、“-”、“@”。允许为空，长度限制在0～256个字符之间。
        """
        return pulumi.get(self, "value")

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


if not MYPY:
    class VolumeBaselinePerformanceArgsDict(TypedDict):
        iops: NotRequired[pulumi.Input[builtins.float]]
        """
        云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        """
        throughput: NotRequired[pulumi.Input[builtins.float]]
        """
        云盘的总吞吐量，即云盘的基准吞吐量和额外吞吐量之和。
        """
elif False:
    VolumeBaselinePerformanceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class VolumeBaselinePerformanceArgs:
    def __init__(__self__, *,
                 iops: Optional[pulumi.Input[builtins.float]] = None,
                 throughput: Optional[pulumi.Input[builtins.float]] = None):
        """
        :param pulumi.Input[builtins.float] iops: 云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        :param pulumi.Input[builtins.float] throughput: 云盘的总吞吐量，即云盘的基准吞吐量和额外吞吐量之和。
        """
        if iops is not None:
            pulumi.set(__self__, "iops", iops)
        if throughput is not None:
            pulumi.set(__self__, "throughput", throughput)

    @property
    @pulumi.getter
    def iops(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        """
        return pulumi.get(self, "iops")

    @iops.setter
    def iops(self, value: Optional[pulumi.Input[builtins.float]]):
        pulumi.set(self, "iops", value)

    @property
    @pulumi.getter
    def throughput(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        云盘的总吞吐量，即云盘的基准吞吐量和额外吞吐量之和。
        """
        return pulumi.get(self, "throughput")

    @throughput.setter
    def throughput(self, value: Optional[pulumi.Input[builtins.float]]):
        pulumi.set(self, "throughput", value)


if not MYPY:
    class VolumeExtraPerformanceArgsDict(TypedDict):
        extra_performance_type_id: NotRequired[pulumi.Input[builtins.str]]
        """
        额外性能的类型，取值如下：Balance：均衡型额外性能；IOPS：IOPS型额外性能；Throughput：吞吐量型额外性能。
        """
        iops: NotRequired[pulumi.Input[builtins.float]]
        """
        云盘的额外IOPS。
        """
        throughput: NotRequired[pulumi.Input[builtins.float]]
        """
        云盘的额外吞吐量。
        """
elif False:
    VolumeExtraPerformanceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class VolumeExtraPerformanceArgs:
    def __init__(__self__, *,
                 extra_performance_type_id: Optional[pulumi.Input[builtins.str]] = None,
                 iops: Optional[pulumi.Input[builtins.float]] = None,
                 throughput: Optional[pulumi.Input[builtins.float]] = None):
        """
        :param pulumi.Input[builtins.str] extra_performance_type_id: 额外性能的类型，取值如下：Balance：均衡型额外性能；IOPS：IOPS型额外性能；Throughput：吞吐量型额外性能。
        :param pulumi.Input[builtins.float] iops: 云盘的额外IOPS。
        :param pulumi.Input[builtins.float] throughput: 云盘的额外吞吐量。
        """
        if extra_performance_type_id is not None:
            pulumi.set(__self__, "extra_performance_type_id", extra_performance_type_id)
        if iops is not None:
            pulumi.set(__self__, "iops", iops)
        if throughput is not None:
            pulumi.set(__self__, "throughput", throughput)

    @property
    @pulumi.getter(name="extraPerformanceTypeId")
    def extra_performance_type_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        额外性能的类型，取值如下：Balance：均衡型额外性能；IOPS：IOPS型额外性能；Throughput：吞吐量型额外性能。
        """
        return pulumi.get(self, "extra_performance_type_id")

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

    @property
    @pulumi.getter
    def iops(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        云盘的额外IOPS。
        """
        return pulumi.get(self, "iops")

    @iops.setter
    def iops(self, value: Optional[pulumi.Input[builtins.float]]):
        pulumi.set(self, "iops", value)

    @property
    @pulumi.getter
    def throughput(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        云盘的额外吞吐量。
        """
        return pulumi.get(self, "throughput")

    @throughput.setter
    def throughput(self, value: Optional[pulumi.Input[builtins.float]]):
        pulumi.set(self, "throughput", value)


if not MYPY:
    class VolumeTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。
        """
elif False:
    VolumeTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class VolumeTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[builtins.str] value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。
        """
        return pulumi.get(self, "value")

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


if not MYPY:
    class VolumeTotalPerformanceArgsDict(TypedDict):
        iops: NotRequired[pulumi.Input[builtins.float]]
        """
        云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        """
        throughput: NotRequired[pulumi.Input[builtins.float]]
        """
        云盘的总吞吐量，即云盘的基准吞吐量和额外吞吐量之和。
        """
elif False:
    VolumeTotalPerformanceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class VolumeTotalPerformanceArgs:
    def __init__(__self__, *,
                 iops: Optional[pulumi.Input[builtins.float]] = None,
                 throughput: Optional[pulumi.Input[builtins.float]] = None):
        """
        :param pulumi.Input[builtins.float] iops: 云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        :param pulumi.Input[builtins.float] throughput: 云盘的总吞吐量，即云盘的基准吞吐量和额外吞吐量之和。
        """
        if iops is not None:
            pulumi.set(__self__, "iops", iops)
        if throughput is not None:
            pulumi.set(__self__, "throughput", throughput)

    @property
    @pulumi.getter
    def iops(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        """
        return pulumi.get(self, "iops")

    @iops.setter
    def iops(self, value: Optional[pulumi.Input[builtins.float]]):
        pulumi.set(self, "iops", value)

    @property
    @pulumi.getter
    def throughput(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        云盘的总吞吐量，即云盘的基准吞吐量和额外吞吐量之和。
        """
        return pulumi.get(self, "throughput")

    @throughput.setter
    def throughput(self, value: Optional[pulumi.Input[builtins.float]]):
        pulumi.set(self, "throughput", value)


