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

com.pulumi.azure.dataprotection.kotlin.BackupVaultArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azure.dataprotection.kotlin

import com.pulumi.azure.dataprotection.BackupVaultArgs.builder
import com.pulumi.azure.dataprotection.kotlin.inputs.BackupVaultIdentityArgs
import com.pulumi.azure.dataprotection.kotlin.inputs.BackupVaultIdentityArgsBuilder
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.Double
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Manages a Backup Vault.
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-resources",
 *     location: "West Europe",
 * });
 * const exampleBackupVault = new azure.dataprotection.BackupVault("example", {
 *     name: "example-backup-vault",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     datastoreType: "VaultStore",
 *     redundancy: "LocallyRedundant",
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * example = azure.core.ResourceGroup("example",
 *     name="example-resources",
 *     location="West Europe")
 * example_backup_vault = azure.dataprotection.BackupVault("example",
 *     name="example-backup-vault",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     datastore_type="VaultStore",
 *     redundancy="LocallyRedundant")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Azure.Core.ResourceGroup("example", new()
 *     {
 *         Name = "example-resources",
 *         Location = "West Europe",
 *     });
 *     var exampleBackupVault = new Azure.DataProtection.BackupVault("example", new()
 *     {
 *         Name = "example-backup-vault",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         DatastoreType = "VaultStore",
 *         Redundancy = "LocallyRedundant",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/dataprotection"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
 * 			Name:     pulumi.String("example-resources"),
 * 			Location: pulumi.String("West Europe"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = dataprotection.NewBackupVault(ctx, "example", &dataprotection.BackupVaultArgs{
 * 			Name:              pulumi.String("example-backup-vault"),
 * 			ResourceGroupName: example.Name,
 * 			Location:          example.Location,
 * 			DatastoreType:     pulumi.String("VaultStore"),
 * 			Redundancy:        pulumi.String("LocallyRedundant"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azure.core.ResourceGroup;
 * import com.pulumi.azure.core.ResourceGroupArgs;
 * import com.pulumi.azure.dataprotection.BackupVault;
 * import com.pulumi.azure.dataprotection.BackupVaultArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new ResourceGroup("example", ResourceGroupArgs.builder()
 *             .name("example-resources")
 *             .location("West Europe")
 *             .build());
 *         var exampleBackupVault = new BackupVault("exampleBackupVault", BackupVaultArgs.builder()
 *             .name("example-backup-vault")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .datastoreType("VaultStore")
 *             .redundancy("LocallyRedundant")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: example-resources
 *       location: West Europe
 *   exampleBackupVault:
 *     type: azure:dataprotection:BackupVault
 *     name: example
 *     properties:
 *       name: example-backup-vault
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       datastoreType: VaultStore
 *       redundancy: LocallyRedundant
 * ```
 * 
 * ## Import
 * Backup Vaults can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:dataprotection/backupVault:BackupVault example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.DataProtection/backupVaults/vault1
 * ```
 * @property datastoreType Specifies the type of the data store. Possible values are `ArchiveStore`, `OperationalStore`, `SnapshotStore` and `VaultStore`. Changing this forces a new resource to be created.
 * > **Note:** The `SnapshotStore` will be removed in version 4.0 as it has been replaced by `OperationalStore`.
 * @property identity An `identity` block as defined below.
 * @property location The Azure Region where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
 * @property name Specifies the name of the Backup Vault. Changing this forces a new Backup Vault to be created.
 * @property redundancy Specifies the backup storage redundancy. Possible values are `GeoRedundant`, `LocallyRedundant` and `ZoneRedundant`. Changing this forces a new Backup Vault to be created.
 * @property resourceGroupName The name of the Resource Group where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
 * @property retentionDurationInDays The soft delete retention duration for this Backup Vault. Possible values are between `14` and `180`. Defaults to `14`.
 * > **Note:** The `retention_duration_in_days` is the number of days for which deleted data is retained before being permanently deleted. Retention period till 14 days are free of cost, however, retention beyond 14 days may incur additional charges. The `retention_duration_in_days` is required when the `soft_delete` is set to `On`.
 * @property softDelete The state of soft delete for this Backup Vault. Possible values are `AlwaysOn`, `Off` and `On`. Defaults to `On`.
 * > **Note:** Once the `soft_delete` is set to `AlwaysOn`, the setting cannot be changed.
 * @property tags A mapping of tags which should be assigned to the Backup Vault.
 */
public data class BackupVaultArgs(
    public val datastoreType: Output? = null,
    public val identity: Output? = null,
    public val location: Output? = null,
    public val name: Output? = null,
    public val redundancy: Output? = null,
    public val resourceGroupName: Output? = null,
    public val retentionDurationInDays: Output? = null,
    public val softDelete: Output? = null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.dataprotection.BackupVaultArgs =
        com.pulumi.azure.dataprotection.BackupVaultArgs.builder()
            .datastoreType(datastoreType?.applyValue({ args0 -> args0 }))
            .identity(identity?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .location(location?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .redundancy(redundancy?.applyValue({ args0 -> args0 }))
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .retentionDurationInDays(retentionDurationInDays?.applyValue({ args0 -> args0 }))
            .softDelete(softDelete?.applyValue({ args0 -> args0 }))
            .tags(
                tags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            ).build()
}

/**
 * Builder for [BackupVaultArgs].
 */
@PulumiTagMarker
public class BackupVaultArgsBuilder internal constructor() {
    private var datastoreType: Output? = null

    private var identity: Output? = null

    private var location: Output? = null

    private var name: Output? = null

    private var redundancy: Output? = null

    private var resourceGroupName: Output? = null

    private var retentionDurationInDays: Output? = null

    private var softDelete: Output? = null

    private var tags: Output>? = null

    /**
     * @param value Specifies the type of the data store. Possible values are `ArchiveStore`, `OperationalStore`, `SnapshotStore` and `VaultStore`. Changing this forces a new resource to be created.
     * > **Note:** The `SnapshotStore` will be removed in version 4.0 as it has been replaced by `OperationalStore`.
     */
    @JvmName("opvncrykijeckumn")
    public suspend fun datastoreType(`value`: Output) {
        this.datastoreType = value
    }

    /**
     * @param value An `identity` block as defined below.
     */
    @JvmName("lnhoieqxinhirspt")
    public suspend fun identity(`value`: Output) {
        this.identity = value
    }

    /**
     * @param value The Azure Region where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    @JvmName("foahhxkxtnnorjhd")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value Specifies the name of the Backup Vault. Changing this forces a new Backup Vault to be created.
     */
    @JvmName("thpitnlcutucjkyg")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Specifies the backup storage redundancy. Possible values are `GeoRedundant`, `LocallyRedundant` and `ZoneRedundant`. Changing this forces a new Backup Vault to be created.
     */
    @JvmName("mcyehvvucuhinmbg")
    public suspend fun redundancy(`value`: Output) {
        this.redundancy = value
    }

    /**
     * @param value The name of the Resource Group where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    @JvmName("gbxuicnuwiaggmhf")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value The soft delete retention duration for this Backup Vault. Possible values are between `14` and `180`. Defaults to `14`.
     * > **Note:** The `retention_duration_in_days` is the number of days for which deleted data is retained before being permanently deleted. Retention period till 14 days are free of cost, however, retention beyond 14 days may incur additional charges. The `retention_duration_in_days` is required when the `soft_delete` is set to `On`.
     */
    @JvmName("quxmtokhsxrxbrqy")
    public suspend fun retentionDurationInDays(`value`: Output) {
        this.retentionDurationInDays = value
    }

    /**
     * @param value The state of soft delete for this Backup Vault. Possible values are `AlwaysOn`, `Off` and `On`. Defaults to `On`.
     * > **Note:** Once the `soft_delete` is set to `AlwaysOn`, the setting cannot be changed.
     */
    @JvmName("ltsvjairbuikcuxa")
    public suspend fun softDelete(`value`: Output) {
        this.softDelete = value
    }

    /**
     * @param value A mapping of tags which should be assigned to the Backup Vault.
     */
    @JvmName("ilthqcafevifysaq")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value Specifies the type of the data store. Possible values are `ArchiveStore`, `OperationalStore`, `SnapshotStore` and `VaultStore`. Changing this forces a new resource to be created.
     * > **Note:** The `SnapshotStore` will be removed in version 4.0 as it has been replaced by `OperationalStore`.
     */
    @JvmName("ypfitcpgxnubleki")
    public suspend fun datastoreType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.datastoreType = mapped
    }

    /**
     * @param value An `identity` block as defined below.
     */
    @JvmName("vtconfujuyprngxb")
    public suspend fun identity(`value`: BackupVaultIdentityArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.identity = mapped
    }

    /**
     * @param argument An `identity` block as defined below.
     */
    @JvmName("fupghhpngdgmtcdn")
    public suspend fun identity(argument: suspend BackupVaultIdentityArgsBuilder.() -> Unit) {
        val toBeMapped = BackupVaultIdentityArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.identity = mapped
    }

    /**
     * @param value The Azure Region where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    @JvmName("slymtqowxeohxsui")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value Specifies the name of the Backup Vault. Changing this forces a new Backup Vault to be created.
     */
    @JvmName("blxjobhfutamwytv")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Specifies the backup storage redundancy. Possible values are `GeoRedundant`, `LocallyRedundant` and `ZoneRedundant`. Changing this forces a new Backup Vault to be created.
     */
    @JvmName("pdokfncwiumdgqty")
    public suspend fun redundancy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.redundancy = mapped
    }

    /**
     * @param value The name of the Resource Group where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    @JvmName("qgxvqbpgautekono")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value The soft delete retention duration for this Backup Vault. Possible values are between `14` and `180`. Defaults to `14`.
     * > **Note:** The `retention_duration_in_days` is the number of days for which deleted data is retained before being permanently deleted. Retention period till 14 days are free of cost, however, retention beyond 14 days may incur additional charges. The `retention_duration_in_days` is required when the `soft_delete` is set to `On`.
     */
    @JvmName("cgbmbemmriheaypa")
    public suspend fun retentionDurationInDays(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.retentionDurationInDays = mapped
    }

    /**
     * @param value The state of soft delete for this Backup Vault. Possible values are `AlwaysOn`, `Off` and `On`. Defaults to `On`.
     * > **Note:** Once the `soft_delete` is set to `AlwaysOn`, the setting cannot be changed.
     */
    @JvmName("wnbjlbolflrntoir")
    public suspend fun softDelete(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.softDelete = mapped
    }

    /**
     * @param value A mapping of tags which should be assigned to the Backup Vault.
     */
    @JvmName("qcaudhrvhulruryp")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values A mapping of tags which should be assigned to the Backup Vault.
     */
    @JvmName("eeimpfqcebbsnbkq")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): BackupVaultArgs = BackupVaultArgs(
        datastoreType = datastoreType,
        identity = identity,
        location = location,
        name = name,
        redundancy = redundancy,
        resourceGroupName = resourceGroupName,
        retentionDurationInDays = retentionDurationInDays,
        softDelete = softDelete,
        tags = tags,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy