# 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__ = [
    'SnapshotTag',
    'VolumeBaselinePerformance',
    'VolumeExtraPerformance',
    'VolumeTag',
    'VolumeTotalPerformance',
    'GetSnapshotTagResult',
    'GetVolumeBaselinePerformanceResult',
    'GetVolumeExtraPerformanceResult',
    'GetVolumeTagResult',
    'GetVolumeTotalPerformanceResult',
]

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

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


@pulumi.output_type
class VolumeBaselinePerformance(dict):
    def __init__(__self__, *,
                 iops: Optional[builtins.float] = None,
                 throughput: Optional[builtins.float] = None):
        """
        :param builtins.float iops: 云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        :param 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[builtins.float]:
        """
        云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        """
        return pulumi.get(self, "iops")

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


@pulumi.output_type
class VolumeExtraPerformance(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extraPerformanceTypeId":
            suggest = "extra_performance_type_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in VolumeExtraPerformance. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        VolumeExtraPerformance.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        VolumeExtraPerformance.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 extra_performance_type_id: Optional[builtins.str] = None,
                 iops: Optional[builtins.float] = None,
                 throughput: Optional[builtins.float] = None):
        """
        :param builtins.str extra_performance_type_id: 额外性能的类型，取值如下：Balance：均衡型额外性能；IOPS：IOPS型额外性能；Throughput：吞吐量型额外性能。
        :param builtins.float iops: 云盘的额外IOPS。
        :param 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[builtins.str]:
        """
        额外性能的类型，取值如下：Balance：均衡型额外性能；IOPS：IOPS型额外性能；Throughput：吞吐量型额外性能。
        """
        return pulumi.get(self, "extra_performance_type_id")

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

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


@pulumi.output_type
class VolumeTag(dict):
    def __init__(__self__, *,
                 key: Optional[builtins.str] = None,
                 value: Optional[builtins.str] = None):
        """
        :param builtins.str key: 标签键。
        :param 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[builtins.str]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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


@pulumi.output_type
class VolumeTotalPerformance(dict):
    def __init__(__self__, *,
                 iops: Optional[builtins.float] = None,
                 throughput: Optional[builtins.float] = None):
        """
        :param builtins.float iops: 云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        :param 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[builtins.float]:
        """
        云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        """
        return pulumi.get(self, "iops")

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


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

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

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


@pulumi.output_type
class GetVolumeBaselinePerformanceResult(dict):
    def __init__(__self__, *,
                 iops: builtins.float,
                 throughput: builtins.float):
        """
        :param builtins.float iops: 云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        :param builtins.float throughput: 云盘的总吞吐量，即云盘的基准吞吐量和额外吞吐量之和。
        """
        pulumi.set(__self__, "iops", iops)
        pulumi.set(__self__, "throughput", throughput)

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

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


@pulumi.output_type
class GetVolumeExtraPerformanceResult(dict):
    def __init__(__self__, *,
                 extra_performance_type_id: builtins.str,
                 iops: builtins.float,
                 throughput: builtins.float):
        """
        :param builtins.str extra_performance_type_id: 额外性能的类型，取值如下：Balance：均衡型额外性能；IOPS：IOPS型额外性能；Throughput：吞吐量型额外性能。
        :param builtins.float iops: 云盘的额外IOPS。
        :param builtins.float throughput: 云盘的额外吞吐量。
        """
        pulumi.set(__self__, "extra_performance_type_id", extra_performance_type_id)
        pulumi.set(__self__, "iops", iops)
        pulumi.set(__self__, "throughput", throughput)

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

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

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


@pulumi.output_type
class GetVolumeTagResult(dict):
    def __init__(__self__, *,
                 key: builtins.str,
                 value: builtins.str):
        """
        :param builtins.str key: 标签键。
        :param builtins.str value: 标签值。
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

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

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


@pulumi.output_type
class GetVolumeTotalPerformanceResult(dict):
    def __init__(__self__, *,
                 iops: builtins.float,
                 throughput: builtins.float):
        """
        :param builtins.float iops: 云盘的总IOPS，即云盘的基准IOPS和额外IOPS之和。
        :param builtins.float throughput: 云盘的总吞吐量，即云盘的基准吞吐量和额外吞吐量之和。
        """
        pulumi.set(__self__, "iops", iops)
        pulumi.set(__self__, "throughput", throughput)

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

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


