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

com.pulumi.azurenative.servicefabric.kotlin.inputs.StatefulServicePropertiesArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.servicefabric.kotlin.inputs

import com.pulumi.azurenative.servicefabric.inputs.StatefulServicePropertiesArgs.builder
import com.pulumi.azurenative.servicefabric.kotlin.enums.MoveCost
import com.pulumi.azurenative.servicefabric.kotlin.enums.ServicePackageActivationMode
import com.pulumi.core.Either
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Any
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * The properties of a stateful service resource.
 * @property correlationScheme A list that describes the correlation of the service with other services.
 * @property defaultMoveCost Specifies the move cost for the service.
 * @property hasPersistedState A flag indicating whether this is a persistent service which stores states on the local disk. If it is then the value of this property is true, if not it is false.
 * @property minReplicaSetSize The minimum replica set size as a number.
 * @property partitionDescription Describes how the service is partitioned.
 * @property placementConstraints The placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
 * @property quorumLossWaitDuration The maximum duration for which a partition is allowed to be in a state of quorum loss, represented in ISO 8601 format "hh:mm:ss".
 * @property replicaRestartWaitDuration The duration between when a replica goes down and when a new replica is created, represented in ISO 8601 format "hh:mm:ss".
 * @property scalingPolicies Scaling policies for this service.
 * @property serviceDnsName Dns name used for the service. If this is specified, then the DNS name can be used to return the IP addresses of service endpoints for application layer protocols (e.g., HTTP).
 * When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new name.
 * When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the name being unresolvable.
 * @property serviceKind The kind of service (Stateless or Stateful).
 * Expected value is 'Stateful'.
 * @property serviceLoadMetrics The service load metrics is given as an array of ServiceLoadMetric objects.
 * @property servicePackageActivationMode The activation Mode of the service package
 * @property servicePlacementPolicies A list that describes the correlation of the service with other services.
 * @property servicePlacementTimeLimit The duration for which replicas can stay InBuild before reporting that build is stuck, represented in ISO 8601 format "hh:mm:ss".
 * @property serviceTypeName The name of the service type
 * @property standByReplicaKeepDuration The definition on how long StandBy replicas should be maintained before being removed, represented in ISO 8601 format "hh:mm:ss".
 * @property targetReplicaSetSize The target replica set size as a number.
 */
