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

com.pulumi.azure.containerservice.kotlin.inputs.KubernetesClusterAutoScalerProfileArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azure.containerservice.kotlin.inputs

import com.pulumi.azure.containerservice.inputs.KubernetesClusterAutoScalerProfileArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.Boolean
import kotlin.Double
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName

/**
 *
 * @property balanceSimilarNodeGroups Detect similar node groups and balance the number of nodes between them. Defaults to `false`.
 * @property emptyBulkDeleteMax Maximum number of empty nodes that can be deleted at the same time. Defaults to `10`.
 * @property expander Expander to use. Possible values are `least-waste`, `priority`, `most-pods` and `random`. Defaults to `random`.
 * @property maxGracefulTerminationSec Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node. Defaults to `600`.
 * @property maxNodeProvisioningTime Maximum time the autoscaler waits for a node to be provisioned. Defaults to `15m`.
 * @property maxUnreadyNodes Maximum Number of allowed unready nodes. Defaults to `3`.
 * @property maxUnreadyPercentage Maximum percentage of unready nodes the cluster autoscaler will stop if the percentage is exceeded. Defaults to `45`.
 * @property newPodScaleUpDelay For scenarios like burst/batch scale where you don't want CA to act before the kubernetes scheduler could schedule all the pods, you can tell CA to ignore unscheduled pods before they're a certain age. Defaults to `10s`.
 * @property scaleDownDelayAfterAdd How long after the scale up of AKS nodes the scale down evaluation resumes. Defaults to `10m`.
 * @property scaleDownDelayAfterDelete How long after node deletion that scale down evaluation resumes. Defaults to the value used for `scan_interval`.
 * @property scaleDownDelayAfterFailure How long after scale down failure that scale down evaluation resumes. Defaults to `3m`.
 * @property scaleDownUnneeded How long a node should be unneeded before it is eligible for scale down. Defaults to `10m`.
 * @property scaleDownUnready How long an unready node should be unneeded before it is eligible for scale down. Defaults to `20m`.
 * @property scaleDownUtilizationThreshold Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down. Defaults to `0.5`.
 * @property scanInterval How often the AKS Cluster should be re-evaluated for scale up/down. Defaults to `10s`.
 * @property skipNodesWithLocalStorage If `true` cluster autoscaler will never delete nodes with pods with local storage, for example, EmptyDir or HostPath. Defaults to `true`.
 * @property skipNodesWithSystemPods If `true` cluster autoscaler will never delete nodes with pods from kube-system (except for DaemonSet or mirror pods). Defaults to `true`.
 */
public data class KubernetesClusterAutoScalerProfileArgs(
    public val balanceSimilarNodeGroups: Output? = null,
    public val emptyBulkDeleteMax: Output? = null,
    public val expander: Output? = null,
    public val maxGracefulTerminationSec: Output? = null,
    public val maxNodeProvisioningTime: Output? = null,
    public val maxUnreadyNodes: Output? = null,
    public val maxUnreadyPercentage: Output? = null,
    public val newPodScaleUpDelay: Output? = null,
    public val scaleDownDelayAfterAdd: Output? = null,
    public val scaleDownDelayAfterDelete: Output? = null,
    public val scaleDownDelayAfterFailure: Output? = null,
    public val scaleDownUnneeded: Output? = null,
    public val scaleDownUnready: Output? = null,
    public val scaleDownUtilizationThreshold: Output? = null,
    public val scanInterval: Output? = null,
    public val skipNodesWithLocalStorage: Output? = null,
    public val skipNodesWithSystemPods: Output? = null,
) :
    ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.containerservice.inputs.KubernetesClusterAutoScalerProfileArgs =
        com.pulumi.azure.containerservice.inputs.KubernetesClusterAutoScalerProfileArgs.builder()
            .balanceSimilarNodeGroups(balanceSimilarNodeGroups?.applyValue({ args0 -> args0 }))
            .emptyBulkDeleteMax(emptyBulkDeleteMax?.applyValue({ args0 -> args0 }))
            .expander(expander?.applyValue({ args0 -> args0 }))
            .maxGracefulTerminationSec(maxGracefulTerminationSec?.applyValue({ args0 -> args0 }))
            .maxNodeProvisioningTime(maxNodeProvisioningTime?.applyValue({ args0 -> args0 }))
            .maxUnreadyNodes(maxUnreadyNodes?.applyValue({ args0 -> args0 }))
            .maxUnreadyPercentage(maxUnreadyPercentage?.applyValue({ args0 -> args0 }))
            .newPodScaleUpDelay(newPodScaleUpDelay?.applyValue({ args0 -> args0 }))
            .scaleDownDelayAfterAdd(scaleDownDelayAfterAdd?.applyValue({ args0 -> args0 }))
            .scaleDownDelayAfterDelete(scaleDownDelayAfterDelete?.applyValue({ args0 -> args0 }))
            .scaleDownDelayAfterFailure(scaleDownDelayAfterFailure?.applyValue({ args0 -> args0 }))
            .scaleDownUnneeded(scaleDownUnneeded?.applyValue({ args0 -> args0 }))
            .scaleDownUnready(scaleDownUnready?.applyValue({ args0 -> args0 }))
            .scaleDownUtilizationThreshold(scaleDownUtilizationThreshold?.applyValue({ args0 -> args0 }))
            .scanInterval(scanInterval?.applyValue({ args0 -> args0 }))
            .skipNodesWithLocalStorage(skipNodesWithLocalStorage?.applyValue({ args0 -> args0 }))
            .skipNodesWithSystemPods(skipNodesWithSystemPods?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [KubernetesClusterAutoScalerProfileArgs].
 */
@PulumiTagMarker
public class KubernetesClusterAutoScalerProfileArgsBuilder internal constructor() {
    private var balanceSimilarNodeGroups: Output? = null

    private var emptyBulkDeleteMax: Output? = null

    private var expander: Output? = null

    private var maxGracefulTerminationSec: Output? = null

    private var maxNodeProvisioningTime: Output? = null

    private var maxUnreadyNodes: Output? = null

    private var maxUnreadyPercentage: Output? = null

    private var newPodScaleUpDelay: Output? = null

    private var scaleDownDelayAfterAdd: Output? = null

    private var scaleDownDelayAfterDelete: Output? = null

    private var scaleDownDelayAfterFailure: Output? = null

    private var scaleDownUnneeded: Output? = null

    private var scaleDownUnready: Output? = null

    private var scaleDownUtilizationThreshold: Output? = null

    private var scanInterval: Output? = null

    private var skipNodesWithLocalStorage: Output? = null

    private var skipNodesWithSystemPods: Output? = null

    /**
     * @param value Detect similar node groups and balance the number of nodes between them. Defaults to `false`.
     */
    @JvmName("ndxpxduggipvivxw")
    public suspend fun balanceSimilarNodeGroups(`value`: Output) {
        this.balanceSimilarNodeGroups = value
    }

    /**
     * @param value Maximum number of empty nodes that can be deleted at the same time. Defaults to `10`.
     */
    @JvmName("awswoginmhlffudb")
    public suspend fun emptyBulkDeleteMax(`value`: Output) {
        this.emptyBulkDeleteMax = value
    }

    /**
     * @param value Expander to use. Possible values are `least-waste`, `priority`, `most-pods` and `random`. Defaults to `random`.
     */
    @JvmName("xymvfbbtfmyrmdgr")
    public suspend fun expander(`value`: Output) {
        this.expander = value
    }

    /**
     * @param value Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node. Defaults to `600`.
     */
    @JvmName("otgvghxptptxyoom")
    public suspend fun maxGracefulTerminationSec(`value`: Output) {
        this.maxGracefulTerminationSec = value
    }

    /**
     * @param value Maximum time the autoscaler waits for a node to be provisioned. Defaults to `15m`.
     */
    @JvmName("ottffoovgspljcqy")
    public suspend fun maxNodeProvisioningTime(`value`: Output) {
        this.maxNodeProvisioningTime = value
    }

    /**
     * @param value Maximum Number of allowed unready nodes. Defaults to `3`.
     */
    @JvmName("qcdjcmjufybsyioy")
    public suspend fun maxUnreadyNodes(`value`: Output) {
        this.maxUnreadyNodes = value
    }

    /**
     * @param value Maximum percentage of unready nodes the cluster autoscaler will stop if the percentage is exceeded. Defaults to `45`.
     */
    @JvmName("rduamehtksedhnej")
    public suspend fun maxUnreadyPercentage(`value`: Output) {
        this.maxUnreadyPercentage = value
    }

    /**
     * @param value For scenarios like burst/batch scale where you don't want CA to act before the kubernetes scheduler could schedule all the pods, you can tell CA to ignore unscheduled pods before they're a certain age. Defaults to `10s`.
     */
    @JvmName("aplynrxxhtemyura")
    public suspend fun newPodScaleUpDelay(`value`: Output) {
        this.newPodScaleUpDelay = value
    }

    /**
     * @param value How long after the scale up of AKS nodes the scale down evaluation resumes. Defaults to `10m`.
     */
    @JvmName("ubydenyhmykmcdlj")
    public suspend fun scaleDownDelayAfterAdd(`value`: Output) {
        this.scaleDownDelayAfterAdd = value
    }

    /**
     * @param value How long after node deletion that scale down evaluation resumes. Defaults to the value used for `scan_interval`.
     */
    @JvmName("oejlwdqhyhksrsvq")
    public suspend fun scaleDownDelayAfterDelete(`value`: Output) {
        this.scaleDownDelayAfterDelete = value
    }

    /**
     * @param value How long after scale down failure that scale down evaluation resumes. Defaults to `3m`.
     */
    @JvmName("ohkpwqmtdokuteai")
    public suspend fun scaleDownDelayAfterFailure(`value`: Output) {
        this.scaleDownDelayAfterFailure = value
    }

    /**
     * @param value How long a node should be unneeded before it is eligible for scale down. Defaults to `10m`.
     */
    @JvmName("johvfhwbxfsftsmr")
    public suspend fun scaleDownUnneeded(`value`: Output) {
        this.scaleDownUnneeded = value
    }

    /**
     * @param value How long an unready node should be unneeded before it is eligible for scale down. Defaults to `20m`.
     */
    @JvmName("curyrkfbdmvaiwtk")
    public suspend fun scaleDownUnready(`value`: Output) {
        this.scaleDownUnready = value
    }

    /**
     * @param value Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down. Defaults to `0.5`.
     */
    @JvmName("diowcbipwmqqlylv")
    public suspend fun scaleDownUtilizationThreshold(`value`: Output) {
        this.scaleDownUtilizationThreshold = value
    }

    /**
     * @param value How often the AKS Cluster should be re-evaluated for scale up/down. Defaults to `10s`.
     */
    @JvmName("lhmxunryttrlxatr")
    public suspend fun scanInterval(`value`: Output) {
        this.scanInterval = value
    }

    /**
     * @param value If `true` cluster autoscaler will never delete nodes with pods with local storage, for example, EmptyDir or HostPath. Defaults to `true`.
     */
    @JvmName("ghndqumcyefjflle")
    public suspend fun skipNodesWithLocalStorage(`value`: Output) {
        this.skipNodesWithLocalStorage = value
    }

    /**
     * @param value If `true` cluster autoscaler will never delete nodes with pods from kube-system (except for DaemonSet or mirror pods). Defaults to `true`.
     */
    @JvmName("wqvcktqkwihrdmdi")
    public suspend fun skipNodesWithSystemPods(`value`: Output) {
        this.skipNodesWithSystemPods = value
    }

    /**
     * @param value Detect similar node groups and balance the number of nodes between them. Defaults to `false`.
     */
    @JvmName("nfdlhicsdspkqrrr")
    public suspend fun balanceSimilarNodeGroups(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.balanceSimilarNodeGroups = mapped
    }

    /**
     * @param value Maximum number of empty nodes that can be deleted at the same time. Defaults to `10`.
     */
    @JvmName("cqlkxfrquppttieo")
    public suspend fun emptyBulkDeleteMax(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.emptyBulkDeleteMax = mapped
    }

    /**
     * @param value Expander to use. Possible values are `least-waste`, `priority`, `most-pods` and `random`. Defaults to `random`.
     */
    @JvmName("wxekvhevcdionkwo")
    public suspend fun expander(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.expander = mapped
    }

    /**
     * @param value Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node. Defaults to `600`.
     */
    @JvmName("tdiryadnqdhpbbxs")
    public suspend fun maxGracefulTerminationSec(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxGracefulTerminationSec = mapped
    }

    /**
     * @param value Maximum time the autoscaler waits for a node to be provisioned. Defaults to `15m`.
     */
    @JvmName("pniqiranfitmbhfw")
    public suspend fun maxNodeProvisioningTime(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxNodeProvisioningTime = mapped
    }

    /**
     * @param value Maximum Number of allowed unready nodes. Defaults to `3`.
     */
    @JvmName("hdgegowdqdgbkhbk")
    public suspend fun maxUnreadyNodes(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxUnreadyNodes = mapped
    }

    /**
     * @param value Maximum percentage of unready nodes the cluster autoscaler will stop if the percentage is exceeded. Defaults to `45`.
     */
    @JvmName("ehgjyybndbiecgin")
    public suspend fun maxUnreadyPercentage(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxUnreadyPercentage = mapped
    }

    /**
     * @param value For scenarios like burst/batch scale where you don't want CA to act before the kubernetes scheduler could schedule all the pods, you can tell CA to ignore unscheduled pods before they're a certain age. Defaults to `10s`.
     */
    @JvmName("yvmccorkwumphjfv")
    public suspend fun newPodScaleUpDelay(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.newPodScaleUpDelay = mapped
    }

    /**
     * @param value How long after the scale up of AKS nodes the scale down evaluation resumes. Defaults to `10m`.
     */
    @JvmName("ycuqdgywjbogaajh")
    public suspend fun scaleDownDelayAfterAdd(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scaleDownDelayAfterAdd = mapped
    }

    /**
     * @param value How long after node deletion that scale down evaluation resumes. Defaults to the value used for `scan_interval`.
     */
    @JvmName("oseumryqumulekok")
    public suspend fun scaleDownDelayAfterDelete(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scaleDownDelayAfterDelete = mapped
    }

    /**
     * @param value How long after scale down failure that scale down evaluation resumes. Defaults to `3m`.
     */
    @JvmName("tucukleyjaukwynw")
    public suspend fun scaleDownDelayAfterFailure(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scaleDownDelayAfterFailure = mapped
    }

    /**
     * @param value How long a node should be unneeded before it is eligible for scale down. Defaults to `10m`.
     */
    @JvmName("yfgwcomsqjvwweuq")
    public suspend fun scaleDownUnneeded(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scaleDownUnneeded = mapped
    }

    /**
     * @param value How long an unready node should be unneeded before it is eligible for scale down. Defaults to `20m`.
     */
    @JvmName("mywydhxcfulktqmk")
    public suspend fun scaleDownUnready(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scaleDownUnready = mapped
    }

    /**
     * @param value Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down. Defaults to `0.5`.
     */
    @JvmName("exfbkukctjnhnhwm")
    public suspend fun scaleDownUtilizationThreshold(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scaleDownUtilizationThreshold = mapped
    }

    /**
     * @param value How often the AKS Cluster should be re-evaluated for scale up/down. Defaults to `10s`.
     */
    @JvmName("faypwmsorwurljiu")
    public suspend fun scanInterval(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scanInterval = mapped
    }

    /**
     * @param value If `true` cluster autoscaler will never delete nodes with pods with local storage, for example, EmptyDir or HostPath. Defaults to `true`.
     */
    @JvmName("lnyxgvhyhmlglekm")
    public suspend fun skipNodesWithLocalStorage(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.skipNodesWithLocalStorage = mapped
    }

    /**
     * @param value If `true` cluster autoscaler will never delete nodes with pods from kube-system (except for DaemonSet or mirror pods). Defaults to `true`.
     */
    @JvmName("xprtrrrtxqtdcksm")
    public suspend fun skipNodesWithSystemPods(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.skipNodesWithSystemPods = mapped
    }

    internal fun build(): KubernetesClusterAutoScalerProfileArgs =
        KubernetesClusterAutoScalerProfileArgs(
            balanceSimilarNodeGroups = balanceSimilarNodeGroups,
            emptyBulkDeleteMax = emptyBulkDeleteMax,
            expander = expander,
            maxGracefulTerminationSec = maxGracefulTerminationSec,
            maxNodeProvisioningTime = maxNodeProvisioningTime,
            maxUnreadyNodes = maxUnreadyNodes,
            maxUnreadyPercentage = maxUnreadyPercentage,
            newPodScaleUpDelay = newPodScaleUpDelay,
            scaleDownDelayAfterAdd = scaleDownDelayAfterAdd,
            scaleDownDelayAfterDelete = scaleDownDelayAfterDelete,
            scaleDownDelayAfterFailure = scaleDownDelayAfterFailure,
            scaleDownUnneeded = scaleDownUnneeded,
            scaleDownUnready = scaleDownUnready,
            scaleDownUtilizationThreshold = scaleDownUtilizationThreshold,
            scanInterval = scanInterval,
            skipNodesWithLocalStorage = skipNodesWithLocalStorage,
            skipNodesWithSystemPods = skipNodesWithSystemPods,
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy