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

com.pulumi.gcp.monitoring.kotlin.inputs.AlertPolicyConditionConditionThresholdArgs.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: 8.12.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.monitoring.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs.builder
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.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property aggregations Specifies the alignment of data points in
 * individual time series as well as how to
 * combine the retrieved time series together
 * (such as when aggregating multiple streams
 * on each resource to a single stream for each
 * resource or when aggregating streams across
 * all members of a group of resources).
 * Multiple aggregations are applied in the
 * order specified.This field is similar to the
 * one in the MetricService.ListTimeSeries
 * request. It is advisable to use the
 * ListTimeSeries method when debugging this
 * field.
 * Structure is documented below.
 * @property comparison The comparison to apply between the time
 * series (indicated by filter and aggregation)
 * and the threshold (indicated by
 * threshold_value). The comparison is applied
 * on each time series, with the time series on
 * the left-hand side and the threshold on the
 * right-hand side. Only COMPARISON_LT and
 * COMPARISON_GT are supported currently.
 * Possible values are: `COMPARISON_GT`, `COMPARISON_GE`, `COMPARISON_LT`, `COMPARISON_LE`, `COMPARISON_EQ`, `COMPARISON_NE`.
 * @property denominatorAggregations Specifies the alignment of data points in
 * individual time series selected by
 * denominatorFilter as well as how to combine
 * the retrieved time series together (such as
 * when aggregating multiple streams on each
 * resource to a single stream for each
 * resource or when aggregating streams across
 * all members of a group of resources).When
 * computing ratios, the aggregations and
 * denominator_aggregations fields must use the
 * same alignment period and produce time
 * series that have the same periodicity and
 * labels.This field is similar to the one in
 * the MetricService.ListTimeSeries request. It
 * is advisable to use the ListTimeSeries
 * method when debugging this field.
 * Structure is documented below.
 * @property denominatorFilter A filter that identifies a time series that
 * should be used as the denominator of a ratio
 * that will be compared with the threshold. If
 * a denominator_filter is specified, the time
 * series specified by the filter field will be
 * used as the numerator.The filter is similar
 * to the one that is specified in the
 * MetricService.ListTimeSeries request (that
 * call is useful to verify the time series
 * that will be retrieved / processed) and must
 * specify the metric type and optionally may
 * contain restrictions on resource type,
 * resource labels, and metric labels. This
 * field may not exceed 2048 Unicode characters
 * in length.
 * @property duration The amount of time that a time series must
 * violate the threshold to be considered
 * failing. Currently, only values that are a
 * multiple of a minute--e.g., 0, 60, 120, or
 * 300 seconds--are supported. If an invalid
 * value is given, an error will be returned.
 * When choosing a duration, it is useful to
 * keep in mind the frequency of the underlying
 * time series data (which may also be affected
 * by any alignments specified in the
 * aggregations field); a good duration is long
 * enough so that a single outlier does not
 * generate spurious alerts, but short enough
 * that unhealthy states are detected and
 * alerted on quickly.
 * @property evaluationMissingData A condition control that determines how
 * metric-threshold conditions are evaluated when
 * data stops arriving.
 * Possible values are: `EVALUATION_MISSING_DATA_INACTIVE`, `EVALUATION_MISSING_DATA_ACTIVE`, `EVALUATION_MISSING_DATA_NO_OP`.
 * @property filter A filter that identifies which time series
 * should be compared with the threshold.The
 * filter is similar to the one that is
 * specified in the
 * MetricService.ListTimeSeries request (that
 * call is useful to verify the time series
 * that will be retrieved / processed) and must
 * specify the metric type and optionally may
 * contain restrictions on resource type,
 * resource labels, and metric labels. This
 * field may not exceed 2048 Unicode characters
 * in length.
 * @property forecastOptions When this field is present, the `MetricThreshold`
 * condition forecasts whether the time series is
 * predicted to violate the threshold within the
 * `forecastHorizon`. When this field is not set, the
 * `MetricThreshold` tests the current value of the
 * timeseries against the threshold.
 * Structure is documented below.
 * @property thresholdValue A value against which to compare the time
 * series.
 * @property trigger The number/percent of time series for which
 * the comparison must hold in order for the
 * condition to trigger. If unspecified, then
 * the condition will trigger if the comparison
 * is true for any of the time series that have
 * been identified by filter and aggregations,
 * or by the ratio, if denominator_filter and
 * denominator_aggregations are specified.
 * Structure is documented below.
 */
