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

__all__ = [
    'DbInstancePlanPlanConfigArgs',
    'DbInstancePlanPlanConfigPauseArgs',
    'DbInstancePlanPlanConfigResumeArgs',
    'DbInstancePlanPlanConfigScaleInArgs',
    'DbInstancePlanPlanConfigScaleOutArgs',
    'InstanceIpWhitelistArgs',
]

@pulumi.input_type
class DbInstancePlanPlanConfigArgs:
    def __init__(__self__, *,
                 pause: Optional[pulumi.Input['DbInstancePlanPlanConfigPauseArgs']] = None,
                 resume: Optional[pulumi.Input['DbInstancePlanPlanConfigResumeArgs']] = None,
                 scale_in: Optional[pulumi.Input['DbInstancePlanPlanConfigScaleInArgs']] = None,
                 scale_out: Optional[pulumi.Input['DbInstancePlanPlanConfigScaleOutArgs']] = None):
        """
        :param pulumi.Input['DbInstancePlanPlanConfigPauseArgs'] pause: Pause instance plan config. See the following `Block pause`.
        :param pulumi.Input['DbInstancePlanPlanConfigResumeArgs'] resume: Resume instance plan config. See the following `Block resume`.
        :param pulumi.Input['DbInstancePlanPlanConfigScaleInArgs'] scale_in: Scale In instance plan config. See the following `Block scale_in`.
        :param pulumi.Input['DbInstancePlanPlanConfigScaleOutArgs'] scale_out: Scale out instance plan config. See the following `Block scale_out`.
        """
        if pause is not None:
            pulumi.set(__self__, "pause", pause)
        if resume is not None:
            pulumi.set(__self__, "resume", resume)
        if scale_in is not None:
            pulumi.set(__self__, "scale_in", scale_in)
        if scale_out is not None:
            pulumi.set(__self__, "scale_out", scale_out)

    @property
    @pulumi.getter
    def pause(self) -> Optional[pulumi.Input['DbInstancePlanPlanConfigPauseArgs']]:
        """
        Pause instance plan config. See the following `Block pause`.
        """
        return pulumi.get(self, "pause")

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

    @property
    @pulumi.getter
    def resume(self) -> Optional[pulumi.Input['DbInstancePlanPlanConfigResumeArgs']]:
        """
        Resume instance plan config. See the following `Block resume`.
        """
        return pulumi.get(self, "resume")

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

    @property
    @pulumi.getter(name="scaleIn")
    def scale_in(self) -> Optional[pulumi.Input['DbInstancePlanPlanConfigScaleInArgs']]:
        """
        Scale In instance plan config. See the following `Block scale_in`.
        """
        return pulumi.get(self, "scale_in")

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

    @property
    @pulumi.getter(name="scaleOut")
    def scale_out(self) -> Optional[pulumi.Input['DbInstancePlanPlanConfigScaleOutArgs']]:
        """
        Scale out instance plan config. See the following `Block scale_out`.
        """
        return pulumi.get(self, "scale_out")

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


@pulumi.input_type
class DbInstancePlanPlanConfigPauseArgs:
    def __init__(__self__, *,
                 execute_time: Optional[pulumi.Input[str]] = None,
                 plan_cron_time: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] execute_time: The executed time of the Plan.
        :param pulumi.Input[str] plan_cron_time: The Cron Time of the plan.
        """
        if execute_time is not None:
            pulumi.set(__self__, "execute_time", execute_time)
        if plan_cron_time is not None:
            pulumi.set(__self__, "plan_cron_time", plan_cron_time)

    @property
    @pulumi.getter(name="executeTime")
    def execute_time(self) -> Optional[pulumi.Input[str]]:
        """
        The executed time of the Plan.
        """
        return pulumi.get(self, "execute_time")

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

    @property
    @pulumi.getter(name="planCronTime")
    def plan_cron_time(self) -> Optional[pulumi.Input[str]]:
        """
        The Cron Time of the plan.
        """
        return pulumi.get(self, "plan_cron_time")

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


@pulumi.input_type
class DbInstancePlanPlanConfigResumeArgs:
    def __init__(__self__, *,
                 execute_time: Optional[pulumi.Input[str]] = None,
                 plan_cron_time: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] execute_time: The executed time of the Plan.
        :param pulumi.Input[str] plan_cron_time: The Cron Time of the plan.
        """
        if execute_time is not None:
            pulumi.set(__self__, "execute_time", execute_time)
        if plan_cron_time is not None:
            pulumi.set(__self__, "plan_cron_time", plan_cron_time)

    @property
    @pulumi.getter(name="executeTime")
    def execute_time(self) -> Optional[pulumi.Input[str]]:
        """
        The executed time of the Plan.
        """
        return pulumi.get(self, "execute_time")

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

    @property
    @pulumi.getter(name="planCronTime")
    def plan_cron_time(self) -> Optional[pulumi.Input[str]]:
        """
        The Cron Time of the plan.
        """
        return pulumi.get(self, "plan_cron_time")

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


@pulumi.input_type
class DbInstancePlanPlanConfigScaleInArgs:
    def __init__(__self__, *,
                 execute_time: Optional[pulumi.Input[str]] = None,
                 plan_cron_time: Optional[pulumi.Input[str]] = None,
                 segment_node_num: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] execute_time: The executed time of the Plan.
        :param pulumi.Input[str] plan_cron_time: The Cron Time of the plan.
        :param pulumi.Input[str] segment_node_num: The segment Node Num of the Plan.
        """
        if execute_time is not None:
            pulumi.set(__self__, "execute_time", execute_time)
        if plan_cron_time is not None:
            pulumi.set(__self__, "plan_cron_time", plan_cron_time)
        if segment_node_num is not None:
            pulumi.set(__self__, "segment_node_num", segment_node_num)

    @property
    @pulumi.getter(name="executeTime")
    def execute_time(self) -> Optional[pulumi.Input[str]]:
        """
        The executed time of the Plan.
        """
        return pulumi.get(self, "execute_time")

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

    @property
    @pulumi.getter(name="planCronTime")
    def plan_cron_time(self) -> Optional[pulumi.Input[str]]:
        """
        The Cron Time of the plan.
        """
        return pulumi.get(self, "plan_cron_time")

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

    @property
    @pulumi.getter(name="segmentNodeNum")
    def segment_node_num(self) -> Optional[pulumi.Input[str]]:
        """
        The segment Node Num of the Plan.
        """
        return pulumi.get(self, "segment_node_num")

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


@pulumi.input_type
class DbInstancePlanPlanConfigScaleOutArgs:
    def __init__(__self__, *,
                 execute_time: Optional[pulumi.Input[str]] = None,
                 plan_cron_time: Optional[pulumi.Input[str]] = None,
                 segment_node_num: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] execute_time: The executed time of the Plan.
        :param pulumi.Input[str] plan_cron_time: The Cron Time of the plan.
        :param pulumi.Input[str] segment_node_num: The segment Node Num of the Plan.
        """
        if execute_time is not None:
            pulumi.set(__self__, "execute_time", execute_time)
        if plan_cron_time is not None:
            pulumi.set(__self__, "plan_cron_time", plan_cron_time)
        if segment_node_num is not None:
            pulumi.set(__self__, "segment_node_num", segment_node_num)

    @property
    @pulumi.getter(name="executeTime")
    def execute_time(self) -> Optional[pulumi.Input[str]]:
        """
        The executed time of the Plan.
        """
        return pulumi.get(self, "execute_time")

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

    @property
    @pulumi.getter(name="planCronTime")
    def plan_cron_time(self) -> Optional[pulumi.Input[str]]:
        """
        The Cron Time of the plan.
        """
        return pulumi.get(self, "plan_cron_time")

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

    @property
    @pulumi.getter(name="segmentNodeNum")
    def segment_node_num(self) -> Optional[pulumi.Input[str]]:
        """
        The segment Node Num of the Plan.
        """
        return pulumi.get(self, "segment_node_num")

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


@pulumi.input_type
class InstanceIpWhitelistArgs:
    def __init__(__self__, *,
                 security_ip_list: pulumi.Input[str],
                 ip_group_attribute: Optional[pulumi.Input[str]] = None,
                 ip_group_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] security_ip_list: Field `security_ip_list` has been deprecated from provider version 1.187.0. New field `ip_whitelist` instead.
        :param pulumi.Input[str] ip_group_attribute: The value of this parameter is empty by default. The attribute of the whitelist group. The console does not display the whitelist group whose value of this parameter is hidden.
        :param pulumi.Input[str] ip_group_name: IP whitelist group name
        """
        pulumi.set(__self__, "security_ip_list", security_ip_list)
        if ip_group_attribute is not None:
            pulumi.set(__self__, "ip_group_attribute", ip_group_attribute)
        if ip_group_name is not None:
            pulumi.set(__self__, "ip_group_name", ip_group_name)

    @property
    @pulumi.getter(name="securityIpList")
    def security_ip_list(self) -> pulumi.Input[str]:
        """
        Field `security_ip_list` has been deprecated from provider version 1.187.0. New field `ip_whitelist` instead.
        """
        return pulumi.get(self, "security_ip_list")

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

    @property
    @pulumi.getter(name="ipGroupAttribute")
    def ip_group_attribute(self) -> Optional[pulumi.Input[str]]:
        """
        The value of this parameter is empty by default. The attribute of the whitelist group. The console does not display the whitelist group whose value of this parameter is hidden.
        """
        return pulumi.get(self, "ip_group_attribute")

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

    @property
    @pulumi.getter(name="ipGroupName")
    def ip_group_name(self) -> Optional[pulumi.Input[str]]:
        """
        IP whitelist group name
        """
        return pulumi.get(self, "ip_group_name")

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


