All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.vsphere.inputs.DistributedVirtualSwitchState Maven / Gradle / Ivy

There is a newer version: 4.13.0-alpha.1732775311
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.vsphere.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.vsphere.inputs.DistributedVirtualSwitchHostArgs;
import com.pulumi.vsphere.inputs.DistributedVirtualSwitchPvlanMappingArgs;
import com.pulumi.vsphere.inputs.DistributedVirtualSwitchVlanRangeArgs;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class DistributedVirtualSwitchState extends com.pulumi.resources.ResourceArgs {

    public static final DistributedVirtualSwitchState Empty = new DistributedVirtualSwitchState();

    /**
     * List of active uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
     * 
     */
    @Import(name="activeUplinks")
    private @Nullable Output> activeUplinks;

    /**
     * @return List of active uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
     * 
     */
    public Optional>> activeUplinks() {
        return Optional.ofNullable(this.activeUplinks);
    }

    /**
     * Controls whether or not the virtual network adapter is allowed to send network traffic with a different MAC address than
     * that of its own.
     * 
     */
    @Import(name="allowForgedTransmits")
    private @Nullable Output allowForgedTransmits;

    /**
     * @return Controls whether or not the virtual network adapter is allowed to send network traffic with a different MAC address than
     * that of its own.
     * 
     */
    public Optional> allowForgedTransmits() {
        return Optional.ofNullable(this.allowForgedTransmits);
    }

    /**
     * Controls whether or not the Media Access Control (MAC) address can be changed.
     * 
     */
    @Import(name="allowMacChanges")
    private @Nullable Output allowMacChanges;

    /**
     * @return Controls whether or not the Media Access Control (MAC) address can be changed.
     * 
     */
    public Optional> allowMacChanges() {
        return Optional.ofNullable(this.allowMacChanges);
    }

    /**
     * Enable promiscuous mode on the network. This flag indicates whether or not all traffic is seen on a given port.
     * 
     */
    @Import(name="allowPromiscuous")
    private @Nullable Output allowPromiscuous;

    /**
     * @return Enable promiscuous mode on the network. This flag indicates whether or not all traffic is seen on a given port.
     * 
     */
    public Optional> allowPromiscuous() {
        return Optional.ofNullable(this.allowPromiscuous);
    }

    /**
     * The maximum allowed usage for the backupNfc traffic class, in Mbits/sec.
     * 
     */
    @Import(name="backupnfcMaximumMbit")
    private @Nullable Output backupnfcMaximumMbit;

    /**
     * @return The maximum allowed usage for the backupNfc traffic class, in Mbits/sec.
     * 
     */
    public Optional> backupnfcMaximumMbit() {
        return Optional.ofNullable(this.backupnfcMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the backupNfc traffic class, in Mbits/sec.
     * 
     */
    @Import(name="backupnfcReservationMbit")
    private @Nullable Output backupnfcReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the backupNfc traffic class, in Mbits/sec.
     * 
     */
    public Optional> backupnfcReservationMbit() {
        return Optional.ofNullable(this.backupnfcReservationMbit);
    }

    /**
     * The amount of shares to allocate to the backupNfc traffic class for a custom share level.
     * 
     */
    @Import(name="backupnfcShareCount")
    private @Nullable Output backupnfcShareCount;

    /**
     * @return The amount of shares to allocate to the backupNfc traffic class for a custom share level.
     * 
     */
    public Optional> backupnfcShareCount() {
        return Optional.ofNullable(this.backupnfcShareCount);
    }

    /**
     * The allocation level for the backupNfc traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="backupnfcShareLevel")
    private @Nullable Output backupnfcShareLevel;

    /**
     * @return The allocation level for the backupNfc traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> backupnfcShareLevel() {
        return Optional.ofNullable(this.backupnfcShareLevel);
    }

    /**
     * Indicates whether to block all ports by default.
     * 
     */
    @Import(name="blockAllPorts")
    private @Nullable Output blockAllPorts;

    /**
     * @return Indicates whether to block all ports by default.
     * 
     */
    public Optional> blockAllPorts() {
        return Optional.ofNullable(this.blockAllPorts);
    }

    /**
     * Enable beacon probing on the ports this policy applies to.
     * 
     */
    @Import(name="checkBeacon")
    private @Nullable Output checkBeacon;

    /**
     * @return Enable beacon probing on the ports this policy applies to.
     * 
     */
    public Optional> checkBeacon() {
        return Optional.ofNullable(this.checkBeacon);
    }

    /**
     * The current version of the VDS configuration, incremented
     * by subsequent updates to the VDS.
     * 
     */
    @Import(name="configVersion")
    private @Nullable Output configVersion;

    /**
     * @return The current version of the VDS configuration, incremented
     * by subsequent updates to the VDS.
     * 
     */
    public Optional> configVersion() {
        return Optional.ofNullable(this.configVersion);
    }

    /**
     * The detailed contact information for the person
     * who is responsible for the VDS.
     * 
     */
    @Import(name="contactDetail")
    private @Nullable Output contactDetail;

    /**
     * @return The detailed contact information for the person
     * who is responsible for the VDS.
     * 
     */
    public Optional> contactDetail() {
        return Optional.ofNullable(this.contactDetail);
    }

    /**
     * The name of the person who is responsible for the
     * VDS.
     * 
     */
    @Import(name="contactName")
    private @Nullable Output contactName;

    /**
     * @return The name of the person who is responsible for the
     * VDS.
     * 
     */
    public Optional> contactName() {
        return Optional.ofNullable(this.contactName);
    }

    /**
     * Map of custom attribute ids to attribute
     * value strings to set for VDS.
     * 
     * > **NOTE:** Custom attributes are unsupported on direct ESXi host connections
     * and requires vCenter Server.
     * 
     */
    @Import(name="customAttributes")
    private @Nullable Output> customAttributes;

    /**
     * @return Map of custom attribute ids to attribute
     * value strings to set for VDS.
     * 
     * > **NOTE:** Custom attributes are unsupported on direct ESXi host connections
     * and requires vCenter Server.
     * 
     */
    public Optional>> customAttributes() {
        return Optional.ofNullable(this.customAttributes);
    }

    /**
     * The ID of the datacenter where the VDS will be
     * created. Forces a new resource if changed.
     * 
     */
    @Import(name="datacenterId")
    private @Nullable Output datacenterId;

    /**
     * @return The ID of the datacenter where the VDS will be
     * created. Forces a new resource if changed.
     * 
     */
    public Optional> datacenterId() {
        return Optional.ofNullable(this.datacenterId);
    }

    /**
     * A detailed description for the VDS.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return A detailed description for the VDS.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * Allow VMDirectPath Gen2 on the ports this policy applies to.
     * 
     */
    @Import(name="directpathGen2Allowed")
    private @Nullable Output directpathGen2Allowed;

    /**
     * @return Allow VMDirectPath Gen2 on the ports this policy applies to.
     * 
     */
    public Optional> directpathGen2Allowed() {
        return Optional.ofNullable(this.directpathGen2Allowed);
    }

    /**
     * The average egress bandwidth in bits per second if egress shaping is enabled on the port.
     * 
     */
    @Import(name="egressShapingAverageBandwidth")
    private @Nullable Output egressShapingAverageBandwidth;

    /**
     * @return The average egress bandwidth in bits per second if egress shaping is enabled on the port.
     * 
     */
    public Optional> egressShapingAverageBandwidth() {
        return Optional.ofNullable(this.egressShapingAverageBandwidth);
    }

    /**
     * The maximum egress burst size allowed in bytes if egress shaping is enabled on the port.
     * 
     */
    @Import(name="egressShapingBurstSize")
    private @Nullable Output egressShapingBurstSize;

    /**
     * @return The maximum egress burst size allowed in bytes if egress shaping is enabled on the port.
     * 
     */
    public Optional> egressShapingBurstSize() {
        return Optional.ofNullable(this.egressShapingBurstSize);
    }

    /**
     * True if the traffic shaper is enabled for egress traffic on the port.
     * 
     */
    @Import(name="egressShapingEnabled")
    private @Nullable Output egressShapingEnabled;

    /**
     * @return True if the traffic shaper is enabled for egress traffic on the port.
     * 
     */
    public Optional> egressShapingEnabled() {
        return Optional.ofNullable(this.egressShapingEnabled);
    }

    /**
     * The peak egress bandwidth during bursts in bits per second if egress traffic shaping is enabled on the port.
     * 
     */
    @Import(name="egressShapingPeakBandwidth")
    private @Nullable Output egressShapingPeakBandwidth;

    /**
     * @return The peak egress bandwidth during bursts in bits per second if egress traffic shaping is enabled on the port.
     * 
     */
    public Optional> egressShapingPeakBandwidth() {
        return Optional.ofNullable(this.egressShapingPeakBandwidth);
    }

    /**
     * If true, the teaming policy will re-activate failed interfaces higher in precedence when they come back up.
     * 
     */
    @Import(name="failback")
    private @Nullable Output failback;

    /**
     * @return If true, the teaming policy will re-activate failed interfaces higher in precedence when they come back up.
     * 
     */
    public Optional> failback() {
        return Optional.ofNullable(this.failback);
    }

    /**
     * The maximum allowed usage for the faultTolerance traffic class, in Mbits/sec.
     * 
     */
    @Import(name="faulttoleranceMaximumMbit")
    private @Nullable Output faulttoleranceMaximumMbit;

    /**
     * @return The maximum allowed usage for the faultTolerance traffic class, in Mbits/sec.
     * 
     */
    public Optional> faulttoleranceMaximumMbit() {
        return Optional.ofNullable(this.faulttoleranceMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the faultTolerance traffic class, in Mbits/sec.
     * 
     */
    @Import(name="faulttoleranceReservationMbit")
    private @Nullable Output faulttoleranceReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the faultTolerance traffic class, in Mbits/sec.
     * 
     */
    public Optional> faulttoleranceReservationMbit() {
        return Optional.ofNullable(this.faulttoleranceReservationMbit);
    }

    /**
     * The amount of shares to allocate to the faultTolerance traffic class for a custom share level.
     * 
     */
    @Import(name="faulttoleranceShareCount")
    private @Nullable Output faulttoleranceShareCount;

    /**
     * @return The amount of shares to allocate to the faultTolerance traffic class for a custom share level.
     * 
     */
    public Optional> faulttoleranceShareCount() {
        return Optional.ofNullable(this.faulttoleranceShareCount);
    }

    /**
     * The allocation level for the faultTolerance traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="faulttoleranceShareLevel")
    private @Nullable Output faulttoleranceShareLevel;

    /**
     * @return The allocation level for the faultTolerance traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> faulttoleranceShareLevel() {
        return Optional.ofNullable(this.faulttoleranceShareLevel);
    }

    /**
     * The folder in which to create the VDS.
     * Forces a new resource if changed.
     * 
     */
    @Import(name="folder")
    private @Nullable Output folder;

    /**
     * @return The folder in which to create the VDS.
     * Forces a new resource if changed.
     * 
     */
    public Optional> folder() {
        return Optional.ofNullable(this.folder);
    }

    /**
     * The maximum allowed usage for the hbr traffic class, in Mbits/sec.
     * 
     */
    @Import(name="hbrMaximumMbit")
    private @Nullable Output hbrMaximumMbit;

    /**
     * @return The maximum allowed usage for the hbr traffic class, in Mbits/sec.
     * 
     */
    public Optional> hbrMaximumMbit() {
        return Optional.ofNullable(this.hbrMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the hbr traffic class, in Mbits/sec.
     * 
     */
    @Import(name="hbrReservationMbit")
    private @Nullable Output hbrReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the hbr traffic class, in Mbits/sec.
     * 
     */
    public Optional> hbrReservationMbit() {
        return Optional.ofNullable(this.hbrReservationMbit);
    }

    /**
     * The amount of shares to allocate to the hbr traffic class for a custom share level.
     * 
     */
    @Import(name="hbrShareCount")
    private @Nullable Output hbrShareCount;

    /**
     * @return The amount of shares to allocate to the hbr traffic class for a custom share level.
     * 
     */
    public Optional> hbrShareCount() {
        return Optional.ofNullable(this.hbrShareCount);
    }

    /**
     * The allocation level for the hbr traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="hbrShareLevel")
    private @Nullable Output hbrShareLevel;

    /**
     * @return The allocation level for the hbr traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> hbrShareLevel() {
        return Optional.ofNullable(this.hbrShareLevel);
    }

    /**
     * A host member specification.
     * 
     */
    @Import(name="hosts")
    private @Nullable Output> hosts;

    /**
     * @return A host member specification.
     * 
     */
    public Optional>> hosts() {
        return Optional.ofNullable(this.hosts);
    }

    /**
     * Whether to ignore existing PVLAN mappings not managed by this resource. Defaults to false.
     * 
     */
    @Import(name="ignoreOtherPvlanMappings")
    private @Nullable Output ignoreOtherPvlanMappings;

    /**
     * @return Whether to ignore existing PVLAN mappings not managed by this resource. Defaults to false.
     * 
     */
    public Optional> ignoreOtherPvlanMappings() {
        return Optional.ofNullable(this.ignoreOtherPvlanMappings);
    }

    /**
     * The average ingress bandwidth in bits per second if ingress shaping is enabled on the port.
     * 
     */
    @Import(name="ingressShapingAverageBandwidth")
    private @Nullable Output ingressShapingAverageBandwidth;

    /**
     * @return The average ingress bandwidth in bits per second if ingress shaping is enabled on the port.
     * 
     */
    public Optional> ingressShapingAverageBandwidth() {
        return Optional.ofNullable(this.ingressShapingAverageBandwidth);
    }

    /**
     * The maximum ingress burst size allowed in bytes if ingress shaping is enabled on the port.
     * 
     */
    @Import(name="ingressShapingBurstSize")
    private @Nullable Output ingressShapingBurstSize;

    /**
     * @return The maximum ingress burst size allowed in bytes if ingress shaping is enabled on the port.
     * 
     */
    public Optional> ingressShapingBurstSize() {
        return Optional.ofNullable(this.ingressShapingBurstSize);
    }

    /**
     * True if the traffic shaper is enabled for ingress traffic on the port.
     * 
     */
    @Import(name="ingressShapingEnabled")
    private @Nullable Output ingressShapingEnabled;

    /**
     * @return True if the traffic shaper is enabled for ingress traffic on the port.
     * 
     */
    public Optional> ingressShapingEnabled() {
        return Optional.ofNullable(this.ingressShapingEnabled);
    }

    /**
     * The peak ingress bandwidth during bursts in bits per second if ingress traffic shaping is enabled on the port.
     * 
     */
    @Import(name="ingressShapingPeakBandwidth")
    private @Nullable Output ingressShapingPeakBandwidth;

    /**
     * @return The peak ingress bandwidth during bursts in bits per second if ingress traffic shaping is enabled on the port.
     * 
     */
    public Optional> ingressShapingPeakBandwidth() {
        return Optional.ofNullable(this.ingressShapingPeakBandwidth);
    }

    /**
     * An IPv4 address to identify the switch. This is
     * mostly useful when used with the Netflow arguments.
     * 
     */
    @Import(name="ipv4Address")
    private @Nullable Output ipv4Address;

    /**
     * @return An IPv4 address to identify the switch. This is
     * mostly useful when used with the Netflow arguments.
     * 
     */
    public Optional> ipv4Address() {
        return Optional.ofNullable(this.ipv4Address);
    }

    /**
     * The maximum allowed usage for the iSCSI traffic class, in Mbits/sec.
     * 
     */
    @Import(name="iscsiMaximumMbit")
    private @Nullable Output iscsiMaximumMbit;

    /**
     * @return The maximum allowed usage for the iSCSI traffic class, in Mbits/sec.
     * 
     */
    public Optional> iscsiMaximumMbit() {
        return Optional.ofNullable(this.iscsiMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the iSCSI traffic class, in Mbits/sec.
     * 
     */
    @Import(name="iscsiReservationMbit")
    private @Nullable Output iscsiReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the iSCSI traffic class, in Mbits/sec.
     * 
     */
    public Optional> iscsiReservationMbit() {
        return Optional.ofNullable(this.iscsiReservationMbit);
    }

    /**
     * The amount of shares to allocate to the iSCSI traffic class for a custom share level.
     * 
     */
    @Import(name="iscsiShareCount")
    private @Nullable Output iscsiShareCount;

    /**
     * @return The amount of shares to allocate to the iSCSI traffic class for a custom share level.
     * 
     */
    public Optional> iscsiShareCount() {
        return Optional.ofNullable(this.iscsiShareCount);
    }

    /**
     * The allocation level for the iSCSI traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="iscsiShareLevel")
    private @Nullable Output iscsiShareLevel;

    /**
     * @return The allocation level for the iSCSI traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> iscsiShareLevel() {
        return Optional.ofNullable(this.iscsiShareLevel);
    }

    /**
     * The Link Aggregation Control Protocol group
     * version to use with the VDS. Possible values are `singleLag` and
     * `multipleLag`.
     * 
     */
    @Import(name="lacpApiVersion")
    private @Nullable Output lacpApiVersion;

    /**
     * @return The Link Aggregation Control Protocol group
     * version to use with the VDS. Possible values are `singleLag` and
     * `multipleLag`.
     * 
     */
    public Optional> lacpApiVersion() {
        return Optional.ofNullable(this.lacpApiVersion);
    }

    /**
     * Whether or not to enable LACP on all uplink ports.
     * 
     */
    @Import(name="lacpEnabled")
    private @Nullable Output lacpEnabled;

    /**
     * @return Whether or not to enable LACP on all uplink ports.
     * 
     */
    public Optional> lacpEnabled() {
        return Optional.ofNullable(this.lacpEnabled);
    }

    /**
     * The uplink LACP mode to use. Can be one of active or passive.
     * 
     */
    @Import(name="lacpMode")
    private @Nullable Output lacpMode;

    /**
     * @return The uplink LACP mode to use. Can be one of active or passive.
     * 
     */
    public Optional> lacpMode() {
        return Optional.ofNullable(this.lacpMode);
    }

    /**
     * Whether to `advertise` or `listen`
     * for link discovery traffic.
     * 
     */
    @Import(name="linkDiscoveryOperation")
    private @Nullable Output linkDiscoveryOperation;

    /**
     * @return Whether to `advertise` or `listen`
     * for link discovery traffic.
     * 
     */
    public Optional> linkDiscoveryOperation() {
        return Optional.ofNullable(this.linkDiscoveryOperation);
    }

    /**
     * The discovery protocol type. Valid
     * types are `cdp` and `lldp`.
     * 
     */
    @Import(name="linkDiscoveryProtocol")
    private @Nullable Output linkDiscoveryProtocol;

    /**
     * @return The discovery protocol type. Valid
     * types are `cdp` and `lldp`.
     * 
     */
    public Optional> linkDiscoveryProtocol() {
        return Optional.ofNullable(this.linkDiscoveryProtocol);
    }

    /**
     * The maximum allowed usage for the management traffic class, in Mbits/sec.
     * 
     */
    @Import(name="managementMaximumMbit")
    private @Nullable Output managementMaximumMbit;

    /**
     * @return The maximum allowed usage for the management traffic class, in Mbits/sec.
     * 
     */
    public Optional> managementMaximumMbit() {
        return Optional.ofNullable(this.managementMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the management traffic class, in Mbits/sec.
     * 
     */
    @Import(name="managementReservationMbit")
    private @Nullable Output managementReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the management traffic class, in Mbits/sec.
     * 
     */
    public Optional> managementReservationMbit() {
        return Optional.ofNullable(this.managementReservationMbit);
    }

    /**
     * The amount of shares to allocate to the management traffic class for a custom share level.
     * 
     */
    @Import(name="managementShareCount")
    private @Nullable Output managementShareCount;

    /**
     * @return The amount of shares to allocate to the management traffic class for a custom share level.
     * 
     */
    public Optional> managementShareCount() {
        return Optional.ofNullable(this.managementShareCount);
    }

    /**
     * The allocation level for the management traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="managementShareLevel")
    private @Nullable Output managementShareLevel;

    /**
     * @return The allocation level for the management traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> managementShareLevel() {
        return Optional.ofNullable(this.managementShareLevel);
    }

    /**
     * The maximum transmission unit (MTU) for the VDS.
     * 
     */
    @Import(name="maxMtu")
    private @Nullable Output maxMtu;

    /**
     * @return The maximum transmission unit (MTU) for the VDS.
     * 
     */
    public Optional> maxMtu() {
        return Optional.ofNullable(this.maxMtu);
    }

    /**
     * The multicast filtering mode to use
     * with the VDS. Can be one of `legacyFiltering` or `snooping`.
     * 
     */
    @Import(name="multicastFilteringMode")
    private @Nullable Output multicastFilteringMode;

    /**
     * @return The multicast filtering mode to use
     * with the VDS. Can be one of `legacyFiltering` or `snooping`.
     * 
     */
    public Optional> multicastFilteringMode() {
        return Optional.ofNullable(this.multicastFilteringMode);
    }

    /**
     * The name of the VDS.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return The name of the VDS.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * The number of seconds after which active flows are forced to be exported to the collector.
     * 
     */
    @Import(name="netflowActiveFlowTimeout")
    private @Nullable Output netflowActiveFlowTimeout;

    /**
     * @return The number of seconds after which active flows are forced to be exported to the collector.
     * 
     */
    public Optional> netflowActiveFlowTimeout() {
        return Optional.ofNullable(this.netflowActiveFlowTimeout);
    }

    /**
     * IP address for the netflow collector, using IPv4 or IPv6.
     * 
     */
    @Import(name="netflowCollectorIpAddress")
    private @Nullable Output netflowCollectorIpAddress;

    /**
     * @return IP address for the netflow collector, using IPv4 or IPv6.
     * 
     */
    public Optional> netflowCollectorIpAddress() {
        return Optional.ofNullable(this.netflowCollectorIpAddress);
    }

    /**
     * The port for the netflow collector.
     * 
     */
    @Import(name="netflowCollectorPort")
    private @Nullable Output netflowCollectorPort;

    /**
     * @return The port for the netflow collector.
     * 
     */
    public Optional> netflowCollectorPort() {
        return Optional.ofNullable(this.netflowCollectorPort);
    }

    /**
     * Indicates whether to enable netflow on all ports.
     * 
     */
    @Import(name="netflowEnabled")
    private @Nullable Output netflowEnabled;

    /**
     * @return Indicates whether to enable netflow on all ports.
     * 
     */
    public Optional> netflowEnabled() {
        return Optional.ofNullable(this.netflowEnabled);
    }

    /**
     * The number of seconds after which idle flows are forced to be exported to the collector.
     * 
     */
    @Import(name="netflowIdleFlowTimeout")
    private @Nullable Output netflowIdleFlowTimeout;

    /**
     * @return The number of seconds after which idle flows are forced to be exported to the collector.
     * 
     */
    public Optional> netflowIdleFlowTimeout() {
        return Optional.ofNullable(this.netflowIdleFlowTimeout);
    }

    /**
     * Whether to limit analysis to traffic that has both source and destination served by the same host.
     * 
     */
    @Import(name="netflowInternalFlowsOnly")
    private @Nullable Output netflowInternalFlowsOnly;

    /**
     * @return Whether to limit analysis to traffic that has both source and destination served by the same host.
     * 
     */
    public Optional> netflowInternalFlowsOnly() {
        return Optional.ofNullable(this.netflowInternalFlowsOnly);
    }

    /**
     * The observation Domain ID for the netflow collector.
     * 
     */
    @Import(name="netflowObservationDomainId")
    private @Nullable Output netflowObservationDomainId;

    /**
     * @return The observation Domain ID for the netflow collector.
     * 
     */
    public Optional> netflowObservationDomainId() {
        return Optional.ofNullable(this.netflowObservationDomainId);
    }

    /**
     * The ratio of total number of packets to the number of packets analyzed. Set to 0 to disable sampling, meaning that all
     * packets are analyzed.
     * 
     */
    @Import(name="netflowSamplingRate")
    private @Nullable Output netflowSamplingRate;

    /**
     * @return The ratio of total number of packets to the number of packets analyzed. Set to 0 to disable sampling, meaning that all
     * packets are analyzed.
     * 
     */
    public Optional> netflowSamplingRate() {
        return Optional.ofNullable(this.netflowSamplingRate);
    }

    /**
     * Whether or not to enable network resource control, enabling advanced traffic shaping and resource control features.
     * 
     */
    @Import(name="networkResourceControlEnabled")
    private @Nullable Output networkResourceControlEnabled;

    /**
     * @return Whether or not to enable network resource control, enabling advanced traffic shaping and resource control features.
     * 
     */
    public Optional> networkResourceControlEnabled() {
        return Optional.ofNullable(this.networkResourceControlEnabled);
    }

    /**
     * The network I/O control version to use. Can be one of version2 or version3.
     * 
     */
    @Import(name="networkResourceControlVersion")
    private @Nullable Output networkResourceControlVersion;

    /**
     * @return The network I/O control version to use. Can be one of version2 or version3.
     * 
     */
    public Optional> networkResourceControlVersion() {
        return Optional.ofNullable(this.networkResourceControlVersion);
    }

    /**
     * The maximum allowed usage for the nfs traffic class, in Mbits/sec.
     * 
     */
    @Import(name="nfsMaximumMbit")
    private @Nullable Output nfsMaximumMbit;

    /**
     * @return The maximum allowed usage for the nfs traffic class, in Mbits/sec.
     * 
     */
    public Optional> nfsMaximumMbit() {
        return Optional.ofNullable(this.nfsMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the nfs traffic class, in Mbits/sec.
     * 
     */
    @Import(name="nfsReservationMbit")
    private @Nullable Output nfsReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the nfs traffic class, in Mbits/sec.
     * 
     */
    public Optional> nfsReservationMbit() {
        return Optional.ofNullable(this.nfsReservationMbit);
    }

    /**
     * The amount of shares to allocate to the nfs traffic class for a custom share level.
     * 
     */
    @Import(name="nfsShareCount")
    private @Nullable Output nfsShareCount;

    /**
     * @return The amount of shares to allocate to the nfs traffic class for a custom share level.
     * 
     */
    public Optional> nfsShareCount() {
        return Optional.ofNullable(this.nfsShareCount);
    }

    /**
     * The allocation level for the nfs traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="nfsShareLevel")
    private @Nullable Output nfsShareLevel;

    /**
     * @return The allocation level for the nfs traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> nfsShareLevel() {
        return Optional.ofNullable(this.nfsShareLevel);
    }

    /**
     * If true, the teaming policy will notify the broadcast network of a NIC failover, triggering cache updates.
     * 
     */
    @Import(name="notifySwitches")
    private @Nullable Output notifySwitches;

    /**
     * @return If true, the teaming policy will notify the broadcast network of a NIC failover, triggering cache updates.
     * 
     */
    public Optional> notifySwitches() {
        return Optional.ofNullable(this.notifySwitches);
    }

    /**
     * The secondary VLAN ID for this port.
     * 
     */
    @Import(name="portPrivateSecondaryVlanId")
    private @Nullable Output portPrivateSecondaryVlanId;

    /**
     * @return The secondary VLAN ID for this port.
     * 
     */
    public Optional> portPrivateSecondaryVlanId() {
        return Optional.ofNullable(this.portPrivateSecondaryVlanId);
    }

    /**
     * A private VLAN (PVLAN) mapping.
     * 
     */
    @Import(name="pvlanMappings")
    private @Nullable Output> pvlanMappings;

    /**
     * @return A private VLAN (PVLAN) mapping.
     * 
     */
    public Optional>> pvlanMappings() {
        return Optional.ofNullable(this.pvlanMappings);
    }

    /**
     * List of standby uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
     * 
     */
    @Import(name="standbyUplinks")
    private @Nullable Output> standbyUplinks;

    /**
     * @return List of standby uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
     * 
     */
    public Optional>> standbyUplinks() {
        return Optional.ofNullable(this.standbyUplinks);
    }

    /**
     * The IDs of any tags to attach to this resource.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return The IDs of any tags to attach to this resource.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * The network adapter teaming policy. Can be one of loadbalance_ip, loadbalance_srcmac, loadbalance_srcid,
     * failover_explicit, or loadbalance_loadbased.
     * 
     */
    @Import(name="teamingPolicy")
    private @Nullable Output teamingPolicy;

    /**
     * @return The network adapter teaming policy. Can be one of loadbalance_ip, loadbalance_srcmac, loadbalance_srcid,
     * failover_explicit, or loadbalance_loadbased.
     * 
     */
    public Optional> teamingPolicy() {
        return Optional.ofNullable(this.teamingPolicy);
    }

    /**
     * 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.
     * 
     */
    @Import(name="txUplink")
    private @Nullable Output txUplink;

    /**
     * @return 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.
     * 
     */
    public Optional> txUplink() {
        return Optional.ofNullable(this.txUplink);
    }

    /**
     * A list of uplink ports. The contents of this list control both the uplink count and names of the uplinks on the DVS
     * across hosts.
     * 
     */
    @Import(name="uplinks")
    private @Nullable Output> uplinks;

    /**
     * @return A list of uplink ports. The contents of this list control both the uplink count and names of the uplinks on the DVS
     * across hosts.
     * 
     */
    public Optional>> uplinks() {
        return Optional.ofNullable(this.uplinks);
    }

    /**
     * The maximum allowed usage for the vdp traffic class, in Mbits/sec.
     * 
     */
    @Import(name="vdpMaximumMbit")
    private @Nullable Output vdpMaximumMbit;

    /**
     * @return The maximum allowed usage for the vdp traffic class, in Mbits/sec.
     * 
     */
    public Optional> vdpMaximumMbit() {
        return Optional.ofNullable(this.vdpMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the vdp traffic class, in Mbits/sec.
     * 
     */
    @Import(name="vdpReservationMbit")
    private @Nullable Output vdpReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the vdp traffic class, in Mbits/sec.
     * 
     */
    public Optional> vdpReservationMbit() {
        return Optional.ofNullable(this.vdpReservationMbit);
    }

    /**
     * The amount of shares to allocate to the vdp traffic class for a custom share level.
     * 
     */
    @Import(name="vdpShareCount")
    private @Nullable Output vdpShareCount;

    /**
     * @return The amount of shares to allocate to the vdp traffic class for a custom share level.
     * 
     */
    public Optional> vdpShareCount() {
        return Optional.ofNullable(this.vdpShareCount);
    }

    /**
     * The allocation level for the vdp traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="vdpShareLevel")
    private @Nullable Output vdpShareLevel;

    /**
     * @return The allocation level for the vdp traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> vdpShareLevel() {
        return Optional.ofNullable(this.vdpShareLevel);
    }

    /**
     * The version of the VDS. BY default, a VDS is created
     * at the latest version supported by the vSphere version if not specified.
     * A VDS can be upgraded to a newer version, but can not be downgraded.
     * 
     */
    @Import(name="version")
    private @Nullable Output version;

    /**
     * @return The version of the VDS. BY default, a VDS is created
     * at the latest version supported by the vSphere version if not specified.
     * A VDS can be upgraded to a newer version, but can not be downgraded.
     * 
     */
    public Optional> version() {
        return Optional.ofNullable(this.version);
    }

    /**
     * The maximum allowed usage for the virtualMachine traffic class, in Mbits/sec.
     * 
     */
    @Import(name="virtualmachineMaximumMbit")
    private @Nullable Output virtualmachineMaximumMbit;

    /**
     * @return The maximum allowed usage for the virtualMachine traffic class, in Mbits/sec.
     * 
     */
    public Optional> virtualmachineMaximumMbit() {
        return Optional.ofNullable(this.virtualmachineMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the virtualMachine traffic class, in Mbits/sec.
     * 
     */
    @Import(name="virtualmachineReservationMbit")
    private @Nullable Output virtualmachineReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the virtualMachine traffic class, in Mbits/sec.
     * 
     */
    public Optional> virtualmachineReservationMbit() {
        return Optional.ofNullable(this.virtualmachineReservationMbit);
    }

    /**
     * The amount of shares to allocate to the virtualMachine traffic class for a custom share level.
     * 
     */
    @Import(name="virtualmachineShareCount")
    private @Nullable Output virtualmachineShareCount;

    /**
     * @return The amount of shares to allocate to the virtualMachine traffic class for a custom share level.
     * 
     */
    public Optional> virtualmachineShareCount() {
        return Optional.ofNullable(this.virtualmachineShareCount);
    }

    /**
     * The allocation level for the virtualMachine traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="virtualmachineShareLevel")
    private @Nullable Output virtualmachineShareLevel;

    /**
     * @return The allocation level for the virtualMachine traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> virtualmachineShareLevel() {
        return Optional.ofNullable(this.virtualmachineShareLevel);
    }

    /**
     * The VLAN ID for single VLAN mode. 0 denotes no VLAN.
     * 
     */
    @Import(name="vlanId")
    private @Nullable Output vlanId;

    /**
     * @return The VLAN ID for single VLAN mode. 0 denotes no VLAN.
     * 
     */
    public Optional> vlanId() {
        return Optional.ofNullable(this.vlanId);
    }

    /**
     * The VLAN ID for single VLAN mode. 0 denotes no VLAN.
     * 
     */
    @Import(name="vlanRanges")
    private @Nullable Output> vlanRanges;

    /**
     * @return The VLAN ID for single VLAN mode. 0 denotes no VLAN.
     * 
     */
    public Optional>> vlanRanges() {
        return Optional.ofNullable(this.vlanRanges);
    }

    /**
     * The maximum allowed usage for the vmotion traffic class, in Mbits/sec.
     * 
     */
    @Import(name="vmotionMaximumMbit")
    private @Nullable Output vmotionMaximumMbit;

    /**
     * @return The maximum allowed usage for the vmotion traffic class, in Mbits/sec.
     * 
     */
    public Optional> vmotionMaximumMbit() {
        return Optional.ofNullable(this.vmotionMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the vmotion traffic class, in Mbits/sec.
     * 
     */
    @Import(name="vmotionReservationMbit")
    private @Nullable Output vmotionReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the vmotion traffic class, in Mbits/sec.
     * 
     */
    public Optional> vmotionReservationMbit() {
        return Optional.ofNullable(this.vmotionReservationMbit);
    }

    /**
     * The amount of shares to allocate to the vmotion traffic class for a custom share level.
     * 
     */
    @Import(name="vmotionShareCount")
    private @Nullable Output vmotionShareCount;

    /**
     * @return The amount of shares to allocate to the vmotion traffic class for a custom share level.
     * 
     */
    public Optional> vmotionShareCount() {
        return Optional.ofNullable(this.vmotionShareCount);
    }

    /**
     * The allocation level for the vmotion traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="vmotionShareLevel")
    private @Nullable Output vmotionShareLevel;

    /**
     * @return The allocation level for the vmotion traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> vmotionShareLevel() {
        return Optional.ofNullable(this.vmotionShareLevel);
    }

    /**
     * The maximum allowed usage for the vsan traffic class, in Mbits/sec.
     * 
     */
    @Import(name="vsanMaximumMbit")
    private @Nullable Output vsanMaximumMbit;

    /**
     * @return The maximum allowed usage for the vsan traffic class, in Mbits/sec.
     * 
     */
    public Optional> vsanMaximumMbit() {
        return Optional.ofNullable(this.vsanMaximumMbit);
    }

    /**
     * The amount of guaranteed bandwidth for the vsan traffic class, in Mbits/sec.
     * 
     */
    @Import(name="vsanReservationMbit")
    private @Nullable Output vsanReservationMbit;

    /**
     * @return The amount of guaranteed bandwidth for the vsan traffic class, in Mbits/sec.
     * 
     */
    public Optional> vsanReservationMbit() {
        return Optional.ofNullable(this.vsanReservationMbit);
    }

    /**
     * The amount of shares to allocate to the vsan traffic class for a custom share level.
     * 
     */
    @Import(name="vsanShareCount")
    private @Nullable Output vsanShareCount;

    /**
     * @return The amount of shares to allocate to the vsan traffic class for a custom share level.
     * 
     */
    public Optional> vsanShareCount() {
        return Optional.ofNullable(this.vsanShareCount);
    }

    /**
     * The allocation level for the vsan traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    @Import(name="vsanShareLevel")
    private @Nullable Output vsanShareLevel;

    /**
     * @return The allocation level for the vsan traffic class. Can be one of high, low, normal, or custom.
     * 
     */
    public Optional> vsanShareLevel() {
        return Optional.ofNullable(this.vsanShareLevel);
    }

    private DistributedVirtualSwitchState() {}

    private DistributedVirtualSwitchState(DistributedVirtualSwitchState $) {
        this.activeUplinks = $.activeUplinks;
        this.allowForgedTransmits = $.allowForgedTransmits;
        this.allowMacChanges = $.allowMacChanges;
        this.allowPromiscuous = $.allowPromiscuous;
        this.backupnfcMaximumMbit = $.backupnfcMaximumMbit;
        this.backupnfcReservationMbit = $.backupnfcReservationMbit;
        this.backupnfcShareCount = $.backupnfcShareCount;
        this.backupnfcShareLevel = $.backupnfcShareLevel;
        this.blockAllPorts = $.blockAllPorts;
        this.checkBeacon = $.checkBeacon;
        this.configVersion = $.configVersion;
        this.contactDetail = $.contactDetail;
        this.contactName = $.contactName;
        this.customAttributes = $.customAttributes;
        this.datacenterId = $.datacenterId;
        this.description = $.description;
        this.directpathGen2Allowed = $.directpathGen2Allowed;
        this.egressShapingAverageBandwidth = $.egressShapingAverageBandwidth;
        this.egressShapingBurstSize = $.egressShapingBurstSize;
        this.egressShapingEnabled = $.egressShapingEnabled;
        this.egressShapingPeakBandwidth = $.egressShapingPeakBandwidth;
        this.failback = $.failback;
        this.faulttoleranceMaximumMbit = $.faulttoleranceMaximumMbit;
        this.faulttoleranceReservationMbit = $.faulttoleranceReservationMbit;
        this.faulttoleranceShareCount = $.faulttoleranceShareCount;
        this.faulttoleranceShareLevel = $.faulttoleranceShareLevel;
        this.folder = $.folder;
        this.hbrMaximumMbit = $.hbrMaximumMbit;
        this.hbrReservationMbit = $.hbrReservationMbit;
        this.hbrShareCount = $.hbrShareCount;
        this.hbrShareLevel = $.hbrShareLevel;
        this.hosts = $.hosts;
        this.ignoreOtherPvlanMappings = $.ignoreOtherPvlanMappings;
        this.ingressShapingAverageBandwidth = $.ingressShapingAverageBandwidth;
        this.ingressShapingBurstSize = $.ingressShapingBurstSize;
        this.ingressShapingEnabled = $.ingressShapingEnabled;
        this.ingressShapingPeakBandwidth = $.ingressShapingPeakBandwidth;
        this.ipv4Address = $.ipv4Address;
        this.iscsiMaximumMbit = $.iscsiMaximumMbit;
        this.iscsiReservationMbit = $.iscsiReservationMbit;
        this.iscsiShareCount = $.iscsiShareCount;
        this.iscsiShareLevel = $.iscsiShareLevel;
        this.lacpApiVersion = $.lacpApiVersion;
        this.lacpEnabled = $.lacpEnabled;
        this.lacpMode = $.lacpMode;
        this.linkDiscoveryOperation = $.linkDiscoveryOperation;
        this.linkDiscoveryProtocol = $.linkDiscoveryProtocol;
        this.managementMaximumMbit = $.managementMaximumMbit;
        this.managementReservationMbit = $.managementReservationMbit;
        this.managementShareCount = $.managementShareCount;
        this.managementShareLevel = $.managementShareLevel;
        this.maxMtu = $.maxMtu;
        this.multicastFilteringMode = $.multicastFilteringMode;
        this.name = $.name;
        this.netflowActiveFlowTimeout = $.netflowActiveFlowTimeout;
        this.netflowCollectorIpAddress = $.netflowCollectorIpAddress;
        this.netflowCollectorPort = $.netflowCollectorPort;
        this.netflowEnabled = $.netflowEnabled;
        this.netflowIdleFlowTimeout = $.netflowIdleFlowTimeout;
        this.netflowInternalFlowsOnly = $.netflowInternalFlowsOnly;
        this.netflowObservationDomainId = $.netflowObservationDomainId;
        this.netflowSamplingRate = $.netflowSamplingRate;
        this.networkResourceControlEnabled = $.networkResourceControlEnabled;
        this.networkResourceControlVersion = $.networkResourceControlVersion;
        this.nfsMaximumMbit = $.nfsMaximumMbit;
        this.nfsReservationMbit = $.nfsReservationMbit;
        this.nfsShareCount = $.nfsShareCount;
        this.nfsShareLevel = $.nfsShareLevel;
        this.notifySwitches = $.notifySwitches;
        this.portPrivateSecondaryVlanId = $.portPrivateSecondaryVlanId;
        this.pvlanMappings = $.pvlanMappings;
        this.standbyUplinks = $.standbyUplinks;
        this.tags = $.tags;
        this.teamingPolicy = $.teamingPolicy;
        this.txUplink = $.txUplink;
        this.uplinks = $.uplinks;
        this.vdpMaximumMbit = $.vdpMaximumMbit;
        this.vdpReservationMbit = $.vdpReservationMbit;
        this.vdpShareCount = $.vdpShareCount;
        this.vdpShareLevel = $.vdpShareLevel;
        this.version = $.version;
        this.virtualmachineMaximumMbit = $.virtualmachineMaximumMbit;
        this.virtualmachineReservationMbit = $.virtualmachineReservationMbit;
        this.virtualmachineShareCount = $.virtualmachineShareCount;
        this.virtualmachineShareLevel = $.virtualmachineShareLevel;
        this.vlanId = $.vlanId;
        this.vlanRanges = $.vlanRanges;
        this.vmotionMaximumMbit = $.vmotionMaximumMbit;
        this.vmotionReservationMbit = $.vmotionReservationMbit;
        this.vmotionShareCount = $.vmotionShareCount;
        this.vmotionShareLevel = $.vmotionShareLevel;
        this.vsanMaximumMbit = $.vsanMaximumMbit;
        this.vsanReservationMbit = $.vsanReservationMbit;
        this.vsanShareCount = $.vsanShareCount;
        this.vsanShareLevel = $.vsanShareLevel;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(DistributedVirtualSwitchState defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private DistributedVirtualSwitchState $;

        public Builder() {
            $ = new DistributedVirtualSwitchState();
        }

        public Builder(DistributedVirtualSwitchState defaults) {
            $ = new DistributedVirtualSwitchState(Objects.requireNonNull(defaults));
        }

        /**
         * @param activeUplinks List of active uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
         * 
         * @return builder
         * 
         */
        public Builder activeUplinks(@Nullable Output> activeUplinks) {
            $.activeUplinks = activeUplinks;
            return this;
        }

        /**
         * @param activeUplinks List of active uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
         * 
         * @return builder
         * 
         */
        public Builder activeUplinks(List activeUplinks) {
            return activeUplinks(Output.of(activeUplinks));
        }

        /**
         * @param activeUplinks List of active uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
         * 
         * @return builder
         * 
         */
        public Builder activeUplinks(String... activeUplinks) {
            return activeUplinks(List.of(activeUplinks));
        }

        /**
         * @param allowForgedTransmits 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 builder
         * 
         */
        public Builder allowForgedTransmits(@Nullable Output allowForgedTransmits) {
            $.allowForgedTransmits = allowForgedTransmits;
            return this;
        }

        /**
         * @param allowForgedTransmits 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 builder
         * 
         */
        public Builder allowForgedTransmits(Boolean allowForgedTransmits) {
            return allowForgedTransmits(Output.of(allowForgedTransmits));
        }

        /**
         * @param allowMacChanges Controls whether or not the Media Access Control (MAC) address can be changed.
         * 
         * @return builder
         * 
         */
        public Builder allowMacChanges(@Nullable Output allowMacChanges) {
            $.allowMacChanges = allowMacChanges;
            return this;
        }

        /**
         * @param allowMacChanges Controls whether or not the Media Access Control (MAC) address can be changed.
         * 
         * @return builder
         * 
         */
        public Builder allowMacChanges(Boolean allowMacChanges) {
            return allowMacChanges(Output.of(allowMacChanges));
        }

        /**
         * @param allowPromiscuous Enable promiscuous mode on the network. This flag indicates whether or not all traffic is seen on a given port.
         * 
         * @return builder
         * 
         */
        public Builder allowPromiscuous(@Nullable Output allowPromiscuous) {
            $.allowPromiscuous = allowPromiscuous;
            return this;
        }

        /**
         * @param allowPromiscuous Enable promiscuous mode on the network. This flag indicates whether or not all traffic is seen on a given port.
         * 
         * @return builder
         * 
         */
        public Builder allowPromiscuous(Boolean allowPromiscuous) {
            return allowPromiscuous(Output.of(allowPromiscuous));
        }

        /**
         * @param backupnfcMaximumMbit The maximum allowed usage for the backupNfc traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder backupnfcMaximumMbit(@Nullable Output backupnfcMaximumMbit) {
            $.backupnfcMaximumMbit = backupnfcMaximumMbit;
            return this;
        }

        /**
         * @param backupnfcMaximumMbit The maximum allowed usage for the backupNfc traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder backupnfcMaximumMbit(Integer backupnfcMaximumMbit) {
            return backupnfcMaximumMbit(Output.of(backupnfcMaximumMbit));
        }

        /**
         * @param backupnfcReservationMbit The amount of guaranteed bandwidth for the backupNfc traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder backupnfcReservationMbit(@Nullable Output backupnfcReservationMbit) {
            $.backupnfcReservationMbit = backupnfcReservationMbit;
            return this;
        }

        /**
         * @param backupnfcReservationMbit The amount of guaranteed bandwidth for the backupNfc traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder backupnfcReservationMbit(Integer backupnfcReservationMbit) {
            return backupnfcReservationMbit(Output.of(backupnfcReservationMbit));
        }

        /**
         * @param backupnfcShareCount The amount of shares to allocate to the backupNfc traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder backupnfcShareCount(@Nullable Output backupnfcShareCount) {
            $.backupnfcShareCount = backupnfcShareCount;
            return this;
        }

        /**
         * @param backupnfcShareCount The amount of shares to allocate to the backupNfc traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder backupnfcShareCount(Integer backupnfcShareCount) {
            return backupnfcShareCount(Output.of(backupnfcShareCount));
        }

        /**
         * @param backupnfcShareLevel The allocation level for the backupNfc traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder backupnfcShareLevel(@Nullable Output backupnfcShareLevel) {
            $.backupnfcShareLevel = backupnfcShareLevel;
            return this;
        }

        /**
         * @param backupnfcShareLevel The allocation level for the backupNfc traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder backupnfcShareLevel(String backupnfcShareLevel) {
            return backupnfcShareLevel(Output.of(backupnfcShareLevel));
        }

        /**
         * @param blockAllPorts Indicates whether to block all ports by default.
         * 
         * @return builder
         * 
         */
        public Builder blockAllPorts(@Nullable Output blockAllPorts) {
            $.blockAllPorts = blockAllPorts;
            return this;
        }

        /**
         * @param blockAllPorts Indicates whether to block all ports by default.
         * 
         * @return builder
         * 
         */
        public Builder blockAllPorts(Boolean blockAllPorts) {
            return blockAllPorts(Output.of(blockAllPorts));
        }

        /**
         * @param checkBeacon Enable beacon probing on the ports this policy applies to.
         * 
         * @return builder
         * 
         */
        public Builder checkBeacon(@Nullable Output checkBeacon) {
            $.checkBeacon = checkBeacon;
            return this;
        }

        /**
         * @param checkBeacon Enable beacon probing on the ports this policy applies to.
         * 
         * @return builder
         * 
         */
        public Builder checkBeacon(Boolean checkBeacon) {
            return checkBeacon(Output.of(checkBeacon));
        }

        /**
         * @param configVersion The current version of the VDS configuration, incremented
         * by subsequent updates to the VDS.
         * 
         * @return builder
         * 
         */
        public Builder configVersion(@Nullable Output configVersion) {
            $.configVersion = configVersion;
            return this;
        }

        /**
         * @param configVersion The current version of the VDS configuration, incremented
         * by subsequent updates to the VDS.
         * 
         * @return builder
         * 
         */
        public Builder configVersion(String configVersion) {
            return configVersion(Output.of(configVersion));
        }

        /**
         * @param contactDetail The detailed contact information for the person
         * who is responsible for the VDS.
         * 
         * @return builder
         * 
         */
        public Builder contactDetail(@Nullable Output contactDetail) {
            $.contactDetail = contactDetail;
            return this;
        }

        /**
         * @param contactDetail The detailed contact information for the person
         * who is responsible for the VDS.
         * 
         * @return builder
         * 
         */
        public Builder contactDetail(String contactDetail) {
            return contactDetail(Output.of(contactDetail));
        }

        /**
         * @param contactName The name of the person who is responsible for the
         * VDS.
         * 
         * @return builder
         * 
         */
        public Builder contactName(@Nullable Output contactName) {
            $.contactName = contactName;
            return this;
        }

        /**
         * @param contactName The name of the person who is responsible for the
         * VDS.
         * 
         * @return builder
         * 
         */
        public Builder contactName(String contactName) {
            return contactName(Output.of(contactName));
        }

        /**
         * @param customAttributes Map of custom attribute ids to attribute
         * value strings to set for VDS.
         * 
         * > **NOTE:** Custom attributes are unsupported on direct ESXi host connections
         * and requires vCenter Server.
         * 
         * @return builder
         * 
         */
        public Builder customAttributes(@Nullable Output> customAttributes) {
            $.customAttributes = customAttributes;
            return this;
        }

        /**
         * @param customAttributes Map of custom attribute ids to attribute
         * value strings to set for VDS.
         * 
         * > **NOTE:** Custom attributes are unsupported on direct ESXi host connections
         * and requires vCenter Server.
         * 
         * @return builder
         * 
         */
        public Builder customAttributes(Map customAttributes) {
            return customAttributes(Output.of(customAttributes));
        }

        /**
         * @param datacenterId The ID of the datacenter where the VDS will be
         * created. Forces a new resource if changed.
         * 
         * @return builder
         * 
         */
        public Builder datacenterId(@Nullable Output datacenterId) {
            $.datacenterId = datacenterId;
            return this;
        }

        /**
         * @param datacenterId The ID of the datacenter where the VDS will be
         * created. Forces a new resource if changed.
         * 
         * @return builder
         * 
         */
        public Builder datacenterId(String datacenterId) {
            return datacenterId(Output.of(datacenterId));
        }

        /**
         * @param description A detailed description for the VDS.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description A detailed description for the VDS.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param directpathGen2Allowed Allow VMDirectPath Gen2 on the ports this policy applies to.
         * 
         * @return builder
         * 
         */
        public Builder directpathGen2Allowed(@Nullable Output directpathGen2Allowed) {
            $.directpathGen2Allowed = directpathGen2Allowed;
            return this;
        }

        /**
         * @param directpathGen2Allowed Allow VMDirectPath Gen2 on the ports this policy applies to.
         * 
         * @return builder
         * 
         */
        public Builder directpathGen2Allowed(Boolean directpathGen2Allowed) {
            return directpathGen2Allowed(Output.of(directpathGen2Allowed));
        }

        /**
         * @param egressShapingAverageBandwidth The average egress bandwidth in bits per second if egress shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder egressShapingAverageBandwidth(@Nullable Output egressShapingAverageBandwidth) {
            $.egressShapingAverageBandwidth = egressShapingAverageBandwidth;
            return this;
        }

        /**
         * @param egressShapingAverageBandwidth The average egress bandwidth in bits per second if egress shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder egressShapingAverageBandwidth(Integer egressShapingAverageBandwidth) {
            return egressShapingAverageBandwidth(Output.of(egressShapingAverageBandwidth));
        }

        /**
         * @param egressShapingBurstSize The maximum egress burst size allowed in bytes if egress shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder egressShapingBurstSize(@Nullable Output egressShapingBurstSize) {
            $.egressShapingBurstSize = egressShapingBurstSize;
            return this;
        }

        /**
         * @param egressShapingBurstSize The maximum egress burst size allowed in bytes if egress shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder egressShapingBurstSize(Integer egressShapingBurstSize) {
            return egressShapingBurstSize(Output.of(egressShapingBurstSize));
        }

        /**
         * @param egressShapingEnabled True if the traffic shaper is enabled for egress traffic on the port.
         * 
         * @return builder
         * 
         */
        public Builder egressShapingEnabled(@Nullable Output egressShapingEnabled) {
            $.egressShapingEnabled = egressShapingEnabled;
            return this;
        }

        /**
         * @param egressShapingEnabled True if the traffic shaper is enabled for egress traffic on the port.
         * 
         * @return builder
         * 
         */
        public Builder egressShapingEnabled(Boolean egressShapingEnabled) {
            return egressShapingEnabled(Output.of(egressShapingEnabled));
        }

        /**
         * @param egressShapingPeakBandwidth The peak egress bandwidth during bursts in bits per second if egress traffic shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder egressShapingPeakBandwidth(@Nullable Output egressShapingPeakBandwidth) {
            $.egressShapingPeakBandwidth = egressShapingPeakBandwidth;
            return this;
        }

        /**
         * @param egressShapingPeakBandwidth The peak egress bandwidth during bursts in bits per second if egress traffic shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder egressShapingPeakBandwidth(Integer egressShapingPeakBandwidth) {
            return egressShapingPeakBandwidth(Output.of(egressShapingPeakBandwidth));
        }

        /**
         * @param failback If true, the teaming policy will re-activate failed interfaces higher in precedence when they come back up.
         * 
         * @return builder
         * 
         */
        public Builder failback(@Nullable Output failback) {
            $.failback = failback;
            return this;
        }

        /**
         * @param failback If true, the teaming policy will re-activate failed interfaces higher in precedence when they come back up.
         * 
         * @return builder
         * 
         */
        public Builder failback(Boolean failback) {
            return failback(Output.of(failback));
        }

        /**
         * @param faulttoleranceMaximumMbit The maximum allowed usage for the faultTolerance traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder faulttoleranceMaximumMbit(@Nullable Output faulttoleranceMaximumMbit) {
            $.faulttoleranceMaximumMbit = faulttoleranceMaximumMbit;
            return this;
        }

        /**
         * @param faulttoleranceMaximumMbit The maximum allowed usage for the faultTolerance traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder faulttoleranceMaximumMbit(Integer faulttoleranceMaximumMbit) {
            return faulttoleranceMaximumMbit(Output.of(faulttoleranceMaximumMbit));
        }

        /**
         * @param faulttoleranceReservationMbit The amount of guaranteed bandwidth for the faultTolerance traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder faulttoleranceReservationMbit(@Nullable Output faulttoleranceReservationMbit) {
            $.faulttoleranceReservationMbit = faulttoleranceReservationMbit;
            return this;
        }

        /**
         * @param faulttoleranceReservationMbit The amount of guaranteed bandwidth for the faultTolerance traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder faulttoleranceReservationMbit(Integer faulttoleranceReservationMbit) {
            return faulttoleranceReservationMbit(Output.of(faulttoleranceReservationMbit));
        }

        /**
         * @param faulttoleranceShareCount The amount of shares to allocate to the faultTolerance traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder faulttoleranceShareCount(@Nullable Output faulttoleranceShareCount) {
            $.faulttoleranceShareCount = faulttoleranceShareCount;
            return this;
        }

        /**
         * @param faulttoleranceShareCount The amount of shares to allocate to the faultTolerance traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder faulttoleranceShareCount(Integer faulttoleranceShareCount) {
            return faulttoleranceShareCount(Output.of(faulttoleranceShareCount));
        }

        /**
         * @param faulttoleranceShareLevel The allocation level for the faultTolerance traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder faulttoleranceShareLevel(@Nullable Output faulttoleranceShareLevel) {
            $.faulttoleranceShareLevel = faulttoleranceShareLevel;
            return this;
        }

        /**
         * @param faulttoleranceShareLevel The allocation level for the faultTolerance traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder faulttoleranceShareLevel(String faulttoleranceShareLevel) {
            return faulttoleranceShareLevel(Output.of(faulttoleranceShareLevel));
        }

        /**
         * @param folder The folder in which to create the VDS.
         * Forces a new resource if changed.
         * 
         * @return builder
         * 
         */
        public Builder folder(@Nullable Output folder) {
            $.folder = folder;
            return this;
        }

        /**
         * @param folder The folder in which to create the VDS.
         * Forces a new resource if changed.
         * 
         * @return builder
         * 
         */
        public Builder folder(String folder) {
            return folder(Output.of(folder));
        }

        /**
         * @param hbrMaximumMbit The maximum allowed usage for the hbr traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder hbrMaximumMbit(@Nullable Output hbrMaximumMbit) {
            $.hbrMaximumMbit = hbrMaximumMbit;
            return this;
        }

        /**
         * @param hbrMaximumMbit The maximum allowed usage for the hbr traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder hbrMaximumMbit(Integer hbrMaximumMbit) {
            return hbrMaximumMbit(Output.of(hbrMaximumMbit));
        }

        /**
         * @param hbrReservationMbit The amount of guaranteed bandwidth for the hbr traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder hbrReservationMbit(@Nullable Output hbrReservationMbit) {
            $.hbrReservationMbit = hbrReservationMbit;
            return this;
        }

        /**
         * @param hbrReservationMbit The amount of guaranteed bandwidth for the hbr traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder hbrReservationMbit(Integer hbrReservationMbit) {
            return hbrReservationMbit(Output.of(hbrReservationMbit));
        }

        /**
         * @param hbrShareCount The amount of shares to allocate to the hbr traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder hbrShareCount(@Nullable Output hbrShareCount) {
            $.hbrShareCount = hbrShareCount;
            return this;
        }

        /**
         * @param hbrShareCount The amount of shares to allocate to the hbr traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder hbrShareCount(Integer hbrShareCount) {
            return hbrShareCount(Output.of(hbrShareCount));
        }

        /**
         * @param hbrShareLevel The allocation level for the hbr traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder hbrShareLevel(@Nullable Output hbrShareLevel) {
            $.hbrShareLevel = hbrShareLevel;
            return this;
        }

        /**
         * @param hbrShareLevel The allocation level for the hbr traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder hbrShareLevel(String hbrShareLevel) {
            return hbrShareLevel(Output.of(hbrShareLevel));
        }

        /**
         * @param hosts A host member specification.
         * 
         * @return builder
         * 
         */
        public Builder hosts(@Nullable Output> hosts) {
            $.hosts = hosts;
            return this;
        }

        /**
         * @param hosts A host member specification.
         * 
         * @return builder
         * 
         */
        public Builder hosts(List hosts) {
            return hosts(Output.of(hosts));
        }

        /**
         * @param hosts A host member specification.
         * 
         * @return builder
         * 
         */
        public Builder hosts(DistributedVirtualSwitchHostArgs... hosts) {
            return hosts(List.of(hosts));
        }

        /**
         * @param ignoreOtherPvlanMappings Whether to ignore existing PVLAN mappings not managed by this resource. Defaults to false.
         * 
         * @return builder
         * 
         */
        public Builder ignoreOtherPvlanMappings(@Nullable Output ignoreOtherPvlanMappings) {
            $.ignoreOtherPvlanMappings = ignoreOtherPvlanMappings;
            return this;
        }

        /**
         * @param ignoreOtherPvlanMappings Whether to ignore existing PVLAN mappings not managed by this resource. Defaults to false.
         * 
         * @return builder
         * 
         */
        public Builder ignoreOtherPvlanMappings(Boolean ignoreOtherPvlanMappings) {
            return ignoreOtherPvlanMappings(Output.of(ignoreOtherPvlanMappings));
        }

        /**
         * @param ingressShapingAverageBandwidth The average ingress bandwidth in bits per second if ingress shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder ingressShapingAverageBandwidth(@Nullable Output ingressShapingAverageBandwidth) {
            $.ingressShapingAverageBandwidth = ingressShapingAverageBandwidth;
            return this;
        }

        /**
         * @param ingressShapingAverageBandwidth The average ingress bandwidth in bits per second if ingress shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder ingressShapingAverageBandwidth(Integer ingressShapingAverageBandwidth) {
            return ingressShapingAverageBandwidth(Output.of(ingressShapingAverageBandwidth));
        }

        /**
         * @param ingressShapingBurstSize The maximum ingress burst size allowed in bytes if ingress shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder ingressShapingBurstSize(@Nullable Output ingressShapingBurstSize) {
            $.ingressShapingBurstSize = ingressShapingBurstSize;
            return this;
        }

        /**
         * @param ingressShapingBurstSize The maximum ingress burst size allowed in bytes if ingress shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder ingressShapingBurstSize(Integer ingressShapingBurstSize) {
            return ingressShapingBurstSize(Output.of(ingressShapingBurstSize));
        }

        /**
         * @param ingressShapingEnabled True if the traffic shaper is enabled for ingress traffic on the port.
         * 
         * @return builder
         * 
         */
        public Builder ingressShapingEnabled(@Nullable Output ingressShapingEnabled) {
            $.ingressShapingEnabled = ingressShapingEnabled;
            return this;
        }

        /**
         * @param ingressShapingEnabled True if the traffic shaper is enabled for ingress traffic on the port.
         * 
         * @return builder
         * 
         */
        public Builder ingressShapingEnabled(Boolean ingressShapingEnabled) {
            return ingressShapingEnabled(Output.of(ingressShapingEnabled));
        }

        /**
         * @param ingressShapingPeakBandwidth The peak ingress bandwidth during bursts in bits per second if ingress traffic shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder ingressShapingPeakBandwidth(@Nullable Output ingressShapingPeakBandwidth) {
            $.ingressShapingPeakBandwidth = ingressShapingPeakBandwidth;
            return this;
        }

        /**
         * @param ingressShapingPeakBandwidth The peak ingress bandwidth during bursts in bits per second if ingress traffic shaping is enabled on the port.
         * 
         * @return builder
         * 
         */
        public Builder ingressShapingPeakBandwidth(Integer ingressShapingPeakBandwidth) {
            return ingressShapingPeakBandwidth(Output.of(ingressShapingPeakBandwidth));
        }

        /**
         * @param ipv4Address An IPv4 address to identify the switch. This is
         * mostly useful when used with the Netflow arguments.
         * 
         * @return builder
         * 
         */
        public Builder ipv4Address(@Nullable Output ipv4Address) {
            $.ipv4Address = ipv4Address;
            return this;
        }

        /**
         * @param ipv4Address An IPv4 address to identify the switch. This is
         * mostly useful when used with the Netflow arguments.
         * 
         * @return builder
         * 
         */
        public Builder ipv4Address(String ipv4Address) {
            return ipv4Address(Output.of(ipv4Address));
        }

        /**
         * @param iscsiMaximumMbit The maximum allowed usage for the iSCSI traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder iscsiMaximumMbit(@Nullable Output iscsiMaximumMbit) {
            $.iscsiMaximumMbit = iscsiMaximumMbit;
            return this;
        }

        /**
         * @param iscsiMaximumMbit The maximum allowed usage for the iSCSI traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder iscsiMaximumMbit(Integer iscsiMaximumMbit) {
            return iscsiMaximumMbit(Output.of(iscsiMaximumMbit));
        }

        /**
         * @param iscsiReservationMbit The amount of guaranteed bandwidth for the iSCSI traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder iscsiReservationMbit(@Nullable Output iscsiReservationMbit) {
            $.iscsiReservationMbit = iscsiReservationMbit;
            return this;
        }

        /**
         * @param iscsiReservationMbit The amount of guaranteed bandwidth for the iSCSI traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder iscsiReservationMbit(Integer iscsiReservationMbit) {
            return iscsiReservationMbit(Output.of(iscsiReservationMbit));
        }

        /**
         * @param iscsiShareCount The amount of shares to allocate to the iSCSI traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder iscsiShareCount(@Nullable Output iscsiShareCount) {
            $.iscsiShareCount = iscsiShareCount;
            return this;
        }

        /**
         * @param iscsiShareCount The amount of shares to allocate to the iSCSI traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder iscsiShareCount(Integer iscsiShareCount) {
            return iscsiShareCount(Output.of(iscsiShareCount));
        }

        /**
         * @param iscsiShareLevel The allocation level for the iSCSI traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder iscsiShareLevel(@Nullable Output iscsiShareLevel) {
            $.iscsiShareLevel = iscsiShareLevel;
            return this;
        }

        /**
         * @param iscsiShareLevel The allocation level for the iSCSI traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder iscsiShareLevel(String iscsiShareLevel) {
            return iscsiShareLevel(Output.of(iscsiShareLevel));
        }

        /**
         * @param lacpApiVersion The Link Aggregation Control Protocol group
         * version to use with the VDS. Possible values are `singleLag` and
         * `multipleLag`.
         * 
         * @return builder
         * 
         */
        public Builder lacpApiVersion(@Nullable Output lacpApiVersion) {
            $.lacpApiVersion = lacpApiVersion;
            return this;
        }

        /**
         * @param lacpApiVersion The Link Aggregation Control Protocol group
         * version to use with the VDS. Possible values are `singleLag` and
         * `multipleLag`.
         * 
         * @return builder
         * 
         */
        public Builder lacpApiVersion(String lacpApiVersion) {
            return lacpApiVersion(Output.of(lacpApiVersion));
        }

        /**
         * @param lacpEnabled Whether or not to enable LACP on all uplink ports.
         * 
         * @return builder
         * 
         */
        public Builder lacpEnabled(@Nullable Output lacpEnabled) {
            $.lacpEnabled = lacpEnabled;
            return this;
        }

        /**
         * @param lacpEnabled Whether or not to enable LACP on all uplink ports.
         * 
         * @return builder
         * 
         */
        public Builder lacpEnabled(Boolean lacpEnabled) {
            return lacpEnabled(Output.of(lacpEnabled));
        }

        /**
         * @param lacpMode The uplink LACP mode to use. Can be one of active or passive.
         * 
         * @return builder
         * 
         */
        public Builder lacpMode(@Nullable Output lacpMode) {
            $.lacpMode = lacpMode;
            return this;
        }

        /**
         * @param lacpMode The uplink LACP mode to use. Can be one of active or passive.
         * 
         * @return builder
         * 
         */
        public Builder lacpMode(String lacpMode) {
            return lacpMode(Output.of(lacpMode));
        }

        /**
         * @param linkDiscoveryOperation Whether to `advertise` or `listen`
         * for link discovery traffic.
         * 
         * @return builder
         * 
         */
        public Builder linkDiscoveryOperation(@Nullable Output linkDiscoveryOperation) {
            $.linkDiscoveryOperation = linkDiscoveryOperation;
            return this;
        }

        /**
         * @param linkDiscoveryOperation Whether to `advertise` or `listen`
         * for link discovery traffic.
         * 
         * @return builder
         * 
         */
        public Builder linkDiscoveryOperation(String linkDiscoveryOperation) {
            return linkDiscoveryOperation(Output.of(linkDiscoveryOperation));
        }

        /**
         * @param linkDiscoveryProtocol The discovery protocol type. Valid
         * types are `cdp` and `lldp`.
         * 
         * @return builder
         * 
         */
        public Builder linkDiscoveryProtocol(@Nullable Output linkDiscoveryProtocol) {
            $.linkDiscoveryProtocol = linkDiscoveryProtocol;
            return this;
        }

        /**
         * @param linkDiscoveryProtocol The discovery protocol type. Valid
         * types are `cdp` and `lldp`.
         * 
         * @return builder
         * 
         */
        public Builder linkDiscoveryProtocol(String linkDiscoveryProtocol) {
            return linkDiscoveryProtocol(Output.of(linkDiscoveryProtocol));
        }

        /**
         * @param managementMaximumMbit The maximum allowed usage for the management traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder managementMaximumMbit(@Nullable Output managementMaximumMbit) {
            $.managementMaximumMbit = managementMaximumMbit;
            return this;
        }

        /**
         * @param managementMaximumMbit The maximum allowed usage for the management traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder managementMaximumMbit(Integer managementMaximumMbit) {
            return managementMaximumMbit(Output.of(managementMaximumMbit));
        }

        /**
         * @param managementReservationMbit The amount of guaranteed bandwidth for the management traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder managementReservationMbit(@Nullable Output managementReservationMbit) {
            $.managementReservationMbit = managementReservationMbit;
            return this;
        }

        /**
         * @param managementReservationMbit The amount of guaranteed bandwidth for the management traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder managementReservationMbit(Integer managementReservationMbit) {
            return managementReservationMbit(Output.of(managementReservationMbit));
        }

        /**
         * @param managementShareCount The amount of shares to allocate to the management traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder managementShareCount(@Nullable Output managementShareCount) {
            $.managementShareCount = managementShareCount;
            return this;
        }

        /**
         * @param managementShareCount The amount of shares to allocate to the management traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder managementShareCount(Integer managementShareCount) {
            return managementShareCount(Output.of(managementShareCount));
        }

        /**
         * @param managementShareLevel The allocation level for the management traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder managementShareLevel(@Nullable Output managementShareLevel) {
            $.managementShareLevel = managementShareLevel;
            return this;
        }

        /**
         * @param managementShareLevel The allocation level for the management traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder managementShareLevel(String managementShareLevel) {
            return managementShareLevel(Output.of(managementShareLevel));
        }

        /**
         * @param maxMtu The maximum transmission unit (MTU) for the VDS.
         * 
         * @return builder
         * 
         */
        public Builder maxMtu(@Nullable Output maxMtu) {
            $.maxMtu = maxMtu;
            return this;
        }

        /**
         * @param maxMtu The maximum transmission unit (MTU) for the VDS.
         * 
         * @return builder
         * 
         */
        public Builder maxMtu(Integer maxMtu) {
            return maxMtu(Output.of(maxMtu));
        }

        /**
         * @param multicastFilteringMode The multicast filtering mode to use
         * with the VDS. Can be one of `legacyFiltering` or `snooping`.
         * 
         * @return builder
         * 
         */
        public Builder multicastFilteringMode(@Nullable Output multicastFilteringMode) {
            $.multicastFilteringMode = multicastFilteringMode;
            return this;
        }

        /**
         * @param multicastFilteringMode The multicast filtering mode to use
         * with the VDS. Can be one of `legacyFiltering` or `snooping`.
         * 
         * @return builder
         * 
         */
        public Builder multicastFilteringMode(String multicastFilteringMode) {
            return multicastFilteringMode(Output.of(multicastFilteringMode));
        }

        /**
         * @param name The name of the VDS.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name of the VDS.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param netflowActiveFlowTimeout The number of seconds after which active flows are forced to be exported to the collector.
         * 
         * @return builder
         * 
         */
        public Builder netflowActiveFlowTimeout(@Nullable Output netflowActiveFlowTimeout) {
            $.netflowActiveFlowTimeout = netflowActiveFlowTimeout;
            return this;
        }

        /**
         * @param netflowActiveFlowTimeout The number of seconds after which active flows are forced to be exported to the collector.
         * 
         * @return builder
         * 
         */
        public Builder netflowActiveFlowTimeout(Integer netflowActiveFlowTimeout) {
            return netflowActiveFlowTimeout(Output.of(netflowActiveFlowTimeout));
        }

        /**
         * @param netflowCollectorIpAddress IP address for the netflow collector, using IPv4 or IPv6.
         * 
         * @return builder
         * 
         */
        public Builder netflowCollectorIpAddress(@Nullable Output netflowCollectorIpAddress) {
            $.netflowCollectorIpAddress = netflowCollectorIpAddress;
            return this;
        }

        /**
         * @param netflowCollectorIpAddress IP address for the netflow collector, using IPv4 or IPv6.
         * 
         * @return builder
         * 
         */
        public Builder netflowCollectorIpAddress(String netflowCollectorIpAddress) {
            return netflowCollectorIpAddress(Output.of(netflowCollectorIpAddress));
        }

        /**
         * @param netflowCollectorPort The port for the netflow collector.
         * 
         * @return builder
         * 
         */
        public Builder netflowCollectorPort(@Nullable Output netflowCollectorPort) {
            $.netflowCollectorPort = netflowCollectorPort;
            return this;
        }

        /**
         * @param netflowCollectorPort The port for the netflow collector.
         * 
         * @return builder
         * 
         */
        public Builder netflowCollectorPort(Integer netflowCollectorPort) {
            return netflowCollectorPort(Output.of(netflowCollectorPort));
        }

        /**
         * @param netflowEnabled Indicates whether to enable netflow on all ports.
         * 
         * @return builder
         * 
         */
        public Builder netflowEnabled(@Nullable Output netflowEnabled) {
            $.netflowEnabled = netflowEnabled;
            return this;
        }

        /**
         * @param netflowEnabled Indicates whether to enable netflow on all ports.
         * 
         * @return builder
         * 
         */
        public Builder netflowEnabled(Boolean netflowEnabled) {
            return netflowEnabled(Output.of(netflowEnabled));
        }

        /**
         * @param netflowIdleFlowTimeout The number of seconds after which idle flows are forced to be exported to the collector.
         * 
         * @return builder
         * 
         */
        public Builder netflowIdleFlowTimeout(@Nullable Output netflowIdleFlowTimeout) {
            $.netflowIdleFlowTimeout = netflowIdleFlowTimeout;
            return this;
        }

        /**
         * @param netflowIdleFlowTimeout The number of seconds after which idle flows are forced to be exported to the collector.
         * 
         * @return builder
         * 
         */
        public Builder netflowIdleFlowTimeout(Integer netflowIdleFlowTimeout) {
            return netflowIdleFlowTimeout(Output.of(netflowIdleFlowTimeout));
        }

        /**
         * @param netflowInternalFlowsOnly Whether to limit analysis to traffic that has both source and destination served by the same host.
         * 
         * @return builder
         * 
         */
        public Builder netflowInternalFlowsOnly(@Nullable Output netflowInternalFlowsOnly) {
            $.netflowInternalFlowsOnly = netflowInternalFlowsOnly;
            return this;
        }

        /**
         * @param netflowInternalFlowsOnly Whether to limit analysis to traffic that has both source and destination served by the same host.
         * 
         * @return builder
         * 
         */
        public Builder netflowInternalFlowsOnly(Boolean netflowInternalFlowsOnly) {
            return netflowInternalFlowsOnly(Output.of(netflowInternalFlowsOnly));
        }

        /**
         * @param netflowObservationDomainId The observation Domain ID for the netflow collector.
         * 
         * @return builder
         * 
         */
        public Builder netflowObservationDomainId(@Nullable Output netflowObservationDomainId) {
            $.netflowObservationDomainId = netflowObservationDomainId;
            return this;
        }

        /**
         * @param netflowObservationDomainId The observation Domain ID for the netflow collector.
         * 
         * @return builder
         * 
         */
        public Builder netflowObservationDomainId(Integer netflowObservationDomainId) {
            return netflowObservationDomainId(Output.of(netflowObservationDomainId));
        }

        /**
         * @param netflowSamplingRate The ratio of total number of packets to the number of packets analyzed. Set to 0 to disable sampling, meaning that all
         * packets are analyzed.
         * 
         * @return builder
         * 
         */
        public Builder netflowSamplingRate(@Nullable Output netflowSamplingRate) {
            $.netflowSamplingRate = netflowSamplingRate;
            return this;
        }

        /**
         * @param netflowSamplingRate The ratio of total number of packets to the number of packets analyzed. Set to 0 to disable sampling, meaning that all
         * packets are analyzed.
         * 
         * @return builder
         * 
         */
        public Builder netflowSamplingRate(Integer netflowSamplingRate) {
            return netflowSamplingRate(Output.of(netflowSamplingRate));
        }

        /**
         * @param networkResourceControlEnabled Whether or not to enable network resource control, enabling advanced traffic shaping and resource control features.
         * 
         * @return builder
         * 
         */
        public Builder networkResourceControlEnabled(@Nullable Output networkResourceControlEnabled) {
            $.networkResourceControlEnabled = networkResourceControlEnabled;
            return this;
        }

        /**
         * @param networkResourceControlEnabled Whether or not to enable network resource control, enabling advanced traffic shaping and resource control features.
         * 
         * @return builder
         * 
         */
        public Builder networkResourceControlEnabled(Boolean networkResourceControlEnabled) {
            return networkResourceControlEnabled(Output.of(networkResourceControlEnabled));
        }

        /**
         * @param networkResourceControlVersion The network I/O control version to use. Can be one of version2 or version3.
         * 
         * @return builder
         * 
         */
        public Builder networkResourceControlVersion(@Nullable Output networkResourceControlVersion) {
            $.networkResourceControlVersion = networkResourceControlVersion;
            return this;
        }

        /**
         * @param networkResourceControlVersion The network I/O control version to use. Can be one of version2 or version3.
         * 
         * @return builder
         * 
         */
        public Builder networkResourceControlVersion(String networkResourceControlVersion) {
            return networkResourceControlVersion(Output.of(networkResourceControlVersion));
        }

        /**
         * @param nfsMaximumMbit The maximum allowed usage for the nfs traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder nfsMaximumMbit(@Nullable Output nfsMaximumMbit) {
            $.nfsMaximumMbit = nfsMaximumMbit;
            return this;
        }

        /**
         * @param nfsMaximumMbit The maximum allowed usage for the nfs traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder nfsMaximumMbit(Integer nfsMaximumMbit) {
            return nfsMaximumMbit(Output.of(nfsMaximumMbit));
        }

        /**
         * @param nfsReservationMbit The amount of guaranteed bandwidth for the nfs traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder nfsReservationMbit(@Nullable Output nfsReservationMbit) {
            $.nfsReservationMbit = nfsReservationMbit;
            return this;
        }

        /**
         * @param nfsReservationMbit The amount of guaranteed bandwidth for the nfs traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder nfsReservationMbit(Integer nfsReservationMbit) {
            return nfsReservationMbit(Output.of(nfsReservationMbit));
        }

        /**
         * @param nfsShareCount The amount of shares to allocate to the nfs traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder nfsShareCount(@Nullable Output nfsShareCount) {
            $.nfsShareCount = nfsShareCount;
            return this;
        }

        /**
         * @param nfsShareCount The amount of shares to allocate to the nfs traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder nfsShareCount(Integer nfsShareCount) {
            return nfsShareCount(Output.of(nfsShareCount));
        }

        /**
         * @param nfsShareLevel The allocation level for the nfs traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder nfsShareLevel(@Nullable Output nfsShareLevel) {
            $.nfsShareLevel = nfsShareLevel;
            return this;
        }

        /**
         * @param nfsShareLevel The allocation level for the nfs traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder nfsShareLevel(String nfsShareLevel) {
            return nfsShareLevel(Output.of(nfsShareLevel));
        }

        /**
         * @param notifySwitches If true, the teaming policy will notify the broadcast network of a NIC failover, triggering cache updates.
         * 
         * @return builder
         * 
         */
        public Builder notifySwitches(@Nullable Output notifySwitches) {
            $.notifySwitches = notifySwitches;
            return this;
        }

        /**
         * @param notifySwitches If true, the teaming policy will notify the broadcast network of a NIC failover, triggering cache updates.
         * 
         * @return builder
         * 
         */
        public Builder notifySwitches(Boolean notifySwitches) {
            return notifySwitches(Output.of(notifySwitches));
        }

        /**
         * @param portPrivateSecondaryVlanId The secondary VLAN ID for this port.
         * 
         * @return builder
         * 
         */
        public Builder portPrivateSecondaryVlanId(@Nullable Output portPrivateSecondaryVlanId) {
            $.portPrivateSecondaryVlanId = portPrivateSecondaryVlanId;
            return this;
        }

        /**
         * @param portPrivateSecondaryVlanId The secondary VLAN ID for this port.
         * 
         * @return builder
         * 
         */
        public Builder portPrivateSecondaryVlanId(Integer portPrivateSecondaryVlanId) {
            return portPrivateSecondaryVlanId(Output.of(portPrivateSecondaryVlanId));
        }

        /**
         * @param pvlanMappings A private VLAN (PVLAN) mapping.
         * 
         * @return builder
         * 
         */
        public Builder pvlanMappings(@Nullable Output> pvlanMappings) {
            $.pvlanMappings = pvlanMappings;
            return this;
        }

        /**
         * @param pvlanMappings A private VLAN (PVLAN) mapping.
         * 
         * @return builder
         * 
         */
        public Builder pvlanMappings(List pvlanMappings) {
            return pvlanMappings(Output.of(pvlanMappings));
        }

        /**
         * @param pvlanMappings A private VLAN (PVLAN) mapping.
         * 
         * @return builder
         * 
         */
        public Builder pvlanMappings(DistributedVirtualSwitchPvlanMappingArgs... pvlanMappings) {
            return pvlanMappings(List.of(pvlanMappings));
        }

        /**
         * @param standbyUplinks List of standby uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
         * 
         * @return builder
         * 
         */
        public Builder standbyUplinks(@Nullable Output> standbyUplinks) {
            $.standbyUplinks = standbyUplinks;
            return this;
        }

        /**
         * @param standbyUplinks List of standby uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
         * 
         * @return builder
         * 
         */
        public Builder standbyUplinks(List standbyUplinks) {
            return standbyUplinks(Output.of(standbyUplinks));
        }

        /**
         * @param standbyUplinks List of standby uplinks used for load balancing, matching the names of the uplinks assigned in the DVS.
         * 
         * @return builder
         * 
         */
        public Builder standbyUplinks(String... standbyUplinks) {
            return standbyUplinks(List.of(standbyUplinks));
        }

        /**
         * @param tags The IDs of any tags to attach to this resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags The IDs of any tags to attach to this resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(List tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param tags The IDs of any tags to attach to this resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(String... tags) {
            return tags(List.of(tags));
        }

        /**
         * @param teamingPolicy The network adapter teaming policy. Can be one of loadbalance_ip, loadbalance_srcmac, loadbalance_srcid,
         * failover_explicit, or loadbalance_loadbased.
         * 
         * @return builder
         * 
         */
        public Builder teamingPolicy(@Nullable Output teamingPolicy) {
            $.teamingPolicy = teamingPolicy;
            return this;
        }

        /**
         * @param teamingPolicy The network adapter teaming policy. Can be one of loadbalance_ip, loadbalance_srcmac, loadbalance_srcid,
         * failover_explicit, or loadbalance_loadbased.
         * 
         * @return builder
         * 
         */
        public Builder teamingPolicy(String teamingPolicy) {
            return teamingPolicy(Output.of(teamingPolicy));
        }

        /**
         * @param txUplink 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 builder
         * 
         */
        public Builder txUplink(@Nullable Output txUplink) {
            $.txUplink = txUplink;
            return this;
        }

        /**
         * @param txUplink 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 builder
         * 
         */
        public Builder txUplink(Boolean txUplink) {
            return txUplink(Output.of(txUplink));
        }

        /**
         * @param uplinks A list of uplink ports. The contents of this list control both the uplink count and names of the uplinks on the DVS
         * across hosts.
         * 
         * @return builder
         * 
         */
        public Builder uplinks(@Nullable Output> uplinks) {
            $.uplinks = uplinks;
            return this;
        }

        /**
         * @param uplinks A list of uplink ports. The contents of this list control both the uplink count and names of the uplinks on the DVS
         * across hosts.
         * 
         * @return builder
         * 
         */
        public Builder uplinks(List uplinks) {
            return uplinks(Output.of(uplinks));
        }

        /**
         * @param uplinks A list of uplink ports. The contents of this list control both the uplink count and names of the uplinks on the DVS
         * across hosts.
         * 
         * @return builder
         * 
         */
        public Builder uplinks(String... uplinks) {
            return uplinks(List.of(uplinks));
        }

        /**
         * @param vdpMaximumMbit The maximum allowed usage for the vdp traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vdpMaximumMbit(@Nullable Output vdpMaximumMbit) {
            $.vdpMaximumMbit = vdpMaximumMbit;
            return this;
        }

        /**
         * @param vdpMaximumMbit The maximum allowed usage for the vdp traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vdpMaximumMbit(Integer vdpMaximumMbit) {
            return vdpMaximumMbit(Output.of(vdpMaximumMbit));
        }

        /**
         * @param vdpReservationMbit The amount of guaranteed bandwidth for the vdp traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vdpReservationMbit(@Nullable Output vdpReservationMbit) {
            $.vdpReservationMbit = vdpReservationMbit;
            return this;
        }

        /**
         * @param vdpReservationMbit The amount of guaranteed bandwidth for the vdp traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vdpReservationMbit(Integer vdpReservationMbit) {
            return vdpReservationMbit(Output.of(vdpReservationMbit));
        }

        /**
         * @param vdpShareCount The amount of shares to allocate to the vdp traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder vdpShareCount(@Nullable Output vdpShareCount) {
            $.vdpShareCount = vdpShareCount;
            return this;
        }

        /**
         * @param vdpShareCount The amount of shares to allocate to the vdp traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder vdpShareCount(Integer vdpShareCount) {
            return vdpShareCount(Output.of(vdpShareCount));
        }

        /**
         * @param vdpShareLevel The allocation level for the vdp traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder vdpShareLevel(@Nullable Output vdpShareLevel) {
            $.vdpShareLevel = vdpShareLevel;
            return this;
        }

        /**
         * @param vdpShareLevel The allocation level for the vdp traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder vdpShareLevel(String vdpShareLevel) {
            return vdpShareLevel(Output.of(vdpShareLevel));
        }

        /**
         * @param version The version of the VDS. BY default, a VDS is created
         * at the latest version supported by the vSphere version if not specified.
         * A VDS can be upgraded to a newer version, but can not be downgraded.
         * 
         * @return builder
         * 
         */
        public Builder version(@Nullable Output version) {
            $.version = version;
            return this;
        }

        /**
         * @param version The version of the VDS. BY default, a VDS is created
         * at the latest version supported by the vSphere version if not specified.
         * A VDS can be upgraded to a newer version, but can not be downgraded.
         * 
         * @return builder
         * 
         */
        public Builder version(String version) {
            return version(Output.of(version));
        }

        /**
         * @param virtualmachineMaximumMbit The maximum allowed usage for the virtualMachine traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder virtualmachineMaximumMbit(@Nullable Output virtualmachineMaximumMbit) {
            $.virtualmachineMaximumMbit = virtualmachineMaximumMbit;
            return this;
        }

        /**
         * @param virtualmachineMaximumMbit The maximum allowed usage for the virtualMachine traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder virtualmachineMaximumMbit(Integer virtualmachineMaximumMbit) {
            return virtualmachineMaximumMbit(Output.of(virtualmachineMaximumMbit));
        }

        /**
         * @param virtualmachineReservationMbit The amount of guaranteed bandwidth for the virtualMachine traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder virtualmachineReservationMbit(@Nullable Output virtualmachineReservationMbit) {
            $.virtualmachineReservationMbit = virtualmachineReservationMbit;
            return this;
        }

        /**
         * @param virtualmachineReservationMbit The amount of guaranteed bandwidth for the virtualMachine traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder virtualmachineReservationMbit(Integer virtualmachineReservationMbit) {
            return virtualmachineReservationMbit(Output.of(virtualmachineReservationMbit));
        }

        /**
         * @param virtualmachineShareCount The amount of shares to allocate to the virtualMachine traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder virtualmachineShareCount(@Nullable Output virtualmachineShareCount) {
            $.virtualmachineShareCount = virtualmachineShareCount;
            return this;
        }

        /**
         * @param virtualmachineShareCount The amount of shares to allocate to the virtualMachine traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder virtualmachineShareCount(Integer virtualmachineShareCount) {
            return virtualmachineShareCount(Output.of(virtualmachineShareCount));
        }

        /**
         * @param virtualmachineShareLevel The allocation level for the virtualMachine traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder virtualmachineShareLevel(@Nullable Output virtualmachineShareLevel) {
            $.virtualmachineShareLevel = virtualmachineShareLevel;
            return this;
        }

        /**
         * @param virtualmachineShareLevel The allocation level for the virtualMachine traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder virtualmachineShareLevel(String virtualmachineShareLevel) {
            return virtualmachineShareLevel(Output.of(virtualmachineShareLevel));
        }

        /**
         * @param vlanId The VLAN ID for single VLAN mode. 0 denotes no VLAN.
         * 
         * @return builder
         * 
         */
        public Builder vlanId(@Nullable Output vlanId) {
            $.vlanId = vlanId;
            return this;
        }

        /**
         * @param vlanId The VLAN ID for single VLAN mode. 0 denotes no VLAN.
         * 
         * @return builder
         * 
         */
        public Builder vlanId(Integer vlanId) {
            return vlanId(Output.of(vlanId));
        }

        /**
         * @param vlanRanges The VLAN ID for single VLAN mode. 0 denotes no VLAN.
         * 
         * @return builder
         * 
         */
        public Builder vlanRanges(@Nullable Output> vlanRanges) {
            $.vlanRanges = vlanRanges;
            return this;
        }

        /**
         * @param vlanRanges The VLAN ID for single VLAN mode. 0 denotes no VLAN.
         * 
         * @return builder
         * 
         */
        public Builder vlanRanges(List vlanRanges) {
            return vlanRanges(Output.of(vlanRanges));
        }

        /**
         * @param vlanRanges The VLAN ID for single VLAN mode. 0 denotes no VLAN.
         * 
         * @return builder
         * 
         */
        public Builder vlanRanges(DistributedVirtualSwitchVlanRangeArgs... vlanRanges) {
            return vlanRanges(List.of(vlanRanges));
        }

        /**
         * @param vmotionMaximumMbit The maximum allowed usage for the vmotion traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vmotionMaximumMbit(@Nullable Output vmotionMaximumMbit) {
            $.vmotionMaximumMbit = vmotionMaximumMbit;
            return this;
        }

        /**
         * @param vmotionMaximumMbit The maximum allowed usage for the vmotion traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vmotionMaximumMbit(Integer vmotionMaximumMbit) {
            return vmotionMaximumMbit(Output.of(vmotionMaximumMbit));
        }

        /**
         * @param vmotionReservationMbit The amount of guaranteed bandwidth for the vmotion traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vmotionReservationMbit(@Nullable Output vmotionReservationMbit) {
            $.vmotionReservationMbit = vmotionReservationMbit;
            return this;
        }

        /**
         * @param vmotionReservationMbit The amount of guaranteed bandwidth for the vmotion traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vmotionReservationMbit(Integer vmotionReservationMbit) {
            return vmotionReservationMbit(Output.of(vmotionReservationMbit));
        }

        /**
         * @param vmotionShareCount The amount of shares to allocate to the vmotion traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder vmotionShareCount(@Nullable Output vmotionShareCount) {
            $.vmotionShareCount = vmotionShareCount;
            return this;
        }

        /**
         * @param vmotionShareCount The amount of shares to allocate to the vmotion traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder vmotionShareCount(Integer vmotionShareCount) {
            return vmotionShareCount(Output.of(vmotionShareCount));
        }

        /**
         * @param vmotionShareLevel The allocation level for the vmotion traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder vmotionShareLevel(@Nullable Output vmotionShareLevel) {
            $.vmotionShareLevel = vmotionShareLevel;
            return this;
        }

        /**
         * @param vmotionShareLevel The allocation level for the vmotion traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder vmotionShareLevel(String vmotionShareLevel) {
            return vmotionShareLevel(Output.of(vmotionShareLevel));
        }

        /**
         * @param vsanMaximumMbit The maximum allowed usage for the vsan traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vsanMaximumMbit(@Nullable Output vsanMaximumMbit) {
            $.vsanMaximumMbit = vsanMaximumMbit;
            return this;
        }

        /**
         * @param vsanMaximumMbit The maximum allowed usage for the vsan traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vsanMaximumMbit(Integer vsanMaximumMbit) {
            return vsanMaximumMbit(Output.of(vsanMaximumMbit));
        }

        /**
         * @param vsanReservationMbit The amount of guaranteed bandwidth for the vsan traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vsanReservationMbit(@Nullable Output vsanReservationMbit) {
            $.vsanReservationMbit = vsanReservationMbit;
            return this;
        }

        /**
         * @param vsanReservationMbit The amount of guaranteed bandwidth for the vsan traffic class, in Mbits/sec.
         * 
         * @return builder
         * 
         */
        public Builder vsanReservationMbit(Integer vsanReservationMbit) {
            return vsanReservationMbit(Output.of(vsanReservationMbit));
        }

        /**
         * @param vsanShareCount The amount of shares to allocate to the vsan traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder vsanShareCount(@Nullable Output vsanShareCount) {
            $.vsanShareCount = vsanShareCount;
            return this;
        }

        /**
         * @param vsanShareCount The amount of shares to allocate to the vsan traffic class for a custom share level.
         * 
         * @return builder
         * 
         */
        public Builder vsanShareCount(Integer vsanShareCount) {
            return vsanShareCount(Output.of(vsanShareCount));
        }

        /**
         * @param vsanShareLevel The allocation level for the vsan traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder vsanShareLevel(@Nullable Output vsanShareLevel) {
            $.vsanShareLevel = vsanShareLevel;
            return this;
        }

        /**
         * @param vsanShareLevel The allocation level for the vsan traffic class. Can be one of high, low, normal, or custom.
         * 
         * @return builder
         * 
         */
        public Builder vsanShareLevel(String vsanShareLevel) {
            return vsanShareLevel(Output.of(vsanShareLevel));
        }

        public DistributedVirtualSwitchState build() {
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy