# 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

__all__ = [
    'GetInstanceResult',
    'AwaitableGetInstanceResult',
    'get_instance',
    'get_instance_output',
]

@pulumi.output_type
class GetInstanceResult:
    """
    A collection of values returned by getInstance.
    """
    def __init__(__self__, auto_renew=None, charge_status=None, charge_type=None, cold_storage=None, create_time=None, deletion_protection=None, enable_auth=None, enable_cloud_storage=None, endpoints=None, engine_version=None, id=None, instance_id=None, instance_name=None, instance_type=None, master_count=None, master_spec=None, multi_az=None, primary_subnet_id=None, primary_zone_id=None, project_name=None, purchase_months=None, region_id=None, rs_count=None, rs_spec=None, standby_subnet_id=None, standby_zone_id=None, status=None, storage_capacity=None, storage_type=None, subnet_id=None, tags=None, used_cold_storage=None, used_storage=None, vpc_id=None, vpc_name=None, zone_id=None, zone_name=None):
        if auto_renew and not isinstance(auto_renew, bool):
            raise TypeError("Expected argument 'auto_renew' to be a bool")
        pulumi.set(__self__, "auto_renew", auto_renew)
        if charge_status and not isinstance(charge_status, str):
            raise TypeError("Expected argument 'charge_status' to be a str")
        pulumi.set(__self__, "charge_status", charge_status)
        if charge_type and not isinstance(charge_type, str):
            raise TypeError("Expected argument 'charge_type' to be a str")
        pulumi.set(__self__, "charge_type", charge_type)
        if cold_storage and not isinstance(cold_storage, int):
            raise TypeError("Expected argument 'cold_storage' to be a int")
        pulumi.set(__self__, "cold_storage", cold_storage)
        if create_time and not isinstance(create_time, str):
            raise TypeError("Expected argument 'create_time' to be a str")
        pulumi.set(__self__, "create_time", create_time)
        if deletion_protection and not isinstance(deletion_protection, str):
            raise TypeError("Expected argument 'deletion_protection' to be a str")
        pulumi.set(__self__, "deletion_protection", deletion_protection)
        if enable_auth and not isinstance(enable_auth, bool):
            raise TypeError("Expected argument 'enable_auth' to be a bool")
        pulumi.set(__self__, "enable_auth", enable_auth)
        if enable_cloud_storage and not isinstance(enable_cloud_storage, bool):
            raise TypeError("Expected argument 'enable_cloud_storage' to be a bool")
        pulumi.set(__self__, "enable_cloud_storage", enable_cloud_storage)
        if endpoints and not isinstance(endpoints, list):
            raise TypeError("Expected argument 'endpoints' to be a list")
        pulumi.set(__self__, "endpoints", endpoints)
        if engine_version and not isinstance(engine_version, str):
            raise TypeError("Expected argument 'engine_version' to be a str")
        pulumi.set(__self__, "engine_version", engine_version)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if instance_id and not isinstance(instance_id, str):
            raise TypeError("Expected argument 'instance_id' to be a str")
        pulumi.set(__self__, "instance_id", instance_id)
        if instance_name and not isinstance(instance_name, str):
            raise TypeError("Expected argument 'instance_name' to be a str")
        pulumi.set(__self__, "instance_name", instance_name)
        if instance_type and not isinstance(instance_type, str):
            raise TypeError("Expected argument 'instance_type' to be a str")
        pulumi.set(__self__, "instance_type", instance_type)
        if master_count and not isinstance(master_count, int):
            raise TypeError("Expected argument 'master_count' to be a int")
        pulumi.set(__self__, "master_count", master_count)
        if master_spec and not isinstance(master_spec, str):
            raise TypeError("Expected argument 'master_spec' to be a str")
        pulumi.set(__self__, "master_spec", master_spec)
        if multi_az and not isinstance(multi_az, bool):
            raise TypeError("Expected argument 'multi_az' to be a bool")
        pulumi.set(__self__, "multi_az", multi_az)
        if primary_subnet_id and not isinstance(primary_subnet_id, str):
            raise TypeError("Expected argument 'primary_subnet_id' to be a str")
        pulumi.set(__self__, "primary_subnet_id", primary_subnet_id)
        if primary_zone_id and not isinstance(primary_zone_id, str):
            raise TypeError("Expected argument 'primary_zone_id' to be a str")
        pulumi.set(__self__, "primary_zone_id", primary_zone_id)
        if project_name and not isinstance(project_name, str):
            raise TypeError("Expected argument 'project_name' to be a str")
        pulumi.set(__self__, "project_name", project_name)
        if purchase_months and not isinstance(purchase_months, int):
            raise TypeError("Expected argument 'purchase_months' to be a int")
        pulumi.set(__self__, "purchase_months", purchase_months)
        if region_id and not isinstance(region_id, str):
            raise TypeError("Expected argument 'region_id' to be a str")
        pulumi.set(__self__, "region_id", region_id)
        if rs_count and not isinstance(rs_count, int):
            raise TypeError("Expected argument 'rs_count' to be a int")
        pulumi.set(__self__, "rs_count", rs_count)
        if rs_spec and not isinstance(rs_spec, str):
            raise TypeError("Expected argument 'rs_spec' to be a str")
        pulumi.set(__self__, "rs_spec", rs_spec)
        if standby_subnet_id and not isinstance(standby_subnet_id, str):
            raise TypeError("Expected argument 'standby_subnet_id' to be a str")
        pulumi.set(__self__, "standby_subnet_id", standby_subnet_id)
        if standby_zone_id and not isinstance(standby_zone_id, str):
            raise TypeError("Expected argument 'standby_zone_id' to be a str")
        pulumi.set(__self__, "standby_zone_id", standby_zone_id)
        if status and not isinstance(status, str):
            raise TypeError("Expected argument 'status' to be a str")
        pulumi.set(__self__, "status", status)
        if storage_capacity and not isinstance(storage_capacity, int):
            raise TypeError("Expected argument 'storage_capacity' to be a int")
        pulumi.set(__self__, "storage_capacity", storage_capacity)
        if storage_type and not isinstance(storage_type, str):
            raise TypeError("Expected argument 'storage_type' to be a str")
        pulumi.set(__self__, "storage_type", storage_type)
        if subnet_id and not isinstance(subnet_id, str):
            raise TypeError("Expected argument 'subnet_id' to be a str")
        pulumi.set(__self__, "subnet_id", subnet_id)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if used_cold_storage and not isinstance(used_cold_storage, int):
            raise TypeError("Expected argument 'used_cold_storage' to be a int")
        pulumi.set(__self__, "used_cold_storage", used_cold_storage)
        if used_storage and not isinstance(used_storage, float):
            raise TypeError("Expected argument 'used_storage' to be a float")
        pulumi.set(__self__, "used_storage", used_storage)
        if vpc_id and not isinstance(vpc_id, str):
            raise TypeError("Expected argument 'vpc_id' to be a str")
        pulumi.set(__self__, "vpc_id", vpc_id)
        if vpc_name and not isinstance(vpc_name, str):
            raise TypeError("Expected argument 'vpc_name' to be a str")
        pulumi.set(__self__, "vpc_name", vpc_name)
        if zone_id and not isinstance(zone_id, str):
            raise TypeError("Expected argument 'zone_id' to be a str")
        pulumi.set(__self__, "zone_id", zone_id)
        if zone_name and not isinstance(zone_name, str):
            raise TypeError("Expected argument 'zone_name' to be a str")
        pulumi.set(__self__, "zone_name", zone_name)

    @property
    @pulumi.getter(name="autoRenew")
    def auto_renew(self) -> builtins.bool:
        """
        预付费场景下是否自动续费。取值：true：自动续费。false：不自动续费。
        """
        return pulumi.get(self, "auto_renew")

    @property
    @pulumi.getter(name="chargeStatus")
    def charge_status(self) -> builtins.str:
        """
        计费状态。取值：Normal：正常。Overdue：欠费。Shutdown：关停。
        """
        return pulumi.get(self, "charge_status")

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> builtins.str:
        """
        计费类型，取值：PostPaid：按量计费（后付费）。PrePaid：包年包月（预付费）。
        """
        return pulumi.get(self, "charge_type")

    @property
    @pulumi.getter(name="coldStorage")
    def cold_storage(self) -> builtins.int:
        """
        实例总容量型存储空间大小，单位 GiB。
        """
        return pulumi.get(self, "cold_storage")

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> builtins.str:
        """
        实例创建时间（UTC 时间）。
        """
        return pulumi.get(self, "create_time")

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> builtins.str:
        """
        实例删除保护功能开关状态。取值范围：enabled：已开启。disabled：未开启。说明关于实例删除保护的更多信息，请参见实例删除保护。
        """
        return pulumi.get(self, "deletion_protection")

    @property
    @pulumi.getter(name="enableAuth")
    def enable_auth(self) -> builtins.bool:
        """
        是否开启登录认证。取值：true：已开启登录认证。false：未开启登录认证。
        """
        return pulumi.get(self, "enable_auth")

    @property
    @pulumi.getter(name="enableCloudStorage")
    def enable_cloud_storage(self) -> builtins.bool:
        """
        是否开通存储型容量，取值：true：开通容量型存储。false：不开通容量型存储。说明容量型存储的详细介绍，请参见冷热分离介绍。仅当 MultiAZ（部署方式）取值为 false（单可用区部署）时，支持冷热分离功能。
        """
        return pulumi.get(self, "enable_cloud_storage")

    @property
    @pulumi.getter
    def endpoints(self) -> Sequence['outputs.GetInstanceEndpointResult']:
        """
        连接地址信息列表。
        """
        return pulumi.get(self, "endpoints")

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> builtins.str:
        """
        HBase 数据库引擎版本。当前仅支持 HBase 2.0 版本，取值默认为 HBase_2.0。
        """
        return pulumi.get(self, "engine_version")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        Uniquely identifies the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> builtins.str:
        """
        实例 ID。
        """
        return pulumi.get(self, "instance_id")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> builtins.str:
        """
        实例名称。
        """
        return pulumi.get(self, "instance_name")

    @property
    @pulumi.getter(name="instanceType")
    def instance_type(self) -> builtins.str:
        """
        实例类型。当前仅支持标准型，取值默认为 Standard。
        """
        return pulumi.get(self, "instance_type")

    @property
    @pulumi.getter(name="masterCount")
    def master_count(self) -> builtins.int:
        """
        Master 节点个数。单可用区部署，默认包含 2 个 Master 节点。
        """
        return pulumi.get(self, "master_count")

    @property
    @pulumi.getter(name="masterSpec")
    def master_spec(self) -> builtins.str:
        """
        Master 节点的规格码。说明关于 Master 节点所支持的规格信息，请参见实例规格。Master 节点数量为固定值，不支持增减。
        """
        return pulumi.get(self, "master_spec")

    @property
    @pulumi.getter(name="multiAz")
    def multi_az(self) -> builtins.bool:
        """
        实例的部署方式，取值：true：多可用区部署。false：单可用区部署。目前仅支持单可用区部署。
        """
        return pulumi.get(self, "multi_az")

    @property
    @pulumi.getter(name="primarySubnetId")
    def primary_subnet_id(self) -> builtins.str:
        """
        实时主可用区子网 ID。
        """
        return pulumi.get(self, "primary_subnet_id")

    @property
    @pulumi.getter(name="primaryZoneId")
    def primary_zone_id(self) -> builtins.str:
        """
        实时主可用区 ID。
        """
        return pulumi.get(self, "primary_zone_id")

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> builtins.str:
        """
        实例所属的项目名称。
        """
        return pulumi.get(self, "project_name")

    @property
    @pulumi.getter(name="purchaseMonths")
    def purchase_months(self) -> builtins.int:
        """
        购买时长，单位：月。取值范围如下：1，2，3，4，5，6，7，8，9，12，24，36。说明当 ChargeType 为 PrePaid时，该参数必填。
        """
        return pulumi.get(self, "purchase_months")

    @property
    @pulumi.getter(name="regionId")
    def region_id(self) -> builtins.str:
        """
        实例所属的地域 ID。
        """
        return pulumi.get(self, "region_id")

    @property
    @pulumi.getter(name="rsCount")
    def rs_count(self) -> builtins.int:
        """
        RegionServer 节点的数量。
        """
        return pulumi.get(self, "rs_count")

    @property
    @pulumi.getter(name="rsSpec")
    def rs_spec(self) -> builtins.str:
        """
        RegionServer 节点的规格码。
        """
        return pulumi.get(self, "rs_spec")

    @property
    @pulumi.getter(name="standbySubnetId")
    def standby_subnet_id(self) -> builtins.str:
        """
        实时备可用区子网 ID。
        """
        return pulumi.get(self, "standby_subnet_id")

    @property
    @pulumi.getter(name="standbyZoneId")
    def standby_zone_id(self) -> builtins.str:
        """
        实时备可用区 ID。
        """
        return pulumi.get(self, "standby_zone_id")

    @property
    @pulumi.getter
    def status(self) -> builtins.str:
        """
        实例当前状态。关于实例状态的更多说明，请参见实例状态说明。
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="storageCapacity")
    def storage_capacity(self) -> builtins.int:
        """
        实例总存储容量，单位：GiB。
        """
        return pulumi.get(self, "storage_capacity")

    @property
    @pulumi.getter(name="storageType")
    def storage_type(self) -> builtins.str:
        """
        实例的存储类型，取值：HdfsHdd：HDD 文件存储。HdfsSsd：SSD 文件存储。
        """
        return pulumi.get(self, "storage_type")

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> builtins.str:
        """
        实例所属的子网 ID。单可用区实例，仅包含一个可用区的子网 ID。
        """
        return pulumi.get(self, "subnet_id")

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetInstanceTagResult']:
        """
        需要绑定的标签键和标签值数组对象。说明支持一次传入多组标签键值对象，多组标签键值对象间用英文逗号（,）分隔。单次最多同时传入 20 组标签键值对，单个实例最多绑定 50 个标签。标签键值需满足设置规则，具体规则请参见标签设置规则。
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="usedColdStorage")
    def used_cold_storage(self) -> builtins.int:
        """
        实例已使用的容量型存储空间大小，单位 MiB。
        """
        return pulumi.get(self, "used_cold_storage")

    @property
    @pulumi.getter(name="usedStorage")
    def used_storage(self) -> builtins.float:
        """
        主实例已使用的存储容量，单位：MiB。
        """
        return pulumi.get(self, "used_storage")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> builtins.str:
        """
        私有网络 ID。说明您可以调用 DescribeVpcs 接口查询可创建 HBase 实例的私有网络信息，包括私有网络 ID。
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="vpcName")
    def vpc_name(self) -> builtins.str:
        """
        实例所属的私有网络名称。
        """
        return pulumi.get(self, "vpc_name")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> builtins.str:
        """
        实例所属的可用区 ID。
        """
        return pulumi.get(self, "zone_id")

    @property
    @pulumi.getter(name="zoneName")
    def zone_name(self) -> builtins.str:
        """
        实例所属的可用区名称。
        """
        return pulumi.get(self, "zone_name")


class AwaitableGetInstanceResult(GetInstanceResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetInstanceResult(
            auto_renew=self.auto_renew,
            charge_status=self.charge_status,
            charge_type=self.charge_type,
            cold_storage=self.cold_storage,
            create_time=self.create_time,
            deletion_protection=self.deletion_protection,
            enable_auth=self.enable_auth,
            enable_cloud_storage=self.enable_cloud_storage,
            endpoints=self.endpoints,
            engine_version=self.engine_version,
            id=self.id,
            instance_id=self.instance_id,
            instance_name=self.instance_name,
            instance_type=self.instance_type,
            master_count=self.master_count,
            master_spec=self.master_spec,
            multi_az=self.multi_az,
            primary_subnet_id=self.primary_subnet_id,
            primary_zone_id=self.primary_zone_id,
            project_name=self.project_name,
            purchase_months=self.purchase_months,
            region_id=self.region_id,
            rs_count=self.rs_count,
            rs_spec=self.rs_spec,
            standby_subnet_id=self.standby_subnet_id,
            standby_zone_id=self.standby_zone_id,
            status=self.status,
            storage_capacity=self.storage_capacity,
            storage_type=self.storage_type,
            subnet_id=self.subnet_id,
            tags=self.tags,
            used_cold_storage=self.used_cold_storage,
            used_storage=self.used_storage,
            vpc_id=self.vpc_id,
            vpc_name=self.vpc_name,
            zone_id=self.zone_id,
            zone_name=self.zone_name)


def get_instance(id: Optional[builtins.str] = None,
                 opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetInstanceResult:
    """
    Data Source schema for Byteplus::HBase::Instance


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('bytepluscc:hbase/getInstance:getInstance', __args__, opts=opts, typ=GetInstanceResult).value

    return AwaitableGetInstanceResult(
        auto_renew=pulumi.get(__ret__, 'auto_renew'),
        charge_status=pulumi.get(__ret__, 'charge_status'),
        charge_type=pulumi.get(__ret__, 'charge_type'),
        cold_storage=pulumi.get(__ret__, 'cold_storage'),
        create_time=pulumi.get(__ret__, 'create_time'),
        deletion_protection=pulumi.get(__ret__, 'deletion_protection'),
        enable_auth=pulumi.get(__ret__, 'enable_auth'),
        enable_cloud_storage=pulumi.get(__ret__, 'enable_cloud_storage'),
        endpoints=pulumi.get(__ret__, 'endpoints'),
        engine_version=pulumi.get(__ret__, 'engine_version'),
        id=pulumi.get(__ret__, 'id'),
        instance_id=pulumi.get(__ret__, 'instance_id'),
        instance_name=pulumi.get(__ret__, 'instance_name'),
        instance_type=pulumi.get(__ret__, 'instance_type'),
        master_count=pulumi.get(__ret__, 'master_count'),
        master_spec=pulumi.get(__ret__, 'master_spec'),
        multi_az=pulumi.get(__ret__, 'multi_az'),
        primary_subnet_id=pulumi.get(__ret__, 'primary_subnet_id'),
        primary_zone_id=pulumi.get(__ret__, 'primary_zone_id'),
        project_name=pulumi.get(__ret__, 'project_name'),
        purchase_months=pulumi.get(__ret__, 'purchase_months'),
        region_id=pulumi.get(__ret__, 'region_id'),
        rs_count=pulumi.get(__ret__, 'rs_count'),
        rs_spec=pulumi.get(__ret__, 'rs_spec'),
        standby_subnet_id=pulumi.get(__ret__, 'standby_subnet_id'),
        standby_zone_id=pulumi.get(__ret__, 'standby_zone_id'),
        status=pulumi.get(__ret__, 'status'),
        storage_capacity=pulumi.get(__ret__, 'storage_capacity'),
        storage_type=pulumi.get(__ret__, 'storage_type'),
        subnet_id=pulumi.get(__ret__, 'subnet_id'),
        tags=pulumi.get(__ret__, 'tags'),
        used_cold_storage=pulumi.get(__ret__, 'used_cold_storage'),
        used_storage=pulumi.get(__ret__, 'used_storage'),
        vpc_id=pulumi.get(__ret__, 'vpc_id'),
        vpc_name=pulumi.get(__ret__, 'vpc_name'),
        zone_id=pulumi.get(__ret__, 'zone_id'),
        zone_name=pulumi.get(__ret__, 'zone_name'))
def get_instance_output(id: Optional[pulumi.Input[builtins.str]] = None,
                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetInstanceResult]:
    """
    Data Source schema for Byteplus::HBase::Instance


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('bytepluscc:hbase/getInstance:getInstance', __args__, opts=opts, typ=GetInstanceResult)
    return __ret__.apply(lambda __response__: GetInstanceResult(
        auto_renew=pulumi.get(__response__, 'auto_renew'),
        charge_status=pulumi.get(__response__, 'charge_status'),
        charge_type=pulumi.get(__response__, 'charge_type'),
        cold_storage=pulumi.get(__response__, 'cold_storage'),
        create_time=pulumi.get(__response__, 'create_time'),
        deletion_protection=pulumi.get(__response__, 'deletion_protection'),
        enable_auth=pulumi.get(__response__, 'enable_auth'),
        enable_cloud_storage=pulumi.get(__response__, 'enable_cloud_storage'),
        endpoints=pulumi.get(__response__, 'endpoints'),
        engine_version=pulumi.get(__response__, 'engine_version'),
        id=pulumi.get(__response__, 'id'),
        instance_id=pulumi.get(__response__, 'instance_id'),
        instance_name=pulumi.get(__response__, 'instance_name'),
        instance_type=pulumi.get(__response__, 'instance_type'),
        master_count=pulumi.get(__response__, 'master_count'),
        master_spec=pulumi.get(__response__, 'master_spec'),
        multi_az=pulumi.get(__response__, 'multi_az'),
        primary_subnet_id=pulumi.get(__response__, 'primary_subnet_id'),
        primary_zone_id=pulumi.get(__response__, 'primary_zone_id'),
        project_name=pulumi.get(__response__, 'project_name'),
        purchase_months=pulumi.get(__response__, 'purchase_months'),
        region_id=pulumi.get(__response__, 'region_id'),
        rs_count=pulumi.get(__response__, 'rs_count'),
        rs_spec=pulumi.get(__response__, 'rs_spec'),
        standby_subnet_id=pulumi.get(__response__, 'standby_subnet_id'),
        standby_zone_id=pulumi.get(__response__, 'standby_zone_id'),
        status=pulumi.get(__response__, 'status'),
        storage_capacity=pulumi.get(__response__, 'storage_capacity'),
        storage_type=pulumi.get(__response__, 'storage_type'),
        subnet_id=pulumi.get(__response__, 'subnet_id'),
        tags=pulumi.get(__response__, 'tags'),
        used_cold_storage=pulumi.get(__response__, 'used_cold_storage'),
        used_storage=pulumi.get(__response__, 'used_storage'),
        vpc_id=pulumi.get(__response__, 'vpc_id'),
        vpc_name=pulumi.get(__response__, 'vpc_name'),
        zone_id=pulumi.get(__response__, 'zone_id'),
        zone_name=pulumi.get(__response__, 'zone_name')))
