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

com.pulumi.azurenative.apimanagement.kotlin.inputs.AdditionalLocationArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.apimanagement.kotlin.inputs

import com.pulumi.azurenative.apimanagement.inputs.AdditionalLocationArgs.builder
import com.pulumi.azurenative.apimanagement.kotlin.enums.NatGatewayState
import com.pulumi.core.Either
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

/**
 * Description of an additional API Management resource location.
 * @property disableGateway Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in this additional location.
 * @property location The location name of the additional region among Azure Data center regions.
 * @property natGatewayState Property can be used to enable NAT Gateway for this API Management service.
 * @property publicIpAddressId Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the location. Supported only for Premium SKU being deployed in Virtual Network.
 * @property sku SKU properties of the API Management service.
 * @property virtualNetworkConfiguration Virtual network configuration for the location.
 * @property zones A list of availability zones denoting where the resource needs to come from.
 */
public data class AdditionalLocationArgs(
    public val disableGateway: Output? = null,
    public val location: Output,
    public val natGatewayState: Output>? = null,
    public val publicIpAddressId: Output? = null,
    public val sku: Output,
    public val virtualNetworkConfiguration: Output? = null,
    public val zones: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.apimanagement.inputs.AdditionalLocationArgs =
        com.pulumi.azurenative.apimanagement.inputs.AdditionalLocationArgs.builder()
            .disableGateway(disableGateway?.applyValue({ args0 -> args0 }))
            .location(location.applyValue({ args0 -> args0 }))
            .natGatewayState(
                natGatewayState?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .publicIpAddressId(publicIpAddressId?.applyValue({ args0 -> args0 }))
            .sku(sku.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .virtualNetworkConfiguration(
                virtualNetworkConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .zones(zones?.applyValue({ args0 -> args0.map({ args0 -> args0 }) })).build()
}

/**
 * Builder for [AdditionalLocationArgs].
 */
@PulumiTagMarker
public class AdditionalLocationArgsBuilder internal constructor() {
    private var disableGateway: Output? = null

    private var location: Output? = null

    private var natGatewayState: Output>? = null

    private var publicIpAddressId: Output? = null

    private var sku: Output? = null

    private var virtualNetworkConfiguration: Output? = null

    private var zones: Output>? = null

    /**
     * @param value Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in this additional location.
     */
    @JvmName("uyigxlkpufqiksyx")
    public suspend fun disableGateway(`value`: Output) {
        this.disableGateway = value
    }

    /**
     * @param value The location name of the additional region among Azure Data center regions.
     */
    @JvmName("ffqfdjqhnwvfljrx")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value Property can be used to enable NAT Gateway for this API Management service.
     */
    @JvmName("cohviqgnnnlauvhj")
    public suspend fun natGatewayState(`value`: Output>) {
        this.natGatewayState = value
    }

    /**
     * @param value Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the location. Supported only for Premium SKU being deployed in Virtual Network.
     */
    @JvmName("uaqvggberxtocxaa")
    public suspend fun publicIpAddressId(`value`: Output) {
        this.publicIpAddressId = value
    }

    /**
     * @param value SKU properties of the API Management service.
     */
    @JvmName("tlokhjjgbamxodew")
    public suspend fun sku(`value`: Output) {
        this.sku = value
    }

    /**
     * @param value Virtual network configuration for the location.
     */
    @JvmName("wvvltcyftlsepkup")
    public suspend fun virtualNetworkConfiguration(`value`: Output) {
        this.virtualNetworkConfiguration = value
    }

    /**
     * @param value A list of availability zones denoting where the resource needs to come from.
     */
    @JvmName("dwedniuvkfhvpstf")
    public suspend fun zones(`value`: Output>) {
        this.zones = value
    }

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

    /**
     * @param values A list of availability zones denoting where the resource needs to come from.
     */
    @JvmName("elkkgrmlmvdcmleg")
    public suspend fun zones(values: List>) {
        this.zones = Output.all(values)
    }

    /**
     * @param value Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in this additional location.
     */
    @JvmName("rlrnhdjveqymqmmf")
    public suspend fun disableGateway(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.disableGateway = mapped
    }

    /**
     * @param value The location name of the additional region among Azure Data center regions.
     */
    @JvmName("dfolsixdrkhoyecm")
    public suspend fun location(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value Property can be used to enable NAT Gateway for this API Management service.
     */
    @JvmName("wmanahyhyxxyupti")
    public suspend fun natGatewayState(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.natGatewayState = mapped
    }

    /**
     * @param value Property can be used to enable NAT Gateway for this API Management service.
     */
    @JvmName("atpfyvxdepmirlgk")
    public fun natGatewayState(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.natGatewayState = mapped
    }

    /**
     * @param value Property can be used to enable NAT Gateway for this API Management service.
     */
    @JvmName("fimfnlpvfcfwrvmu")
    public fun natGatewayState(`value`: NatGatewayState) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.natGatewayState = mapped
    }

    /**
     * @param value Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the location. Supported only for Premium SKU being deployed in Virtual Network.
     */
    @JvmName("stweqrojqwgbpxmx")
    public suspend fun publicIpAddressId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.publicIpAddressId = mapped
    }

    /**
     * @param value SKU properties of the API Management service.
     */
    @JvmName("gepowhksuxmmngca")
    public suspend fun sku(`value`: ApiManagementServiceSkuPropertiesArgs) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.sku = mapped
    }

    /**
     * @param argument SKU properties of the API Management service.
     */
    @JvmName("ryypvxfydhxonhnn")
    public suspend fun sku(argument: suspend ApiManagementServiceSkuPropertiesArgsBuilder.() -> Unit) {
        val toBeMapped = ApiManagementServiceSkuPropertiesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.sku = mapped
    }

    /**
     * @param value Virtual network configuration for the location.
     */
    @JvmName("jxwbsdhtypdlhcic")
    public suspend fun virtualNetworkConfiguration(`value`: VirtualNetworkConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.virtualNetworkConfiguration = mapped
    }

    /**
     * @param argument Virtual network configuration for the location.
     */
    @JvmName("nmvakqfvcvqbltsq")
    public suspend fun virtualNetworkConfiguration(argument: suspend VirtualNetworkConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = VirtualNetworkConfigurationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.virtualNetworkConfiguration = mapped
    }

    /**
     * @param value A list of availability zones denoting where the resource needs to come from.
     */
    @JvmName("cwphfancusxgvcqy")
    public suspend fun zones(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.zones = mapped
    }

    /**
     * @param values A list of availability zones denoting where the resource needs to come from.
     */
    @JvmName("rmhllyqnimtokejm")
    public suspend fun zones(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.zones = mapped
    }

    internal fun build(): AdditionalLocationArgs = AdditionalLocationArgs(
        disableGateway = disableGateway,
        location = location ?: throw PulumiNullFieldException("location"),
        natGatewayState = natGatewayState,
        publicIpAddressId = publicIpAddressId,
        sku = sku ?: throw PulumiNullFieldException("sku"),
        virtualNetworkConfiguration = virtualNetworkConfiguration,
        zones = zones,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy