# 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__ = [
    'LakeAccountAccountPrivilege',
    'LakeAccountAccountPrivilegePrivilegeObject',
    'GetClustersClusterResult',
    'GetClustersClusterAvailableKernelVersionResult',
    'GetDBClusterLakeVersionsVersionResult',
    'GetDBClustersClusterResult',
    'GetDBClustersClusterAvailableKernelVersionResult',
    'GetResourceGroupsGroupResult',
    'GetZonesZoneResult',
]

@pulumi.output_type
class LakeAccountAccountPrivilege(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "privilegeObject":
            suggest = "privilege_object"
        elif key == "privilegeType":
            suggest = "privilege_type"

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

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

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

    def __init__(__self__, *,
                 privilege_object: Optional['outputs.LakeAccountAccountPrivilegePrivilegeObject'] = None,
                 privilege_type: Optional[builtins.str] = None,
                 privileges: Optional[Sequence[builtins.str]] = None):
        """
        :param 'LakeAccountAccountPrivilegePrivilegeObjectArgs' privilege_object: Object associated to privileges. See `privilege_object` below.
        :param builtins.str privilege_type: The type of privileges.
        :param Sequence[builtins.str] privileges: privilege list.
        """
        if privilege_object is not None:
            pulumi.set(__self__, "privilege_object", privilege_object)
        if privilege_type is not None:
            pulumi.set(__self__, "privilege_type", privilege_type)
        if privileges is not None:
            pulumi.set(__self__, "privileges", privileges)

    @property
    @pulumi.getter(name="privilegeObject")
    def privilege_object(self) -> Optional['outputs.LakeAccountAccountPrivilegePrivilegeObject']:
        """
        Object associated to privileges. See `privilege_object` below.
        """
        return pulumi.get(self, "privilege_object")

    @property
    @pulumi.getter(name="privilegeType")
    def privilege_type(self) -> Optional[builtins.str]:
        """
        The type of privileges.
        """
        return pulumi.get(self, "privilege_type")

    @property
    @pulumi.getter
    def privileges(self) -> Optional[Sequence[builtins.str]]:
        """
        privilege list.
        """
        return pulumi.get(self, "privileges")


@pulumi.output_type
class LakeAccountAccountPrivilegePrivilegeObject(dict):
    def __init__(__self__, *,
                 column: Optional[builtins.str] = None,
                 database: Optional[builtins.str] = None,
                 table: Optional[builtins.str] = None):
        """
        :param builtins.str column: The name of column.
        :param builtins.str database: The name of database.
        :param builtins.str table: The name of table.
        """
        if column is not None:
            pulumi.set(__self__, "column", column)
        if database is not None:
            pulumi.set(__self__, "database", database)
        if table is not None:
            pulumi.set(__self__, "table", table)

    @property
    @pulumi.getter
    def column(self) -> Optional[builtins.str]:
        """
        The name of column.
        """
        return pulumi.get(self, "column")

    @property
    @pulumi.getter
    def database(self) -> Optional[builtins.str]:
        """
        The name of database.
        """
        return pulumi.get(self, "database")

    @property
    @pulumi.getter
    def table(self) -> Optional[builtins.str]:
        """
        The name of table.
        """
        return pulumi.get(self, "table")


@pulumi.output_type
class GetClustersClusterResult(dict):
    def __init__(__self__, *,
                 auto_renew_period: builtins.int,
                 available_kernel_versions: Sequence['outputs.GetClustersClusterAvailableKernelVersionResult'],
                 charge_type: builtins.str,
                 commodity_code: builtins.str,
                 compute_resource: builtins.str,
                 connection_string: builtins.str,
                 create_time: builtins.str,
                 db_cluster_category: builtins.str,
                 db_cluster_id: builtins.str,
                 db_cluster_network_type: builtins.str,
                 db_cluster_type: builtins.str,
                 db_cluster_version: builtins.str,
                 db_node_class: builtins.str,
                 db_node_count: builtins.int,
                 db_node_storage: builtins.int,
                 description: builtins.str,
                 disk_type: builtins.str,
                 dts_job_id: builtins.str,
                 elastic_io_resource: builtins.int,
                 engine: builtins.str,
                 engine_version: builtins.str,
                 executor_count: builtins.str,
                 expire_time: builtins.str,
                 expired: builtins.str,
                 id: builtins.str,
                 kernel_version: builtins.str,
                 lock_mode: builtins.str,
                 lock_reason: builtins.str,
                 maintain_time: builtins.str,
                 mode: builtins.str,
                 network_type: builtins.str,
                 payment_type: builtins.str,
                 port: builtins.int,
                 rds_instance_id: builtins.str,
                 region_id: builtins.str,
                 renewal_status: builtins.str,
                 resource_group_id: builtins.str,
                 security_ips: Sequence[builtins.str],
                 status: builtins.str,
                 storage_resource: builtins.str,
                 tags: Mapping[str, builtins.str],
                 vpc_cloud_instance_id: builtins.str,
                 vpc_id: builtins.str,
                 vswitch_id: builtins.str,
                 zone_id: builtins.str):
        """
        :param builtins.str charge_type: Billing method. Value options: `PostPaid` for Pay-As-You-Go and `PrePaid` for subscription.
        :param builtins.str create_time: The CreateTime of the ADB cluster.
        :param builtins.str db_node_class: The DBNodeClass of the ADB cluster.
        :param builtins.int db_node_count: The DBNodeCount of the ADB cluster.
        :param builtins.int db_node_storage: The DBNodeStorage of the ADB cluster.
        :param builtins.str description: The description of the ADB cluster.
        :param builtins.str expire_time: Expiration time. Pay-As-You-Go clusters never expire.
        :param builtins.str expired: The expired of the ADB cluster.
        :param builtins.str id: The ID of the ADB cluster.
        :param builtins.str lock_mode: The LockMode of the ADB cluster.
        :param builtins.str network_type: The DBClusterNetworkType of the ADB cluster.
        :param builtins.str region_id: Region ID the cluster belongs to.
        :param builtins.str status: The status of the cluster. Valid values: `Preparing`, `Creating`, `Restoring`, `Running`, `Deleting`, `ClassChanging`, `NetAddressCreating`, `NetAddressDeleting`. For more information, see [Cluster status](https://www.alibabacloud.com/help/doc-detail/143075.htm).
        :param Mapping[str, builtins.str] tags: A mapping of tags to assign to the resource.
               - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
               - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
        :param builtins.str vpc_id: ID of the VPC the cluster belongs to.
        :param builtins.str zone_id: The ZoneId of the ADB cluster.
        """
        pulumi.set(__self__, "auto_renew_period", auto_renew_period)
        pulumi.set(__self__, "available_kernel_versions", available_kernel_versions)
        pulumi.set(__self__, "charge_type", charge_type)
        pulumi.set(__self__, "commodity_code", commodity_code)
        pulumi.set(__self__, "compute_resource", compute_resource)
        pulumi.set(__self__, "connection_string", connection_string)
        pulumi.set(__self__, "create_time", create_time)
        pulumi.set(__self__, "db_cluster_category", db_cluster_category)
        pulumi.set(__self__, "db_cluster_id", db_cluster_id)
        pulumi.set(__self__, "db_cluster_network_type", db_cluster_network_type)
        pulumi.set(__self__, "db_cluster_type", db_cluster_type)
        pulumi.set(__self__, "db_cluster_version", db_cluster_version)
        pulumi.set(__self__, "db_node_class", db_node_class)
        pulumi.set(__self__, "db_node_count", db_node_count)
        pulumi.set(__self__, "db_node_storage", db_node_storage)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "disk_type", disk_type)
        pulumi.set(__self__, "dts_job_id", dts_job_id)
        pulumi.set(__self__, "elastic_io_resource", elastic_io_resource)
        pulumi.set(__self__, "engine", engine)
        pulumi.set(__self__, "engine_version", engine_version)
        pulumi.set(__self__, "executor_count", executor_count)
        pulumi.set(__self__, "expire_time", expire_time)
        pulumi.set(__self__, "expired", expired)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "kernel_version", kernel_version)
        pulumi.set(__self__, "lock_mode", lock_mode)
        pulumi.set(__self__, "lock_reason", lock_reason)
        pulumi.set(__self__, "maintain_time", maintain_time)
        pulumi.set(__self__, "mode", mode)
        pulumi.set(__self__, "network_type", network_type)
        pulumi.set(__self__, "payment_type", payment_type)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "rds_instance_id", rds_instance_id)
        pulumi.set(__self__, "region_id", region_id)
        pulumi.set(__self__, "renewal_status", renewal_status)
        pulumi.set(__self__, "resource_group_id", resource_group_id)
        pulumi.set(__self__, "security_ips", security_ips)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "storage_resource", storage_resource)
        pulumi.set(__self__, "tags", tags)
        pulumi.set(__self__, "vpc_cloud_instance_id", vpc_cloud_instance_id)
        pulumi.set(__self__, "vpc_id", vpc_id)
        pulumi.set(__self__, "vswitch_id", vswitch_id)
        pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter(name="autoRenewPeriod")
    def auto_renew_period(self) -> builtins.int:
        return pulumi.get(self, "auto_renew_period")

    @property
    @pulumi.getter(name="availableKernelVersions")
    def available_kernel_versions(self) -> Sequence['outputs.GetClustersClusterAvailableKernelVersionResult']:
        return pulumi.get(self, "available_kernel_versions")

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> builtins.str:
        """
        Billing method. Value options: `PostPaid` for Pay-As-You-Go and `PrePaid` for subscription.
        """
        return pulumi.get(self, "charge_type")

    @property
    @pulumi.getter(name="commodityCode")
    def commodity_code(self) -> builtins.str:
        return pulumi.get(self, "commodity_code")

    @property
    @pulumi.getter(name="computeResource")
    def compute_resource(self) -> builtins.str:
        return pulumi.get(self, "compute_resource")

    @property
    @pulumi.getter(name="connectionString")
    def connection_string(self) -> builtins.str:
        return pulumi.get(self, "connection_string")

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> builtins.str:
        """
        The CreateTime of the ADB cluster.
        """
        return pulumi.get(self, "create_time")

    @property
    @pulumi.getter(name="dbClusterCategory")
    def db_cluster_category(self) -> builtins.str:
        return pulumi.get(self, "db_cluster_category")

    @property
    @pulumi.getter(name="dbClusterId")
    def db_cluster_id(self) -> builtins.str:
        return pulumi.get(self, "db_cluster_id")

    @property
    @pulumi.getter(name="dbClusterNetworkType")
    def db_cluster_network_type(self) -> builtins.str:
        return pulumi.get(self, "db_cluster_network_type")

    @property
    @pulumi.getter(name="dbClusterType")
    def db_cluster_type(self) -> builtins.str:
        return pulumi.get(self, "db_cluster_type")

    @property
    @pulumi.getter(name="dbClusterVersion")
    def db_cluster_version(self) -> builtins.str:
        return pulumi.get(self, "db_cluster_version")

    @property
    @pulumi.getter(name="dbNodeClass")
    def db_node_class(self) -> builtins.str:
        """
        The DBNodeClass of the ADB cluster.
        """
        return pulumi.get(self, "db_node_class")

    @property
    @pulumi.getter(name="dbNodeCount")
    def db_node_count(self) -> builtins.int:
        """
        The DBNodeCount of the ADB cluster.
        """
        return pulumi.get(self, "db_node_count")

    @property
    @pulumi.getter(name="dbNodeStorage")
    def db_node_storage(self) -> builtins.int:
        """
        The DBNodeStorage of the ADB cluster.
        """
        return pulumi.get(self, "db_node_storage")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        The description of the ADB cluster.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="diskType")
    def disk_type(self) -> builtins.str:
        return pulumi.get(self, "disk_type")

    @property
    @pulumi.getter(name="dtsJobId")
    def dts_job_id(self) -> builtins.str:
        return pulumi.get(self, "dts_job_id")

    @property
    @pulumi.getter(name="elasticIoResource")
    def elastic_io_resource(self) -> builtins.int:
        return pulumi.get(self, "elastic_io_resource")

    @property
    @pulumi.getter
    def engine(self) -> builtins.str:
        return pulumi.get(self, "engine")

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> builtins.str:
        return pulumi.get(self, "engine_version")

    @property
    @pulumi.getter(name="executorCount")
    def executor_count(self) -> builtins.str:
        return pulumi.get(self, "executor_count")

    @property
    @pulumi.getter(name="expireTime")
    def expire_time(self) -> builtins.str:
        """
        Expiration time. Pay-As-You-Go clusters never expire.
        """
        return pulumi.get(self, "expire_time")

    @property
    @pulumi.getter
    def expired(self) -> builtins.str:
        """
        The expired of the ADB cluster.
        """
        return pulumi.get(self, "expired")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        The ID of the ADB cluster.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="kernelVersion")
    def kernel_version(self) -> builtins.str:
        return pulumi.get(self, "kernel_version")

    @property
    @pulumi.getter(name="lockMode")
    def lock_mode(self) -> builtins.str:
        """
        The LockMode of the ADB cluster.
        """
        return pulumi.get(self, "lock_mode")

    @property
    @pulumi.getter(name="lockReason")
    def lock_reason(self) -> builtins.str:
        return pulumi.get(self, "lock_reason")

    @property
    @pulumi.getter(name="maintainTime")
    def maintain_time(self) -> builtins.str:
        return pulumi.get(self, "maintain_time")

    @property
    @pulumi.getter
    def mode(self) -> builtins.str:
        return pulumi.get(self, "mode")

    @property
    @pulumi.getter(name="networkType")
    def network_type(self) -> builtins.str:
        """
        The DBClusterNetworkType of the ADB cluster.
        """
        return pulumi.get(self, "network_type")

    @property
    @pulumi.getter(name="paymentType")
    def payment_type(self) -> builtins.str:
        return pulumi.get(self, "payment_type")

    @property
    @pulumi.getter
    def port(self) -> builtins.int:
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="rdsInstanceId")
    def rds_instance_id(self) -> builtins.str:
        return pulumi.get(self, "rds_instance_id")

    @property
    @pulumi.getter(name="regionId")
    def region_id(self) -> builtins.str:
        """
        Region ID the cluster belongs to.
        """
        return pulumi.get(self, "region_id")

    @property
    @pulumi.getter(name="renewalStatus")
    def renewal_status(self) -> builtins.str:
        return pulumi.get(self, "renewal_status")

    @property
    @pulumi.getter(name="resourceGroupId")
    def resource_group_id(self) -> builtins.str:
        return pulumi.get(self, "resource_group_id")

    @property
    @pulumi.getter(name="securityIps")
    def security_ips(self) -> Sequence[builtins.str]:
        return pulumi.get(self, "security_ips")

    @property
    @pulumi.getter
    def status(self) -> builtins.str:
        """
        The status of the cluster. Valid values: `Preparing`, `Creating`, `Restoring`, `Running`, `Deleting`, `ClassChanging`, `NetAddressCreating`, `NetAddressDeleting`. For more information, see [Cluster status](https://www.alibabacloud.com/help/doc-detail/143075.htm).
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="storageResource")
    def storage_resource(self) -> builtins.str:
        return pulumi.get(self, "storage_resource")

    @property
    @pulumi.getter
    def tags(self) -> Mapping[str, builtins.str]:
        """
        A mapping of tags to assign to the resource.
        - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
        - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="vpcCloudInstanceId")
    def vpc_cloud_instance_id(self) -> builtins.str:
        return pulumi.get(self, "vpc_cloud_instance_id")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> builtins.str:
        """
        ID of the VPC the cluster belongs to.
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="vswitchId")
    def vswitch_id(self) -> builtins.str:
        return pulumi.get(self, "vswitch_id")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> builtins.str:
        """
        The ZoneId of the ADB cluster.
        """
        return pulumi.get(self, "zone_id")


@pulumi.output_type
class GetClustersClusterAvailableKernelVersionResult(dict):
    def __init__(__self__, *,
                 expire_date: builtins.str,
                 kernel_version: builtins.str,
                 release_date: builtins.str):
        pulumi.set(__self__, "expire_date", expire_date)
        pulumi.set(__self__, "kernel_version", kernel_version)
        pulumi.set(__self__, "release_date", release_date)

    @property
    @pulumi.getter(name="expireDate")
    def expire_date(self) -> builtins.str:
        return pulumi.get(self, "expire_date")

    @property
    @pulumi.getter(name="kernelVersion")
    def kernel_version(self) -> builtins.str:
        return pulumi.get(self, "kernel_version")

    @property
    @pulumi.getter(name="releaseDate")
    def release_date(self) -> builtins.str:
        return pulumi.get(self, "release_date")


@pulumi.output_type
class GetDBClusterLakeVersionsVersionResult(dict):
    def __init__(__self__, *,
                 commodity_code: builtins.str,
                 compute_resource: builtins.str,
                 connection_string: builtins.str,
                 create_time: builtins.str,
                 db_cluster_id: builtins.str,
                 db_cluster_version: builtins.str,
                 engine: builtins.str,
                 engine_version: builtins.str,
                 expire_time: builtins.str,
                 expired: builtins.str,
                 id: builtins.str,
                 lock_mode: builtins.str,
                 lock_reason: builtins.str,
                 payment_type: builtins.str,
                 port: builtins.str,
                 resource_group_id: builtins.str,
                 status: builtins.str,
                 storage_resource: builtins.str,
                 vpc_id: builtins.str,
                 vswitch_id: builtins.str,
                 zone_id: builtins.str):
        """
        :param builtins.str commodity_code: The name of the service.
        :param builtins.str compute_resource: The specifications of computing resources in elastic mode. The increase of resources can speed up queries.
        :param builtins.str connection_string: The endpoint of the cluster.
        :param builtins.str create_time: The CreateTime of the ADB cluster.
        :param builtins.str db_cluster_id: The ID of the DBCluster.
        :param builtins.str db_cluster_version: The db cluster version.
        :param builtins.str engine: The engine of the database.
        :param builtins.str engine_version: The engine version of the database.
        :param builtins.str expire_time: The time when the cluster expires.
        :param builtins.str expired: Indicates whether the cluster has expired.
        :param builtins.str id: The ID of the DBCluster.
        :param builtins.str lock_mode: The lock mode of the cluster.
        :param builtins.str lock_reason: The reason why the cluster is locked.
        :param builtins.str payment_type: The payment type of the resource.
        :param builtins.str port: The port that is used to access the cluster.
        :param builtins.str resource_group_id: The ID of the resource group.
        :param builtins.str status: The status of the resource. Valid values: `Preparing`, `Creating`, `Restoring`, `Running`, `Deleting`, `ClassChanging`, `NetAddressCreating`, `NetAddressDeleting`.
        :param builtins.str storage_resource: The specifications of storage resources in elastic mode. The resources are used for data read and write operations.
        :param builtins.str vpc_id: The vpc id.
        :param builtins.str vswitch_id: The vswitch id.
        :param builtins.str zone_id: The zone ID  of the resource.
        """
        pulumi.set(__self__, "commodity_code", commodity_code)
        pulumi.set(__self__, "compute_resource", compute_resource)
        pulumi.set(__self__, "connection_string", connection_string)
        pulumi.set(__self__, "create_time", create_time)
        pulumi.set(__self__, "db_cluster_id", db_cluster_id)
        pulumi.set(__self__, "db_cluster_version", db_cluster_version)
        pulumi.set(__self__, "engine", engine)
        pulumi.set(__self__, "engine_version", engine_version)
        pulumi.set(__self__, "expire_time", expire_time)
        pulumi.set(__self__, "expired", expired)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lock_mode", lock_mode)
        pulumi.set(__self__, "lock_reason", lock_reason)
        pulumi.set(__self__, "payment_type", payment_type)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "resource_group_id", resource_group_id)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "storage_resource", storage_resource)
        pulumi.set(__self__, "vpc_id", vpc_id)
        pulumi.set(__self__, "vswitch_id", vswitch_id)
        pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter(name="commodityCode")
    def commodity_code(self) -> builtins.str:
        """
        The name of the service.
        """
        return pulumi.get(self, "commodity_code")

    @property
    @pulumi.getter(name="computeResource")
    def compute_resource(self) -> builtins.str:
        """
        The specifications of computing resources in elastic mode. The increase of resources can speed up queries.
        """
        return pulumi.get(self, "compute_resource")

    @property
    @pulumi.getter(name="connectionString")
    def connection_string(self) -> builtins.str:
        """
        The endpoint of the cluster.
        """
        return pulumi.get(self, "connection_string")

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> builtins.str:
        """
        The CreateTime of the ADB cluster.
        """
        return pulumi.get(self, "create_time")

    @property
    @pulumi.getter(name="dbClusterId")
    def db_cluster_id(self) -> builtins.str:
        """
        The ID of the DBCluster.
        """
        return pulumi.get(self, "db_cluster_id")

    @property
    @pulumi.getter(name="dbClusterVersion")
    def db_cluster_version(self) -> builtins.str:
        """
        The db cluster version.
        """
        return pulumi.get(self, "db_cluster_version")

    @property
    @pulumi.getter
    def engine(self) -> builtins.str:
        """
        The engine of the database.
        """
        return pulumi.get(self, "engine")

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> builtins.str:
        """
        The engine version of the database.
        """
        return pulumi.get(self, "engine_version")

    @property
    @pulumi.getter(name="expireTime")
    def expire_time(self) -> builtins.str:
        """
        The time when the cluster expires.
        """
        return pulumi.get(self, "expire_time")

    @property
    @pulumi.getter
    def expired(self) -> builtins.str:
        """
        Indicates whether the cluster has expired.
        """
        return pulumi.get(self, "expired")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        The ID of the DBCluster.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lockMode")
    def lock_mode(self) -> builtins.str:
        """
        The lock mode of the cluster.
        """
        return pulumi.get(self, "lock_mode")

    @property
    @pulumi.getter(name="lockReason")
    def lock_reason(self) -> builtins.str:
        """
        The reason why the cluster is locked.
        """
        return pulumi.get(self, "lock_reason")

    @property
    @pulumi.getter(name="paymentType")
    def payment_type(self) -> builtins.str:
        """
        The payment type of the resource.
        """
        return pulumi.get(self, "payment_type")

    @property
    @pulumi.getter
    def port(self) -> builtins.str:
        """
        The port that is used to access the cluster.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="resourceGroupId")
    def resource_group_id(self) -> builtins.str:
        """
        The ID of the resource group.
        """
        return pulumi.get(self, "resource_group_id")

    @property
    @pulumi.getter
    def status(self) -> builtins.str:
        """
        The status of the resource. Valid values: `Preparing`, `Creating`, `Restoring`, `Running`, `Deleting`, `ClassChanging`, `NetAddressCreating`, `NetAddressDeleting`.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="storageResource")
    def storage_resource(self) -> builtins.str:
        """
        The specifications of storage resources in elastic mode. The resources are used for data read and write operations.
        """
        return pulumi.get(self, "storage_resource")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> builtins.str:
        """
        The vpc id.
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="vswitchId")
    def vswitch_id(self) -> builtins.str:
        """
        The vswitch id.
        """
        return pulumi.get(self, "vswitch_id")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> builtins.str:
        """
        The zone ID  of the resource.
        """
        return pulumi.get(self, "zone_id")