public data class StatefulServicePropertiesArgs(
    public val correlationScheme: Output>? = null,
    public val defaultMoveCost: Output>? = null,
    public val hasPersistedState: Output? = null,
    public val minReplicaSetSize: Output? = null,
    public val partitionDescription: Output,
    public val placementConstraints: Output? = null,
    public val quorumLossWaitDuration: Output? = null,
    public val replicaRestartWaitDuration: Output? = null,
    public val scalingPolicies: Output>? = null,
    public val serviceDnsName: Output? = null,
    public val serviceKind: Output,
    public val serviceLoadMetrics: Output>? = null,
    public val servicePackageActivationMode: Output>? =
        null,
    public val servicePlacementPolicies: Output>? = null,
    public val servicePlacementTimeLimit: Output? = null,
    public val serviceTypeName: Output,
    public val standByReplicaKeepDuration: Output? = null,
    public val targetReplicaSetSize: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.servicefabric.inputs.StatefulServicePropertiesArgs =
        com.pulumi.azurenative.servicefabric.inputs.StatefulServicePropertiesArgs.builder()
            .correlationScheme(
                correlationScheme?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .defaultMoveCost(
                defaultMoveCost?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .hasPersistedState(hasPersistedState?.applyValue({ args0 -> args0 }))
            .minReplicaSetSize(minReplicaSetSize?.applyValue({ args0 -> args0 }))
            .partitionDescription(partitionDescription.applyValue({ args0 -> args0 }))
            .placementConstraints(placementConstraints?.applyValue({ args0 -> args0 }))
            .quorumLossWaitDuration(quorumLossWaitDuration?.applyValue({ args0 -> args0 }))
            .replicaRestartWaitDuration(replicaRestartWaitDuration?.applyValue({ args0 -> args0 }))
            .scalingPolicies(
                scalingPolicies?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .serviceDnsName(serviceDnsName?.applyValue({ args0 -> args0 }))
            .serviceKind(serviceKind.applyValue({ args0 -> args0 }))
            .serviceLoadMetrics(
                serviceLoadMetrics?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .servicePackageActivationMode(
                servicePackageActivationMode?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .servicePlacementPolicies(
                servicePlacementPolicies?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .servicePlacementTimeLimit(servicePlacementTimeLimit?.applyValue({ args0 -> args0 }))
            .serviceTypeName(serviceTypeName.applyValue({ args0 -> args0 }))
            .standByReplicaKeepDuration(standByReplicaKeepDuration?.applyValue({ args0 -> args0 }))
            .targetReplicaSetSize(targetReplicaSetSize?.applyValue({ args0 -> args0 })).build()
}

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

    private var defaultMoveCost: Output>? = null

    private var hasPersistedState: Output? = null

    private var minReplicaSetSize: Output? = null

    private var partitionDescription: Output? = null

    private var placementConstraints: Output? = null

    private var quorumLossWaitDuration: Output? = null

    private var replicaRestartWaitDuration: Output? = null

    private var scalingPolicies: Output>? = null

    private var serviceDnsName: Output? = null

    private var serviceKind: Output? = null

    private var serviceLoadMetrics: Output>? = null

    private var servicePackageActivationMode: Output>? =
        null

    private var servicePlacementPolicies: Output>? = null

    private var servicePlacementTimeLimit: Output? = null

    private var serviceTypeName: Output? = null

    private var standByReplicaKeepDuration: Output? = null

    private var targetReplicaSetSize: Output? = null

    /**
     * @param value A list that describes the correlation of the service with other services.
     */
    @JvmName("jhrvwvxpslcxjpef")
    public suspend fun correlationScheme(`value`: Output>) {
        this.correlationScheme = value
    }

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

    /**
     * @param values A list that describes the correlation of the service with other services.
     */
    @JvmName("qpwsucvqsqcjvdlj")
    public suspend fun correlationScheme(values: List>) {
        this.correlationScheme = Output.all(values)
    }

    /**
     * @param value Specifies the move cost for the service.
     */
    @JvmName("ukwghyqpdjvdhapo")
    public suspend fun defaultMoveCost(`value`: Output>) {
        this.defaultMoveCost = value
    }

    /**
     * @param value A flag indicating whether this is a persistent service which stores states on the local disk. If it is then the value of this property is true, if not it is false.
     */
    @JvmName("dgmgopdbhndikpqr")
    public suspend fun hasPersistedState(`value`: Output) {
        this.hasPersistedState = value
    }

    /**
     * @param value The minimum replica set size as a number.
     */
    @JvmName("tlvrjhjxomnnlfav")
    public suspend fun minReplicaSetSize(`value`: Output) {
        this.minReplicaSetSize = value
    }

    /**
     * @param value Describes how the service is partitioned.
     */
    @JvmName("obgyrumsymftgrjk")
    public suspend fun partitionDescription(`value`: Output) {
        this.partitionDescription = value
    }

    /**
     * @param value The placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
     */
    @JvmName("vtfqviwfntehfynh")
    public suspend fun placementConstraints(`value`: Output) {
        this.placementConstraints = value
    }

    /**
     * @param value The maximum duration for which a partition is allowed to be in a state of quorum loss, represented in ISO 8601 format "hh:mm:ss".
     */
    @JvmName("ktonekbqqqltdyln")
    public suspend fun quorumLossWaitDuration(`value`: Output) {
        this.quorumLossWaitDuration = value
    }

    /**
     * @param value The duration between when a replica goes down and when a new replica is created, represented in ISO 8601 format "hh:mm:ss".
     */
    @JvmName("sfoydmuoabrvudbf")
    public suspend fun replicaRestartWaitDuration(`value`: Output) {
        this.replicaRestartWaitDuration = value
    }

    /**
     * @param value Scaling policies for this service.
     */
    @JvmName("tpvcohkdtpwupcja")
    public suspend fun scalingPolicies(`value`: Output>) {
        this.scalingPolicies = value
    }

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

    /**
     * @param values Scaling policies for this service.
     */
    @JvmName("wvmiafamhhgvfdlw")
    public suspend fun scalingPolicies(values: List>) {
        this.scalingPolicies = Output.all(values)
    }

    /**
     * @param value Dns name used for the service. If this is specified, then the DNS name can be used to return the IP addresses of service endpoints for application layer protocols (e.g., HTTP).
     * When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new name.
     * When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the name being unresolvable.
     */
    @JvmName("neqjxdicahnbyhlw")
    public suspend fun serviceDnsName(`value`: Output) {
        this.serviceDnsName = value
    }

    /**
     * @param value The kind of service (Stateless or Stateful).
     * Expected value is 'Stateful'.
     */
    @JvmName("fetngaqesmmaohyk")
    public suspend fun serviceKind(`value`: Output) {
        this.serviceKind = value
    }

    /**
     * @param value The service load metrics is given as an array of ServiceLoadMetric objects.
     */
    @JvmName("yjijshdvlttlkkfl")
    public suspend fun serviceLoadMetrics(`value`: Output>) {
        this.serviceLoadMetrics = value
    }

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

    /**
     * @param values The service load metrics is given as an array of ServiceLoadMetric objects.
     */
    @JvmName("jdydkmwenxvpliap")
    public suspend fun serviceLoadMetrics(values: List>) {
        this.serviceLoadMetrics = Output.all(values)
    }

    /**
     * @param value The activation Mode of the service package
     */
    @JvmName("isytkreeynnxvxiw")
    public suspend fun servicePackageActivationMode(`value`: Output>) {
        this.servicePackageActivationMode = value
    }

    /**
     * @param value A list that describes the correlation of the service with other services.
     */
    @JvmName("xgplcmoomifkcaob")
    public suspend fun servicePlacementPolicies(`value`: Output>) {
        this.servicePlacementPolicies = value
    }

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

    /**
     * @param values A list that describes the correlation of the service with other services.
     */
    @JvmName("syiricqegbwyktyb")
    public suspend fun servicePlacementPolicies(values: List>) {
        this.servicePlacementPolicies = Output.all(values)
    }

    /**
     * @param value The duration for which replicas can stay InBuild before reporting that build is stuck, represented in ISO 8601 format "hh:mm:ss".
     */
    @JvmName("xhprhkvdrsdkbqda")
    public suspend fun servicePlacementTimeLimit(`value`: Output) {
        this.servicePlacementTimeLimit = value
    }

    /**
     * @param value The name of the service type
     */
    @JvmName("qcsoqrlvdoaemkqo")
    public suspend fun serviceTypeName(`value`: Output) {
        this.serviceTypeName = value
    }

    /**
     * @param value The definition on how long StandBy replicas should be maintained before being removed, represented in ISO 8601 format "hh:mm:ss".
     */
    @JvmName("ltivgnfvecbdsven")
    public suspend fun standByReplicaKeepDuration(`value`: Output) {
        this.standByReplicaKeepDuration = value
    }

    /**
     * @param value The target replica set size as a number.
     */
    @JvmName("nwvjruokyqullltk")
    public suspend fun targetReplicaSetSize(`value`: Output) {
        this.targetReplicaSetSize = value
    }

    /**
     * @param value A list that describes the correlation of the service with other services.
     */
    @JvmName("ekfenxbohtqctpsj")
    public suspend fun correlationScheme(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.correlationScheme = mapped
    }

    /**
     * @param argument A list that describes the correlation of the service with other services.
     */
    @JvmName("mxouqtbwqkqrsqug")
    public suspend fun correlationScheme(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ServiceCorrelationArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.correlationScheme = mapped
    }

    /**
     * @param argument A list that describes the correlation of the service with other services.
     */
    @JvmName("lfwbhpbvqsibjvaj")
    public suspend fun correlationScheme(vararg argument: suspend ServiceCorrelationArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ServiceCorrelationArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.correlationScheme = mapped
    }

    /**
     * @param argument A list that describes the correlation of the service with other services.
     */
    @JvmName("xgtdwwaqvnnkoxek")
    public suspend fun correlationScheme(argument: suspend ServiceCorrelationArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(ServiceCorrelationArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.correlationScheme = mapped
    }

    /**
     * @param values A list that describes the correlation of the service with other services.
     */
    @JvmName("biqkaradxgvudsoy")
    public suspend fun correlationScheme(vararg values: ServiceCorrelationArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.correlationScheme = mapped
    }

    /**
     * @param value Specifies the move cost for the service.
     */
    @JvmName("ocedfvgaftvuficl")
    public suspend fun defaultMoveCost(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.defaultMoveCost = mapped
    }

    /**
     * @param value Specifies the move cost for the service.
     */
    @JvmName("bhgfgklnpqpoivps")
    public fun defaultMoveCost(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.defaultMoveCost = mapped
    }

    /**
     * @param value Specifies the move cost for the service.
     */
    @JvmName("axamxmryyiaveevg")
    public fun defaultMoveCost(`value`: MoveCost) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.defaultMoveCost = mapped
    }

    /**
     * @param value A flag indicating whether this is a persistent service which stores states on the local disk. If it is then the value of this property is true, if not it is false.
     */
    @JvmName("tpotgirhxorvffji")
    public suspend fun hasPersistedState(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.hasPersistedState = mapped
    }

    /**
     * @param value The minimum replica set size as a number.
     */
    @JvmName("lspqyvaobsdqdqlj")
    public suspend fun minReplicaSetSize(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.minReplicaSetSize = mapped
    }

    /**
     * @param value Describes how the service is partitioned.
     */
    @JvmName("ejhheofieqoejnwx")
    public suspend fun partitionDescription(`value`: Any) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.partitionDescription = mapped
    }

    /**
     * @param value The placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
     */
    @JvmName("ohbfnegjimadhgjc")
    public suspend fun placementConstraints(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.placementConstraints = mapped
    }

    /**
     * @param value The maximum duration for which a partition is allowed to be in a state of quorum loss, represented in ISO 8601 format "hh:mm:ss".
     */
    @JvmName("styxykokseorigje")
    public suspend fun quorumLossWaitDuration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.quorumLossWaitDuration = mapped
    }

    /**
     * @param value The duration between when a replica goes down and when a new replica is created, represented in ISO 8601 format "hh:mm:ss".
     */
    @JvmName("yobdessmvoqpyvcq")
    public suspend fun replicaRestartWaitDuration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.replicaRestartWaitDuration = mapped
    }

    /**
     * @param value Scaling policies for this service.
     */
    @JvmName("wdilwobicgodeqjg")
    public suspend fun scalingPolicies(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scalingPolicies = mapped
    }

    /**
     * @param argument Scaling policies for this service.
     */
    @JvmName("lalbggmdusxngnkl")
    public suspend fun scalingPolicies(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ScalingPolicyArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.scalingPolicies = mapped
    }

    /**
     * @param argument Scaling policies for this service.
     */
    @JvmName("eyqmnwpuafhdfige")
    public suspend fun scalingPolicies(vararg argument: suspend ScalingPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ScalingPolicyArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.scalingPolicies = mapped
    }

    /**
     * @param argument Scaling policies for this service.
     */
    @JvmName("ttajptcieefcxcvu")
    public suspend fun scalingPolicies(argument: suspend ScalingPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(ScalingPolicyArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.scalingPolicies = mapped
    }

    /**
     * @param values Scaling policies for this service.
     */
    @JvmName("ahghvsxfggujsiwt")
    public suspend fun scalingPolicies(vararg values: ScalingPolicyArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.scalingPolicies = mapped
    }

    /**
     * @param value Dns name used for the service. If this is specified, then the DNS name can be used to return the IP addresses of service endpoints for application layer protocols (e.g., HTTP).
     * When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new name.
     * When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the name being unresolvable.
     */
    @JvmName("onjrbwoekgbxadrh")
    public suspend fun serviceDnsName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceDnsName = mapped
    }

    /**
     * @param value The kind of service (Stateless or Stateful).
     * Expected value is 'Stateful'.
     */
    @JvmName("xdlgrgytlfattwtv")
    public suspend fun serviceKind(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.serviceKind = mapped
    }

    /**
     * @param value The service load metrics is given as an array of ServiceLoadMetric objects.
     */
    @JvmName("csvxjtvqjodnjulq")
    public suspend fun serviceLoadMetrics(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceLoadMetrics = mapped
    }

    /**
     * @param argument The service load metrics is given as an array of ServiceLoadMetric objects.
     */
    @JvmName("wqscvmvqawypgohm")
    public suspend fun serviceLoadMetrics(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ServiceLoadMetricArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.serviceLoadMetrics = mapped
    }

    /**
     * @param argument The service load metrics is given as an array of ServiceLoadMetric objects.
     */
    @JvmName("mbjrfkcoumjigkew")
    public suspend fun serviceLoadMetrics(vararg argument: suspend ServiceLoadMetricArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ServiceLoadMetricArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.serviceLoadMetrics = mapped
    }

    /**
     * @param argument The service load metrics is given as an array of ServiceLoadMetric objects.
     */
    @JvmName("limdtdskiifcgglx")
    public suspend fun serviceLoadMetrics(argument: suspend ServiceLoadMetricArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(ServiceLoadMetricArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.serviceLoadMetrics = mapped
    }

    /**
     * @param values The service load metrics is given as an array of ServiceLoadMetric objects.
     */
    @JvmName("wjdjjejxenoawuhm")
    public suspend fun serviceLoadMetrics(vararg values: ServiceLoadMetricArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.serviceLoadMetrics = mapped
    }

    /**
     * @param value The activation Mode of the service package
     */
    @JvmName("boakkdiiywquhvvx")
    public suspend fun servicePackageActivationMode(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.servicePackageActivationMode = mapped
    }

    /**
     * @param value The activation Mode of the service package
     */
    @JvmName("yubdlcuryrqxpvlc")
    public fun servicePackageActivationMode(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.servicePackageActivationMode = mapped
    }

    /**
     * @param value The activation Mode of the service package
     */
    @JvmName("tajmutnamplalpuv")
    public fun servicePackageActivationMode(`value`: ServicePackageActivationMode) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.servicePackageActivationMode = mapped
    }

    /**
     * @param value A list that describes the correlation of the service with other services.
     */
    @JvmName("gblvsaajmdbcpqvn")
    public suspend fun servicePlacementPolicies(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.servicePlacementPolicies = mapped
    }

    /**
     * @param values A list that describes the correlation of the service with other services.
     */
    @JvmName("rhbmonluqoicqtsg")
    public suspend fun servicePlacementPolicies(vararg values: Any) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.servicePlacementPolicies = mapped
    }

    /**
     * @param value The duration for which replicas can stay InBuild before reporting that build is stuck, represented in ISO 8601 format "hh:mm:ss".
     */
    @JvmName("ttjmqnjcjdbpqkyc")
    public suspend fun servicePlacementTimeLimit(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.servicePlacementTimeLimit = mapped
    }

    /**
     * @param value The name of the service type
     */
    @JvmName("vhrdcykwyhqepylf")
    public suspend fun serviceTypeName(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.serviceTypeName = mapped
    }

    /**
     * @param value The definition on how long StandBy replicas should be maintained before being removed, represented in ISO 8601 format "hh:mm:ss".
     */
    @JvmName("vogbjulnntksfwhu")
    public suspend fun standByReplicaKeepDuration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.standByReplicaKeepDuration = mapped
    }

    /**
     * @param value The target replica set size as a number.
     */
    @JvmName("iinuactxvlhuobcf")
    public suspend fun targetReplicaSetSize(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.targetReplicaSetSize = mapped
    }

    internal fun build(): StatefulServicePropertiesArgs = StatefulServicePropertiesArgs(
        correlationScheme = correlationScheme,
        defaultMoveCost = defaultMoveCost,
        hasPersistedState = hasPersistedState,
        minReplicaSetSize = minReplicaSetSize,
        partitionDescription = partitionDescription ?: throw
            PulumiNullFieldException("partitionDescription"),
        placementConstraints = placementConstraints,
        quorumLossWaitDuration = quorumLossWaitDuration,
        replicaRestartWaitDuration = replicaRestartWaitDuration,
        scalingPolicies = scalingPolicies,
        serviceDnsName = serviceDnsName,
        serviceKind = serviceKind ?: throw PulumiNullFieldException("serviceKind"),
        serviceLoadMetrics = serviceLoadMetrics,
        servicePackageActivationMode = servicePackageActivationMode,
        servicePlacementPolicies = servicePlacementPolicies,
        servicePlacementTimeLimit = servicePlacementTimeLimit,
        serviceTypeName = serviceTypeName ?: throw PulumiNullFieldException("serviceTypeName"),
        standByReplicaKeepDuration = standByReplicaKeepDuration,
        targetReplicaSetSize = targetReplicaSetSize,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy