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

com.pulumi.azurenative.recoveryservices.kotlin.inputs.A2AEnableProtectionInputArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.recoveryservices.kotlin.inputs

import com.pulumi.azurenative.recoveryservices.inputs.A2AEnableProtectionInputArgs.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.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * A2A enable protection input.
 * @property diskEncryptionInfo The recovery disk encryption information (for two pass flows).
 * @property fabricObjectId The fabric specific object Id of the virtual machine.
 * @property instanceType The class type.
 * Expected value is 'A2A'.
 * @property multiVmGroupId The multi vm group id.
 * @property multiVmGroupName The multi vm group name.
 * @property recoveryAvailabilitySetId The recovery availability set Id.
 * @property recoveryAvailabilityZone The recovery availability zone.
 * @property recoveryAzureNetworkId The recovery Azure virtual network ARM id.
 * @property recoveryBootDiagStorageAccountId The boot diagnostic storage account.
 * @property recoveryCapacityReservationGroupId The recovery capacity reservation group Id.
 * @property recoveryCloudServiceId The recovery cloud service Id. Valid for V1 scenarios.
 * @property recoveryContainerId The recovery container Id.
 * @property recoveryExtendedLocation The recovery extended location.
 * @property recoveryProximityPlacementGroupId The recovery proximity placement group Id.
 * @property recoveryResourceGroupId The recovery resource group Id. Valid for V2 scenarios.
 * @property recoverySubnetName The recovery subnet name.
 * @property recoveryVirtualMachineScaleSetId The virtual machine scale set Id.
 * @property vmDisks The list of vm disk details.
 * @property vmManagedDisks The list of vm managed disk details.
 */
public data class A2AEnableProtectionInputArgs(
    public val diskEncryptionInfo: Output? = null,
    public val fabricObjectId: Output,
    public val instanceType: Output,
    public val multiVmGroupId: Output? = null,
    public val multiVmGroupName: Output? = null,
    public val recoveryAvailabilitySetId: Output? = null,
    public val recoveryAvailabilityZone: Output? = null,
    public val recoveryAzureNetworkId: Output? = null,
    public val recoveryBootDiagStorageAccountId: Output? = null,
    public val recoveryCapacityReservationGroupId: Output? = null,
    public val recoveryCloudServiceId: Output? = null,
    public val recoveryContainerId: Output? = null,
    public val recoveryExtendedLocation: Output? = null,
    public val recoveryProximityPlacementGroupId: Output? = null,
    public val recoveryResourceGroupId: Output? = null,
    public val recoverySubnetName: Output? = null,
    public val recoveryVirtualMachineScaleSetId: Output? = null,
    public val vmDisks: Output>? = null,
    public val vmManagedDisks: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.recoveryservices.inputs.A2AEnableProtectionInputArgs = com.pulumi.azurenative.recoveryservices.inputs.A2AEnableProtectionInputArgs.builder()
        .diskEncryptionInfo(
            diskEncryptionInfo?.applyValue({ args0 ->
                args0.let({ args0 ->
                    args0.toJava()
                })
            }),
        )
        .fabricObjectId(fabricObjectId.applyValue({ args0 -> args0 }))
        .instanceType(instanceType.applyValue({ args0 -> args0 }))
        .multiVmGroupId(multiVmGroupId?.applyValue({ args0 -> args0 }))
        .multiVmGroupName(multiVmGroupName?.applyValue({ args0 -> args0 }))
        .recoveryAvailabilitySetId(recoveryAvailabilitySetId?.applyValue({ args0 -> args0 }))
        .recoveryAvailabilityZone(recoveryAvailabilityZone?.applyValue({ args0 -> args0 }))
        .recoveryAzureNetworkId(recoveryAzureNetworkId?.applyValue({ args0 -> args0 }))
        .recoveryBootDiagStorageAccountId(recoveryBootDiagStorageAccountId?.applyValue({ args0 -> args0 }))
        .recoveryCapacityReservationGroupId(
            recoveryCapacityReservationGroupId?.applyValue({ args0 ->
                args0
            }),
        )
        .recoveryCloudServiceId(recoveryCloudServiceId?.applyValue({ args0 -> args0 }))
        .recoveryContainerId(recoveryContainerId?.applyValue({ args0 -> args0 }))
        .recoveryExtendedLocation(
            recoveryExtendedLocation?.applyValue({ args0 ->
                args0.let({ args0 ->
                    args0.toJava()
                })
            }),
        )
        .recoveryProximityPlacementGroupId(
            recoveryProximityPlacementGroupId?.applyValue({ args0 ->
                args0
            }),
        )
        .recoveryResourceGroupId(recoveryResourceGroupId?.applyValue({ args0 -> args0 }))
        .recoverySubnetName(recoverySubnetName?.applyValue({ args0 -> args0 }))
        .recoveryVirtualMachineScaleSetId(recoveryVirtualMachineScaleSetId?.applyValue({ args0 -> args0 }))
        .vmDisks(
            vmDisks?.applyValue({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                })
            }),
        )
        .vmManagedDisks(
            vmManagedDisks?.applyValue({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                })
            }),
        ).build()
}

/**
 * Builder for [A2AEnableProtectionInputArgs].
 */
@PulumiTagMarker
public class A2AEnableProtectionInputArgsBuilder internal constructor() {
    private var diskEncryptionInfo: Output? = null

    private var fabricObjectId: Output? = null

    private var instanceType: Output? = null

    private var multiVmGroupId: Output? = null

    private var multiVmGroupName: Output? = null

    private var recoveryAvailabilitySetId: Output? = null

    private var recoveryAvailabilityZone: Output? = null

    private var recoveryAzureNetworkId: Output? = null

    private var recoveryBootDiagStorageAccountId: Output? = null

    private var recoveryCapacityReservationGroupId: Output? = null

    private var recoveryCloudServiceId: Output? = null

    private var recoveryContainerId: Output? = null

    private var recoveryExtendedLocation: Output? = null

    private var recoveryProximityPlacementGroupId: Output? = null

    private var recoveryResourceGroupId: Output? = null

    private var recoverySubnetName: Output? = null

    private var recoveryVirtualMachineScaleSetId: Output? = null

    private var vmDisks: Output>? = null

    private var vmManagedDisks: Output>? = null

    /**
     * @param value The recovery disk encryption information (for two pass flows).
     */
    @JvmName("bhbedrahdjyvsxmy")
    public suspend fun diskEncryptionInfo(`value`: Output) {
        this.diskEncryptionInfo = value
    }

    /**
     * @param value The fabric specific object Id of the virtual machine.
     */
    @JvmName("xfqgalgarstnlils")
    public suspend fun fabricObjectId(`value`: Output) {
        this.fabricObjectId = value
    }

    /**
     * @param value The class type.
     * Expected value is 'A2A'.
     */
    @JvmName("tyqttebxtooqegpc")
    public suspend fun instanceType(`value`: Output) {
        this.instanceType = value
    }

    /**
     * @param value The multi vm group id.
     */
    @JvmName("fyjstffxjscmiivn")
    public suspend fun multiVmGroupId(`value`: Output) {
        this.multiVmGroupId = value
    }

    /**
     * @param value The multi vm group name.
     */
    @JvmName("knhyghkcpbvcvcab")
    public suspend fun multiVmGroupName(`value`: Output) {
        this.multiVmGroupName = value
    }

    /**
     * @param value The recovery availability set Id.
     */
    @JvmName("wumbwvcummwnocgs")
    public suspend fun recoveryAvailabilitySetId(`value`: Output) {
        this.recoveryAvailabilitySetId = value
    }

    /**
     * @param value The recovery availability zone.
     */
    @JvmName("xtqpatanvrmijkft")
    public suspend fun recoveryAvailabilityZone(`value`: Output) {
        this.recoveryAvailabilityZone = value
    }

