com.pulumi.gcp.compute.kotlin.inputs.AutoscalerAutoscalingPolicyMetricArgs.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-gcp-kotlin Show documentation
Show all versions of pulumi-gcp-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@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.AutoscalerAutoscalingPolicyMetricArgs.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 AutoscalerAutoscalingPolicyMetricArgs(
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.AutoscalerAutoscalingPolicyMetricArgs =
com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyMetricArgs.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 [AutoscalerAutoscalingPolicyMetricArgs].
*/
@PulumiTagMarker
public class AutoscalerAutoscalingPolicyMetricArgsBuilder 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("uenjgjnucgeiuhax")
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("iednagdpvflpofft")
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("xkajxqosywpnkuns")
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("ybkfclargakysaij")
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("vaxtxomdlxdhiabt")
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("snmntiorlppjdyuy")
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("lwaacnhdwqbtpump")
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("pmnmjftpefdfcktl")
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("lebhyrwrvwjgsald")
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("mhnrfnrvefqcpptb")
public suspend fun type(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.type = mapped
}
internal fun build(): AutoscalerAutoscalingPolicyMetricArgs =
AutoscalerAutoscalingPolicyMetricArgs(
filter = filter,
name = name ?: throw PulumiNullFieldException("name"),
singleInstanceAssignment = singleInstanceAssignment,
target = target,
type = type,
)
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy