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

com.pulumi.azure.network.NetworkInterfaceArgs Maven / Gradle / Ivy

// *** 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;

import com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;
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 NetworkInterfaceArgs extends com.pulumi.resources.ResourceArgs {

    public static final NetworkInterfaceArgs Empty = new NetworkInterfaceArgs();

    /**
     * Should Accelerated Networking be enabled? Defaults to `false`.
     * 
     * > **Note:** Only certain Virtual Machine sizes are supported for Accelerated Networking - [more information can be found in this document](https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli).
     * 
     * > **Note:** To use Accelerated Networking in an Availability Set, the Availability Set must be deployed onto an Accelerated Networking enabled cluster.
     * 
     */
    @Import(name="acceleratedNetworkingEnabled")
    private @Nullable Output acceleratedNetworkingEnabled;

    /**
     * @return Should Accelerated Networking be enabled? Defaults to `false`.
     * 
     * > **Note:** Only certain Virtual Machine sizes are supported for Accelerated Networking - [more information can be found in this document](https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli).
     * 
     * > **Note:** To use Accelerated Networking in an Availability Set, the Availability Set must be deployed onto an Accelerated Networking enabled cluster.
     * 
     */
    public Optional> acceleratedNetworkingEnabled() {
        return Optional.ofNullable(this.acceleratedNetworkingEnabled);
    }

    /**
     * Specifies the auxiliary mode used to enable network high-performance feature on Network Virtual Appliances (NVAs). This feature offers competitive performance in Connections Per Second (CPS) optimization, along with improvements to handling large amounts of simultaneous connections. Possible values are `AcceleratedConnections`, `Floating`, `MaxConnections` and `None`.
     * 
     * > **Note:** `auxiliary_mode` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     * 
     */
    @Import(name="auxiliaryMode")
    private @Nullable Output auxiliaryMode;

    /**
     * @return Specifies the auxiliary mode used to enable network high-performance feature on Network Virtual Appliances (NVAs). This feature offers competitive performance in Connections Per Second (CPS) optimization, along with improvements to handling large amounts of simultaneous connections. Possible values are `AcceleratedConnections`, `Floating`, `MaxConnections` and `None`.
     * 
     * > **Note:** `auxiliary_mode` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     * 
     */
    public Optional> auxiliaryMode() {
        return Optional.ofNullable(this.auxiliaryMode);
    }

    /**
     * Specifies the SKU used for the network high-performance feature on Network Virtual Appliances (NVAs). Possible values are `A8`, `A4`, `A1`, `A2` and `None`.
     * 
     * > **Note:** `auxiliary_sku` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     * 
     */
    @Import(name="auxiliarySku")
    private @Nullable Output auxiliarySku;

    /**
     * @return Specifies the SKU used for the network high-performance feature on Network Virtual Appliances (NVAs). Possible values are `A8`, `A4`, `A1`, `A2` and `None`.
     * 
     * > **Note:** `auxiliary_sku` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     * 
     */
    public Optional> auxiliarySku() {
        return Optional.ofNullable(this.auxiliarySku);
    }

    /**
     * A list of IP Addresses defining the DNS Servers which should be used for this Network Interface.
     * 
     * > **Note:** Configuring DNS Servers on the Network Interface will override the DNS Servers defined on the Virtual Network.
     * 
     */
    @Import(name="dnsServers")
    private @Nullable Output> dnsServers;

    /**
     * @return A list of IP Addresses defining the DNS Servers which should be used for this Network Interface.
     * 
     * > **Note:** Configuring DNS Servers on the Network Interface will override the DNS Servers defined on the Virtual Network.
     * 
     */
    public Optional>> dnsServers() {
        return Optional.ofNullable(this.dnsServers);
    }

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

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

    /**
     * The (relative) DNS Name used for internal communications between Virtual Machines in the same Virtual Network.
     * 
     */
    @Import(name="internalDnsNameLabel")
    private @Nullable Output internalDnsNameLabel;

    /**
     * @return The (relative) DNS Name used for internal communications between Virtual Machines in the same Virtual Network.
     * 
     */
    public Optional> internalDnsNameLabel() {
        return Optional.ofNullable(this.internalDnsNameLabel);
    }

    /**
     * One or more `ip_configuration` blocks as defined below.
     * 
     */
    @Import(name="ipConfigurations", required=true)
    private Output> ipConfigurations;

    /**
     * @return One or more `ip_configuration` blocks as defined below.
     * 
     */
    public Output> ipConfigurations() {
        return this.ipConfigurations;
    }

    /**
     * Should IP Forwarding be enabled? Defaults to `false`.
     * 
     */
    @Import(name="ipForwardingEnabled")
    private @Nullable Output ipForwardingEnabled;

    /**
     * @return Should IP Forwarding be enabled? Defaults to `false`.
     * 
     */
    public Optional> ipForwardingEnabled() {
        return Optional.ofNullable(this.ipForwardingEnabled);
    }

    /**
     * The location where the Network Interface should exist. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return The location where the Network Interface should exist. Changing this forces a new resource to be created.
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

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

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

    /**
     * The name of the Resource Group in which to create the Network Interface. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the Resource Group in which to create the Network Interface. Changing this forces a new resource to be created.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * 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);
    }

    private NetworkInterfaceArgs() {}

    private NetworkInterfaceArgs(NetworkInterfaceArgs $) {
        this.acceleratedNetworkingEnabled = $.acceleratedNetworkingEnabled;
        this.auxiliaryMode = $.auxiliaryMode;
        this.auxiliarySku = $.auxiliarySku;
        this.dnsServers = $.dnsServers;
        this.edgeZone = $.edgeZone;
        this.internalDnsNameLabel = $.internalDnsNameLabel;
        this.ipConfigurations = $.ipConfigurations;
        this.ipForwardingEnabled = $.ipForwardingEnabled;
        this.location = $.location;
        this.name = $.name;
        this.resourceGroupName = $.resourceGroupName;
        this.tags = $.tags;
    }

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

    public static final class Builder {
        private NetworkInterfaceArgs $;

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

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

        /**
         * @param acceleratedNetworkingEnabled Should Accelerated Networking be enabled? Defaults to `false`.
         * 
         * > **Note:** Only certain Virtual Machine sizes are supported for Accelerated Networking - [more information can be found in this document](https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli).
         * 
         * > **Note:** To use Accelerated Networking in an Availability Set, the Availability Set must be deployed onto an Accelerated Networking enabled cluster.
         * 
         * @return builder
         * 
         */
        public Builder acceleratedNetworkingEnabled(@Nullable Output acceleratedNetworkingEnabled) {
            $.acceleratedNetworkingEnabled = acceleratedNetworkingEnabled;
            return this;
        }

        /**
         * @param acceleratedNetworkingEnabled Should Accelerated Networking be enabled? Defaults to `false`.
         * 
         * > **Note:** Only certain Virtual Machine sizes are supported for Accelerated Networking - [more information can be found in this document](https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli).
         * 
         * > **Note:** To use Accelerated Networking in an Availability Set, the Availability Set must be deployed onto an Accelerated Networking enabled cluster.
         * 
         * @return builder
         * 
         */
        public Builder acceleratedNetworkingEnabled(Boolean acceleratedNetworkingEnabled) {
            return acceleratedNetworkingEnabled(Output.of(acceleratedNetworkingEnabled));
        }

        /**
         * @param auxiliaryMode Specifies the auxiliary mode used to enable network high-performance feature on Network Virtual Appliances (NVAs). This feature offers competitive performance in Connections Per Second (CPS) optimization, along with improvements to handling large amounts of simultaneous connections. Possible values are `AcceleratedConnections`, `Floating`, `MaxConnections` and `None`.
         * 
         * > **Note:** `auxiliary_mode` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
         * 
         * @return builder
         * 
         */
        public Builder auxiliaryMode(@Nullable Output auxiliaryMode) {
            $.auxiliaryMode = auxiliaryMode;
            return this;
        }

        /**
         * @param auxiliaryMode Specifies the auxiliary mode used to enable network high-performance feature on Network Virtual Appliances (NVAs). This feature offers competitive performance in Connections Per Second (CPS) optimization, along with improvements to handling large amounts of simultaneous connections. Possible values are `AcceleratedConnections`, `Floating`, `MaxConnections` and `None`.
         * 
         * > **Note:** `auxiliary_mode` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
         * 
         * @return builder
         * 
         */
        public Builder auxiliaryMode(String auxiliaryMode) {
            return auxiliaryMode(Output.of(auxiliaryMode));
        }

        /**
         * @param auxiliarySku Specifies the SKU used for the network high-performance feature on Network Virtual Appliances (NVAs). Possible values are `A8`, `A4`, `A1`, `A2` and `None`.
         * 
         * > **Note:** `auxiliary_sku` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
         * 
         * @return builder
         * 
         */
        public Builder auxiliarySku(@Nullable Output auxiliarySku) {
            $.auxiliarySku = auxiliarySku;
            return this;
        }

        /**
         * @param auxiliarySku Specifies the SKU used for the network high-performance feature on Network Virtual Appliances (NVAs). Possible values are `A8`, `A4`, `A1`, `A2` and `None`.
         * 
         * > **Note:** `auxiliary_sku` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
         * 
         * @return builder
         * 
         */
        public Builder auxiliarySku(String auxiliarySku) {
            return auxiliarySku(Output.of(auxiliarySku));
        }

        /**
         * @param dnsServers A list of IP Addresses defining the DNS Servers which should be used for this Network Interface.
         * 
         * > **Note:** Configuring DNS Servers on the Network Interface will override the DNS Servers defined on the Virtual Network.
         * 
         * @return builder
         * 
         */
        public Builder dnsServers(@Nullable Output> dnsServers) {
            $.dnsServers = dnsServers;
            return this;
        }

        /**
         * @param dnsServers A list of IP Addresses defining the DNS Servers which should be used for this Network Interface.
         * 
         * > **Note:** Configuring DNS Servers on the Network Interface will override the DNS Servers defined on the Virtual Network.
         * 
         * @return builder
         * 
         */
        public Builder dnsServers(List dnsServers) {
            return dnsServers(Output.of(dnsServers));
        }

        /**
         * @param dnsServers A list of IP Addresses defining the DNS Servers which should be used for this Network Interface.
         * 
         * > **Note:** Configuring DNS Servers on the Network Interface will override the DNS Servers defined on the Virtual Network.
         * 
         * @return builder
         * 
         */
        public Builder dnsServers(String... dnsServers) {
            return dnsServers(List.of(dnsServers));
        }

        /**
         * @param edgeZone Specifies the Edge Zone within the Azure Region where this Network Interface should exist. Changing this forces a new Network Interface 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 Network Interface should exist. Changing this forces a new Network Interface to be created.
         * 
         * @return builder
         * 
         */
        public Builder edgeZone(String edgeZone) {
            return edgeZone(Output.of(edgeZone));
        }

        /**
         * @param internalDnsNameLabel The (relative) DNS Name used for internal communications between Virtual Machines in the same Virtual Network.
         * 
         * @return builder
         * 
         */
        public Builder internalDnsNameLabel(@Nullable Output internalDnsNameLabel) {
            $.internalDnsNameLabel = internalDnsNameLabel;
            return this;
        }

        /**
         * @param internalDnsNameLabel The (relative) DNS Name used for internal communications between Virtual Machines in the same Virtual Network.
         * 
         * @return builder
         * 
         */
        public Builder internalDnsNameLabel(String internalDnsNameLabel) {
            return internalDnsNameLabel(Output.of(internalDnsNameLabel));
        }

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

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

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

        /**
         * @param ipForwardingEnabled Should IP Forwarding be enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder ipForwardingEnabled(@Nullable Output ipForwardingEnabled) {
            $.ipForwardingEnabled = ipForwardingEnabled;
            return this;
        }

        /**
         * @param ipForwardingEnabled Should IP Forwarding be enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder ipForwardingEnabled(Boolean ipForwardingEnabled) {
            return ipForwardingEnabled(Output.of(ipForwardingEnabled));
        }

        /**
         * @param location The location where the Network Interface should exist. 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 where the Network Interface should exist. 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 Network Interface. 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 Network Interface. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

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

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

        /**
         * @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));
        }

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

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy