# 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__ = [
    'ProjectIpWhiteListArgs',
    'ProjectPropertiesArgs',
    'ProjectPropertiesEncryptionArgs',
    'ProjectPropertiesTableLifecycleArgs',
    'ProjectSecurityPropertiesArgs',
    'ProjectSecurityPropertiesProjectProtectionArgs',
]

@pulumi.input_type
class ProjectIpWhiteListArgs:
    def __init__(__self__, *,
                 ip_list: Optional[pulumi.Input[str]] = None,
                 vpc_ip_list: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] ip_list: Classic network IP white list.
        :param pulumi.Input[str] vpc_ip_list: VPC network whitelist.
        """
        if ip_list is not None:
            pulumi.set(__self__, "ip_list", ip_list)
        if vpc_ip_list is not None:
            pulumi.set(__self__, "vpc_ip_list", vpc_ip_list)

    @property
    @pulumi.getter(name="ipList")
    def ip_list(self) -> Optional[pulumi.Input[str]]:
        """
        Classic network IP white list.
        """
        return pulumi.get(self, "ip_list")

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

    @property
    @pulumi.getter(name="vpcIpList")
    def vpc_ip_list(self) -> Optional[pulumi.Input[str]]:
        """
        VPC network whitelist.
        """
        return pulumi.get(self, "vpc_ip_list")

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


@pulumi.input_type
class ProjectPropertiesArgs:
    def __init__(__self__, *,
                 allow_full_scan: Optional[pulumi.Input[bool]] = None,
                 enable_decimal2: Optional[pulumi.Input[bool]] = None,
                 encryption: Optional[pulumi.Input['ProjectPropertiesEncryptionArgs']] = None,
                 retention_days: Optional[pulumi.Input[int]] = None,
                 sql_metering_max: Optional[pulumi.Input[str]] = None,
                 table_lifecycle: Optional[pulumi.Input['ProjectPropertiesTableLifecycleArgs']] = None,
                 timezone: Optional[pulumi.Input[str]] = None,
                 type_system: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[bool] allow_full_scan: Whether to allow full table scan.
        :param pulumi.Input[bool] enable_decimal2: Whether to turn on Decimal2.0.
        :param pulumi.Input['ProjectPropertiesEncryptionArgs'] encryption: Whether encryption is turned on.See the following `Block Encryption`.
        :param pulumi.Input[int] retention_days: Job default retention time.
        :param pulumi.Input[str] sql_metering_max: SQL charge limit.
        :param pulumi.Input['ProjectPropertiesTableLifecycleArgs'] table_lifecycle: Life cycle of tables.See the following `Block TableLifecycle`.
        :param pulumi.Input[str] timezone: Project time zone.
        :param pulumi.Input[str] type_system: Type system.
        """
        if allow_full_scan is not None:
            pulumi.set(__self__, "allow_full_scan", allow_full_scan)
        if enable_decimal2 is not None:
            pulumi.set(__self__, "enable_decimal2", enable_decimal2)
        if encryption is not None:
            pulumi.set(__self__, "encryption", encryption)
        if retention_days is not None:
            pulumi.set(__self__, "retention_days", retention_days)
        if sql_metering_max is not None:
            pulumi.set(__self__, "sql_metering_max", sql_metering_max)
        if table_lifecycle is not None:
            pulumi.set(__self__, "table_lifecycle", table_lifecycle)
        if timezone is not None:
            pulumi.set(__self__, "timezone", timezone)
        if type_system is not None:
            pulumi.set(__self__, "type_system", type_system)

    @property
    @pulumi.getter(name="allowFullScan")
    def allow_full_scan(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to allow full table scan.
        """
        return pulumi.get(self, "allow_full_scan")

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

    @property
    @pulumi.getter(name="enableDecimal2")
    def enable_decimal2(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to turn on Decimal2.0.
        """
        return pulumi.get(self, "enable_decimal2")

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

    @property
    @pulumi.getter
    def encryption(self) -> Optional[pulumi.Input['ProjectPropertiesEncryptionArgs']]:
        """
        Whether encryption is turned on.See the following `Block Encryption`.
        """
        return pulumi.get(self, "encryption")

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

    @property
    @pulumi.getter(name="retentionDays")
    def retention_days(self) -> Optional[pulumi.Input[int]]:
        """
        Job default retention time.
        """
        return pulumi.get(self, "retention_days")

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

    @property
    @pulumi.getter(name="sqlMeteringMax")
    def sql_metering_max(self) -> Optional[pulumi.Input[str]]:
        """
        SQL charge limit.
        """
        return pulumi.get(self, "sql_metering_max")

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

    @property
    @pulumi.getter(name="tableLifecycle")
    def table_lifecycle(self) -> Optional[pulumi.Input['ProjectPropertiesTableLifecycleArgs']]:
        """
        Life cycle of tables.See the following `Block TableLifecycle`.
        """
        return pulumi.get(self, "table_lifecycle")

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

    @property
    @pulumi.getter
    def timezone(self) -> Optional[pulumi.Input[str]]:
        """
        Project time zone.
        """
        return pulumi.get(self, "timezone")

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

    @property
    @pulumi.getter(name="typeSystem")
    def type_system(self) -> Optional[pulumi.Input[str]]:
        """
        Type system.
        """
        return pulumi.get(self, "type_system")

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


@pulumi.input_type
class ProjectPropertiesEncryptionArgs:
    def __init__(__self__, *,
                 algorithm: Optional[pulumi.Input[str]] = None,
                 enable: Optional[pulumi.Input[bool]] = None,
                 key: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] algorithm: Algorithm.
        :param pulumi.Input[bool] enable: Whether to open.
        :param pulumi.Input[str] key: Encryption algorithm key.
        """
        if algorithm is not None:
            pulumi.set(__self__, "algorithm", algorithm)
        if enable is not None:
            pulumi.set(__self__, "enable", enable)
        if key is not None:
            pulumi.set(__self__, "key", key)

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

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

    @property
    @pulumi.getter
    def enable(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to open.
        """
        return pulumi.get(self, "enable")

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

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

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


@pulumi.input_type
class ProjectPropertiesTableLifecycleArgs:
    def __init__(__self__, *,
                 type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] type: Life cycle type.
        :param pulumi.Input[str] value: The value of the life cycle.
        """
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

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

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

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

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


@pulumi.input_type
class ProjectSecurityPropertiesArgs:
    def __init__(__self__, *,
                 enable_download_privilege: Optional[pulumi.Input[bool]] = None,
                 label_security: Optional[pulumi.Input[bool]] = None,
                 object_creator_has_access_permission: Optional[pulumi.Input[bool]] = None,
                 object_creator_has_grant_permission: Optional[pulumi.Input[bool]] = None,
                 project_protection: Optional[pulumi.Input['ProjectSecurityPropertiesProjectProtectionArgs']] = None,
                 using_acl: Optional[pulumi.Input[bool]] = None,
                 using_policy: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[bool] enable_download_privilege: Whether to enable download permission check.
        :param pulumi.Input[bool] label_security: Label authorization.
        :param pulumi.Input[bool] object_creator_has_access_permission: Project creator permissions.
        :param pulumi.Input[bool] object_creator_has_grant_permission: Does the project creator have authorization rights.
        :param pulumi.Input['ProjectSecurityPropertiesProjectProtectionArgs'] project_protection: Project protection.See the following `Block ProjectProtection`.
        :param pulumi.Input[bool] using_acl: Whether to turn on ACL.
        :param pulumi.Input[bool] using_policy: Whether to enable Policy.
        """
        if enable_download_privilege is not None:
            pulumi.set(__self__, "enable_download_privilege", enable_download_privilege)
        if label_security is not None:
            pulumi.set(__self__, "label_security", label_security)
        if object_creator_has_access_permission is not None:
            pulumi.set(__self__, "object_creator_has_access_permission", object_creator_has_access_permission)
        if object_creator_has_grant_permission is not None:
            pulumi.set(__self__, "object_creator_has_grant_permission", object_creator_has_grant_permission)
        if project_protection is not None:
            pulumi.set(__self__, "project_protection", project_protection)
        if using_acl is not None:
            pulumi.set(__self__, "using_acl", using_acl)
        if using_policy is not None:
            pulumi.set(__self__, "using_policy", using_policy)

    @property
    @pulumi.getter(name="enableDownloadPrivilege")
    def enable_download_privilege(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to enable download permission check.
        """
        return pulumi.get(self, "enable_download_privilege")

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

    @property
    @pulumi.getter(name="labelSecurity")
    def label_security(self) -> Optional[pulumi.Input[bool]]:
        """
        Label authorization.
        """
        return pulumi.get(self, "label_security")

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

    @property
    @pulumi.getter(name="objectCreatorHasAccessPermission")
    def object_creator_has_access_permission(self) -> Optional[pulumi.Input[bool]]:
        """
        Project creator permissions.
        """
        return pulumi.get(self, "object_creator_has_access_permission")

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

    @property
    @pulumi.getter(name="objectCreatorHasGrantPermission")
    def object_creator_has_grant_permission(self) -> Optional[pulumi.Input[bool]]:
        """
        Does the project creator have authorization rights.
        """
        return pulumi.get(self, "object_creator_has_grant_permission")

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

    @property
    @pulumi.getter(name="projectProtection")
    def project_protection(self) -> Optional[pulumi.Input['ProjectSecurityPropertiesProjectProtectionArgs']]:
        """
        Project protection.See the following `Block ProjectProtection`.
        """
        return pulumi.get(self, "project_protection")

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

    @property
    @pulumi.getter(name="usingAcl")
    def using_acl(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to turn on ACL.
        """
        return pulumi.get(self, "using_acl")

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

    @property
    @pulumi.getter(name="usingPolicy")
    def using_policy(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether to enable Policy.
        """
        return pulumi.get(self, "using_policy")

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


@pulumi.input_type
class ProjectSecurityPropertiesProjectProtectionArgs:
    def __init__(__self__, *,
                 exception_policy: Optional[pulumi.Input[str]] = None,
                 protected: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] exception_policy: Exclusion policy.
        :param pulumi.Input[bool] protected: Is it turned on.
        """
        if exception_policy is not None:
            pulumi.set(__self__, "exception_policy", exception_policy)
        if protected is not None:
            pulumi.set(__self__, "protected", protected)

    @property
    @pulumi.getter(name="exceptionPolicy")
    def exception_policy(self) -> Optional[pulumi.Input[str]]:
        """
        Exclusion policy.
        """
        return pulumi.get(self, "exception_policy")

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

    @property
    @pulumi.getter
    def protected(self) -> Optional[pulumi.Input[bool]]:
        """
        Is it turned on.
        """
        return pulumi.get(self, "protected")

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


