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

__all__ = ['NetworkArgs', 'Network']

@pulumi.input_type
class NetworkArgs:
    def __init__(__self__, *,
                 purpose: pulumi.Input[str],
                 dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 dhcp_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_lease: Optional[pulumi.Input[int]] = None,
                 dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_start: Optional[pulumi.Input[str]] = None,
                 dhcp_stop: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
                 domain_name: Optional[pulumi.Input[str]] = None,
                 igmp_snooping: Optional[pulumi.Input[bool]] = None,
                 ipv6_interface_type: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
                 ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
                 ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_group: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 subnet: Optional[pulumi.Input[str]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 wan_egress_qos: Optional[pulumi.Input[int]] = None,
                 wan_gateway: Optional[pulumi.Input[str]] = None,
                 wan_ip: Optional[pulumi.Input[str]] = None,
                 wan_netmask: Optional[pulumi.Input[str]] = None,
                 wan_networkgroup: Optional[pulumi.Input[str]] = None,
                 wan_type: Optional[pulumi.Input[str]] = None,
                 wan_username: Optional[pulumi.Input[str]] = None,
                 x_wan_password: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a Network resource.
        :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.
        :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.
        :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.
        :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.
        :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.
        :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.
        :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.
        :param pulumi.Input[str] domain_name: The domain name of this network.
        :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.
        :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.
        :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.
        :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.
        :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.
        :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        :param pulumi.Input[str] name: The name of the network.
        :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.
        :param pulumi.Input[str] site: The name of the site to associate the network with.
        :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.
        :param pulumi.Input[int] vlan_id: The VLAN ID of the network.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.
        :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.
        :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.
        :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.
        :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.
        :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.
        :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password.
        """
        pulumi.set(__self__, "purpose", purpose)
        if dhcp_dns is not None:
            pulumi.set(__self__, "dhcp_dns", dhcp_dns)
        if dhcp_enabled is not None:
            pulumi.set(__self__, "dhcp_enabled", dhcp_enabled)
        if dhcp_lease is not None:
            pulumi.set(__self__, "dhcp_lease", dhcp_lease)
        if dhcp_relay_enabled is not None:
            pulumi.set(__self__, "dhcp_relay_enabled", dhcp_relay_enabled)
        if dhcp_start is not None:
            pulumi.set(__self__, "dhcp_start", dhcp_start)
        if dhcp_stop is not None:
            pulumi.set(__self__, "dhcp_stop", dhcp_stop)
        if dhcpd_boot_enabled is not None:
            pulumi.set(__self__, "dhcpd_boot_enabled", dhcpd_boot_enabled)
        if dhcpd_boot_filename is not None:
            pulumi.set(__self__, "dhcpd_boot_filename", dhcpd_boot_filename)
        if dhcpd_boot_server is not None:
            pulumi.set(__self__, "dhcpd_boot_server", dhcpd_boot_server)
        if domain_name is not None:
            pulumi.set(__self__, "domain_name", domain_name)
        if igmp_snooping is not None:
            pulumi.set(__self__, "igmp_snooping", igmp_snooping)
        if ipv6_interface_type is not None:
            pulumi.set(__self__, "ipv6_interface_type", ipv6_interface_type)
        if ipv6_pd_interface is not None:
            pulumi.set(__self__, "ipv6_pd_interface", ipv6_pd_interface)
        if ipv6_pd_prefixid is not None:
            pulumi.set(__self__, "ipv6_pd_prefixid", ipv6_pd_prefixid)
        if ipv6_ra_enable is not None:
            pulumi.set(__self__, "ipv6_ra_enable", ipv6_ra_enable)
        if ipv6_static_subnet is not None:
            pulumi.set(__self__, "ipv6_static_subnet", ipv6_static_subnet)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network_group is not None:
            pulumi.set(__self__, "network_group", network_group)
        if site is not None:
            pulumi.set(__self__, "site", site)
        if subnet is not None:
            pulumi.set(__self__, "subnet", subnet)
        if vlan_id is not None:
            pulumi.set(__self__, "vlan_id", vlan_id)
        if wan_dns is not None:
            pulumi.set(__self__, "wan_dns", wan_dns)
        if wan_egress_qos is not None:
            pulumi.set(__self__, "wan_egress_qos", wan_egress_qos)
        if wan_gateway is not None:
            pulumi.set(__self__, "wan_gateway", wan_gateway)
        if wan_ip is not None:
            pulumi.set(__self__, "wan_ip", wan_ip)
        if wan_netmask is not None:
            pulumi.set(__self__, "wan_netmask", wan_netmask)
        if wan_networkgroup is not None:
            pulumi.set(__self__, "wan_networkgroup", wan_networkgroup)
        if wan_type is not None:
            pulumi.set(__self__, "wan_type", wan_type)
        if wan_username is not None:
            pulumi.set(__self__, "wan_username", wan_username)
        if x_wan_password is not None:
            pulumi.set(__self__, "x_wan_password", x_wan_password)

    @property
    @pulumi.getter
    def purpose(self) -> pulumi.Input[str]:
        """
        The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        """
        return pulumi.get(self, "purpose")

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

    @property
    @pulumi.getter(name="dhcpDns")
    def dhcp_dns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        """
        return pulumi.get(self, "dhcp_dns")

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

    @property
    @pulumi.getter(name="dhcpEnabled")
    def dhcp_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether DHCP is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_enabled")

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

    @property
    @pulumi.getter(name="dhcpLease")
    def dhcp_lease(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the lease time for DHCP addresses. Defaults to `86400`.
        """
        return pulumi.get(self, "dhcp_lease")

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

    @property
    @pulumi.getter(name="dhcpRelayEnabled")
    def dhcp_relay_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether DHCP relay is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_relay_enabled")

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

    @property
    @pulumi.getter(name="dhcpStart")
    def dhcp_start(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address where the DHCP range of addresses starts.
        """
        return pulumi.get(self, "dhcp_start")

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

    @property
    @pulumi.getter(name="dhcpStop")
    def dhcp_stop(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address where the DHCP range of addresses stops.
        """
        return pulumi.get(self, "dhcp_stop")

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

    @property
    @pulumi.getter(name="dhcpdBootEnabled")
    def dhcpd_boot_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        """
        return pulumi.get(self, "dhcpd_boot_enabled")

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

    @property
    @pulumi.getter(name="dhcpdBootFilename")
    def dhcpd_boot_filename(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the file to PXE boot from on the dhcpd*boot*server.
        """
        return pulumi.get(self, "dhcpd_boot_filename")

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

    @property
    @pulumi.getter(name="dhcpdBootServer")
    def dhcpd_boot_server(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPv4 address of a TFTP server to network boot from.
        """
        return pulumi.get(self, "dhcpd_boot_server")

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

    @property
    @pulumi.getter(name="domainName")
    def domain_name(self) -> Optional[pulumi.Input[str]]:
        """
        The domain name of this network.
        """
        return pulumi.get(self, "domain_name")

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

    @property
    @pulumi.getter(name="igmpSnooping")
    def igmp_snooping(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether IGMP snooping is enabled or not.
        """
        return pulumi.get(self, "igmp_snooping")

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

    @property
    @pulumi.getter(name="ipv6InterfaceType")
    def ipv6_interface_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies which type of IPv6 connection to use. Defaults to `none`.
        """
        return pulumi.get(self, "ipv6_interface_type")

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

    @property
    @pulumi.getter(name="ipv6PdInterface")
    def ipv6_pd_interface(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies which WAN interface to use for IPv6 PD.
        """
        return pulumi.get(self, "ipv6_pd_interface")

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

    @property
    @pulumi.getter(name="ipv6PdPrefixid")
    def ipv6_pd_prefixid(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPv6 Prefix ID.
        """
        return pulumi.get(self, "ipv6_pd_prefixid")

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

    @property
    @pulumi.getter(name="ipv6RaEnable")
    def ipv6_ra_enable(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether to enable router advertisements or not.
        """
        return pulumi.get(self, "ipv6_ra_enable")

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

    @property
    @pulumi.getter(name="ipv6StaticSubnet")
    def ipv6_static_subnet(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        """
        return pulumi.get(self, "ipv6_static_subnet")

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

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

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

    @property
    @pulumi.getter(name="networkGroup")
    def network_group(self) -> Optional[pulumi.Input[str]]:
        """
        The group of the network. Defaults to `LAN`.
        """
        return pulumi.get(self, "network_group")

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

    @property
    @pulumi.getter
    def site(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the site to associate the network with.
        """
        return pulumi.get(self, "site")

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

    @property
    @pulumi.getter
    def subnet(self) -> Optional[pulumi.Input[str]]:
        """
        The subnet of the network. Must be a valid CIDR address.
        """
        return pulumi.get(self, "subnet")

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

    @property
    @pulumi.getter(name="vlanId")
    def vlan_id(self) -> Optional[pulumi.Input[int]]:
        """
        The VLAN ID of the network.
        """
        return pulumi.get(self, "vlan_id")

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

    @property
    @pulumi.getter(name="wanDns")
    def wan_dns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        DNS servers IPs of the WAN.
        """
        return pulumi.get(self, "wan_dns")

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

    @property
    @pulumi.getter(name="wanEgressQos")
    def wan_egress_qos(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the WAN egress quality of service. Defaults to `0`.
        """
        return pulumi.get(self, "wan_egress_qos")

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

    @property
    @pulumi.getter(name="wanGateway")
    def wan_gateway(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 gateway of the WAN.
        """
        return pulumi.get(self, "wan_gateway")

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

    @property
    @pulumi.getter(name="wanIp")
    def wan_ip(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address of the WAN.
        """
        return pulumi.get(self, "wan_ip")

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

    @property
    @pulumi.getter(name="wanNetmask")
    def wan_netmask(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 netmask of the WAN.
        """
        return pulumi.get(self, "wan_netmask")

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

    @property
    @pulumi.getter(name="wanNetworkgroup")
    def wan_networkgroup(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        """
        return pulumi.get(self, "wan_networkgroup")

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

    @property
    @pulumi.getter(name="wanType")
    def wan_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        """
        return pulumi.get(self, "wan_type")

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

    @property
    @pulumi.getter(name="wanUsername")
    def wan_username(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN username.
        """
        return pulumi.get(self, "wan_username")

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

    @property
    @pulumi.getter(name="xWanPassword")
    def x_wan_password(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN password.
        """
        return pulumi.get(self, "x_wan_password")

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


@pulumi.input_type
class _NetworkState:
    def __init__(__self__, *,
                 dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 dhcp_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_lease: Optional[pulumi.Input[int]] = None,
                 dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_start: Optional[pulumi.Input[str]] = None,
                 dhcp_stop: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
                 domain_name: Optional[pulumi.Input[str]] = None,
                 igmp_snooping: Optional[pulumi.Input[bool]] = None,
                 ipv6_interface_type: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
                 ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
                 ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_group: Optional[pulumi.Input[str]] = None,
                 purpose: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 subnet: Optional[pulumi.Input[str]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 wan_egress_qos: Optional[pulumi.Input[int]] = None,
                 wan_gateway: Optional[pulumi.Input[str]] = None,
                 wan_ip: Optional[pulumi.Input[str]] = None,
                 wan_netmask: Optional[pulumi.Input[str]] = None,
                 wan_networkgroup: Optional[pulumi.Input[str]] = None,
                 wan_type: Optional[pulumi.Input[str]] = None,
                 wan_username: Optional[pulumi.Input[str]] = None,
                 x_wan_password: Optional[<PASSWORD>.Input[str]] = None):
        """
        Input properties used for looking up and filtering Network resources.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.
        :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.
        :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.
        :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.
        :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.
        :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.
        :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.
        :param pulumi.Input[str] domain_name: The domain name of this network.
        :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.
        :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.
        :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.
        :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.
        :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.
        :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        :param pulumi.Input[str] name: The name of the network.
        :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.
        :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        :param pulumi.Input[str] site: The name of the site to associate the network with.
        :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.
        :param pulumi.Input[int] vlan_id: The VLAN ID of the network.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.
        :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.
        :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.
        :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.
        :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.
        :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.
        :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password.
        """
        if dhcp_dns is not None:
            pulumi.set(__self__, "dhcp_dns", dhcp_dns)
        if dhcp_enabled is not None:
            pulumi.set(__self__, "dhcp_enabled", dhcp_enabled)
        if dhcp_lease is not None:
            pulumi.set(__self__, "dhcp_lease", dhcp_lease)
        if dhcp_relay_enabled is not None:
            pulumi.set(__self__, "dhcp_relay_enabled", dhcp_relay_enabled)
        if dhcp_start is not None:
            pulumi.set(__self__, "dhcp_start", dhcp_start)
        if dhcp_stop is not None:
            pulumi.set(__self__, "dhcp_stop", dhcp_stop)
        if dhcpd_boot_enabled is not None:
            pulumi.set(__self__, "dhcpd_boot_enabled", dhcpd_boot_enabled)
        if dhcpd_boot_filename is not None:
            pulumi.set(__self__, "dhcpd_boot_filename", dhcpd_boot_filename)
        if dhcpd_boot_server is not None:
            pulumi.set(__self__, "dhcpd_boot_server", dhcpd_boot_server)
        if domain_name is not None:
            pulumi.set(__self__, "domain_name", domain_name)
        if igmp_snooping is not None:
            pulumi.set(__self__, "igmp_snooping", igmp_snooping)
        if ipv6_interface_type is not None:
            pulumi.set(__self__, "ipv6_interface_type", ipv6_interface_type)
        if ipv6_pd_interface is not None:
            pulumi.set(__self__, "ipv6_pd_interface", ipv6_pd_interface)
        if ipv6_pd_prefixid is not None:
            pulumi.set(__self__, "ipv6_pd_prefixid", ipv6_pd_prefixid)
        if ipv6_ra_enable is not None:
            pulumi.set(__self__, "ipv6_ra_enable", ipv6_ra_enable)
        if ipv6_static_subnet is not None:
            pulumi.set(__self__, "ipv6_static_subnet", ipv6_static_subnet)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network_group is not None:
            pulumi.set(__self__, "network_group", network_group)
        if purpose is not None:
            pulumi.set(__self__, "purpose", purpose)
        if site is not None:
            pulumi.set(__self__, "site", site)
        if subnet is not None:
            pulumi.set(__self__, "subnet", subnet)
        if vlan_id is not None:
            pulumi.set(__self__, "vlan_id", vlan_id)
        if wan_dns is not None:
            pulumi.set(__self__, "wan_dns", wan_dns)
        if wan_egress_qos is not None:
            pulumi.set(__self__, "wan_egress_qos", wan_egress_qos)
        if wan_gateway is not None:
            pulumi.set(__self__, "wan_gateway", wan_gateway)
        if wan_ip is not None:
            pulumi.set(__self__, "wan_ip", wan_ip)
        if wan_netmask is not None:
            pulumi.set(__self__, "wan_netmask", wan_netmask)
        if wan_networkgroup is not None:
            pulumi.set(__self__, "wan_networkgroup", wan_networkgroup)
        if wan_type is not None:
            pulumi.set(__self__, "wan_type", wan_type)
        if wan_username is not None:
            pulumi.set(__self__, "wan_username", wan_username)
        if x_wan_password is not None:
            pulumi.set(__self__, "x_wan_password", x_wan_password)

    @property
    @pulumi.getter(name="dhcpDns")
    def dhcp_dns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        """
        return pulumi.get(self, "dhcp_dns")

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

    @property
    @pulumi.getter(name="dhcpEnabled")
    def dhcp_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether DHCP is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_enabled")

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

    @property
    @pulumi.getter(name="dhcpLease")
    def dhcp_lease(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the lease time for DHCP addresses. Defaults to `86400`.
        """
        return pulumi.get(self, "dhcp_lease")

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

    @property
    @pulumi.getter(name="dhcpRelayEnabled")
    def dhcp_relay_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether DHCP relay is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_relay_enabled")

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

    @property
    @pulumi.getter(name="dhcpStart")
    def dhcp_start(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address where the DHCP range of addresses starts.
        """
        return pulumi.get(self, "dhcp_start")

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

    @property
    @pulumi.getter(name="dhcpStop")
    def dhcp_stop(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address where the DHCP range of addresses stops.
        """
        return pulumi.get(self, "dhcp_stop")

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

    @property
    @pulumi.getter(name="dhcpdBootEnabled")
    def dhcpd_boot_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        """
        return pulumi.get(self, "dhcpd_boot_enabled")

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

    @property
    @pulumi.getter(name="dhcpdBootFilename")
    def dhcpd_boot_filename(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the file to PXE boot from on the dhcpd*boot*server.
        """
        return pulumi.get(self, "dhcpd_boot_filename")

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

    @property
    @pulumi.getter(name="dhcpdBootServer")
    def dhcpd_boot_server(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPv4 address of a TFTP server to network boot from.
        """
        return pulumi.get(self, "dhcpd_boot_server")

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

    @property
    @pulumi.getter(name="domainName")
    def domain_name(self) -> Optional[pulumi.Input[str]]:
        """
        The domain name of this network.
        """
        return pulumi.get(self, "domain_name")

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

    @property
    @pulumi.getter(name="igmpSnooping")
    def igmp_snooping(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether IGMP snooping is enabled or not.
        """
        return pulumi.get(self, "igmp_snooping")

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

    @property
    @pulumi.getter(name="ipv6InterfaceType")
    def ipv6_interface_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies which type of IPv6 connection to use. Defaults to `none`.
        """
        return pulumi.get(self, "ipv6_interface_type")

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

    @property
    @pulumi.getter(name="ipv6PdInterface")
    def ipv6_pd_interface(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies which WAN interface to use for IPv6 PD.
        """
        return pulumi.get(self, "ipv6_pd_interface")

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

    @property
    @pulumi.getter(name="ipv6PdPrefixid")
    def ipv6_pd_prefixid(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPv6 Prefix ID.
        """
        return pulumi.get(self, "ipv6_pd_prefixid")

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

    @property
    @pulumi.getter(name="ipv6RaEnable")
    def ipv6_ra_enable(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether to enable router advertisements or not.
        """
        return pulumi.get(self, "ipv6_ra_enable")

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

    @property
    @pulumi.getter(name="ipv6StaticSubnet")
    def ipv6_static_subnet(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        """
        return pulumi.get(self, "ipv6_static_subnet")

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

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

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

    @property
    @pulumi.getter(name="networkGroup")
    def network_group(self) -> Optional[pulumi.Input[str]]:
        """
        The group of the network. Defaults to `LAN`.
        """
        return pulumi.get(self, "network_group")

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

    @property
    @pulumi.getter
    def purpose(self) -> Optional[pulumi.Input[str]]:
        """
        The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        """
        return pulumi.get(self, "purpose")

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

    @property
    @pulumi.getter
    def site(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the site to associate the network with.
        """
        return pulumi.get(self, "site")

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

    @property
    @pulumi.getter
    def subnet(self) -> Optional[pulumi.Input[str]]:
        """
        The subnet of the network. Must be a valid CIDR address.
        """
        return pulumi.get(self, "subnet")

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

    @property
    @pulumi.getter(name="vlanId")
    def vlan_id(self) -> Optional[pulumi.Input[int]]:
        """
        The VLAN ID of the network.
        """
        return pulumi.get(self, "vlan_id")

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

    @property
    @pulumi.getter(name="wanDns")
    def wan_dns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        DNS servers IPs of the WAN.
        """
        return pulumi.get(self, "wan_dns")

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

    @property
    @pulumi.getter(name="wanEgressQos")
    def wan_egress_qos(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the WAN egress quality of service. Defaults to `0`.
        """
        return pulumi.get(self, "wan_egress_qos")

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

    @property
    @pulumi.getter(name="wanGateway")
    def wan_gateway(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 gateway of the WAN.
        """
        return pulumi.get(self, "wan_gateway")

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

    @property
    @pulumi.getter(name="wanIp")
    def wan_ip(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address of the WAN.
        """
        return pulumi.get(self, "wan_ip")

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

    @property
    @pulumi.getter(name="wanNetmask")
    def wan_netmask(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 netmask of the WAN.
        """
        return pulumi.get(self, "wan_netmask")

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

    @property
    @pulumi.getter(name="wanNetworkgroup")
    def wan_networkgroup(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        """
        return pulumi.get(self, "wan_networkgroup")

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

    @property
    @pulumi.getter(name="wanType")
    def wan_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        """
        return pulumi.get(self, "wan_type")

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

    @property
    @pulumi.getter(name="wanUsername")
    def wan_username(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN username.
        """
        return pulumi.get(self, "wan_username")

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

    @property
    @pulumi.getter(name="xWanPassword")
    def x_wan_password(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN password.
        """
        return pulumi.get(self, "x_wan_password")

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


class Network(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 dhcp_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_lease: Optional[pulumi.Input[int]] = None,
                 dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_start: Optional[pulumi.Input[str]] = None,
                 dhcp_stop: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
                 domain_name: Optional[pulumi.Input[str]] = None,
                 igmp_snooping: Optional[pulumi.Input[bool]] = None,
                 ipv6_interface_type: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
                 ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
                 ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_group: Optional[pulumi.Input[str]] = None,
                 purpose: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 subnet: Optional[pulumi.Input[str]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 wan_egress_qos: Optional[pulumi.Input[int]] = None,
                 wan_gateway: Optional[pulumi.Input[str]] = None,
                 wan_ip: Optional[pulumi.Input[str]] = None,
                 wan_netmask: Optional[pulumi.Input[str]] = None,
                 wan_networkgroup: Optional[pulumi.Input[str]] = None,
                 wan_type: Optional[pulumi.Input[str]] = None,
                 wan_username: Optional[pulumi.Input[str]] = None,
                 x_wan_password: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        `Network` manages WAN/LAN/VLAN networks.

        ## Example Usage

        ```python
        import pulumi
        import pulumiverse_unifi as unifi

        config = pulumi.Config()
        vlan_id = config.get_float("vlanId")
        if vlan_id is None:
            vlan_id = 10
        vlan = unifi.Network("vlan",
            purpose="corporate",
            subnet="10.0.0.1/24",
            vlan_id=vlan_id,
            dhcp_start="10.0.0.6",
            dhcp_stop="10.0.0.254",
            dhcp_enabled=True)
        wan = unifi.Network("wan",
            purpose="wan",
            wan_networkgroup="WAN",
            wan_type="pppoe",
            wan_ip="192.168.1.1",
            wan_egress_qos=1,
            wan_username="username",
            x_wan_password="password")
        ```

        ## Import

        # import from provider configured site

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork 5dc28e5e9106d105bdc87217
        ```

        # import from another site

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork bfa2l6i7:5dc28e5e9106d105bdc87217
        ```

        # import network by name

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork name=LAN
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.
        :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.
        :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.
        :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.
        :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.
        :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.
        :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.
        :param pulumi.Input[str] domain_name: The domain name of this network.
        :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.
        :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.
        :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.
        :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.
        :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.
        :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        :param pulumi.Input[str] name: The name of the network.
        :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.
        :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        :param pulumi.Input[str] site: The name of the site to associate the network with.
        :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.
        :param pulumi.Input[int] vlan_id: The VLAN ID of the network.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.
        :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.
        :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.
        :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.
        :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.
        :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.
        :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: NetworkArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        `Network` manages WAN/LAN/VLAN networks.

        ## Example Usage

        ```python
        import pulumi
        import pulumiverse_unifi as unifi

        config = pulumi.Config()
        vlan_id = config.get_float("vlanId")
        if vlan_id is None:
            vlan_id = 10
        vlan = unifi.Network("vlan",
            purpose="corporate",
            subnet="10.0.0.1/24",
            vlan_id=vlan_id,
            dhcp_start="10.0.0.6",
            dhcp_stop="10.0.0.254",
            dhcp_enabled=True)
        wan = unifi.Network("wan",
            purpose="wan",
            wan_networkgroup="WAN",
            wan_type="pppoe",
            wan_ip="192.168.1.1",
            wan_egress_qos=1,
            wan_username="username",
            x_wan_password="password")
        ```

        ## Import

        # import from provider configured site

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork 5dc28e5e9106d105bdc87217
        ```

        # import from another site

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork bfa2l6i7:5dc28e5e9106d105bdc87217
        ```

        # import network by name

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork name=LAN
        ```

        :param str resource_name: The name of the resource.
        :param NetworkArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(NetworkArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 dhcp_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_lease: Optional[pulumi.Input[int]] = None,
                 dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_start: Optional[pulumi.Input[str]] = None,
                 dhcp_stop: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
                 domain_name: Optional[pulumi.Input[str]] = None,
                 igmp_snooping: Optional[pulumi.Input[bool]] = None,
                 ipv6_interface_type: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
                 ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
                 ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_group: Optional[pulumi.Input[str]] = None,
                 purpose: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 subnet: Optional[pulumi.Input[str]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 wan_egress_qos: Optional[pulumi.Input[int]] = None,
                 wan_gateway: Optional[pulumi.Input[str]] = None,
                 wan_ip: Optional[pulumi.Input[str]] = None,
                 wan_netmask: Optional[pulumi.Input[str]] = None,
                 wan_networkgroup: Optional[pulumi.Input[str]] = None,
                 wan_type: Optional[pulumi.Input[str]] = None,
                 wan_username: Optional[pulumi.Input[str]] = None,
                 x_wan_password: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        if opts.plugin_download_url is None:
            opts.plugin_download_url = _utilities.get_plugin_download_url()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = NetworkArgs.__new__(NetworkArgs)

            __props__.__dict__["dhcp_dns"] = dhcp_dns
            __props__.__dict__["dhcp_enabled"] = dhcp_enabled
            __props__.__dict__["dhcp_lease"] = dhcp_lease
            __props__.__dict__["dhcp_relay_enabled"] = dhcp_relay_enabled
            __props__.__dict__["dhcp_start"] = dhcp_start
            __props__.__dict__["dhcp_stop"] = dhcp_stop
            __props__.__dict__["dhcpd_boot_enabled"] = dhcpd_boot_enabled
            __props__.__dict__["dhcpd_boot_filename"] = dhcpd_boot_filename
            __props__.__dict__["dhcpd_boot_server"] = dhcpd_boot_server
            __props__.__dict__["domain_name"] = domain_name
            __props__.__dict__["igmp_snooping"] = igmp_snooping
            __props__.__dict__["ipv6_interface_type"] = ipv6_interface_type
            __props__.__dict__["ipv6_pd_interface"] = ipv6_pd_interface
            __props__.__dict__["ipv6_pd_prefixid"] = ipv6_pd_prefixid
            __props__.__dict__["ipv6_ra_enable"] = ipv6_ra_enable
            __props__.__dict__["ipv6_static_subnet"] = ipv6_static_subnet
            __props__.__dict__["name"] = name
            __props__.__dict__["network_group"] = network_group
            if purpose is None and not opts.urn:
                raise TypeError("Missing required property 'purpose'")
            __props__.__dict__["purpose"] = purpose
            __props__.__dict__["site"] = site
            __props__.__dict__["subnet"] = subnet
            __props__.__dict__["vlan_id"] = vlan_id
            __props__.__dict__["wan_dns"] = wan_dns
            __props__.__dict__["wan_egress_qos"] = wan_egress_qos
            __props__.__dict__["wan_gateway"] = wan_gateway
            __props__.__dict__["wan_ip"] = wan_ip
            __props__.__dict__["wan_netmask"] = wan_netmask
            __props__.__dict__["wan_networkgroup"] = wan_networkgroup
            __props__.__dict__["wan_type"] = wan_type
            __props__.__dict__["wan_username"] = wan_username
            __props__.__dict__["x_wan_password"] = <PASSWORD>
        super(Network, __self__).__init__(
            'unifi:index/network:Network',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            dhcp_enabled: Optional[pulumi.Input[bool]] = None,
            dhcp_lease: Optional[pulumi.Input[int]] = None,
            dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
            dhcp_start: Optional[pulumi.Input[str]] = None,
            dhcp_stop: Optional[pulumi.Input[str]] = None,
            dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
            dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
            dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
            domain_name: Optional[pulumi.Input[str]] = None,
            igmp_snooping: Optional[pulumi.Input[bool]] = None,
            ipv6_interface_type: Optional[pulumi.Input[str]] = None,
            ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
            ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
            ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
            ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            network_group: Optional[pulumi.Input[str]] = None,
            purpose: Optional[pulumi.Input[str]] = None,
            site: Optional[pulumi.Input[str]] = None,
            subnet: Optional[pulumi.Input[str]] = None,
            vlan_id: Optional[pulumi.Input[int]] = None,
            wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            wan_egress_qos: Optional[pulumi.Input[int]] = None,
            wan_gateway: Optional[pulumi.Input[str]] = None,
            wan_ip: Optional[pulumi.Input[str]] = None,
            wan_netmask: Optional[pulumi.Input[str]] = None,
            wan_networkgroup: Optional[pulumi.Input[str]] = None,
            wan_type: Optional[pulumi.Input[str]] = None,
            wan_username: Optional[pulumi.Input[str]] = None,
            x_wan_password: Optional[pulumi.Input[str]] = None) -> 'Network':
        """
        Get an existing Network resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.
        :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.
        :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.
        :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.
        :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.
        :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.
        :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.
        :param pulumi.Input[str] domain_name: The domain name of this network.
        :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.
        :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.
        :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.
        :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.
        :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.
        :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        :param pulumi.Input[str] name: The name of the network.
        :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.
        :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        :param pulumi.Input[str] site: The name of the site to associate the network with.
        :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.
        :param pulumi.Input[int] vlan_id: The VLAN ID of the network.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.
        :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.
        :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.
        :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.
        :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.
        :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.
        :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _NetworkState.__new__(_NetworkState)

        __props__.__dict__["dhcp_dns"] = dhcp_dns
        __props__.__dict__["dhcp_enabled"] = dhcp_enabled
        __props__.__dict__["dhcp_lease"] = dhcp_lease
        __props__.__dict__["dhcp_relay_enabled"] = dhcp_relay_enabled
        __props__.__dict__["dhcp_start"] = dhcp_start
        __props__.__dict__["dhcp_stop"] = dhcp_stop
        __props__.__dict__["dhcpd_boot_enabled"] = dhcpd_boot_enabled
        __props__.__dict__["dhcpd_boot_filename"] = dhcpd_boot_filename
        __props__.__dict__["dhcpd_boot_server"] = dhcpd_boot_server
        __props__.__dict__["domain_name"] = domain_name
        __props__.__dict__["igmp_snooping"] = igmp_snooping
        __props__.__dict__["ipv6_interface_type"] = ipv6_interface_type
        __props__.__dict__["ipv6_pd_interface"] = ipv6_pd_interface
        __props__.__dict__["ipv6_pd_prefixid"] = ipv6_pd_prefixid
        __props__.__dict__["ipv6_ra_enable"] = ipv6_ra_enable
        __props__.__dict__["ipv6_static_subnet"] = ipv6_static_subnet
        __props__.__dict__["name"] = name
        __props__.__dict__["network_group"] = network_group
        __props__.__dict__["purpose"] = purpose
        __props__.__dict__["site"] = site
        __props__.__dict__["subnet"] = subnet
        __props__.__dict__["vlan_id"] = vlan_id
        __props__.__dict__["wan_dns"] = wan_dns
        __props__.__dict__["wan_egress_qos"] = wan_egress_qos
        __props__.__dict__["wan_gateway"] = wan_gateway
        __props__.__dict__["wan_ip"] = wan_ip
        __props__.__dict__["wan_netmask"] = wan_netmask
        __props__.__dict__["wan_networkgroup"] = wan_networkgroup
        __props__.__dict__["wan_type"] = wan_type
        __props__.__dict__["wan_username"] = wan_username
        __props__.__dict__["x_wan_password"] = <PASSWORD>
        return Network(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="dhcpDns")
    def dhcp_dns(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        """
        return pulumi.get(self, "dhcp_dns")

    @property
    @pulumi.getter(name="dhcpEnabled")
    def dhcp_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Specifies whether DHCP is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_enabled")

    @property
    @pulumi.getter(name="dhcpLease")
    def dhcp_lease(self) -> pulumi.Output[Optional[int]]:
        """
        Specifies the lease time for DHCP addresses. Defaults to `86400`.
        """
        return pulumi.get(self, "dhcp_lease")

    @property
    @pulumi.getter(name="dhcpRelayEnabled")
    def dhcp_relay_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Specifies whether DHCP relay is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_relay_enabled")

    @property
    @pulumi.getter(name="dhcpStart")
    def dhcp_start(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 address where the DHCP range of addresses starts.
        """
        return pulumi.get(self, "dhcp_start")

    @property
    @pulumi.getter(name="dhcpStop")
    def dhcp_stop(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 address where the DHCP range of addresses stops.
        """
        return pulumi.get(self, "dhcp_stop")

    @property
    @pulumi.getter(name="dhcpdBootEnabled")
    def dhcpd_boot_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        """
        return pulumi.get(self, "dhcpd_boot_enabled")

    @property
    @pulumi.getter(name="dhcpdBootFilename")
    def dhcpd_boot_filename(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the file to PXE boot from on the dhcpd*boot*server.
        """
        return pulumi.get(self, "dhcpd_boot_filename")

    @property
    @pulumi.getter(name="dhcpdBootServer")
    def dhcpd_boot_server(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPv4 address of a TFTP server to network boot from.
        """
        return pulumi.get(self, "dhcpd_boot_server")

    @property
    @pulumi.getter(name="domainName")
    def domain_name(self) -> pulumi.Output[Optional[str]]:
        """
        The domain name of this network.
        """
        return pulumi.get(self, "domain_name")

    @property
    @pulumi.getter(name="igmpSnooping")
    def igmp_snooping(self) -> pulumi.Output[Optional[bool]]:
        """
        Specifies whether IGMP snooping is enabled or not.
        """
        return pulumi.get(self, "igmp_snooping")

    @property
    @pulumi.getter(name="ipv6InterfaceType")
    def ipv6_interface_type(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies which type of IPv6 connection to use. Defaults to `none`.
        """
        return pulumi.get(self, "ipv6_interface_type")

    @property
    @pulumi.getter(name="ipv6PdInterface")
    def ipv6_pd_interface(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies which WAN interface to use for IPv6 PD.
        """
        return pulumi.get(self, "ipv6_pd_interface")

    @property
    @pulumi.getter(name="ipv6PdPrefixid")
    def ipv6_pd_prefixid(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPv6 Prefix ID.
        """
        return pulumi.get(self, "ipv6_pd_prefixid")

    @property
    @pulumi.getter(name="ipv6RaEnable")
    def ipv6_ra_enable(self) -> pulumi.Output[Optional[bool]]:
        """
        Specifies whether to enable router advertisements or not.
        """
        return pulumi.get(self, "ipv6_ra_enable")

    @property
    @pulumi.getter(name="ipv6StaticSubnet")
    def ipv6_static_subnet(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        """
        return pulumi.get(self, "ipv6_static_subnet")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        The name of the network.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="networkGroup")
    def network_group(self) -> pulumi.Output[Optional[str]]:
        """
        The group of the network. Defaults to `LAN`.
        """
        return pulumi.get(self, "network_group")

    @property
    @pulumi.getter
    def purpose(self) -> pulumi.Output[str]:
        """
        The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        """
        return pulumi.get(self, "purpose")

    @property
    @pulumi.getter
    def site(self) -> pulumi.Output[str]:
        """
        The name of the site to associate the network with.
        """
        return pulumi.get(self, "site")

    @property
    @pulumi.getter
    def subnet(self) -> pulumi.Output[Optional[str]]:
        """
        The subnet of the network. Must be a valid CIDR address.
        """
        return pulumi.get(self, "subnet")

    @property
    @pulumi.getter(name="vlanId")
    def vlan_id(self) -> pulumi.Output[Optional[int]]:
        """
        The VLAN ID of the network.
        """
        return pulumi.get(self, "vlan_id")

    @property
    @pulumi.getter(name="wanDns")
    def wan_dns(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        DNS servers IPs of the WAN.
        """
        return pulumi.get(self, "wan_dns")

    @property
    @pulumi.getter(name="wanEgressQos")
    def wan_egress_qos(self) -> pulumi.Output[Optional[int]]:
        """
        Specifies the WAN egress quality of service. Defaults to `0`.
        """
        return pulumi.get(self, "wan_egress_qos")

    @property
    @pulumi.getter(name="wanGateway")
    def wan_gateway(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 gateway of the WAN.
        """
        return pulumi.get(self, "wan_gateway")

    @property
    @pulumi.getter(name="wanIp")
    def wan_ip(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 address of the WAN.
        """
        return pulumi.get(self, "wan_ip")

    @property
    @pulumi.getter(name="wanNetmask")
    def wan_netmask(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 netmask of the WAN.
        """
        return pulumi.get(self, "wan_netmask")

    @property
    @pulumi.getter(name="wanNetworkgroup")
    def wan_networkgroup(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        """
        return pulumi.get(self, "wan_networkgroup")

    @property
    @pulumi.getter(name="wanType")
    def wan_type(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        """
        return pulumi.get(self, "wan_type")

    @property
    @pulumi.getter(name="wanUsername")
    def wan_username(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPV4 WAN username.
        """
        return pulumi.get(self, "wan_username")

    @property
    @pulumi.getter(name="xWanPassword")
    def x_wan_password(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPV4 WAN password.
        """
        return pulumi.get(self, "x_wan_password")


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

__all__ = ['NetworkArgs', 'Network']

@pulumi.input_type
class NetworkArgs:
    def __init__(__self__, *,
                 purpose: pulumi.Input[str],
                 dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 dhcp_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_lease: Optional[pulumi.Input[int]] = None,
                 dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_start: Optional[pulumi.Input[str]] = None,
                 dhcp_stop: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
                 domain_name: Optional[pulumi.Input[str]] = None,
                 igmp_snooping: Optional[pulumi.Input[bool]] = None,
                 ipv6_interface_type: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
                 ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
                 ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_group: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 subnet: Optional[pulumi.Input[str]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 wan_egress_qos: Optional[pulumi.Input[int]] = None,
                 wan_gateway: Optional[pulumi.Input[str]] = None,
                 wan_ip: Optional[pulumi.Input[str]] = None,
                 wan_netmask: Optional[pulumi.Input[str]] = None,
                 wan_networkgroup: Optional[pulumi.Input[str]] = None,
                 wan_type: Optional[pulumi.Input[str]] = None,
                 wan_username: Optional[pulumi.Input[str]] = None,
                 x_wan_password: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a Network resource.
        :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.
        :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.
        :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.
        :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.
        :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.
        :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.
        :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.
        :param pulumi.Input[str] domain_name: The domain name of this network.
        :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.
        :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.
        :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.
        :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.
        :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.
        :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        :param pulumi.Input[str] name: The name of the network.
        :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.
        :param pulumi.Input[str] site: The name of the site to associate the network with.
        :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.
        :param pulumi.Input[int] vlan_id: The VLAN ID of the network.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.
        :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.
        :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.
        :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.
        :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.
        :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.
        :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password.
        """
        pulumi.set(__self__, "purpose", purpose)
        if dhcp_dns is not None:
            pulumi.set(__self__, "dhcp_dns", dhcp_dns)
        if dhcp_enabled is not None:
            pulumi.set(__self__, "dhcp_enabled", dhcp_enabled)
        if dhcp_lease is not None:
            pulumi.set(__self__, "dhcp_lease", dhcp_lease)
        if dhcp_relay_enabled is not None:
            pulumi.set(__self__, "dhcp_relay_enabled", dhcp_relay_enabled)
        if dhcp_start is not None:
            pulumi.set(__self__, "dhcp_start", dhcp_start)
        if dhcp_stop is not None:
            pulumi.set(__self__, "dhcp_stop", dhcp_stop)
        if dhcpd_boot_enabled is not None:
            pulumi.set(__self__, "dhcpd_boot_enabled", dhcpd_boot_enabled)
        if dhcpd_boot_filename is not None:
            pulumi.set(__self__, "dhcpd_boot_filename", dhcpd_boot_filename)
        if dhcpd_boot_server is not None:
            pulumi.set(__self__, "dhcpd_boot_server", dhcpd_boot_server)
        if domain_name is not None:
            pulumi.set(__self__, "domain_name", domain_name)
        if igmp_snooping is not None:
            pulumi.set(__self__, "igmp_snooping", igmp_snooping)
        if ipv6_interface_type is not None:
            pulumi.set(__self__, "ipv6_interface_type", ipv6_interface_type)
        if ipv6_pd_interface is not None:
            pulumi.set(__self__, "ipv6_pd_interface", ipv6_pd_interface)
        if ipv6_pd_prefixid is not None:
            pulumi.set(__self__, "ipv6_pd_prefixid", ipv6_pd_prefixid)
        if ipv6_ra_enable is not None:
            pulumi.set(__self__, "ipv6_ra_enable", ipv6_ra_enable)
        if ipv6_static_subnet is not None:
            pulumi.set(__self__, "ipv6_static_subnet", ipv6_static_subnet)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network_group is not None:
            pulumi.set(__self__, "network_group", network_group)
        if site is not None:
            pulumi.set(__self__, "site", site)
        if subnet is not None:
            pulumi.set(__self__, "subnet", subnet)
        if vlan_id is not None:
            pulumi.set(__self__, "vlan_id", vlan_id)
        if wan_dns is not None:
            pulumi.set(__self__, "wan_dns", wan_dns)
        if wan_egress_qos is not None:
            pulumi.set(__self__, "wan_egress_qos", wan_egress_qos)
        if wan_gateway is not None:
            pulumi.set(__self__, "wan_gateway", wan_gateway)
        if wan_ip is not None:
            pulumi.set(__self__, "wan_ip", wan_ip)
        if wan_netmask is not None:
            pulumi.set(__self__, "wan_netmask", wan_netmask)
        if wan_networkgroup is not None:
            pulumi.set(__self__, "wan_networkgroup", wan_networkgroup)
        if wan_type is not None:
            pulumi.set(__self__, "wan_type", wan_type)
        if wan_username is not None:
            pulumi.set(__self__, "wan_username", wan_username)
        if x_wan_password is not None:
            pulumi.set(__self__, "x_wan_password", x_wan_password)

    @property
    @pulumi.getter
    def purpose(self) -> pulumi.Input[str]:
        """
        The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        """
        return pulumi.get(self, "purpose")

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

    @property
    @pulumi.getter(name="dhcpDns")
    def dhcp_dns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        """
        return pulumi.get(self, "dhcp_dns")

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

    @property
    @pulumi.getter(name="dhcpEnabled")
    def dhcp_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether DHCP is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_enabled")

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

    @property
    @pulumi.getter(name="dhcpLease")
    def dhcp_lease(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the lease time for DHCP addresses. Defaults to `86400`.
        """
        return pulumi.get(self, "dhcp_lease")

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

    @property
    @pulumi.getter(name="dhcpRelayEnabled")
    def dhcp_relay_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether DHCP relay is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_relay_enabled")

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

    @property
    @pulumi.getter(name="dhcpStart")
    def dhcp_start(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address where the DHCP range of addresses starts.
        """
        return pulumi.get(self, "dhcp_start")

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

    @property
    @pulumi.getter(name="dhcpStop")
    def dhcp_stop(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address where the DHCP range of addresses stops.
        """
        return pulumi.get(self, "dhcp_stop")

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

    @property
    @pulumi.getter(name="dhcpdBootEnabled")
    def dhcpd_boot_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        """
        return pulumi.get(self, "dhcpd_boot_enabled")

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

    @property
    @pulumi.getter(name="dhcpdBootFilename")
    def dhcpd_boot_filename(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the file to PXE boot from on the dhcpd*boot*server.
        """
        return pulumi.get(self, "dhcpd_boot_filename")

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

    @property
    @pulumi.getter(name="dhcpdBootServer")
    def dhcpd_boot_server(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPv4 address of a TFTP server to network boot from.
        """
        return pulumi.get(self, "dhcpd_boot_server")

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

    @property
    @pulumi.getter(name="domainName")
    def domain_name(self) -> Optional[pulumi.Input[str]]:
        """
        The domain name of this network.
        """
        return pulumi.get(self, "domain_name")

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

    @property
    @pulumi.getter(name="igmpSnooping")
    def igmp_snooping(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether IGMP snooping is enabled or not.
        """
        return pulumi.get(self, "igmp_snooping")

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

    @property
    @pulumi.getter(name="ipv6InterfaceType")
    def ipv6_interface_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies which type of IPv6 connection to use. Defaults to `none`.
        """
        return pulumi.get(self, "ipv6_interface_type")

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

    @property
    @pulumi.getter(name="ipv6PdInterface")
    def ipv6_pd_interface(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies which WAN interface to use for IPv6 PD.
        """
        return pulumi.get(self, "ipv6_pd_interface")

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

    @property
    @pulumi.getter(name="ipv6PdPrefixid")
    def ipv6_pd_prefixid(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPv6 Prefix ID.
        """
        return pulumi.get(self, "ipv6_pd_prefixid")

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

    @property
    @pulumi.getter(name="ipv6RaEnable")
    def ipv6_ra_enable(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether to enable router advertisements or not.
        """
        return pulumi.get(self, "ipv6_ra_enable")

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

    @property
    @pulumi.getter(name="ipv6StaticSubnet")
    def ipv6_static_subnet(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        """
        return pulumi.get(self, "ipv6_static_subnet")

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

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

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

    @property
    @pulumi.getter(name="networkGroup")
    def network_group(self) -> Optional[pulumi.Input[str]]:
        """
        The group of the network. Defaults to `LAN`.
        """
        return pulumi.get(self, "network_group")

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

    @property
    @pulumi.getter
    def site(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the site to associate the network with.
        """
        return pulumi.get(self, "site")

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

    @property
    @pulumi.getter
    def subnet(self) -> Optional[pulumi.Input[str]]:
        """
        The subnet of the network. Must be a valid CIDR address.
        """
        return pulumi.get(self, "subnet")

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

    @property
    @pulumi.getter(name="vlanId")
    def vlan_id(self) -> Optional[pulumi.Input[int]]:
        """
        The VLAN ID of the network.
        """
        return pulumi.get(self, "vlan_id")

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

    @property
    @pulumi.getter(name="wanDns")
    def wan_dns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        DNS servers IPs of the WAN.
        """
        return pulumi.get(self, "wan_dns")

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

    @property
    @pulumi.getter(name="wanEgressQos")
    def wan_egress_qos(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the WAN egress quality of service. Defaults to `0`.
        """
        return pulumi.get(self, "wan_egress_qos")

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

    @property
    @pulumi.getter(name="wanGateway")
    def wan_gateway(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 gateway of the WAN.
        """
        return pulumi.get(self, "wan_gateway")

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

    @property
    @pulumi.getter(name="wanIp")
    def wan_ip(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address of the WAN.
        """
        return pulumi.get(self, "wan_ip")

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

    @property
    @pulumi.getter(name="wanNetmask")
    def wan_netmask(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 netmask of the WAN.
        """
        return pulumi.get(self, "wan_netmask")

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

    @property
    @pulumi.getter(name="wanNetworkgroup")
    def wan_networkgroup(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        """
        return pulumi.get(self, "wan_networkgroup")

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

    @property
    @pulumi.getter(name="wanType")
    def wan_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        """
        return pulumi.get(self, "wan_type")

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

    @property
    @pulumi.getter(name="wanUsername")
    def wan_username(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN username.
        """
        return pulumi.get(self, "wan_username")

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

    @property
    @pulumi.getter(name="xWanPassword")
    def x_wan_password(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN password.
        """
        return pulumi.get(self, "x_wan_password")

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


@pulumi.input_type
class _NetworkState:
    def __init__(__self__, *,
                 dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 dhcp_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_lease: Optional[pulumi.Input[int]] = None,
                 dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_start: Optional[pulumi.Input[str]] = None,
                 dhcp_stop: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
                 domain_name: Optional[pulumi.Input[str]] = None,
                 igmp_snooping: Optional[pulumi.Input[bool]] = None,
                 ipv6_interface_type: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
                 ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
                 ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_group: Optional[pulumi.Input[str]] = None,
                 purpose: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 subnet: Optional[pulumi.Input[str]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 wan_egress_qos: Optional[pulumi.Input[int]] = None,
                 wan_gateway: Optional[pulumi.Input[str]] = None,
                 wan_ip: Optional[pulumi.Input[str]] = None,
                 wan_netmask: Optional[pulumi.Input[str]] = None,
                 wan_networkgroup: Optional[pulumi.Input[str]] = None,
                 wan_type: Optional[pulumi.Input[str]] = None,
                 wan_username: Optional[pulumi.Input[str]] = None,
                 x_wan_password: Optional[<PASSWORD>.Input[str]] = None):
        """
        Input properties used for looking up and filtering Network resources.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.
        :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.
        :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.
        :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.
        :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.
        :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.
        :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.
        :param pulumi.Input[str] domain_name: The domain name of this network.
        :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.
        :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.
        :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.
        :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.
        :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.
        :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        :param pulumi.Input[str] name: The name of the network.
        :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.
        :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        :param pulumi.Input[str] site: The name of the site to associate the network with.
        :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.
        :param pulumi.Input[int] vlan_id: The VLAN ID of the network.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.
        :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.
        :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.
        :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.
        :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.
        :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.
        :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password.
        """
        if dhcp_dns is not None:
            pulumi.set(__self__, "dhcp_dns", dhcp_dns)
        if dhcp_enabled is not None:
            pulumi.set(__self__, "dhcp_enabled", dhcp_enabled)
        if dhcp_lease is not None:
            pulumi.set(__self__, "dhcp_lease", dhcp_lease)
        if dhcp_relay_enabled is not None:
            pulumi.set(__self__, "dhcp_relay_enabled", dhcp_relay_enabled)
        if dhcp_start is not None:
            pulumi.set(__self__, "dhcp_start", dhcp_start)
        if dhcp_stop is not None:
            pulumi.set(__self__, "dhcp_stop", dhcp_stop)
        if dhcpd_boot_enabled is not None:
            pulumi.set(__self__, "dhcpd_boot_enabled", dhcpd_boot_enabled)
        if dhcpd_boot_filename is not None:
            pulumi.set(__self__, "dhcpd_boot_filename", dhcpd_boot_filename)
        if dhcpd_boot_server is not None:
            pulumi.set(__self__, "dhcpd_boot_server", dhcpd_boot_server)
        if domain_name is not None:
            pulumi.set(__self__, "domain_name", domain_name)
        if igmp_snooping is not None:
            pulumi.set(__self__, "igmp_snooping", igmp_snooping)
        if ipv6_interface_type is not None:
            pulumi.set(__self__, "ipv6_interface_type", ipv6_interface_type)
        if ipv6_pd_interface is not None:
            pulumi.set(__self__, "ipv6_pd_interface", ipv6_pd_interface)
        if ipv6_pd_prefixid is not None:
            pulumi.set(__self__, "ipv6_pd_prefixid", ipv6_pd_prefixid)
        if ipv6_ra_enable is not None:
            pulumi.set(__self__, "ipv6_ra_enable", ipv6_ra_enable)
        if ipv6_static_subnet is not None:
            pulumi.set(__self__, "ipv6_static_subnet", ipv6_static_subnet)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network_group is not None:
            pulumi.set(__self__, "network_group", network_group)
        if purpose is not None:
            pulumi.set(__self__, "purpose", purpose)
        if site is not None:
            pulumi.set(__self__, "site", site)
        if subnet is not None:
            pulumi.set(__self__, "subnet", subnet)
        if vlan_id is not None:
            pulumi.set(__self__, "vlan_id", vlan_id)
        if wan_dns is not None:
            pulumi.set(__self__, "wan_dns", wan_dns)
        if wan_egress_qos is not None:
            pulumi.set(__self__, "wan_egress_qos", wan_egress_qos)
        if wan_gateway is not None:
            pulumi.set(__self__, "wan_gateway", wan_gateway)
        if wan_ip is not None:
            pulumi.set(__self__, "wan_ip", wan_ip)
        if wan_netmask is not None:
            pulumi.set(__self__, "wan_netmask", wan_netmask)
        if wan_networkgroup is not None:
            pulumi.set(__self__, "wan_networkgroup", wan_networkgroup)
        if wan_type is not None:
            pulumi.set(__self__, "wan_type", wan_type)
        if wan_username is not None:
            pulumi.set(__self__, "wan_username", wan_username)
        if x_wan_password is not None:
            pulumi.set(__self__, "x_wan_password", x_wan_password)

    @property
    @pulumi.getter(name="dhcpDns")
    def dhcp_dns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        """
        return pulumi.get(self, "dhcp_dns")

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

    @property
    @pulumi.getter(name="dhcpEnabled")
    def dhcp_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether DHCP is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_enabled")

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

    @property
    @pulumi.getter(name="dhcpLease")
    def dhcp_lease(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the lease time for DHCP addresses. Defaults to `86400`.
        """
        return pulumi.get(self, "dhcp_lease")

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

    @property
    @pulumi.getter(name="dhcpRelayEnabled")
    def dhcp_relay_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether DHCP relay is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_relay_enabled")

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

    @property
    @pulumi.getter(name="dhcpStart")
    def dhcp_start(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address where the DHCP range of addresses starts.
        """
        return pulumi.get(self, "dhcp_start")

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

    @property
    @pulumi.getter(name="dhcpStop")
    def dhcp_stop(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address where the DHCP range of addresses stops.
        """
        return pulumi.get(self, "dhcp_stop")

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

    @property
    @pulumi.getter(name="dhcpdBootEnabled")
    def dhcpd_boot_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        """
        return pulumi.get(self, "dhcpd_boot_enabled")

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

    @property
    @pulumi.getter(name="dhcpdBootFilename")
    def dhcpd_boot_filename(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the file to PXE boot from on the dhcpd*boot*server.
        """
        return pulumi.get(self, "dhcpd_boot_filename")

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

    @property
    @pulumi.getter(name="dhcpdBootServer")
    def dhcpd_boot_server(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPv4 address of a TFTP server to network boot from.
        """
        return pulumi.get(self, "dhcpd_boot_server")

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

    @property
    @pulumi.getter(name="domainName")
    def domain_name(self) -> Optional[pulumi.Input[str]]:
        """
        The domain name of this network.
        """
        return pulumi.get(self, "domain_name")

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

    @property
    @pulumi.getter(name="igmpSnooping")
    def igmp_snooping(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether IGMP snooping is enabled or not.
        """
        return pulumi.get(self, "igmp_snooping")

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

    @property
    @pulumi.getter(name="ipv6InterfaceType")
    def ipv6_interface_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies which type of IPv6 connection to use. Defaults to `none`.
        """
        return pulumi.get(self, "ipv6_interface_type")

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

    @property
    @pulumi.getter(name="ipv6PdInterface")
    def ipv6_pd_interface(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies which WAN interface to use for IPv6 PD.
        """
        return pulumi.get(self, "ipv6_pd_interface")

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

    @property
    @pulumi.getter(name="ipv6PdPrefixid")
    def ipv6_pd_prefixid(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPv6 Prefix ID.
        """
        return pulumi.get(self, "ipv6_pd_prefixid")

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

    @property
    @pulumi.getter(name="ipv6RaEnable")
    def ipv6_ra_enable(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies whether to enable router advertisements or not.
        """
        return pulumi.get(self, "ipv6_ra_enable")

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

    @property
    @pulumi.getter(name="ipv6StaticSubnet")
    def ipv6_static_subnet(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        """
        return pulumi.get(self, "ipv6_static_subnet")

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

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

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

    @property
    @pulumi.getter(name="networkGroup")
    def network_group(self) -> Optional[pulumi.Input[str]]:
        """
        The group of the network. Defaults to `LAN`.
        """
        return pulumi.get(self, "network_group")

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

    @property
    @pulumi.getter
    def purpose(self) -> Optional[pulumi.Input[str]]:
        """
        The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        """
        return pulumi.get(self, "purpose")

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

    @property
    @pulumi.getter
    def site(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the site to associate the network with.
        """
        return pulumi.get(self, "site")

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

    @property
    @pulumi.getter
    def subnet(self) -> Optional[pulumi.Input[str]]:
        """
        The subnet of the network. Must be a valid CIDR address.
        """
        return pulumi.get(self, "subnet")

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

    @property
    @pulumi.getter(name="vlanId")
    def vlan_id(self) -> Optional[pulumi.Input[int]]:
        """
        The VLAN ID of the network.
        """
        return pulumi.get(self, "vlan_id")

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

    @property
    @pulumi.getter(name="wanDns")
    def wan_dns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        DNS servers IPs of the WAN.
        """
        return pulumi.get(self, "wan_dns")

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

    @property
    @pulumi.getter(name="wanEgressQos")
    def wan_egress_qos(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the WAN egress quality of service. Defaults to `0`.
        """
        return pulumi.get(self, "wan_egress_qos")

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

    @property
    @pulumi.getter(name="wanGateway")
    def wan_gateway(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 gateway of the WAN.
        """
        return pulumi.get(self, "wan_gateway")

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

    @property
    @pulumi.getter(name="wanIp")
    def wan_ip(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 address of the WAN.
        """
        return pulumi.get(self, "wan_ip")

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

    @property
    @pulumi.getter(name="wanNetmask")
    def wan_netmask(self) -> Optional[pulumi.Input[str]]:
        """
        The IPv4 netmask of the WAN.
        """
        return pulumi.get(self, "wan_netmask")

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

    @property
    @pulumi.getter(name="wanNetworkgroup")
    def wan_networkgroup(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        """
        return pulumi.get(self, "wan_networkgroup")

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

    @property
    @pulumi.getter(name="wanType")
    def wan_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        """
        return pulumi.get(self, "wan_type")

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

    @property
    @pulumi.getter(name="wanUsername")
    def wan_username(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN username.
        """
        return pulumi.get(self, "wan_username")

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

    @property
    @pulumi.getter(name="xWanPassword")
    def x_wan_password(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the IPV4 WAN password.
        """
        return pulumi.get(self, "x_wan_password")

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


class Network(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 dhcp_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_lease: Optional[pulumi.Input[int]] = None,
                 dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_start: Optional[pulumi.Input[str]] = None,
                 dhcp_stop: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
                 domain_name: Optional[pulumi.Input[str]] = None,
                 igmp_snooping: Optional[pulumi.Input[bool]] = None,
                 ipv6_interface_type: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
                 ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
                 ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_group: Optional[pulumi.Input[str]] = None,
                 purpose: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 subnet: Optional[pulumi.Input[str]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 wan_egress_qos: Optional[pulumi.Input[int]] = None,
                 wan_gateway: Optional[pulumi.Input[str]] = None,
                 wan_ip: Optional[pulumi.Input[str]] = None,
                 wan_netmask: Optional[pulumi.Input[str]] = None,
                 wan_networkgroup: Optional[pulumi.Input[str]] = None,
                 wan_type: Optional[pulumi.Input[str]] = None,
                 wan_username: Optional[pulumi.Input[str]] = None,
                 x_wan_password: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        `Network` manages WAN/LAN/VLAN networks.

        ## Example Usage

        ```python
        import pulumi
        import pulumiverse_unifi as unifi

        config = pulumi.Config()
        vlan_id = config.get_float("vlanId")
        if vlan_id is None:
            vlan_id = 10
        vlan = unifi.Network("vlan",
            purpose="corporate",
            subnet="10.0.0.1/24",
            vlan_id=vlan_id,
            dhcp_start="10.0.0.6",
            dhcp_stop="10.0.0.254",
            dhcp_enabled=True)
        wan = unifi.Network("wan",
            purpose="wan",
            wan_networkgroup="WAN",
            wan_type="pppoe",
            wan_ip="192.168.1.1",
            wan_egress_qos=1,
            wan_username="username",
            x_wan_password="password")
        ```

        ## Import

        # import from provider configured site

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork 5dc28e5e9106d105bdc87217
        ```

        # import from another site

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork bfa2l6i7:5dc28e5e9106d105bdc87217
        ```

        # import network by name

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork name=LAN
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.
        :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.
        :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.
        :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.
        :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.
        :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.
        :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.
        :param pulumi.Input[str] domain_name: The domain name of this network.
        :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.
        :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.
        :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.
        :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.
        :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.
        :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        :param pulumi.Input[str] name: The name of the network.
        :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.
        :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        :param pulumi.Input[str] site: The name of the site to associate the network with.
        :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.
        :param pulumi.Input[int] vlan_id: The VLAN ID of the network.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.
        :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.
        :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.
        :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.
        :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.
        :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.
        :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: NetworkArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        `Network` manages WAN/LAN/VLAN networks.

        ## Example Usage

        ```python
        import pulumi
        import pulumiverse_unifi as unifi

        config = pulumi.Config()
        vlan_id = config.get_float("vlanId")
        if vlan_id is None:
            vlan_id = 10
        vlan = unifi.Network("vlan",
            purpose="corporate",
            subnet="10.0.0.1/24",
            vlan_id=vlan_id,
            dhcp_start="10.0.0.6",
            dhcp_stop="10.0.0.254",
            dhcp_enabled=True)
        wan = unifi.Network("wan",
            purpose="wan",
            wan_networkgroup="WAN",
            wan_type="pppoe",
            wan_ip="192.168.1.1",
            wan_egress_qos=1,
            wan_username="username",
            x_wan_password="password")
        ```

        ## Import

        # import from provider configured site

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork 5dc28e5e9106d105bdc87217
        ```

        # import from another site

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork bfa2l6i7:5dc28e5e9106d105bdc87217
        ```

        # import network by name

        ```sh
         $ pulumi import unifi:index/network:Network mynetwork name=LAN
        ```

        :param str resource_name: The name of the resource.
        :param NetworkArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(NetworkArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 dhcp_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_lease: Optional[pulumi.Input[int]] = None,
                 dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcp_start: Optional[pulumi.Input[str]] = None,
                 dhcp_stop: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
                 dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
                 domain_name: Optional[pulumi.Input[str]] = None,
                 igmp_snooping: Optional[pulumi.Input[bool]] = None,
                 ipv6_interface_type: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
                 ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
                 ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
                 ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_group: Optional[pulumi.Input[str]] = None,
                 purpose: Optional[pulumi.Input[str]] = None,
                 site: Optional[pulumi.Input[str]] = None,
                 subnet: Optional[pulumi.Input[str]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 wan_egress_qos: Optional[pulumi.Input[int]] = None,
                 wan_gateway: Optional[pulumi.Input[str]] = None,
                 wan_ip: Optional[pulumi.Input[str]] = None,
                 wan_netmask: Optional[pulumi.Input[str]] = None,
                 wan_networkgroup: Optional[pulumi.Input[str]] = None,
                 wan_type: Optional[pulumi.Input[str]] = None,
                 wan_username: Optional[pulumi.Input[str]] = None,
                 x_wan_password: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        if opts.plugin_download_url is None:
            opts.plugin_download_url = _utilities.get_plugin_download_url()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = NetworkArgs.__new__(NetworkArgs)

            __props__.__dict__["dhcp_dns"] = dhcp_dns
            __props__.__dict__["dhcp_enabled"] = dhcp_enabled
            __props__.__dict__["dhcp_lease"] = dhcp_lease
            __props__.__dict__["dhcp_relay_enabled"] = dhcp_relay_enabled
            __props__.__dict__["dhcp_start"] = dhcp_start
            __props__.__dict__["dhcp_stop"] = dhcp_stop
            __props__.__dict__["dhcpd_boot_enabled"] = dhcpd_boot_enabled
            __props__.__dict__["dhcpd_boot_filename"] = dhcpd_boot_filename
            __props__.__dict__["dhcpd_boot_server"] = dhcpd_boot_server
            __props__.__dict__["domain_name"] = domain_name
            __props__.__dict__["igmp_snooping"] = igmp_snooping
            __props__.__dict__["ipv6_interface_type"] = ipv6_interface_type
            __props__.__dict__["ipv6_pd_interface"] = ipv6_pd_interface
            __props__.__dict__["ipv6_pd_prefixid"] = ipv6_pd_prefixid
            __props__.__dict__["ipv6_ra_enable"] = ipv6_ra_enable
            __props__.__dict__["ipv6_static_subnet"] = ipv6_static_subnet
            __props__.__dict__["name"] = name
            __props__.__dict__["network_group"] = network_group
            if purpose is None and not opts.urn:
                raise TypeError("Missing required property 'purpose'")
            __props__.__dict__["purpose"] = purpose
            __props__.__dict__["site"] = site
            __props__.__dict__["subnet"] = subnet
            __props__.__dict__["vlan_id"] = vlan_id
            __props__.__dict__["wan_dns"] = wan_dns
            __props__.__dict__["wan_egress_qos"] = wan_egress_qos
            __props__.__dict__["wan_gateway"] = wan_gateway
            __props__.__dict__["wan_ip"] = wan_ip
            __props__.__dict__["wan_netmask"] = wan_netmask
            __props__.__dict__["wan_networkgroup"] = wan_networkgroup
            __props__.__dict__["wan_type"] = wan_type
            __props__.__dict__["wan_username"] = wan_username
            __props__.__dict__["x_wan_password"] = <PASSWORD>
        super(Network, __self__).__init__(
            'unifi:index/network:Network',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            dhcp_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            dhcp_enabled: Optional[pulumi.Input[bool]] = None,
            dhcp_lease: Optional[pulumi.Input[int]] = None,
            dhcp_relay_enabled: Optional[pulumi.Input[bool]] = None,
            dhcp_start: Optional[pulumi.Input[str]] = None,
            dhcp_stop: Optional[pulumi.Input[str]] = None,
            dhcpd_boot_enabled: Optional[pulumi.Input[bool]] = None,
            dhcpd_boot_filename: Optional[pulumi.Input[str]] = None,
            dhcpd_boot_server: Optional[pulumi.Input[str]] = None,
            domain_name: Optional[pulumi.Input[str]] = None,
            igmp_snooping: Optional[pulumi.Input[bool]] = None,
            ipv6_interface_type: Optional[pulumi.Input[str]] = None,
            ipv6_pd_interface: Optional[pulumi.Input[str]] = None,
            ipv6_pd_prefixid: Optional[pulumi.Input[str]] = None,
            ipv6_ra_enable: Optional[pulumi.Input[bool]] = None,
            ipv6_static_subnet: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            network_group: Optional[pulumi.Input[str]] = None,
            purpose: Optional[pulumi.Input[str]] = None,
            site: Optional[pulumi.Input[str]] = None,
            subnet: Optional[pulumi.Input[str]] = None,
            vlan_id: Optional[pulumi.Input[int]] = None,
            wan_dns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            wan_egress_qos: Optional[pulumi.Input[int]] = None,
            wan_gateway: Optional[pulumi.Input[str]] = None,
            wan_ip: Optional[pulumi.Input[str]] = None,
            wan_netmask: Optional[pulumi.Input[str]] = None,
            wan_networkgroup: Optional[pulumi.Input[str]] = None,
            wan_type: Optional[pulumi.Input[str]] = None,
            wan_username: Optional[pulumi.Input[str]] = None,
            x_wan_password: Optional[pulumi.Input[str]] = None) -> 'Network':
        """
        Get an existing Network resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.
        :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.
        :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.
        :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.
        :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.
        :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.
        :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.
        :param pulumi.Input[str] domain_name: The domain name of this network.
        :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.
        :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.
        :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.
        :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.
        :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.
        :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        :param pulumi.Input[str] name: The name of the network.
        :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.
        :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        :param pulumi.Input[str] site: The name of the site to associate the network with.
        :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.
        :param pulumi.Input[int] vlan_id: The VLAN ID of the network.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.
        :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.
        :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.
        :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.
        :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.
        :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.
        :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _NetworkState.__new__(_NetworkState)

        __props__.__dict__["dhcp_dns"] = dhcp_dns
        __props__.__dict__["dhcp_enabled"] = dhcp_enabled
        __props__.__dict__["dhcp_lease"] = dhcp_lease
        __props__.__dict__["dhcp_relay_enabled"] = dhcp_relay_enabled
        __props__.__dict__["dhcp_start"] = dhcp_start
        __props__.__dict__["dhcp_stop"] = dhcp_stop
        __props__.__dict__["dhcpd_boot_enabled"] = dhcpd_boot_enabled
        __props__.__dict__["dhcpd_boot_filename"] = dhcpd_boot_filename
        __props__.__dict__["dhcpd_boot_server"] = dhcpd_boot_server
        __props__.__dict__["domain_name"] = domain_name
        __props__.__dict__["igmp_snooping"] = igmp_snooping
        __props__.__dict__["ipv6_interface_type"] = ipv6_interface_type
        __props__.__dict__["ipv6_pd_interface"] = ipv6_pd_interface
        __props__.__dict__["ipv6_pd_prefixid"] = ipv6_pd_prefixid
        __props__.__dict__["ipv6_ra_enable"] = ipv6_ra_enable
        __props__.__dict__["ipv6_static_subnet"] = ipv6_static_subnet
        __props__.__dict__["name"] = name
        __props__.__dict__["network_group"] = network_group
        __props__.__dict__["purpose"] = purpose
        __props__.__dict__["site"] = site
        __props__.__dict__["subnet"] = subnet
        __props__.__dict__["vlan_id"] = vlan_id
        __props__.__dict__["wan_dns"] = wan_dns
        __props__.__dict__["wan_egress_qos"] = wan_egress_qos
        __props__.__dict__["wan_gateway"] = wan_gateway
        __props__.__dict__["wan_ip"] = wan_ip
        __props__.__dict__["wan_netmask"] = wan_netmask
        __props__.__dict__["wan_networkgroup"] = wan_networkgroup
        __props__.__dict__["wan_type"] = wan_type
        __props__.__dict__["wan_username"] = wan_username
        __props__.__dict__["x_wan_password"] = <PASSWORD>
        return Network(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="dhcpDns")
    def dhcp_dns(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
        """
        return pulumi.get(self, "dhcp_dns")

    @property
    @pulumi.getter(name="dhcpEnabled")
    def dhcp_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Specifies whether DHCP is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_enabled")

    @property
    @pulumi.getter(name="dhcpLease")
    def dhcp_lease(self) -> pulumi.Output[Optional[int]]:
        """
        Specifies the lease time for DHCP addresses. Defaults to `86400`.
        """
        return pulumi.get(self, "dhcp_lease")

    @property
    @pulumi.getter(name="dhcpRelayEnabled")
    def dhcp_relay_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Specifies whether DHCP relay is enabled or not on this network.
        """
        return pulumi.get(self, "dhcp_relay_enabled")

    @property
    @pulumi.getter(name="dhcpStart")
    def dhcp_start(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 address where the DHCP range of addresses starts.
        """
        return pulumi.get(self, "dhcp_start")

    @property
    @pulumi.getter(name="dhcpStop")
    def dhcp_stop(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 address where the DHCP range of addresses stops.
        """
        return pulumi.get(self, "dhcp_stop")

    @property
    @pulumi.getter(name="dhcpdBootEnabled")
    def dhcpd_boot_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.
        """
        return pulumi.get(self, "dhcpd_boot_enabled")

    @property
    @pulumi.getter(name="dhcpdBootFilename")
    def dhcpd_boot_filename(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the file to PXE boot from on the dhcpd*boot*server.
        """
        return pulumi.get(self, "dhcpd_boot_filename")

    @property
    @pulumi.getter(name="dhcpdBootServer")
    def dhcpd_boot_server(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPv4 address of a TFTP server to network boot from.
        """
        return pulumi.get(self, "dhcpd_boot_server")

    @property
    @pulumi.getter(name="domainName")
    def domain_name(self) -> pulumi.Output[Optional[str]]:
        """
        The domain name of this network.
        """
        return pulumi.get(self, "domain_name")

    @property
    @pulumi.getter(name="igmpSnooping")
    def igmp_snooping(self) -> pulumi.Output[Optional[bool]]:
        """
        Specifies whether IGMP snooping is enabled or not.
        """
        return pulumi.get(self, "igmp_snooping")

    @property
    @pulumi.getter(name="ipv6InterfaceType")
    def ipv6_interface_type(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies which type of IPv6 connection to use. Defaults to `none`.
        """
        return pulumi.get(self, "ipv6_interface_type")

    @property
    @pulumi.getter(name="ipv6PdInterface")
    def ipv6_pd_interface(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies which WAN interface to use for IPv6 PD.
        """
        return pulumi.get(self, "ipv6_pd_interface")

    @property
    @pulumi.getter(name="ipv6PdPrefixid")
    def ipv6_pd_prefixid(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPv6 Prefix ID.
        """
        return pulumi.get(self, "ipv6_pd_prefixid")

    @property
    @pulumi.getter(name="ipv6RaEnable")
    def ipv6_ra_enable(self) -> pulumi.Output[Optional[bool]]:
        """
        Specifies whether to enable router advertisements or not.
        """
        return pulumi.get(self, "ipv6_ra_enable")

    @property
    @pulumi.getter(name="ipv6StaticSubnet")
    def ipv6_static_subnet(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.
        """
        return pulumi.get(self, "ipv6_static_subnet")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        The name of the network.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="networkGroup")
    def network_group(self) -> pulumi.Output[Optional[str]]:
        """
        The group of the network. Defaults to `LAN`.
        """
        return pulumi.get(self, "network_group")

    @property
    @pulumi.getter
    def purpose(self) -> pulumi.Output[str]:
        """
        The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.
        """
        return pulumi.get(self, "purpose")

    @property
    @pulumi.getter
    def site(self) -> pulumi.Output[str]:
        """
        The name of the site to associate the network with.
        """
        return pulumi.get(self, "site")

    @property
    @pulumi.getter
    def subnet(self) -> pulumi.Output[Optional[str]]:
        """
        The subnet of the network. Must be a valid CIDR address.
        """
        return pulumi.get(self, "subnet")

    @property
    @pulumi.getter(name="vlanId")
    def vlan_id(self) -> pulumi.Output[Optional[int]]:
        """
        The VLAN ID of the network.
        """
        return pulumi.get(self, "vlan_id")

    @property
    @pulumi.getter(name="wanDns")
    def wan_dns(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        DNS servers IPs of the WAN.
        """
        return pulumi.get(self, "wan_dns")

    @property
    @pulumi.getter(name="wanEgressQos")
    def wan_egress_qos(self) -> pulumi.Output[Optional[int]]:
        """
        Specifies the WAN egress quality of service. Defaults to `0`.
        """
        return pulumi.get(self, "wan_egress_qos")

    @property
    @pulumi.getter(name="wanGateway")
    def wan_gateway(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 gateway of the WAN.
        """
        return pulumi.get(self, "wan_gateway")

    @property
    @pulumi.getter(name="wanIp")
    def wan_ip(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 address of the WAN.
        """
        return pulumi.get(self, "wan_ip")

    @property
    @pulumi.getter(name="wanNetmask")
    def wan_netmask(self) -> pulumi.Output[Optional[str]]:
        """
        The IPv4 netmask of the WAN.
        """
        return pulumi.get(self, "wan_netmask")

    @property
    @pulumi.getter(name="wanNetworkgroup")
    def wan_networkgroup(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
        """
        return pulumi.get(self, "wan_networkgroup")

    @property
    @pulumi.getter(name="wanType")
    def wan_type(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.
        """
        return pulumi.get(self, "wan_type")

    @property
    @pulumi.getter(name="wanUsername")
    def wan_username(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPV4 WAN username.
        """
        return pulumi.get(self, "wan_username")

    @property
    @pulumi.getter(name="xWanPassword")
    def x_wan_password(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the IPV4 WAN password.
        """
        return pulumi.get(self, "x_wan_password")


# 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! *** The set of arguments for constructing a Network resource.         :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.         :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.         :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.         :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.         :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.         :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.         :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.         :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.         :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.         :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.         :param pulumi.Input[str] domain_name: The domain name of this network.         :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.         :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.         :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.         :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.         :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.         :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.         :param pulumi.Input[str] name: The name of the network.         :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.         :param pulumi.Input[str] site: The name of the site to associate the network with.         :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.         :param pulumi.Input[int] vlan_id: The VLAN ID of the network.         :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.         :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.         :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.         :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.         :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.         :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.         :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.         :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.         :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password. The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`. Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature. Specifies whether DHCP is enabled or not on this network. Specifies the lease time for DHCP addresses. Defaults to `86400`. Specifies whether DHCP relay is enabled or not on this network. The IPv4 address where the DHCP range of addresses starts. The IPv4 address where the DHCP range of addresses stops. Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect. Specifies the file to PXE boot from on the dhcpd*boot*server. Specifies the IPv4 address of a TFTP server to network boot from. The domain name of this network. Specifies whether IGMP snooping is enabled or not. Specifies which type of IPv6 connection to use. Defaults to `none`. Specifies which WAN interface to use for IPv6 PD. Specifies the IPv6 Prefix ID. Specifies whether to enable router advertisements or not. Specifies the static IPv6 subnet when ipv6*interface*type is 'static'. The name of the network. The group of the network. Defaults to `LAN`. The name of the site to associate the network with. The subnet of the network. Must be a valid CIDR address. The VLAN ID of the network. DNS servers IPs of the WAN. Specifies the WAN egress quality of service. Defaults to `0`. The IPv4 gateway of the WAN. The IPv4 address of the WAN. The IPv4 netmask of the WAN. Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`. Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`. Specifies the IPV4 WAN username. Specifies the IPV4 WAN password. Input properties used for looking up and filtering Network resources.         :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.         :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.         :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.         :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.         :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.         :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.         :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.         :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.         :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.         :param pulumi.Input[str] domain_name: The domain name of this network.         :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.         :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.         :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.         :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.         :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.         :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.         :param pulumi.Input[str] name: The name of the network.         :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.         :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.         :param pulumi.Input[str] site: The name of the site to associate the network with.         :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.         :param pulumi.Input[int] vlan_id: The VLAN ID of the network.         :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.         :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.         :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.         :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.         :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.         :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.         :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.         :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.         :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password. Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature. Specifies whether DHCP is enabled or not on this network. Specifies the lease time for DHCP addresses. Defaults to `86400`. Specifies whether DHCP relay is enabled or not on this network. The IPv4 address where the DHCP range of addresses starts. The IPv4 address where the DHCP range of addresses stops. Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect. Specifies the file to PXE boot from on the dhcpd*boot*server. Specifies the IPv4 address of a TFTP server to network boot from. The domain name of this network. Specifies whether IGMP snooping is enabled or not. Specifies which type of IPv6 connection to use. Defaults to `none`. Specifies which WAN interface to use for IPv6 PD. Specifies the IPv6 Prefix ID. Specifies whether to enable router advertisements or not. Specifies the static IPv6 subnet when ipv6*interface*type is 'static'. The name of the network. The group of the network. Defaults to `LAN`. The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`. The name of the site to associate the network with. The subnet of the network. Must be a valid CIDR address. The VLAN ID of the network. DNS servers IPs of the WAN. Specifies the WAN egress quality of service. Defaults to `0`. The IPv4 gateway of the WAN. The IPv4 address of the WAN. The IPv4 netmask of the WAN. Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`. Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`. Specifies the IPV4 WAN username. Specifies the IPV4 WAN password. `Network` manages WAN/LAN/VLAN networks.          ## Example Usage          ```python         import pulumi         import pulumiverse_unifi as unifi          config = pulumi.Config()         vlan_id = config.get_float("vlanId")         if vlan_id is None:             vlan_id = 10         vlan = unifi.Network("vlan",             purpose="corporate",             subnet="10.0.0.1/24",             vlan_id=vlan_id,             dhcp_start="10.0.0.6",             dhcp_stop="10.0.0.254",             dhcp_enabled=True)         wan = unifi.Network("wan",             purpose="wan",             wan_networkgroup="WAN",             wan_type="pppoe",             wan_ip="192.168.1.1",             wan_egress_qos=1,             wan_username="username",             x_wan_password="password")         ```          ## Import          # import from provider configured site          ```sh          $ pulumi import unifi:index/network:Network mynetwork 5dc28e5e9106d105bdc87217         ```          # import from another site          ```sh          $ pulumi import unifi:index/network:Network mynetwork bfa2l6i7:5dc28e5e9106d105bdc87217         ```          # import network by name          ```sh          $ pulumi import unifi:index/network:Network mynetwork name=LAN         ```          :param str resource_name: The name of the resource.         :param pulumi.ResourceOptions opts: Options for the resource.         :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.         :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.         :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.         :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.         :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.         :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.         :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.         :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.         :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.         :param pulumi.Input[str] domain_name: The domain name of this network.         :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.         :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.         :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.         :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.         :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.         :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.         :param pulumi.Input[str] name: The name of the network.         :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.         :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.         :param pulumi.Input[str] site: The name of the site to associate the network with.         :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.         :param pulumi.Input[int] vlan_id: The VLAN ID of the network.         :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.         :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.         :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.         :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.         :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.         :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.         :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.         :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.         :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password. `Network` manages WAN/LAN/VLAN networks.          ## Example Usage          ```python         import pulumi         import pulumiverse_unifi as unifi          config = pulumi.Config()         vlan_id = config.get_float("vlanId")         if vlan_id is None:             vlan_id = 10         vlan = unifi.Network("vlan",             purpose="corporate",             subnet="10.0.0.1/24",             vlan_id=vlan_id,             dhcp_start="10.0.0.6",             dhcp_stop="10.0.0.254",             dhcp_enabled=True)         wan = unifi.Network("wan",             purpose="wan",             wan_networkgroup="WAN",             wan_type="pppoe",             wan_ip="192.168.1.1",             wan_egress_qos=1,             wan_username="username",             x_wan_password="password")         ```          ## Import          # import from provider configured site          ```sh          $ pulumi import unifi:index/network:Network mynetwork 5dc28e5e9106d105bdc87217         ```          # import from another site          ```sh          $ pulumi import unifi:index/network:Network mynetwork bfa2l6i7:5dc28e5e9106d105bdc87217         ```          # import network by name          ```sh          $ pulumi import unifi:index/network:Network mynetwork name=LAN         ```          :param str resource_name: The name of the resource.         :param NetworkArgs args: The arguments to use to populate this resource's properties.         :param pulumi.ResourceOptions opts: Options for the resource. Get an existing Network resource's state with the given name, id, and optional extra         properties used to qualify the lookup.          :param str resource_name: The unique name of the resulting resource.         :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.         :param pulumi.ResourceOptions opts: Options for the resource.         :param pulumi.Input[Sequence[pulumi.Input[str]]] dhcp_dns: Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.         :param pulumi.Input[bool] dhcp_enabled: Specifies whether DHCP is enabled or not on this network.         :param pulumi.Input[int] dhcp_lease: Specifies the lease time for DHCP addresses. Defaults to `86400`.         :param pulumi.Input[bool] dhcp_relay_enabled: Specifies whether DHCP relay is enabled or not on this network.         :param pulumi.Input[str] dhcp_start: The IPv4 address where the DHCP range of addresses starts.         :param pulumi.Input[str] dhcp_stop: The IPv4 address where the DHCP range of addresses stops.         :param pulumi.Input[bool] dhcpd_boot_enabled: Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect.         :param pulumi.Input[str] dhcpd_boot_filename: Specifies the file to PXE boot from on the dhcpd*boot*server.         :param pulumi.Input[str] dhcpd_boot_server: Specifies the IPv4 address of a TFTP server to network boot from.         :param pulumi.Input[str] domain_name: The domain name of this network.         :param pulumi.Input[bool] igmp_snooping: Specifies whether IGMP snooping is enabled or not.         :param pulumi.Input[str] ipv6_interface_type: Specifies which type of IPv6 connection to use. Defaults to `none`.         :param pulumi.Input[str] ipv6_pd_interface: Specifies which WAN interface to use for IPv6 PD.         :param pulumi.Input[str] ipv6_pd_prefixid: Specifies the IPv6 Prefix ID.         :param pulumi.Input[bool] ipv6_ra_enable: Specifies whether to enable router advertisements or not.         :param pulumi.Input[str] ipv6_static_subnet: Specifies the static IPv6 subnet when ipv6*interface*type is 'static'.         :param pulumi.Input[str] name: The name of the network.         :param pulumi.Input[str] network_group: The group of the network. Defaults to `LAN`.         :param pulumi.Input[str] purpose: The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`.         :param pulumi.Input[str] site: The name of the site to associate the network with.         :param pulumi.Input[str] subnet: The subnet of the network. Must be a valid CIDR address.         :param pulumi.Input[int] vlan_id: The VLAN ID of the network.         :param pulumi.Input[Sequence[pulumi.Input[str]]] wan_dns: DNS servers IPs of the WAN.         :param pulumi.Input[int] wan_egress_qos: Specifies the WAN egress quality of service. Defaults to `0`.         :param pulumi.Input[str] wan_gateway: The IPv4 gateway of the WAN.         :param pulumi.Input[str] wan_ip: The IPv4 address of the WAN.         :param pulumi.Input[str] wan_netmask: The IPv4 netmask of the WAN.         :param pulumi.Input[str] wan_networkgroup: Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.         :param pulumi.Input[str] wan_type: Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`.         :param pulumi.Input[str] wan_username: Specifies the IPV4 WAN username.         :param pulumi.Input[str] x_wan_password: Specifies the IPV4 WAN password. Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature. Specifies whether DHCP is enabled or not on this network. Specifies the lease time for DHCP addresses. Defaults to `86400`. Specifies whether DHCP relay is enabled or not on this network. The IPv4 address where the DHCP range of addresses starts. The IPv4 address where the DHCP range of addresses stops. Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd*boot*filename, and dhcpd*boot*server to take effect. Specifies the file to PXE boot from on the dhcpd*boot*server. Specifies the IPv4 address of a TFTP server to network boot from. The domain name of this network. Specifies whether IGMP snooping is enabled or not. Specifies which type of IPv6 connection to use. Defaults to `none`. Specifies which WAN interface to use for IPv6 PD. Specifies the IPv6 Prefix ID. Specifies whether to enable router advertisements or not. Specifies the static IPv6 subnet when ipv6*interface*type is 'static'. The name of the network. The group of the network. Defaults to `LAN`. The purpose of the network. Must be one of `corporate`, `guest`, `wan`, or `vlan-only`. The name of the site to associate the network with. The subnet of the network. Must be a valid CIDR address. The VLAN ID of the network. DNS servers IPs of the WAN. Specifies the WAN egress quality of service. Defaults to `0`. The IPv4 gateway of the WAN. The IPv4 address of the WAN. The IPv4 netmask of the WAN. Specifies the WAN network group. Must be one of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`. Specifies the IPV4 WAN connection type. Must be one of either `disabled`, `static`, `dhcp`, or `pppoe`. Specifies the IPV4 WAN username. Specifies the IPV4 WAN password.