public data class AlertPolicyConditionConditionThresholdArgs(
    public val aggregations: Output>? =
        null,
    public val comparison: Output,
    public val denominatorAggregations: Output>? = null,
    public val denominatorFilter: Output? = null,
    public val duration: Output,
    public val evaluationMissingData: Output? = null,
    public val filter: Output? = null,
    public val forecastOptions: Output? =
        null,
    public val thresholdValue: Output? = null,
    public val trigger: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs = com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs.builder()
        .aggregations(
            aggregations?.applyValue({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                })
            }),
        )
        .comparison(comparison.applyValue({ args0 -> args0 }))
        .denominatorAggregations(
            denominatorAggregations?.applyValue({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                })
            }),
        )
        .denominatorFilter(denominatorFilter?.applyValue({ args0 -> args0 }))
        .duration(duration.applyValue({ args0 -> args0 }))
        .evaluationMissingData(evaluationMissingData?.applyValue({ args0 -> args0 }))
        .filter(filter?.applyValue({ args0 -> args0 }))
        .forecastOptions(forecastOptions?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
        .thresholdValue(thresholdValue?.applyValue({ args0 -> args0 }))
        .trigger(trigger?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) })).build()
}

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

    private var comparison: Output? = null

    private var denominatorAggregations:
        Output>? = null

    private var denominatorFilter: Output? = null

    private var duration: Output? = null

    private var evaluationMissingData: Output? = null

    private var filter: Output? = null

    private var forecastOptions: Output? =
        null

    private var thresholdValue: Output? = null

    private var trigger: Output? = null

    /**
     * @param value Specifies the alignment of data points in
     * individual time series as well as how to
     * combine the retrieved time series together
     * (such as when aggregating multiple streams
     * on each resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).
     * Multiple aggregations are applied in the
     * order specified.This field is similar to the
     * one in the MetricService.ListTimeSeries
     * request. It is advisable to use the
     * ListTimeSeries method when debugging this
     * field.
     * Structure is documented below.
     */
    @JvmName("tcdctpmagqbmplbg")
    public suspend fun aggregations(`value`: Output>) {
        this.aggregations = value
    }

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

    /**
     * @param values Specifies the alignment of data points in
     * individual time series as well as how to
     * combine the retrieved time series together
     * (such as when aggregating multiple streams
     * on each resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).
     * Multiple aggregations are applied in the
     * order specified.This field is similar to the
     * one in the MetricService.ListTimeSeries
     * request. It is advisable to use the
     * ListTimeSeries method when debugging this
     * field.
     * Structure is documented below.
     */
    @JvmName("jsiyboqgpfpwnoji")
    public suspend fun aggregations(values: List>) {
        this.aggregations = Output.all(values)
    }

    /**
     * @param value The comparison to apply between the time
     * series (indicated by filter and aggregation)
     * and the threshold (indicated by
     * threshold_value). The comparison is applied
     * on each time series, with the time series on
     * the left-hand side and the threshold on the
     * right-hand side. Only COMPARISON_LT and
     * COMPARISON_GT are supported currently.
     * Possible values are: `COMPARISON_GT`, `COMPARISON_GE`, `COMPARISON_LT`, `COMPARISON_LE`, `COMPARISON_EQ`, `COMPARISON_NE`.
     */
    @JvmName("piiuoorjoiwcuxbh")
    public suspend fun comparison(`value`: Output) {
        this.comparison = value
    }

    /**
     * @param value Specifies the alignment of data points in
     * individual time series selected by
     * denominatorFilter as well as how to combine
     * the retrieved time series together (such as
     * when aggregating multiple streams on each
     * resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).When
     * computing ratios, the aggregations and
     * denominator_aggregations fields must use the
     * same alignment period and produce time
     * series that have the same periodicity and
     * labels.This field is similar to the one in
     * the MetricService.ListTimeSeries request. It
     * is advisable to use the ListTimeSeries
     * method when debugging this field.
     * Structure is documented below.
     */
    @JvmName("iotxbmesnaaphkkn")
    public suspend fun denominatorAggregations(`value`: Output>) {
        this.denominatorAggregations = value
    }

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

    /**
     * @param values Specifies the alignment of data points in
     * individual time series selected by
     * denominatorFilter as well as how to combine
     * the retrieved time series together (such as
     * when aggregating multiple streams on each
     * resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).When
     * computing ratios, the aggregations and
     * denominator_aggregations fields must use the
     * same alignment period and produce time
     * series that have the same periodicity and
     * labels.This field is similar to the one in
     * the MetricService.ListTimeSeries request. It
     * is advisable to use the ListTimeSeries
     * method when debugging this field.
     * Structure is documented below.
     */
    @JvmName("csiqjqouiciexxqo")
    public suspend fun denominatorAggregations(values: List>) {
        this.denominatorAggregations = Output.all(values)
    }

    /**
     * @param value A filter that identifies a time series that
     * should be used as the denominator of a ratio
     * that will be compared with the threshold. If
     * a denominator_filter is specified, the time
     * series specified by the filter field will be
     * used as the numerator.The filter is similar
     * to the one that is specified in the
     * MetricService.ListTimeSeries request (that
     * call is useful to verify the time series
     * that will be retrieved / processed) and must
     * specify the metric type and optionally may
     * contain restrictions on resource type,
     * resource labels, and metric labels. This
     * field may not exceed 2048 Unicode characters
     * in length.
     */
    @JvmName("rwyblpwnykwdiosx")
    public suspend fun denominatorFilter(`value`: Output) {
        this.denominatorFilter = value
    }

    /**
     * @param value The amount of time that a time series must
     * violate the threshold to be considered
     * failing. Currently, only values that are a
     * multiple of a minute--e.g., 0, 60, 120, or
     * 300 seconds--are supported. If an invalid
     * value is given, an error will be returned.
     * When choosing a duration, it is useful to
     * keep in mind the frequency of the underlying
     * time series data (which may also be affected
     * by any alignments specified in the
     * aggregations field); a good duration is long
     * enough so that a single outlier does not
     * generate spurious alerts, but short enough
     * that unhealthy states are detected and
     * alerted on quickly.
     */
    @JvmName("bpyqcaijokdegrcj")
    public suspend fun duration(`value`: Output) {
        this.duration = value
    }

    /**
     * @param value A condition control that determines how
     * metric-threshold conditions are evaluated when
     * data stops arriving.
     * Possible values are: `EVALUATION_MISSING_DATA_INACTIVE`, `EVALUATION_MISSING_DATA_ACTIVE`, `EVALUATION_MISSING_DATA_NO_OP`.
     */
    @JvmName("vrckqjgrhalmruvh")
    public suspend fun evaluationMissingData(`value`: Output) {
        this.evaluationMissingData = value
    }

    /**
     * @param value A filter that identifies which time series
     * should be compared with the threshold.The
     * filter is similar to the one that is
     * specified in the
     * MetricService.ListTimeSeries request (that
     * call is useful to verify the time series
     * that will be retrieved / processed) and must
     * specify the metric type and optionally may
     * contain restrictions on resource type,
     * resource labels, and metric labels. This
     * field may not exceed 2048 Unicode characters
     * in length.
     */
    @JvmName("tetxichcqrtsibro")
    public suspend fun filter(`value`: Output) {
        this.filter = value
    }

    /**
     * @param value When this field is present, the `MetricThreshold`
     * condition forecasts whether the time series is
     * predicted to violate the threshold within the
     * `forecastHorizon`. When this field is not set, the
     * `MetricThreshold` tests the current value of the
     * timeseries against the threshold.
     * Structure is documented below.
     */
    @JvmName("ekxasmnageheldvp")
    public suspend fun forecastOptions(`value`: Output) {
        this.forecastOptions = value
    }

    /**
     * @param value A value against which to compare the time
     * series.
     */
    @JvmName("wbgurxsmdhtqcjmn")
    public suspend fun thresholdValue(`value`: Output) {
        this.thresholdValue = value
    }

    /**
     * @param value The number/percent of time series for which
     * the comparison must hold in order for the
     * condition to trigger. If unspecified, then
     * the condition will trigger if the comparison
     * is true for any of the time series that have
     * been identified by filter and aggregations,
     * or by the ratio, if denominator_filter and
     * denominator_aggregations are specified.
     * Structure is documented below.
     */
    @JvmName("sqndrmebyfufwhbg")
    public suspend fun trigger(`value`: Output) {
        this.trigger = value
    }

    /**
     * @param value Specifies the alignment of data points in
     * individual time series as well as how to
     * combine the retrieved time series together
     * (such as when aggregating multiple streams
     * on each resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).
     * Multiple aggregations are applied in the
     * order specified.This field is similar to the
     * one in the MetricService.ListTimeSeries
     * request. It is advisable to use the
     * ListTimeSeries method when debugging this
     * field.
     * Structure is documented below.
     */
    @JvmName("oeqevooehtyuxgho")
    public suspend fun aggregations(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.aggregations = mapped
    }

    /**
     * @param argument Specifies the alignment of data points in
     * individual time series as well as how to
     * combine the retrieved time series together
     * (such as when aggregating multiple streams
     * on each resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).
     * Multiple aggregations are applied in the
     * order specified.This field is similar to the
     * one in the MetricService.ListTimeSeries
     * request. It is advisable to use the
     * ListTimeSeries method when debugging this
     * field.
     * Structure is documented below.
     */
    @JvmName("ppakailynfhospei")
    public suspend fun aggregations(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            AlertPolicyConditionConditionThresholdAggregationArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.aggregations = mapped
    }

    /**
     * @param argument Specifies the alignment of data points in
     * individual time series as well as how to
     * combine the retrieved time series together
     * (such as when aggregating multiple streams
     * on each resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).
     * Multiple aggregations are applied in the
     * order specified.This field is similar to the
     * one in the MetricService.ListTimeSeries
     * request. It is advisable to use the
     * ListTimeSeries method when debugging this
     * field.
     * Structure is documented below.
     */
    @JvmName("ukfilirmrysrfnoo")
    public suspend fun aggregations(vararg argument: suspend AlertPolicyConditionConditionThresholdAggregationArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            AlertPolicyConditionConditionThresholdAggregationArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.aggregations = mapped
    }

    /**
     * @param argument Specifies the alignment of data points in
     * individual time series as well as how to
     * combine the retrieved time series together
     * (such as when aggregating multiple streams
     * on each resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).
     * Multiple aggregations are applied in the
     * order specified.This field is similar to the
     * one in the MetricService.ListTimeSeries
     * request. It is advisable to use the
     * ListTimeSeries method when debugging this
     * field.
     * Structure is documented below.
     */
    @JvmName("jkapxfjluqxigfns")
    public suspend fun aggregations(argument: suspend AlertPolicyConditionConditionThresholdAggregationArgsBuilder.() -> Unit) {
        val toBeMapped =
            listOf(
                AlertPolicyConditionConditionThresholdAggregationArgsBuilder().applySuspend {
                    argument()
                }.build(),
            )
        val mapped = of(toBeMapped)
        this.aggregations = mapped
    }

    /**
     * @param values Specifies the alignment of data points in
     * individual time series as well as how to
     * combine the retrieved time series together
     * (such as when aggregating multiple streams
     * on each resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).
     * Multiple aggregations are applied in the
     * order specified.This field is similar to the
     * one in the MetricService.ListTimeSeries
     * request. It is advisable to use the
     * ListTimeSeries method when debugging this
     * field.
     * Structure is documented below.
     */
    @JvmName("kqsockbofcwoelly")
    public suspend fun aggregations(vararg values: AlertPolicyConditionConditionThresholdAggregationArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.aggregations = mapped
    }

    /**
     * @param value The comparison to apply between the time
     * series (indicated by filter and aggregation)
     * and the threshold (indicated by
     * threshold_value). The comparison is applied
     * on each time series, with the time series on
     * the left-hand side and the threshold on the
     * right-hand side. Only COMPARISON_LT and
     * COMPARISON_GT are supported currently.
     * Possible values are: `COMPARISON_GT`, `COMPARISON_GE`, `COMPARISON_LT`, `COMPARISON_LE`, `COMPARISON_EQ`, `COMPARISON_NE`.
     */
    @JvmName("vcumjnuloitaoyqr")
    public suspend fun comparison(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.comparison = mapped
    }

    /**
     * @param value Specifies the alignment of data points in
     * individual time series selected by
     * denominatorFilter as well as how to combine
     * the retrieved time series together (such as
     * when aggregating multiple streams on each
     * resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).When
     * computing ratios, the aggregations and
     * denominator_aggregations fields must use the
     * same alignment period and produce time
     * series that have the same periodicity and
     * labels.This field is similar to the one in
     * the MetricService.ListTimeSeries request. It
     * is advisable to use the ListTimeSeries
     * method when debugging this field.
     * Structure is documented below.
     */
    @JvmName("yipthbhepkxocont")
    public suspend fun denominatorAggregations(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.denominatorAggregations = mapped
    }

    /**
     * @param argument Specifies the alignment of data points in
     * individual time series selected by
     * denominatorFilter as well as how to combine
     * the retrieved time series together (such as
     * when aggregating multiple streams on each
     * resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).When
     * computing ratios, the aggregations and
     * denominator_aggregations fields must use the
     * same alignment period and produce time
     * series that have the same periodicity and
     * labels.This field is similar to the one in
     * the MetricService.ListTimeSeries request. It
     * is advisable to use the ListTimeSeries
     * method when debugging this field.
     * Structure is documented below.
     */
    @JvmName("fnqehcdwstcpeloo")
    public suspend fun denominatorAggregations(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            AlertPolicyConditionConditionThresholdDenominatorAggregationArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.denominatorAggregations = mapped
    }

    /**
     * @param argument Specifies the alignment of data points in
     * individual time series selected by
     * denominatorFilter as well as how to combine
     * the retrieved time series together (such as
     * when aggregating multiple streams on each
     * resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).When
     * computing ratios, the aggregations and
     * denominator_aggregations fields must use the
     * same alignment period and produce time
     * series that have the same periodicity and
     * labels.This field is similar to the one in
     * the MetricService.ListTimeSeries request. It
     * is advisable to use the ListTimeSeries
     * method when debugging this field.
     * Structure is documented below.
     */
    @JvmName("pxuyhwiclfcotlid")
    public suspend fun denominatorAggregations(vararg argument: suspend AlertPolicyConditionConditionThresholdDenominatorAggregationArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            AlertPolicyConditionConditionThresholdDenominatorAggregationArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.denominatorAggregations = mapped
    }

    /**
     * @param argument Specifies the alignment of data points in
     * individual time series selected by
     * denominatorFilter as well as how to combine
     * the retrieved time series together (such as
     * when aggregating multiple streams on each
     * resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).When
     * computing ratios, the aggregations and
     * denominator_aggregations fields must use the
     * same alignment period and produce time
     * series that have the same periodicity and
     * labels.This field is similar to the one in
     * the MetricService.ListTimeSeries request. It
     * is advisable to use the ListTimeSeries
     * method when debugging this field.
     * Structure is documented below.
     */
    @JvmName("jwjwfqmgffieudoi")
    public suspend fun denominatorAggregations(argument: suspend AlertPolicyConditionConditionThresholdDenominatorAggregationArgsBuilder.() -> Unit) {
        val toBeMapped =
            listOf(
                AlertPolicyConditionConditionThresholdDenominatorAggregationArgsBuilder().applySuspend
                    { argument() }.build(),
            )
        val mapped = of(toBeMapped)
        this.denominatorAggregations = mapped
    }

    /**
     * @param values Specifies the alignment of data points in
     * individual time series selected by
     * denominatorFilter as well as how to combine
     * the retrieved time series together (such as
     * when aggregating multiple streams on each
     * resource to a single stream for each
     * resource or when aggregating streams across
     * all members of a group of resources).When
     * computing ratios, the aggregations and
     * denominator_aggregations fields must use the
     * same alignment period and produce time
     * series that have the same periodicity and
     * labels.This field is similar to the one in
     * the MetricService.ListTimeSeries request. It
     * is advisable to use the ListTimeSeries
     * method when debugging this field.
     * Structure is documented below.
     */
    @JvmName("ehranntarxaqwqxa")
    public suspend fun denominatorAggregations(vararg values: AlertPolicyConditionConditionThresholdDenominatorAggregationArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.denominatorAggregations = mapped
    }

    /**
     * @param value A filter that identifies a time series that
     * should be used as the denominator of a ratio
     * that will be compared with the threshold. If
     * a denominator_filter is specified, the time
     * series specified by the filter field will be
     * used as the numerator.The filter is similar
     * to the one that is specified in the
     * MetricService.ListTimeSeries request (that
     * call is useful to verify the time series
     * that will be retrieved / processed) and must
     * specify the metric type and optionally may
     * contain restrictions on resource type,
     * resource labels, and metric labels. This
     * field may not exceed 2048 Unicode characters
     * in length.
     */
    @JvmName("sjcikgvovfvgerda")
    public suspend fun denominatorFilter(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.denominatorFilter = mapped
    }

    /**
     * @param value The amount of time that a time series must
     * violate the threshold to be considered
     * failing. Currently, only values that are a
     * multiple of a minute--e.g., 0, 60, 120, or
     * 300 seconds--are supported. If an invalid
     * value is given, an error will be returned.
     * When choosing a duration, it is useful to
     * keep in mind the frequency of the underlying
     * time series data (which may also be affected
     * by any alignments specified in the
     * aggregations field); a good duration is long
     * enough so that a single outlier does not
     * generate spurious alerts, but short enough
     * that unhealthy states are detected and
     * alerted on quickly.
     */
    @JvmName("psocvltijiacmond")
    public suspend fun duration(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.duration = mapped
    }

    /**
     * @param value A condition control that determines how
     * metric-threshold conditions are evaluated when
     * data stops arriving.
     * Possible values are: `EVALUATION_MISSING_DATA_INACTIVE`, `EVALUATION_MISSING_DATA_ACTIVE`, `EVALUATION_MISSING_DATA_NO_OP`.
     */
    @JvmName("emgwsuqpsnqrknnp")
    public suspend fun evaluationMissingData(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.evaluationMissingData = mapped
    }

    /**
     * @param value A filter that identifies which time series
     * should be compared with the threshold.The
     * filter is similar to the one that is
     * specified in the
     * MetricService.ListTimeSeries request (that
     * call is useful to verify the time series
     * that will be retrieved / processed) and must
     * specify the metric type and optionally may
     * contain restrictions on resource type,
     * resource labels, and metric labels. This
     * field may not exceed 2048 Unicode characters
     * in length.
     */
    @JvmName("kmlqrxgmmxygfnll")
    public suspend fun filter(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.filter = mapped
    }

    /**
     * @param value When this field is present, the `MetricThreshold`
     * condition forecasts whether the time series is
     * predicted to violate the threshold within the
     * `forecastHorizon`. When this field is not set, the
     * `MetricThreshold` tests the current value of the
     * timeseries against the threshold.
     * Structure is documented below.
     */
    @JvmName("kxmeryqvpotopyaa")
    public suspend fun forecastOptions(`value`: AlertPolicyConditionConditionThresholdForecastOptionsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.forecastOptions = mapped
    }

    /**
     * @param argument When this field is present, the `MetricThreshold`
     * condition forecasts whether the time series is
     * predicted to violate the threshold within the
     * `forecastHorizon`. When this field is not set, the
     * `MetricThreshold` tests the current value of the
     * timeseries against the threshold.
     * Structure is documented below.
     */
    @JvmName("ikfhskvugbmdushg")
    public suspend fun forecastOptions(argument: suspend AlertPolicyConditionConditionThresholdForecastOptionsArgsBuilder.() -> Unit) {
        val toBeMapped =
            AlertPolicyConditionConditionThresholdForecastOptionsArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.forecastOptions = mapped
    }

    /**
     * @param value A value against which to compare the time
     * series.
     */
    @JvmName("ygcmujnyfivrjbny")
    public suspend fun thresholdValue(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.thresholdValue = mapped
    }

    /**
     * @param value The number/percent of time series for which
     * the comparison must hold in order for the
     * condition to trigger. If unspecified, then
     * the condition will trigger if the comparison
     * is true for any of the time series that have
     * been identified by filter and aggregations,
     * or by the ratio, if denominator_filter and
     * denominator_aggregations are specified.
     * Structure is documented below.
     */
    @JvmName("fndmwjwkliabcxda")
    public suspend fun trigger(`value`: AlertPolicyConditionConditionThresholdTriggerArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.trigger = mapped
    }

    /**
     * @param argument The number/percent of time series for which
     * the comparison must hold in order for the
     * condition to trigger. If unspecified, then
     * the condition will trigger if the comparison
     * is true for any of the time series that have
     * been identified by filter and aggregations,
     * or by the ratio, if denominator_filter and
     * denominator_aggregations are specified.
     * Structure is documented below.
     */
    @JvmName("evvtsivwmefuuiim")
    public suspend fun trigger(argument: suspend AlertPolicyConditionConditionThresholdTriggerArgsBuilder.() -> Unit) {
        val toBeMapped = AlertPolicyConditionConditionThresholdTriggerArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.trigger = mapped
    }

    internal fun build(): AlertPolicyConditionConditionThresholdArgs =
        AlertPolicyConditionConditionThresholdArgs(
            aggregations = aggregations,
            comparison = comparison ?: throw PulumiNullFieldException("comparison"),
            denominatorAggregations = denominatorAggregations,
            denominatorFilter = denominatorFilter,
            duration = duration ?: throw PulumiNullFieldException("duration"),
            evaluationMissingData = evaluationMissingData,
            filter = filter,
            forecastOptions = forecastOptions,
            thresholdValue = thresholdValue,
            trigger = trigger,
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy