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

com.pulumi.azurenative.network.VirtualNetworkGatewayArgs Maven / Gradle / Ivy

There is a newer version: 2.72.0
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.azurenative.network;

import com.pulumi.azurenative.network.enums.AdminState;
import com.pulumi.azurenative.network.enums.VirtualNetworkGatewayType;
import com.pulumi.azurenative.network.enums.VpnGatewayGeneration;
import com.pulumi.azurenative.network.enums.VpnType;
import com.pulumi.azurenative.network.inputs.AddressSpaceArgs;
import com.pulumi.azurenative.network.inputs.BgpSettingsArgs;
import com.pulumi.azurenative.network.inputs.ExtendedLocationArgs;
import com.pulumi.azurenative.network.inputs.SubResourceArgs;
import com.pulumi.azurenative.network.inputs.VirtualNetworkGatewayIPConfigurationArgs;
import com.pulumi.azurenative.network.inputs.VirtualNetworkGatewayNatRuleArgs;
import com.pulumi.azurenative.network.inputs.VirtualNetworkGatewayPolicyGroupArgs;
import com.pulumi.azurenative.network.inputs.VirtualNetworkGatewaySkuArgs;
import com.pulumi.azurenative.network.inputs.VpnClientConfigurationArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
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 VirtualNetworkGatewayArgs extends com.pulumi.resources.ResourceArgs {

    public static final VirtualNetworkGatewayArgs Empty = new VirtualNetworkGatewayArgs();

    /**
     * ActiveActive flag.
     * 
     */
    @Import(name="activeActive")
    private @Nullable Output activeActive;

    /**
     * @return ActiveActive flag.
     * 
     */
    public Optional> activeActive() {
        return Optional.ofNullable(this.activeActive);
    }

    /**
     * Property to indicate if the Express Route Gateway serves traffic when there are multiple Express Route Gateways in the vnet
     * 
     */
    @Import(name="adminState")
    private @Nullable Output> adminState;

    /**
     * @return Property to indicate if the Express Route Gateway serves traffic when there are multiple Express Route Gateways in the vnet
     * 
     */
    public Optional>> adminState() {
        return Optional.ofNullable(this.adminState);
    }

    /**
     * Configure this gateway to accept traffic from other Azure Virtual Networks. This configuration does not support connectivity to Azure Virtual WAN.
     * 
     */
    @Import(name="allowRemoteVnetTraffic")
    private @Nullable Output allowRemoteVnetTraffic;

    /**
     * @return Configure this gateway to accept traffic from other Azure Virtual Networks. This configuration does not support connectivity to Azure Virtual WAN.
     * 
     */
    public Optional> allowRemoteVnetTraffic() {
        return Optional.ofNullable(this.allowRemoteVnetTraffic);
    }

    /**
     * Configures this gateway to accept traffic from remote Virtual WAN networks.
     * 
     */
    @Import(name="allowVirtualWanTraffic")
    private @Nullable Output allowVirtualWanTraffic;

    /**
     * @return Configures this gateway to accept traffic from remote Virtual WAN networks.
     * 
     */
    public Optional> allowVirtualWanTraffic() {
        return Optional.ofNullable(this.allowVirtualWanTraffic);
    }

    /**
     * Virtual network gateway's BGP speaker settings.
     * 
     */
    @Import(name="bgpSettings")
    private @Nullable Output bgpSettings;

    /**
     * @return Virtual network gateway's BGP speaker settings.
     * 
     */
    public Optional> bgpSettings() {
        return Optional.ofNullable(this.bgpSettings);
    }

    /**
     * The reference to the address space resource which represents the custom routes address space specified by the customer for virtual network gateway and VpnClient.
     * 
     */
    @Import(name="customRoutes")
    private @Nullable Output customRoutes;

    /**
     * @return The reference to the address space resource which represents the custom routes address space specified by the customer for virtual network gateway and VpnClient.
     * 
     */
    public Optional> customRoutes() {
        return Optional.ofNullable(this.customRoutes);
    }

    /**
     * disableIPSecReplayProtection flag.
     * 
     */
    @Import(name="disableIPSecReplayProtection")
    private @Nullable Output disableIPSecReplayProtection;

    /**
     * @return disableIPSecReplayProtection flag.
     * 
     */
    public Optional> disableIPSecReplayProtection() {
        return Optional.ofNullable(this.disableIPSecReplayProtection);
    }

    /**
     * Whether BGP is enabled for this virtual network gateway or not.
     * 
     */
    @Import(name="enableBgp")
    private @Nullable Output enableBgp;

    /**
     * @return Whether BGP is enabled for this virtual network gateway or not.
     * 
     */
    public Optional> enableBgp() {
        return Optional.ofNullable(this.enableBgp);
    }

    /**
     * EnableBgpRouteTranslationForNat flag.
     * 
     */
    @Import(name="enableBgpRouteTranslationForNat")
    private @Nullable Output enableBgpRouteTranslationForNat;

    /**
     * @return EnableBgpRouteTranslationForNat flag.
     * 
     */
    public Optional> enableBgpRouteTranslationForNat() {
        return Optional.ofNullable(this.enableBgpRouteTranslationForNat);
    }

    /**
     * Whether dns forwarding is enabled or not.
     * 
     */
    @Import(name="enableDnsForwarding")
    private @Nullable Output enableDnsForwarding;

    /**
     * @return Whether dns forwarding is enabled or not.
     * 
     */
    public Optional> enableDnsForwarding() {
        return Optional.ofNullable(this.enableDnsForwarding);
    }

    /**
     * Whether private IP needs to be enabled on this gateway for connections or not.
     * 
     */
    @Import(name="enablePrivateIpAddress")
    private @Nullable Output enablePrivateIpAddress;

    /**
     * @return Whether private IP needs to be enabled on this gateway for connections or not.
     * 
     */
    public Optional> enablePrivateIpAddress() {
        return Optional.ofNullable(this.enablePrivateIpAddress);
    }

    /**
     * The extended location of type local virtual network gateway.
     * 
     */
    @Import(name="extendedLocation")
    private @Nullable Output extendedLocation;

    /**
     * @return The extended location of type local virtual network gateway.
     * 
     */
    public Optional> extendedLocation() {
        return Optional.ofNullable(this.extendedLocation);
    }

    /**
     * The reference to the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing default site setting.
     * 
     */
    @Import(name="gatewayDefaultSite")
    private @Nullable Output gatewayDefaultSite;

    /**
     * @return The reference to the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing default site setting.
     * 
     */
    public Optional> gatewayDefaultSite() {
        return Optional.ofNullable(this.gatewayDefaultSite);
    }

    /**
     * The type of this virtual network gateway.
     * 
     */
    @Import(name="gatewayType")
    private @Nullable Output> gatewayType;

    /**
     * @return The type of this virtual network gateway.
     * 
     */
    public Optional>> gatewayType() {
        return Optional.ofNullable(this.gatewayType);
    }

    /**
     * Resource ID.
     * 
     */
    @Import(name="id")
    private @Nullable Output id;

    /**
     * @return Resource ID.
     * 
     */
    public Optional> id() {
        return Optional.ofNullable(this.id);
    }

    /**
     * IP configurations for virtual network gateway.
     * 
     */
    @Import(name="ipConfigurations")
    private @Nullable Output> ipConfigurations;

    /**
     * @return IP configurations for virtual network gateway.
     * 
     */
    public Optional>> ipConfigurations() {
        return Optional.ofNullable(this.ipConfigurations);
    }

    /**
     * Resource location.
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return Resource location.
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * NatRules for virtual network gateway.
     * These are also available as standalone resources. Do not mix inline and standalone resource as they will conflict with each other, leading to resources deletion.
     * 
     */
    @Import(name="natRules")
    private @Nullable Output> natRules;

    /**
     * @return NatRules for virtual network gateway.
     * These are also available as standalone resources. Do not mix inline and standalone resource as they will conflict with each other, leading to resources deletion.
     * 
     */
    public Optional>> natRules() {
        return Optional.ofNullable(this.natRules);
    }

    /**
     * The name of the resource group.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the resource group.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * The reference to the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network gateway.
     * 
     */
    @Import(name="sku")
    private @Nullable Output sku;

    /**
     * @return The reference to the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network gateway.
     * 
     */
    public Optional> sku() {
        return Optional.ofNullable(this.sku);
    }

    /**
     * Resource tags.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Resource tags.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Customer vnet resource id. VirtualNetworkGateway of type local gateway is associated with the customer vnet.
     * 
     */
    @Import(name="vNetExtendedLocationResourceId")
    private @Nullable Output vNetExtendedLocationResourceId;

    /**
     * @return Customer vnet resource id. VirtualNetworkGateway of type local gateway is associated with the customer vnet.
     * 
     */
    public Optional> vNetExtendedLocationResourceId() {
        return Optional.ofNullable(this.vNetExtendedLocationResourceId);
    }

    /**
     * The name of the virtual network gateway.
     * 
     */
    @Import(name="virtualNetworkGatewayName")
    private @Nullable Output virtualNetworkGatewayName;

    /**
     * @return The name of the virtual network gateway.
     * 
     */
    public Optional> virtualNetworkGatewayName() {
        return Optional.ofNullable(this.virtualNetworkGatewayName);
    }

    /**
     * The reference to the VirtualNetworkGatewayPolicyGroup resource which represents the available VirtualNetworkGatewayPolicyGroup for the gateway.
     * 
     */
    @Import(name="virtualNetworkGatewayPolicyGroups")
    private @Nullable Output> virtualNetworkGatewayPolicyGroups;

    /**
     * @return The reference to the VirtualNetworkGatewayPolicyGroup resource which represents the available VirtualNetworkGatewayPolicyGroup for the gateway.
     * 
     */
    public Optional>> virtualNetworkGatewayPolicyGroups() {
        return Optional.ofNullable(this.virtualNetworkGatewayPolicyGroups);
    }

    /**
     * The reference to the VpnClientConfiguration resource which represents the P2S VpnClient configurations.
     * 
     */
    @Import(name="vpnClientConfiguration")
    private @Nullable Output vpnClientConfiguration;

    /**
     * @return The reference to the VpnClientConfiguration resource which represents the P2S VpnClient configurations.
     * 
     */
    public Optional> vpnClientConfiguration() {
        return Optional.ofNullable(this.vpnClientConfiguration);
    }

    /**
     * The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.
     * 
     */
    @Import(name="vpnGatewayGeneration")
    private @Nullable Output> vpnGatewayGeneration;

    /**
     * @return The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.
     * 
     */
    public Optional>> vpnGatewayGeneration() {
        return Optional.ofNullable(this.vpnGatewayGeneration);
    }

    /**
     * The type of this virtual network gateway.
     * 
     */
    @Import(name="vpnType")
    private @Nullable Output> vpnType;

    /**
     * @return The type of this virtual network gateway.
     * 
     */
    public Optional>> vpnType() {
        return Optional.ofNullable(this.vpnType);
    }

    private VirtualNetworkGatewayArgs() {}

    private VirtualNetworkGatewayArgs(VirtualNetworkGatewayArgs $) {
        this.activeActive = $.activeActive;
        this.adminState = $.adminState;
        this.allowRemoteVnetTraffic = $.allowRemoteVnetTraffic;
        this.allowVirtualWanTraffic = $.allowVirtualWanTraffic;
        this.bgpSettings = $.bgpSettings;
        this.customRoutes = $.customRoutes;
        this.disableIPSecReplayProtection = $.disableIPSecReplayProtection;
        this.enableBgp = $.enableBgp;
        this.enableBgpRouteTranslationForNat = $.enableBgpRouteTranslationForNat;
        this.enableDnsForwarding = $.enableDnsForwarding;
        this.enablePrivateIpAddress = $.enablePrivateIpAddress;
        this.extendedLocation = $.extendedLocation;
        this.gatewayDefaultSite = $.gatewayDefaultSite;
        this.gatewayType = $.gatewayType;
        this.id = $.id;
        this.ipConfigurations = $.ipConfigurations;
        this.location = $.location;
        this.natRules = $.natRules;
        this.resourceGroupName = $.resourceGroupName;
        this.sku = $.sku;
        this.tags = $.tags;
        this.vNetExtendedLocationResourceId = $.vNetExtendedLocationResourceId;
        this.virtualNetworkGatewayName = $.virtualNetworkGatewayName;
        this.virtualNetworkGatewayPolicyGroups = $.virtualNetworkGatewayPolicyGroups;
        this.vpnClientConfiguration = $.vpnClientConfiguration;
        this.vpnGatewayGeneration = $.vpnGatewayGeneration;
        this.vpnType = $.vpnType;
    }

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

    public static final class Builder {
        private VirtualNetworkGatewayArgs $;

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

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

        /**
         * @param activeActive ActiveActive flag.
         * 
         * @return builder
         * 
         */
        public Builder activeActive(@Nullable Output activeActive) {
            $.activeActive = activeActive;
            return this;
        }

        /**
         * @param activeActive ActiveActive flag.
         * 
         * @return builder
         * 
         */
        public Builder activeActive(Boolean activeActive) {
            return activeActive(Output.of(activeActive));
        }

        /**
         * @param adminState Property to indicate if the Express Route Gateway serves traffic when there are multiple Express Route Gateways in the vnet
         * 
         * @return builder
         * 
         */
        public Builder adminState(@Nullable Output> adminState) {
            $.adminState = adminState;
            return this;
        }

        /**
         * @param adminState Property to indicate if the Express Route Gateway serves traffic when there are multiple Express Route Gateways in the vnet
         * 
         * @return builder
         * 
         */
        public Builder adminState(Either adminState) {
            return adminState(Output.of(adminState));
        }

        /**
         * @param adminState Property to indicate if the Express Route Gateway serves traffic when there are multiple Express Route Gateways in the vnet
         * 
         * @return builder
         * 
         */
        public Builder adminState(String adminState) {
            return adminState(Either.ofLeft(adminState));
        }

        /**
         * @param adminState Property to indicate if the Express Route Gateway serves traffic when there are multiple Express Route Gateways in the vnet
         * 
         * @return builder
         * 
         */
        public Builder adminState(AdminState adminState) {
            return adminState(Either.ofRight(adminState));
        }

        /**
         * @param allowRemoteVnetTraffic Configure this gateway to accept traffic from other Azure Virtual Networks. This configuration does not support connectivity to Azure Virtual WAN.
         * 
         * @return builder
         * 
         */
        public Builder allowRemoteVnetTraffic(@Nullable Output allowRemoteVnetTraffic) {
            $.allowRemoteVnetTraffic = allowRemoteVnetTraffic;
            return this;
        }

        /**
         * @param allowRemoteVnetTraffic Configure this gateway to accept traffic from other Azure Virtual Networks. This configuration does not support connectivity to Azure Virtual WAN.
         * 
         * @return builder
         * 
         */
        public Builder allowRemoteVnetTraffic(Boolean allowRemoteVnetTraffic) {
            return allowRemoteVnetTraffic(Output.of(allowRemoteVnetTraffic));
        }

        /**
         * @param allowVirtualWanTraffic Configures this gateway to accept traffic from remote Virtual WAN networks.
         * 
         * @return builder
         * 
         */
        public Builder allowVirtualWanTraffic(@Nullable Output allowVirtualWanTraffic) {
            $.allowVirtualWanTraffic = allowVirtualWanTraffic;
            return this;
        }

        /**
         * @param allowVirtualWanTraffic Configures this gateway to accept traffic from remote Virtual WAN networks.
         * 
         * @return builder
         * 
         */
        public Builder allowVirtualWanTraffic(Boolean allowVirtualWanTraffic) {
            return allowVirtualWanTraffic(Output.of(allowVirtualWanTraffic));
        }

        /**
         * @param bgpSettings Virtual network gateway's BGP speaker settings.
         * 
         * @return builder
         * 
         */
        public Builder bgpSettings(@Nullable Output bgpSettings) {
            $.bgpSettings = bgpSettings;
            return this;
        }

        /**
         * @param bgpSettings Virtual network gateway's BGP speaker settings.
         * 
         * @return builder
         * 
         */
        public Builder bgpSettings(BgpSettingsArgs bgpSettings) {
            return bgpSettings(Output.of(bgpSettings));
        }

        /**
         * @param customRoutes The reference to the address space resource which represents the custom routes address space specified by the customer for virtual network gateway and VpnClient.
         * 
         * @return builder
         * 
         */
        public Builder customRoutes(@Nullable Output customRoutes) {
            $.customRoutes = customRoutes;
            return this;
        }

        /**
         * @param customRoutes The reference to the address space resource which represents the custom routes address space specified by the customer for virtual network gateway and VpnClient.
         * 
         * @return builder
         * 
         */
        public Builder customRoutes(AddressSpaceArgs customRoutes) {
            return customRoutes(Output.of(customRoutes));
        }

        /**
         * @param disableIPSecReplayProtection disableIPSecReplayProtection flag.
         * 
         * @return builder
         * 
         */
        public Builder disableIPSecReplayProtection(@Nullable Output disableIPSecReplayProtection) {
            $.disableIPSecReplayProtection = disableIPSecReplayProtection;
            return this;
        }

        /**
         * @param disableIPSecReplayProtection disableIPSecReplayProtection flag.
         * 
         * @return builder
         * 
         */
        public Builder disableIPSecReplayProtection(Boolean disableIPSecReplayProtection) {
            return disableIPSecReplayProtection(Output.of(disableIPSecReplayProtection));
        }

        /**
         * @param enableBgp Whether BGP is enabled for this virtual network gateway or not.
         * 
         * @return builder
         * 
         */
        public Builder enableBgp(@Nullable Output enableBgp) {
            $.enableBgp = enableBgp;
            return this;
        }

        /**
         * @param enableBgp Whether BGP is enabled for this virtual network gateway or not.
         * 
         * @return builder
         * 
         */
        public Builder enableBgp(Boolean enableBgp) {
            return enableBgp(Output.of(enableBgp));
        }

        /**
         * @param enableBgpRouteTranslationForNat EnableBgpRouteTranslationForNat flag.
         * 
         * @return builder
         * 
         */
        public Builder enableBgpRouteTranslationForNat(@Nullable Output enableBgpRouteTranslationForNat) {
            $.enableBgpRouteTranslationForNat = enableBgpRouteTranslationForNat;
            return this;
        }

        /**
         * @param enableBgpRouteTranslationForNat EnableBgpRouteTranslationForNat flag.
         * 
         * @return builder
         * 
         */
        public Builder enableBgpRouteTranslationForNat(Boolean enableBgpRouteTranslationForNat) {
            return enableBgpRouteTranslationForNat(Output.of(enableBgpRouteTranslationForNat));
        }

        /**
         * @param enableDnsForwarding Whether dns forwarding is enabled or not.
         * 
         * @return builder
         * 
         */
        public Builder enableDnsForwarding(@Nullable Output enableDnsForwarding) {
            $.enableDnsForwarding = enableDnsForwarding;
            return this;
        }

        /**
         * @param enableDnsForwarding Whether dns forwarding is enabled or not.
         * 
         * @return builder
         * 
         */
        public Builder enableDnsForwarding(Boolean enableDnsForwarding) {
            return enableDnsForwarding(Output.of(enableDnsForwarding));
        }

        /**
         * @param enablePrivateIpAddress Whether private IP needs to be enabled on this gateway for connections or not.
         * 
         * @return builder
         * 
         */
        public Builder enablePrivateIpAddress(@Nullable Output enablePrivateIpAddress) {
            $.enablePrivateIpAddress = enablePrivateIpAddress;
            return this;
        }

        /**
         * @param enablePrivateIpAddress Whether private IP needs to be enabled on this gateway for connections or not.
         * 
         * @return builder
         * 
         */
        public Builder enablePrivateIpAddress(Boolean enablePrivateIpAddress) {
            return enablePrivateIpAddress(Output.of(enablePrivateIpAddress));
        }

        /**
         * @param extendedLocation The extended location of type local virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder extendedLocation(@Nullable Output extendedLocation) {
            $.extendedLocation = extendedLocation;
            return this;
        }

        /**
         * @param extendedLocation The extended location of type local virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder extendedLocation(ExtendedLocationArgs extendedLocation) {
            return extendedLocation(Output.of(extendedLocation));
        }

        /**
         * @param gatewayDefaultSite The reference to the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing default site setting.
         * 
         * @return builder
         * 
         */
        public Builder gatewayDefaultSite(@Nullable Output gatewayDefaultSite) {
            $.gatewayDefaultSite = gatewayDefaultSite;
            return this;
        }

        /**
         * @param gatewayDefaultSite The reference to the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing default site setting.
         * 
         * @return builder
         * 
         */
        public Builder gatewayDefaultSite(SubResourceArgs gatewayDefaultSite) {
            return gatewayDefaultSite(Output.of(gatewayDefaultSite));
        }

        /**
         * @param gatewayType The type of this virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder gatewayType(@Nullable Output> gatewayType) {
            $.gatewayType = gatewayType;
            return this;
        }

        /**
         * @param gatewayType The type of this virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder gatewayType(Either gatewayType) {
            return gatewayType(Output.of(gatewayType));
        }

        /**
         * @param gatewayType The type of this virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder gatewayType(String gatewayType) {
            return gatewayType(Either.ofLeft(gatewayType));
        }

        /**
         * @param gatewayType The type of this virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder gatewayType(VirtualNetworkGatewayType gatewayType) {
            return gatewayType(Either.ofRight(gatewayType));
        }

        /**
         * @param id Resource ID.
         * 
         * @return builder
         * 
         */
        public Builder id(@Nullable Output id) {
            $.id = id;
            return this;
        }

        /**
         * @param id Resource ID.
         * 
         * @return builder
         * 
         */
        public Builder id(String id) {
            return id(Output.of(id));
        }

        /**
         * @param ipConfigurations IP configurations for virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder ipConfigurations(@Nullable Output> ipConfigurations) {
            $.ipConfigurations = ipConfigurations;
            return this;
        }

        /**
         * @param ipConfigurations IP configurations for virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder ipConfigurations(List ipConfigurations) {
            return ipConfigurations(Output.of(ipConfigurations));
        }

        /**
         * @param ipConfigurations IP configurations for virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder ipConfigurations(VirtualNetworkGatewayIPConfigurationArgs... ipConfigurations) {
            return ipConfigurations(List.of(ipConfigurations));
        }

        /**
         * @param location Resource location.
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location Resource location.
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param natRules NatRules for virtual network gateway.
         * These are also available as standalone resources. Do not mix inline and standalone resource as they will conflict with each other, leading to resources deletion.
         * 
         * @return builder
         * 
         */
        public Builder natRules(@Nullable Output> natRules) {
            $.natRules = natRules;
            return this;
        }

        /**
         * @param natRules NatRules for virtual network gateway.
         * These are also available as standalone resources. Do not mix inline and standalone resource as they will conflict with each other, leading to resources deletion.
         * 
         * @return builder
         * 
         */
        public Builder natRules(List natRules) {
            return natRules(Output.of(natRules));
        }

        /**
         * @param natRules NatRules for virtual network gateway.
         * These are also available as standalone resources. Do not mix inline and standalone resource as they will conflict with each other, leading to resources deletion.
         * 
         * @return builder
         * 
         */
        public Builder natRules(VirtualNetworkGatewayNatRuleArgs... natRules) {
            return natRules(List.of(natRules));
        }

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

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

        /**
         * @param sku The reference to the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder sku(@Nullable Output sku) {
            $.sku = sku;
            return this;
        }

        /**
         * @param sku The reference to the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder sku(VirtualNetworkGatewaySkuArgs sku) {
            return sku(Output.of(sku));
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param vNetExtendedLocationResourceId Customer vnet resource id. VirtualNetworkGateway of type local gateway is associated with the customer vnet.
         * 
         * @return builder
         * 
         */
        public Builder vNetExtendedLocationResourceId(@Nullable Output vNetExtendedLocationResourceId) {
            $.vNetExtendedLocationResourceId = vNetExtendedLocationResourceId;
            return this;
        }

        /**
         * @param vNetExtendedLocationResourceId Customer vnet resource id. VirtualNetworkGateway of type local gateway is associated with the customer vnet.
         * 
         * @return builder
         * 
         */
        public Builder vNetExtendedLocationResourceId(String vNetExtendedLocationResourceId) {
            return vNetExtendedLocationResourceId(Output.of(vNetExtendedLocationResourceId));
        }

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

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

        /**
         * @param virtualNetworkGatewayPolicyGroups The reference to the VirtualNetworkGatewayPolicyGroup resource which represents the available VirtualNetworkGatewayPolicyGroup for the gateway.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkGatewayPolicyGroups(@Nullable Output> virtualNetworkGatewayPolicyGroups) {
            $.virtualNetworkGatewayPolicyGroups = virtualNetworkGatewayPolicyGroups;
            return this;
        }

        /**
         * @param virtualNetworkGatewayPolicyGroups The reference to the VirtualNetworkGatewayPolicyGroup resource which represents the available VirtualNetworkGatewayPolicyGroup for the gateway.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkGatewayPolicyGroups(List virtualNetworkGatewayPolicyGroups) {
            return virtualNetworkGatewayPolicyGroups(Output.of(virtualNetworkGatewayPolicyGroups));
        }

        /**
         * @param virtualNetworkGatewayPolicyGroups The reference to the VirtualNetworkGatewayPolicyGroup resource which represents the available VirtualNetworkGatewayPolicyGroup for the gateway.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkGatewayPolicyGroups(VirtualNetworkGatewayPolicyGroupArgs... virtualNetworkGatewayPolicyGroups) {
            return virtualNetworkGatewayPolicyGroups(List.of(virtualNetworkGatewayPolicyGroups));
        }

        /**
         * @param vpnClientConfiguration The reference to the VpnClientConfiguration resource which represents the P2S VpnClient configurations.
         * 
         * @return builder
         * 
         */
        public Builder vpnClientConfiguration(@Nullable Output vpnClientConfiguration) {
            $.vpnClientConfiguration = vpnClientConfiguration;
            return this;
        }

        /**
         * @param vpnClientConfiguration The reference to the VpnClientConfiguration resource which represents the P2S VpnClient configurations.
         * 
         * @return builder
         * 
         */
        public Builder vpnClientConfiguration(VpnClientConfigurationArgs vpnClientConfiguration) {
            return vpnClientConfiguration(Output.of(vpnClientConfiguration));
        }

        /**
         * @param vpnGatewayGeneration The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.
         * 
         * @return builder
         * 
         */
        public Builder vpnGatewayGeneration(@Nullable Output> vpnGatewayGeneration) {
            $.vpnGatewayGeneration = vpnGatewayGeneration;
            return this;
        }

        /**
         * @param vpnGatewayGeneration The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.
         * 
         * @return builder
         * 
         */
        public Builder vpnGatewayGeneration(Either vpnGatewayGeneration) {
            return vpnGatewayGeneration(Output.of(vpnGatewayGeneration));
        }

        /**
         * @param vpnGatewayGeneration The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.
         * 
         * @return builder
         * 
         */
        public Builder vpnGatewayGeneration(String vpnGatewayGeneration) {
            return vpnGatewayGeneration(Either.ofLeft(vpnGatewayGeneration));
        }

        /**
         * @param vpnGatewayGeneration The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.
         * 
         * @return builder
         * 
         */
        public Builder vpnGatewayGeneration(VpnGatewayGeneration vpnGatewayGeneration) {
            return vpnGatewayGeneration(Either.ofRight(vpnGatewayGeneration));
        }

        /**
         * @param vpnType The type of this virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder vpnType(@Nullable Output> vpnType) {
            $.vpnType = vpnType;
            return this;
        }

        /**
         * @param vpnType The type of this virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder vpnType(Either vpnType) {
            return vpnType(Output.of(vpnType));
        }

        /**
         * @param vpnType The type of this virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder vpnType(String vpnType) {
            return vpnType(Either.ofLeft(vpnType));
        }

        /**
         * @param vpnType The type of this virtual network gateway.
         * 
         * @return builder
         * 
         */
        public Builder vpnType(VpnType vpnType) {
            return vpnType(Either.ofRight(vpnType));
        }

        public VirtualNetworkGatewayArgs build() {
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("VirtualNetworkGatewayArgs", "resourceGroupName");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy