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

com.pulumi.awsnative.cloudformation.kotlin.inputs.StackSetOperationPreferencesArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.awsnative.cloudformation.kotlin.inputs

import com.pulumi.awsnative.cloudformation.inputs.StackSetOperationPreferencesArgs.builder
import com.pulumi.awsnative.cloudformation.kotlin.enums.StackSetConcurrencyMode
import com.pulumi.awsnative.cloudformation.kotlin.enums.StackSetRegionConcurrencyType
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * The user-specified preferences for how AWS CloudFormation performs a stack set operation.
 * @property concurrencyMode Specifies how the concurrency level behaves during the operation execution.
 * - `STRICT_FAILURE_TOLERANCE` : This option dynamically lowers the concurrency level to ensure the number of failed accounts never exceeds the value of `FailureToleranceCount` +1. The initial actual concurrency is set to the lower of either the value of the `MaxConcurrentCount` , or the value of `FailureToleranceCount` +1. The actual concurrency is then reduced proportionally by the number of failures. This is the default behavior.
 * If failure tolerance or Maximum concurrent accounts are set to percentages, the behavior is similar.
 * - `SOFT_FAILURE_TOLERANCE` : This option decouples `FailureToleranceCount` from the actual concurrency. This allows stack set operations to run at the concurrency level set by the `MaxConcurrentCount` value, or `MaxConcurrentPercentage` , regardless of the number of failures.
 * @property failureToleranceCount The number of accounts, per Region, for which this operation can fail before AWS CloudFormation stops the operation in that Region. If the operation is stopped in a Region, AWS CloudFormation doesn't attempt the operation in any subsequent Regions.
 * Conditional: You must specify either `FailureToleranceCount` or `FailureTolerancePercentage` (but not both).
 * @property failureTolerancePercentage The percentage of accounts, per Region, for which this stack operation can fail before AWS CloudFormation stops the operation in that Region. If the operation is stopped in a Region, AWS CloudFormation doesn't attempt the operation in any subsequent Regions.
 * When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds *down* to the next whole number.
 * Conditional: You must specify either `FailureToleranceCount` or `FailureTolerancePercentage` , but not both.
 * @property maxConcurrentCount The maximum number of accounts in which to perform this operation at one time. This is dependent on the value of `FailureToleranceCount` . `MaxConcurrentCount` is at most one more than the `FailureToleranceCount` .
 * Note that this setting lets you specify the *maximum* for operations. For large deployments, under certain circumstances the actual number of accounts acted upon concurrently may be lower due to service throttling.
 * Conditional: You must specify either `MaxConcurrentCount` or `MaxConcurrentPercentage` , but not both.
 * @property maxConcurrentPercentage The maximum percentage of accounts in which to perform this operation at one time.
 * When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds down to the next whole number. This is true except in cases where rounding down would result is zero. In this case, CloudFormation sets the number as one instead.
 * Note that this setting lets you specify the *maximum* for operations. For large deployments, under certain circumstances the actual number of accounts acted upon concurrently may be lower due to service throttling.
 * Conditional: You must specify either `MaxConcurrentCount` or `MaxConcurrentPercentage` , but not both.
 * @property regionConcurrencyType The concurrency type of deploying StackSets operations in Regions, could be in parallel or one Region at a time.
 * @property regionOrder The order of the Regions where you want to perform the stack operation.
 * > `RegionOrder` isn't followed if `AutoDeployment` is enabled.
 */
public data class StackSetOperationPreferencesArgs(
    public val concurrencyMode: Output? = null,
    public val failureToleranceCount: Output? = null,
    public val failureTolerancePercentage: Output? = null,
    public val maxConcurrentCount: Output? = null,
    public val maxConcurrentPercentage: Output? = null,
    public val regionConcurrencyType: Output? = null,
    public val regionOrder: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.cloudformation.inputs.StackSetOperationPreferencesArgs = com.pulumi.awsnative.cloudformation.inputs.StackSetOperationPreferencesArgs.builder()
        .concurrencyMode(concurrencyMode?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
        .failureToleranceCount(failureToleranceCount?.applyValue({ args0 -> args0 }))
        .failureTolerancePercentage(failureTolerancePercentage?.applyValue({ args0 -> args0 }))
        .maxConcurrentCount(maxConcurrentCount?.applyValue({ args0 -> args0 }))
        .maxConcurrentPercentage(maxConcurrentPercentage?.applyValue({ args0 -> args0 }))
        .regionConcurrencyType(
            regionConcurrencyType?.applyValue({ args0 ->
                args0.let({ args0 ->
                    args0.toJava()
                })
            }),
        )
        .regionOrder(regionOrder?.applyValue({ args0 -> args0.map({ args0 -> args0 }) })).build()
}

/**
 * Builder for [StackSetOperationPreferencesArgs].
 */
@PulumiTagMarker
public class StackSetOperationPreferencesArgsBuilder internal constructor() {
    private var concurrencyMode: Output? = null

    private var failureToleranceCount: Output? = null

    private var failureTolerancePercentage: Output? = null

    private var maxConcurrentCount: Output? = null

    private var maxConcurrentPercentage: Output? = null

    private var regionConcurrencyType: Output? = null

    private var regionOrder: Output>? = null

    /**
     * @param value Specifies how the concurrency level behaves during the operation execution.
     * - `STRICT_FAILURE_TOLERANCE` : This option dynamically lowers the concurrency level to ensure the number of failed accounts never exceeds the value of `FailureToleranceCount` +1. The initial actual concurrency is set to the lower of either the value of the `MaxConcurrentCount` , or the value of `FailureToleranceCount` +1. The actual concurrency is then reduced proportionally by the number of failures. This is the default behavior.
     * If failure tolerance or Maximum concurrent accounts are set to percentages, the behavior is similar.
     * - `SOFT_FAILURE_TOLERANCE` : This option decouples `FailureToleranceCount` from the actual concurrency. This allows stack set operations to run at the concurrency level set by the `MaxConcurrentCount` value, or `MaxConcurrentPercentage` , regardless of the number of failures.
     */
    @JvmName("xfdfgswpmtttlxxl")
    public suspend fun concurrencyMode(`value`: Output) {
        this.concurrencyMode = value
    }

    /**
     * @param value The number of accounts, per Region, for which this operation can fail before AWS CloudFormation stops the operation in that Region. If the operation is stopped in a Region, AWS CloudFormation doesn't attempt the operation in any subsequent Regions.
     * Conditional: You must specify either `FailureToleranceCount` or `FailureTolerancePercentage` (but not both).
     */
    @JvmName("yoemyxjnrrmguwsu")
    public suspend fun failureToleranceCount(`value`: Output) {
        this.failureToleranceCount = value
    }

    /**
     * @param value The percentage of accounts, per Region, for which this stack operation can fail before AWS CloudFormation stops the operation in that Region. If the operation is stopped in a Region, AWS CloudFormation doesn't attempt the operation in any subsequent Regions.
     * When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds *down* to the next whole number.
     * Conditional: You must specify either `FailureToleranceCount` or `FailureTolerancePercentage` , but not both.
     */
    @JvmName("htrykacqvocsgvsb")
    public suspend fun failureTolerancePercentage(`value`: Output) {
        this.failureTolerancePercentage = value
    }

    /**
     * @param value The maximum number of accounts in which to perform this operation at one time. This is dependent on the value of `FailureToleranceCount` . `MaxConcurrentCount` is at most one more than the `FailureToleranceCount` .
     * Note that this setting lets you specify the *maximum* for operations. For large deployments, under certain circumstances the actual number of accounts acted upon concurrently may be lower due to service throttling.
     * Conditional: You must specify either `MaxConcurrentCount` or `MaxConcurrentPercentage` , but not both.
     */
    @JvmName("figjcifafxqhbccb")
    public suspend fun maxConcurrentCount(`value`: Output) {
        this.maxConcurrentCount = value
    }

    /**
     * @param value The maximum percentage of accounts in which to perform this operation at one time.
     * When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds down to the next whole number. This is true except in cases where rounding down would result is zero. In this case, CloudFormation sets the number as one instead.
     * Note that this setting lets you specify the *maximum* for operations. For large deployments, under certain circumstances the actual number of accounts acted upon concurrently may be lower due to service throttling.
     * Conditional: You must specify either `MaxConcurrentCount` or `MaxConcurrentPercentage` , but not both.
     */
    @JvmName("fuhyufajtmoghdse")
    public suspend fun maxConcurrentPercentage(`value`: Output) {
        this.maxConcurrentPercentage = value
    }

    /**
     * @param value The concurrency type of deploying StackSets operations in Regions, could be in parallel or one Region at a time.
     */
    @JvmName("xsjrkcnmfkyqeagq")
    public suspend fun regionConcurrencyType(`value`: Output) {
        this.regionConcurrencyType = value
    }

    /**
     * @param value The order of the Regions where you want to perform the stack operation.
     * > `RegionOrder` isn't followed if `AutoDeployment` is enabled.
     */
    @JvmName("phoipiehxocblkvw")
    public suspend fun regionOrder(`value`: Output>) {
        this.regionOrder = value
    }

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

    /**
     * @param values The order of the Regions where you want to perform the stack operation.
     * > `RegionOrder` isn't followed if `AutoDeployment` is enabled.
     */
    @JvmName("puypvllstjfbdkhu")
    public suspend fun regionOrder(values: List>) {
        this.regionOrder = Output.all(values)
    }

    /**
     * @param value Specifies how the concurrency level behaves during the operation execution.
     * - `STRICT_FAILURE_TOLERANCE` : This option dynamically lowers the concurrency level to ensure the number of failed accounts never exceeds the value of `FailureToleranceCount` +1. The initial actual concurrency is set to the lower of either the value of the `MaxConcurrentCount` , or the value of `FailureToleranceCount` +1. The actual concurrency is then reduced proportionally by the number of failures. This is the default behavior.
     * If failure tolerance or Maximum concurrent accounts are set to percentages, the behavior is similar.
     * - `SOFT_FAILURE_TOLERANCE` : This option decouples `FailureToleranceCount` from the actual concurrency. This allows stack set operations to run at the concurrency level set by the `MaxConcurrentCount` value, or `MaxConcurrentPercentage` , regardless of the number of failures.
     */
    @JvmName("mcbkxdcpfigjjgvi")
    public suspend fun concurrencyMode(`value`: StackSetConcurrencyMode?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.concurrencyMode = mapped
    }

    /**
     * @param value The number of accounts, per Region, for which this operation can fail before AWS CloudFormation stops the operation in that Region. If the operation is stopped in a Region, AWS CloudFormation doesn't attempt the operation in any subsequent Regions.
     * Conditional: You must specify either `FailureToleranceCount` or `FailureTolerancePercentage` (but not both).
     */
    @JvmName("kbcstssiltkeegur")
    public suspend fun failureToleranceCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.failureToleranceCount = mapped
    }

    /**
     * @param value The percentage of accounts, per Region, for which this stack operation can fail before AWS CloudFormation stops the operation in that Region. If the operation is stopped in a Region, AWS CloudFormation doesn't attempt the operation in any subsequent Regions.
     * When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds *down* to the next whole number.
     * Conditional: You must specify either `FailureToleranceCount` or `FailureTolerancePercentage` , but not both.
     */
    @JvmName("xfolpnntdcsqhegs")
    public suspend fun failureTolerancePercentage(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.failureTolerancePercentage = mapped
    }

    /**
     * @param value The maximum number of accounts in which to perform this operation at one time. This is dependent on the value of `FailureToleranceCount` . `MaxConcurrentCount` is at most one more than the `FailureToleranceCount` .
     * Note that this setting lets you specify the *maximum* for operations. For large deployments, under certain circumstances the actual number of accounts acted upon concurrently may be lower due to service throttling.
     * Conditional: You must specify either `MaxConcurrentCount` or `MaxConcurrentPercentage` , but not both.
     */
    @JvmName("ciuaahxyfksrabyl")
    public suspend fun maxConcurrentCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxConcurrentCount = mapped
    }

    /**
     * @param value The maximum percentage of accounts in which to perform this operation at one time.
     * When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds down to the next whole number. This is true except in cases where rounding down would result is zero. In this case, CloudFormation sets the number as one instead.
     * Note that this setting lets you specify the *maximum* for operations. For large deployments, under certain circumstances the actual number of accounts acted upon concurrently may be lower due to service throttling.
     * Conditional: You must specify either `MaxConcurrentCount` or `MaxConcurrentPercentage` , but not both.
     */
    @JvmName("bplomoreokhbohbx")
    public suspend fun maxConcurrentPercentage(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxConcurrentPercentage = mapped
    }

    /**
     * @param value The concurrency type of deploying StackSets operations in Regions, could be in parallel or one Region at a time.
     */
    @JvmName("axefjtmljjevlekh")
    public suspend fun regionConcurrencyType(`value`: StackSetRegionConcurrencyType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.regionConcurrencyType = mapped
    }

    /**
     * @param value The order of the Regions where you want to perform the stack operation.
     * > `RegionOrder` isn't followed if `AutoDeployment` is enabled.
     */
    @JvmName("jqalytjsijfegabi")
    public suspend fun regionOrder(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.regionOrder = mapped
    }

    /**
     * @param values The order of the Regions where you want to perform the stack operation.
     * > `RegionOrder` isn't followed if `AutoDeployment` is enabled.
     */
    @JvmName("biarqmhnxdjjiosj")
    public suspend fun regionOrder(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.regionOrder = mapped
    }

    internal fun build(): StackSetOperationPreferencesArgs = StackSetOperationPreferencesArgs(
        concurrencyMode = concurrencyMode,
        failureToleranceCount = failureToleranceCount,
        failureTolerancePercentage = failureTolerancePercentage,
        maxConcurrentCount = maxConcurrentCount,
        maxConcurrentPercentage = maxConcurrentPercentage,
        regionConcurrencyType = regionConcurrencyType,
        regionOrder = regionOrder,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy