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

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

package com.pulumi.gcp.compute.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.compute.inputs.RegionAutoscalerAutoscalingPolicyMetricArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.Double
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName

/**
 *
 * @property filter A filter string to be used as the filter string for
 * a Stackdriver Monitoring TimeSeries.list API call.
 * This filter is used to select a specific TimeSeries for
 * the purpose of autoscaling and to determine whether the metric
 * is exporting per-instance or per-group data.
 * You can only use the AND operator for joining selectors.
 * You can only use direct equality comparison operator (=) without
 * any functions for each selector.
 * You can specify the metric in both the filter string and in the
 * metric field. However, if specified in both places, the metric must
 * be identical.
 * The monitored resource type determines what kind of values are
 * expected for the metric. If it is a gce_instance, the autoscaler
 * expects the metric to include a separate TimeSeries for each
 * instance in a group. In such a case, you cannot filter on resource
 * labels.
 * If the resource type is any other value, the autoscaler expects
 * this metric to contain values that apply to the entire autoscaled
 * instance group and resource label filtering can be performed to
 * point autoscaler at the correct TimeSeries to scale upon.
 * This is called a per-group metric for the purpose of autoscaling.
 * If not specified, the type defaults to gce_instance.
 * You should provide a filter that is selective enough to pick just
 * one TimeSeries for the autoscaled group or for each of the instances
 * (if you are using gce_instance resource type). If multiple
 * TimeSeries are returned upon the query execution, the autoscaler
 * will sum their respective values to obtain its scaling value.
 * @property name The identifier (type) of the Stackdriver Monitoring metric.
 * The metric cannot have negative values.
 * The metric must have a value type of INT64 or DOUBLE.
 * @property singleInstanceAssignment If scaling is based on a per-group metric value that represents the
 * total amount of work to be done or resource usage, set this value to
 * an amount assigned for a single instance of the scaled group.
 * The autoscaler will keep the number of instances proportional to the
 * value of this metric, the metric itself should not change value due
 * to group resizing.
 * For example, a good metric to use with the target is
 * `pubsub.googleapis.com/subscription/num_undelivered_messages`
 * or a custom metric exporting the total number of requests coming to
 * your instances.
 * A bad example would be a metric exporting an average or median
 * latency, since this value can't include a chunk assignable to a
 * single instance, it could be better used with utilization_target
 * instead.
 * @property target The target value of the metric that autoscaler should
 * maintain. This must be a positive value. A utilization
 * metric scales number of virtual machines handling requests
 * to increase or decrease proportionally to the metric.
 * For example, a good metric to use as a utilizationTarget is
 * www.googleapis.com/compute/instance/network/received_bytes_count.
 * The autoscaler will work to keep this value constant for each
 * of the instances.
 * @property type Defines how target utilization value is expressed for a
 * Stackdriver Monitoring metric.
 * Possible values are: `GAUGE`, `DELTA_PER_SECOND`, `DELTA_PER_MINUTE`.
 */
public data class RegionAutoscalerAutoscalingPolicyMetricArgs(
    public val filter: Output? = null,
    public val name: Output,
    public val singleInstanceAssignment: Output? = null,
    public val target: Output? = null,
    public val type: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.compute.inputs.RegionAutoscalerAutoscalingPolicyMetricArgs =
        com.pulumi.gcp.compute.inputs.RegionAutoscalerAutoscalingPolicyMetricArgs.builder()
            .filter(filter?.applyValue({ args0 -> args0 }))
            .name(name.applyValue({ args0 -> args0 }))
            .singleInstanceAssignment(singleInstanceAssignment?.applyValue({ args0 -> args0 }))
            .target(target?.applyValue({ args0 -> args0 }))
            .type(type?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [RegionAutoscalerAutoscalingPolicyMetricArgs].
 */
@PulumiTagMarker
public class RegionAutoscalerAutoscalingPolicyMetricArgsBuilder internal constructor() {
    private var filter: Output? = null

    private var name: Output? = null

    private var singleInstanceAssignment: Output? = null

    private var target: Output? = null

    private var type: Output? = null

    /**
     * @param value A filter string to be used as the filter string for
     * a Stackdriver Monitoring TimeSeries.list API call.
     * This filter is used to select a specific TimeSeries for
     * the purpose of autoscaling and to determine whether the metric
     * is exporting per-instance or per-group data.
     * You can only use the AND operator for joining selectors.
     * You can only use direct equality comparison operator (=) without
     * any functions for each selector.
     * You can specify the metric in both the filter string and in the
     * metric field. However, if specified in both places, the metric must
     * be identical.
     * The monitored resource type determines what kind of values are
     * expected for the metric. If it is a gce_instance, the autoscaler
     * expects the metric to include a separate TimeSeries for each
     * instance in a group. In such a case, you cannot filter on resource
     * labels.
     * If the resource type is any other value, the autoscaler expects
     * this metric to contain values that apply to the entire autoscaled
     * instance group and resource label filtering can be performed to
     * point autoscaler at the correct TimeSeries to scale upon.
     * This is called a per-group metric for the purpose of autoscaling.
     * If not specified, the type defaults to gce_instance.
     * You should provide a filter that is selective enough to pick just
     * one TimeSeries for the autoscaled group or for each of the instances
     * (if you are using gce_instance resource type). If multiple
     * TimeSeries are returned upon the query execution, the autoscaler
     * will sum their respective values to obtain its scaling value.
     */
    @JvmName("wlxpuwetrhgosiqi")
    public suspend fun filter(`value`: Output) {
        this.filter = value
    }

    /**
     * @param value The identifier (type) of the Stackdriver Monitoring metric.
     * The metric cannot have negative values.
     * The metric must have a value type of INT64 or DOUBLE.
     */
    @JvmName("bsppdemavbsdvjek")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value If scaling is based on a per-group metric value that represents the
     * total amount of work to be done or resource usage, set this value to
     * an amount assigned for a single instance of the scaled group.
     * The autoscaler will keep the number of instances proportional to the
     * value of this metric, the metric itself should not change value due
     * to group resizing.
     * For example, a good metric to use with the target is
     * `pubsub.googleapis.com/subscription/num_undelivered_messages`
     * or a custom metric exporting the total number of requests coming to
     * your instances.
     * A bad example would be a metric exporting an average or median
     * latency, since this value can't include a chunk assignable to a
     * single instance, it could be better used with utilization_target
     * instead.
     */
    @JvmName("hctavywcfylrfirl")
    public suspend fun singleInstanceAssignment(`value`: Output) {
        this.singleInstanceAssignment = value
    }

    /**
     * @param value The target value of the metric that autoscaler should
     * maintain. This must be a positive value. A utilization
     * metric scales number of virtual machines handling requests
     * to increase or decrease proportionally to the metric.
     * For example, a good metric to use as a utilizationTarget is
     * www.googleapis.com/compute/instance/network/received_bytes_count.
     * The autoscaler will work to keep this value constant for each
     * of the instances.
     */
    @JvmName("yqmeglfjtibewicf")
    public suspend fun target(`value`: Output) {
        this.target = value
    }

    /**
     * @param value Defines how target utilization value is expressed for a
     * Stackdriver Monitoring metric.
     * Possible values are: `GAUGE`, `DELTA_PER_SECOND`, `DELTA_PER_MINUTE`.
     */
    @JvmName("ffpwggagdbfpahgn")
    public suspend fun type(`value`: Output) {
        this.type = value
    }

    /**
     * @param value A filter string to be used as the filter string for
     * a Stackdriver Monitoring TimeSeries.list API call.
     * This filter is used to select a specific TimeSeries for
     * the purpose of autoscaling and to determine whether the metric
     * is exporting per-instance or per-group data.
     * You can only use the AND operator for joining selectors.
     * You can only use direct equality comparison operator (=) without
     * any functions for each selector.
     * You can specify the metric in both the filter string and in the
     * metric field. However, if specified in both places, the metric must
     * be identical.
     * The monitored resource type determines what kind of values are
     * expected for the metric. If it is a gce_instance, the autoscaler
     * expects the metric to include a separate TimeSeries for each
     * instance in a group. In such a case, you cannot filter on resource
     * labels.
     * If the resource type is any other value, the autoscaler expects
     * this metric to contain values that apply to the entire autoscaled
     * instance group and resource label filtering can be performed to
     * point autoscaler at the correct TimeSeries to scale upon.
     * This is called a per-group metric for the purpose of autoscaling.
     * If not specified, the type defaults to gce_instance.
     * You should provide a filter that is selective enough to pick just
     * one TimeSeries for the autoscaled group or for each of the instances
     * (if you are using gce_instance resource type). If multiple
     * TimeSeries are returned upon the query execution, the autoscaler
     * will sum their respective values to obtain its scaling value.
     */
    @JvmName("kquahtvfopbjfwke")
    public suspend fun filter(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.filter = mapped
    }

    /**
     * @param value The identifier (type) of the Stackdriver Monitoring metric.
     * The metric cannot have negative values.
     * The metric must have a value type of INT64 or DOUBLE.
     */
    @JvmName("iarfmjtjiwtnytkk")
    public suspend fun name(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value If scaling is based on a per-group metric value that represents the
     * total amount of work to be done or resource usage, set this value to
     * an amount assigned for a single instance of the scaled group.
     * The autoscaler will keep the number of instances proportional to the
     * value of this metric, the metric itself should not change value due
     * to group resizing.
     * For example, a good metric to use with the target is
     * `pubsub.googleapis.com/subscription/num_undelivered_messages`
     * or a custom metric exporting the total number of requests coming to
     * your instances.
     * A bad example would be a metric exporting an average or median
     * latency, since this value can't include a chunk assignable to a
     * single instance, it could be better used with utilization_target
     * instead.
     */
    @JvmName("cfpdeooyewxdvgxp")
    public suspend fun singleInstanceAssignment(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.singleInstanceAssignment = mapped
    }

    /**
     * @param value The target value of the metric that autoscaler should
     * maintain. This must be a positive value. A utilization
     * metric scales number of virtual machines handling requests
     * to increase or decrease proportionally to the metric.
     * For example, a good metric to use as a utilizationTarget is
     * www.googleapis.com/compute/instance/network/received_bytes_count.
     * The autoscaler will work to keep this value constant for each
     * of the instances.
     */
    @JvmName("ptmyydvlkgmfdooj")
    public suspend fun target(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.target = mapped
    }

    /**
     * @param value Defines how target utilization value is expressed for a
     * Stackdriver Monitoring metric.
     * Possible values are: `GAUGE`, `DELTA_PER_SECOND`, `DELTA_PER_MINUTE`.
     */
    @JvmName("odxqscuuamutxwfb")
    public suspend fun type(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.type = mapped
    }

    internal fun build(): RegionAutoscalerAutoscalingPolicyMetricArgs =
        RegionAutoscalerAutoscalingPolicyMetricArgs(
            filter = filter,
            name = name ?: throw PulumiNullFieldException("name"),
            singleInstanceAssignment = singleInstanceAssignment,
            target = target,
            type = type,
        )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy