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

com.pulumi.azurenative.machinelearningservices.kotlin.inputs.ComputeInstancePropertiesArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.machinelearningservices.kotlin.inputs

import com.pulumi.azurenative.machinelearningservices.inputs.ComputeInstancePropertiesArgs.builder
import com.pulumi.azurenative.machinelearningservices.kotlin.enums.ApplicationSharingPolicy
import com.pulumi.azurenative.machinelearningservices.kotlin.enums.ComputeInstanceAuthorizationType
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.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Compute Instance properties
 * @property applicationSharingPolicy Policy for sharing applications on this compute instance among users of parent workspace. If Personal, only the creator can access applications on this compute instance. When Shared, any workspace user can access applications on this instance depending on his/her assigned role.
 * @property computeInstanceAuthorizationType The Compute Instance Authorization type. Available values are personal (default).
 * @property customServices List of Custom Services added to the compute.
 * @property enableNodePublicIp Enable or disable node public IP address provisioning. Possible values are: Possible values are: true - Indicates that the compute nodes will have public IPs provisioned. false - Indicates that the compute nodes will have a private endpoint and no public IPs.
 * @property personalComputeInstanceSettings Settings for a personal compute instance.
 * @property schedules The list of schedules to be applied on the computes.
 * @property setupScripts Details of customized scripts to execute for setting up the cluster.
 * @property sshSettings Specifies policy and settings for SSH access.
 * @property subnet Virtual network subnet resource ID the compute nodes belong to.
 * @property vmSize Virtual Machine Size
 */
public data class ComputeInstancePropertiesArgs(
    public val applicationSharingPolicy: Output>? = null,
    public val computeInstanceAuthorizationType: Output>? = null,
    public val customServices: Output>? = null,
    public val enableNodePublicIp: Output? = null,
    public val personalComputeInstanceSettings: Output? = null,
    public val schedules: Output? = null,
    public val setupScripts: Output? = null,
    public val sshSettings: Output? = null,
    public val subnet: Output? = null,
    public val vmSize: Output? = null,
) :
    ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.machinelearningservices.inputs.ComputeInstancePropertiesArgs =
        com.pulumi.azurenative.machinelearningservices.inputs.ComputeInstancePropertiesArgs.builder()
            .applicationSharingPolicy(
                applicationSharingPolicy?.applyValue({ args0 ->
                    args0.transform({ args0 ->
                        args0
                    }, { args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .computeInstanceAuthorizationType(
                computeInstanceAuthorizationType?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .customServices(
                customServices?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .enableNodePublicIp(enableNodePublicIp?.applyValue({ args0 -> args0 }))
            .personalComputeInstanceSettings(
                personalComputeInstanceSettings?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .schedules(schedules?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .setupScripts(setupScripts?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .sshSettings(sshSettings?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .subnet(subnet?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .vmSize(vmSize?.applyValue({ args0 -> args0 })).build()
}

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

    private var computeInstanceAuthorizationType:
        Output>? = null

    private var customServices: Output>? = null

    private var enableNodePublicIp: Output? = null

    private var personalComputeInstanceSettings: Output? = null

    private var schedules: Output? = null

    private var setupScripts: Output? = null

    private var sshSettings: Output? = null

    private var subnet: Output? = null

    private var vmSize: Output? = null

    /**
     * @param value Policy for sharing applications on this compute instance among users of parent workspace. If Personal, only the creator can access applications on this compute instance. When Shared, any workspace user can access applications on this instance depending on his/her assigned role.
     */
    @JvmName("xpqeiisxnnbbrwvp")
    public suspend fun applicationSharingPolicy(`value`: Output>) {
        this.applicationSharingPolicy = value
    }

    /**
     * @param value The Compute Instance Authorization type. Available values are personal (default).
     */
    @JvmName("roqwlglchyydggwq")
    public suspend fun computeInstanceAuthorizationType(`value`: Output>) {
        this.computeInstanceAuthorizationType = value
    }

    /**
     * @param value List of Custom Services added to the compute.
     */
    @JvmName("cfaucfnusbemrdcu")
    public suspend fun customServices(`value`: Output>) {
        this.customServices = value
    }

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

    /**
     * @param values List of Custom Services added to the compute.
     */
    @JvmName("bnpahktdupqleoul")
    public suspend fun customServices(values: List>) {
        this.customServices = Output.all(values)
    }

    /**
     * @param value Enable or disable node public IP address provisioning. Possible values are: Possible values are: true - Indicates that the compute nodes will have public IPs provisioned. false - Indicates that the compute nodes will have a private endpoint and no public IPs.
     */
    @JvmName("fnpowjwfgykuveaq")
    public suspend fun enableNodePublicIp(`value`: Output) {
        this.enableNodePublicIp = value
    }

    /**
     * @param value Settings for a personal compute instance.
     */
    @JvmName("xyicartlhrjdvtyf")
    public suspend fun personalComputeInstanceSettings(`value`: Output) {
        this.personalComputeInstanceSettings = value
    }

    /**
     * @param value The list of schedules to be applied on the computes.
     */
    @JvmName("qyldevkomiuwfxon")
    public suspend fun schedules(`value`: Output) {
        this.schedules = value
    }

    /**
     * @param value Details of customized scripts to execute for setting up the cluster.
     */
    @JvmName("bygvvcbqexjsnfph")
    public suspend fun setupScripts(`value`: Output) {
        this.setupScripts = value
    }

    /**
     * @param value Specifies policy and settings for SSH access.
     */
    @JvmName("eeoafboxavjhmuoy")
    public suspend fun sshSettings(`value`: Output) {
        this.sshSettings = value
    }

    /**
     * @param value Virtual network subnet resource ID the compute nodes belong to.
     */
    @JvmName("tmniiemlwkqdyays")
    public suspend fun subnet(`value`: Output) {
        this.subnet = value
    }

    /**
     * @param value Virtual Machine Size
     */
    @JvmName("kvsxrdrtdnmgqees")
    public suspend fun vmSize(`value`: Output) {
        this.vmSize = value
    }

    /**
     * @param value Policy for sharing applications on this compute instance among users of parent workspace. If Personal, only the creator can access applications on this compute instance. When Shared, any workspace user can access applications on this instance depending on his/her assigned role.
     */
    @JvmName("ossecraamtgpatkg")
    public suspend fun applicationSharingPolicy(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.applicationSharingPolicy = mapped
    }

    /**
     * @param value Policy for sharing applications on this compute instance among users of parent workspace. If Personal, only the creator can access applications on this compute instance. When Shared, any workspace user can access applications on this instance depending on his/her assigned role.
     */
    @JvmName("eoywlemykeodxhvl")
    public fun applicationSharingPolicy(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.applicationSharingPolicy = mapped
    }

    /**
     * @param value Policy for sharing applications on this compute instance among users of parent workspace. If Personal, only the creator can access applications on this compute instance. When Shared, any workspace user can access applications on this instance depending on his/her assigned role.
     */
    @JvmName("ruyxegkksnmhqwro")
    public fun applicationSharingPolicy(`value`: ApplicationSharingPolicy) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.applicationSharingPolicy = mapped
    }

    /**
     * @param value The Compute Instance Authorization type. Available values are personal (default).
     */
    @JvmName("cmhgvwvndwtmmddj")
    public suspend fun computeInstanceAuthorizationType(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.computeInstanceAuthorizationType = mapped
    }

    /**
     * @param value The Compute Instance Authorization type. Available values are personal (default).
     */
    @JvmName("vhsbiwqgqjhxdrya")
    public fun computeInstanceAuthorizationType(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.computeInstanceAuthorizationType = mapped
    }

    /**
     * @param value The Compute Instance Authorization type. Available values are personal (default).
     */
    @JvmName("ialaygabbyqpswqq")
    public fun computeInstanceAuthorizationType(`value`: ComputeInstanceAuthorizationType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.computeInstanceAuthorizationType = mapped
    }

    /**
     * @param value List of Custom Services added to the compute.
     */
    @JvmName("aexkwvvyetpyahqc")
    public suspend fun customServices(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customServices = mapped
    }

    /**
     * @param argument List of Custom Services added to the compute.
     */
    @JvmName("vtjjomxqvguoyaxh")
    public suspend fun customServices(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            CustomServiceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.customServices = mapped
    }

    /**
     * @param argument List of Custom Services added to the compute.
     */
    @JvmName("gmiedgonbtagjhix")
    public suspend fun customServices(vararg argument: suspend CustomServiceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            CustomServiceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.customServices = mapped
    }

    /**
     * @param argument List of Custom Services added to the compute.
     */
    @JvmName("oggojyuuocwmkeww")
    public suspend fun customServices(argument: suspend CustomServiceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(CustomServiceArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.customServices = mapped
    }

    /**
     * @param values List of Custom Services added to the compute.
     */
    @JvmName("upqbkawdicrdgide")
    public suspend fun customServices(vararg values: CustomServiceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.customServices = mapped
    }

    /**
     * @param value Enable or disable node public IP address provisioning. Possible values are: Possible values are: true - Indicates that the compute nodes will have public IPs provisioned. false - Indicates that the compute nodes will have a private endpoint and no public IPs.
     */
    @JvmName("weipqptscnpohgsk")
    public suspend fun enableNodePublicIp(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableNodePublicIp = mapped
    }

    /**
     * @param value Settings for a personal compute instance.
     */
    @JvmName("jllyfgutqnqpctuk")
    public suspend fun personalComputeInstanceSettings(`value`: PersonalComputeInstanceSettingsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.personalComputeInstanceSettings = mapped
    }

    /**
     * @param argument Settings for a personal compute instance.
     */
    @JvmName("ubfgxxfodaqqdlac")
    public suspend fun personalComputeInstanceSettings(argument: suspend PersonalComputeInstanceSettingsArgsBuilder.() -> Unit) {
        val toBeMapped = PersonalComputeInstanceSettingsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.personalComputeInstanceSettings = mapped
    }

    /**
     * @param value The list of schedules to be applied on the computes.
     */
    @JvmName("kawvaovdxrwuehha")
    public suspend fun schedules(`value`: ComputeSchedulesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.schedules = mapped
    }

    /**
     * @param argument The list of schedules to be applied on the computes.
     */
    @JvmName("eqbylgxwsdxocqks")
    public suspend fun schedules(argument: suspend ComputeSchedulesArgsBuilder.() -> Unit) {
        val toBeMapped = ComputeSchedulesArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.schedules = mapped
    }

    /**
     * @param value Details of customized scripts to execute for setting up the cluster.
     */
    @JvmName("plfeinytasogxcph")
    public suspend fun setupScripts(`value`: SetupScriptsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.setupScripts = mapped
    }

    /**
     * @param argument Details of customized scripts to execute for setting up the cluster.
     */
    @JvmName("jqejoitsindtawge")
    public suspend fun setupScripts(argument: suspend SetupScriptsArgsBuilder.() -> Unit) {
        val toBeMapped = SetupScriptsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.setupScripts = mapped
    }

    /**
     * @param value Specifies policy and settings for SSH access.
     */
    @JvmName("dstjnfymkayvlceo")
    public suspend fun sshSettings(`value`: ComputeInstanceSshSettingsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sshSettings = mapped
    }

    /**
     * @param argument Specifies policy and settings for SSH access.
     */
    @JvmName("hjpfspjivpjlhhhe")
    public suspend fun sshSettings(argument: suspend ComputeInstanceSshSettingsArgsBuilder.() -> Unit) {
        val toBeMapped = ComputeInstanceSshSettingsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.sshSettings = mapped
    }

    /**
     * @param value Virtual network subnet resource ID the compute nodes belong to.
     */
    @JvmName("vunqhfieiohrqbik")
    public suspend fun subnet(`value`: ResourceIdArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnet = mapped
    }

    /**
     * @param argument Virtual network subnet resource ID the compute nodes belong to.
     */
    @JvmName("upikiafqgstxfasi")
    public suspend fun subnet(argument: suspend ResourceIdArgsBuilder.() -> Unit) {
        val toBeMapped = ResourceIdArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.subnet = mapped
    }

    /**
     * @param value Virtual Machine Size
     */
    @JvmName("pyoujonhppboxkxb")
    public suspend fun vmSize(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vmSize = mapped
    }

    internal fun build(): ComputeInstancePropertiesArgs = ComputeInstancePropertiesArgs(
        applicationSharingPolicy = applicationSharingPolicy,
        computeInstanceAuthorizationType = computeInstanceAuthorizationType,
        customServices = customServices,
        enableNodePublicIp = enableNodePublicIp,
        personalComputeInstanceSettings = personalComputeInstanceSettings,
        schedules = schedules,
        setupScripts = setupScripts,
        sshSettings = sshSettings,
        subnet = subnet,
        vmSize = vmSize,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy