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

com.pulumi.awsnative.autoscaling.kotlin.inputs.ScalingPolicyPredictiveScalingMetricSpecificationArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 0.122.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.autoscaling.kotlin.inputs

import com.pulumi.awsnative.autoscaling.inputs.ScalingPolicyPredictiveScalingMetricSpecificationArgs.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.Double
import kotlin.Suppress
import kotlin.Unit
import kotlin.jvm.JvmName

/**
 *
 * @property customizedCapacityMetricSpecification The customized capacity metric specification.
 * @property customizedLoadMetricSpecification The customized load metric specification.
 * @property customizedScalingMetricSpecification The customized scaling metric specification.
 * @property predefinedLoadMetricSpecification The predefined load metric specification.
 * @property predefinedMetricPairSpecification The predefined metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
 * @property predefinedScalingMetricSpecification The predefined scaling metric specification.
 * @property targetValue Specifies the target utilization.
 * > Some metrics are based on a count instead of a percentage, such as the request count for an Application Load Balancer or the number of messages in an SQS queue. If the scaling policy specifies one of these metrics, specify the target utilization as the optimal average request or message count per instance during any one-minute interval.
 */
public data class ScalingPolicyPredictiveScalingMetricSpecificationArgs(
    public val customizedCapacityMetricSpecification: Output? = null,
    public val customizedLoadMetricSpecification: Output? = null,
    public val customizedScalingMetricSpecification: Output? = null,
    public val predefinedLoadMetricSpecification: Output? = null,
    public val predefinedMetricPairSpecification: Output? = null,
    public val predefinedScalingMetricSpecification: Output? = null,
    public val targetValue: Output,
) :
    ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.autoscaling.inputs.ScalingPolicyPredictiveScalingMetricSpecificationArgs =
        com.pulumi.awsnative.autoscaling.inputs.ScalingPolicyPredictiveScalingMetricSpecificationArgs.builder()
            .customizedCapacityMetricSpecification(
                customizedCapacityMetricSpecification?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .customizedLoadMetricSpecification(
                customizedLoadMetricSpecification?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .customizedScalingMetricSpecification(
                customizedScalingMetricSpecification?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .predefinedLoadMetricSpecification(
                predefinedLoadMetricSpecification?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .predefinedMetricPairSpecification(
                predefinedMetricPairSpecification?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .predefinedScalingMetricSpecification(
                predefinedScalingMetricSpecification?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .targetValue(targetValue.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ScalingPolicyPredictiveScalingMetricSpecificationArgs].
 */
@PulumiTagMarker
public class ScalingPolicyPredictiveScalingMetricSpecificationArgsBuilder internal constructor() {
    private var customizedCapacityMetricSpecification:
        Output? = null

    private var customizedLoadMetricSpecification:
        Output? = null

    private var customizedScalingMetricSpecification:
        Output? = null

    private var predefinedLoadMetricSpecification:
        Output? = null

    private var predefinedMetricPairSpecification:
        Output? = null

    private var predefinedScalingMetricSpecification:
        Output? = null

    private var targetValue: Output? = null

    /**
     * @param value The customized capacity metric specification.
     */
    @JvmName("kodslmnbhldfingr")
    public suspend fun customizedCapacityMetricSpecification(`value`: Output) {
        this.customizedCapacityMetricSpecification = value
    }

    /**
     * @param value The customized load metric specification.
     */
    @JvmName("tlydkvckcuuhwrpn")
    public suspend fun customizedLoadMetricSpecification(`value`: Output) {
        this.customizedLoadMetricSpecification = value
    }

    /**
     * @param value The customized scaling metric specification.
     */
    @JvmName("nntxgdsebmavihcb")
    public suspend fun customizedScalingMetricSpecification(`value`: Output) {
        this.customizedScalingMetricSpecification = value
    }

    /**
     * @param value The predefined load metric specification.
     */
    @JvmName("wrqrnytcnmivwarc")
    public suspend fun predefinedLoadMetricSpecification(`value`: Output) {
        this.predefinedLoadMetricSpecification = value
    }

    /**
     * @param value The predefined metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
     */
    @JvmName("mvjcdpjsdbnrviio")
    public suspend fun predefinedMetricPairSpecification(`value`: Output) {
        this.predefinedMetricPairSpecification = value
    }

    /**
     * @param value The predefined scaling metric specification.
     */
    @JvmName("pqppypyfwvhrhvby")
    public suspend fun predefinedScalingMetricSpecification(`value`: Output) {
        this.predefinedScalingMetricSpecification = value
    }

    /**
     * @param value Specifies the target utilization.
     * > Some metrics are based on a count instead of a percentage, such as the request count for an Application Load Balancer or the number of messages in an SQS queue. If the scaling policy specifies one of these metrics, specify the target utilization as the optimal average request or message count per instance during any one-minute interval.
     */
    @JvmName("kjelmtokjbkeenjo")
    public suspend fun targetValue(`value`: Output) {
        this.targetValue = value
    }

    /**
     * @param value The customized capacity metric specification.
     */
    @JvmName("rerijisqkeyslysc")
    public suspend fun customizedCapacityMetricSpecification(`value`: ScalingPolicyPredictiveScalingCustomizedCapacityMetricArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customizedCapacityMetricSpecification = mapped
    }

    /**
     * @param argument The customized capacity metric specification.
     */
    @JvmName("fdnfrjxxcpyjxuix")
    public suspend fun customizedCapacityMetricSpecification(argument: suspend ScalingPolicyPredictiveScalingCustomizedCapacityMetricArgsBuilder.() -> Unit) {
        val toBeMapped =
            ScalingPolicyPredictiveScalingCustomizedCapacityMetricArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.customizedCapacityMetricSpecification = mapped
    }

    /**
     * @param value The customized load metric specification.
     */
    @JvmName("hdvggloleteuoqgl")
    public suspend fun customizedLoadMetricSpecification(`value`: ScalingPolicyPredictiveScalingCustomizedLoadMetricArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customizedLoadMetricSpecification = mapped
    }

    /**
     * @param argument The customized load metric specification.
     */
    @JvmName("pgsmorhuuqnhaudq")
    public suspend fun customizedLoadMetricSpecification(argument: suspend ScalingPolicyPredictiveScalingCustomizedLoadMetricArgsBuilder.() -> Unit) {
        val toBeMapped = ScalingPolicyPredictiveScalingCustomizedLoadMetricArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.customizedLoadMetricSpecification = mapped
    }

    /**
     * @param value The customized scaling metric specification.
     */
    @JvmName("wwxkaqbtsdtgirff")
    public suspend fun customizedScalingMetricSpecification(`value`: ScalingPolicyPredictiveScalingCustomizedScalingMetricArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customizedScalingMetricSpecification = mapped
    }

    /**
     * @param argument The customized scaling metric specification.
     */
    @JvmName("ukglyxrosglhognc")
    public suspend fun customizedScalingMetricSpecification(argument: suspend ScalingPolicyPredictiveScalingCustomizedScalingMetricArgsBuilder.() -> Unit) {
        val toBeMapped =
            ScalingPolicyPredictiveScalingCustomizedScalingMetricArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.customizedScalingMetricSpecification = mapped
    }

    /**
     * @param value The predefined load metric specification.
     */
    @JvmName("mtmtmrratuddasbw")
    public suspend fun predefinedLoadMetricSpecification(`value`: ScalingPolicyPredictiveScalingPredefinedLoadMetricArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.predefinedLoadMetricSpecification = mapped
    }

    /**
     * @param argument The predefined load metric specification.
     */
    @JvmName("kmwajogocjcgwluf")
    public suspend fun predefinedLoadMetricSpecification(argument: suspend ScalingPolicyPredictiveScalingPredefinedLoadMetricArgsBuilder.() -> Unit) {
        val toBeMapped = ScalingPolicyPredictiveScalingPredefinedLoadMetricArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.predefinedLoadMetricSpecification = mapped
    }

    /**
     * @param value The predefined metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
     */
    @JvmName("irgkcrbiwgfyqomv")
    public suspend fun predefinedMetricPairSpecification(`value`: ScalingPolicyPredictiveScalingPredefinedMetricPairArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.predefinedMetricPairSpecification = mapped
    }

    /**
     * @param argument The predefined metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
     */
    @JvmName("fkouandkyslmmtmy")
    public suspend fun predefinedMetricPairSpecification(argument: suspend ScalingPolicyPredictiveScalingPredefinedMetricPairArgsBuilder.() -> Unit) {
        val toBeMapped = ScalingPolicyPredictiveScalingPredefinedMetricPairArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.predefinedMetricPairSpecification = mapped
    }

    /**
     * @param value The predefined scaling metric specification.
     */
    @JvmName("dmqukfruffqnmoje")
    public suspend fun predefinedScalingMetricSpecification(`value`: ScalingPolicyPredictiveScalingPredefinedScalingMetricArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.predefinedScalingMetricSpecification = mapped
    }

    /**
     * @param argument The predefined scaling metric specification.
     */
    @JvmName("qwqrxklgunhffuii")
    public suspend fun predefinedScalingMetricSpecification(argument: suspend ScalingPolicyPredictiveScalingPredefinedScalingMetricArgsBuilder.() -> Unit) {
        val toBeMapped =
            ScalingPolicyPredictiveScalingPredefinedScalingMetricArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.predefinedScalingMetricSpecification = mapped
    }

    /**
     * @param value Specifies the target utilization.
     * > Some metrics are based on a count instead of a percentage, such as the request count for an Application Load Balancer or the number of messages in an SQS queue. If the scaling policy specifies one of these metrics, specify the target utilization as the optimal average request or message count per instance during any one-minute interval.
     */
    @JvmName("xqwbblsfcnqhpvbh")
    public suspend fun targetValue(`value`: Double) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.targetValue = mapped
    }

    internal fun build(): ScalingPolicyPredictiveScalingMetricSpecificationArgs =
        ScalingPolicyPredictiveScalingMetricSpecificationArgs(
            customizedCapacityMetricSpecification = customizedCapacityMetricSpecification,
            customizedLoadMetricSpecification = customizedLoadMetricSpecification,
            customizedScalingMetricSpecification = customizedScalingMetricSpecification,
            predefinedLoadMetricSpecification = predefinedLoadMetricSpecification,
            predefinedMetricPairSpecification = predefinedMetricPairSpecification,
            predefinedScalingMetricSpecification = predefinedScalingMetricSpecification,
            targetValue = targetValue ?: throw PulumiNullFieldException("targetValue"),
        )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy