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

com.pulumi.awsnative.scheduler.kotlin.inputs.SchedulePlacementStrategyArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.scheduler.kotlin.inputs

import com.pulumi.awsnative.scheduler.inputs.SchedulePlacementStrategyArgs.builder
import com.pulumi.awsnative.scheduler.kotlin.enums.SchedulePlacementStrategyType
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName

/**
 * The task placement strategy for a task or service.
 * @property field The field to apply the placement strategy against. For the spread placement strategy, valid values are instanceId (or host, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as attribute:ecs.availability-zone. For the binpack placement strategy, valid values are cpu and memory. For the random placement strategy, this field is not used.
 * @property type The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task).
 */
public data class SchedulePlacementStrategyArgs(
    public val `field`: Output? = null,
    public val type: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.scheduler.inputs.SchedulePlacementStrategyArgs =
        com.pulumi.awsnative.scheduler.inputs.SchedulePlacementStrategyArgs.builder()
            .`field`(`field`?.applyValue({ args0 -> args0 }))
            .type(type?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) })).build()
}

/**
 * Builder for [SchedulePlacementStrategyArgs].
 */
@PulumiTagMarker
public class SchedulePlacementStrategyArgsBuilder internal constructor() {
    private var `field`: Output? = null

    private var type: Output? = null

    /**
     * @param value The field to apply the placement strategy against. For the spread placement strategy, valid values are instanceId (or host, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as attribute:ecs.availability-zone. For the binpack placement strategy, valid values are cpu and memory. For the random placement strategy, this field is not used.
     */
    @JvmName("kptajfgitjwtcwmh")
    public suspend fun `field`(`value`: Output) {
        this.`field` = value
    }

    /**
     * @param value The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task).
     */
    @JvmName("coyabggxsckufuou")
    public suspend fun type(`value`: Output) {
        this.type = value
    }

    /**
     * @param value The field to apply the placement strategy against. For the spread placement strategy, valid values are instanceId (or host, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as attribute:ecs.availability-zone. For the binpack placement strategy, valid values are cpu and memory. For the random placement strategy, this field is not used.
     */
    @JvmName("uavfxaxegldkimsv")
    public suspend fun `field`(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.`field` = mapped
    }

    /**
     * @param value The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task).
     */
    @JvmName("yjnpwqtcfkxuaeja")
    public suspend fun type(`value`: SchedulePlacementStrategyType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.type = mapped
    }

    internal fun build(): SchedulePlacementStrategyArgs = SchedulePlacementStrategyArgs(
        `field` = `field`,
        type = type,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy