# 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 builtins
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__ = [
    'TransitRouterAttachmentArgs',
    'TransitRouterAttachmentArgsDict',
    'TransitRouterAttachmentTagArgs',
    'TransitRouterAttachmentTagArgsDict',
    'TransitRouterRouteTableTagArgs',
    'TransitRouterRouteTableTagArgsDict',
    'TransitRouterTagArgs',
    'TransitRouterTagArgsDict',
]

MYPY = False

if not MYPY:
    class TransitRouterAttachmentArgsDict(TypedDict):
        auto_publish_route_enabled: NotRequired[pulumi.Input[builtins.bool]]
        """
        是否自动同步TR路由到网络实例路由表中。true：是。false：否。
        """
        business_status: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的业务状态。取值如下：Normal：正常。FinancialLocked：已冻结。
        """
        creation_time: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的创建时间。
        """
        deleted_time: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的删除时间。
        """
        description: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的描述信息。
        """
        ipv6_enabled: NotRequired[pulumi.Input[builtins.bool]]
        """
        是否开启IPv6功能。true：是。false：否。
        """
        overdue_time: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的欠费关停时间。
        """
        resource_id: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例的ID。
        """
        resource_type: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接关联的网络实例类型。VPC：私有网络。VPN：VPN连接。DirectConnectGateway：专线网关。TransitRouter：中转路由器。
        """
        status: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的状态。Creating: 创建中。Deleting: 删除中。Pending：配置中。Available：可用。
        """
        tags: NotRequired[pulumi.Input[Sequence[pulumi.Input['TransitRouterAttachmentTagArgsDict']]]]
        transit_router_attachment_id: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的ID。
        """
        transit_router_attachment_name: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的名称。
        """
        transit_router_forward_policy_table_id: NotRequired[pulumi.Input[builtins.str]]
        """
        跨地域连接关联的转发策略的ID。
        """
        transit_router_id: NotRequired[pulumi.Input[builtins.str]]
        """
        中转路由器实例的ID。
        """
        transit_router_route_table_id: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接关联转发的路由表ID。
        """
        transit_router_traffic_qos_marking_policy_id: NotRequired[pulumi.Input[builtins.str]]
        """
        跨地域连接关联的流标记策略的ID。
        """
        transit_router_traffic_qos_queue_policy_id: NotRequired[pulumi.Input[builtins.str]]
        """
        跨地域连接关联的流队列策略的ID。
        """
        update_time: NotRequired[pulumi.Input[builtins.str]]
        """
        网络实例连接的最近操作时间。
        """
elif False:
    TransitRouterAttachmentArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class TransitRouterAttachmentArgs:
    def __init__(__self__, *,
                 auto_publish_route_enabled: Optional[pulumi.Input[builtins.bool]] = None,
                 business_status: Optional[pulumi.Input[builtins.str]] = None,
                 creation_time: Optional[pulumi.Input[builtins.str]] = None,
                 deleted_time: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 ipv6_enabled: Optional[pulumi.Input[builtins.bool]] = None,
                 overdue_time: Optional[pulumi.Input[builtins.str]] = None,
                 resource_id: Optional[pulumi.Input[builtins.str]] = None,
                 resource_type: Optional[pulumi.Input[builtins.str]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['TransitRouterAttachmentTagArgs']]]] = None,
                 transit_router_attachment_id: Optional[pulumi.Input[builtins.str]] = None,
                 transit_router_attachment_name: Optional[pulumi.Input[builtins.str]] = None,
                 transit_router_forward_policy_table_id: Optional[pulumi.Input[builtins.str]] = None,
                 transit_router_id: Optional[pulumi.Input[builtins.str]] = None,
                 transit_router_route_table_id: Optional[pulumi.Input[builtins.str]] = None,
                 transit_router_traffic_qos_marking_policy_id: Optional[pulumi.Input[builtins.str]] = None,
                 transit_router_traffic_qos_queue_policy_id: Optional[pulumi.Input[builtins.str]] = None,
                 update_time: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.bool] auto_publish_route_enabled: 是否自动同步TR路由到网络实例路由表中。true：是。false：否。
        :param pulumi.Input[builtins.str] business_status: 网络实例连接的业务状态。取值如下：Normal：正常。FinancialLocked：已冻结。
        :param pulumi.Input[builtins.str] creation_time: 网络实例连接的创建时间。
        :param pulumi.Input[builtins.str] deleted_time: 网络实例连接的删除时间。
        :param pulumi.Input[builtins.str] description: 网络实例连接的描述信息。
        :param pulumi.Input[builtins.bool] ipv6_enabled: 是否开启IPv6功能。true：是。false：否。
        :param pulumi.Input[builtins.str] overdue_time: 网络实例连接的欠费关停时间。
        :param pulumi.Input[builtins.str] resource_id: 网络实例的ID。
        :param pulumi.Input[builtins.str] resource_type: 网络实例连接关联的网络实例类型。VPC：私有网络。VPN：VPN连接。DirectConnectGateway：专线网关。TransitRouter：中转路由器。
        :param pulumi.Input[builtins.str] status: 网络实例连接的状态。Creating: 创建中。Deleting: 删除中。Pending：配置中。Available：可用。
        :param pulumi.Input[builtins.str] transit_router_attachment_id: 网络实例连接的ID。
        :param pulumi.Input[builtins.str] transit_router_attachment_name: 网络实例连接的名称。
        :param pulumi.Input[builtins.str] transit_router_forward_policy_table_id: 跨地域连接关联的转发策略的ID。
        :param pulumi.Input[builtins.str] transit_router_id: 中转路由器实例的ID。
        :param pulumi.Input[builtins.str] transit_router_route_table_id: 网络实例连接关联转发的路由表ID。
        :param pulumi.Input[builtins.str] transit_router_traffic_qos_marking_policy_id: 跨地域连接关联的流标记策略的ID。
        :param pulumi.Input[builtins.str] transit_router_traffic_qos_queue_policy_id: 跨地域连接关联的流队列策略的ID。
        :param pulumi.Input[builtins.str] update_time: 网络实例连接的最近操作时间。
        """
        if auto_publish_route_enabled is not None:
            pulumi.set(__self__, "auto_publish_route_enabled", auto_publish_route_enabled)
        if business_status is not None:
            pulumi.set(__self__, "business_status", business_status)
        if creation_time is not None:
            pulumi.set(__self__, "creation_time", creation_time)
        if deleted_time is not None:
            pulumi.set(__self__, "deleted_time", deleted_time)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if ipv6_enabled is not None:
            pulumi.set(__self__, "ipv6_enabled", ipv6_enabled)
        if overdue_time is not None:
            pulumi.set(__self__, "overdue_time", overdue_time)
        if resource_id is not None:
            pulumi.set(__self__, "resource_id", resource_id)
        if resource_type is not None:
            pulumi.set(__self__, "resource_type", resource_type)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if transit_router_attachment_id is not None:
            pulumi.set(__self__, "transit_router_attachment_id", transit_router_attachment_id)
        if transit_router_attachment_name is not None:
            pulumi.set(__self__, "transit_router_attachment_name", transit_router_attachment_name)
        if transit_router_forward_policy_table_id is not None:
            pulumi.set(__self__, "transit_router_forward_policy_table_id", transit_router_forward_policy_table_id)
        if transit_router_id is not None:
            pulumi.set(__self__, "transit_router_id", transit_router_id)
        if transit_router_route_table_id is not None:
            pulumi.set(__self__, "transit_router_route_table_id", transit_router_route_table_id)
        if transit_router_traffic_qos_marking_policy_id is not None:
            pulumi.set(__self__, "transit_router_traffic_qos_marking_policy_id", transit_router_traffic_qos_marking_policy_id)
        if transit_router_traffic_qos_queue_policy_id is not None:
            pulumi.set(__self__, "transit_router_traffic_qos_queue_policy_id", transit_router_traffic_qos_queue_policy_id)
        if update_time is not None:
            pulumi.set(__self__, "update_time", update_time)

    @property
    @pulumi.getter(name="autoPublishRouteEnabled")
    def auto_publish_route_enabled(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否自动同步TR路由到网络实例路由表中。true：是。false：否。
        """
        return pulumi.get(self, "auto_publish_route_enabled")

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

    @property
    @pulumi.getter(name="businessStatus")
    def business_status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的业务状态。取值如下：Normal：正常。FinancialLocked：已冻结。
        """
        return pulumi.get(self, "business_status")

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

    @property
    @pulumi.getter(name="creationTime")
    def creation_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的创建时间。
        """
        return pulumi.get(self, "creation_time")

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

    @property
    @pulumi.getter(name="deletedTime")
    def deleted_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的删除时间。
        """
        return pulumi.get(self, "deleted_time")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的描述信息。
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter(name="ipv6Enabled")
    def ipv6_enabled(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启IPv6功能。true：是。false：否。
        """
        return pulumi.get(self, "ipv6_enabled")

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

    @property
    @pulumi.getter(name="overdueTime")
    def overdue_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的欠费关停时间。
        """
        return pulumi.get(self, "overdue_time")

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

    @property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例的ID。
        """
        return pulumi.get(self, "resource_id")

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

    @property
    @pulumi.getter(name="resourceType")
    def resource_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接关联的网络实例类型。VPC：私有网络。VPN：VPN连接。DirectConnectGateway：专线网关。TransitRouter：中转路由器。
        """
        return pulumi.get(self, "resource_type")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的状态。Creating: 创建中。Deleting: 删除中。Pending：配置中。Available：可用。
        """
        return pulumi.get(self, "status")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['TransitRouterAttachmentTagArgs']]]]:
        return pulumi.get(self, "tags")

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

    @property
    @pulumi.getter(name="transitRouterAttachmentId")
    def transit_router_attachment_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的ID。
        """
        return pulumi.get(self, "transit_router_attachment_id")

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

    @property
    @pulumi.getter(name="transitRouterAttachmentName")
    def transit_router_attachment_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的名称。
        """
        return pulumi.get(self, "transit_router_attachment_name")

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

    @property
    @pulumi.getter(name="transitRouterForwardPolicyTableId")
    def transit_router_forward_policy_table_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        跨地域连接关联的转发策略的ID。
        """
        return pulumi.get(self, "transit_router_forward_policy_table_id")

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

    @property
    @pulumi.getter(name="transitRouterId")
    def transit_router_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        中转路由器实例的ID。
        """
        return pulumi.get(self, "transit_router_id")

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

    @property
    @pulumi.getter(name="transitRouterRouteTableId")
    def transit_router_route_table_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接关联转发的路由表ID。
        """
        return pulumi.get(self, "transit_router_route_table_id")

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

    @property
    @pulumi.getter(name="transitRouterTrafficQosMarkingPolicyId")
    def transit_router_traffic_qos_marking_policy_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        跨地域连接关联的流标记策略的ID。
        """
        return pulumi.get(self, "transit_router_traffic_qos_marking_policy_id")

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

    @property
    @pulumi.getter(name="transitRouterTrafficQosQueuePolicyId")
    def transit_router_traffic_qos_queue_policy_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        跨地域连接关联的流队列策略的ID。
        """
        return pulumi.get(self, "transit_router_traffic_qos_queue_policy_id")

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

    @property
    @pulumi.getter(name="updateTime")
    def update_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        网络实例连接的最近操作时间。
        """
        return pulumi.get(self, "update_time")

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


if not MYPY:
    class TransitRouterAttachmentTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。
        """
elif False:
    TransitRouterAttachmentTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class TransitRouterAttachmentTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[builtins.str] value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。
        """
        return pulumi.get(self, "value")

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


if not MYPY:
    class TransitRouterRouteTableTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值
        """
elif False:
    TransitRouterRouteTableTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class TransitRouterRouteTableTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键
        :param pulumi.Input[builtins.str] value: 标签值
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值
        """
        return pulumi.get(self, "value")

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


if not MYPY:
    class TransitRouterTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。
        """
elif False:
    TransitRouterTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class TransitRouterTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[builtins.str] value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。
        """
        return pulumi.get(self, "value")

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


