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

com.pulumi.azure.compute.kotlin.inputs.LinuxVirtualMachineScaleSetExtensionArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azure.compute.kotlin.inputs

import com.pulumi.azure.compute.inputs.LinuxVirtualMachineScaleSetExtensionArgs.builder
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.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property autoUpgradeMinorVersion Should the latest version of the Extension be used at Deployment Time, if one is available? This won't auto-update the extension on existing installation. Defaults to `true`.
 * @property automaticUpgradeEnabled Should the Extension be automatically updated whenever the Publisher releases a new version of this VM Extension?
 * @property forceUpdateTag A value which, when different to the previous value can be used to force-run the Extension even if the Extension Configuration hasn't changed.
 * @property name The name for the Virtual Machine Scale Set Extension.
 * @property protectedSettings A JSON String which specifies Sensitive Settings (such as Passwords) for the Extension.
 * > **Note:** Keys within the `protected_settings` block are notoriously case-sensitive, where the casing required (e.g. TitleCase vs snakeCase) depends on the Extension being used. Please refer to the documentation for the specific Virtual Machine Extension you're looking to use for more information.
 * @property protectedSettingsFromKeyVault A `protected_settings_from_key_vault` block as defined below.
 * > **Note:** `protected_settings_from_key_vault` cannot be used with `protected_settings`
 * @property provisionAfterExtensions An ordered list of Extension names which this should be provisioned after.
 * @property publisher Specifies the Publisher of the Extension.
 * @property settings A JSON String which specifies Settings for the Extension.
 * > **Note:** Keys within the `settings` block are notoriously case-sensitive, where the casing required (e.g. TitleCase vs snakeCase) depends on the Extension being used. Please refer to the documentation for the specific Virtual Machine Extension you're looking to use for more information.
 * @property type Specifies the Type of the Extension.
 * @property typeHandlerVersion Specifies the version of the extension to use, available versions can be found using the Azure CLI.
 */
public data class LinuxVirtualMachineScaleSetExtensionArgs(
    public val autoUpgradeMinorVersion: Output? = null,
    public val automaticUpgradeEnabled: Output? = null,
    public val forceUpdateTag: Output? = null,
    public val name: Output,
    public val protectedSettings: Output? = null,
    public val protectedSettingsFromKeyVault: Output? = null,
    public val provisionAfterExtensions: Output>? = null,
    public val publisher: Output,
    public val settings: Output? = null,
    public val type: Output,
    public val typeHandlerVersion: Output,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.compute.inputs.LinuxVirtualMachineScaleSetExtensionArgs =
        com.pulumi.azure.compute.inputs.LinuxVirtualMachineScaleSetExtensionArgs.builder()
            .autoUpgradeMinorVersion(autoUpgradeMinorVersion?.applyValue({ args0 -> args0 }))
            .automaticUpgradeEnabled(automaticUpgradeEnabled?.applyValue({ args0 -> args0 }))
            .forceUpdateTag(forceUpdateTag?.applyValue({ args0 -> args0 }))
            .name(name.applyValue({ args0 -> args0 }))
            .protectedSettings(protectedSettings?.applyValue({ args0 -> args0 }))
            .protectedSettingsFromKeyVault(
                protectedSettingsFromKeyVault?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .provisionAfterExtensions(
                provisionAfterExtensions?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .publisher(publisher.applyValue({ args0 -> args0 }))
            .settings(settings?.applyValue({ args0 -> args0 }))
            .type(type.applyValue({ args0 -> args0 }))
            .typeHandlerVersion(typeHandlerVersion.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [LinuxVirtualMachineScaleSetExtensionArgs].
 */
@PulumiTagMarker
public class LinuxVirtualMachineScaleSetExtensionArgsBuilder internal constructor() {
    private var autoUpgradeMinorVersion: Output? = null

    private var automaticUpgradeEnabled: Output? = null

    private var forceUpdateTag: Output? = null

    private var name: Output? = null

    private var protectedSettings: Output? = null

    private var protectedSettingsFromKeyVault:
        Output? = null

    private var provisionAfterExtensions: Output>? = null

    private var publisher: Output? = null

    private var settings: Output? = null

    private var type: Output? = null

    private var typeHandlerVersion: Output? = null

    /**
     * @param value Should the latest version of the Extension be used at Deployment Time, if one is available? This won't auto-update the extension on existing installation. Defaults to `true`.
     */
    @JvmName("lafodkxbsddoqyrm")
    public suspend fun autoUpgradeMinorVersion(`value`: Output) {
        this.autoUpgradeMinorVersion = value
    }

    /**
     * @param value Should the Extension be automatically updated whenever the Publisher releases a new version of this VM Extension?
     */
    @JvmName("ooggiwfsienbrdyd")
    public suspend fun automaticUpgradeEnabled(`value`: Output) {
        this.automaticUpgradeEnabled = value
    }

    /**
     * @param value A value which, when different to the previous value can be used to force-run the Extension even if the Extension Configuration hasn't changed.
     */
    @JvmName("chpdmhgaxlqbhmmm")
    public suspend fun forceUpdateTag(`value`: Output) {
        this.forceUpdateTag = value
    }

    /**
     * @param value The name for the Virtual Machine Scale Set Extension.
     */
    @JvmName("idhghhmuyrfsxsbk")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value A JSON String which specifies Sensitive Settings (such as Passwords) for the Extension.
     * > **Note:** Keys within the `protected_settings` block are notoriously case-sensitive, where the casing required (e.g. TitleCase vs snakeCase) depends on the Extension being used. Please refer to the documentation for the specific Virtual Machine Extension you're looking to use for more information.
     */
    @JvmName("cdamrnurelhwfeen")
    public suspend fun protectedSettings(`value`: Output) {
        this.protectedSettings = value
    }

    /**
     * @param value A `protected_settings_from_key_vault` block as defined below.
     * > **Note:** `protected_settings_from_key_vault` cannot be used with `protected_settings`
     */
    @JvmName("rywheoladgosnsqu")
    public suspend fun protectedSettingsFromKeyVault(`value`: Output) {
        this.protectedSettingsFromKeyVault = value
    }

    /**
     * @param value An ordered list of Extension names which this should be provisioned after.
     */
    @JvmName("hyhnwuwpuuspcuxb")
    public suspend fun provisionAfterExtensions(`value`: Output>) {
        this.provisionAfterExtensions = value
    }

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

    /**
     * @param values An ordered list of Extension names which this should be provisioned after.
     */
    @JvmName("iyundteossmaiwbw")
    public suspend fun provisionAfterExtensions(values: List>) {
        this.provisionAfterExtensions = Output.all(values)
    }

    /**
     * @param value Specifies the Publisher of the Extension.
     */
    @JvmName("beyqtlaiuspvlyhv")
    public suspend fun publisher(`value`: Output) {
        this.publisher = value
    }

    /**
     * @param value A JSON String which specifies Settings for the Extension.
     * > **Note:** Keys within the `settings` block are notoriously case-sensitive, where the casing required (e.g. TitleCase vs snakeCase) depends on the Extension being used. Please refer to the documentation for the specific Virtual Machine Extension you're looking to use for more information.
     */
    @JvmName("umcdygrgkeftubxc")
    public suspend fun settings(`value`: Output) {
        this.settings = value
    }

    /**
     * @param value Specifies the Type of the Extension.
     */
    @JvmName("utvcletemuwuaxsr")
    public suspend fun type(`value`: Output) {
        this.type = value
    }

    /**
     * @param value Specifies the version of the extension to use, available versions can be found using the Azure CLI.
     */
    @JvmName("tcxjgngapblnnymi")
    public suspend fun typeHandlerVersion(`value`: Output) {
        this.typeHandlerVersion = value
    }

    /**
     * @param value Should the latest version of the Extension be used at Deployment Time, if one is available? This won't auto-update the extension on existing installation. Defaults to `true`.
     */
    @JvmName("libelptsifcvntfi")
    public suspend fun autoUpgradeMinorVersion(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoUpgradeMinorVersion = mapped
    }

    /**
     * @param value Should the Extension be automatically updated whenever the Publisher releases a new version of this VM Extension?
     */
    @JvmName("lmwfyidvoffuhoxl")
    public suspend fun automaticUpgradeEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.automaticUpgradeEnabled = mapped
    }

    /**
     * @param value A value which, when different to the previous value can be used to force-run the Extension even if the Extension Configuration hasn't changed.
     */
    @JvmName("nfsosanyvilcwphs")
    public suspend fun forceUpdateTag(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.forceUpdateTag = mapped
    }

    /**
     * @param value The name for the Virtual Machine Scale Set Extension.
     */
    @JvmName("fbjisjkdeechhjqf")
    public suspend fun name(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value A JSON String which specifies Sensitive Settings (such as Passwords) for the Extension.
     * > **Note:** Keys within the `protected_settings` block are notoriously case-sensitive, where the casing required (e.g. TitleCase vs snakeCase) depends on the Extension being used. Please refer to the documentation for the specific Virtual Machine Extension you're looking to use for more information.
     */
    @JvmName("hbmaxbnusxnhnnmh")
    public suspend fun protectedSettings(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.protectedSettings = mapped
    }

    /**
     * @param value A `protected_settings_from_key_vault` block as defined below.
     * > **Note:** `protected_settings_from_key_vault` cannot be used with `protected_settings`
     */
    @JvmName("raxhptnxeocadyjy")
    public suspend fun protectedSettingsFromKeyVault(`value`: LinuxVirtualMachineScaleSetExtensionProtectedSettingsFromKeyVaultArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.protectedSettingsFromKeyVault = mapped
    }

    /**
     * @param argument A `protected_settings_from_key_vault` block as defined below.
     * > **Note:** `protected_settings_from_key_vault` cannot be used with `protected_settings`
     */
    @JvmName("asoqdklywauuixjd")
    public suspend fun protectedSettingsFromKeyVault(argument: suspend LinuxVirtualMachineScaleSetExtensionProtectedSettingsFromKeyVaultArgsBuilder.() -> Unit) {
        val toBeMapped =
            LinuxVirtualMachineScaleSetExtensionProtectedSettingsFromKeyVaultArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.protectedSettingsFromKeyVault = mapped
    }

    /**
     * @param value An ordered list of Extension names which this should be provisioned after.
     */
    @JvmName("aovqbyupgidoyvxf")
    public suspend fun provisionAfterExtensions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.provisionAfterExtensions = mapped
    }

    /**
     * @param values An ordered list of Extension names which this should be provisioned after.
     */
    @JvmName("dkridrpecnfvtxrb")
    public suspend fun provisionAfterExtensions(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.provisionAfterExtensions = mapped
    }

    /**
     * @param value Specifies the Publisher of the Extension.
     */
    @JvmName("obgmevckecdmejnq")
    public suspend fun publisher(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.publisher = mapped
    }

    /**
     * @param value A JSON String which specifies Settings for the Extension.
     * > **Note:** Keys within the `settings` block are notoriously case-sensitive, where the casing required (e.g. TitleCase vs snakeCase) depends on the Extension being used. Please refer to the documentation for the specific Virtual Machine Extension you're looking to use for more information.
     */
    @JvmName("iuheskkkggextymp")
    public suspend fun settings(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.settings = mapped
    }

    /**
     * @param value Specifies the Type of the Extension.
     */
    @JvmName("gcnyyemypjmlfosn")
    public suspend fun type(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.type = mapped
    }

    /**
     * @param value Specifies the version of the extension to use, available versions can be found using the Azure CLI.
     */
    @JvmName("sgrnlebuhrmrxaor")
    public suspend fun typeHandlerVersion(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.typeHandlerVersion = mapped
    }

    internal fun build(): LinuxVirtualMachineScaleSetExtensionArgs =
        LinuxVirtualMachineScaleSetExtensionArgs(
            autoUpgradeMinorVersion = autoUpgradeMinorVersion,
            automaticUpgradeEnabled = automaticUpgradeEnabled,
            forceUpdateTag = forceUpdateTag,
            name = name ?: throw PulumiNullFieldException("name"),
            protectedSettings = protectedSettings,
            protectedSettingsFromKeyVault = protectedSettingsFromKeyVault,
            provisionAfterExtensions = provisionAfterExtensions,
            publisher = publisher ?: throw PulumiNullFieldException("publisher"),
            settings = settings,
            type = type ?: throw PulumiNullFieldException("type"),
            typeHandlerVersion = typeHandlerVersion ?: throw PulumiNullFieldException("typeHandlerVersion"),
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy