# 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, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = ['InstanceArgs', 'Instance']

@pulumi.input_type
class InstanceArgs:
    def __init__(__self__, *,
                 disk_category: pulumi.Input[str],
                 payment_type: pulumi.Input[str],
                 vswitch_id: pulumi.Input[str],
                 cold_storage: Optional[pulumi.Input[int]] = None,
                 core_num: Optional[pulumi.Input[int]] = None,
                 core_spec: Optional[pulumi.Input[str]] = None,
                 deletion_proection: Optional[pulumi.Input[bool]] = None,
                 duration: Optional[pulumi.Input[str]] = None,
                 file_engine_node_count: Optional[pulumi.Input[int]] = None,
                 file_engine_specification: Optional[pulumi.Input[str]] = None,
                 group_name: Optional[pulumi.Input[str]] = None,
                 instance_name: Optional[pulumi.Input[str]] = None,
                 instance_storage: Optional[pulumi.Input[str]] = None,
                 ip_white_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 lts_node_count: Optional[pulumi.Input[int]] = None,
                 lts_node_specification: Optional[pulumi.Input[str]] = None,
                 phoenix_node_count: Optional[pulumi.Input[int]] = None,
                 phoenix_node_specification: Optional[pulumi.Input[str]] = None,
                 pricing_cycle: Optional[pulumi.Input[str]] = None,
                 search_engine_node_count: Optional[pulumi.Input[int]] = None,
                 search_engine_specification: Optional[pulumi.Input[str]] = None,
                 table_engine_node_count: Optional[pulumi.Input[int]] = None,
                 table_engine_specification: Optional[pulumi.Input[str]] = None,
                 time_series_engine_node_count: Optional[pulumi.Input[int]] = None,
                 time_serires_engine_specification: Optional[pulumi.Input[str]] = None,
                 upgrade_type: Optional[pulumi.Input[str]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a Instance resource.
        :param pulumi.Input[str] disk_category: The disk type of instance. Valid values: `capacity_cloud_storage`, `cloud_efficiency`, `cloud_essd`, `cloud_ssd`.
        :param pulumi.Input[str] payment_type: The billing method. Valid values: `PayAsYouGo` and `Subscription`.
        :param pulumi.Input[str] vswitch_id: The vswitch id.
        :param pulumi.Input[int] cold_storage: The cold storage capacity of the instance. Unit: GB.
        :param pulumi.Input[int] core_num: The core num.
        :param pulumi.Input[str] core_spec: The core spec.
        :param pulumi.Input[bool] deletion_proection: The deletion protection of instance.
        :param pulumi.Input[str] duration: The duration of paid. Valid when the `payment_type` is `Subscription`.  When `pricing_cycle` set to `Month`, the valid value id `1` to `9`.  When `pricing_cycle` set to `Year`, the valid value id `1` to `3`.
        :param pulumi.Input[int] file_engine_node_count: The count of file engine.
        :param pulumi.Input[str] file_engine_specification: The specification of file engine. Valid values: `lindorm.c.xlarge`.
        :param pulumi.Input[str] group_name: The group name.
        :param pulumi.Input[str] instance_name: The name of the instance.
        :param pulumi.Input[str] instance_storage: The storage capacity of the instance. Unit: GB. For example, the value 50 indicates 50 GB.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_white_lists: The ip white list of instance.
        :param pulumi.Input[int] lts_node_count: The count of lindorm tunnel service.
        :param pulumi.Input[str] lts_node_specification: The specification of lindorm tunnel service. Valid values: `lindorm.g.2xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[int] phoenix_node_count: The count of phoenix.
        :param pulumi.Input[str] phoenix_node_specification: The specification of phoenix. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] pricing_cycle: The pricing cycle. Valid when the `payment_type` is `Subscription`. Valid values: `Month` and `Year`.
        :param pulumi.Input[int] search_engine_node_count: The count of search engine.
        :param pulumi.Input[str] search_engine_specification: The specification of search engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[int] table_engine_node_count: The count of table engine.
        :param pulumi.Input[str] table_engine_specification: The specification of  table engine. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[int] time_series_engine_node_count: The count of time series engine.
        :param pulumi.Input[str] time_serires_engine_specification: The specification of time series engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] upgrade_type: The upgrade type. Valid values:  `open-lindorm-engine`, `open-phoenix-engine`, `open-search-engine`, `open-tsdb-engine`,  `upgrade-cold-storage`, `upgrade-disk-size`,  `upgrade-lindorm-core-num`, `upgrade-lindorm-engine`,  `upgrade-search-core-num`, `upgrade-search-engine`, `upgrade-tsdb-core-num`, `upgrade-tsdb-engine`.
        :param pulumi.Input[str] zone_id: The zone ID of the instance.
        """
        pulumi.set(__self__, "disk_category", disk_category)
        pulumi.set(__self__, "payment_type", payment_type)
        pulumi.set(__self__, "vswitch_id", vswitch_id)
        if cold_storage is not None:
            pulumi.set(__self__, "cold_storage", cold_storage)
        if core_num is not None:
            pulumi.set(__self__, "core_num", core_num)
        if core_spec is not None:
            pulumi.set(__self__, "core_spec", core_spec)
        if deletion_proection is not None:
            pulumi.set(__self__, "deletion_proection", deletion_proection)
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if file_engine_node_count is not None:
            pulumi.set(__self__, "file_engine_node_count", file_engine_node_count)
        if file_engine_specification is not None:
            pulumi.set(__self__, "file_engine_specification", file_engine_specification)
        if group_name is not None:
            pulumi.set(__self__, "group_name", group_name)
        if instance_name is not None:
            pulumi.set(__self__, "instance_name", instance_name)
        if instance_storage is not None:
            pulumi.set(__self__, "instance_storage", instance_storage)
        if ip_white_lists is not None:
            pulumi.set(__self__, "ip_white_lists", ip_white_lists)
        if lts_node_count is not None:
            pulumi.set(__self__, "lts_node_count", lts_node_count)
        if lts_node_specification is not None:
            pulumi.set(__self__, "lts_node_specification", lts_node_specification)
        if phoenix_node_count is not None:
            pulumi.set(__self__, "phoenix_node_count", phoenix_node_count)
        if phoenix_node_specification is not None:
            pulumi.set(__self__, "phoenix_node_specification", phoenix_node_specification)
        if pricing_cycle is not None:
            pulumi.set(__self__, "pricing_cycle", pricing_cycle)
        if search_engine_node_count is not None:
            pulumi.set(__self__, "search_engine_node_count", search_engine_node_count)
        if search_engine_specification is not None:
            pulumi.set(__self__, "search_engine_specification", search_engine_specification)
        if table_engine_node_count is not None:
            pulumi.set(__self__, "table_engine_node_count", table_engine_node_count)
        if table_engine_specification is not None:
            pulumi.set(__self__, "table_engine_specification", table_engine_specification)
        if time_series_engine_node_count is not None:
            pulumi.set(__self__, "time_series_engine_node_count", time_series_engine_node_count)
        if time_serires_engine_specification is not None:
            pulumi.set(__self__, "time_serires_engine_specification", time_serires_engine_specification)
        if upgrade_type is not None:
            pulumi.set(__self__, "upgrade_type", upgrade_type)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter(name="diskCategory")
    def disk_category(self) -> pulumi.Input[str]:
        """
        The disk type of instance. Valid values: `capacity_cloud_storage`, `cloud_efficiency`, `cloud_essd`, `cloud_ssd`.
        """
        return pulumi.get(self, "disk_category")

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

    @property
    @pulumi.getter(name="paymentType")
    def payment_type(self) -> pulumi.Input[str]:
        """
        The billing method. Valid values: `PayAsYouGo` and `Subscription`.
        """
        return pulumi.get(self, "payment_type")

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

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

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

    @property
    @pulumi.getter(name="coldStorage")
    def cold_storage(self) -> Optional[pulumi.Input[int]]:
        """
        The cold storage capacity of the instance. Unit: GB.
        """
        return pulumi.get(self, "cold_storage")

    @cold_storage.setter
    def cold_storage(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "cold_storage", value)

    @property
    @pulumi.getter(name="coreNum")
    def core_num(self) -> Optional[pulumi.Input[int]]:
        """
        The core num.
        """
        return pulumi.get(self, "core_num")

    @core_num.setter
    def core_num(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "core_num", value)

    @property
    @pulumi.getter(name="coreSpec")
    def core_spec(self) -> Optional[pulumi.Input[str]]:
        """
        The core spec.
        """
        return pulumi.get(self, "core_spec")

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

    @property
    @pulumi.getter(name="deletionProection")
    def deletion_proection(self) -> Optional[pulumi.Input[bool]]:
        """
        The deletion protection of instance.
        """
        return pulumi.get(self, "deletion_proection")

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

    @property
    @pulumi.getter
    def duration(self) -> Optional[pulumi.Input[str]]:
        """
        The duration of paid. Valid when the `payment_type` is `Subscription`.  When `pricing_cycle` set to `Month`, the valid value id `1` to `9`.  When `pricing_cycle` set to `Year`, the valid value id `1` to `3`.
        """
        return pulumi.get(self, "duration")

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

    @property
    @pulumi.getter(name="fileEngineNodeCount")
    def file_engine_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of file engine.
        """
        return pulumi.get(self, "file_engine_node_count")

    @file_engine_node_count.setter
    def file_engine_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "file_engine_node_count", value)

    @property
    @pulumi.getter(name="fileEngineSpecification")
    def file_engine_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of file engine. Valid values: `lindorm.c.xlarge`.
        """
        return pulumi.get(self, "file_engine_specification")

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

    @property
    @pulumi.getter(name="groupName")
    def group_name(self) -> Optional[pulumi.Input[str]]:
        """
        The group name.
        """
        return pulumi.get(self, "group_name")

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

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the instance.
        """
        return pulumi.get(self, "instance_name")

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

    @property
    @pulumi.getter(name="instanceStorage")
    def instance_storage(self) -> Optional[pulumi.Input[str]]:
        """
        The storage capacity of the instance. Unit: GB. For example, the value 50 indicates 50 GB.
        """
        return pulumi.get(self, "instance_storage")

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

    @property
    @pulumi.getter(name="ipWhiteLists")
    def ip_white_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The ip white list of instance.
        """
        return pulumi.get(self, "ip_white_lists")

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

    @property
    @pulumi.getter(name="ltsNodeCount")
    def lts_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of lindorm tunnel service.
        """
        return pulumi.get(self, "lts_node_count")

    @lts_node_count.setter
    def lts_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "lts_node_count", value)

    @property
    @pulumi.getter(name="ltsNodeSpecification")
    def lts_node_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of lindorm tunnel service. Valid values: `lindorm.g.2xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "lts_node_specification")

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

    @property
    @pulumi.getter(name="phoenixNodeCount")
    def phoenix_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of phoenix.
        """
        return pulumi.get(self, "phoenix_node_count")

    @phoenix_node_count.setter
    def phoenix_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "phoenix_node_count", value)

    @property
    @pulumi.getter(name="phoenixNodeSpecification")
    def phoenix_node_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of phoenix. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "phoenix_node_specification")

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

    @property
    @pulumi.getter(name="pricingCycle")
    def pricing_cycle(self) -> Optional[pulumi.Input[str]]:
        """
        The pricing cycle. Valid when the `payment_type` is `Subscription`. Valid values: `Month` and `Year`.
        """
        return pulumi.get(self, "pricing_cycle")

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

    @property
    @pulumi.getter(name="searchEngineNodeCount")
    def search_engine_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of search engine.
        """
        return pulumi.get(self, "search_engine_node_count")

    @search_engine_node_count.setter
    def search_engine_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "search_engine_node_count", value)

    @property
    @pulumi.getter(name="searchEngineSpecification")
    def search_engine_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of search engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "search_engine_specification")

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

    @property
    @pulumi.getter(name="tableEngineNodeCount")
    def table_engine_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of table engine.
        """
        return pulumi.get(self, "table_engine_node_count")

    @table_engine_node_count.setter
    def table_engine_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "table_engine_node_count", value)

    @property
    @pulumi.getter(name="tableEngineSpecification")
    def table_engine_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of  table engine. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "table_engine_specification")

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

    @property
    @pulumi.getter(name="timeSeriesEngineNodeCount")
    def time_series_engine_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of time series engine.
        """
        return pulumi.get(self, "time_series_engine_node_count")

    @time_series_engine_node_count.setter
    def time_series_engine_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "time_series_engine_node_count", value)

    @property
    @pulumi.getter(name="timeSeriresEngineSpecification")
    def time_serires_engine_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of time series engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "time_serires_engine_specification")

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

    @property
    @pulumi.getter(name="upgradeType")
    def upgrade_type(self) -> Optional[pulumi.Input[str]]:
        """
        The upgrade type. Valid values:  `open-lindorm-engine`, `open-phoenix-engine`, `open-search-engine`, `open-tsdb-engine`,  `upgrade-cold-storage`, `upgrade-disk-size`,  `upgrade-lindorm-core-num`, `upgrade-lindorm-engine`,  `upgrade-search-core-num`, `upgrade-search-engine`, `upgrade-tsdb-core-num`, `upgrade-tsdb-engine`.
        """
        return pulumi.get(self, "upgrade_type")

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

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        """
        The zone ID of the instance.
        """
        return pulumi.get(self, "zone_id")

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


@pulumi.input_type
class _InstanceState:
    def __init__(__self__, *,
                 cold_storage: Optional[pulumi.Input[int]] = None,
                 core_num: Optional[pulumi.Input[int]] = None,
                 core_spec: Optional[pulumi.Input[str]] = None,
                 deletion_proection: Optional[pulumi.Input[bool]] = None,
                 disk_category: Optional[pulumi.Input[str]] = None,
                 duration: Optional[pulumi.Input[str]] = None,
                 file_engine_node_count: Optional[pulumi.Input[int]] = None,
                 file_engine_specification: Optional[pulumi.Input[str]] = None,
                 group_name: Optional[pulumi.Input[str]] = None,
                 instance_name: Optional[pulumi.Input[str]] = None,
                 instance_storage: Optional[pulumi.Input[str]] = None,
                 ip_white_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 lts_node_count: Optional[pulumi.Input[int]] = None,
                 lts_node_specification: Optional[pulumi.Input[str]] = None,
                 payment_type: Optional[pulumi.Input[str]] = None,
                 phoenix_node_count: Optional[pulumi.Input[int]] = None,
                 phoenix_node_specification: Optional[pulumi.Input[str]] = None,
                 pricing_cycle: Optional[pulumi.Input[str]] = None,
                 search_engine_node_count: Optional[pulumi.Input[int]] = None,
                 search_engine_specification: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None,
                 table_engine_node_count: Optional[pulumi.Input[int]] = None,
                 table_engine_specification: Optional[pulumi.Input[str]] = None,
                 time_series_engine_node_count: Optional[pulumi.Input[int]] = None,
                 time_serires_engine_specification: Optional[pulumi.Input[str]] = None,
                 upgrade_type: Optional[pulumi.Input[str]] = None,
                 vswitch_id: Optional[pulumi.Input[str]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering Instance resources.
        :param pulumi.Input[int] cold_storage: The cold storage capacity of the instance. Unit: GB.
        :param pulumi.Input[int] core_num: The core num.
        :param pulumi.Input[str] core_spec: The core spec.
        :param pulumi.Input[bool] deletion_proection: The deletion protection of instance.
        :param pulumi.Input[str] disk_category: The disk type of instance. Valid values: `capacity_cloud_storage`, `cloud_efficiency`, `cloud_essd`, `cloud_ssd`.
        :param pulumi.Input[str] duration: The duration of paid. Valid when the `payment_type` is `Subscription`.  When `pricing_cycle` set to `Month`, the valid value id `1` to `9`.  When `pricing_cycle` set to `Year`, the valid value id `1` to `3`.
        :param pulumi.Input[int] file_engine_node_count: The count of file engine.
        :param pulumi.Input[str] file_engine_specification: The specification of file engine. Valid values: `lindorm.c.xlarge`.
        :param pulumi.Input[str] group_name: The group name.
        :param pulumi.Input[str] instance_name: The name of the instance.
        :param pulumi.Input[str] instance_storage: The storage capacity of the instance. Unit: GB. For example, the value 50 indicates 50 GB.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_white_lists: The ip white list of instance.
        :param pulumi.Input[int] lts_node_count: The count of lindorm tunnel service.
        :param pulumi.Input[str] lts_node_specification: The specification of lindorm tunnel service. Valid values: `lindorm.g.2xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] payment_type: The billing method. Valid values: `PayAsYouGo` and `Subscription`.
        :param pulumi.Input[int] phoenix_node_count: The count of phoenix.
        :param pulumi.Input[str] phoenix_node_specification: The specification of phoenix. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] pricing_cycle: The pricing cycle. Valid when the `payment_type` is `Subscription`. Valid values: `Month` and `Year`.
        :param pulumi.Input[int] search_engine_node_count: The count of search engine.
        :param pulumi.Input[str] search_engine_specification: The specification of search engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] status: The status of Instance, enumerative: Valid values: `ACTIVATION`, `DELETED`, `CREATING`, `CLASS_CHANGING`, `LOCKED`, `INSTANCE_LEVEL_MODIFY`, `NET_MODIFYING`, `RESIZING`, `RESTARTING`, `MINOR_VERSION_TRANSING`.
        :param pulumi.Input[int] table_engine_node_count: The count of table engine.
        :param pulumi.Input[str] table_engine_specification: The specification of  table engine. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[int] time_series_engine_node_count: The count of time series engine.
        :param pulumi.Input[str] time_serires_engine_specification: The specification of time series engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] upgrade_type: The upgrade type. Valid values:  `open-lindorm-engine`, `open-phoenix-engine`, `open-search-engine`, `open-tsdb-engine`,  `upgrade-cold-storage`, `upgrade-disk-size`,  `upgrade-lindorm-core-num`, `upgrade-lindorm-engine`,  `upgrade-search-core-num`, `upgrade-search-engine`, `upgrade-tsdb-core-num`, `upgrade-tsdb-engine`.
        :param pulumi.Input[str] vswitch_id: The vswitch id.
        :param pulumi.Input[str] zone_id: The zone ID of the instance.
        """
        if cold_storage is not None:
            pulumi.set(__self__, "cold_storage", cold_storage)
        if core_num is not None:
            pulumi.set(__self__, "core_num", core_num)
        if core_spec is not None:
            pulumi.set(__self__, "core_spec", core_spec)
        if deletion_proection is not None:
            pulumi.set(__self__, "deletion_proection", deletion_proection)
        if disk_category is not None:
            pulumi.set(__self__, "disk_category", disk_category)
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if file_engine_node_count is not None:
            pulumi.set(__self__, "file_engine_node_count", file_engine_node_count)
        if file_engine_specification is not None:
            pulumi.set(__self__, "file_engine_specification", file_engine_specification)
        if group_name is not None:
            pulumi.set(__self__, "group_name", group_name)
        if instance_name is not None:
            pulumi.set(__self__, "instance_name", instance_name)
        if instance_storage is not None:
            pulumi.set(__self__, "instance_storage", instance_storage)
        if ip_white_lists is not None:
            pulumi.set(__self__, "ip_white_lists", ip_white_lists)
        if lts_node_count is not None:
            pulumi.set(__self__, "lts_node_count", lts_node_count)
        if lts_node_specification is not None:
            pulumi.set(__self__, "lts_node_specification", lts_node_specification)
        if payment_type is not None:
            pulumi.set(__self__, "payment_type", payment_type)
        if phoenix_node_count is not None:
            pulumi.set(__self__, "phoenix_node_count", phoenix_node_count)
        if phoenix_node_specification is not None:
            pulumi.set(__self__, "phoenix_node_specification", phoenix_node_specification)
        if pricing_cycle is not None:
            pulumi.set(__self__, "pricing_cycle", pricing_cycle)
        if search_engine_node_count is not None:
            pulumi.set(__self__, "search_engine_node_count", search_engine_node_count)
        if search_engine_specification is not None:
            pulumi.set(__self__, "search_engine_specification", search_engine_specification)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if table_engine_node_count is not None:
            pulumi.set(__self__, "table_engine_node_count", table_engine_node_count)
        if table_engine_specification is not None:
            pulumi.set(__self__, "table_engine_specification", table_engine_specification)
        if time_series_engine_node_count is not None:
            pulumi.set(__self__, "time_series_engine_node_count", time_series_engine_node_count)
        if time_serires_engine_specification is not None:
            pulumi.set(__self__, "time_serires_engine_specification", time_serires_engine_specification)
        if upgrade_type is not None:
            pulumi.set(__self__, "upgrade_type", upgrade_type)
        if vswitch_id is not None:
            pulumi.set(__self__, "vswitch_id", vswitch_id)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @property
    @pulumi.getter(name="coldStorage")
    def cold_storage(self) -> Optional[pulumi.Input[int]]:
        """
        The cold storage capacity of the instance. Unit: GB.
        """
        return pulumi.get(self, "cold_storage")

    @cold_storage.setter
    def cold_storage(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "cold_storage", value)

    @property
    @pulumi.getter(name="coreNum")
    def core_num(self) -> Optional[pulumi.Input[int]]:
        """
        The core num.
        """
        return pulumi.get(self, "core_num")

    @core_num.setter
    def core_num(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "core_num", value)

    @property
    @pulumi.getter(name="coreSpec")
    def core_spec(self) -> Optional[pulumi.Input[str]]:
        """
        The core spec.
        """
        return pulumi.get(self, "core_spec")

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

    @property
    @pulumi.getter(name="deletionProection")
    def deletion_proection(self) -> Optional[pulumi.Input[bool]]:
        """
        The deletion protection of instance.
        """
        return pulumi.get(self, "deletion_proection")

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

    @property
    @pulumi.getter(name="diskCategory")
    def disk_category(self) -> Optional[pulumi.Input[str]]:
        """
        The disk type of instance. Valid values: `capacity_cloud_storage`, `cloud_efficiency`, `cloud_essd`, `cloud_ssd`.
        """
        return pulumi.get(self, "disk_category")

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

    @property
    @pulumi.getter
    def duration(self) -> Optional[pulumi.Input[str]]:
        """
        The duration of paid. Valid when the `payment_type` is `Subscription`.  When `pricing_cycle` set to `Month`, the valid value id `1` to `9`.  When `pricing_cycle` set to `Year`, the valid value id `1` to `3`.
        """
        return pulumi.get(self, "duration")

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

    @property
    @pulumi.getter(name="fileEngineNodeCount")
    def file_engine_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of file engine.
        """
        return pulumi.get(self, "file_engine_node_count")

    @file_engine_node_count.setter
    def file_engine_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "file_engine_node_count", value)

    @property
    @pulumi.getter(name="fileEngineSpecification")
    def file_engine_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of file engine. Valid values: `lindorm.c.xlarge`.
        """
        return pulumi.get(self, "file_engine_specification")

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

    @property
    @pulumi.getter(name="groupName")
    def group_name(self) -> Optional[pulumi.Input[str]]:
        """
        The group name.
        """
        return pulumi.get(self, "group_name")

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

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the instance.
        """
        return pulumi.get(self, "instance_name")

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

    @property
    @pulumi.getter(name="instanceStorage")
    def instance_storage(self) -> Optional[pulumi.Input[str]]:
        """
        The storage capacity of the instance. Unit: GB. For example, the value 50 indicates 50 GB.
        """
        return pulumi.get(self, "instance_storage")

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

    @property
    @pulumi.getter(name="ipWhiteLists")
    def ip_white_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The ip white list of instance.
        """
        return pulumi.get(self, "ip_white_lists")

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

    @property
    @pulumi.getter(name="ltsNodeCount")
    def lts_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of lindorm tunnel service.
        """
        return pulumi.get(self, "lts_node_count")

    @lts_node_count.setter
    def lts_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "lts_node_count", value)

    @property
    @pulumi.getter(name="ltsNodeSpecification")
    def lts_node_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of lindorm tunnel service. Valid values: `lindorm.g.2xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "lts_node_specification")

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

    @property
    @pulumi.getter(name="paymentType")
    def payment_type(self) -> Optional[pulumi.Input[str]]:
        """
        The billing method. Valid values: `PayAsYouGo` and `Subscription`.
        """
        return pulumi.get(self, "payment_type")

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

    @property
    @pulumi.getter(name="phoenixNodeCount")
    def phoenix_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of phoenix.
        """
        return pulumi.get(self, "phoenix_node_count")

    @phoenix_node_count.setter
    def phoenix_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "phoenix_node_count", value)

    @property
    @pulumi.getter(name="phoenixNodeSpecification")
    def phoenix_node_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of phoenix. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "phoenix_node_specification")

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

    @property
    @pulumi.getter(name="pricingCycle")
    def pricing_cycle(self) -> Optional[pulumi.Input[str]]:
        """
        The pricing cycle. Valid when the `payment_type` is `Subscription`. Valid values: `Month` and `Year`.
        """
        return pulumi.get(self, "pricing_cycle")

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

    @property
    @pulumi.getter(name="searchEngineNodeCount")
    def search_engine_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of search engine.
        """
        return pulumi.get(self, "search_engine_node_count")

    @search_engine_node_count.setter
    def search_engine_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "search_engine_node_count", value)

    @property
    @pulumi.getter(name="searchEngineSpecification")
    def search_engine_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of search engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "search_engine_specification")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[str]]:
        """
        The status of Instance, enumerative: Valid values: `ACTIVATION`, `DELETED`, `CREATING`, `CLASS_CHANGING`, `LOCKED`, `INSTANCE_LEVEL_MODIFY`, `NET_MODIFYING`, `RESIZING`, `RESTARTING`, `MINOR_VERSION_TRANSING`.
        """
        return pulumi.get(self, "status")

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

    @property
    @pulumi.getter(name="tableEngineNodeCount")
    def table_engine_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of table engine.
        """
        return pulumi.get(self, "table_engine_node_count")

    @table_engine_node_count.setter
    def table_engine_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "table_engine_node_count", value)

    @property
    @pulumi.getter(name="tableEngineSpecification")
    def table_engine_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of  table engine. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "table_engine_specification")

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

    @property
    @pulumi.getter(name="timeSeriesEngineNodeCount")
    def time_series_engine_node_count(self) -> Optional[pulumi.Input[int]]:
        """
        The count of time series engine.
        """
        return pulumi.get(self, "time_series_engine_node_count")

    @time_series_engine_node_count.setter
    def time_series_engine_node_count(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "time_series_engine_node_count", value)

    @property
    @pulumi.getter(name="timeSeriresEngineSpecification")
    def time_serires_engine_specification(self) -> Optional[pulumi.Input[str]]:
        """
        The specification of time series engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "time_serires_engine_specification")

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

    @property
    @pulumi.getter(name="upgradeType")
    def upgrade_type(self) -> Optional[pulumi.Input[str]]:
        """
        The upgrade type. Valid values:  `open-lindorm-engine`, `open-phoenix-engine`, `open-search-engine`, `open-tsdb-engine`,  `upgrade-cold-storage`, `upgrade-disk-size`,  `upgrade-lindorm-core-num`, `upgrade-lindorm-engine`,  `upgrade-search-core-num`, `upgrade-search-engine`, `upgrade-tsdb-core-num`, `upgrade-tsdb-engine`.
        """
        return pulumi.get(self, "upgrade_type")

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

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

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

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[pulumi.Input[str]]:
        """
        The zone ID of the instance.
        """
        return pulumi.get(self, "zone_id")

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


class Instance(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 cold_storage: Optional[pulumi.Input[int]] = None,
                 core_num: Optional[pulumi.Input[int]] = None,
                 core_spec: Optional[pulumi.Input[str]] = None,
                 deletion_proection: Optional[pulumi.Input[bool]] = None,
                 disk_category: Optional[pulumi.Input[str]] = None,
                 duration: Optional[pulumi.Input[str]] = None,
                 file_engine_node_count: Optional[pulumi.Input[int]] = None,
                 file_engine_specification: Optional[pulumi.Input[str]] = None,
                 group_name: Optional[pulumi.Input[str]] = None,
                 instance_name: Optional[pulumi.Input[str]] = None,
                 instance_storage: Optional[pulumi.Input[str]] = None,
                 ip_white_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 lts_node_count: Optional[pulumi.Input[int]] = None,
                 lts_node_specification: Optional[pulumi.Input[str]] = None,
                 payment_type: Optional[pulumi.Input[str]] = None,
                 phoenix_node_count: Optional[pulumi.Input[int]] = None,
                 phoenix_node_specification: Optional[pulumi.Input[str]] = None,
                 pricing_cycle: Optional[pulumi.Input[str]] = None,
                 search_engine_node_count: Optional[pulumi.Input[int]] = None,
                 search_engine_specification: Optional[pulumi.Input[str]] = None,
                 table_engine_node_count: Optional[pulumi.Input[int]] = None,
                 table_engine_specification: Optional[pulumi.Input[str]] = None,
                 time_series_engine_node_count: Optional[pulumi.Input[int]] = None,
                 time_serires_engine_specification: Optional[pulumi.Input[str]] = None,
                 upgrade_type: Optional[pulumi.Input[str]] = None,
                 vswitch_id: Optional[pulumi.Input[str]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        Provides a Lindorm Instance resource.

        For information about Lindorm Instance and how to use it, see [What is Instance](https://www.alibabacloud.com/help/zh/doc-detail/174640.html).

        > **NOTE:** Available in v1.132.0+.

        ## Import

        Lindorm Instance can be imported using the id, e.g.

        ```sh
         $ pulumi import alicloud:lindorm/instance:Instance example <id>
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[int] cold_storage: The cold storage capacity of the instance. Unit: GB.
        :param pulumi.Input[int] core_num: The core num.
        :param pulumi.Input[str] core_spec: The core spec.
        :param pulumi.Input[bool] deletion_proection: The deletion protection of instance.
        :param pulumi.Input[str] disk_category: The disk type of instance. Valid values: `capacity_cloud_storage`, `cloud_efficiency`, `cloud_essd`, `cloud_ssd`.
        :param pulumi.Input[str] duration: The duration of paid. Valid when the `payment_type` is `Subscription`.  When `pricing_cycle` set to `Month`, the valid value id `1` to `9`.  When `pricing_cycle` set to `Year`, the valid value id `1` to `3`.
        :param pulumi.Input[int] file_engine_node_count: The count of file engine.
        :param pulumi.Input[str] file_engine_specification: The specification of file engine. Valid values: `lindorm.c.xlarge`.
        :param pulumi.Input[str] group_name: The group name.
        :param pulumi.Input[str] instance_name: The name of the instance.
        :param pulumi.Input[str] instance_storage: The storage capacity of the instance. Unit: GB. For example, the value 50 indicates 50 GB.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_white_lists: The ip white list of instance.
        :param pulumi.Input[int] lts_node_count: The count of lindorm tunnel service.
        :param pulumi.Input[str] lts_node_specification: The specification of lindorm tunnel service. Valid values: `lindorm.g.2xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] payment_type: The billing method. Valid values: `PayAsYouGo` and `Subscription`.
        :param pulumi.Input[int] phoenix_node_count: The count of phoenix.
        :param pulumi.Input[str] phoenix_node_specification: The specification of phoenix. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] pricing_cycle: The pricing cycle. Valid when the `payment_type` is `Subscription`. Valid values: `Month` and `Year`.
        :param pulumi.Input[int] search_engine_node_count: The count of search engine.
        :param pulumi.Input[str] search_engine_specification: The specification of search engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[int] table_engine_node_count: The count of table engine.
        :param pulumi.Input[str] table_engine_specification: The specification of  table engine. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[int] time_series_engine_node_count: The count of time series engine.
        :param pulumi.Input[str] time_serires_engine_specification: The specification of time series engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] upgrade_type: The upgrade type. Valid values:  `open-lindorm-engine`, `open-phoenix-engine`, `open-search-engine`, `open-tsdb-engine`,  `upgrade-cold-storage`, `upgrade-disk-size`,  `upgrade-lindorm-core-num`, `upgrade-lindorm-engine`,  `upgrade-search-core-num`, `upgrade-search-engine`, `upgrade-tsdb-core-num`, `upgrade-tsdb-engine`.
        :param pulumi.Input[str] vswitch_id: The vswitch id.
        :param pulumi.Input[str] zone_id: The zone ID of the instance.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: InstanceArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Provides a Lindorm Instance resource.

        For information about Lindorm Instance and how to use it, see [What is Instance](https://www.alibabacloud.com/help/zh/doc-detail/174640.html).

        > **NOTE:** Available in v1.132.0+.

        ## Import

        Lindorm Instance can be imported using the id, e.g.

        ```sh
         $ pulumi import alicloud:lindorm/instance:Instance example <id>
        ```

        :param str resource_name: The name of the resource.
        :param InstanceArgs 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(InstanceArgs, 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,
                 cold_storage: Optional[pulumi.Input[int]] = None,
                 core_num: Optional[pulumi.Input[int]] = None,
                 core_spec: Optional[pulumi.Input[str]] = None,
                 deletion_proection: Optional[pulumi.Input[bool]] = None,
                 disk_category: Optional[pulumi.Input[str]] = None,
                 duration: Optional[pulumi.Input[str]] = None,
                 file_engine_node_count: Optional[pulumi.Input[int]] = None,
                 file_engine_specification: Optional[pulumi.Input[str]] = None,
                 group_name: Optional[pulumi.Input[str]] = None,
                 instance_name: Optional[pulumi.Input[str]] = None,
                 instance_storage: Optional[pulumi.Input[str]] = None,
                 ip_white_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 lts_node_count: Optional[pulumi.Input[int]] = None,
                 lts_node_specification: Optional[pulumi.Input[str]] = None,
                 payment_type: Optional[pulumi.Input[str]] = None,
                 phoenix_node_count: Optional[pulumi.Input[int]] = None,
                 phoenix_node_specification: Optional[pulumi.Input[str]] = None,
                 pricing_cycle: Optional[pulumi.Input[str]] = None,
                 search_engine_node_count: Optional[pulumi.Input[int]] = None,
                 search_engine_specification: Optional[pulumi.Input[str]] = None,
                 table_engine_node_count: Optional[pulumi.Input[int]] = None,
                 table_engine_specification: Optional[pulumi.Input[str]] = None,
                 time_series_engine_node_count: Optional[pulumi.Input[int]] = None,
                 time_serires_engine_specification: Optional[pulumi.Input[str]] = None,
                 upgrade_type: Optional[pulumi.Input[str]] = None,
                 vswitch_id: Optional[pulumi.Input[str]] = None,
                 zone_id: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        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__ = InstanceArgs.__new__(InstanceArgs)

            __props__.__dict__["cold_storage"] = cold_storage
            __props__.__dict__["core_num"] = core_num
            __props__.__dict__["core_spec"] = core_spec
            __props__.__dict__["deletion_proection"] = deletion_proection
            if disk_category is None and not opts.urn:
                raise TypeError("Missing required property 'disk_category'")
            __props__.__dict__["disk_category"] = disk_category
            __props__.__dict__["duration"] = duration
            __props__.__dict__["file_engine_node_count"] = file_engine_node_count
            __props__.__dict__["file_engine_specification"] = file_engine_specification
            __props__.__dict__["group_name"] = group_name
            __props__.__dict__["instance_name"] = instance_name
            __props__.__dict__["instance_storage"] = instance_storage
            __props__.__dict__["ip_white_lists"] = ip_white_lists
            __props__.__dict__["lts_node_count"] = lts_node_count
            __props__.__dict__["lts_node_specification"] = lts_node_specification
            if payment_type is None and not opts.urn:
                raise TypeError("Missing required property 'payment_type'")
            __props__.__dict__["payment_type"] = payment_type
            __props__.__dict__["phoenix_node_count"] = phoenix_node_count
            __props__.__dict__["phoenix_node_specification"] = phoenix_node_specification
            __props__.__dict__["pricing_cycle"] = pricing_cycle
            __props__.__dict__["search_engine_node_count"] = search_engine_node_count
            __props__.__dict__["search_engine_specification"] = search_engine_specification
            __props__.__dict__["table_engine_node_count"] = table_engine_node_count
            __props__.__dict__["table_engine_specification"] = table_engine_specification
            __props__.__dict__["time_series_engine_node_count"] = time_series_engine_node_count
            __props__.__dict__["time_serires_engine_specification"] = time_serires_engine_specification
            __props__.__dict__["upgrade_type"] = upgrade_type
            if vswitch_id is None and not opts.urn:
                raise TypeError("Missing required property 'vswitch_id'")
            __props__.__dict__["vswitch_id"] = vswitch_id
            __props__.__dict__["zone_id"] = zone_id
            __props__.__dict__["status"] = None
        super(Instance, __self__).__init__(
            'alicloud:lindorm/instance:Instance',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            cold_storage: Optional[pulumi.Input[int]] = None,
            core_num: Optional[pulumi.Input[int]] = None,
            core_spec: Optional[pulumi.Input[str]] = None,
            deletion_proection: Optional[pulumi.Input[bool]] = None,
            disk_category: Optional[pulumi.Input[str]] = None,
            duration: Optional[pulumi.Input[str]] = None,
            file_engine_node_count: Optional[pulumi.Input[int]] = None,
            file_engine_specification: Optional[pulumi.Input[str]] = None,
            group_name: Optional[pulumi.Input[str]] = None,
            instance_name: Optional[pulumi.Input[str]] = None,
            instance_storage: Optional[pulumi.Input[str]] = None,
            ip_white_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            lts_node_count: Optional[pulumi.Input[int]] = None,
            lts_node_specification: Optional[pulumi.Input[str]] = None,
            payment_type: Optional[pulumi.Input[str]] = None,
            phoenix_node_count: Optional[pulumi.Input[int]] = None,
            phoenix_node_specification: Optional[pulumi.Input[str]] = None,
            pricing_cycle: Optional[pulumi.Input[str]] = None,
            search_engine_node_count: Optional[pulumi.Input[int]] = None,
            search_engine_specification: Optional[pulumi.Input[str]] = None,
            status: Optional[pulumi.Input[str]] = None,
            table_engine_node_count: Optional[pulumi.Input[int]] = None,
            table_engine_specification: Optional[pulumi.Input[str]] = None,
            time_series_engine_node_count: Optional[pulumi.Input[int]] = None,
            time_serires_engine_specification: Optional[pulumi.Input[str]] = None,
            upgrade_type: Optional[pulumi.Input[str]] = None,
            vswitch_id: Optional[pulumi.Input[str]] = None,
            zone_id: Optional[pulumi.Input[str]] = None) -> 'Instance':
        """
        Get an existing Instance 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[int] cold_storage: The cold storage capacity of the instance. Unit: GB.
        :param pulumi.Input[int] core_num: The core num.
        :param pulumi.Input[str] core_spec: The core spec.
        :param pulumi.Input[bool] deletion_proection: The deletion protection of instance.
        :param pulumi.Input[str] disk_category: The disk type of instance. Valid values: `capacity_cloud_storage`, `cloud_efficiency`, `cloud_essd`, `cloud_ssd`.
        :param pulumi.Input[str] duration: The duration of paid. Valid when the `payment_type` is `Subscription`.  When `pricing_cycle` set to `Month`, the valid value id `1` to `9`.  When `pricing_cycle` set to `Year`, the valid value id `1` to `3`.
        :param pulumi.Input[int] file_engine_node_count: The count of file engine.
        :param pulumi.Input[str] file_engine_specification: The specification of file engine. Valid values: `lindorm.c.xlarge`.
        :param pulumi.Input[str] group_name: The group name.
        :param pulumi.Input[str] instance_name: The name of the instance.
        :param pulumi.Input[str] instance_storage: The storage capacity of the instance. Unit: GB. For example, the value 50 indicates 50 GB.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_white_lists: The ip white list of instance.
        :param pulumi.Input[int] lts_node_count: The count of lindorm tunnel service.
        :param pulumi.Input[str] lts_node_specification: The specification of lindorm tunnel service. Valid values: `lindorm.g.2xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] payment_type: The billing method. Valid values: `PayAsYouGo` and `Subscription`.
        :param pulumi.Input[int] phoenix_node_count: The count of phoenix.
        :param pulumi.Input[str] phoenix_node_specification: The specification of phoenix. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] pricing_cycle: The pricing cycle. Valid when the `payment_type` is `Subscription`. Valid values: `Month` and `Year`.
        :param pulumi.Input[int] search_engine_node_count: The count of search engine.
        :param pulumi.Input[str] search_engine_specification: The specification of search engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] status: The status of Instance, enumerative: Valid values: `ACTIVATION`, `DELETED`, `CREATING`, `CLASS_CHANGING`, `LOCKED`, `INSTANCE_LEVEL_MODIFY`, `NET_MODIFYING`, `RESIZING`, `RESTARTING`, `MINOR_VERSION_TRANSING`.
        :param pulumi.Input[int] table_engine_node_count: The count of table engine.
        :param pulumi.Input[str] table_engine_specification: The specification of  table engine. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[int] time_series_engine_node_count: The count of time series engine.
        :param pulumi.Input[str] time_serires_engine_specification: The specification of time series engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        :param pulumi.Input[str] upgrade_type: The upgrade type. Valid values:  `open-lindorm-engine`, `open-phoenix-engine`, `open-search-engine`, `open-tsdb-engine`,  `upgrade-cold-storage`, `upgrade-disk-size`,  `upgrade-lindorm-core-num`, `upgrade-lindorm-engine`,  `upgrade-search-core-num`, `upgrade-search-engine`, `upgrade-tsdb-core-num`, `upgrade-tsdb-engine`.
        :param pulumi.Input[str] vswitch_id: The vswitch id.
        :param pulumi.Input[str] zone_id: The zone ID of the instance.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _InstanceState.__new__(_InstanceState)

        __props__.__dict__["cold_storage"] = cold_storage
        __props__.__dict__["core_num"] = core_num
        __props__.__dict__["core_spec"] = core_spec
        __props__.__dict__["deletion_proection"] = deletion_proection
        __props__.__dict__["disk_category"] = disk_category
        __props__.__dict__["duration"] = duration
        __props__.__dict__["file_engine_node_count"] = file_engine_node_count
        __props__.__dict__["file_engine_specification"] = file_engine_specification
        __props__.__dict__["group_name"] = group_name
        __props__.__dict__["instance_name"] = instance_name
        __props__.__dict__["instance_storage"] = instance_storage
        __props__.__dict__["ip_white_lists"] = ip_white_lists
        __props__.__dict__["lts_node_count"] = lts_node_count
        __props__.__dict__["lts_node_specification"] = lts_node_specification
        __props__.__dict__["payment_type"] = payment_type
        __props__.__dict__["phoenix_node_count"] = phoenix_node_count
        __props__.__dict__["phoenix_node_specification"] = phoenix_node_specification
        __props__.__dict__["pricing_cycle"] = pricing_cycle
        __props__.__dict__["search_engine_node_count"] = search_engine_node_count
        __props__.__dict__["search_engine_specification"] = search_engine_specification
        __props__.__dict__["status"] = status
        __props__.__dict__["table_engine_node_count"] = table_engine_node_count
        __props__.__dict__["table_engine_specification"] = table_engine_specification
        __props__.__dict__["time_series_engine_node_count"] = time_series_engine_node_count
        __props__.__dict__["time_serires_engine_specification"] = time_serires_engine_specification
        __props__.__dict__["upgrade_type"] = upgrade_type
        __props__.__dict__["vswitch_id"] = vswitch_id
        __props__.__dict__["zone_id"] = zone_id
        return Instance(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="coldStorage")
    def cold_storage(self) -> pulumi.Output[int]:
        """
        The cold storage capacity of the instance. Unit: GB.
        """
        return pulumi.get(self, "cold_storage")

    @property
    @pulumi.getter(name="coreNum")
    def core_num(self) -> pulumi.Output[Optional[int]]:
        """
        The core num.
        """
        return pulumi.get(self, "core_num")

    @property
    @pulumi.getter(name="coreSpec")
    def core_spec(self) -> pulumi.Output[Optional[str]]:
        """
        The core spec.
        """
        return pulumi.get(self, "core_spec")

    @property
    @pulumi.getter(name="deletionProection")
    def deletion_proection(self) -> pulumi.Output[bool]:
        """
        The deletion protection of instance.
        """
        return pulumi.get(self, "deletion_proection")

    @property
    @pulumi.getter(name="diskCategory")
    def disk_category(self) -> pulumi.Output[str]:
        """
        The disk type of instance. Valid values: `capacity_cloud_storage`, `cloud_efficiency`, `cloud_essd`, `cloud_ssd`.
        """
        return pulumi.get(self, "disk_category")

    @property
    @pulumi.getter
    def duration(self) -> pulumi.Output[Optional[str]]:
        """
        The duration of paid. Valid when the `payment_type` is `Subscription`.  When `pricing_cycle` set to `Month`, the valid value id `1` to `9`.  When `pricing_cycle` set to `Year`, the valid value id `1` to `3`.
        """
        return pulumi.get(self, "duration")

    @property
    @pulumi.getter(name="fileEngineNodeCount")
    def file_engine_node_count(self) -> pulumi.Output[int]:
        """
        The count of file engine.
        """
        return pulumi.get(self, "file_engine_node_count")

    @property
    @pulumi.getter(name="fileEngineSpecification")
    def file_engine_specification(self) -> pulumi.Output[str]:
        """
        The specification of file engine. Valid values: `lindorm.c.xlarge`.
        """
        return pulumi.get(self, "file_engine_specification")

    @property
    @pulumi.getter(name="groupName")
    def group_name(self) -> pulumi.Output[Optional[str]]:
        """
        The group name.
        """
        return pulumi.get(self, "group_name")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> pulumi.Output[Optional[str]]:
        """
        The name of the instance.
        """
        return pulumi.get(self, "instance_name")

    @property
    @pulumi.getter(name="instanceStorage")
    def instance_storage(self) -> pulumi.Output[Optional[str]]:
        """
        The storage capacity of the instance. Unit: GB. For example, the value 50 indicates 50 GB.
        """
        return pulumi.get(self, "instance_storage")

    @property
    @pulumi.getter(name="ipWhiteLists")
    def ip_white_lists(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        The ip white list of instance.
        """
        return pulumi.get(self, "ip_white_lists")

    @property
    @pulumi.getter(name="ltsNodeCount")
    def lts_node_count(self) -> pulumi.Output[int]:
        """
        The count of lindorm tunnel service.
        """
        return pulumi.get(self, "lts_node_count")

    @property
    @pulumi.getter(name="ltsNodeSpecification")
    def lts_node_specification(self) -> pulumi.Output[str]:
        """
        The specification of lindorm tunnel service. Valid values: `lindorm.g.2xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "lts_node_specification")

    @property
    @pulumi.getter(name="paymentType")
    def payment_type(self) -> pulumi.Output[str]:
        """
        The billing method. Valid values: `PayAsYouGo` and `Subscription`.
        """
        return pulumi.get(self, "payment_type")

    @property
    @pulumi.getter(name="phoenixNodeCount")
    def phoenix_node_count(self) -> pulumi.Output[int]:
        """
        The count of phoenix.
        """
        return pulumi.get(self, "phoenix_node_count")

    @property
    @pulumi.getter(name="phoenixNodeSpecification")
    def phoenix_node_specification(self) -> pulumi.Output[str]:
        """
        The specification of phoenix. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "phoenix_node_specification")

    @property
    @pulumi.getter(name="pricingCycle")
    def pricing_cycle(self) -> pulumi.Output[Optional[str]]:
        """
        The pricing cycle. Valid when the `payment_type` is `Subscription`. Valid values: `Month` and `Year`.
        """
        return pulumi.get(self, "pricing_cycle")

    @property
    @pulumi.getter(name="searchEngineNodeCount")
    def search_engine_node_count(self) -> pulumi.Output[int]:
        """
        The count of search engine.
        """
        return pulumi.get(self, "search_engine_node_count")

    @property
    @pulumi.getter(name="searchEngineSpecification")
    def search_engine_specification(self) -> pulumi.Output[str]:
        """
        The specification of search engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "search_engine_specification")

    @property
    @pulumi.getter
    def status(self) -> pulumi.Output[str]:
        """
        The status of Instance, enumerative: Valid values: `ACTIVATION`, `DELETED`, `CREATING`, `CLASS_CHANGING`, `LOCKED`, `INSTANCE_LEVEL_MODIFY`, `NET_MODIFYING`, `RESIZING`, `RESTARTING`, `MINOR_VERSION_TRANSING`.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="tableEngineNodeCount")
    def table_engine_node_count(self) -> pulumi.Output[int]:
        """
        The count of table engine.
        """
        return pulumi.get(self, "table_engine_node_count")

    @property
    @pulumi.getter(name="tableEngineSpecification")
    def table_engine_specification(self) -> pulumi.Output[str]:
        """
        The specification of  table engine. Valid values: `lindorm.c.2xlarge`, `lindorm.c.4xlarge`, `lindorm.c.8xlarge`, `lindorm.c.xlarge`, `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "table_engine_specification")

    @property
    @pulumi.getter(name="timeSeriesEngineNodeCount")
    def time_series_engine_node_count(self) -> pulumi.Output[int]:
        """
        The count of time series engine.
        """
        return pulumi.get(self, "time_series_engine_node_count")

    @property
    @pulumi.getter(name="timeSeriresEngineSpecification")
    def time_serires_engine_specification(self) -> pulumi.Output[str]:
        """
        The specification of time series engine. Valid values: `lindorm.g.2xlarge`, `lindorm.g.4xlarge`, `lindorm.g.8xlarge`, `lindorm.g.xlarge`.
        """
        return pulumi.get(self, "time_serires_engine_specification")

    @property
    @pulumi.getter(name="upgradeType")
    def upgrade_type(self) -> pulumi.Output[Optional[str]]:
        """
        The upgrade type. Valid values:  `open-lindorm-engine`, `open-phoenix-engine`, `open-search-engine`, `open-tsdb-engine`,  `upgrade-cold-storage`, `upgrade-disk-size`,  `upgrade-lindorm-core-num`, `upgrade-lindorm-engine`,  `upgrade-search-core-num`, `upgrade-search-engine`, `upgrade-tsdb-core-num`, `upgrade-tsdb-engine`.
        """
        return pulumi.get(self, "upgrade_type")

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

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

