# 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 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

__all__ = [
    'DbClusterDesiredParamArgs',
    'DbClusterDesiredParamArgsDict',
    'DbClusterParamChangeLogArgs',
    'DbClusterParamChangeLogArgsDict',
    'DbInstanceDesiredSecurityIpListArgs',
    'DbInstanceDesiredSecurityIpListArgsDict',
    'DbInstanceInstanceNetInfoArgs',
    'DbInstanceInstanceNetInfoArgsDict',
    'DbInstanceInstanceNetInfoPortListArgs',
    'DbInstanceInstanceNetInfoPortListArgsDict',
    'DbInstanceSecurityIpListArgs',
    'DbInstanceSecurityIpListArgsDict',
]

MYPY = False

if not MYPY:
    class DbClusterDesiredParamArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[str]]
        """
        Parameter name.
        """
        value: NotRequired[pulumi.Input[str]]
        """
        The new value of Parameter.
        """
elif False:
    DbClusterDesiredParamArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DbClusterDesiredParamArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: Parameter name.
        :param pulumi.Input[str] value: The new value of Parameter.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Parameter name.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        """
        The new value of Parameter.
        """
        return pulumi.get(self, "value")

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


if not MYPY:
    class DbClusterParamChangeLogArgsDict(TypedDict):
        config_id: NotRequired[pulumi.Input[int]]
        """
        The id of parameter change.
        """
        gmt_created: NotRequired[pulumi.Input[str]]
        """
        When the parameter change is created.
        """
        gmt_modified: NotRequired[pulumi.Input[str]]
        """
        When the parameter change is modified.
        """
        is_applied: NotRequired[pulumi.Input[bool]]
        """
        Whether the parameter changing is applied.
        """
        name: NotRequired[pulumi.Input[str]]
        """
        Changed parameter name.
        """
        new_value: NotRequired[pulumi.Input[str]]
        """
        The new value of parameter.
        """
        old_value: NotRequired[pulumi.Input[str]]
        """
        The old value of parameter.
        """
elif False:
    DbClusterParamChangeLogArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DbClusterParamChangeLogArgs:
    def __init__(__self__, *,
                 config_id: Optional[pulumi.Input[int]] = None,
                 gmt_created: Optional[pulumi.Input[str]] = None,
                 gmt_modified: Optional[pulumi.Input[str]] = None,
                 is_applied: Optional[pulumi.Input[bool]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 new_value: Optional[pulumi.Input[str]] = None,
                 old_value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[int] config_id: The id of parameter change.
        :param pulumi.Input[str] gmt_created: When the parameter change is created.
        :param pulumi.Input[str] gmt_modified: When the parameter change is modified.
        :param pulumi.Input[bool] is_applied: Whether the parameter changing is applied.
        :param pulumi.Input[str] name: Changed parameter name.
        :param pulumi.Input[str] new_value: The new value of parameter.
        :param pulumi.Input[str] old_value: The old value of parameter.
        """
        if config_id is not None:
            pulumi.set(__self__, "config_id", config_id)
        if gmt_created is not None:
            pulumi.set(__self__, "gmt_created", gmt_created)
        if gmt_modified is not None:
            pulumi.set(__self__, "gmt_modified", gmt_modified)
        if is_applied is not None:
            pulumi.set(__self__, "is_applied", is_applied)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if new_value is not None:
            pulumi.set(__self__, "new_value", new_value)
        if old_value is not None:
            pulumi.set(__self__, "old_value", old_value)

    @property
    @pulumi.getter(name="configId")
    def config_id(self) -> Optional[pulumi.Input[int]]:
        """
        The id of parameter change.
        """
        return pulumi.get(self, "config_id")

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

    @property
    @pulumi.getter(name="gmtCreated")
    def gmt_created(self) -> Optional[pulumi.Input[str]]:
        """
        When the parameter change is created.
        """
        return pulumi.get(self, "gmt_created")

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

    @property
    @pulumi.getter(name="gmtModified")
    def gmt_modified(self) -> Optional[pulumi.Input[str]]:
        """
        When the parameter change is modified.
        """
        return pulumi.get(self, "gmt_modified")

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

    @property
    @pulumi.getter(name="isApplied")
    def is_applied(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the parameter changing is applied.
        """
        return pulumi.get(self, "is_applied")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Changed parameter name.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="newValue")
    def new_value(self) -> Optional[pulumi.Input[str]]:
        """
        The new value of parameter.
        """
        return pulumi.get(self, "new_value")

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

    @property
    @pulumi.getter(name="oldValue")
    def old_value(self) -> Optional[pulumi.Input[str]]:
        """
        The old value of parameter.
        """
        return pulumi.get(self, "old_value")

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


if not MYPY:
    class DbInstanceDesiredSecurityIpListArgsDict(TypedDict):
        group_name: NotRequired[pulumi.Input[str]]
        """
        Security group name.
        """
        security_ip_list: NotRequired[pulumi.Input[str]]
        """
        The IP list of Security group. Each single IP value should be Separated by comma.
        """
elif False:
    DbInstanceDesiredSecurityIpListArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DbInstanceDesiredSecurityIpListArgs:
    def __init__(__self__, *,
                 group_name: Optional[pulumi.Input[str]] = None,
                 security_ip_list: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] group_name: Security group name.
        :param pulumi.Input[str] security_ip_list: The IP list of Security group. Each single IP value should be Separated by comma.
        """
        if group_name is not None:
            pulumi.set(__self__, "group_name", group_name)
        if security_ip_list is not None:
            pulumi.set(__self__, "security_ip_list", security_ip_list)

    @property
    @pulumi.getter(name="groupName")
    def group_name(self) -> Optional[pulumi.Input[str]]:
        """
        Security 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="securityIpList")
    def security_ip_list(self) -> Optional[pulumi.Input[str]]:
        """
        The IP list of Security group. Each single IP value should be Separated by comma.
        """
        return pulumi.get(self, "security_ip_list")

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


if not MYPY:
    class DbInstanceInstanceNetInfoArgsDict(TypedDict):
        connection_string: NotRequired[pulumi.Input[str]]
        """
        The connection string of the instance.
        """
        db_ip: NotRequired[pulumi.Input[str]]
        """
        The IP address of the instance.
        """
        net_type: NotRequired[pulumi.Input[str]]
        """
        The network type of the instance.
        """
        port_lists: NotRequired[pulumi.Input[Sequence[pulumi.Input['DbInstanceInstanceNetInfoPortListArgsDict']]]]
        """
        A list for port provides SelectDB service.
        """
        vpc_instance_id: NotRequired[pulumi.Input[str]]
        """
        The VPC ID.
        """
        vswitch_id: NotRequired[pulumi.Input[str]]
        """
        The ID of vswitch for DBInstance.
        """
elif False:
    DbInstanceInstanceNetInfoArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DbInstanceInstanceNetInfoArgs:
    def __init__(__self__, *,
                 connection_string: Optional[pulumi.Input[str]] = None,
                 db_ip: Optional[pulumi.Input[str]] = None,
                 net_type: Optional[pulumi.Input[str]] = None,
                 port_lists: Optional[pulumi.Input[Sequence[pulumi.Input['DbInstanceInstanceNetInfoPortListArgs']]]] = None,
                 vpc_instance_id: Optional[pulumi.Input[str]] = None,
                 vswitch_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] connection_string: The connection string of the instance.
        :param pulumi.Input[str] db_ip: The IP address of the instance.
        :param pulumi.Input[str] net_type: The network type of the instance.
        :param pulumi.Input[Sequence[pulumi.Input['DbInstanceInstanceNetInfoPortListArgs']]] port_lists: A list for port provides SelectDB service.
        :param pulumi.Input[str] vpc_instance_id: The VPC ID.
        :param pulumi.Input[str] vswitch_id: The ID of vswitch for DBInstance.
        """
        if connection_string is not None:
            pulumi.set(__self__, "connection_string", connection_string)
        if db_ip is not None:
            pulumi.set(__self__, "db_ip", db_ip)
        if net_type is not None:
            pulumi.set(__self__, "net_type", net_type)
        if port_lists is not None:
            pulumi.set(__self__, "port_lists", port_lists)
        if vpc_instance_id is not None:
            pulumi.set(__self__, "vpc_instance_id", vpc_instance_id)
        if vswitch_id is not None:
            pulumi.set(__self__, "vswitch_id", vswitch_id)

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

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

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

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

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

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

    @property
    @pulumi.getter(name="portLists")
    def port_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DbInstanceInstanceNetInfoPortListArgs']]]]:
        """
        A list for port provides SelectDB service.
        """
        return pulumi.get(self, "port_lists")

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

    @property
    @pulumi.getter(name="vpcInstanceId")
    def vpc_instance_id(self) -> Optional[pulumi.Input[str]]:
        """
        The VPC ID.
        """
        return pulumi.get(self, "vpc_instance_id")

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

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

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


if not MYPY:
    class DbInstanceInstanceNetInfoPortListArgsDict(TypedDict):
        port: NotRequired[pulumi.Input[str]]
        """
        The port that is used to connect.
        """
        protocol: NotRequired[pulumi.Input[str]]
        """
        The protocol of the port.
        """
elif False:
    DbInstanceInstanceNetInfoPortListArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DbInstanceInstanceNetInfoPortListArgs:
    def __init__(__self__, *,
                 port: Optional[pulumi.Input[str]] = None,
                 protocol: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] port: The port that is used to connect.
        :param pulumi.Input[str] protocol: The protocol of the port.
        """
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)

    @property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[str]]:
        """
        The port that is used to connect.
        """
        return pulumi.get(self, "port")

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

    @property
    @pulumi.getter
    def protocol(self) -> Optional[pulumi.Input[str]]:
        """
        The protocol of the port.
        """
        return pulumi.get(self, "protocol")

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


if not MYPY:
    class DbInstanceSecurityIpListArgsDict(TypedDict):
        group_name: NotRequired[pulumi.Input[str]]
        """
        Security group name.
        """
        group_tag: NotRequired[pulumi.Input[str]]
        """
        The tag of Security group.
        """
        list_net_type: NotRequired[pulumi.Input[str]]
        """
        The network type of Security group.
        """
        security_ip_list: NotRequired[pulumi.Input[str]]
        """
        The IP list of Security group. Each single IP value should be Separated by comma.
        """
        security_ip_type: NotRequired[pulumi.Input[str]]
        """
        The IP address type. Valid values: `ipv4`, `ipv6` (not supported).
        """
elif False:
    DbInstanceSecurityIpListArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DbInstanceSecurityIpListArgs:
    def __init__(__self__, *,
                 group_name: Optional[pulumi.Input[str]] = None,
                 group_tag: Optional[pulumi.Input[str]] = None,
                 list_net_type: Optional[pulumi.Input[str]] = None,
                 security_ip_list: Optional[pulumi.Input[str]] = None,
                 security_ip_type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] group_name: Security group name.
        :param pulumi.Input[str] group_tag: The tag of Security group.
        :param pulumi.Input[str] list_net_type: The network type of Security group.
        :param pulumi.Input[str] security_ip_list: The IP list of Security group. Each single IP value should be Separated by comma.
        :param pulumi.Input[str] security_ip_type: The IP address type. Valid values: `ipv4`, `ipv6` (not supported).
        """
        if group_name is not None:
            pulumi.set(__self__, "group_name", group_name)
        if group_tag is not None:
            pulumi.set(__self__, "group_tag", group_tag)
        if list_net_type is not None:
            pulumi.set(__self__, "list_net_type", list_net_type)
        if security_ip_list is not None:
            pulumi.set(__self__, "security_ip_list", security_ip_list)
        if security_ip_type is not None:
            pulumi.set(__self__, "security_ip_type", security_ip_type)

    @property
    @pulumi.getter(name="groupName")
    def group_name(self) -> Optional[pulumi.Input[str]]:
        """
        Security 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="groupTag")
    def group_tag(self) -> Optional[pulumi.Input[str]]:
        """
        The tag of Security group.
        """
        return pulumi.get(self, "group_tag")

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

    @property
    @pulumi.getter(name="listNetType")
    def list_net_type(self) -> Optional[pulumi.Input[str]]:
        """
        The network type of Security group.
        """
        return pulumi.get(self, "list_net_type")

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

    @property
    @pulumi.getter(name="securityIpList")
    def security_ip_list(self) -> Optional[pulumi.Input[str]]:
        """
        The IP list of Security group. Each single IP value should be Separated by comma.
        """
        return pulumi.get(self, "security_ip_list")

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

    @property
    @pulumi.getter(name="securityIpType")
    def security_ip_type(self) -> Optional[pulumi.Input[str]]:
        """
        The IP address type. Valid values: `ipv4`, `ipv6` (not supported).
        """
        return pulumi.get(self, "security_ip_type")

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


