# 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 warnings
import pulumi
import pulumi.runtime
from typing import Any, Dict, List, Mapping, Optional, Tuple, Union
from .. import _utilities, _tables

__all__ = [
    'InstanceParameter',
    'GetInstanceClassesClassResult',
    'GetInstanceEnginesInstanceEngineResult',
    'GetInstancesInstanceResult',
    'GetZonesZoneResult',
]

@pulumi.output_type
class InstanceParameter(dict):
    def __init__(__self__, *,
                 name: str,
                 value: str):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

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

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

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class GetInstanceClassesClassResult(dict):
    def __init__(__self__, *,
                 instance_class: str,
                 price: str):
        """
        :param str instance_class: KVStore available instance class.
        """
        pulumi.set(__self__, "instance_class", instance_class)
        pulumi.set(__self__, "price", price)

    @property
    @pulumi.getter(name="instanceClass")
    def instance_class(self) -> str:
        """
        KVStore available instance class.
        """
        return pulumi.get(self, "instance_class")

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


@pulumi.output_type
class GetInstanceEnginesInstanceEngineResult(dict):
    def __init__(__self__, *,
                 engine: str,
                 engine_version: str,
                 zone_id: str):
        """
        :param str engine: Database type. Options are `Redis`, `Memcache`. Default to `Redis`.
        :param str engine_version: Database version required by the user. Value options of Redis can refer to the latest docs [detail info](https://www.alibabacloud.com/help/doc-detail/60873.htm) `EngineVersion`. Value of Memcache should be empty.
        :param str zone_id: The Zone to launch the KVStore instance.
        """
        pulumi.set(__self__, "engine", engine)
        pulumi.set(__self__, "engine_version", engine_version)
        pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter
    def engine(self) -> str:
        """
        Database type. Options are `Redis`, `Memcache`. Default to `Redis`.
        """
        return pulumi.get(self, "engine")

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> str:
        """
        Database version required by the user. Value options of Redis can refer to the latest docs [detail info](https://www.alibabacloud.com/help/doc-detail/60873.htm) `EngineVersion`. Value of Memcache should be empty.
        """
        return pulumi.get(self, "engine_version")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> str:
        """
        The Zone to launch the KVStore instance.
        """
        return pulumi.get(self, "zone_id")


@pulumi.output_type
class GetInstancesInstanceResult(dict):
    def __init__(__self__, *,
                 availability_zone: str,
                 bandwidth: float,
                 capacity: float,
                 charge_type: str,
                 connection_domain: str,
                 connections: float,
                 create_time: str,
                 expire_time: str,
                 id: str,
                 instance_class: str,
                 instance_type: str,
                 name: str,
                 port: float,
                 private_ip: str,
                 region_id: str,
                 status: str,
                 user_name: str,
                 vpc_id: str,
                 vswitch_id: str):
        """
        :param str availability_zone: Availability zone.
        :param float bandwidth: Instance bandwidth limit. Unit: Mbit/s.
        :param float capacity: Capacity of the applied ApsaraDB for Redis instance. Unit: MB.
        :param str charge_type: Billing method. Value options: `PostPaid` for  Pay-As-You-Go and `PrePaid` for subscription.
        :param float connections: Instance connection quantity limit. Unit: count.
        :param str create_time: Creation time of the instance.
        :param str expire_time: Expiration time. Pay-As-You-Go instances are never expire.
        :param str id: The ID of the RKV instance.
        :param str instance_class: Type of the applied ApsaraDB for Redis instance.
               For more information, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/61135.htm).
        :param str instance_type: Database type. Options are `Memcache`, and `Redis`. If no value is specified, all types are returned.
        :param str name: The name of the RKV instance.
        :param float port: Connection port of the instance.
        :param str private_ip: Private IP address of the instance.
        :param str region_id: Region ID the instance belongs to.
        :param str status: Status of the instance.
        :param str vpc_id: Used to retrieve instances belong to specified VPC.
        :param str vswitch_id: Used to retrieve instances belong to specified `vswitch` resources.
        """
        pulumi.set(__self__, "availability_zone", availability_zone)
        pulumi.set(__self__, "bandwidth", bandwidth)
        pulumi.set(__self__, "capacity", capacity)
        pulumi.set(__self__, "charge_type", charge_type)
        pulumi.set(__self__, "connection_domain", connection_domain)
        pulumi.set(__self__, "connections", connections)
        pulumi.set(__self__, "create_time", create_time)
        pulumi.set(__self__, "expire_time", expire_time)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "instance_class", instance_class)
        pulumi.set(__self__, "instance_type", instance_type)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "private_ip", private_ip)
        pulumi.set(__self__, "region_id", region_id)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "user_name", user_name)
        pulumi.set(__self__, "vpc_id", vpc_id)
        pulumi.set(__self__, "vswitch_id", vswitch_id)

    @property
    @pulumi.getter(name="availabilityZone")
    def availability_zone(self) -> str:
        """
        Availability zone.
        """
        return pulumi.get(self, "availability_zone")

    @property
    @pulumi.getter
    def bandwidth(self) -> float:
        """
        Instance bandwidth limit. Unit: Mbit/s.
        """
        return pulumi.get(self, "bandwidth")

    @property
    @pulumi.getter
    def capacity(self) -> float:
        """
        Capacity of the applied ApsaraDB for Redis instance. Unit: MB.
        """
        return pulumi.get(self, "capacity")

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> 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="connectionDomain")
    def connection_domain(self) -> str:
        return pulumi.get(self, "connection_domain")

    @property
    @pulumi.getter
    def connections(self) -> float:
        """
        Instance connection quantity limit. Unit: count.
        """
        return pulumi.get(self, "connections")

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

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

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

    @property
    @pulumi.getter(name="instanceClass")
    def instance_class(self) -> str:
        """
        Type of the applied ApsaraDB for Redis instance.
        For more information, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/61135.htm).
        """
        return pulumi.get(self, "instance_class")

    @property
    @pulumi.getter(name="instanceType")
    def instance_type(self) -> str:
        """
        Database type. Options are `Memcache`, and `Redis`. If no value is specified, all types are returned.
        """
        return pulumi.get(self, "instance_type")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the RKV instance.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def port(self) -> float:
        """
        Connection port of the instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="privateIp")
    def private_ip(self) -> str:
        """
        Private IP address of the instance.
        """
        return pulumi.get(self, "private_ip")

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

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

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        return pulumi.get(self, "user_name")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> str:
        """
        Used to retrieve instances belong to specified VPC.
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="vswitchId")
    def vswitch_id(self) -> str:
        """
        Used to retrieve instances belong to specified `vswitch` resources.
        """
        return pulumi.get(self, "vswitch_id")


@pulumi.output_type
class GetZonesZoneResult(dict):
    def __init__(__self__, *,
                 id: str,
                 multi_zone_ids: List[str]):
        """
        :param str id: ID of the zone.
        :param List[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) -> str:
        """
        ID of the zone.
        """
        return pulumi.get(self, "id")

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


