# 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
from . import _utilities, _tables
from . import outputs
from ._inputs import *

__all__ = ['DistributedPortGroup']


class DistributedPortGroup(pulumi.CustomResource):
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 active_uplinks: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 allow_forged_transmits: Optional[pulumi.Input[bool]] = None,
                 allow_mac_changes: Optional[pulumi.Input[bool]] = None,
                 allow_promiscuous: Optional[pulumi.Input[bool]] = None,
                 auto_expand: Optional[pulumi.Input[bool]] = None,
                 block_all_ports: Optional[pulumi.Input[bool]] = None,
                 block_override_allowed: Optional[pulumi.Input[bool]] = None,
                 check_beacon: Optional[pulumi.Input[bool]] = None,
                 custom_attributes: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 directpath_gen2_allowed: Optional[pulumi.Input[bool]] = None,
                 distributed_virtual_switch_uuid: Optional[pulumi.Input[str]] = None,
                 egress_shaping_average_bandwidth: Optional[pulumi.Input[int]] = None,
                 egress_shaping_burst_size: Optional[pulumi.Input[int]] = None,
                 egress_shaping_enabled: Optional[pulumi.Input[bool]] = None,
                 egress_shaping_peak_bandwidth: Optional[pulumi.Input[int]] = None,
                 failback: Optional[pulumi.Input[bool]] = None,
                 ingress_shaping_average_bandwidth: Optional[pulumi.Input[int]] = None,
                 ingress_shaping_burst_size: Optional[pulumi.Input[int]] = None,
                 ingress_shaping_enabled: Optional[pulumi.Input[bool]] = None,
                 ingress_shaping_peak_bandwidth: Optional[pulumi.Input[int]] = None,
                 lacp_enabled: Optional[pulumi.Input[bool]] = None,
                 lacp_mode: Optional[pulumi.Input[str]] = None,
                 live_port_moving_allowed: Optional[pulumi.Input[bool]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 netflow_enabled: Optional[pulumi.Input[bool]] = None,
                 netflow_override_allowed: Optional[pulumi.Input[bool]] = None,
                 network_resource_pool_key: Optional[pulumi.Input[str]] = None,
                 network_resource_pool_override_allowed: Optional[pulumi.Input[bool]] = None,
                 notify_switches: Optional[pulumi.Input[bool]] = None,
                 number_of_ports: Optional[pulumi.Input[int]] = None,
                 port_config_reset_at_disconnect: Optional[pulumi.Input[bool]] = None,
                 port_name_format: Optional[pulumi.Input[str]] = None,
                 port_private_secondary_vlan_id: Optional[pulumi.Input[int]] = None,
                 security_policy_override_allowed: Optional[pulumi.Input[bool]] = None,
                 shaping_override_allowed: Optional[pulumi.Input[bool]] = None,
                 standby_uplinks: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 teaming_policy: Optional[pulumi.Input[str]] = None,
                 traffic_filter_override_allowed: Optional[pulumi.Input[bool]] = None,
                 tx_uplink: Optional[pulumi.Input[bool]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 uplink_teaming_override_allowed: Optional[pulumi.Input[bool]] = None,
                 vlan_id: Optional[pulumi.Input[int]] = None,
                 vlan_override_allowed: Optional[pulumi.Input[bool]] = None,
                 vlan_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DistributedPortGroupVlanRangeArgs']]]]] = None,
                 __props__=None,
                 __name__=None,
                 __opts__=None):
        """
        Create a DistributedPortGroup resource with the given unique name, props, and options.
        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] active_uplinks: List of active uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
        :param pulumi.Input[bool] allow_forged_transmits: Controls whether or not the virtual network adapter is allowed to send network traffic with a different MAC address than
               that of its own.
        :param pulumi.Input[bool] allow_mac_changes: Controls whether or not the Media Access Control (MAC) address can be changed.
        :param pulumi.Input[bool] allow_promiscuous: Enable promiscuous mode on the network. This flag indicates whether or not all traffic is seen on a given port.
        :param pulumi.Input[bool] auto_expand: Allows the port group to create additional ports
               past the limit specified in `number_of_ports` if necessary. Default: `true`.
        :param pulumi.Input[bool] block_all_ports: Indicates whether to block all ports by default.
        :param pulumi.Input[bool] block_override_allowed: Allow the port shutdown
               policy to be overridden on an individual port.
        :param pulumi.Input[bool] check_beacon: Enable beacon probing on the ports this policy applies to.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] custom_attributes: Map of custom attribute ids to attribute
               value string to set for port group.
        :param pulumi.Input[str] description: An optional description for the port group.
        :param pulumi.Input[bool] directpath_gen2_allowed: Allow VMDirectPath Gen2 on the ports this policy applies to.
        :param pulumi.Input[str] distributed_virtual_switch_uuid: The ID of the DVS to add the
               port group to. Forces a new resource if changed.
        :param pulumi.Input[int] egress_shaping_average_bandwidth: The average egress bandwidth in bits per second if egress shaping is enabled on the port.
        :param pulumi.Input[int] egress_shaping_burst_size: The maximum egress burst size allowed in bytes if egress shaping is enabled on the port.
        :param pulumi.Input[bool] egress_shaping_enabled: True if the traffic shaper is enabled for egress traffic on the port.
        :param pulumi.Input[int] egress_shaping_peak_bandwidth: The peak egress bandwidth during bursts in bits per second if egress traffic shaping is enabled on the port.
        :param pulumi.Input[bool] failback: If true, the teaming policy will re-activate failed interfaces higher in precedence when they come back up.
        :param pulumi.Input[int] ingress_shaping_average_bandwidth: The average ingress bandwidth in bits per second if ingress shaping is enabled on the port.
        :param pulumi.Input[int] ingress_shaping_burst_size: The maximum ingress burst size allowed in bytes if ingress shaping is enabled on the port.
        :param pulumi.Input[bool] ingress_shaping_enabled: True if the traffic shaper is enabled for ingress traffic on the port.
        :param pulumi.Input[int] ingress_shaping_peak_bandwidth: The peak ingress bandwidth during bursts in bits per second if ingress traffic shaping is enabled on the port.
        :param pulumi.Input[bool] lacp_enabled: Whether or not to enable LACP on all uplink ports.
        :param pulumi.Input[str] lacp_mode: The uplink LACP mode to use. Can be one of active or passive.
        :param pulumi.Input[bool] live_port_moving_allowed: Allow a port in this port group to be
               moved to another port group while it is connected.
        :param pulumi.Input[str] name: The name of the port group.
        :param pulumi.Input[bool] netflow_enabled: Indicates whether to enable netflow on all ports.
        :param pulumi.Input[bool] netflow_override_allowed: Allow the Netflow
               policy on this port group to be overridden on an individual
               port.
        :param pulumi.Input[str] network_resource_pool_key: The key of a network resource pool
               to associate with this port group. The default is `-1`, which implies no
               association.
        :param pulumi.Input[bool] network_resource_pool_override_allowed: Allow the network
               resource pool set on this port group to be overridden on an individual port.
        :param pulumi.Input[bool] notify_switches: If true, the teaming policy will notify the broadcast network of a NIC failover, triggering cache updates.
        :param pulumi.Input[int] number_of_ports: The number of ports available on this port
               group. Cannot be decreased below the amount of used ports on the port group.
        :param pulumi.Input[bool] port_config_reset_at_disconnect: Reset a port's settings to the
               settings defined on this port group policy when the port disconnects.
        :param pulumi.Input[str] port_name_format: An optional formatting policy for naming of
               the ports in this port group. See the `portNameFormat` attribute listed
               [here][ext-vsphere-portname-format] for details on the format syntax.
        :param pulumi.Input[int] port_private_secondary_vlan_id: The secondary VLAN ID for this port.
        :param pulumi.Input[bool] security_policy_override_allowed: Allow the security policy
               settings defined in this port group policy to be
               overridden on an individual port.
        :param pulumi.Input[bool] shaping_override_allowed: Allow the traffic shaping
               options on this port group policy to be overridden
               on an individual port.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] standby_uplinks: List of standby uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: A list of tag IDs to apply to this object.
        :param pulumi.Input[str] teaming_policy: The network adapter teaming policy. Can be one of loadbalance_ip, loadbalance_srcmac, loadbalance_srcid,
               failover_explicit, or loadbalance_loadbased.
        :param pulumi.Input[bool] traffic_filter_override_allowed: Allow any traffic filters on
               this port group to be overridden on an individual port.
        :param pulumi.Input[bool] tx_uplink: If true, a copy of packets sent to the switch will always be forwarded to an uplink in addition to the regular packet
               forwarded done by the switch.
        :param pulumi.Input[str] type: The port group type. Can be one of `earlyBinding` (static
               binding) or `ephemeral`. Default: `earlyBinding`.
        :param pulumi.Input[bool] uplink_teaming_override_allowed: Allow the uplink teaming
               options on this port group to be overridden on an
               individual port.
        :param pulumi.Input[int] vlan_id: The VLAN ID for single VLAN mode. 0 denotes no VLAN.
        :param pulumi.Input[bool] vlan_override_allowed: Allow the VLAN settings
               on this port group to be overridden on an individual port.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DistributedPortGroupVlanRangeArgs']]]] vlan_ranges: The VLAN ID for single VLAN mode. 0 denotes no VLAN.
        """
        if __name__ is not None:
            warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning)
            resource_name = __name__
        if __opts__ is not None:
            warnings.warn("explicit use of __opts__ is deprecated, use 'opts' instead", DeprecationWarning)
            opts = __opts__
        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.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__ = dict()

            __props__['active_uplinks'] = active_uplinks
            __props__['allow_forged_transmits'] = allow_forged_transmits
            __props__['allow_mac_changes'] = allow_mac_changes
            __props__['allow_promiscuous'] = allow_promiscuous
            __props__['auto_expand'] = auto_expand
            __props__['block_all_ports'] = block_all_ports
            __props__['block_override_allowed'] = block_override_allowed
            __props__['check_beacon'] = check_beacon
            __props__['custom_attributes'] = custom_attributes
            __props__['description'] = description
            __props__['directpath_gen2_allowed'] = directpath_gen2_allowed
            if distributed_virtual_switch_uuid is None and not opts.urn:
                raise TypeError("Missing required property 'distributed_virtual_switch_uuid'")
            __props__['distributed_virtual_switch_uuid'] = distributed_virtual_switch_uuid
            __props__['egress_shaping_average_bandwidth'] = egress_shaping_average_bandwidth
            __props__['egress_shaping_burst_size'] = egress_shaping_burst_size
            __props__['egress_shaping_enabled'] = egress_shaping_enabled
            __props__['egress_shaping_peak_bandwidth'] = egress_shaping_peak_bandwidth
            __props__['failback'] = failback
            __props__['ingress_shaping_average_bandwidth'] = ingress_shaping_average_bandwidth
            __props__['ingress_shaping_burst_size'] = ingress_shaping_burst_size
            __props__['ingress_shaping_enabled'] = ingress_shaping_enabled
            __props__['ingress_shaping_peak_bandwidth'] = ingress_shaping_peak_bandwidth
            __props__['lacp_enabled'] = lacp_enabled
            __props__['lacp_mode'] = lacp_mode
            __props__['live_port_moving_allowed'] = live_port_moving_allowed
            __props__['name'] = name
            __props__['netflow_enabled'] = netflow_enabled
            __props__['netflow_override_allowed'] = netflow_override_allowed
            __props__['network_resource_pool_key'] = network_resource_pool_key
            __props__['network_resource_pool_override_allowed'] = network_resource_pool_override_allowed
            __props__['notify_switches'] = notify_switches
            __props__['number_of_ports'] = number_of_ports
            __props__['port_config_reset_at_disconnect'] = port_config_reset_at_disconnect
            __props__['port_name_format'] = port_name_format
            __props__['port_private_secondary_vlan_id'] = port_private_secondary_vlan_id
            __props__['security_policy_override_allowed'] = security_policy_override_allowed
            __props__['shaping_override_allowed'] = shaping_override_allowed
            __props__['standby_uplinks'] = standby_uplinks
            __props__['tags'] = tags
            __props__['teaming_policy'] = teaming_policy
            __props__['traffic_filter_override_allowed'] = traffic_filter_override_allowed
            __props__['tx_uplink'] = tx_uplink
            __props__['type'] = type
            __props__['uplink_teaming_override_allowed'] = uplink_teaming_override_allowed
            __props__['vlan_id'] = vlan_id
            __props__['vlan_override_allowed'] = vlan_override_allowed
            __props__['vlan_ranges'] = vlan_ranges
            __props__['config_version'] = None
            __props__['key'] = None
        super(DistributedPortGroup, __self__).__init__(
            'vsphere:index/distributedPortGroup:DistributedPortGroup',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            active_uplinks: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            allow_forged_transmits: Optional[pulumi.Input[bool]] = None,
            allow_mac_changes: Optional[pulumi.Input[bool]] = None,
            allow_promiscuous: Optional[pulumi.Input[bool]] = None,
            auto_expand: Optional[pulumi.Input[bool]] = None,
            block_all_ports: Optional[pulumi.Input[bool]] = None,
            block_override_allowed: Optional[pulumi.Input[bool]] = None,
            check_beacon: Optional[pulumi.Input[bool]] = None,
            config_version: Optional[pulumi.Input[str]] = None,
            custom_attributes: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
            description: Optional[pulumi.Input[str]] = None,
            directpath_gen2_allowed: Optional[pulumi.Input[bool]] = None,
            distributed_virtual_switch_uuid: Optional[pulumi.Input[str]] = None,
            egress_shaping_average_bandwidth: Optional[pulumi.Input[int]] = None,
            egress_shaping_burst_size: Optional[pulumi.Input[int]] = None,
            egress_shaping_enabled: Optional[pulumi.Input[bool]] = None,
            egress_shaping_peak_bandwidth: Optional[pulumi.Input[int]] = None,
            failback: Optional[pulumi.Input[bool]] = None,
            ingress_shaping_average_bandwidth: Optional[pulumi.Input[int]] = None,
            ingress_shaping_burst_size: Optional[pulumi.Input[int]] = None,
            ingress_shaping_enabled: Optional[pulumi.Input[bool]] = None,
            ingress_shaping_peak_bandwidth: Optional[pulumi.Input[int]] = None,
            key: Optional[pulumi.Input[str]] = None,
            lacp_enabled: Optional[pulumi.Input[bool]] = None,
            lacp_mode: Optional[pulumi.Input[str]] = None,
            live_port_moving_allowed: Optional[pulumi.Input[bool]] = None,
            name: Optional[pulumi.Input[str]] = None,
            netflow_enabled: Optional[pulumi.Input[bool]] = None,
            netflow_override_allowed: Optional[pulumi.Input[bool]] = None,
            network_resource_pool_key: Optional[pulumi.Input[str]] = None,
            network_resource_pool_override_allowed: Optional[pulumi.Input[bool]] = None,
            notify_switches: Optional[pulumi.Input[bool]] = None,
            number_of_ports: Optional[pulumi.Input[int]] = None,
            port_config_reset_at_disconnect: Optional[pulumi.Input[bool]] = None,
            port_name_format: Optional[pulumi.Input[str]] = None,
            port_private_secondary_vlan_id: Optional[pulumi.Input[int]] = None,
            security_policy_override_allowed: Optional[pulumi.Input[bool]] = None,
            shaping_override_allowed: Optional[pulumi.Input[bool]] = None,
            standby_uplinks: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            teaming_policy: Optional[pulumi.Input[str]] = None,
            traffic_filter_override_allowed: Optional[pulumi.Input[bool]] = None,
            tx_uplink: Optional[pulumi.Input[bool]] = None,
            type: Optional[pulumi.Input[str]] = None,
            uplink_teaming_override_allowed: Optional[pulumi.Input[bool]] = None,
            vlan_id: Optional[pulumi.Input[int]] = None,
            vlan_override_allowed: Optional[pulumi.Input[bool]] = None,
            vlan_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DistributedPortGroupVlanRangeArgs']]]]] = None) -> 'DistributedPortGroup':
        """
        Get an existing DistributedPortGroup 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]]] active_uplinks: List of active uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
        :param pulumi.Input[bool] allow_forged_transmits: Controls whether or not the virtual network adapter is allowed to send network traffic with a different MAC address than
               that of its own.
        :param pulumi.Input[bool] allow_mac_changes: Controls whether or not the Media Access Control (MAC) address can be changed.
        :param pulumi.Input[bool] allow_promiscuous: Enable promiscuous mode on the network. This flag indicates whether or not all traffic is seen on a given port.
        :param pulumi.Input[bool] auto_expand: Allows the port group to create additional ports
               past the limit specified in `number_of_ports` if necessary. Default: `true`.
        :param pulumi.Input[bool] block_all_ports: Indicates whether to block all ports by default.
        :param pulumi.Input[bool] block_override_allowed: Allow the port shutdown
               policy to be overridden on an individual port.
        :param pulumi.Input[bool] check_beacon: Enable beacon probing on the ports this policy applies to.
        :param pulumi.Input[str] config_version: Version string of the configuration that this spec is trying to change.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] custom_attributes: Map of custom attribute ids to attribute
               value string to set for port group.
        :param pulumi.Input[str] description: An optional description for the port group.
        :param pulumi.Input[bool] directpath_gen2_allowed: Allow VMDirectPath Gen2 on the ports this policy applies to.
        :param pulumi.Input[str] distributed_virtual_switch_uuid: The ID of the DVS to add the
               port group to. Forces a new resource if changed.
        :param pulumi.Input[int] egress_shaping_average_bandwidth: The average egress bandwidth in bits per second if egress shaping is enabled on the port.
        :param pulumi.Input[int] egress_shaping_burst_size: The maximum egress burst size allowed in bytes if egress shaping is enabled on the port.
        :param pulumi.Input[bool] egress_shaping_enabled: True if the traffic shaper is enabled for egress traffic on the port.
        :param pulumi.Input[int] egress_shaping_peak_bandwidth: The peak egress bandwidth during bursts in bits per second if egress traffic shaping is enabled on the port.
        :param pulumi.Input[bool] failback: If true, the teaming policy will re-activate failed interfaces higher in precedence when they come back up.
        :param pulumi.Input[int] ingress_shaping_average_bandwidth: The average ingress bandwidth in bits per second if ingress shaping is enabled on the port.
        :param pulumi.Input[int] ingress_shaping_burst_size: The maximum ingress burst size allowed in bytes if ingress shaping is enabled on the port.
        :param pulumi.Input[bool] ingress_shaping_enabled: True if the traffic shaper is enabled for ingress traffic on the port.
        :param pulumi.Input[int] ingress_shaping_peak_bandwidth: The peak ingress bandwidth during bursts in bits per second if ingress traffic shaping is enabled on the port.
        :param pulumi.Input[str] key: The generated UUID of the portgroup.
        :param pulumi.Input[bool] lacp_enabled: Whether or not to enable LACP on all uplink ports.
        :param pulumi.Input[str] lacp_mode: The uplink LACP mode to use. Can be one of active or passive.
        :param pulumi.Input[bool] live_port_moving_allowed: Allow a port in this port group to be
               moved to another port group while it is connected.
        :param pulumi.Input[str] name: The name of the port group.
        :param pulumi.Input[bool] netflow_enabled: Indicates whether to enable netflow on all ports.
        :param pulumi.Input[bool] netflow_override_allowed: Allow the Netflow
               policy on this port group to be overridden on an individual
               port.
        :param pulumi.Input[str] network_resource_pool_key: The key of a network resource pool
               to associate with this port group. The default is `-1`, which implies no
               association.
        :param pulumi.Input[bool] network_resource_pool_override_allowed: Allow the network
               resource pool set on this port group to be overridden on an individual port.
        :param pulumi.Input[bool] notify_switches: If true, the teaming policy will notify the broadcast network of a NIC failover, triggering cache updates.
        :param pulumi.Input[int] number_of_ports: The number of ports available on this port
               group. Cannot be decreased below the amount of used ports on the port group.
        :param pulumi.Input[bool] port_config_reset_at_disconnect: Reset a port's settings to the
               settings defined on this port group policy when the port disconnects.
        :param pulumi.Input[str] port_name_format: An optional formatting policy for naming of
               the ports in this port group. See the `portNameFormat` attribute listed
               [here][ext-vsphere-portname-format] for details on the format syntax.
        :param pulumi.Input[int] port_private_secondary_vlan_id: The secondary VLAN ID for this port.
        :param pulumi.Input[bool] security_policy_override_allowed: Allow the security policy
               settings defined in this port group policy to be
               overridden on an individual port.
        :param pulumi.Input[bool] shaping_override_allowed: Allow the traffic shaping
               options on this port group policy to be overridden
               on an individual port.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] standby_uplinks: List of standby uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: A list of tag IDs to apply to this object.
        :param pulumi.Input[str] teaming_policy: The network adapter teaming policy. Can be one of loadbalance_ip, loadbalance_srcmac, loadbalance_srcid,
               failover_explicit, or loadbalance_loadbased.
        :param pulumi.Input[bool] traffic_filter_override_allowed: Allow any traffic filters on
               this port group to be overridden on an individual port.
        :param pulumi.Input[bool] tx_uplink: If true, a copy of packets sent to the switch will always be forwarded to an uplink in addition to the regular packet
               forwarded done by the switch.
        :param pulumi.Input[str] type: The port group type. Can be one of `earlyBinding` (static
               binding) or `ephemeral`. Default: `earlyBinding`.
        :param pulumi.Input[bool] uplink_teaming_override_allowed: Allow the uplink teaming
               options on this port group to be overridden on an
               individual port.
        :param pulumi.Input[int] vlan_id: The VLAN ID for single VLAN mode. 0 denotes no VLAN.
        :param pulumi.Input[bool] vlan_override_allowed: Allow the VLAN settings
               on this port group to be overridden on an individual port.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DistributedPortGroupVlanRangeArgs']]]] vlan_ranges: The VLAN ID for single VLAN mode. 0 denotes no VLAN.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = dict()

        __props__["active_uplinks"] = active_uplinks
        __props__["allow_forged_transmits"] = allow_forged_transmits
        __props__["allow_mac_changes"] = allow_mac_changes
        __props__["allow_promiscuous"] = allow_promiscuous
        __props__["auto_expand"] = auto_expand
        __props__["block_all_ports"] = block_all_ports
        __props__["block_override_allowed"] = block_override_allowed
        __props__["check_beacon"] = check_beacon
        __props__["config_version"] = config_version
        __props__["custom_attributes"] = custom_attributes
        __props__["description"] = description
        __props__["directpath_gen2_allowed"] = directpath_gen2_allowed
        __props__["distributed_virtual_switch_uuid"] = distributed_virtual_switch_uuid
        __props__["egress_shaping_average_bandwidth"] = egress_shaping_average_bandwidth
        __props__["egress_shaping_burst_size"] = egress_shaping_burst_size
        __props__["egress_shaping_enabled"] = egress_shaping_enabled
        __props__["egress_shaping_peak_bandwidth"] = egress_shaping_peak_bandwidth
        __props__["failback"] = failback
        __props__["ingress_shaping_average_bandwidth"] = ingress_shaping_average_bandwidth
        __props__["ingress_shaping_burst_size"] = ingress_shaping_burst_size
        __props__["ingress_shaping_enabled"] = ingress_shaping_enabled
        __props__["ingress_shaping_peak_bandwidth"] = ingress_shaping_peak_bandwidth
        __props__["key"] = key
        __props__["lacp_enabled"] = lacp_enabled
        __props__["lacp_mode"] = lacp_mode
        __props__["live_port_moving_allowed"] = live_port_moving_allowed
        __props__["name"] = name
        __props__["netflow_enabled"] = netflow_enabled
        __props__["netflow_override_allowed"] = netflow_override_allowed
        __props__["network_resource_pool_key"] = network_resource_pool_key
        __props__["network_resource_pool_override_allowed"] = network_resource_pool_override_allowed
        __props__["notify_switches"] = notify_switches
        __props__["number_of_ports"] = number_of_ports
        __props__["port_config_reset_at_disconnect"] = port_config_reset_at_disconnect
        __props__["port_name_format"] = port_name_format
        __props__["port_private_secondary_vlan_id"] = port_private_secondary_vlan_id
        __props__["security_policy_override_allowed"] = security_policy_override_allowed
        __props__["shaping_override_allowed"] = shaping_override_allowed
        __props__["standby_uplinks"] = standby_uplinks
        __props__["tags"] = tags
        __props__["teaming_policy"] = teaming_policy
        __props__["traffic_filter_override_allowed"] = traffic_filter_override_allowed
        __props__["tx_uplink"] = tx_uplink
        __props__["type"] = type
        __props__["uplink_teaming_override_allowed"] = uplink_teaming_override_allowed
        __props__["vlan_id"] = vlan_id
        __props__["vlan_override_allowed"] = vlan_override_allowed
        __props__["vlan_ranges"] = vlan_ranges
        return DistributedPortGroup(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="activeUplinks")
    def active_uplinks(self) -> pulumi.Output[Sequence[str]]:
        """
        List of active uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
        """
        return pulumi.get(self, "active_uplinks")

    @property
    @pulumi.getter(name="allowForgedTransmits")
    def allow_forged_transmits(self) -> pulumi.Output[bool]:
        """
        Controls whether or not the virtual network adapter is allowed to send network traffic with a different MAC address than
        that of its own.
        """
        return pulumi.get(self, "allow_forged_transmits")

    @property
    @pulumi.getter(name="allowMacChanges")
    def allow_mac_changes(self) -> pulumi.Output[bool]:
        """
        Controls whether or not the Media Access Control (MAC) address can be changed.
        """
        return pulumi.get(self, "allow_mac_changes")

    @property
    @pulumi.getter(name="allowPromiscuous")
    def allow_promiscuous(self) -> pulumi.Output[bool]:
        """
        Enable promiscuous mode on the network. This flag indicates whether or not all traffic is seen on a given port.
        """
        return pulumi.get(self, "allow_promiscuous")

    @property
    @pulumi.getter(name="autoExpand")
    def auto_expand(self) -> pulumi.Output[Optional[bool]]:
        """
        Allows the port group to create additional ports
        past the limit specified in `number_of_ports` if necessary. Default: `true`.
        """
        return pulumi.get(self, "auto_expand")

    @property
    @pulumi.getter(name="blockAllPorts")
    def block_all_ports(self) -> pulumi.Output[bool]:
        """
        Indicates whether to block all ports by default.
        """
        return pulumi.get(self, "block_all_ports")

    @property
    @pulumi.getter(name="blockOverrideAllowed")
    def block_override_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow the port shutdown
        policy to be overridden on an individual port.
        """
        return pulumi.get(self, "block_override_allowed")

    @property
    @pulumi.getter(name="checkBeacon")
    def check_beacon(self) -> pulumi.Output[bool]:
        """
        Enable beacon probing on the ports this policy applies to.
        """
        return pulumi.get(self, "check_beacon")

    @property
    @pulumi.getter(name="configVersion")
    def config_version(self) -> pulumi.Output[str]:
        """
        Version string of the configuration that this spec is trying to change.
        """
        return pulumi.get(self, "config_version")

    @property
    @pulumi.getter(name="customAttributes")
    def custom_attributes(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
        """
        Map of custom attribute ids to attribute
        value string to set for port group.
        """
        return pulumi.get(self, "custom_attributes")

    @property
    @pulumi.getter
    def description(self) -> pulumi.Output[Optional[str]]:
        """
        An optional description for the port group.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="directpathGen2Allowed")
    def directpath_gen2_allowed(self) -> pulumi.Output[bool]:
        """
        Allow VMDirectPath Gen2 on the ports this policy applies to.
        """
        return pulumi.get(self, "directpath_gen2_allowed")

    @property
    @pulumi.getter(name="distributedVirtualSwitchUuid")
    def distributed_virtual_switch_uuid(self) -> pulumi.Output[str]:
        """
        The ID of the DVS to add the
        port group to. Forces a new resource if changed.
        """
        return pulumi.get(self, "distributed_virtual_switch_uuid")

    @property
    @pulumi.getter(name="egressShapingAverageBandwidth")
    def egress_shaping_average_bandwidth(self) -> pulumi.Output[int]:
        """
        The average egress bandwidth in bits per second if egress shaping is enabled on the port.
        """
        return pulumi.get(self, "egress_shaping_average_bandwidth")

    @property
    @pulumi.getter(name="egressShapingBurstSize")
    def egress_shaping_burst_size(self) -> pulumi.Output[int]:
        """
        The maximum egress burst size allowed in bytes if egress shaping is enabled on the port.
        """
        return pulumi.get(self, "egress_shaping_burst_size")

    @property
    @pulumi.getter(name="egressShapingEnabled")
    def egress_shaping_enabled(self) -> pulumi.Output[bool]:
        """
        True if the traffic shaper is enabled for egress traffic on the port.
        """
        return pulumi.get(self, "egress_shaping_enabled")

    @property
    @pulumi.getter(name="egressShapingPeakBandwidth")
    def egress_shaping_peak_bandwidth(self) -> pulumi.Output[int]:
        """
        The peak egress bandwidth during bursts in bits per second if egress traffic shaping is enabled on the port.
        """
        return pulumi.get(self, "egress_shaping_peak_bandwidth")

    @property
    @pulumi.getter
    def failback(self) -> pulumi.Output[bool]:
        """
        If true, the teaming policy will re-activate failed interfaces higher in precedence when they come back up.
        """
        return pulumi.get(self, "failback")

    @property
    @pulumi.getter(name="ingressShapingAverageBandwidth")
    def ingress_shaping_average_bandwidth(self) -> pulumi.Output[int]:
        """
        The average ingress bandwidth in bits per second if ingress shaping is enabled on the port.
        """
        return pulumi.get(self, "ingress_shaping_average_bandwidth")

    @property
    @pulumi.getter(name="ingressShapingBurstSize")
    def ingress_shaping_burst_size(self) -> pulumi.Output[int]:
        """
        The maximum ingress burst size allowed in bytes if ingress shaping is enabled on the port.
        """
        return pulumi.get(self, "ingress_shaping_burst_size")

    @property
    @pulumi.getter(name="ingressShapingEnabled")
    def ingress_shaping_enabled(self) -> pulumi.Output[bool]:
        """
        True if the traffic shaper is enabled for ingress traffic on the port.
        """
        return pulumi.get(self, "ingress_shaping_enabled")

    @property
    @pulumi.getter(name="ingressShapingPeakBandwidth")
    def ingress_shaping_peak_bandwidth(self) -> pulumi.Output[int]:
        """
        The peak ingress bandwidth during bursts in bits per second if ingress traffic shaping is enabled on the port.
        """
        return pulumi.get(self, "ingress_shaping_peak_bandwidth")

    @property
    @pulumi.getter
    def key(self) -> pulumi.Output[str]:
        """
        The generated UUID of the portgroup.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="lacpEnabled")
    def lacp_enabled(self) -> pulumi.Output[bool]:
        """
        Whether or not to enable LACP on all uplink ports.
        """
        return pulumi.get(self, "lacp_enabled")

    @property
    @pulumi.getter(name="lacpMode")
    def lacp_mode(self) -> pulumi.Output[str]:
        """
        The uplink LACP mode to use. Can be one of active or passive.
        """
        return pulumi.get(self, "lacp_mode")

    @property
    @pulumi.getter(name="livePortMovingAllowed")
    def live_port_moving_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow a port in this port group to be
        moved to another port group while it is connected.
        """
        return pulumi.get(self, "live_port_moving_allowed")

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

    @property
    @pulumi.getter(name="netflowEnabled")
    def netflow_enabled(self) -> pulumi.Output[bool]:
        """
        Indicates whether to enable netflow on all ports.
        """
        return pulumi.get(self, "netflow_enabled")

    @property
    @pulumi.getter(name="netflowOverrideAllowed")
    def netflow_override_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow the Netflow
        policy on this port group to be overridden on an individual
        port.
        """
        return pulumi.get(self, "netflow_override_allowed")

    @property
    @pulumi.getter(name="networkResourcePoolKey")
    def network_resource_pool_key(self) -> pulumi.Output[Optional[str]]:
        """
        The key of a network resource pool
        to associate with this port group. The default is `-1`, which implies no
        association.
        """
        return pulumi.get(self, "network_resource_pool_key")

    @property
    @pulumi.getter(name="networkResourcePoolOverrideAllowed")
    def network_resource_pool_override_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow the network
        resource pool set on this port group to be overridden on an individual port.
        """
        return pulumi.get(self, "network_resource_pool_override_allowed")

    @property
    @pulumi.getter(name="notifySwitches")
    def notify_switches(self) -> pulumi.Output[bool]:
        """
        If true, the teaming policy will notify the broadcast network of a NIC failover, triggering cache updates.
        """
        return pulumi.get(self, "notify_switches")

    @property
    @pulumi.getter(name="numberOfPorts")
    def number_of_ports(self) -> pulumi.Output[int]:
        """
        The number of ports available on this port
        group. Cannot be decreased below the amount of used ports on the port group.
        """
        return pulumi.get(self, "number_of_ports")

    @property
    @pulumi.getter(name="portConfigResetAtDisconnect")
    def port_config_reset_at_disconnect(self) -> pulumi.Output[Optional[bool]]:
        """
        Reset a port's settings to the
        settings defined on this port group policy when the port disconnects.
        """
        return pulumi.get(self, "port_config_reset_at_disconnect")

    @property
    @pulumi.getter(name="portNameFormat")
    def port_name_format(self) -> pulumi.Output[Optional[str]]:
        """
        An optional formatting policy for naming of
        the ports in this port group. See the `portNameFormat` attribute listed
        [here][ext-vsphere-portname-format] for details on the format syntax.
        """
        return pulumi.get(self, "port_name_format")

    @property
    @pulumi.getter(name="portPrivateSecondaryVlanId")
    def port_private_secondary_vlan_id(self) -> pulumi.Output[int]:
        """
        The secondary VLAN ID for this port.
        """
        return pulumi.get(self, "port_private_secondary_vlan_id")

    @property
    @pulumi.getter(name="securityPolicyOverrideAllowed")
    def security_policy_override_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow the security policy
        settings defined in this port group policy to be
        overridden on an individual port.
        """
        return pulumi.get(self, "security_policy_override_allowed")

    @property
    @pulumi.getter(name="shapingOverrideAllowed")
    def shaping_override_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow the traffic shaping
        options on this port group policy to be overridden
        on an individual port.
        """
        return pulumi.get(self, "shaping_override_allowed")

    @property
    @pulumi.getter(name="standbyUplinks")
    def standby_uplinks(self) -> pulumi.Output[Sequence[str]]:
        """
        List of standby uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
        """
        return pulumi.get(self, "standby_uplinks")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        A list of tag IDs to apply to this object.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="teamingPolicy")
    def teaming_policy(self) -> pulumi.Output[str]:
        """
        The network adapter teaming policy. Can be one of loadbalance_ip, loadbalance_srcmac, loadbalance_srcid,
        failover_explicit, or loadbalance_loadbased.
        """
        return pulumi.get(self, "teaming_policy")

    @property
    @pulumi.getter(name="trafficFilterOverrideAllowed")
    def traffic_filter_override_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow any traffic filters on
        this port group to be overridden on an individual port.
        """
        return pulumi.get(self, "traffic_filter_override_allowed")

    @property
    @pulumi.getter(name="txUplink")
    def tx_uplink(self) -> pulumi.Output[bool]:
        """
        If true, a copy of packets sent to the switch will always be forwarded to an uplink in addition to the regular packet
        forwarded done by the switch.
        """
        return pulumi.get(self, "tx_uplink")

    @property
    @pulumi.getter
    def type(self) -> pulumi.Output[Optional[str]]:
        """
        The port group type. Can be one of `earlyBinding` (static
        binding) or `ephemeral`. Default: `earlyBinding`.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="uplinkTeamingOverrideAllowed")
    def uplink_teaming_override_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow the uplink teaming
        options on this port group to be overridden on an
        individual port.
        """
        return pulumi.get(self, "uplink_teaming_override_allowed")

    @property
    @pulumi.getter(name="vlanId")
    def vlan_id(self) -> pulumi.Output[int]:
        """
        The VLAN ID for single VLAN mode. 0 denotes no VLAN.
        """
        return pulumi.get(self, "vlan_id")

    @property
    @pulumi.getter(name="vlanOverrideAllowed")
    def vlan_override_allowed(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow the VLAN settings
        on this port group to be overridden on an individual port.
        """
        return pulumi.get(self, "vlan_override_allowed")

    @property
    @pulumi.getter(name="vlanRanges")
    def vlan_ranges(self) -> pulumi.Output[Sequence['outputs.DistributedPortGroupVlanRange']]:
        """
        The VLAN ID for single VLAN mode. 0 denotes no VLAN.
        """
        return pulumi.get(self, "vlan_ranges")

    def translate_output_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop

    def translate_input_property(self, prop):
        return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop

