# 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
from . import outputs
from ._inputs import *

__all__ = ['VolumeArgs', 'Volume']

@pulumi.input_type
class VolumeArgs:
    def __init__(__self__, *,
                 size: pulumi.Input[builtins.float],
                 volume_name: pulumi.Input[builtins.str],
                 volume_type: pulumi.Input[builtins.str],
                 zone_id: pulumi.Input[builtins.str],
                 auto_snapshot_policy_id: Optional[pulumi.Input[builtins.str]] = None,
                 delete_with_instance: Optional[pulumi.Input[builtins.bool]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 extra_performance: Optional[pulumi.Input['VolumeExtraPerformanceArgs']] = None,
                 instance_id: Optional[pulumi.Input[builtins.str]] = None,
                 kind: Optional[pulumi.Input[builtins.str]] = None,
                 pay_type: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 source_snapshot_id: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['VolumeTagArgs']]]] = None):
        """
        The set of arguments for constructing a Volume resource.
        :param pulumi.Input[builtins.float] size: Size，数据盘容量大小，单位为GiB。不同类型的数据盘容量范围如下：ESSD*PL0：10~65536 GiB；ESSD*FlexPL：10~65536 GiB；TSSD_TL0：40~65536 GiB
        :param pulumi.Input[builtins.str] volume_name: 云盘显示名称。命名规则如下：首字符仅支持中文、字母或下划线（*）。可包含中文、字母、数字、下划线（*）或中划线（-）。长度限制在1~128字符之间。
        :param pulumi.Input[builtins.str] volume_type: 云盘类型，取值说明如下：ESSD*PL0：极速型SSD云盘，PL0规格。ESSD*FlexPL: 极速型SSD云盘，FlexPL规格。TSSD_TL0: 吞吐型SSD云盘。
        :param pulumi.Input[builtins.str] zone_id: 可用区ID。
        :param pulumi.Input[builtins.str] auto_snapshot_policy_id: 自动快照策略ID。
        :param pulumi.Input[builtins.bool] delete_with_instance: 释放实例时，该云盘是否随实例一起释放，取值说明如下：true：云盘随实例一起释放。false：云盘不随实例一起释放。
        :param pulumi.Input[builtins.str] description: 云盘的描述信息，默认为空，长度限制在1 ~ 255字符之间。
        :param pulumi.Input['VolumeExtraPerformanceArgs'] extra_performance: 额外性能。
        :param pulumi.Input[builtins.str] instance_id: 创建云盘的同时挂载的ECS实例ID。
        :param pulumi.Input[builtins.str] kind: 云盘属性，data表示数据盘。默认值为data。说明： 仅支持创建数据盘。
        :param pulumi.Input[builtins.str] pay_type: 付费类型，说明如下： Pre：预付费（包年包月） Post：后付费（按量计费）。
        :param pulumi.Input[builtins.str] project_name: 云盘所要加入的Project（项目）名称。
        :param pulumi.Input[builtins.str] source_snapshot_id: 源快照。
        """
        pulumi.set(__self__, "size", size)
        pulumi.set(__self__, "volume_name", volume_name)
        pulumi.set(__self__, "volume_type", volume_type)
        pulumi.set(__self__, "zone_id", zone_id)
        if auto_snapshot_policy_id is not None:
            pulumi.set(__self__, "auto_snapshot_policy_id", auto_snapshot_policy_id)
        if delete_with_instance is not None:
            pulumi.set(__self__, "delete_with_instance", delete_with_instance)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if extra_performance is not None:
            pulumi.set(__self__, "extra_performance", extra_performance)
        if instance_id is not None:
            pulumi.set(__self__, "instance_id", instance_id)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if pay_type is not None:
            pulumi.set(__self__, "pay_type", pay_type)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if source_snapshot_id is not None:
            pulumi.set(__self__, "source_snapshot_id", source_snapshot_id)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter
    def size(self) -> pulumi.Input[builtins.float]:
        """
        Size，数据盘容量大小，单位为GiB。不同类型的数据盘容量范围如下：ESSD*PL0：10~65536 GiB；ESSD*FlexPL：10~65536 GiB；TSSD_TL0：40~65536 GiB
        """
        return pulumi.get(self, "size")

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

    @property
    @pulumi.getter(name="volumeName")
    def volume_name(self) -> pulumi.Input[builtins.str]:
        """
        云盘显示名称。命名规则如下：首字符仅支持中文、字母或下划线（*）。可包含中文、字母、数字、下划线（*）或中划线（-）。长度限制在1~128字符之间。
        """
        return pulumi.get(self, "volume_name")

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

    @property
    @pulumi.getter(name="volumeType")
    def volume_type(self) -> pulumi.Input[builtins.str]:
        """
        云盘类型，取值说明如下：ESSD*PL0：极速型SSD云盘，PL0规格。ESSD*FlexPL: 极速型SSD云盘，FlexPL规格。TSSD_TL0: 吞吐型SSD云盘。
        """
        return pulumi.get(self, "volume_type")

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

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> pulumi.Input[builtins.str]:
        """
        可用区ID。
        """
        return pulumi.get(self, "zone_id")

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

    @property
    @pulumi.getter(name="autoSnapshotPolicyId")
    def auto_snapshot_policy_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        自动快照策略ID。
        """
        return pulumi.get(self, "auto_snapshot_policy_id")

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

    @property
    @pulumi.getter(name="deleteWithInstance")
    def delete_with_instance(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        释放实例时，该云盘是否随实例一起释放，取值说明如下：true：云盘随实例一起释放。false：云盘不随实例一起释放。
        """
        return pulumi.get(self, "delete_with_instance")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘的描述信息，默认为空，长度限制在1 ~ 255字符之间。
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter(name="extraPerformance")
    def extra_performance(self) -> Optional[pulumi.Input['VolumeExtraPerformanceArgs']]:
        """
        额外性能。
        """
        return pulumi.get(self, "extra_performance")

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

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        创建云盘的同时挂载的ECS实例ID。
        """
        return pulumi.get(self, "instance_id")

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

    @property
    @pulumi.getter
    def kind(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘属性，data表示数据盘。默认值为data。说明： 仅支持创建数据盘。
        """
        return pulumi.get(self, "kind")

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

    @property
    @pulumi.getter(name="payType")
    def pay_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        付费类型，说明如下： Pre：预付费（包年包月） Post：后付费（按量计费）。
        """
        return pulumi.get(self, "pay_type")

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

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘所要加入的Project（项目）名称。
        """
        return pulumi.get(self, "project_name")

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

    @property
    @pulumi.getter(name="sourceSnapshotId")
    def source_snapshot_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        源快照。
        """
        return pulumi.get(self, "source_snapshot_id")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VolumeTagArgs']]]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VolumeTagArgs']]]]):
        pulumi.set(self, "tags", value)


@pulumi.input_type
class _VolumeState:
    def __init__(__self__, *,
                 auto_snapshot_policy_id: Optional[pulumi.Input[builtins.str]] = None,
                 auto_snapshot_policy_name: Optional[pulumi.Input[builtins.str]] = None,
                 baseline_performance: Optional[pulumi.Input['VolumeBaselinePerformanceArgs']] = None,
                 created_at: Optional[pulumi.Input[builtins.str]] = None,
                 delete_with_instance: Optional[pulumi.Input[builtins.bool]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 device_name: Optional[pulumi.Input[builtins.str]] = None,
                 error_detail: Optional[pulumi.Input[builtins.str]] = None,
                 expired_time: Optional[pulumi.Input[builtins.str]] = None,
                 extra_performance: Optional[pulumi.Input['VolumeExtraPerformanceArgs']] = None,
                 image_id: Optional[pulumi.Input[builtins.str]] = None,
                 instance_id: Optional[pulumi.Input[builtins.str]] = None,
                 kind: Optional[pulumi.Input[builtins.str]] = None,
                 overdue_reclaim_time: Optional[pulumi.Input[builtins.str]] = None,
                 overdue_time: Optional[pulumi.Input[builtins.str]] = None,
                 pay_type: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 renew_type: Optional[pulumi.Input[builtins.float]] = None,
                 size: Optional[pulumi.Input[builtins.float]] = None,
                 snapshot_count: Optional[pulumi.Input[builtins.float]] = None,
                 source_snapshot_id: Optional[pulumi.Input[builtins.str]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['VolumeTagArgs']]]] = None,
                 total_performance: Optional[pulumi.Input['VolumeTotalPerformanceArgs']] = None,
                 trade_status: Optional[pulumi.Input[builtins.float]] = None,
                 updated_at: Optional[pulumi.Input[builtins.str]] = None,
                 volume_id: Optional[pulumi.Input[builtins.str]] = None,
                 volume_name: Optional[pulumi.Input[builtins.str]] = None,
                 volume_type: Optional[pulumi.Input[builtins.str]] = None,
                 zone_id: Optional[pulumi.Input[builtins.str]] = None):
        """
        Input properties used for looking up and filtering Volume resources.
        :param pulumi.Input[builtins.str] auto_snapshot_policy_id: 自动快照策略ID。
        :param pulumi.Input[builtins.str] auto_snapshot_policy_name: 自动快照策略名称。
        :param pulumi.Input['VolumeBaselinePerformanceArgs'] baseline_performance: 基本性能。
        :param pulumi.Input[builtins.str] created_at: 云盘创建时间。
        :param pulumi.Input[builtins.bool] delete_with_instance: 释放实例时，该云盘是否随实例一起释放，取值说明如下：true：云盘随实例一起释放。false：云盘不随实例一起释放。
        :param pulumi.Input[builtins.str] description: 云盘的描述信息，默认为空，长度限制在1 ~ 255字符之间。
        :param pulumi.Input[builtins.str] device_name: 设备名称
        :param pulumi.Input[builtins.str] error_detail: 具体错误
        :param pulumi.Input[builtins.str] expired_time: 包年包月到期时间。
        :param pulumi.Input['VolumeExtraPerformanceArgs'] extra_performance: 额外性能。
        :param pulumi.Input[builtins.str] image_id: 云盘中的镜像ID。
        :param pulumi.Input[builtins.str] instance_id: 创建云盘的同时挂载的ECS实例ID。
        :param pulumi.Input[builtins.str] kind: 云盘属性，data表示数据盘。默认值为data。说明： 仅支持创建数据盘。
        :param pulumi.Input[builtins.str] overdue_reclaim_time: 云盘欠费回收时间。
        :param pulumi.Input[builtins.str] overdue_time: 云盘欠费关停时间。
        :param pulumi.Input[builtins.str] pay_type: 付费类型，说明如下： Pre：预付费（包年包月） Post：后付费（按量计费）。
        :param pulumi.Input[builtins.str] project_name: 云盘所要加入的Project（项目）名称。
        :param pulumi.Input[builtins.float] renew_type: 续费方式 1：手动续费 2 ：自动续费 3 ：到期不续费。
        :param pulumi.Input[builtins.float] size: Size，数据盘容量大小，单位为GiB。不同类型的数据盘容量范围如下：ESSD*PL0：10~65536 GiB；ESSD*FlexPL：10~65536 GiB；TSSD_TL0：40~65536 GiB
        :param pulumi.Input[builtins.float] snapshot_count: 快照计数
        :param pulumi.Input[builtins.str] source_snapshot_id: 源快照。
        :param pulumi.Input[builtins.str] status: 云盘状态，取值说明如下：available：可用。attaching：挂载中。attached：已挂载。detaching：卸载中。creating：创建中。deleting：删除中。error：错误。extending：扩容中。
        :param pulumi.Input['VolumeTotalPerformanceArgs'] total_performance: 总性能。
        :param pulumi.Input[builtins.float] trade_status: 交易状态 0：创建中 1：运行中 2：创建失败
        :param pulumi.Input[builtins.str] updated_at: 云盘更新时间。
        :param pulumi.Input[builtins.str] volume_id: 云盘id。
        :param pulumi.Input[builtins.str] volume_name: 云盘显示名称。命名规则如下：首字符仅支持中文、字母或下划线（*）。可包含中文、字母、数字、下划线（*）或中划线（-）。长度限制在1~128字符之间。
        :param pulumi.Input[builtins.str] volume_type: 云盘类型，取值说明如下：ESSD*PL0：极速型SSD云盘，PL0规格。ESSD*FlexPL: 极速型SSD云盘，FlexPL规格。TSSD_TL0: 吞吐型SSD云盘。
        :param pulumi.Input[builtins.str] zone_id: 可用区ID。
        """
        if auto_snapshot_policy_id is not None:
            pulumi.set(__self__, "auto_snapshot_policy_id", auto_snapshot_policy_id)
        if auto_snapshot_policy_name is not None:
            pulumi.set(__self__, "auto_snapshot_policy_name", auto_snapshot_policy_name)
        if baseline_performance is not None:
            pulumi.set(__self__, "baseline_performance", baseline_performance)
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if delete_with_instance is not None:
            pulumi.set(__self__, "delete_with_instance", delete_with_instance)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if device_name is not None:
            pulumi.set(__self__, "device_name", device_name)
        if error_detail is not None:
            pulumi.set(__self__, "error_detail", error_detail)
        if expired_time is not None:
            pulumi.set(__self__, "expired_time", expired_time)
        if extra_performance is not None:
            pulumi.set(__self__, "extra_performance", extra_performance)
        if image_id is not None:
            pulumi.set(__self__, "image_id", image_id)
        if instance_id is not None:
            pulumi.set(__self__, "instance_id", instance_id)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if overdue_reclaim_time is not None:
            pulumi.set(__self__, "overdue_reclaim_time", overdue_reclaim_time)
        if overdue_time is not None:
            pulumi.set(__self__, "overdue_time", overdue_time)
        if pay_type is not None:
            pulumi.set(__self__, "pay_type", pay_type)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if renew_type is not None:
            pulumi.set(__self__, "renew_type", renew_type)
        if size is not None:
            pulumi.set(__self__, "size", size)
        if snapshot_count is not None:
            pulumi.set(__self__, "snapshot_count", snapshot_count)
        if source_snapshot_id is not None:
            pulumi.set(__self__, "source_snapshot_id", source_snapshot_id)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if total_performance is not None:
            pulumi.set(__self__, "total_performance", total_performance)
        if trade_status is not None:
            pulumi.set(__self__, "trade_status", trade_status)
        if updated_at is not None:
            pulumi.set(__self__, "updated_at", updated_at)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)
        if volume_name is not None:
            pulumi.set(__self__, "volume_name", volume_name)
        if volume_type is not None:
            pulumi.set(__self__, "volume_type", volume_type)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter(name="autoSnapshotPolicyId")
    def auto_snapshot_policy_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        自动快照策略ID。
        """
        return pulumi.get(self, "auto_snapshot_policy_id")

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

    @property
    @pulumi.getter(name="autoSnapshotPolicyName")
    def auto_snapshot_policy_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        自动快照策略名称。
        """
        return pulumi.get(self, "auto_snapshot_policy_name")

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

    @property
    @pulumi.getter(name="baselinePerformance")
    def baseline_performance(self) -> Optional[pulumi.Input['VolumeBaselinePerformanceArgs']]:
        """
        基本性能。
        """
        return pulumi.get(self, "baseline_performance")

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

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘创建时间。
        """
        return pulumi.get(self, "created_at")

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

    @property
    @pulumi.getter(name="deleteWithInstance")
    def delete_with_instance(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        释放实例时，该云盘是否随实例一起释放，取值说明如下：true：云盘随实例一起释放。false：云盘不随实例一起释放。
        """
        return pulumi.get(self, "delete_with_instance")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘的描述信息，默认为空，长度限制在1 ~ 255字符之间。
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter(name="deviceName")
    def device_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        设备名称
        """
        return pulumi.get(self, "device_name")

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

    @property
    @pulumi.getter(name="errorDetail")
    def error_detail(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        具体错误
        """
        return pulumi.get(self, "error_detail")

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

    @property
    @pulumi.getter(name="expiredTime")
    def expired_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        包年包月到期时间。
        """
        return pulumi.get(self, "expired_time")

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

    @property
    @pulumi.getter(name="extraPerformance")
    def extra_performance(self) -> Optional[pulumi.Input['VolumeExtraPerformanceArgs']]:
        """
        额外性能。
        """
        return pulumi.get(self, "extra_performance")

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

    @property
    @pulumi.getter(name="imageId")
    def image_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘中的镜像ID。
        """
        return pulumi.get(self, "image_id")

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

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        创建云盘的同时挂载的ECS实例ID。
        """
        return pulumi.get(self, "instance_id")

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

    @property
    @pulumi.getter
    def kind(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘属性，data表示数据盘。默认值为data。说明： 仅支持创建数据盘。
        """
        return pulumi.get(self, "kind")

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

    @property
    @pulumi.getter(name="overdueReclaimTime")
    def overdue_reclaim_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘欠费回收时间。
        """
        return pulumi.get(self, "overdue_reclaim_time")

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

    @property
    @pulumi.getter(name="overdueTime")
    def overdue_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘欠费关停时间。
        """
        return pulumi.get(self, "overdue_time")

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

    @property
    @pulumi.getter(name="payType")
    def pay_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        付费类型，说明如下： Pre：预付费（包年包月） Post：后付费（按量计费）。
        """
        return pulumi.get(self, "pay_type")

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

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘所要加入的Project（项目）名称。
        """
        return pulumi.get(self, "project_name")

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

    @property
    @pulumi.getter(name="renewType")
    def renew_type(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        续费方式 1：手动续费 2 ：自动续费 3 ：到期不续费。
        """
        return pulumi.get(self, "renew_type")

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

    @property
    @pulumi.getter
    def size(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        Size，数据盘容量大小，单位为GiB。不同类型的数据盘容量范围如下：ESSD*PL0：10~65536 GiB；ESSD*FlexPL：10~65536 GiB；TSSD_TL0：40~65536 GiB
        """
        return pulumi.get(self, "size")

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

    @property
    @pulumi.getter(name="snapshotCount")
    def snapshot_count(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        快照计数
        """
        return pulumi.get(self, "snapshot_count")

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

    @property
    @pulumi.getter(name="sourceSnapshotId")
    def source_snapshot_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        源快照。
        """
        return pulumi.get(self, "source_snapshot_id")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘状态，取值说明如下：available：可用。attaching：挂载中。attached：已挂载。detaching：卸载中。creating：创建中。deleting：删除中。error：错误。extending：扩容中。
        """
        return pulumi.get(self, "status")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VolumeTagArgs']]]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VolumeTagArgs']]]]):
        pulumi.set(self, "tags", value)

    @property
    @pulumi.getter(name="totalPerformance")
    def total_performance(self) -> Optional[pulumi.Input['VolumeTotalPerformanceArgs']]:
        """
        总性能。
        """
        return pulumi.get(self, "total_performance")

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

    @property
    @pulumi.getter(name="tradeStatus")
    def trade_status(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        交易状态 0：创建中 1：运行中 2：创建失败
        """
        return pulumi.get(self, "trade_status")

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

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘更新时间。
        """
        return pulumi.get(self, "updated_at")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘id。
        """
        return pulumi.get(self, "volume_id")

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

    @property
    @pulumi.getter(name="volumeName")
    def volume_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘显示名称。命名规则如下：首字符仅支持中文、字母或下划线（*）。可包含中文、字母、数字、下划线（*）或中划线（-）。长度限制在1~128字符之间。
        """
        return pulumi.get(self, "volume_name")

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

    @property
    @pulumi.getter(name="volumeType")
    def volume_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        云盘类型，取值说明如下：ESSD*PL0：极速型SSD云盘，PL0规格。ESSD*FlexPL: 极速型SSD云盘，FlexPL规格。TSSD_TL0: 吞吐型SSD云盘。
        """
        return pulumi.get(self, "volume_type")

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

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        可用区ID。
        """
        return pulumi.get(self, "zone_id")

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


@pulumi.type_token("bytepluscc:storageebs/volume:Volume")
class Volume(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 auto_snapshot_policy_id: Optional[pulumi.Input[builtins.str]] = None,
                 delete_with_instance: Optional[pulumi.Input[builtins.bool]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 extra_performance: Optional[pulumi.Input[Union['VolumeExtraPerformanceArgs', 'VolumeExtraPerformanceArgsDict']]] = None,
                 instance_id: Optional[pulumi.Input[builtins.str]] = None,
                 kind: Optional[pulumi.Input[builtins.str]] = None,
                 pay_type: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 size: Optional[pulumi.Input[builtins.float]] = None,
                 source_snapshot_id: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['VolumeTagArgs', 'VolumeTagArgsDict']]]]] = None,
                 volume_name: Optional[pulumi.Input[builtins.str]] = None,
                 volume_type: Optional[pulumi.Input[builtins.str]] = None,
                 zone_id: Optional[pulumi.Input[builtins.str]] = None,
                 __props__=None):
        """
        云盘是高可用、高可靠、高性能、弹性扩展的块存储设备，可以作为云服务器和弹性容器服务的可扩展硬盘使用。

        ## Example Usage

        ```python
        import pulumi
        import pulumi_bytepluscc as bytepluscc

        volume_demo = bytepluscc.storageebs.Volume("VolumeDemo",
            volume_name="EBS-VolumeDemo",
            volume_type="ESSD_PL0",
            size=10,
            zone_id="cn-beijing-x")
        ```

        ## Import

        ```sh
        $ pulumi import bytepluscc:storageebs/volume:Volume example "volume_id"
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.str] auto_snapshot_policy_id: 自动快照策略ID。
        :param pulumi.Input[builtins.bool] delete_with_instance: 释放实例时，该云盘是否随实例一起释放，取值说明如下：true：云盘随实例一起释放。false：云盘不随实例一起释放。
        :param pulumi.Input[builtins.str] description: 云盘的描述信息，默认为空，长度限制在1 ~ 255字符之间。
        :param pulumi.Input[Union['VolumeExtraPerformanceArgs', 'VolumeExtraPerformanceArgsDict']] extra_performance: 额外性能。
        :param pulumi.Input[builtins.str] instance_id: 创建云盘的同时挂载的ECS实例ID。
        :param pulumi.Input[builtins.str] kind: 云盘属性，data表示数据盘。默认值为data。说明： 仅支持创建数据盘。
        :param pulumi.Input[builtins.str] pay_type: 付费类型，说明如下： Pre：预付费（包年包月） Post：后付费（按量计费）。
        :param pulumi.Input[builtins.str] project_name: 云盘所要加入的Project（项目）名称。
        :param pulumi.Input[builtins.float] size: Size，数据盘容量大小，单位为GiB。不同类型的数据盘容量范围如下：ESSD*PL0：10~65536 GiB；ESSD*FlexPL：10~65536 GiB；TSSD_TL0：40~65536 GiB
        :param pulumi.Input[builtins.str] source_snapshot_id: 源快照。
        :param pulumi.Input[builtins.str] volume_name: 云盘显示名称。命名规则如下：首字符仅支持中文、字母或下划线（*）。可包含中文、字母、数字、下划线（*）或中划线（-）。长度限制在1~128字符之间。
        :param pulumi.Input[builtins.str] volume_type: 云盘类型，取值说明如下：ESSD*PL0：极速型SSD云盘，PL0规格。ESSD*FlexPL: 极速型SSD云盘，FlexPL规格。TSSD_TL0: 吞吐型SSD云盘。
        :param pulumi.Input[builtins.str] zone_id: 可用区ID。
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: VolumeArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        云盘是高可用、高可靠、高性能、弹性扩展的块存储设备，可以作为云服务器和弹性容器服务的可扩展硬盘使用。

        ## Example Usage

        ```python
        import pulumi
        import pulumi_bytepluscc as bytepluscc

        volume_demo = bytepluscc.storageebs.Volume("VolumeDemo",
            volume_name="EBS-VolumeDemo",
            volume_type="ESSD_PL0",
            size=10,
            zone_id="cn-beijing-x")
        ```

        ## Import

        ```sh
        $ pulumi import bytepluscc:storageebs/volume:Volume example "volume_id"
        ```

        :param str resource_name: The name of the resource.
        :param VolumeArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(VolumeArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 auto_snapshot_policy_id: Optional[pulumi.Input[builtins.str]] = None,
                 delete_with_instance: Optional[pulumi.Input[builtins.bool]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 extra_performance: Optional[pulumi.Input[Union['VolumeExtraPerformanceArgs', 'VolumeExtraPerformanceArgsDict']]] = None,
                 instance_id: Optional[pulumi.Input[builtins.str]] = None,
                 kind: Optional[pulumi.Input[builtins.str]] = None,
                 pay_type: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 size: Optional[pulumi.Input[builtins.float]] = None,
                 source_snapshot_id: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['VolumeTagArgs', 'VolumeTagArgsDict']]]]] = None,
                 volume_name: Optional[pulumi.Input[builtins.str]] = None,
                 volume_type: Optional[pulumi.Input[builtins.str]] = None,
                 zone_id: Optional[pulumi.Input[builtins.str]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = VolumeArgs.__new__(VolumeArgs)

            __props__.__dict__["auto_snapshot_policy_id"] = auto_snapshot_policy_id
            __props__.__dict__["delete_with_instance"] = delete_with_instance
            __props__.__dict__["description"] = description
            __props__.__dict__["extra_performance"] = extra_performance
            __props__.__dict__["instance_id"] = instance_id
            __props__.__dict__["kind"] = kind
            __props__.__dict__["pay_type"] = pay_type
            __props__.__dict__["project_name"] = project_name
            if size is None and not opts.urn:
                raise TypeError("Missing required property 'size'")
            __props__.__dict__["size"] = size
            __props__.__dict__["source_snapshot_id"] = source_snapshot_id
            __props__.__dict__["tags"] = tags
            if volume_name is None and not opts.urn:
                raise TypeError("Missing required property 'volume_name'")
            __props__.__dict__["volume_name"] = volume_name
            if volume_type is None and not opts.urn:
                raise TypeError("Missing required property 'volume_type'")
            __props__.__dict__["volume_type"] = volume_type
            if zone_id is None and not opts.urn:
                raise TypeError("Missing required property 'zone_id'")
            __props__.__dict__["zone_id"] = zone_id
            __props__.__dict__["auto_snapshot_policy_name"] = None
            __props__.__dict__["baseline_performance"] = None
            __props__.__dict__["created_at"] = None
            __props__.__dict__["device_name"] = None
            __props__.__dict__["error_detail"] = None
            __props__.__dict__["expired_time"] = None
            __props__.__dict__["image_id"] = None
            __props__.__dict__["overdue_reclaim_time"] = None
            __props__.__dict__["overdue_time"] = None
            __props__.__dict__["renew_type"] = None
            __props__.__dict__["snapshot_count"] = None
            __props__.__dict__["status"] = None
            __props__.__dict__["total_performance"] = None
            __props__.__dict__["trade_status"] = None
            __props__.__dict__["updated_at"] = None
            __props__.__dict__["volume_id"] = None
        super(Volume, __self__).__init__(
            'bytepluscc:storageebs/volume:Volume',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            auto_snapshot_policy_id: Optional[pulumi.Input[builtins.str]] = None,
            auto_snapshot_policy_name: Optional[pulumi.Input[builtins.str]] = None,
            baseline_performance: Optional[pulumi.Input[Union['VolumeBaselinePerformanceArgs', 'VolumeBaselinePerformanceArgsDict']]] = None,
            created_at: Optional[pulumi.Input[builtins.str]] = None,
            delete_with_instance: Optional[pulumi.Input[builtins.bool]] = None,
            description: Optional[pulumi.Input[builtins.str]] = None,
            device_name: Optional[pulumi.Input[builtins.str]] = None,
            error_detail: Optional[pulumi.Input[builtins.str]] = None,
            expired_time: Optional[pulumi.Input[builtins.str]] = None,
            extra_performance: Optional[pulumi.Input[Union['VolumeExtraPerformanceArgs', 'VolumeExtraPerformanceArgsDict']]] = None,
            image_id: Optional[pulumi.Input[builtins.str]] = None,
            instance_id: Optional[pulumi.Input[builtins.str]] = None,
            kind: Optional[pulumi.Input[builtins.str]] = None,
            overdue_reclaim_time: Optional[pulumi.Input[builtins.str]] = None,
            overdue_time: Optional[pulumi.Input[builtins.str]] = None,
            pay_type: Optional[pulumi.Input[builtins.str]] = None,
            project_name: Optional[pulumi.Input[builtins.str]] = None,
            renew_type: Optional[pulumi.Input[builtins.float]] = None,
            size: Optional[pulumi.Input[builtins.float]] = None,
            snapshot_count: Optional[pulumi.Input[builtins.float]] = None,
            source_snapshot_id: Optional[pulumi.Input[builtins.str]] = None,
            status: Optional[pulumi.Input[builtins.str]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['VolumeTagArgs', 'VolumeTagArgsDict']]]]] = None,
            total_performance: Optional[pulumi.Input[Union['VolumeTotalPerformanceArgs', 'VolumeTotalPerformanceArgsDict']]] = None,
            trade_status: Optional[pulumi.Input[builtins.float]] = None,
            updated_at: Optional[pulumi.Input[builtins.str]] = None,
            volume_id: Optional[pulumi.Input[builtins.str]] = None,
            volume_name: Optional[pulumi.Input[builtins.str]] = None,
            volume_type: Optional[pulumi.Input[builtins.str]] = None,
            zone_id: Optional[pulumi.Input[builtins.str]] = None) -> 'Volume':
        """
        Get an existing Volume resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.str] auto_snapshot_policy_id: 自动快照策略ID。
        :param pulumi.Input[builtins.str] auto_snapshot_policy_name: 自动快照策略名称。
        :param pulumi.Input[Union['VolumeBaselinePerformanceArgs', 'VolumeBaselinePerformanceArgsDict']] baseline_performance: 基本性能。
        :param pulumi.Input[builtins.str] created_at: 云盘创建时间。
        :param pulumi.Input[builtins.bool] delete_with_instance: 释放实例时，该云盘是否随实例一起释放，取值说明如下：true：云盘随实例一起释放。false：云盘不随实例一起释放。
        :param pulumi.Input[builtins.str] description: 云盘的描述信息，默认为空，长度限制在1 ~ 255字符之间。
        :param pulumi.Input[builtins.str] device_name: 设备名称
        :param pulumi.Input[builtins.str] error_detail: 具体错误
        :param pulumi.Input[builtins.str] expired_time: 包年包月到期时间。
        :param pulumi.Input[Union['VolumeExtraPerformanceArgs', 'VolumeExtraPerformanceArgsDict']] extra_performance: 额外性能。
        :param pulumi.Input[builtins.str] image_id: 云盘中的镜像ID。
        :param pulumi.Input[builtins.str] instance_id: 创建云盘的同时挂载的ECS实例ID。
        :param pulumi.Input[builtins.str] kind: 云盘属性，data表示数据盘。默认值为data。说明： 仅支持创建数据盘。
        :param pulumi.Input[builtins.str] overdue_reclaim_time: 云盘欠费回收时间。
        :param pulumi.Input[builtins.str] overdue_time: 云盘欠费关停时间。
        :param pulumi.Input[builtins.str] pay_type: 付费类型，说明如下： Pre：预付费（包年包月） Post：后付费（按量计费）。
        :param pulumi.Input[builtins.str] project_name: 云盘所要加入的Project（项目）名称。
        :param pulumi.Input[builtins.float] renew_type: 续费方式 1：手动续费 2 ：自动续费 3 ：到期不续费。
        :param pulumi.Input[builtins.float] size: Size，数据盘容量大小，单位为GiB。不同类型的数据盘容量范围如下：ESSD*PL0：10~65536 GiB；ESSD*FlexPL：10~65536 GiB；TSSD_TL0：40~65536 GiB
        :param pulumi.Input[builtins.float] snapshot_count: 快照计数
        :param pulumi.Input[builtins.str] source_snapshot_id: 源快照。
        :param pulumi.Input[builtins.str] status: 云盘状态，取值说明如下：available：可用。attaching：挂载中。attached：已挂载。detaching：卸载中。creating：创建中。deleting：删除中。error：错误。extending：扩容中。
        :param pulumi.Input[Union['VolumeTotalPerformanceArgs', 'VolumeTotalPerformanceArgsDict']] total_performance: 总性能。
        :param pulumi.Input[builtins.float] trade_status: 交易状态 0：创建中 1：运行中 2：创建失败
        :param pulumi.Input[builtins.str] updated_at: 云盘更新时间。
        :param pulumi.Input[builtins.str] volume_id: 云盘id。
        :param pulumi.Input[builtins.str] volume_name: 云盘显示名称。命名规则如下：首字符仅支持中文、字母或下划线（*）。可包含中文、字母、数字、下划线（*）或中划线（-）。长度限制在1~128字符之间。
        :param pulumi.Input[builtins.str] volume_type: 云盘类型，取值说明如下：ESSD*PL0：极速型SSD云盘，PL0规格。ESSD*FlexPL: 极速型SSD云盘，FlexPL规格。TSSD_TL0: 吞吐型SSD云盘。
        :param pulumi.Input[builtins.str] zone_id: 可用区ID。
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _VolumeState.__new__(_VolumeState)

        __props__.__dict__["auto_snapshot_policy_id"] = auto_snapshot_policy_id
        __props__.__dict__["auto_snapshot_policy_name"] = auto_snapshot_policy_name
        __props__.__dict__["baseline_performance"] = baseline_performance
        __props__.__dict__["created_at"] = created_at
        __props__.__dict__["delete_with_instance"] = delete_with_instance
        __props__.__dict__["description"] = description
        __props__.__dict__["device_name"] = device_name
        __props__.__dict__["error_detail"] = error_detail
        __props__.__dict__["expired_time"] = expired_time
        __props__.__dict__["extra_performance"] = extra_performance
        __props__.__dict__["image_id"] = image_id
        __props__.__dict__["instance_id"] = instance_id
        __props__.__dict__["kind"] = kind
        __props__.__dict__["overdue_reclaim_time"] = overdue_reclaim_time
        __props__.__dict__["overdue_time"] = overdue_time
        __props__.__dict__["pay_type"] = pay_type
        __props__.__dict__["project_name"] = project_name
        __props__.__dict__["renew_type"] = renew_type
        __props__.__dict__["size"] = size
        __props__.__dict__["snapshot_count"] = snapshot_count
        __props__.__dict__["source_snapshot_id"] = source_snapshot_id
        __props__.__dict__["status"] = status
        __props__.__dict__["tags"] = tags
        __props__.__dict__["total_performance"] = total_performance
        __props__.__dict__["trade_status"] = trade_status
        __props__.__dict__["updated_at"] = updated_at
        __props__.__dict__["volume_id"] = volume_id
        __props__.__dict__["volume_name"] = volume_name
        __props__.__dict__["volume_type"] = volume_type
        __props__.__dict__["zone_id"] = zone_id
        return Volume(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="autoSnapshotPolicyId")
    def auto_snapshot_policy_id(self) -> pulumi.Output[builtins.str]:
        """
        自动快照策略ID。
        """
        return pulumi.get(self, "auto_snapshot_policy_id")

    @property
    @pulumi.getter(name="autoSnapshotPolicyName")
    def auto_snapshot_policy_name(self) -> pulumi.Output[builtins.str]:
        """
        自动快照策略名称。
        """
        return pulumi.get(self, "auto_snapshot_policy_name")

    @property
    @pulumi.getter(name="baselinePerformance")
    def baseline_performance(self) -> pulumi.Output['outputs.VolumeBaselinePerformance']:
        """
        基本性能。
        """
        return pulumi.get(self, "baseline_performance")

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> pulumi.Output[builtins.str]:
        """
        云盘创建时间。
        """
        return pulumi.get(self, "created_at")

    @property
    @pulumi.getter(name="deleteWithInstance")
    def delete_with_instance(self) -> pulumi.Output[builtins.bool]:
        """
        释放实例时，该云盘是否随实例一起释放，取值说明如下：true：云盘随实例一起释放。false：云盘不随实例一起释放。
        """
        return pulumi.get(self, "delete_with_instance")

    @property
    @pulumi.getter
    def description(self) -> pulumi.Output[builtins.str]:
        """
        云盘的描述信息，默认为空，长度限制在1 ~ 255字符之间。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="deviceName")
    def device_name(self) -> pulumi.Output[builtins.str]:
        """
        设备名称
        """
        return pulumi.get(self, "device_name")

    @property
    @pulumi.getter(name="errorDetail")
    def error_detail(self) -> pulumi.Output[builtins.str]:
        """
        具体错误
        """
        return pulumi.get(self, "error_detail")

    @property
    @pulumi.getter(name="expiredTime")
    def expired_time(self) -> pulumi.Output[builtins.str]:
        """
        包年包月到期时间。
        """
        return pulumi.get(self, "expired_time")

    @property
    @pulumi.getter(name="extraPerformance")
    def extra_performance(self) -> pulumi.Output['outputs.VolumeExtraPerformance']:
        """
        额外性能。
        """
        return pulumi.get(self, "extra_performance")

    @property
    @pulumi.getter(name="imageId")
    def image_id(self) -> pulumi.Output[builtins.str]:
        """
        云盘中的镜像ID。
        """
        return pulumi.get(self, "image_id")

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> pulumi.Output[builtins.str]:
        """
        创建云盘的同时挂载的ECS实例ID。
        """
        return pulumi.get(self, "instance_id")

    @property
    @pulumi.getter
    def kind(self) -> pulumi.Output[builtins.str]:
        """
        云盘属性，data表示数据盘。默认值为data。说明： 仅支持创建数据盘。
        """
        return pulumi.get(self, "kind")

    @property
    @pulumi.getter(name="overdueReclaimTime")
    def overdue_reclaim_time(self) -> pulumi.Output[builtins.str]:
        """
        云盘欠费回收时间。
        """
        return pulumi.get(self, "overdue_reclaim_time")

    @property
    @pulumi.getter(name="overdueTime")
    def overdue_time(self) -> pulumi.Output[builtins.str]:
        """
        云盘欠费关停时间。
        """
        return pulumi.get(self, "overdue_time")

    @property
    @pulumi.getter(name="payType")
    def pay_type(self) -> pulumi.Output[builtins.str]:
        """
        付费类型，说明如下： Pre：预付费（包年包月） Post：后付费（按量计费）。
        """
        return pulumi.get(self, "pay_type")

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> pulumi.Output[builtins.str]:
        """
        云盘所要加入的Project（项目）名称。
        """
        return pulumi.get(self, "project_name")

    @property
    @pulumi.getter(name="renewType")
    def renew_type(self) -> pulumi.Output[builtins.float]:
        """
        续费方式 1：手动续费 2 ：自动续费 3 ：到期不续费。
        """
        return pulumi.get(self, "renew_type")

    @property
    @pulumi.getter
    def size(self) -> pulumi.Output[builtins.float]:
        """
        Size，数据盘容量大小，单位为GiB。不同类型的数据盘容量范围如下：ESSD*PL0：10~65536 GiB；ESSD*FlexPL：10~65536 GiB；TSSD_TL0：40~65536 GiB
        """
        return pulumi.get(self, "size")

    @property
    @pulumi.getter(name="snapshotCount")
    def snapshot_count(self) -> pulumi.Output[builtins.float]:
        """
        快照计数
        """
        return pulumi.get(self, "snapshot_count")

    @property
    @pulumi.getter(name="sourceSnapshotId")
    def source_snapshot_id(self) -> pulumi.Output[builtins.str]:
        """
        源快照。
        """
        return pulumi.get(self, "source_snapshot_id")

    @property
    @pulumi.getter
    def status(self) -> pulumi.Output[builtins.str]:
        """
        云盘状态，取值说明如下：available：可用。attaching：挂载中。attached：已挂载。detaching：卸载中。creating：创建中。deleting：删除中。error：错误。extending：扩容中。
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Sequence['outputs.VolumeTag']]:
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="totalPerformance")
    def total_performance(self) -> pulumi.Output['outputs.VolumeTotalPerformance']:
        """
        总性能。
        """
        return pulumi.get(self, "total_performance")

    @property
    @pulumi.getter(name="tradeStatus")
    def trade_status(self) -> pulumi.Output[builtins.float]:
        """
        交易状态 0：创建中 1：运行中 2：创建失败
        """
        return pulumi.get(self, "trade_status")

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> pulumi.Output[builtins.str]:
        """
        云盘更新时间。
        """
        return pulumi.get(self, "updated_at")

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> pulumi.Output[builtins.str]:
        """
        云盘id。
        """
        return pulumi.get(self, "volume_id")

    @property
    @pulumi.getter(name="volumeName")
    def volume_name(self) -> pulumi.Output[builtins.str]:
        """
        云盘显示名称。命名规则如下：首字符仅支持中文、字母或下划线（*）。可包含中文、字母、数字、下划线（*）或中划线（-）。长度限制在1~128字符之间。
        """
        return pulumi.get(self, "volume_name")

    @property
    @pulumi.getter(name="volumeType")
    def volume_type(self) -> pulumi.Output[builtins.str]:
        """
        云盘类型，取值说明如下：ESSD*PL0：极速型SSD云盘，PL0规格。ESSD*FlexPL: 极速型SSD云盘，FlexPL规格。TSSD_TL0: 吞吐型SSD云盘。
        """
        return pulumi.get(self, "volume_type")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> pulumi.Output[builtins.str]:
        """
        可用区ID。
        """
        return pulumi.get(self, "zone_id")

