# 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__ = [
    'InstanceEndpoint',
]

@pulumi.output_type
class InstanceEndpoint(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "alternativeEndpoints":
            suggest = "alternative_endpoints"
        elif key == "vpcId":
            suggest = "vpc_id"
        elif key == "vpcInstanceId":
            suggest = "vpc_instance_id"
        elif key == "vswitchId":
            suggest = "vswitch_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceEndpoint. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceEndpoint.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceEndpoint.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 alternative_endpoints: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 endpoint: Optional[str] = None,
                 type: Optional[str] = None,
                 vpc_id: Optional[str] = None,
                 vpc_instance_id: Optional[str] = None,
                 vswitch_id: Optional[str] = None):
        """
        :param str alternative_endpoints: Some old instances have both AnyTunnel and SingleTunnel enabled. When switching from AnyTunnel to SingleTunnel, the endpoints of both are retained. Therefore, one more field is required to store the Endpoint.
        :param bool enabled: Whether to turn on the network.
        :param str endpoint: Domain name.
        :param str type: The network type.
        :param str vpc_id: VPC primary key.
        :param str vpc_instance_id: The vpc instance ID.
        :param str vswitch_id: The ID of the virtual switch.
        """
        if alternative_endpoints is not None:
            pulumi.set(__self__, "alternative_endpoints", alternative_endpoints)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if endpoint is not None:
            pulumi.set(__self__, "endpoint", endpoint)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if vpc_id is not None:
            pulumi.set(__self__, "vpc_id", vpc_id)
        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="alternativeEndpoints")
    def alternative_endpoints(self) -> Optional[str]:
        """
        Some old instances have both AnyTunnel and SingleTunnel enabled. When switching from AnyTunnel to SingleTunnel, the endpoints of both are retained. Therefore, one more field is required to store the Endpoint.
        """
        return pulumi.get(self, "alternative_endpoints")

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        """
        Whether to turn on the network.
        """
        return pulumi.get(self, "enabled")

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

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

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> Optional[str]:
        """
        VPC primary key.
        """
        return pulumi.get(self, "vpc_id")

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

    @property
    @pulumi.getter(name="vswitchId")
    def vswitch_id(self) -> Optional[str]:
        """
        The ID of the virtual switch.
        """
        return pulumi.get(self, "vswitch_id")


