Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.pulumi.azure.netapp.kotlin.VolumeArgs.kt Maven / Gradle / Ivy
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.azure.netapp.kotlin
import com.pulumi.azure.netapp.VolumeArgs.builder
import com.pulumi.azure.netapp.kotlin.inputs.VolumeDataProtectionReplicationArgs
import com.pulumi.azure.netapp.kotlin.inputs.VolumeDataProtectionReplicationArgsBuilder
import com.pulumi.azure.netapp.kotlin.inputs.VolumeDataProtectionSnapshotPolicyArgs
import com.pulumi.azure.netapp.kotlin.inputs.VolumeDataProtectionSnapshotPolicyArgsBuilder
import com.pulumi.azure.netapp.kotlin.inputs.VolumeExportPolicyRuleArgs
import com.pulumi.azure.netapp.kotlin.inputs.VolumeExportPolicyRuleArgsBuilder
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.Double
import kotlin.Int
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName
/**
*
* ## Import
* NetApp Volumes can be imported using the `resource id`, e.g.
* ```sh
* $ pulumi import azure:netapp/volume:Volume example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.NetApp/netAppAccounts/account1/capacityPools/pool1/volumes/volume1
* ```
* @property accountName The name of the NetApp account in which the NetApp Pool should be created. Changing this forces a new resource to be created.
* @property azureVmwareDataStoreEnabled Is the NetApp Volume enabled for Azure VMware Solution (AVS) datastore purpose. Defaults to `false`. Changing this forces a new resource to be created.
* @property createFromSnapshotResourceId Creates volume from snapshot. Following properties must be the same as the original volume where the snapshot was taken from: `protocols`, `subnet_id`, `location`, `service_level`, `resource_group_name`, `account_name` and `pool_name`. Changing this forces a new resource to be created.
* @property dataProtectionReplication A `data_protection_replication` block as defined below. Changing this forces a new resource to be created.
* @property dataProtectionSnapshotPolicy A `data_protection_snapshot_policy` block as defined below.
* @property encryptionKeySource The encryption key source, it can be `Microsoft.NetApp` for platform managed keys or `Microsoft.KeyVault` for customer-managed keys. This is required with `key_vault_private_endpoint_id`. Changing this forces a new resource to be created.
* @property exportPolicyRules One or more `export_policy_rule` block defined below.
* @property kerberosEnabled Enable to allow Kerberos secured volumes. Requires appropriate export rules as well as the parent `azure.netapp.Account`
* having a defined AD connection.
* @property keyVaultPrivateEndpointId The Private Endpoint ID for Key Vault, which is required when using customer-managed keys. This is required with `encryption_key_source`. Changing this forces a new resource to be created.
* @property location Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
* @property name The name of the NetApp Volume. Changing this forces a new resource to be created.
* @property networkFeatures Indicates which network feature to use, accepted values are `Basic` or `Standard`, it defaults to `Basic` if not defined. This is a feature in public preview and for more information about it and how to register, please refer to [Configure network features for an Azure NetApp Files volume](https://docs.microsoft.com/en-us/azure/azure-netapp-files/configure-network-features).
* @property poolName The name of the NetApp pool in which the NetApp Volume should be created. Changing this forces a new resource to be created.
* @property protocols The target volume protocol expressed as a list. Supported single value include `CIFS`, `NFSv3`, or `NFSv4.1`. If argument is not defined it will default to `NFSv3`. Changing this forces a new resource to be created and data will be lost. Dual protocol scenario is supported for CIFS and NFSv3, for more information, please refer to [Create a dual-protocol volume for Azure NetApp Files](https://docs.microsoft.com/azure/azure-netapp-files/create-volumes-dual-protocol) document.
* @property resourceGroupName The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created.
* @property securityStyle Volume security style, accepted values are `unix` or `ntfs`. If not provided, single-protocol volume is created defaulting to `unix` if it is `NFSv3` or `NFSv4.1` volume, if `CIFS`, it will default to `ntfs`. In a dual-protocol volume, if not provided, its value will be `ntfs`. Changing this forces a new resource to be created.
* @property serviceLevel The target performance of the file system. Valid values include `Premium`, `Standard`, or `Ultra`. Changing this forces a new resource to be created.
* @property smbAccessBasedEnumerationEnabled Limits enumeration of files and folders (that is, listing the contents) in SMB only to users with allowed access on the share. For instance, if a user doesn't have access to read a file or folder in a share with access-based enumeration enabled, then the file or folder doesn't show up in directory listings. Defaults to `false`. For more information, please refer to [Understand NAS share permissions in Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/network-attached-storage-permissions#:~:text=security%20for%20administrators.-,Access%2Dbased%20enumeration,in%20an%20Azure%20NetApp%20Files%20SMB%20volume.%20Only%20contosoadmin%20has%20access.,-In%20the%20below)
* @property smbContinuousAvailabilityEnabled Enable SMB Continuous Availability.
* @property smbNonBrowsableEnabled Limits clients from browsing for an SMB share by hiding the share from view in Windows Explorer or when listing shares in "net view." Only end users that know the absolute paths to the share are able to find the share. Defaults to `false`. For more information, please refer to [Understand NAS share permissions in Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/network-attached-storage-permissions#:~:text=Non%2Dbrowsable%20shares,find%20the%20share.)
* @property snapshotDirectoryVisible Specifies whether the .snapshot (NFS clients) or ~snapshot (SMB clients) path of a volume is visible, default value is true.
* @property storageQuotaInGb The maximum Storage Quota allowed for a file system in Gigabytes.
* @property subnetId The ID of the Subnet the NetApp Volume resides in, which must have the `Microsoft.NetApp/volumes` delegation. Changing this forces a new resource to be created.
* @property tags A mapping of tags to assign to the resource.
* > **Note:** It is highly recommended to use the **lifecycle** property as noted in the example since it will prevent an accidental deletion of the volume if the `protocols` argument changes to a different protocol type.
* @property throughputInMibps Throughput of this volume in Mibps.
* @property volumePath A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created.
* @property zone Specifies the Availability Zone in which the Volume should be located. Possible values are `1`, `2` and `3`. Changing this forces a new resource to be created. This feature is currently in preview, for more information on how to enable it, please refer to [Manage availability zone volume placement for Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/manage-availability-zone-volume-placement#register-the-feature).
*/
public data class VolumeArgs(
public val accountName: Output? = null,
public val azureVmwareDataStoreEnabled: Output? = null,
public val createFromSnapshotResourceId: Output? = null,
public val dataProtectionReplication: Output? = null,
public val dataProtectionSnapshotPolicy: Output? = null,
public val encryptionKeySource: Output? = null,
public val exportPolicyRules: Output>? = null,
public val kerberosEnabled: Output? = null,
public val keyVaultPrivateEndpointId: Output? = null,
public val location: Output? = null,
public val name: Output? = null,
public val networkFeatures: Output? = null,
public val poolName: Output? = null,
public val protocols: Output>? = null,
public val resourceGroupName: Output? = null,
public val securityStyle: Output? = null,
public val serviceLevel: Output? = null,
public val smbAccessBasedEnumerationEnabled: Output? = null,
public val smbContinuousAvailabilityEnabled: Output? = null,
public val smbNonBrowsableEnabled: Output? = null,
public val snapshotDirectoryVisible: Output? = null,
public val storageQuotaInGb: Output? = null,
public val subnetId: Output? = null,
public val tags: Output>? = null,
public val throughputInMibps: Output? = null,
public val volumePath: Output? = null,
public val zone: Output? = null,
) : ConvertibleToJava {
override fun toJava(): com.pulumi.azure.netapp.VolumeArgs =
com.pulumi.azure.netapp.VolumeArgs.builder()
.accountName(accountName?.applyValue({ args0 -> args0 }))
.azureVmwareDataStoreEnabled(azureVmwareDataStoreEnabled?.applyValue({ args0 -> args0 }))
.createFromSnapshotResourceId(createFromSnapshotResourceId?.applyValue({ args0 -> args0 }))
.dataProtectionReplication(
dataProtectionReplication?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.dataProtectionSnapshotPolicy(
dataProtectionSnapshotPolicy?.applyValue({ args0 ->
args0.let({ args0 -> args0.toJava() })
}),
)
.encryptionKeySource(encryptionKeySource?.applyValue({ args0 -> args0 }))
.exportPolicyRules(
exportPolicyRules?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
})
}),
)
.kerberosEnabled(kerberosEnabled?.applyValue({ args0 -> args0 }))
.keyVaultPrivateEndpointId(keyVaultPrivateEndpointId?.applyValue({ args0 -> args0 }))
.location(location?.applyValue({ args0 -> args0 }))
.name(name?.applyValue({ args0 -> args0 }))
.networkFeatures(networkFeatures?.applyValue({ args0 -> args0 }))
.poolName(poolName?.applyValue({ args0 -> args0 }))
.protocols(protocols?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
.resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
.securityStyle(securityStyle?.applyValue({ args0 -> args0 }))
.serviceLevel(serviceLevel?.applyValue({ args0 -> args0 }))
.smbAccessBasedEnumerationEnabled(smbAccessBasedEnumerationEnabled?.applyValue({ args0 -> args0 }))
.smbContinuousAvailabilityEnabled(smbContinuousAvailabilityEnabled?.applyValue({ args0 -> args0 }))
.smbNonBrowsableEnabled(smbNonBrowsableEnabled?.applyValue({ args0 -> args0 }))
.snapshotDirectoryVisible(snapshotDirectoryVisible?.applyValue({ args0 -> args0 }))
.storageQuotaInGb(storageQuotaInGb?.applyValue({ args0 -> args0 }))
.subnetId(subnetId?.applyValue({ args0 -> args0 }))
.tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
.throughputInMibps(throughputInMibps?.applyValue({ args0 -> args0 }))
.volumePath(volumePath?.applyValue({ args0 -> args0 }))
.zone(zone?.applyValue({ args0 -> args0 })).build()
}
/**
* Builder for [VolumeArgs].
*/
@PulumiTagMarker
public class VolumeArgsBuilder internal constructor() {
private var accountName: Output? = null
private var azureVmwareDataStoreEnabled: Output? = null
private var createFromSnapshotResourceId: Output? = null
private var dataProtectionReplication: Output? = null
private var dataProtectionSnapshotPolicy: Output? = null
private var encryptionKeySource: Output? = null
private var exportPolicyRules: Output>? = null
private var kerberosEnabled: Output? = null
private var keyVaultPrivateEndpointId: Output? = null
private var location: Output? = null
private var name: Output? = null
private var networkFeatures: Output? = null
private var poolName: Output? = null
private var protocols: Output>? = null
private var resourceGroupName: Output? = null
private var securityStyle: Output? = null
private var serviceLevel: Output? = null
private var smbAccessBasedEnumerationEnabled: Output? = null
private var smbContinuousAvailabilityEnabled: Output? = null
private var smbNonBrowsableEnabled: Output? = null
private var snapshotDirectoryVisible: Output? = null
private var storageQuotaInGb: Output? = null
private var subnetId: Output? = null
private var tags: Output>? = null
private var throughputInMibps: Output? = null
private var volumePath: Output? = null
private var zone: Output? = null
/**
* @param value The name of the NetApp account in which the NetApp Pool should be created. Changing this forces a new resource to be created.
*/
@JvmName("syhmrpberuqhripk")
public suspend fun accountName(`value`: Output) {
this.accountName = value
}
/**
* @param value Is the NetApp Volume enabled for Azure VMware Solution (AVS) datastore purpose. Defaults to `false`. Changing this forces a new resource to be created.
*/
@JvmName("ffkcvhlbyavsgsjh")
public suspend fun azureVmwareDataStoreEnabled(`value`: Output) {
this.azureVmwareDataStoreEnabled = value
}
/**
* @param value Creates volume from snapshot. Following properties must be the same as the original volume where the snapshot was taken from: `protocols`, `subnet_id`, `location`, `service_level`, `resource_group_name`, `account_name` and `pool_name`. Changing this forces a new resource to be created.
*/
@JvmName("mjewknqbspmiwwpe")
public suspend fun createFromSnapshotResourceId(`value`: Output) {
this.createFromSnapshotResourceId = value
}
/**
* @param value A `data_protection_replication` block as defined below. Changing this forces a new resource to be created.
*/
@JvmName("yselcwhcybyetrny")
public suspend
fun dataProtectionReplication(`value`: Output) {
this.dataProtectionReplication = value
}
/**
* @param value A `data_protection_snapshot_policy` block as defined below.
*/
@JvmName("oewoikofbegmdugn")
public suspend
fun dataProtectionSnapshotPolicy(`value`: Output) {
this.dataProtectionSnapshotPolicy = value
}
/**
* @param value The encryption key source, it can be `Microsoft.NetApp` for platform managed keys or `Microsoft.KeyVault` for customer-managed keys. This is required with `key_vault_private_endpoint_id`. Changing this forces a new resource to be created.
*/
@JvmName("eqxvotgkomqltrer")
public suspend fun encryptionKeySource(`value`: Output) {
this.encryptionKeySource = value
}
/**
* @param value One or more `export_policy_rule` block defined below.
*/
@JvmName("npyrdmtwkrvkqyup")
public suspend fun exportPolicyRules(`value`: Output>) {
this.exportPolicyRules = value
}
@JvmName("atlwnsabhuecgfim")
public suspend fun exportPolicyRules(vararg values: Output) {
this.exportPolicyRules = Output.all(values.asList())
}
/**
* @param values One or more `export_policy_rule` block defined below.
*/
@JvmName("judqdlssspqpoxuk")
public suspend fun exportPolicyRules(values: List>) {
this.exportPolicyRules = Output.all(values)
}
/**
* @param value Enable to allow Kerberos secured volumes. Requires appropriate export rules as well as the parent `azure.netapp.Account`
* having a defined AD connection.
*/
@JvmName("infqhdgpgdejwsea")
public suspend fun kerberosEnabled(`value`: Output) {
this.kerberosEnabled = value
}
/**
* @param value The Private Endpoint ID for Key Vault, which is required when using customer-managed keys. This is required with `encryption_key_source`. Changing this forces a new resource to be created.
*/
@JvmName("gxyfaxkmunxnfnws")
public suspend fun keyVaultPrivateEndpointId(`value`: Output) {
this.keyVaultPrivateEndpointId = value
}
/**
* @param value Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
*/
@JvmName("jfndeqypnktayhlb")
public suspend fun location(`value`: Output) {
this.location = value
}
/**
* @param value The name of the NetApp Volume. Changing this forces a new resource to be created.
*/
@JvmName("rxcqsntdcsllfvyd")
public suspend fun name(`value`: Output) {
this.name = value
}
/**
* @param value Indicates which network feature to use, accepted values are `Basic` or `Standard`, it defaults to `Basic` if not defined. This is a feature in public preview and for more information about it and how to register, please refer to [Configure network features for an Azure NetApp Files volume](https://docs.microsoft.com/en-us/azure/azure-netapp-files/configure-network-features).
*/
@JvmName("djjqhrtgkvswlamc")
public suspend fun networkFeatures(`value`: Output) {
this.networkFeatures = value
}
/**
* @param value The name of the NetApp pool in which the NetApp Volume should be created. Changing this forces a new resource to be created.
*/
@JvmName("ohiwpyotrgjkoayv")
public suspend fun poolName(`value`: Output) {
this.poolName = value
}
/**
* @param value The target volume protocol expressed as a list. Supported single value include `CIFS`, `NFSv3`, or `NFSv4.1`. If argument is not defined it will default to `NFSv3`. Changing this forces a new resource to be created and data will be lost. Dual protocol scenario is supported for CIFS and NFSv3, for more information, please refer to [Create a dual-protocol volume for Azure NetApp Files](https://docs.microsoft.com/azure/azure-netapp-files/create-volumes-dual-protocol) document.
*/
@JvmName("xmgivkhdmmmfqunr")
public suspend fun protocols(`value`: Output>) {
this.protocols = value
}
@JvmName("urmjbuxdkvacsgvg")
public suspend fun protocols(vararg values: Output) {
this.protocols = Output.all(values.asList())
}
/**
* @param values The target volume protocol expressed as a list. Supported single value include `CIFS`, `NFSv3`, or `NFSv4.1`. If argument is not defined it will default to `NFSv3`. Changing this forces a new resource to be created and data will be lost. Dual protocol scenario is supported for CIFS and NFSv3, for more information, please refer to [Create a dual-protocol volume for Azure NetApp Files](https://docs.microsoft.com/azure/azure-netapp-files/create-volumes-dual-protocol) document.
*/
@JvmName("lurfxbmdslaywuqm")
public suspend fun protocols(values: List>) {
this.protocols = Output.all(values)
}
/**
* @param value The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created.
*/
@JvmName("vojtlyrceryflpxx")
public suspend fun resourceGroupName(`value`: Output) {
this.resourceGroupName = value
}
/**
* @param value Volume security style, accepted values are `unix` or `ntfs`. If not provided, single-protocol volume is created defaulting to `unix` if it is `NFSv3` or `NFSv4.1` volume, if `CIFS`, it will default to `ntfs`. In a dual-protocol volume, if not provided, its value will be `ntfs`. Changing this forces a new resource to be created.
*/
@JvmName("oxenbovuhbfhvkkl")
public suspend fun securityStyle(`value`: Output) {
this.securityStyle = value
}
/**
* @param value The target performance of the file system. Valid values include `Premium`, `Standard`, or `Ultra`. Changing this forces a new resource to be created.
*/
@JvmName("shjqirpvypvcarqs")
public suspend fun serviceLevel(`value`: Output) {
this.serviceLevel = value
}
/**
* @param value Limits enumeration of files and folders (that is, listing the contents) in SMB only to users with allowed access on the share. For instance, if a user doesn't have access to read a file or folder in a share with access-based enumeration enabled, then the file or folder doesn't show up in directory listings. Defaults to `false`. For more information, please refer to [Understand NAS share permissions in Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/network-attached-storage-permissions#:~:text=security%20for%20administrators.-,Access%2Dbased%20enumeration,in%20an%20Azure%20NetApp%20Files%20SMB%20volume.%20Only%20contosoadmin%20has%20access.,-In%20the%20below)
*/
@JvmName("uceawvhmoderbdtc")
public suspend fun smbAccessBasedEnumerationEnabled(`value`: Output) {
this.smbAccessBasedEnumerationEnabled = value
}
/**
* @param value Enable SMB Continuous Availability.
*/
@JvmName("axaesrcxqykbsekj")
public suspend fun smbContinuousAvailabilityEnabled(`value`: Output) {
this.smbContinuousAvailabilityEnabled = value
}
/**
* @param value Limits clients from browsing for an SMB share by hiding the share from view in Windows Explorer or when listing shares in "net view." Only end users that know the absolute paths to the share are able to find the share. Defaults to `false`. For more information, please refer to [Understand NAS share permissions in Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/network-attached-storage-permissions#:~:text=Non%2Dbrowsable%20shares,find%20the%20share.)
*/
@JvmName("lrorhgbicfkyivbx")
public suspend fun smbNonBrowsableEnabled(`value`: Output) {
this.smbNonBrowsableEnabled = value
}
/**
* @param value Specifies whether the .snapshot (NFS clients) or ~snapshot (SMB clients) path of a volume is visible, default value is true.
*/
@JvmName("acjmpnmocteykibg")
public suspend fun snapshotDirectoryVisible(`value`: Output) {
this.snapshotDirectoryVisible = value
}
/**
* @param value The maximum Storage Quota allowed for a file system in Gigabytes.
*/
@JvmName("lxjciofspefcofuy")
public suspend fun storageQuotaInGb(`value`: Output) {
this.storageQuotaInGb = value
}
/**
* @param value The ID of the Subnet the NetApp Volume resides in, which must have the `Microsoft.NetApp/volumes` delegation. Changing this forces a new resource to be created.
*/
@JvmName("giujiurlctemiaxo")
public suspend fun subnetId(`value`: Output) {
this.subnetId = value
}
/**
* @param value A mapping of tags to assign to the resource.
* > **Note:** It is highly recommended to use the **lifecycle** property as noted in the example since it will prevent an accidental deletion of the volume if the `protocols` argument changes to a different protocol type.
*/
@JvmName("pekrvxtrfjldwscu")
public suspend fun tags(`value`: Output>) {
this.tags = value
}
/**
* @param value Throughput of this volume in Mibps.
*/
@JvmName("efkqjpmhvvfhctbn")
public suspend fun throughputInMibps(`value`: Output) {
this.throughputInMibps = value
}
/**
* @param value A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created.
*/
@JvmName("dwtwqwdrjgoudvmp")
public suspend fun volumePath(`value`: Output) {
this.volumePath = value
}
/**
* @param value Specifies the Availability Zone in which the Volume should be located. Possible values are `1`, `2` and `3`. Changing this forces a new resource to be created. This feature is currently in preview, for more information on how to enable it, please refer to [Manage availability zone volume placement for Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/manage-availability-zone-volume-placement#register-the-feature).
*/
@JvmName("xenwigbopxjgxfsy")
public suspend fun zone(`value`: Output) {
this.zone = value
}
/**
* @param value The name of the NetApp account in which the NetApp Pool should be created. Changing this forces a new resource to be created.
*/
@JvmName("nmolhpjaopgimddx")
public suspend fun accountName(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.accountName = mapped
}
/**
* @param value Is the NetApp Volume enabled for Azure VMware Solution (AVS) datastore purpose. Defaults to `false`. Changing this forces a new resource to be created.
*/
@JvmName("dsaibiqklrtbmgtg")
public suspend fun azureVmwareDataStoreEnabled(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.azureVmwareDataStoreEnabled = mapped
}
/**
* @param value Creates volume from snapshot. Following properties must be the same as the original volume where the snapshot was taken from: `protocols`, `subnet_id`, `location`, `service_level`, `resource_group_name`, `account_name` and `pool_name`. Changing this forces a new resource to be created.
*/
@JvmName("akcwstnnvwirntak")
public suspend fun createFromSnapshotResourceId(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.createFromSnapshotResourceId = mapped
}
/**
* @param value A `data_protection_replication` block as defined below. Changing this forces a new resource to be created.
*/
@JvmName("qarlpsmjugsngnhp")
public suspend fun dataProtectionReplication(`value`: VolumeDataProtectionReplicationArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.dataProtectionReplication = mapped
}
/**
* @param argument A `data_protection_replication` block as defined below. Changing this forces a new resource to be created.
*/
@JvmName("thfpnxgkeloqldfn")
public suspend
fun dataProtectionReplication(argument: suspend VolumeDataProtectionReplicationArgsBuilder.() -> Unit) {
val toBeMapped = VolumeDataProtectionReplicationArgsBuilder().applySuspend { argument() }.build()
val mapped = of(toBeMapped)
this.dataProtectionReplication = mapped
}
/**
* @param value A `data_protection_snapshot_policy` block as defined below.
*/
@JvmName("kdingrdlpmlmnwpp")
public suspend
fun dataProtectionSnapshotPolicy(`value`: VolumeDataProtectionSnapshotPolicyArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.dataProtectionSnapshotPolicy = mapped
}
/**
* @param argument A `data_protection_snapshot_policy` block as defined below.
*/
@JvmName("vvxpktvajirpkvkv")
public suspend
fun dataProtectionSnapshotPolicy(argument: suspend VolumeDataProtectionSnapshotPolicyArgsBuilder.() -> Unit) {
val toBeMapped = VolumeDataProtectionSnapshotPolicyArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.dataProtectionSnapshotPolicy = mapped
}
/**
* @param value The encryption key source, it can be `Microsoft.NetApp` for platform managed keys or `Microsoft.KeyVault` for customer-managed keys. This is required with `key_vault_private_endpoint_id`. Changing this forces a new resource to be created.
*/
@JvmName("eekurrnpnvlpbmbh")
public suspend fun encryptionKeySource(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.encryptionKeySource = mapped
}
/**
* @param value One or more `export_policy_rule` block defined below.
*/
@JvmName("uudgylpkmgoyarxf")
public suspend fun exportPolicyRules(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.exportPolicyRules = mapped
}
/**
* @param argument One or more `export_policy_rule` block defined below.
*/
@JvmName("lspknfrsnourmvbi")
public suspend
fun exportPolicyRules(argument: List Unit>) {
val toBeMapped = argument.toList().map {
VolumeExportPolicyRuleArgsBuilder().applySuspend {
it()
}.build()
}
val mapped = of(toBeMapped)
this.exportPolicyRules = mapped
}
/**
* @param argument One or more `export_policy_rule` block defined below.
*/
@JvmName("seogfrqhqmljeplv")
public suspend fun exportPolicyRules(
vararg
argument: suspend VolumeExportPolicyRuleArgsBuilder.() -> Unit,
) {
val toBeMapped = argument.toList().map {
VolumeExportPolicyRuleArgsBuilder().applySuspend {
it()
}.build()
}
val mapped = of(toBeMapped)
this.exportPolicyRules = mapped
}
/**
* @param argument One or more `export_policy_rule` block defined below.
*/
@JvmName("nablobyogkjxibkm")
public suspend
fun exportPolicyRules(argument: suspend VolumeExportPolicyRuleArgsBuilder.() -> Unit) {
val toBeMapped = listOf(VolumeExportPolicyRuleArgsBuilder().applySuspend { argument() }.build())
val mapped = of(toBeMapped)
this.exportPolicyRules = mapped
}
/**
* @param values One or more `export_policy_rule` block defined below.
*/
@JvmName("maqgbdfbxpvulfwl")
public suspend fun exportPolicyRules(vararg values: VolumeExportPolicyRuleArgs) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.exportPolicyRules = mapped
}
/**
* @param value Enable to allow Kerberos secured volumes. Requires appropriate export rules as well as the parent `azure.netapp.Account`
* having a defined AD connection.
*/
@JvmName("lkgannccyeiopsow")
public suspend fun kerberosEnabled(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.kerberosEnabled = mapped
}
/**
* @param value The Private Endpoint ID for Key Vault, which is required when using customer-managed keys. This is required with `encryption_key_source`. Changing this forces a new resource to be created.
*/
@JvmName("mhyvyynhhdwkaeqt")
public suspend fun keyVaultPrivateEndpointId(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.keyVaultPrivateEndpointId = mapped
}
/**
* @param value Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
*/
@JvmName("ngoxvhytkxxycrrl")
public suspend fun location(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.location = mapped
}
/**
* @param value The name of the NetApp Volume. Changing this forces a new resource to be created.
*/
@JvmName("vevskldrkcdpnvyc")
public suspend fun name(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.name = mapped
}
/**
* @param value Indicates which network feature to use, accepted values are `Basic` or `Standard`, it defaults to `Basic` if not defined. This is a feature in public preview and for more information about it and how to register, please refer to [Configure network features for an Azure NetApp Files volume](https://docs.microsoft.com/en-us/azure/azure-netapp-files/configure-network-features).
*/
@JvmName("hsicoreqkrsabkkr")
public suspend fun networkFeatures(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.networkFeatures = mapped
}
/**
* @param value The name of the NetApp pool in which the NetApp Volume should be created. Changing this forces a new resource to be created.
*/
@JvmName("ykprolpjqvktwgii")
public suspend fun poolName(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.poolName = mapped
}
/**
* @param value The target volume protocol expressed as a list. Supported single value include `CIFS`, `NFSv3`, or `NFSv4.1`. If argument is not defined it will default to `NFSv3`. Changing this forces a new resource to be created and data will be lost. Dual protocol scenario is supported for CIFS and NFSv3, for more information, please refer to [Create a dual-protocol volume for Azure NetApp Files](https://docs.microsoft.com/azure/azure-netapp-files/create-volumes-dual-protocol) document.
*/
@JvmName("sqgghotmubjxtrur")
public suspend fun protocols(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.protocols = mapped
}
/**
* @param values The target volume protocol expressed as a list. Supported single value include `CIFS`, `NFSv3`, or `NFSv4.1`. If argument is not defined it will default to `NFSv3`. Changing this forces a new resource to be created and data will be lost. Dual protocol scenario is supported for CIFS and NFSv3, for more information, please refer to [Create a dual-protocol volume for Azure NetApp Files](https://docs.microsoft.com/azure/azure-netapp-files/create-volumes-dual-protocol) document.
*/
@JvmName("mfmoiqhagpxemxvt")
public suspend fun protocols(vararg values: String) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.protocols = mapped
}
/**
* @param value The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created.
*/
@JvmName("oiwucuktjkchhqsd")
public suspend fun resourceGroupName(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.resourceGroupName = mapped
}
/**
* @param value Volume security style, accepted values are `unix` or `ntfs`. If not provided, single-protocol volume is created defaulting to `unix` if it is `NFSv3` or `NFSv4.1` volume, if `CIFS`, it will default to `ntfs`. In a dual-protocol volume, if not provided, its value will be `ntfs`. Changing this forces a new resource to be created.
*/
@JvmName("tyucxeqwudrpawvt")
public suspend fun securityStyle(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.securityStyle = mapped
}
/**
* @param value The target performance of the file system. Valid values include `Premium`, `Standard`, or `Ultra`. Changing this forces a new resource to be created.
*/
@JvmName("lldeibdwhcifdvjk")
public suspend fun serviceLevel(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.serviceLevel = mapped
}
/**
* @param value Limits enumeration of files and folders (that is, listing the contents) in SMB only to users with allowed access on the share. For instance, if a user doesn't have access to read a file or folder in a share with access-based enumeration enabled, then the file or folder doesn't show up in directory listings. Defaults to `false`. For more information, please refer to [Understand NAS share permissions in Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/network-attached-storage-permissions#:~:text=security%20for%20administrators.-,Access%2Dbased%20enumeration,in%20an%20Azure%20NetApp%20Files%20SMB%20volume.%20Only%20contosoadmin%20has%20access.,-In%20the%20below)
*/
@JvmName("qlgsehgjuytckghm")
public suspend fun smbAccessBasedEnumerationEnabled(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.smbAccessBasedEnumerationEnabled = mapped
}
/**
* @param value Enable SMB Continuous Availability.
*/
@JvmName("eoxghlmqgdyjnysh")
public suspend fun smbContinuousAvailabilityEnabled(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.smbContinuousAvailabilityEnabled = mapped
}
/**
* @param value Limits clients from browsing for an SMB share by hiding the share from view in Windows Explorer or when listing shares in "net view." Only end users that know the absolute paths to the share are able to find the share. Defaults to `false`. For more information, please refer to [Understand NAS share permissions in Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/network-attached-storage-permissions#:~:text=Non%2Dbrowsable%20shares,find%20the%20share.)
*/
@JvmName("ewsmobbvsklirwnr")
public suspend fun smbNonBrowsableEnabled(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.smbNonBrowsableEnabled = mapped
}
/**
* @param value Specifies whether the .snapshot (NFS clients) or ~snapshot (SMB clients) path of a volume is visible, default value is true.
*/
@JvmName("vombmrosxbpcmbeo")
public suspend fun snapshotDirectoryVisible(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.snapshotDirectoryVisible = mapped
}
/**
* @param value The maximum Storage Quota allowed for a file system in Gigabytes.
*/
@JvmName("kefqxlbshipqpwmv")
public suspend fun storageQuotaInGb(`value`: Int?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.storageQuotaInGb = mapped
}
/**
* @param value The ID of the Subnet the NetApp Volume resides in, which must have the `Microsoft.NetApp/volumes` delegation. Changing this forces a new resource to be created.
*/
@JvmName("sjfnpngeielkrpox")
public suspend fun subnetId(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.subnetId = mapped
}
/**
* @param value A mapping of tags to assign to the resource.
* > **Note:** It is highly recommended to use the **lifecycle** property as noted in the example since it will prevent an accidental deletion of the volume if the `protocols` argument changes to a different protocol type.
*/
@JvmName("ypsvhsmnbikgwxxl")
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 to assign to the resource.
* > **Note:** It is highly recommended to use the **lifecycle** property as noted in the example since it will prevent an accidental deletion of the volume if the `protocols` argument changes to a different protocol type.
*/
@JvmName("kjemanfdbwnvkqrm")
public fun tags(vararg values: Pair) {
val toBeMapped = values.toMap()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.tags = mapped
}
/**
* @param value Throughput of this volume in Mibps.
*/
@JvmName("xekioymgypdikdqq")
public suspend fun throughputInMibps(`value`: Double?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.throughputInMibps = mapped
}
/**
* @param value A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created.
*/
@JvmName("ycbtcndgwmgnbvfn")
public suspend fun volumePath(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.volumePath = mapped
}
/**
* @param value Specifies the Availability Zone in which the Volume should be located. Possible values are `1`, `2` and `3`. Changing this forces a new resource to be created. This feature is currently in preview, for more information on how to enable it, please refer to [Manage availability zone volume placement for Azure NetApp Files](https://learn.microsoft.com/en-us/azure/azure-netapp-files/manage-availability-zone-volume-placement#register-the-feature).
*/
@JvmName("kqlqijgncturfsnl")
public suspend fun zone(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.zone = mapped
}
internal fun build(): VolumeArgs = VolumeArgs(
accountName = accountName,
azureVmwareDataStoreEnabled = azureVmwareDataStoreEnabled,
createFromSnapshotResourceId = createFromSnapshotResourceId,
dataProtectionReplication = dataProtectionReplication,
dataProtectionSnapshotPolicy = dataProtectionSnapshotPolicy,
encryptionKeySource = encryptionKeySource,
exportPolicyRules = exportPolicyRules,
kerberosEnabled = kerberosEnabled,
keyVaultPrivateEndpointId = keyVaultPrivateEndpointId,
location = location,
name = name,
networkFeatures = networkFeatures,
poolName = poolName,
protocols = protocols,
resourceGroupName = resourceGroupName,
securityStyle = securityStyle,
serviceLevel = serviceLevel,
smbAccessBasedEnumerationEnabled = smbAccessBasedEnumerationEnabled,
smbContinuousAvailabilityEnabled = smbContinuousAvailabilityEnabled,
smbNonBrowsableEnabled = smbNonBrowsableEnabled,
snapshotDirectoryVisible = snapshotDirectoryVisible,
storageQuotaInGb = storageQuotaInGb,
subnetId = subnetId,
tags = tags,
throughputInMibps = throughputInMibps,
volumePath = volumePath,
zone = zone,
)
}