@pulumi.output_type
class GetDBClustersClusterResult(dict):
    def __init__(__self__, *,
                 auto_renew_period: builtins.int,
                 available_kernel_versions: Sequence['outputs.GetDBClustersClusterAvailableKernelVersionResult'],
                 charge_type: builtins.str,
                 commodity_code: builtins.str,
                 compute_resource: builtins.str,
                 connection_string: builtins.str,
                 create_time: builtins.str,
                 db_cluster_category: builtins.str,
                 db_cluster_id: builtins.str,
                 db_cluster_network_type: builtins.str,
                 db_cluster_type: builtins.str,
                 db_cluster_version: builtins.str,
                 db_node_class: builtins.str,
                 db_node_count: builtins.int,
                 db_node_storage: builtins.int,
                 description: builtins.str,
                 disk_type: builtins.str,
                 dts_job_id: builtins.str,
                 elastic_io_resource: builtins.int,
                 engine: builtins.str,
                 engine_version: builtins.str,
                 executor_count: builtins.str,
                 expire_time: builtins.str,
                 expired: builtins.str,
                 id: builtins.str,
                 kernel_version: builtins.str,
                 lock_mode: builtins.str,
                 lock_reason: builtins.str,
                 maintain_time: builtins.str,
                 mode: builtins.str,
                 network_type: builtins.str,
                 payment_type: builtins.str,
                 port: builtins.int,
                 rds_instance_id: builtins.str,
                 region_id: builtins.str,
                 renewal_status: builtins.str,
                 resource_group_id: builtins.str,
                 security_ips: Sequence[builtins.str],
                 status: builtins.str,
                 storage_resource: builtins.str,
                 tags: Mapping[str, builtins.str],
                 vpc_cloud_instance_id: builtins.str,
                 vpc_id: builtins.str,
                 vswitch_id: builtins.str,
                 zone_id: builtins.str):
        """
        :param builtins.int auto_renew_period: Auto-renewal period of an cluster, in the unit of the month.
        :param Sequence['GetDBClustersClusterAvailableKernelVersionArgs'] available_kernel_versions: The minor versions to which you can update the current minor version of the cluster.
        :param builtins.str charge_type: The payment type of the resource.
        :param builtins.str commodity_code: The name of the service.
        :param builtins.str compute_resource: The specifications of computing resources in elastic mode. The increase of resources can speed up queries. AnalyticDB for MySQL automatically scales computing resources.
        :param builtins.str connection_string: The endpoint of the cluster.
        :param builtins.str create_time: The CreateTime of the ADB cluster.
        :param builtins.str db_cluster_category: The db cluster category.
        :param builtins.str db_cluster_id: The db cluster id.
        :param builtins.str db_cluster_network_type: The db cluster network type.
        :param builtins.str db_cluster_type: The db cluster type.
        :param builtins.str db_cluster_version: The db cluster version.
        :param builtins.str db_node_class: The db node class.
        :param builtins.int db_node_count: The db node count.
        :param builtins.int db_node_storage: The db node storage.
        :param builtins.str description: The description of DBCluster.
        :param builtins.str disk_type: The type of the disk.
        :param builtins.str dts_job_id: The ID of the data synchronization task in Data Transmission Service (DTS). This parameter is valid only for analytic instances.
        :param builtins.int elastic_io_resource: The elastic io resource.
        :param builtins.str engine: The engine of the database.
        :param builtins.str engine_version: The engine version of the database.
        :param builtins.str executor_count: The number of nodes. The node resources are used for data computing in elastic mode.
        :param builtins.str expire_time: The time when the cluster expires.
        :param builtins.str expired: Indicates whether the cluster has expired.
        :param builtins.str id: The ID of the DBCluster.
        :param builtins.str kernel_version: The minor version. Example: 3.1.9.
        :param builtins.str lock_mode: The lock mode of the cluster.
        :param builtins.str lock_reason: The reason why the cluster is locked.
        :param builtins.str maintain_time: The maintenance window of the cluster.
        :param builtins.str mode: The lock mode of the cluster.
        :param builtins.str network_type: The db cluster network type.
        :param builtins.str payment_type: The payment type of the resource.
        :param builtins.int port: The port that is used to access the cluster.
        :param builtins.str rds_instance_id: The ID of the ApsaraDB RDS instance from which data is synchronized to the cluster. This parameter is valid only for analytic instances.
        :param builtins.str region_id: The region ID  of the resource.
        :param builtins.str renewal_status: The status of renewal.
        :param builtins.str resource_group_id: The ID of the resource group.
        :param Sequence[builtins.str] security_ips: List of IP addresses allowed to access all databases of an cluster.
        :param builtins.str status: The status of the resource.
        :param builtins.str storage_resource: The specifications of storage resources in elastic mode. The resources are used for data read and write operations. The increase of resources can improve the read and write performance of your cluster.
        :param Mapping[str, builtins.str] tags: A map of tags assigned to the cluster.
        :param builtins.str vpc_cloud_instance_id: The vpc cloud instance id.
        :param builtins.str vpc_id: The vpc id.
        :param builtins.str vswitch_id: The vswitch id.
        :param builtins.str zone_id: The zone ID  of the resource.
        """
        pulumi.set(__self__, "auto_renew_period", auto_renew_period)
        pulumi.set(__self__, "available_kernel_versions", available_kernel_versions)
        pulumi.set(__self__, "charge_type", charge_type)
        pulumi.set(__self__, "commodity_code", commodity_code)
        pulumi.set(__self__, "compute_resource", compute_resource)
        pulumi.set(__self__, "connection_string", connection_string)
        pulumi.set(__self__, "create_time", create_time)
        pulumi.set(__self__, "db_cluster_category", db_cluster_category)
        pulumi.set(__self__, "db_cluster_id", db_cluster_id)
        pulumi.set(__self__, "db_cluster_network_type", db_cluster_network_type)
        pulumi.set(__self__, "db_cluster_type", db_cluster_type)
        pulumi.set(__self__, "db_cluster_version", db_cluster_version)
        pulumi.set(__self__, "db_node_class", db_node_class)
        pulumi.set(__self__, "db_node_count", db_node_count)
        pulumi.set(__self__, "db_node_storage", db_node_storage)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "disk_type", disk_type)
        pulumi.set(__self__, "dts_job_id", dts_job_id)
        pulumi.set(__self__, "elastic_io_resource", elastic_io_resource)
        pulumi.set(__self__, "engine", engine)
        pulumi.set(__self__, "engine_version", engine_version)
        pulumi.set(__self__, "executor_count", executor_count)
        pulumi.set(__self__, "expire_time", expire_time)
        pulumi.set(__self__, "expired", expired)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "kernel_version", kernel_version)
        pulumi.set(__self__, "lock_mode", lock_mode)
        pulumi.set(__self__, "lock_reason", lock_reason)
        pulumi.set(__self__, "maintain_time", maintain_time)
        pulumi.set(__self__, "mode", mode)
        pulumi.set(__self__, "network_type", network_type)
        pulumi.set(__self__, "payment_type", payment_type)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "rds_instance_id", rds_instance_id)
        pulumi.set(__self__, "region_id", region_id)
        pulumi.set(__self__, "renewal_status", renewal_status)
        pulumi.set(__self__, "resource_group_id", resource_group_id)
        pulumi.set(__self__, "security_ips", security_ips)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "storage_resource", storage_resource)
        pulumi.set(__self__, "tags", tags)
        pulumi.set(__self__, "vpc_cloud_instance_id", vpc_cloud_instance_id)
        pulumi.set(__self__, "vpc_id", vpc_id)
        pulumi.set(__self__, "vswitch_id", vswitch_id)
        pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter(name="autoRenewPeriod")
    def auto_renew_period(self) -> builtins.int:
        """
        Auto-renewal period of an cluster, in the unit of the month.
        """
        return pulumi.get(self, "auto_renew_period")

    @property
    @pulumi.getter(name="availableKernelVersions")
    def available_kernel_versions(self) -> Sequence['outputs.GetDBClustersClusterAvailableKernelVersionResult']:
        """
        The minor versions to which you can update the current minor version of the cluster.
        """
        return pulumi.get(self, "available_kernel_versions")

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> builtins.str:
        """
        The payment type of the resource.
        """
        return pulumi.get(self, "charge_type")

    @property
    @pulumi.getter(name="commodityCode")
    def commodity_code(self) -> builtins.str:
        """
        The name of the service.
        """
        return pulumi.get(self, "commodity_code")

    @property
    @pulumi.getter(name="computeResource")
    def compute_resource(self) -> builtins.str:
        """
        The specifications of computing resources in elastic mode. The increase of resources can speed up queries. AnalyticDB for MySQL automatically scales computing resources.
        """
        return pulumi.get(self, "compute_resource")

    @property
    @pulumi.getter(name="connectionString")
    def connection_string(self) -> builtins.str:
        """
        The endpoint of the cluster.
        """
        return pulumi.get(self, "connection_string")

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> builtins.str:
        """
        The CreateTime of the ADB cluster.
        """
        return pulumi.get(self, "create_time")

    @property
    @pulumi.getter(name="dbClusterCategory")
    def db_cluster_category(self) -> builtins.str:
        """
        The db cluster category.
        """
        return pulumi.get(self, "db_cluster_category")

    @property
    @pulumi.getter(name="dbClusterId")
    def db_cluster_id(self) -> builtins.str:
        """
        The db cluster id.
        """
        return pulumi.get(self, "db_cluster_id")

    @property
    @pulumi.getter(name="dbClusterNetworkType")
    def db_cluster_network_type(self) -> builtins.str:
        """
        The db cluster network type.
        """
        return pulumi.get(self, "db_cluster_network_type")

    @property
    @pulumi.getter(name="dbClusterType")
    def db_cluster_type(self) -> builtins.str:
        """
        The db cluster type.
        """
        return pulumi.get(self, "db_cluster_type")

    @property
    @pulumi.getter(name="dbClusterVersion")
    def db_cluster_version(self) -> builtins.str:
        """
        The db cluster version.
        """
        return pulumi.get(self, "db_cluster_version")

    @property
    @pulumi.getter(name="dbNodeClass")
    def db_node_class(self) -> builtins.str:
        """
        The db node class.
        """
        return pulumi.get(self, "db_node_class")

    @property
    @pulumi.getter(name="dbNodeCount")
    def db_node_count(self) -> builtins.int:
        """
        The db node count.
        """
        return pulumi.get(self, "db_node_count")

    @property
    @pulumi.getter(name="dbNodeStorage")
    def db_node_storage(self) -> builtins.int:
        """
        The db node storage.
        """
        return pulumi.get(self, "db_node_storage")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        The description of DBCluster.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="diskType")
    def disk_type(self) -> builtins.str:
        """
        The type of the disk.
        """
        return pulumi.get(self, "disk_type")

    @property
    @pulumi.getter(name="dtsJobId")
    def dts_job_id(self) -> builtins.str:
        """
        The ID of the data synchronization task in Data Transmission Service (DTS). This parameter is valid only for analytic instances.
        """
        return pulumi.get(self, "dts_job_id")

    @property
    @pulumi.getter(name="elasticIoResource")
    def elastic_io_resource(self) -> builtins.int:
        """
        The elastic io resource.
        """
        return pulumi.get(self, "elastic_io_resource")

    @property
    @pulumi.getter
    def engine(self) -> builtins.str:
        """
        The engine of the database.
        """
        return pulumi.get(self, "engine")

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> builtins.str:
        """
        The engine version of the database.
        """
        return pulumi.get(self, "engine_version")

    @property
    @pulumi.getter(name="executorCount")
    def executor_count(self) -> builtins.str:
        """
        The number of nodes. The node resources are used for data computing in elastic mode.
        """
        return pulumi.get(self, "executor_count")

    @property
    @pulumi.getter(name="expireTime")
    def expire_time(self) -> builtins.str:
        """
        The time when the cluster expires.
        """
        return pulumi.get(self, "expire_time")

    @property
    @pulumi.getter
    def expired(self) -> builtins.str:
        """
        Indicates whether the cluster has expired.
        """
        return pulumi.get(self, "expired")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        The ID of the DBCluster.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="kernelVersion")
    def kernel_version(self) -> builtins.str:
        """
        The minor version. Example: 3.1.9.
        """
        return pulumi.get(self, "kernel_version")

    @property
    @pulumi.getter(name="lockMode")
    def lock_mode(self) -> builtins.str:
        """
        The lock mode of the cluster.
        """
        return pulumi.get(self, "lock_mode")

    @property
    @pulumi.getter(name="lockReason")
    def lock_reason(self) -> builtins.str:
        """
        The reason why the cluster is locked.
        """
        return pulumi.get(self, "lock_reason")

    @property
    @pulumi.getter(name="maintainTime")
    def maintain_time(self) -> builtins.str:
        """
        The maintenance window of the cluster.
        """
        return pulumi.get(self, "maintain_time")

    @property
    @pulumi.getter
    def mode(self) -> builtins.str:
        """
        The lock mode of the cluster.
        """
        return pulumi.get(self, "mode")

    @property
    @pulumi.getter(name="networkType")
    def network_type(self) -> builtins.str:
        """
        The db cluster network type.
        """
        return pulumi.get(self, "network_type")

    @property
    @pulumi.getter(name="paymentType")
    def payment_type(self) -> builtins.str:
        """
        The payment type of the resource.
        """
        return pulumi.get(self, "payment_type")

    @property
    @pulumi.getter
    def port(self) -> builtins.int:
        """
        The port that is used to access the cluster.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="rdsInstanceId")
    def rds_instance_id(self) -> builtins.str:
        """
        The ID of the ApsaraDB RDS instance from which data is synchronized to the cluster. This parameter is valid only for analytic instances.
        """
        return pulumi.get(self, "rds_instance_id")

    @property
    @pulumi.getter(name="regionId")
    def region_id(self) -> builtins.str:
        """
        The region ID  of the resource.
        """
        return pulumi.get(self, "region_id")

    @property
    @pulumi.getter(name="renewalStatus")
    def renewal_status(self) -> builtins.str:
        """
        The status of renewal.
        """
        return pulumi.get(self, "renewal_status")

    @property
    @pulumi.getter(name="resourceGroupId")
    def resource_group_id(self) -> builtins.str:
        """
        The ID of the resource group.
        """
        return pulumi.get(self, "resource_group_id")

    @property
    @pulumi.getter(name="securityIps")
    def security_ips(self) -> Sequence[builtins.str]:
        """
        List of IP addresses allowed to access all databases of an cluster.
        """
        return pulumi.get(self, "security_ips")

    @property
    @pulumi.getter
    def status(self) -> builtins.str:
        """
        The status of the resource.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="storageResource")
    def storage_resource(self) -> builtins.str:
        """
        The specifications of storage resources in elastic mode. The resources are used for data read and write operations. The increase of resources can improve the read and write performance of your cluster.
        """
        return pulumi.get(self, "storage_resource")

    @property
    @pulumi.getter
    def tags(self) -> Mapping[str, builtins.str]:
        """
        A map of tags assigned to the cluster.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="vpcCloudInstanceId")
    def vpc_cloud_instance_id(self) -> builtins.str:
        """
        The vpc cloud instance id.
        """
        return pulumi.get(self, "vpc_cloud_instance_id")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> builtins.str:
        """
        The vpc id.
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="vswitchId")
    def vswitch_id(self) -> builtins.str:
        """
        The vswitch id.
        """
        return pulumi.get(self, "vswitch_id")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> builtins.str:
        """
        The zone ID  of the resource.
        """
        return pulumi.get(self, "zone_id")


@pulumi.output_type
class GetDBClustersClusterAvailableKernelVersionResult(dict):
    def __init__(__self__, *,
                 expire_date: builtins.str,
                 kernel_version: builtins.str,
                 release_date: builtins.str):
        """
        :param builtins.str expire_date: The maintenance expiration time of the version
        :param builtins.str kernel_version: The minor version. Example: 3.1.9.
        :param builtins.str release_date: The time when the minor version was released.
        """
        pulumi.set(__self__, "expire_date", expire_date)
        pulumi.set(__self__, "kernel_version", kernel_version)
        pulumi.set(__self__, "release_date", release_date)

    @property
    @pulumi.getter(name="expireDate")
    def expire_date(self) -> builtins.str:
        """
        The maintenance expiration time of the version
        """
        return pulumi.get(self, "expire_date")

    @property
    @pulumi.getter(name="kernelVersion")
    def kernel_version(self) -> builtins.str:
        """
        The minor version. Example: 3.1.9.
        """
        return pulumi.get(self, "kernel_version")

    @property
    @pulumi.getter(name="releaseDate")
    def release_date(self) -> builtins.str:
        """
        The time when the minor version was released.
        """
        return pulumi.get(self, "release_date")


@pulumi.output_type
class GetResourceGroupsGroupResult(dict):
    def __init__(__self__, *,
                 create_time: builtins.str,
                 db_cluster_id: builtins.str,
                 group_name: builtins.str,
                 group_type: builtins.str,
                 id: builtins.str,
                 node_num: builtins.int,
                 user: builtins.str):
        """
        :param builtins.str create_time: Creation time.
        :param builtins.str db_cluster_id: DBClusterId
        :param builtins.str group_name: The name of the resource pool, which cannot exceed 64 bytes in length.
        :param builtins.str group_type: Query type, value description:
               * **etl**: Batch query mode.
               * **interactive**: interactive Query mode
               * **default_type**: the default query mode.
        :param builtins.str id: The `key` of the resource supplied above.The value is formulated as `<db_cluster_id>:<group_name>`.
        :param builtins.int node_num: The number of nodes. The default number of nodes is 0. The number of nodes must be less than or equal to the number of nodes whose resource name is USER_DEFAULT.
        :param builtins.str user: Binding User.
        """
        pulumi.set(__self__, "create_time", create_time)
        pulumi.set(__self__, "db_cluster_id", db_cluster_id)
        pulumi.set(__self__, "group_name", group_name)
        pulumi.set(__self__, "group_type", group_type)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "node_num", node_num)
        pulumi.set(__self__, "user", user)

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> builtins.str:
        """
        Creation time.
        """
        return pulumi.get(self, "create_time")

    @property
    @pulumi.getter(name="dbClusterId")
    def db_cluster_id(self) -> builtins.str:
        """
        DBClusterId
        """
        return pulumi.get(self, "db_cluster_id")

    @property
    @pulumi.getter(name="groupName")
    def group_name(self) -> builtins.str:
        """
        The name of the resource pool, which cannot exceed 64 bytes in length.
        """
        return pulumi.get(self, "group_name")

    @property
    @pulumi.getter(name="groupType")
    def group_type(self) -> builtins.str:
        """
        Query type, value description:
        * **etl**: Batch query mode.
        * **interactive**: interactive Query mode
        * **default_type**: the default query mode.
        """
        return pulumi.get(self, "group_type")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        The `key` of the resource supplied above.The value is formulated as `<db_cluster_id>:<group_name>`.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="nodeNum")
    def node_num(self) -> builtins.int:
        """
        The number of nodes. The default number of nodes is 0. The number of nodes must be less than or equal to the number of nodes whose resource name is USER_DEFAULT.
        """
        return pulumi.get(self, "node_num")

    @property
    @pulumi.getter
    def user(self) -> builtins.str:
        """
        Binding User.
        """
        return pulumi.get(self, "user")


@pulumi.output_type
class GetZonesZoneResult(dict):
    def __init__(__self__, *,
                 id: builtins.str,
                 multi_zone_ids: Sequence[builtins.str]):
        """
        :param builtins.str id: ID of the zone.
        :param Sequence[builtins.str] multi_zone_ids: A list of zone ids in which the multi zone.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "multi_zone_ids", multi_zone_ids)

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        ID of the zone.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="multiZoneIds")
    def multi_zone_ids(self) -> Sequence[builtins.str]:
        """
        A list of zone ids in which the multi zone.
        """
        return pulumi.get(self, "multi_zone_ids")