    /**
     * @param value The recovery Azure virtual network ARM id.
     */
    @JvmName("pkwetlbxycrbfqbg")
    public suspend fun recoveryAzureNetworkId(`value`: Output) {
        this.recoveryAzureNetworkId = value
    }

    /**
     * @param value The boot diagnostic storage account.
     */
    @JvmName("jhnjknyyamxdnflm")
    public suspend fun recoveryBootDiagStorageAccountId(`value`: Output) {
        this.recoveryBootDiagStorageAccountId = value
    }

    /**
     * @param value The recovery capacity reservation group Id.
     */
    @JvmName("pbqyjomqasymrybr")
    public suspend fun recoveryCapacityReservationGroupId(`value`: Output) {
        this.recoveryCapacityReservationGroupId = value
    }

    /**
     * @param value The recovery cloud service Id. Valid for V1 scenarios.
     */
    @JvmName("ywvvatmtudlfnyyg")
    public suspend fun recoveryCloudServiceId(`value`: Output) {
        this.recoveryCloudServiceId = value
    }

    /**
     * @param value The recovery container Id.
     */
    @JvmName("ugpctjrgehrytawb")
    public suspend fun recoveryContainerId(`value`: Output) {
        this.recoveryContainerId = value
    }

    /**
     * @param value The recovery extended location.
     */
    @JvmName("frlgyjvevmwxyftw")
    public suspend fun recoveryExtendedLocation(`value`: Output) {
        this.recoveryExtendedLocation = value
    }

    /**
     * @param value The recovery proximity placement group Id.
     */
    @JvmName("ffaqfdivvtcnxvda")
    public suspend fun recoveryProximityPlacementGroupId(`value`: Output) {
        this.recoveryProximityPlacementGroupId = value
    }

    /**
     * @param value The recovery resource group Id. Valid for V2 scenarios.
     */
    @JvmName("wybracohtovhexpy")
    public suspend fun recoveryResourceGroupId(`value`: Output) {
        this.recoveryResourceGroupId = value
    }

    /**
     * @param value The recovery subnet name.
     */
    @JvmName("giwctouqaumtitoi")
    public suspend fun recoverySubnetName(`value`: Output) {
        this.recoverySubnetName = value
    }

    /**
     * @param value The virtual machine scale set Id.
     */
    @JvmName("gvrlsmnlnpgjwbru")
    public suspend fun recoveryVirtualMachineScaleSetId(`value`: Output) {
        this.recoveryVirtualMachineScaleSetId = value
    }

    /**
     * @param value The list of vm disk details.
     */
    @JvmName("ufxwathtbookfpbx")
    public suspend fun vmDisks(`value`: Output>) {
        this.vmDisks = value
    }

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

    /**
     * @param values The list of vm disk details.
     */
    @JvmName("cdaltqbnoyongylk")
    public suspend fun vmDisks(values: List>) {
        this.vmDisks = Output.all(values)
    }

    /**
     * @param value The list of vm managed disk details.
     */
    @JvmName("uqyutrwoibwwbffq")
    public suspend fun vmManagedDisks(`value`: Output>) {
        this.vmManagedDisks = value
    }

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

    /**
     * @param values The list of vm managed disk details.
     */
    @JvmName("fwxrfvdkuwrejopo")
    public suspend fun vmManagedDisks(values: List>) {
        this.vmManagedDisks = Output.all(values)
    }

    /**
     * @param value The recovery disk encryption information (for two pass flows).
     */
    @JvmName("bolnorychuyjwnsy")
    public suspend fun diskEncryptionInfo(`value`: DiskEncryptionInfoArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.diskEncryptionInfo = mapped
    }

    /**
     * @param argument The recovery disk encryption information (for two pass flows).
     */
    @JvmName("pgiygndfigixhqjf")
    public suspend fun diskEncryptionInfo(argument: suspend DiskEncryptionInfoArgsBuilder.() -> Unit) {
        val toBeMapped = DiskEncryptionInfoArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.diskEncryptionInfo = mapped
    }

    /**
     * @param value The fabric specific object Id of the virtual machine.
     */
    @JvmName("fxhlbtxbwbjeunuk")
    public suspend fun fabricObjectId(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.fabricObjectId = mapped
    }

    /**
     * @param value The class type.
     * Expected value is 'A2A'.
     */
    @JvmName("ehcvemlmrbbxaeff")
    public suspend fun instanceType(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.instanceType = mapped
    }

    /**
     * @param value The multi vm group id.
     */
    @JvmName("fmlbaqanrqahahwx")
    public suspend fun multiVmGroupId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.multiVmGroupId = mapped
    }

    /**
     * @param value The multi vm group name.
     */
    @JvmName("rgdnanmecrinsohg")
    public suspend fun multiVmGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.multiVmGroupName = mapped
    }

    /**
     * @param value The recovery availability set Id.
     */
    @JvmName("haqkjhwydmnhnrts")
    public suspend fun recoveryAvailabilitySetId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryAvailabilitySetId = mapped
    }

    /**
     * @param value The recovery availability zone.
     */
    @JvmName("kbkgbepmiopvxpbo")
    public suspend fun recoveryAvailabilityZone(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryAvailabilityZone = mapped
    }

    /**
     * @param value The recovery Azure virtual network ARM id.
     */
    @JvmName("isqkphtufbromkmc")
    public suspend fun recoveryAzureNetworkId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryAzureNetworkId = mapped
    }

    /**
     * @param value The boot diagnostic storage account.
     */
    @JvmName("wptpknsekawqetjg")
    public suspend fun recoveryBootDiagStorageAccountId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryBootDiagStorageAccountId = mapped
    }

    /**
     * @param value The recovery capacity reservation group Id.
     */
    @JvmName("ekvxgpxwwccfgmno")
    public suspend fun recoveryCapacityReservationGroupId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryCapacityReservationGroupId = mapped
    }

    /**
     * @param value The recovery cloud service Id. Valid for V1 scenarios.
     */
    @JvmName("uiinwmvvufkxjrvs")
    public suspend fun recoveryCloudServiceId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryCloudServiceId = mapped
    }

    /**
     * @param value The recovery container Id.
     */
    @JvmName("fggpvfncwrmixkyj")
    public suspend fun recoveryContainerId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryContainerId = mapped
    }

    /**
     * @param value The recovery extended location.
     */
    @JvmName("wplquklajewyenbq")
    public suspend fun recoveryExtendedLocation(`value`: ExtendedLocationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryExtendedLocation = mapped
    }

    /**
     * @param argument The recovery extended location.
     */
    @JvmName("paexfyqfiveedmhg")
    public suspend fun recoveryExtendedLocation(argument: suspend ExtendedLocationArgsBuilder.() -> Unit) {
        val toBeMapped = ExtendedLocationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.recoveryExtendedLocation = mapped
    }

    /**
     * @param value The recovery proximity placement group Id.
     */
    @JvmName("yxmxbsodrqtuvhpc")
    public suspend fun recoveryProximityPlacementGroupId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryProximityPlacementGroupId = mapped
    }

    /**
     * @param value The recovery resource group Id. Valid for V2 scenarios.
     */
    @JvmName("mbhujxyuogussltt")
    public suspend fun recoveryResourceGroupId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryResourceGroupId = mapped
    }

    /**
     * @param value The recovery subnet name.
     */
    @JvmName("maidtomitkyuomex")
    public suspend fun recoverySubnetName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoverySubnetName = mapped
    }

    /**
     * @param value The virtual machine scale set Id.
     */
    @JvmName("uylwwbcobcktkawr")
    public suspend fun recoveryVirtualMachineScaleSetId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recoveryVirtualMachineScaleSetId = mapped
    }

    /**
     * @param value The list of vm disk details.
     */
    @JvmName("whjutbduyumjyxrc")
    public suspend fun vmDisks(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vmDisks = mapped
    }

    /**
     * @param argument The list of vm disk details.
     */
    @JvmName("dvwkdtaoqaxnblva")
    public suspend fun vmDisks(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            A2AVmDiskInputDetailsArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.vmDisks = mapped
    }

    /**
     * @param argument The list of vm disk details.
     */
    @JvmName("dcacxbldhjfbayik")
    public suspend fun vmDisks(vararg argument: suspend A2AVmDiskInputDetailsArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            A2AVmDiskInputDetailsArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.vmDisks = mapped
    }

    /**
     * @param argument The list of vm disk details.
     */
    @JvmName("dsxfwyyqhjgwaccu")
    public suspend fun vmDisks(argument: suspend A2AVmDiskInputDetailsArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(A2AVmDiskInputDetailsArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.vmDisks = mapped
    }

    /**
     * @param values The list of vm disk details.
     */
    @JvmName("oxgmphssnemhgrin")
    public suspend fun vmDisks(vararg values: A2AVmDiskInputDetailsArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.vmDisks = mapped
    }

    /**
     * @param value The list of vm managed disk details.
     */
    @JvmName("uvxjwmqceeogjrvt")
    public suspend fun vmManagedDisks(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vmManagedDisks = mapped
    }

    /**
     * @param argument The list of vm managed disk details.
     */
    @JvmName("acarglddoqhaomms")
    public suspend fun vmManagedDisks(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            A2AVmManagedDiskInputDetailsArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.vmManagedDisks = mapped
    }

    /**
     * @param argument The list of vm managed disk details.
     */
    @JvmName("icyumkpgdawdhqwg")
    public suspend fun vmManagedDisks(vararg argument: suspend A2AVmManagedDiskInputDetailsArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            A2AVmManagedDiskInputDetailsArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.vmManagedDisks = mapped
    }

    /**
     * @param argument The list of vm managed disk details.
     */
    @JvmName("qgwsrfhecphhcmvp")
    public suspend fun vmManagedDisks(argument: suspend A2AVmManagedDiskInputDetailsArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            A2AVmManagedDiskInputDetailsArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.vmManagedDisks = mapped
    }

    /**
     * @param values The list of vm managed disk details.
     */
    @JvmName("btspwwbwsugnrypl")
    public suspend fun vmManagedDisks(vararg values: A2AVmManagedDiskInputDetailsArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.vmManagedDisks = mapped
    }

    internal fun build(): A2AEnableProtectionInputArgs = A2AEnableProtectionInputArgs(
        diskEncryptionInfo = diskEncryptionInfo,
        fabricObjectId = fabricObjectId ?: throw PulumiNullFieldException("fabricObjectId"),
        instanceType = instanceType ?: throw PulumiNullFieldException("instanceType"),
        multiVmGroupId = multiVmGroupId,
        multiVmGroupName = multiVmGroupName,
        recoveryAvailabilitySetId = recoveryAvailabilitySetId,
        recoveryAvailabilityZone = recoveryAvailabilityZone,
        recoveryAzureNetworkId = recoveryAzureNetworkId,
        recoveryBootDiagStorageAccountId = recoveryBootDiagStorageAccountId,
        recoveryCapacityReservationGroupId = recoveryCapacityReservationGroupId,
        recoveryCloudServiceId = recoveryCloudServiceId,
        recoveryContainerId = recoveryContainerId,
        recoveryExtendedLocation = recoveryExtendedLocation,
        recoveryProximityPlacementGroupId = recoveryProximityPlacementGroupId,
        recoveryResourceGroupId = recoveryResourceGroupId,
        recoverySubnetName = recoverySubnetName,
        recoveryVirtualMachineScaleSetId = recoveryVirtualMachineScaleSetId,
        vmDisks = vmDisks,
        vmManagedDisks = vmManagedDisks,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy