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

com.pulumi.awsnative.autoscaling.kotlin.inputs.ScalingPolicyCustomizedMetricSpecificationArgs.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: 1.24.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

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

import com.pulumi.awsnative.autoscaling.inputs.ScalingPolicyCustomizedMetricSpecificationArgs.builder
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.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property dimensions The dimensions of the metric.
 * Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.
 * @property metricName The name of the metric. To get the exact metric name, namespace, and dimensions, inspect the [Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Metric.html) object that is returned by a call to [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) .
 * @property metrics The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.
 * @property namespace The namespace of the metric.
 * @property statistic The statistic of the metric.
 * @property unit The unit of the metric. For a complete list of the units that CloudWatch supports, see the [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) data type in the *Amazon CloudWatch API Reference* .
 */
public data class ScalingPolicyCustomizedMetricSpecificationArgs(
    public val dimensions: Output>? = null,
    public val metricName: Output? = null,
    public val metrics: Output>? = null,
    public val namespace: Output? = null,
    public val statistic: Output? = null,
    public val unit: Output? = null,
) :
    ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.autoscaling.inputs.ScalingPolicyCustomizedMetricSpecificationArgs =
        com.pulumi.awsnative.autoscaling.inputs.ScalingPolicyCustomizedMetricSpecificationArgs.builder()
            .dimensions(
                dimensions?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .metricName(metricName?.applyValue({ args0 -> args0 }))
            .metrics(
                metrics?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .namespace(namespace?.applyValue({ args0 -> args0 }))
            .statistic(statistic?.applyValue({ args0 -> args0 }))
            .unit(unit?.applyValue({ args0 -> args0 })).build()
}

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

    private var metricName: Output? = null

    private var metrics: Output>? = null

    private var namespace: Output? = null

    private var statistic: Output? = null

    private var unit: Output? = null

    /**
     * @param value The dimensions of the metric.
     * Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.
     */
    @JvmName("upknhjahbvscnomb")
    public suspend fun dimensions(`value`: Output>) {
        this.dimensions = value
    }

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

    /**
     * @param values The dimensions of the metric.
     * Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.
     */
    @JvmName("jyqutnvebrwdferr")
    public suspend fun dimensions(values: List>) {
        this.dimensions = Output.all(values)
    }

    /**
     * @param value The name of the metric. To get the exact metric name, namespace, and dimensions, inspect the [Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Metric.html) object that is returned by a call to [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) .
     */
    @JvmName("cyeinnnjmhpjjsse")
    public suspend fun metricName(`value`: Output) {
        this.metricName = value
    }

    /**
     * @param value The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.
     */
    @JvmName("eloknktpgmrpkerf")
    public suspend fun metrics(`value`: Output>) {
        this.metrics = value
    }

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

    /**
     * @param values The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.
     */
    @JvmName("penuxjyjowvarpak")
    public suspend fun metrics(values: List>) {
        this.metrics = Output.all(values)
    }

    /**
     * @param value The namespace of the metric.
     */
    @JvmName("xlhxhjgowwoxmhkh")
    public suspend fun namespace(`value`: Output) {
        this.namespace = value
    }

    /**
     * @param value The statistic of the metric.
     */
    @JvmName("jgpqnutpkoroudnx")
    public suspend fun statistic(`value`: Output) {
        this.statistic = value
    }

    /**
     * @param value The unit of the metric. For a complete list of the units that CloudWatch supports, see the [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) data type in the *Amazon CloudWatch API Reference* .
     */
    @JvmName("qfknuomploivqgqv")
    public suspend fun unit(`value`: Output) {
        this.unit = value
    }

    /**
     * @param value The dimensions of the metric.
     * Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.
     */
    @JvmName("mvamcrhglaeelwhg")
    public suspend fun dimensions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dimensions = mapped
    }

    /**
     * @param argument The dimensions of the metric.
     * Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.
     */
    @JvmName("ownbakioxijemgyq")
    public suspend fun dimensions(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ScalingPolicyMetricDimensionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.dimensions = mapped
    }

    /**
     * @param argument The dimensions of the metric.
     * Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.
     */
    @JvmName("drcifrseshorecwp")
    public suspend fun dimensions(vararg argument: suspend ScalingPolicyMetricDimensionArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ScalingPolicyMetricDimensionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.dimensions = mapped
    }

    /**
     * @param argument The dimensions of the metric.
     * Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.
     */
    @JvmName("kkhwwrcdstiabgna")
    public suspend fun dimensions(argument: suspend ScalingPolicyMetricDimensionArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            ScalingPolicyMetricDimensionArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.dimensions = mapped
    }

    /**
     * @param values The dimensions of the metric.
     * Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.
     */
    @JvmName("ldhovmhfrvqiosvv")
    public suspend fun dimensions(vararg values: ScalingPolicyMetricDimensionArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.dimensions = mapped
    }

    /**
     * @param value The name of the metric. To get the exact metric name, namespace, and dimensions, inspect the [Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Metric.html) object that is returned by a call to [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) .
     */
    @JvmName("triserdwvuqckrop")
    public suspend fun metricName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metricName = mapped
    }

    /**
     * @param value The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.
     */
    @JvmName("gltjprlmkgkgteao")
    public suspend fun metrics(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metrics = mapped
    }

    /**
     * @param argument The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.
     */
    @JvmName("nocuiwxstudgravr")
    public suspend fun metrics(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ScalingPolicyTargetTrackingMetricDataQueryArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.metrics = mapped
    }

    /**
     * @param argument The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.
     */
    @JvmName("lswsihgljasswhsh")
    public suspend fun metrics(vararg argument: suspend ScalingPolicyTargetTrackingMetricDataQueryArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ScalingPolicyTargetTrackingMetricDataQueryArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.metrics = mapped
    }

    /**
     * @param argument The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.
     */
    @JvmName("eoqybdtaenaqjmmd")
    public suspend fun metrics(argument: suspend ScalingPolicyTargetTrackingMetricDataQueryArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            ScalingPolicyTargetTrackingMetricDataQueryArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.metrics = mapped
    }

    /**
     * @param values The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.
     */
    @JvmName("ooavfrumkiqlqwgh")
    public suspend fun metrics(vararg values: ScalingPolicyTargetTrackingMetricDataQueryArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.metrics = mapped
    }

    /**
     * @param value The namespace of the metric.
     */
    @JvmName("isvyxyhlakmdoupe")
    public suspend fun namespace(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.namespace = mapped
    }

    /**
     * @param value The statistic of the metric.
     */
    @JvmName("csswdltqpcvgpprv")
    public suspend fun statistic(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statistic = mapped
    }

    /**
     * @param value The unit of the metric. For a complete list of the units that CloudWatch supports, see the [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) data type in the *Amazon CloudWatch API Reference* .
     */
    @JvmName("riutcgxrojajbifk")
    public suspend fun unit(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.unit = mapped
    }

    internal fun build(): ScalingPolicyCustomizedMetricSpecificationArgs =
        ScalingPolicyCustomizedMetricSpecificationArgs(
            dimensions = dimensions,
            metricName = metricName,
            metrics = metrics,
            namespace = namespace,
            statistic = statistic,
            unit = unit,
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy