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

com.pulumi.azure.network.inputs.VirtualNetworkGatewayState Maven / Gradle / Ivy

Go to download

A Pulumi package for creating and managing Microsoft Azure cloud resources, based on the Terraform azurerm provider. We recommend using the [Azure Native provider](https://github.com/pulumi/pulumi-azure-native) to provision Azure infrastructure. Azure Native provides complete coverage of Azure resources and same-day access to new resources and resource updates.

There is a newer version: 6.10.0-alpha.1731737215
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.azure.network.inputs;

import com.pulumi.azure.network.inputs.VirtualNetworkGatewayBgpSettingsArgs;
import com.pulumi.azure.network.inputs.VirtualNetworkGatewayCustomRouteArgs;
import com.pulumi.azure.network.inputs.VirtualNetworkGatewayIpConfigurationArgs;
import com.pulumi.azure.network.inputs.VirtualNetworkGatewayPolicyGroupArgs;
import com.pulumi.azure.network.inputs.VirtualNetworkGatewayVpnClientConfigurationArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
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 VirtualNetworkGatewayState extends com.pulumi.resources.ResourceArgs {

    public static final VirtualNetworkGatewayState Empty = new VirtualNetworkGatewayState();

    /**
     * If `true`, an active-active Virtual Network Gateway will be created. An active-active gateway requires a `HighPerformance` or an `UltraPerformance` SKU. If `false`, an active-standby gateway will be created. Defaults to `false`.
     * 
     */
    @Import(name="activeActive")
    private @Nullable Output activeActive;

    /**
     * @return If `true`, an active-active Virtual Network Gateway will be created. An active-active gateway requires a `HighPerformance` or an `UltraPerformance` SKU. If `false`, an active-standby gateway will be created. Defaults to `false`.
     * 
     */
    public Optional> activeActive() {
        return Optional.ofNullable(this.activeActive);
    }

    /**
     * Is BGP Route Translation for NAT enabled? Defaults to `false`.
     * 
     */
    @Import(name="bgpRouteTranslationForNatEnabled")
    private @Nullable Output bgpRouteTranslationForNatEnabled;

    /**
     * @return Is BGP Route Translation for NAT enabled? Defaults to `false`.
     * 
     */
    public Optional> bgpRouteTranslationForNatEnabled() {
        return Optional.ofNullable(this.bgpRouteTranslationForNatEnabled);
    }

    /**
     * A `bgp_settings` block which is documented below. In this block the BGP specific settings can be defined.
     * 
     */
    @Import(name="bgpSettings")
    private @Nullable Output bgpSettings;

    /**
     * @return A `bgp_settings` block which is documented below. In this block the BGP specific settings can be defined.
     * 
     */
    public Optional> bgpSettings() {
        return Optional.ofNullable(this.bgpSettings);
    }

    /**
     * A `custom_route` block as defined below. Specifies a custom routes address space for a virtual network gateway and a VpnClient.
     * 
     */
    @Import(name="customRoute")
    private @Nullable Output customRoute;

    /**
     * @return A `custom_route` block as defined below. Specifies a custom routes address space for a virtual network gateway and a VpnClient.
     * 
     */
    public Optional> customRoute() {
        return Optional.ofNullable(this.customRoute);
    }

    /**
     * The ID of the local network gateway through which outbound Internet traffic from the virtual network in which the gateway is created will be routed (*forced tunnelling*). Refer to the [Azure documentation on forced tunnelling](https://docs.microsoft.com/azure/vpn-gateway/vpn-gateway-forced-tunneling-rm). If not specified, forced tunnelling is disabled.
     * 
     */
    @Import(name="defaultLocalNetworkGatewayId")
    private @Nullable Output defaultLocalNetworkGatewayId;

    /**
     * @return The ID of the local network gateway through which outbound Internet traffic from the virtual network in which the gateway is created will be routed (*forced tunnelling*). Refer to the [Azure documentation on forced tunnelling](https://docs.microsoft.com/azure/vpn-gateway/vpn-gateway-forced-tunneling-rm). If not specified, forced tunnelling is disabled.
     * 
     */
    public Optional> defaultLocalNetworkGatewayId() {
        return Optional.ofNullable(this.defaultLocalNetworkGatewayId);
    }

    /**
     * Is DNS forwarding enabled?
     * 
     */
    @Import(name="dnsForwardingEnabled")
    private @Nullable Output dnsForwardingEnabled;

    /**
     * @return Is DNS forwarding enabled?
     * 
     */
    public Optional> dnsForwardingEnabled() {
        return Optional.ofNullable(this.dnsForwardingEnabled);
    }

    /**
     * Specifies the Edge Zone within the Azure Region where this Virtual Network Gateway should exist. Changing this forces a new Virtual Network Gateway to be created.
     * 
     */
    @Import(name="edgeZone")
    private @Nullable Output edgeZone;

    /**
     * @return Specifies the Edge Zone within the Azure Region where this Virtual Network Gateway should exist. Changing this forces a new Virtual Network Gateway to be created.
     * 
     */
    public Optional> edgeZone() {
        return Optional.ofNullable(this.edgeZone);
    }

    /**
     * If `true`, BGP (Border Gateway Protocol) will be enabled for this Virtual Network Gateway. Defaults to `false`.
     * 
     */
    @Import(name="enableBgp")
    private @Nullable Output enableBgp;

    /**
     * @return If `true`, BGP (Border Gateway Protocol) will be enabled for this Virtual Network Gateway. Defaults to `false`.
     * 
     */
    public Optional> enableBgp() {
        return Optional.ofNullable(this.enableBgp);
    }

    /**
     * The Generation of the Virtual Network gateway. Possible values include `Generation1`, `Generation2` or `None`. Changing this forces a new resource to be created.
     * 
     * > **NOTE:** The available values depend on the `type` and `sku` arguments - where `Generation2` is only value for a `sku` larger than `VpnGw2` or `VpnGw2AZ`.
     * 
     */
    @Import(name="generation")
    private @Nullable Output generation;

    /**
     * @return The Generation of the Virtual Network gateway. Possible values include `Generation1`, `Generation2` or `None`. Changing this forces a new resource to be created.
     * 
     * > **NOTE:** The available values depend on the `type` and `sku` arguments - where `Generation2` is only value for a `sku` larger than `VpnGw2` or `VpnGw2AZ`.
     * 
     */
    public Optional> generation() {
        return Optional.ofNullable(this.generation);
    }

    /**
     * One or more (up to 3) `ip_configuration` blocks documented below.
     * An active-standby gateway requires exactly one `ip_configuration` block,
     * an active-active gateway requires exactly two `ip_configuration` blocks whereas
     * an active-active zone redundant gateway with P2S configuration requires exactly three `ip_configuration` blocks.
     * 
     */
    @Import(name="ipConfigurations")
    private @Nullable Output> ipConfigurations;

    /**
     * @return One or more (up to 3) `ip_configuration` blocks documented below.
     * An active-standby gateway requires exactly one `ip_configuration` block,
     * an active-active gateway requires exactly two `ip_configuration` blocks whereas
     * an active-active zone redundant gateway with P2S configuration requires exactly three `ip_configuration` blocks.
     * 
     */
    public Optional>> ipConfigurations() {
        return Optional.ofNullable(this.ipConfigurations);
    }

    /**
     * Is IP Sec Replay Protection enabled? Defaults to `true`.
     * 
     */
    @Import(name="ipSecReplayProtectionEnabled")
    private @Nullable Output ipSecReplayProtectionEnabled;

    /**
     * @return Is IP Sec Replay Protection enabled? Defaults to `true`.
     * 
     */
    public Optional> ipSecReplayProtectionEnabled() {
        return Optional.ofNullable(this.ipSecReplayProtectionEnabled);
    }

    /**
     * The location/region where the Virtual Network Gateway is located. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return The location/region where the Virtual Network Gateway is located. Changing this forces a new resource to be created.
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * The name of the Virtual Network Gateway. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return The name of the Virtual Network Gateway. Changing this forces a new resource to be created.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * One or more `policy_group` blocks as defined below.
     * 
     */
    @Import(name="policyGroups")
    private @Nullable Output> policyGroups;

    /**
     * @return One or more `policy_group` blocks as defined below.
     * 
     */
    public Optional>> policyGroups() {
        return Optional.ofNullable(this.policyGroups);
    }

    /**
     * Should private IP be enabled on this gateway for connections? Changing this forces a new resource to be created.
     * 
     */
    @Import(name="privateIpAddressEnabled")
    private @Nullable Output privateIpAddressEnabled;

    /**
     * @return Should private IP be enabled on this gateway for connections? Changing this forces a new resource to be created.
     * 
     */
    public Optional> privateIpAddressEnabled() {
        return Optional.ofNullable(this.privateIpAddressEnabled);
    }

    /**
     * Is remote vnet traffic that is used to configure this gateway to accept traffic from other Azure Virtual Networks enabled? Defaults to `false`.
     * 
     */
    @Import(name="remoteVnetTrafficEnabled")
    private @Nullable Output remoteVnetTrafficEnabled;

    /**
     * @return Is remote vnet traffic that is used to configure this gateway to accept traffic from other Azure Virtual Networks enabled? Defaults to `false`.
     * 
     */
    public Optional> remoteVnetTrafficEnabled() {
        return Optional.ofNullable(this.remoteVnetTrafficEnabled);
    }

    /**
     * The name of the resource group in which to create the Virtual Network Gateway. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="resourceGroupName")
    private @Nullable Output resourceGroupName;

    /**
     * @return The name of the resource group in which to create the Virtual Network Gateway. Changing this forces a new resource to be created.
     * 
     */
    public Optional> resourceGroupName() {
        return Optional.ofNullable(this.resourceGroupName);
    }

    /**
     * Configuration of the size and capacity of the virtual network gateway. Valid options are `Basic`, `Standard`, `HighPerformance`, `UltraPerformance`, `ErGw1AZ`, `ErGw2AZ`, `ErGw3AZ`, `VpnGw1`, `VpnGw2`, `VpnGw3`, `VpnGw4`,`VpnGw5`, `VpnGw1AZ`, `VpnGw2AZ`, `VpnGw3AZ`,`VpnGw4AZ` and `VpnGw5AZ` and depend on the `type`, `vpn_type` and `generation` arguments. A `PolicyBased` gateway only supports the `Basic` SKU. Further, the `UltraPerformance` SKU is only supported by an `ExpressRoute` gateway.
     * 
     * > **NOTE:** To build a UltraPerformance ExpressRoute Virtual Network gateway, the associated Public IP needs to be SKU "Basic" not "Standard"
     * 
     * > **NOTE:** Not all SKUs (e.g. `ErGw1AZ`) are available in all regions. If you see `StatusCode=400 -- Original Error: Code="InvalidGatewaySkuSpecifiedForGatewayDeploymentType"` please try another region.
     * 
     */
    @Import(name="sku")
    private @Nullable Output sku;

    /**
     * @return Configuration of the size and capacity of the virtual network gateway. Valid options are `Basic`, `Standard`, `HighPerformance`, `UltraPerformance`, `ErGw1AZ`, `ErGw2AZ`, `ErGw3AZ`, `VpnGw1`, `VpnGw2`, `VpnGw3`, `VpnGw4`,`VpnGw5`, `VpnGw1AZ`, `VpnGw2AZ`, `VpnGw3AZ`,`VpnGw4AZ` and `VpnGw5AZ` and depend on the `type`, `vpn_type` and `generation` arguments. A `PolicyBased` gateway only supports the `Basic` SKU. Further, the `UltraPerformance` SKU is only supported by an `ExpressRoute` gateway.
     * 
     * > **NOTE:** To build a UltraPerformance ExpressRoute Virtual Network gateway, the associated Public IP needs to be SKU "Basic" not "Standard"
     * 
     * > **NOTE:** Not all SKUs (e.g. `ErGw1AZ`) are available in all regions. If you see `StatusCode=400 -- Original Error: Code="InvalidGatewaySkuSpecifiedForGatewayDeploymentType"` please try another region.
     * 
     */
    public Optional> sku() {
        return Optional.ofNullable(this.sku);
    }

    /**
     * A mapping of tags to assign to the resource.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * The type of the Virtual Network Gateway. Valid options are `Vpn` or `ExpressRoute`. Changing the type forces a new resource to be created.
     * 
     */
    @Import(name="type")
    private @Nullable Output type;

    /**
     * @return The type of the Virtual Network Gateway. Valid options are `Vpn` or `ExpressRoute`. Changing the type forces a new resource to be created.
     * 
     */
    public Optional> type() {
        return Optional.ofNullable(this.type);
    }

    /**
     * Is remote vnet traffic that is used to configure this gateway to accept traffic from remote Virtual WAN networks enabled? Defaults to `false`.
     * 
     */
    @Import(name="virtualWanTrafficEnabled")
    private @Nullable Output virtualWanTrafficEnabled;

    /**
     * @return Is remote vnet traffic that is used to configure this gateway to accept traffic from remote Virtual WAN networks enabled? Defaults to `false`.
     * 
     */
    public Optional> virtualWanTrafficEnabled() {
        return Optional.ofNullable(this.virtualWanTrafficEnabled);
    }

    /**
     * A `vpn_client_configuration` block which is documented below. In this block the Virtual Network Gateway can be configured to accept IPSec point-to-site connections.
     * 
     */
    @Import(name="vpnClientConfiguration")
    private @Nullable Output vpnClientConfiguration;

    /**
     * @return A `vpn_client_configuration` block which is documented below. In this block the Virtual Network Gateway can be configured to accept IPSec point-to-site connections.
     * 
     */
    public Optional> vpnClientConfiguration() {
        return Optional.ofNullable(this.vpnClientConfiguration);
    }

    /**
     * The routing type of the Virtual Network Gateway. Valid options are `RouteBased` or `PolicyBased`. Defaults to `RouteBased`. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="vpnType")
    private @Nullable Output vpnType;

    /**
     * @return The routing type of the Virtual Network Gateway. Valid options are `RouteBased` or `PolicyBased`. Defaults to `RouteBased`. Changing this forces a new resource to be created.
     * 
     */
    public Optional> vpnType() {
        return Optional.ofNullable(this.vpnType);
    }

    private VirtualNetworkGatewayState() {}

    private VirtualNetworkGatewayState(VirtualNetworkGatewayState $) {
        this.activeActive = $.activeActive;
        this.bgpRouteTranslationForNatEnabled = $.bgpRouteTranslationForNatEnabled;
        this.bgpSettings = $.bgpSettings;
        this.customRoute = $.customRoute;
        this.defaultLocalNetworkGatewayId = $.defaultLocalNetworkGatewayId;
        this.dnsForwardingEnabled = $.dnsForwardingEnabled;
        this.edgeZone = $.edgeZone;
        this.enableBgp = $.enableBgp;
        this.generation = $.generation;
        this.ipConfigurations = $.ipConfigurations;
        this.ipSecReplayProtectionEnabled = $.ipSecReplayProtectionEnabled;
        this.location = $.location;
        this.name = $.name;
        this.policyGroups = $.policyGroups;
        this.privateIpAddressEnabled = $.privateIpAddressEnabled;
        this.remoteVnetTrafficEnabled = $.remoteVnetTrafficEnabled;
        this.resourceGroupName = $.resourceGroupName;
        this.sku = $.sku;
        this.tags = $.tags;
        this.type = $.type;
        this.virtualWanTrafficEnabled = $.virtualWanTrafficEnabled;
        this.vpnClientConfiguration = $.vpnClientConfiguration;
        this.vpnType = $.vpnType;
    }

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

    public static final class Builder {
        private VirtualNetworkGatewayState $;

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

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

        /**
         * @param activeActive If `true`, an active-active Virtual Network Gateway will be created. An active-active gateway requires a `HighPerformance` or an `UltraPerformance` SKU. If `false`, an active-standby gateway will be created. Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder activeActive(@Nullable Output activeActive) {
            $.activeActive = activeActive;
            return this;
        }

        /**
         * @param activeActive If `true`, an active-active Virtual Network Gateway will be created. An active-active gateway requires a `HighPerformance` or an `UltraPerformance` SKU. If `false`, an active-standby gateway will be created. Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder activeActive(Boolean activeActive) {
            return activeActive(Output.of(activeActive));
        }

        /**
         * @param bgpRouteTranslationForNatEnabled Is BGP Route Translation for NAT enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder bgpRouteTranslationForNatEnabled(@Nullable Output bgpRouteTranslationForNatEnabled) {
            $.bgpRouteTranslationForNatEnabled = bgpRouteTranslationForNatEnabled;
            return this;
        }

        /**
         * @param bgpRouteTranslationForNatEnabled Is BGP Route Translation for NAT enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder bgpRouteTranslationForNatEnabled(Boolean bgpRouteTranslationForNatEnabled) {
            return bgpRouteTranslationForNatEnabled(Output.of(bgpRouteTranslationForNatEnabled));
        }

        /**
         * @param bgpSettings A `bgp_settings` block which is documented below. In this block the BGP specific settings can be defined.
         * 
         * @return builder
         * 
         */
        public Builder bgpSettings(@Nullable Output bgpSettings) {
            $.bgpSettings = bgpSettings;
            return this;
        }

        /**
         * @param bgpSettings A `bgp_settings` block which is documented below. In this block the BGP specific settings can be defined.
         * 
         * @return builder
         * 
         */
        public Builder bgpSettings(VirtualNetworkGatewayBgpSettingsArgs bgpSettings) {
            return bgpSettings(Output.of(bgpSettings));
        }

        /**
         * @param customRoute A `custom_route` block as defined below. Specifies a custom routes address space for a virtual network gateway and a VpnClient.
         * 
         * @return builder
         * 
         */
        public Builder customRoute(@Nullable Output customRoute) {
            $.customRoute = customRoute;
            return this;
        }

        /**
         * @param customRoute A `custom_route` block as defined below. Specifies a custom routes address space for a virtual network gateway and a VpnClient.
         * 
         * @return builder
         * 
         */
        public Builder customRoute(VirtualNetworkGatewayCustomRouteArgs customRoute) {
            return customRoute(Output.of(customRoute));
        }

        /**
         * @param defaultLocalNetworkGatewayId The ID of the local network gateway through which outbound Internet traffic from the virtual network in which the gateway is created will be routed (*forced tunnelling*). Refer to the [Azure documentation on forced tunnelling](https://docs.microsoft.com/azure/vpn-gateway/vpn-gateway-forced-tunneling-rm). If not specified, forced tunnelling is disabled.
         * 
         * @return builder
         * 
         */
        public Builder defaultLocalNetworkGatewayId(@Nullable Output defaultLocalNetworkGatewayId) {
            $.defaultLocalNetworkGatewayId = defaultLocalNetworkGatewayId;
            return this;
        }

        /**
         * @param defaultLocalNetworkGatewayId The ID of the local network gateway through which outbound Internet traffic from the virtual network in which the gateway is created will be routed (*forced tunnelling*). Refer to the [Azure documentation on forced tunnelling](https://docs.microsoft.com/azure/vpn-gateway/vpn-gateway-forced-tunneling-rm). If not specified, forced tunnelling is disabled.
         * 
         * @return builder
         * 
         */
        public Builder defaultLocalNetworkGatewayId(String defaultLocalNetworkGatewayId) {
            return defaultLocalNetworkGatewayId(Output.of(defaultLocalNetworkGatewayId));
        }

        /**
         * @param dnsForwardingEnabled Is DNS forwarding enabled?
         * 
         * @return builder
         * 
         */
        public Builder dnsForwardingEnabled(@Nullable Output dnsForwardingEnabled) {
            $.dnsForwardingEnabled = dnsForwardingEnabled;
            return this;
        }

        /**
         * @param dnsForwardingEnabled Is DNS forwarding enabled?
         * 
         * @return builder
         * 
         */
        public Builder dnsForwardingEnabled(Boolean dnsForwardingEnabled) {
            return dnsForwardingEnabled(Output.of(dnsForwardingEnabled));
        }

        /**
         * @param edgeZone Specifies the Edge Zone within the Azure Region where this Virtual Network Gateway should exist. Changing this forces a new Virtual Network Gateway to be created.
         * 
         * @return builder
         * 
         */
        public Builder edgeZone(@Nullable Output edgeZone) {
            $.edgeZone = edgeZone;
            return this;
        }

        /**
         * @param edgeZone Specifies the Edge Zone within the Azure Region where this Virtual Network Gateway should exist. Changing this forces a new Virtual Network Gateway to be created.
         * 
         * @return builder
         * 
         */
        public Builder edgeZone(String edgeZone) {
            return edgeZone(Output.of(edgeZone));
        }

        /**
         * @param enableBgp If `true`, BGP (Border Gateway Protocol) will be enabled for this Virtual Network Gateway. Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder enableBgp(@Nullable Output enableBgp) {
            $.enableBgp = enableBgp;
            return this;
        }

        /**
         * @param enableBgp If `true`, BGP (Border Gateway Protocol) will be enabled for this Virtual Network Gateway. Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder enableBgp(Boolean enableBgp) {
            return enableBgp(Output.of(enableBgp));
        }

        /**
         * @param generation The Generation of the Virtual Network gateway. Possible values include `Generation1`, `Generation2` or `None`. Changing this forces a new resource to be created.
         * 
         * > **NOTE:** The available values depend on the `type` and `sku` arguments - where `Generation2` is only value for a `sku` larger than `VpnGw2` or `VpnGw2AZ`.
         * 
         * @return builder
         * 
         */
        public Builder generation(@Nullable Output generation) {
            $.generation = generation;
            return this;
        }

        /**
         * @param generation The Generation of the Virtual Network gateway. Possible values include `Generation1`, `Generation2` or `None`. Changing this forces a new resource to be created.
         * 
         * > **NOTE:** The available values depend on the `type` and `sku` arguments - where `Generation2` is only value for a `sku` larger than `VpnGw2` or `VpnGw2AZ`.
         * 
         * @return builder
         * 
         */
        public Builder generation(String generation) {
            return generation(Output.of(generation));
        }

        /**
         * @param ipConfigurations One or more (up to 3) `ip_configuration` blocks documented below.
         * An active-standby gateway requires exactly one `ip_configuration` block,
         * an active-active gateway requires exactly two `ip_configuration` blocks whereas
         * an active-active zone redundant gateway with P2S configuration requires exactly three `ip_configuration` blocks.
         * 
         * @return builder
         * 
         */
        public Builder ipConfigurations(@Nullable Output> ipConfigurations) {
            $.ipConfigurations = ipConfigurations;
            return this;
        }

        /**
         * @param ipConfigurations One or more (up to 3) `ip_configuration` blocks documented below.
         * An active-standby gateway requires exactly one `ip_configuration` block,
         * an active-active gateway requires exactly two `ip_configuration` blocks whereas
         * an active-active zone redundant gateway with P2S configuration requires exactly three `ip_configuration` blocks.
         * 
         * @return builder
         * 
         */
        public Builder ipConfigurations(List ipConfigurations) {
            return ipConfigurations(Output.of(ipConfigurations));
        }

        /**
         * @param ipConfigurations One or more (up to 3) `ip_configuration` blocks documented below.
         * An active-standby gateway requires exactly one `ip_configuration` block,
         * an active-active gateway requires exactly two `ip_configuration` blocks whereas
         * an active-active zone redundant gateway with P2S configuration requires exactly three `ip_configuration` blocks.
         * 
         * @return builder
         * 
         */
        public Builder ipConfigurations(VirtualNetworkGatewayIpConfigurationArgs... ipConfigurations) {
            return ipConfigurations(List.of(ipConfigurations));
        }

        /**
         * @param ipSecReplayProtectionEnabled Is IP Sec Replay Protection enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder ipSecReplayProtectionEnabled(@Nullable Output ipSecReplayProtectionEnabled) {
            $.ipSecReplayProtectionEnabled = ipSecReplayProtectionEnabled;
            return this;
        }

        /**
         * @param ipSecReplayProtectionEnabled Is IP Sec Replay Protection enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder ipSecReplayProtectionEnabled(Boolean ipSecReplayProtectionEnabled) {
            return ipSecReplayProtectionEnabled(Output.of(ipSecReplayProtectionEnabled));
        }

        /**
         * @param location The location/region where the Virtual Network Gateway is located. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location The location/region where the Virtual Network Gateway is located. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param name The name of the Virtual Network Gateway. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name of the Virtual Network Gateway. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param policyGroups One or more `policy_group` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder policyGroups(@Nullable Output> policyGroups) {
            $.policyGroups = policyGroups;
            return this;
        }

        /**
         * @param policyGroups One or more `policy_group` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder policyGroups(List policyGroups) {
            return policyGroups(Output.of(policyGroups));
        }

        /**
         * @param policyGroups One or more `policy_group` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder policyGroups(VirtualNetworkGatewayPolicyGroupArgs... policyGroups) {
            return policyGroups(List.of(policyGroups));
        }

        /**
         * @param privateIpAddressEnabled Should private IP be enabled on this gateway for connections? Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder privateIpAddressEnabled(@Nullable Output privateIpAddressEnabled) {
            $.privateIpAddressEnabled = privateIpAddressEnabled;
            return this;
        }

        /**
         * @param privateIpAddressEnabled Should private IP be enabled on this gateway for connections? Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder privateIpAddressEnabled(Boolean privateIpAddressEnabled) {
            return privateIpAddressEnabled(Output.of(privateIpAddressEnabled));
        }

        /**
         * @param remoteVnetTrafficEnabled Is remote vnet traffic that is used to configure this gateway to accept traffic from other Azure Virtual Networks enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder remoteVnetTrafficEnabled(@Nullable Output remoteVnetTrafficEnabled) {
            $.remoteVnetTrafficEnabled = remoteVnetTrafficEnabled;
            return this;
        }

        /**
         * @param remoteVnetTrafficEnabled Is remote vnet traffic that is used to configure this gateway to accept traffic from other Azure Virtual Networks enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder remoteVnetTrafficEnabled(Boolean remoteVnetTrafficEnabled) {
            return remoteVnetTrafficEnabled(Output.of(remoteVnetTrafficEnabled));
        }

        /**
         * @param resourceGroupName The name of the resource group in which to create the Virtual Network Gateway. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(@Nullable Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group in which to create the Virtual Network Gateway. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param sku Configuration of the size and capacity of the virtual network gateway. Valid options are `Basic`, `Standard`, `HighPerformance`, `UltraPerformance`, `ErGw1AZ`, `ErGw2AZ`, `ErGw3AZ`, `VpnGw1`, `VpnGw2`, `VpnGw3`, `VpnGw4`,`VpnGw5`, `VpnGw1AZ`, `VpnGw2AZ`, `VpnGw3AZ`,`VpnGw4AZ` and `VpnGw5AZ` and depend on the `type`, `vpn_type` and `generation` arguments. A `PolicyBased` gateway only supports the `Basic` SKU. Further, the `UltraPerformance` SKU is only supported by an `ExpressRoute` gateway.
         * 
         * > **NOTE:** To build a UltraPerformance ExpressRoute Virtual Network gateway, the associated Public IP needs to be SKU "Basic" not "Standard"
         * 
         * > **NOTE:** Not all SKUs (e.g. `ErGw1AZ`) are available in all regions. If you see `StatusCode=400 -- Original Error: Code="InvalidGatewaySkuSpecifiedForGatewayDeploymentType"` please try another region.
         * 
         * @return builder
         * 
         */
        public Builder sku(@Nullable Output sku) {
            $.sku = sku;
            return this;
        }

        /**
         * @param sku Configuration of the size and capacity of the virtual network gateway. Valid options are `Basic`, `Standard`, `HighPerformance`, `UltraPerformance`, `ErGw1AZ`, `ErGw2AZ`, `ErGw3AZ`, `VpnGw1`, `VpnGw2`, `VpnGw3`, `VpnGw4`,`VpnGw5`, `VpnGw1AZ`, `VpnGw2AZ`, `VpnGw3AZ`,`VpnGw4AZ` and `VpnGw5AZ` and depend on the `type`, `vpn_type` and `generation` arguments. A `PolicyBased` gateway only supports the `Basic` SKU. Further, the `UltraPerformance` SKU is only supported by an `ExpressRoute` gateway.
         * 
         * > **NOTE:** To build a UltraPerformance ExpressRoute Virtual Network gateway, the associated Public IP needs to be SKU "Basic" not "Standard"
         * 
         * > **NOTE:** Not all SKUs (e.g. `ErGw1AZ`) are available in all regions. If you see `StatusCode=400 -- Original Error: Code="InvalidGatewaySkuSpecifiedForGatewayDeploymentType"` please try another region.
         * 
         * @return builder
         * 
         */
        public Builder sku(String sku) {
            return sku(Output.of(sku));
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param type The type of the Virtual Network Gateway. Valid options are `Vpn` or `ExpressRoute`. Changing the type forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder type(@Nullable Output type) {
            $.type = type;
            return this;
        }

        /**
         * @param type The type of the Virtual Network Gateway. Valid options are `Vpn` or `ExpressRoute`. Changing the type forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder type(String type) {
            return type(Output.of(type));
        }

        /**
         * @param virtualWanTrafficEnabled Is remote vnet traffic that is used to configure this gateway to accept traffic from remote Virtual WAN networks enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder virtualWanTrafficEnabled(@Nullable Output virtualWanTrafficEnabled) {
            $.virtualWanTrafficEnabled = virtualWanTrafficEnabled;
            return this;
        }

        /**
         * @param virtualWanTrafficEnabled Is remote vnet traffic that is used to configure this gateway to accept traffic from remote Virtual WAN networks enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder virtualWanTrafficEnabled(Boolean virtualWanTrafficEnabled) {
            return virtualWanTrafficEnabled(Output.of(virtualWanTrafficEnabled));
        }

        /**
         * @param vpnClientConfiguration A `vpn_client_configuration` block which is documented below. In this block the Virtual Network Gateway can be configured to accept IPSec point-to-site connections.
         * 
         * @return builder
         * 
         */
        public Builder vpnClientConfiguration(@Nullable Output vpnClientConfiguration) {
            $.vpnClientConfiguration = vpnClientConfiguration;
            return this;
        }

        /**
         * @param vpnClientConfiguration A `vpn_client_configuration` block which is documented below. In this block the Virtual Network Gateway can be configured to accept IPSec point-to-site connections.
         * 
         * @return builder
         * 
         */
        public Builder vpnClientConfiguration(VirtualNetworkGatewayVpnClientConfigurationArgs vpnClientConfiguration) {
            return vpnClientConfiguration(Output.of(vpnClientConfiguration));
        }

        /**
         * @param vpnType The routing type of the Virtual Network Gateway. Valid options are `RouteBased` or `PolicyBased`. Defaults to `RouteBased`. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder vpnType(@Nullable Output vpnType) {
            $.vpnType = vpnType;
            return this;
        }

        /**
         * @param vpnType The routing type of the Virtual Network Gateway. Valid options are `RouteBased` or `PolicyBased`. Defaults to `RouteBased`. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder vpnType(String vpnType) {
            return vpnType(Output.of(vpnType));
        }

        public VirtualNetworkGatewayState build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy