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

com.pulumi.azure.compute.kotlin.inputs.ScaleSetNetworkProfileIpConfigurationArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azure.compute.kotlin.inputs

import com.pulumi.azure.compute.inputs.ScaleSetNetworkProfileIpConfigurationArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property applicationGatewayBackendAddressPoolIds Specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application gateways. Multiple scale sets can use the same application gateway.
 * @property applicationSecurityGroupIds Specifies up to `20` application security group IDs.
 * @property loadBalancerBackendAddressPoolIds Specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
 * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
 * @property loadBalancerInboundNatRulesIds Specifies an array of references to inbound NAT pools for load balancers. A scale set can reference inbound NAT pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
 * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
 * @property name Specifies name of the IP configuration.
 * @property primary Specifies if this ip_configuration is the primary one.
 * @property publicIpAddressConfiguration Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration. The `public_ip_address_configuration` block is documented below.
 * @property subnetId Specifies the identifier of the subnet.
 */
public data class ScaleSetNetworkProfileIpConfigurationArgs(
    public val applicationGatewayBackendAddressPoolIds: Output>? = null,
    public val applicationSecurityGroupIds: Output>? = null,
    public val loadBalancerBackendAddressPoolIds: Output>? = null,
    public val loadBalancerInboundNatRulesIds: Output>? = null,
    public val name: Output,
    public val primary: Output,
    public val publicIpAddressConfiguration:
    Output? = null,
    public val subnetId: Output,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.compute.inputs.ScaleSetNetworkProfileIpConfigurationArgs =
        com.pulumi.azure.compute.inputs.ScaleSetNetworkProfileIpConfigurationArgs.builder()
            .applicationGatewayBackendAddressPoolIds(
                applicationGatewayBackendAddressPoolIds?.applyValue({ args0 ->
                    args0.map({ args0 -> args0 })
                }),
            )
            .applicationSecurityGroupIds(
                applicationSecurityGroupIds?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .loadBalancerBackendAddressPoolIds(
                loadBalancerBackendAddressPoolIds?.applyValue({ args0 ->
                    args0.map({ args0 -> args0 })
                }),
            )
            .loadBalancerInboundNatRulesIds(
                loadBalancerInboundNatRulesIds?.applyValue({ args0 ->
                    args0.map({ args0 -> args0 })
                }),
            )
            .name(name.applyValue({ args0 -> args0 }))
            .primary(primary.applyValue({ args0 -> args0 }))
            .publicIpAddressConfiguration(
                publicIpAddressConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .subnetId(subnetId.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ScaleSetNetworkProfileIpConfigurationArgs].
 */
@PulumiTagMarker
public class ScaleSetNetworkProfileIpConfigurationArgsBuilder internal constructor() {
    private var applicationGatewayBackendAddressPoolIds: Output>? = null

    private var applicationSecurityGroupIds: Output>? = null

    private var loadBalancerBackendAddressPoolIds: Output>? = null

    private var loadBalancerInboundNatRulesIds: Output>? = null

    private var name: Output? = null

    private var primary: Output? = null

    private var publicIpAddressConfiguration:
        Output? = null

    private var subnetId: Output? = null

    /**
     * @param value Specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application gateways. Multiple scale sets can use the same application gateway.
     */
    @JvmName("idemjkexuivyjerg")
    public suspend fun applicationGatewayBackendAddressPoolIds(`value`: Output>) {
        this.applicationGatewayBackendAddressPoolIds = value
    }

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

    /**
     * @param values Specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application gateways. Multiple scale sets can use the same application gateway.
     */
    @JvmName("hpvxfgiisumlgjki")
    public suspend fun applicationGatewayBackendAddressPoolIds(values: List>) {
        this.applicationGatewayBackendAddressPoolIds = Output.all(values)
    }

    /**
     * @param value Specifies up to `20` application security group IDs.
     */
    @JvmName("lihmhpnjmelvkxyb")
    public suspend fun applicationSecurityGroupIds(`value`: Output>) {
        this.applicationSecurityGroupIds = value
    }

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

    /**
     * @param values Specifies up to `20` application security group IDs.
     */
    @JvmName("kubcipouwrifuyyc")
    public suspend fun applicationSecurityGroupIds(values: List>) {
        this.applicationSecurityGroupIds = Output.all(values)
    }

    /**
     * @param value Specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
     * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
     */
    @JvmName("mgcefredcveotgkj")
    public suspend fun loadBalancerBackendAddressPoolIds(`value`: Output>) {
        this.loadBalancerBackendAddressPoolIds = value
    }

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

    /**
     * @param values Specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
     * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
     */
    @JvmName("jdhtdbyhmlidgsxk")
    public suspend fun loadBalancerBackendAddressPoolIds(values: List>) {
        this.loadBalancerBackendAddressPoolIds = Output.all(values)
    }

    /**
     * @param value Specifies an array of references to inbound NAT pools for load balancers. A scale set can reference inbound NAT pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
     * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
     */
    @JvmName("lrvnhedhtaufyjwe")
    public suspend fun loadBalancerInboundNatRulesIds(`value`: Output>) {
        this.loadBalancerInboundNatRulesIds = value
    }

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

    /**
     * @param values Specifies an array of references to inbound NAT pools for load balancers. A scale set can reference inbound NAT pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
     * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
     */
    @JvmName("hnxewadnrdyoxqfp")
    public suspend fun loadBalancerInboundNatRulesIds(values: List>) {
        this.loadBalancerInboundNatRulesIds = Output.all(values)
    }

    /**
     * @param value Specifies name of the IP configuration.
     */
    @JvmName("tsyfqfxhomsehlmy")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Specifies if this ip_configuration is the primary one.
     */
    @JvmName("inesgnlsghwvovsr")
    public suspend fun primary(`value`: Output) {
        this.primary = value
    }

    /**
     * @param value Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration. The `public_ip_address_configuration` block is documented below.
     */
    @JvmName("bhfoffwndmhwlyoq")
    public suspend
    fun publicIpAddressConfiguration(`value`: Output) {
        this.publicIpAddressConfiguration = value
    }

    /**
     * @param value Specifies the identifier of the subnet.
     */
    @JvmName("ihrmfkaxkwdhcixj")
    public suspend fun subnetId(`value`: Output) {
        this.subnetId = value
    }

    /**
     * @param value Specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application gateways. Multiple scale sets can use the same application gateway.
     */
    @JvmName("ecwibbvkpleevchk")
    public suspend fun applicationGatewayBackendAddressPoolIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.applicationGatewayBackendAddressPoolIds = mapped
    }

    /**
     * @param values Specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application gateways. Multiple scale sets can use the same application gateway.
     */
    @JvmName("sooyxkuahmfbmrgx")
    public suspend fun applicationGatewayBackendAddressPoolIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.applicationGatewayBackendAddressPoolIds = mapped
    }

    /**
     * @param value Specifies up to `20` application security group IDs.
     */
    @JvmName("mwlwrepvkrydwgau")
    public suspend fun applicationSecurityGroupIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.applicationSecurityGroupIds = mapped
    }

    /**
     * @param values Specifies up to `20` application security group IDs.
     */
    @JvmName("wdplyhhwwxihvyfp")
    public suspend fun applicationSecurityGroupIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.applicationSecurityGroupIds = mapped
    }

    /**
     * @param value Specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
     * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
     */
    @JvmName("lbtjwivuxwoervmc")
    public suspend fun loadBalancerBackendAddressPoolIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loadBalancerBackendAddressPoolIds = mapped
    }

    /**
     * @param values Specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
     * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
     */
    @JvmName("aumajgbeglglevla")
    public suspend fun loadBalancerBackendAddressPoolIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.loadBalancerBackendAddressPoolIds = mapped
    }

    /**
     * @param value Specifies an array of references to inbound NAT pools for load balancers. A scale set can reference inbound NAT pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
     * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
     */
    @JvmName("tcvrtsgjbromekrw")
    public suspend fun loadBalancerInboundNatRulesIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loadBalancerInboundNatRulesIds = mapped
    }

    /**
     * @param values Specifies an array of references to inbound NAT pools for load balancers. A scale set can reference inbound NAT pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
     * > **NOTE:** When using this field you'll also need to configure a Rule for the Load Balancer, and use a `depends_on` between this resource and the Load Balancer Rule.
     */
    @JvmName("egtlsimwbvgelvtm")
    public suspend fun loadBalancerInboundNatRulesIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.loadBalancerInboundNatRulesIds = mapped
    }

    /**
     * @param value Specifies name of the IP configuration.
     */
    @JvmName("iyptkmfulcowkhad")
    public suspend fun name(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Specifies if this ip_configuration is the primary one.
     */
    @JvmName("dfxkakwxpotdebnj")
    public suspend fun primary(`value`: Boolean) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.primary = mapped
    }

    /**
     * @param value Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration. The `public_ip_address_configuration` block is documented below.
     */
    @JvmName("cgaxuhgdrehstjya")
    public suspend
    fun publicIpAddressConfiguration(`value`: ScaleSetNetworkProfileIpConfigurationPublicIpAddressConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.publicIpAddressConfiguration = mapped
    }

    /**
     * @param argument Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration. The `public_ip_address_configuration` block is documented below.
     */
    @JvmName("ambecwkipkvjcktv")
    public suspend
    fun publicIpAddressConfiguration(argument: suspend ScaleSetNetworkProfileIpConfigurationPublicIpAddressConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped =
            ScaleSetNetworkProfileIpConfigurationPublicIpAddressConfigurationArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.publicIpAddressConfiguration = mapped
    }

    /**
     * @param value Specifies the identifier of the subnet.
     */
    @JvmName("ctvpiiyfttuinabq")
    public suspend fun subnetId(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.subnetId = mapped
    }

    internal fun build(): ScaleSetNetworkProfileIpConfigurationArgs =
        ScaleSetNetworkProfileIpConfigurationArgs(
            applicationGatewayBackendAddressPoolIds = applicationGatewayBackendAddressPoolIds,
            applicationSecurityGroupIds = applicationSecurityGroupIds,
            loadBalancerBackendAddressPoolIds = loadBalancerBackendAddressPoolIds,
            loadBalancerInboundNatRulesIds = loadBalancerInboundNatRulesIds,
            name = name ?: throw PulumiNullFieldException("name"),
            primary = primary ?: throw PulumiNullFieldException("primary"),
            publicIpAddressConfiguration = publicIpAddressConfiguration,
            subnetId = subnetId ?: throw PulumiNullFieldException("subnetId"),
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy