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

com.pulumi.azurenative.network.kotlin.LoadBalancerBackendAddressPoolArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azurenative.network.kotlin

import com.pulumi.azurenative.network.LoadBalancerBackendAddressPoolArgs.builder
import com.pulumi.azurenative.network.kotlin.inputs.GatewayLoadBalancerTunnelInterfaceArgs
import com.pulumi.azurenative.network.kotlin.inputs.GatewayLoadBalancerTunnelInterfaceArgsBuilder
import com.pulumi.azurenative.network.kotlin.inputs.LoadBalancerBackendAddressArgs
import com.pulumi.azurenative.network.kotlin.inputs.LoadBalancerBackendAddressArgsBuilder
import com.pulumi.azurenative.network.kotlin.inputs.SubResourceArgs
import com.pulumi.azurenative.network.kotlin.inputs.SubResourceArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Pool of backend IP addresses.
 * Azure REST API version: 2023-02-01. Prior API version in Azure Native 1.x: 2020-11-01.
 * Other available API versions: 2023-04-01, 2023-05-01, 2023-06-01, 2023-09-01, 2023-11-01, 2024-01-01.
 * ## Example Usage
 * ### Update load balancer backend pool with backend addresses containing virtual network and  IP address.
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var loadBalancerBackendAddressPool = new AzureNative.Network.LoadBalancerBackendAddressPool("loadBalancerBackendAddressPool", new()
 *     {
 *         BackendAddressPoolName = "backend",
 *         LoadBalancerBackendAddresses = new[]
 *         {
 *             new AzureNative.Network.Inputs.LoadBalancerBackendAddressArgs
 *             {
 *                 IpAddress = "10.0.0.4",
 *                 Name = "address1",
 *                 VirtualNetwork = new AzureNative.Network.Inputs.SubResourceArgs
 *                 {
 *                     Id = "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnetlb",
 *                 },
 *             },
 *             new AzureNative.Network.Inputs.LoadBalancerBackendAddressArgs
 *             {
 *                 IpAddress = "10.0.0.5",
 *                 Name = "address2",
 *                 VirtualNetwork = new AzureNative.Network.Inputs.SubResourceArgs
 *                 {
 *                     Id = "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnetlb",
 *                 },
 *             },
 *         },
 *         LoadBalancerName = "lb",
 *         ResourceGroupName = "testrg",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	network "github.com/pulumi/pulumi-azure-native-sdk/network/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := network.NewLoadBalancerBackendAddressPool(ctx, "loadBalancerBackendAddressPool", &network.LoadBalancerBackendAddressPoolArgs{
 * 			BackendAddressPoolName: pulumi.String("backend"),
 * 			LoadBalancerBackendAddresses: network.LoadBalancerBackendAddressArray{
 * 				&network.LoadBalancerBackendAddressArgs{
 * 					IpAddress: pulumi.String("10.0.0.4"),
 * 					Name:      pulumi.String("address1"),
 * 					VirtualNetwork: &network.SubResourceArgs{
 * 						Id: pulumi.String("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnetlb"),
 * 					},
 * 				},
 * 				&network.LoadBalancerBackendAddressArgs{
 * 					IpAddress: pulumi.String("10.0.0.5"),
 * 					Name:      pulumi.String("address2"),
 * 					VirtualNetwork: &network.SubResourceArgs{
 * 						Id: pulumi.String("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnetlb"),
 * 					},
 * 				},
 * 			},
 * 			LoadBalancerName:  pulumi.String("lb"),
 * 			ResourceGroupName: pulumi.String("testrg"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.network.LoadBalancerBackendAddressPool;
 * import com.pulumi.azurenative.network.LoadBalancerBackendAddressPoolArgs;
 * import com.pulumi.azurenative.network.inputs.LoadBalancerBackendAddressArgs;
 * import com.pulumi.azurenative.network.inputs.SubResourceArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var loadBalancerBackendAddressPool = new LoadBalancerBackendAddressPool("loadBalancerBackendAddressPool", LoadBalancerBackendAddressPoolArgs.builder()
 *             .backendAddressPoolName("backend")
 *             .loadBalancerBackendAddresses(
 *                 LoadBalancerBackendAddressArgs.builder()
 *                     .ipAddress("10.0.0.4")
 *                     .name("address1")
 *                     .virtualNetwork(SubResourceArgs.builder()
 *                         .id("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnetlb")
 *                         .build())
 *                     .build(),
 *                 LoadBalancerBackendAddressArgs.builder()
 *                     .ipAddress("10.0.0.5")
 *                     .name("address2")
 *                     .virtualNetwork(SubResourceArgs.builder()
 *                         .id("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnetlb")
 *                         .build())
 *                     .build())
 *             .loadBalancerName("lb")
 *             .resourceGroupName("testrg")
 *             .build());
 *     }
 * }
 * ```
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:network:LoadBalancerBackendAddressPool backend /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}
 * ```
 * @property backendAddressPoolName The name of the backend address pool.
 * @property drainPeriodInSeconds Amount of seconds Load Balancer waits for before sending RESET to client and backend address.
 * @property id Resource ID.
 * @property loadBalancerBackendAddresses An array of backend addresses.
 * @property loadBalancerName The name of the load balancer.
 * @property location The location of the backend address pool.
 * @property name The name of the resource that is unique within the set of backend address pools used by the load balancer. This name can be used to access the resource.
 * @property resourceGroupName The name of the resource group.
 * @property tunnelInterfaces An array of gateway load balancer tunnel interfaces.
 * @property virtualNetwork A reference to a virtual network.
 */
public data class LoadBalancerBackendAddressPoolArgs(
    public val backendAddressPoolName: Output? = null,
    public val drainPeriodInSeconds: Output? = null,
    public val id: Output? = null,
    public val loadBalancerBackendAddresses: Output>? = null,
    public val loadBalancerName: Output? = null,
    public val location: Output? = null,
    public val name: Output? = null,
    public val resourceGroupName: Output? = null,
    public val tunnelInterfaces: Output>? = null,
    public val virtualNetwork: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.network.LoadBalancerBackendAddressPoolArgs =
        com.pulumi.azurenative.network.LoadBalancerBackendAddressPoolArgs.builder()
            .backendAddressPoolName(backendAddressPoolName?.applyValue({ args0 -> args0 }))
            .drainPeriodInSeconds(drainPeriodInSeconds?.applyValue({ args0 -> args0 }))
            .id(id?.applyValue({ args0 -> args0 }))
            .loadBalancerBackendAddresses(
                loadBalancerBackendAddresses?.applyValue({ args0 ->
                    args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .loadBalancerName(loadBalancerName?.applyValue({ args0 -> args0 }))
            .location(location?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .tunnelInterfaces(
                tunnelInterfaces?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .virtualNetwork(
                virtualNetwork?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            ).build()
}

/**
 * Builder for [LoadBalancerBackendAddressPoolArgs].
 */
@PulumiTagMarker
public class LoadBalancerBackendAddressPoolArgsBuilder internal constructor() {
    private var backendAddressPoolName: Output? = null

    private var drainPeriodInSeconds: Output? = null

    private var id: Output? = null

    private var loadBalancerBackendAddresses: Output>? = null

    private var loadBalancerName: Output? = null

    private var location: Output? = null

    private var name: Output? = null

    private var resourceGroupName: Output? = null

    private var tunnelInterfaces: Output>? = null

    private var virtualNetwork: Output? = null

    /**
     * @param value The name of the backend address pool.
     */
    @JvmName("etiakyfnwvrgmwik")
    public suspend fun backendAddressPoolName(`value`: Output) {
        this.backendAddressPoolName = value
    }

    /**
     * @param value Amount of seconds Load Balancer waits for before sending RESET to client and backend address.
     */
    @JvmName("ratmsjaibmhrvvwg")
    public suspend fun drainPeriodInSeconds(`value`: Output) {
        this.drainPeriodInSeconds = value
    }

    /**
     * @param value Resource ID.
     */
    @JvmName("bcdsoamftlxjsrai")
    public suspend fun id(`value`: Output) {
        this.id = value
    }

    /**
     * @param value An array of backend addresses.
     */
    @JvmName("atwkhrrrjjbqvbia")
    public suspend fun loadBalancerBackendAddresses(`value`: Output>) {
        this.loadBalancerBackendAddresses = value
    }

    @JvmName("ppxyvkysjewphwgh")
    public suspend fun loadBalancerBackendAddresses(vararg values: Output) {
        this.loadBalancerBackendAddresses = Output.all(values.asList())
    }

    /**
     * @param values An array of backend addresses.
     */
    @JvmName("ulbakndowxadjayv")
    public suspend fun loadBalancerBackendAddresses(values: List>) {
        this.loadBalancerBackendAddresses = Output.all(values)
    }

    /**
     * @param value The name of the load balancer.
     */
    @JvmName("nwstwegneifjahvw")
    public suspend fun loadBalancerName(`value`: Output) {
        this.loadBalancerName = value
    }

    /**
     * @param value The location of the backend address pool.
     */
    @JvmName("rdtpcxnlvjlgldok")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value The name of the resource that is unique within the set of backend address pools used by the load balancer. This name can be used to access the resource.
     */
    @JvmName("fvarwrsvamleehtx")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value The name of the resource group.
     */
    @JvmName("yohfephqeglcodkc")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value An array of gateway load balancer tunnel interfaces.
     */
    @JvmName("iuusjqjisclhgxeb")
    public suspend fun tunnelInterfaces(`value`: Output>) {
        this.tunnelInterfaces = value
    }

    @JvmName("sejqdhmbwwwwjcek")
    public suspend fun tunnelInterfaces(vararg values: Output) {
        this.tunnelInterfaces = Output.all(values.asList())
    }

    /**
     * @param values An array of gateway load balancer tunnel interfaces.
     */
    @JvmName("nmmkoftjvrwvxyau")
    public suspend fun tunnelInterfaces(values: List>) {
        this.tunnelInterfaces = Output.all(values)
    }

    /**
     * @param value A reference to a virtual network.
     */
    @JvmName("srslmeqshuhvgnuu")
    public suspend fun virtualNetwork(`value`: Output) {
        this.virtualNetwork = value
    }

    /**
     * @param value The name of the backend address pool.
     */
    @JvmName("phlfjdhojpdcjycl")
    public suspend fun backendAddressPoolName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.backendAddressPoolName = mapped
    }

    /**
     * @param value Amount of seconds Load Balancer waits for before sending RESET to client and backend address.
     */
    @JvmName("pjdlnbboenichoru")
    public suspend fun drainPeriodInSeconds(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.drainPeriodInSeconds = mapped
    }

    /**
     * @param value Resource ID.
     */
    @JvmName("gsiiquhpperrdwec")
    public suspend fun id(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.id = mapped
    }

    /**
     * @param value An array of backend addresses.
     */
    @JvmName("eisuyrijexcejrgb")
    public suspend fun loadBalancerBackendAddresses(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loadBalancerBackendAddresses = mapped
    }

    /**
     * @param argument An array of backend addresses.
     */
    @JvmName("dwlbrwcngldjsxqp")
    public suspend fun loadBalancerBackendAddresses(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            LoadBalancerBackendAddressArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.loadBalancerBackendAddresses = mapped
    }

    /**
     * @param argument An array of backend addresses.
     */
    @JvmName("tkblpyahqrqmrdgr")
    public suspend fun loadBalancerBackendAddresses(vararg argument: suspend LoadBalancerBackendAddressArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            LoadBalancerBackendAddressArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.loadBalancerBackendAddresses = mapped
    }

    /**
     * @param argument An array of backend addresses.
     */
    @JvmName("cngodhnggsyqblmv")
    public suspend fun loadBalancerBackendAddresses(argument: suspend LoadBalancerBackendAddressArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            LoadBalancerBackendAddressArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.loadBalancerBackendAddresses = mapped
    }

    /**
     * @param values An array of backend addresses.
     */
    @JvmName("xrkxcbhdfvagkjbe")
    public suspend fun loadBalancerBackendAddresses(vararg values: LoadBalancerBackendAddressArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.loadBalancerBackendAddresses = mapped
    }

    /**
     * @param value The name of the load balancer.
     */
    @JvmName("kipqlllcgcuinson")
    public suspend fun loadBalancerName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loadBalancerName = mapped
    }

    /**
     * @param value The location of the backend address pool.
     */
    @JvmName("sfpwdnbnoohblisc")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value The name of the resource that is unique within the set of backend address pools used by the load balancer. This name can be used to access the resource.
     */
    @JvmName("mrjmrjswpmgfjigh")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value The name of the resource group.
     */
    @JvmName("afyphqscerrthsbo")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value An array of gateway load balancer tunnel interfaces.
     */
    @JvmName("bhxhpgolcxvqhekm")
    public suspend fun tunnelInterfaces(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tunnelInterfaces = mapped
    }

    /**
     * @param argument An array of gateway load balancer tunnel interfaces.
     */
    @JvmName("edyhoxrufordjfqp")
    public suspend fun tunnelInterfaces(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            GatewayLoadBalancerTunnelInterfaceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.tunnelInterfaces = mapped
    }

    /**
     * @param argument An array of gateway load balancer tunnel interfaces.
     */
    @JvmName("qftmjqvovbciniwd")
    public suspend fun tunnelInterfaces(vararg argument: suspend GatewayLoadBalancerTunnelInterfaceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            GatewayLoadBalancerTunnelInterfaceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.tunnelInterfaces = mapped
    }

    /**
     * @param argument An array of gateway load balancer tunnel interfaces.
     */
    @JvmName("rrnubvxglypsopxg")
    public suspend fun tunnelInterfaces(argument: suspend GatewayLoadBalancerTunnelInterfaceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            GatewayLoadBalancerTunnelInterfaceArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.tunnelInterfaces = mapped
    }

    /**
     * @param values An array of gateway load balancer tunnel interfaces.
     */
    @JvmName("mctinpwhopdtxniy")
    public suspend fun tunnelInterfaces(vararg values: GatewayLoadBalancerTunnelInterfaceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tunnelInterfaces = mapped
    }

    /**
     * @param value A reference to a virtual network.
     */
    @JvmName("xktvobfbopbtwsur")
    public suspend fun virtualNetwork(`value`: SubResourceArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.virtualNetwork = mapped
    }

    /**
     * @param argument A reference to a virtual network.
     */
    @JvmName("bxngnpfssjoqhndv")
    public suspend fun virtualNetwork(argument: suspend SubResourceArgsBuilder.() -> Unit) {
        val toBeMapped = SubResourceArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.virtualNetwork = mapped
    }

    internal fun build(): LoadBalancerBackendAddressPoolArgs = LoadBalancerBackendAddressPoolArgs(
        backendAddressPoolName = backendAddressPoolName,
        drainPeriodInSeconds = drainPeriodInSeconds,
        id = id,
        loadBalancerBackendAddresses = loadBalancerBackendAddresses,
        loadBalancerName = loadBalancerName,
        location = location,
        name = name,
        resourceGroupName = resourceGroupName,
        tunnelInterfaces = tunnelInterfaces,
        virtualNetwork = virtualNetwork,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy