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

com.pulumi.azurenative.netapp.kotlin.VolumeArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 2.82.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azurenative.netapp.kotlin

import com.pulumi.azurenative.netapp.VolumeArgs.builder
import com.pulumi.azurenative.netapp.kotlin.enums.AvsDataStore
import com.pulumi.azurenative.netapp.kotlin.enums.EnableSubvolumes
import com.pulumi.azurenative.netapp.kotlin.enums.EncryptionKeySource
import com.pulumi.azurenative.netapp.kotlin.enums.NetworkFeatures
import com.pulumi.azurenative.netapp.kotlin.enums.SecurityStyle
import com.pulumi.azurenative.netapp.kotlin.enums.ServiceLevel
import com.pulumi.azurenative.netapp.kotlin.enums.SmbAccessBasedEnumeration
import com.pulumi.azurenative.netapp.kotlin.enums.SmbNonBrowsable
import com.pulumi.azurenative.netapp.kotlin.inputs.PlacementKeyValuePairsArgs
import com.pulumi.azurenative.netapp.kotlin.inputs.PlacementKeyValuePairsArgsBuilder
import com.pulumi.azurenative.netapp.kotlin.inputs.VolumePropertiesDataProtectionArgs
import com.pulumi.azurenative.netapp.kotlin.inputs.VolumePropertiesDataProtectionArgsBuilder
import com.pulumi.azurenative.netapp.kotlin.inputs.VolumePropertiesExportPolicyArgs
import com.pulumi.azurenative.netapp.kotlin.inputs.VolumePropertiesExportPolicyArgsBuilder
import com.pulumi.core.Either
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.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

/**
 * Volume resource
 * Azure REST API version: 2022-11-01. Prior API version in Azure Native 1.x: 2020-12-01.
 * Other available API versions: 2017-08-15, 2019-05-01, 2019-07-01, 2019-08-01, 2020-02-01, 2021-10-01, 2022-11-01-preview, 2023-05-01, 2023-05-01-preview, 2023-07-01, 2023-07-01-preview, 2023-11-01, 2023-11-01-preview, 2024-01-01, 2024-03-01, 2024-03-01-preview.
 * ## Example Usage
 * ### Volumes_CreateOrUpdate
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var volume = new AzureNative.NetApp.Volume("volume", new()
 *     {
 *         AccountName = "account1",
 *         CreationToken = "my-unique-file-path",
 *         Location = "eastus",
 *         PoolName = "pool1",
 *         ResourceGroupName = "myRG",
 *         ServiceLevel = AzureNative.NetApp.ServiceLevel.Premium,
 *         SubnetId = "/subscriptions/9760acf5-4638-11e7-9bdb-020073ca7778/resourceGroups/myRP/providers/Microsoft.Network/virtualNetworks/testvnet3/subnets/testsubnet3",
 *         UsageThreshold = 107374182400,
 *         VolumeName = "volume1",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	netapp "github.com/pulumi/pulumi-azure-native-sdk/netapp/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := netapp.NewVolume(ctx, "volume", &netapp.VolumeArgs{
 * 			AccountName:       pulumi.String("account1"),
 * 			CreationToken:     pulumi.String("my-unique-file-path"),
 * 			Location:          pulumi.String("eastus"),
 * 			PoolName:          pulumi.String("pool1"),
 * 			ResourceGroupName: pulumi.String("myRG"),
 * 			ServiceLevel:      pulumi.String(netapp.ServiceLevelPremium),
 * 			SubnetId:          pulumi.String("/subscriptions/9760acf5-4638-11e7-9bdb-020073ca7778/resourceGroups/myRP/providers/Microsoft.Network/virtualNetworks/testvnet3/subnets/testsubnet3"),
 * 			UsageThreshold:    pulumi.Float64(107374182400),
 * 			VolumeName:        pulumi.String("volume1"),
 * 		})
 * 		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.azurenative.netapp.Volume;
 * import com.pulumi.azurenative.netapp.VolumeArgs;
 * 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 volume = new Volume("volume", VolumeArgs.builder()
 *             .accountName("account1")
 *             .creationToken("my-unique-file-path")
 *             .location("eastus")
 *             .poolName("pool1")
 *             .resourceGroupName("myRG")
 *             .serviceLevel("Premium")
 *             .subnetId("/subscriptions/9760acf5-4638-11e7-9bdb-020073ca7778/resourceGroups/myRP/providers/Microsoft.Network/virtualNetworks/testvnet3/subnets/testsubnet3")
 *             .usageThreshold(107374182400)
 *             .volumeName("volume1")
 *             .build());
 *     }
 * }
 * ```
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:netapp:Volume account1/pool1/volume1 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetApp/netAppAccounts/{accountName}/capacityPools/{poolName}/volumes/{volumeName}
 * ```
 * @property accountName The name of the NetApp account
 * @property avsDataStore Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
 * @property backupId UUID v4 or resource identifier used to identify the Backup.
 * @property capacityPoolResourceId Pool Resource Id used in case of creating a volume through volume group
 * @property coolAccess Specifies whether Cool Access(tiering) is enabled for the volume.
 * @property coolnessPeriod Specifies the number of days after which data that is not accessed by clients will be tiered.
 * @property creationToken A unique file path for the volume. Used when creating mount targets
 * @property dataProtection DataProtection type volumes include an object containing details of the replication
 * @property defaultGroupQuotaInKiBs Default group quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies.
 * @property defaultUserQuotaInKiBs Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies .
 * @property deleteBaseSnapshot If enabled (true) the snapshot the volume was created from will be automatically deleted after the volume create operation has finished.  Defaults to false
 * @property enableSubvolumes Flag indicating whether subvolume operations are enabled on the volume
 * @property encryptionKeySource Source of key used to encrypt data in volume. Applicable if NetApp account has encryption.keySource = 'Microsoft.KeyVault'. Possible values (case-insensitive) are: 'Microsoft.NetApp, Microsoft.KeyVault'
 * @property exportPolicy Set of export policy rules
 * @property isDefaultQuotaEnabled Specifies if default quota is enabled for the volume.
 * @property isLargeVolume Specifies whether volume is a Large Volume or Regular Volume.
 * @property isRestoring Restoring
 * @property kerberosEnabled Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later
 * @property keyVaultPrivateEndpointResourceId The resource ID of private endpoint for KeyVault. It must reside in the same VNET as the volume. Only applicable if encryptionKeySource = 'Microsoft.KeyVault'.
 * @property ldapEnabled Specifies whether LDAP is enabled or not for a given NFS volume.
 * @property location The geo-location where the resource lives
 * @property networkFeatures Basic network, or Standard features available to the volume.
 * @property placementRules Application specific placement rules for the particular volume
 * @property poolName The name of the capacity pool
 * @property protocolTypes Set of protocol types, default NFSv3, CIFS for SMB protocol
 * @property proximityPlacementGroup Proximity placement group associated with the volume
 * @property resourceGroupName The name of the resource group. The name is case insensitive.
 * @property securityStyle The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
 * @property serviceLevel The service level of the file system
 * @property smbAccessBasedEnumeration Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
 * @property smbContinuouslyAvailable Enables continuously available share property for smb volume. Only applicable for SMB volume
 * @property smbEncryption Enables encryption for in-flight smb3 data. Only applicable for SMB/DualProtocol volume. To be used with swagger version 2020-08-01 or later
 * @property smbNonBrowsable Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
 * @property snapshotDirectoryVisible If enabled (true) the volume will contain a read-only snapshot directory which provides access to each of the volume's snapshots (defaults to true).
 * @property snapshotId UUID v4 or resource identifier used to identify the Snapshot.
 * @property subnetId The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
 * @property tags Resource tags.
 * @property throughputMibps
 * @property unixPermissions UNIX permissions for NFS volume accepted in octal 4 digit format. First digit selects the set user ID(4), set group ID (2) and sticky (1) attributes. Second digit selects permission for the owner of the file: read (4), write (2) and execute (1). Third selects permissions for other users in the same group. the fourth for other users not in the group. 0755 - gives read/write/execute permissions to owner and read/execute to group and other users.
 * @property usageThreshold Maximum storage quota allowed for a file system in bytes. This is a soft quota used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB, 500Tib for LargeVolume. Specified in bytes.
 * @property volumeName The name of the volume
 * @property volumeSpecName Volume spec name is the application specific designation or identifier for the particular volume in a volume group for e.g. data, log
 * @property volumeType What type of volume is this. For destination volumes in Cross Region Replication, set type to DataProtection
 * @property zones Availability Zone
 */
public data class VolumeArgs(
    public val accountName: Output? = null,
    public val avsDataStore: Output>? = null,
    public val backupId: Output? = null,
    public val capacityPoolResourceId: Output? = null,
    public val coolAccess: Output? = null,
    public val coolnessPeriod: Output? = null,
    public val creationToken: Output? = null,
    public val dataProtection: Output? = null,
    public val defaultGroupQuotaInKiBs: Output? = null,
    public val defaultUserQuotaInKiBs: Output? = null,
    public val deleteBaseSnapshot: Output? = null,
    public val enableSubvolumes: Output>? = null,
    public val encryptionKeySource: Output>? = null,
    public val exportPolicy: Output? = null,
    public val isDefaultQuotaEnabled: Output? = null,
    public val isLargeVolume: Output? = null,
    public val isRestoring: Output? = null,
    public val kerberosEnabled: Output? = null,
    public val keyVaultPrivateEndpointResourceId: Output? = null,
    public val ldapEnabled: Output? = null,
    public val location: Output? = null,
    public val networkFeatures: Output>? = null,
    public val placementRules: Output>? = null,
    public val poolName: Output? = null,
    public val protocolTypes: Output>? = null,
    public val proximityPlacementGroup: Output? = null,
    public val resourceGroupName: Output? = null,
    public val securityStyle: Output>? = null,
    public val serviceLevel: Output>? = null,
    public val smbAccessBasedEnumeration: Output>? = null,
    public val smbContinuouslyAvailable: Output? = null,
    public val smbEncryption: Output? = null,
    public val smbNonBrowsable: Output>? = null,
    public val snapshotDirectoryVisible: Output? = null,
    public val snapshotId: Output? = null,
    public val subnetId: Output? = null,
    public val tags: Output>? = null,
    public val throughputMibps: Output? = null,
    public val unixPermissions: Output? = null,
    public val usageThreshold: Output? = null,
    public val volumeName: Output? = null,
    public val volumeSpecName: Output? = null,
    public val volumeType: Output? = null,
    public val zones: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.netapp.VolumeArgs =
        com.pulumi.azurenative.netapp.VolumeArgs.builder()
            .accountName(accountName?.applyValue({ args0 -> args0 }))
            .avsDataStore(
                avsDataStore?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .backupId(backupId?.applyValue({ args0 -> args0 }))
            .capacityPoolResourceId(capacityPoolResourceId?.applyValue({ args0 -> args0 }))
            .coolAccess(coolAccess?.applyValue({ args0 -> args0 }))
            .coolnessPeriod(coolnessPeriod?.applyValue({ args0 -> args0 }))
            .creationToken(creationToken?.applyValue({ args0 -> args0 }))
            .dataProtection(dataProtection?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .defaultGroupQuotaInKiBs(defaultGroupQuotaInKiBs?.applyValue({ args0 -> args0 }))
            .defaultUserQuotaInKiBs(defaultUserQuotaInKiBs?.applyValue({ args0 -> args0 }))
            .deleteBaseSnapshot(deleteBaseSnapshot?.applyValue({ args0 -> args0 }))
            .enableSubvolumes(
                enableSubvolumes?.applyValue({ args0 ->
                    args0.transform(
                        { args0 -> args0 },
                        { args0 -> args0.let({ args0 -> args0.toJava() }) },
                    )
                }),
            )
            .encryptionKeySource(
                encryptionKeySource?.applyValue({ args0 ->
                    args0.transform(
                        { args0 -> args0 },
                        { args0 -> args0.let({ args0 -> args0.toJava() }) },
                    )
                }),
            )
            .exportPolicy(exportPolicy?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .isDefaultQuotaEnabled(isDefaultQuotaEnabled?.applyValue({ args0 -> args0 }))
            .isLargeVolume(isLargeVolume?.applyValue({ args0 -> args0 }))
            .isRestoring(isRestoring?.applyValue({ args0 -> args0 }))
            .kerberosEnabled(kerberosEnabled?.applyValue({ args0 -> args0 }))
            .keyVaultPrivateEndpointResourceId(
                keyVaultPrivateEndpointResourceId?.applyValue({ args0 ->
                    args0
                }),
            )
            .ldapEnabled(ldapEnabled?.applyValue({ args0 -> args0 }))
            .location(location?.applyValue({ args0 -> args0 }))
            .networkFeatures(
                networkFeatures?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .placementRules(
                placementRules?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .poolName(poolName?.applyValue({ args0 -> args0 }))
            .protocolTypes(protocolTypes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .proximityPlacementGroup(proximityPlacementGroup?.applyValue({ args0 -> args0 }))
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .securityStyle(
                securityStyle?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .serviceLevel(
                serviceLevel?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .smbAccessBasedEnumeration(
                smbAccessBasedEnumeration?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .smbContinuouslyAvailable(smbContinuouslyAvailable?.applyValue({ args0 -> args0 }))
            .smbEncryption(smbEncryption?.applyValue({ args0 -> args0 }))
            .smbNonBrowsable(
                smbNonBrowsable?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .snapshotDirectoryVisible(snapshotDirectoryVisible?.applyValue({ args0 -> args0 }))
            .snapshotId(snapshotId?.applyValue({ args0 -> args0 }))
            .subnetId(subnetId?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .throughputMibps(throughputMibps?.applyValue({ args0 -> args0 }))
            .unixPermissions(unixPermissions?.applyValue({ args0 -> args0 }))
            .usageThreshold(usageThreshold?.applyValue({ args0 -> args0 }))
            .volumeName(volumeName?.applyValue({ args0 -> args0 }))
            .volumeSpecName(volumeSpecName?.applyValue({ args0 -> args0 }))
            .volumeType(volumeType?.applyValue({ args0 -> args0 }))
            .zones(zones?.applyValue({ args0 -> args0.map({ args0 -> args0 }) })).build()
}

/**
 * Builder for [VolumeArgs].
 */
@PulumiTagMarker
public class VolumeArgsBuilder internal constructor() {
    private var accountName: Output? = null

    private var avsDataStore: Output>? = null

    private var backupId: Output? = null

    private var capacityPoolResourceId: Output? = null

    private var coolAccess: Output? = null

    private var coolnessPeriod: Output? = null

    private var creationToken: Output? = null

    private var dataProtection: Output? = null

    private var defaultGroupQuotaInKiBs: Output? = null

    private var defaultUserQuotaInKiBs: Output? = null

    private var deleteBaseSnapshot: Output? = null

    private var enableSubvolumes: Output>? = null

    private var encryptionKeySource: Output>? = null

    private var exportPolicy: Output? = null

    private var isDefaultQuotaEnabled: Output? = null

    private var isLargeVolume: Output? = null

    private var isRestoring: Output? = null

    private var kerberosEnabled: Output? = null

    private var keyVaultPrivateEndpointResourceId: Output? = null

    private var ldapEnabled: Output? = null

    private var location: Output? = null

    private var networkFeatures: Output>? = null

    private var placementRules: Output>? = null

    private var poolName: Output? = null

    private var protocolTypes: Output>? = null

    private var proximityPlacementGroup: Output? = null

    private var resourceGroupName: Output? = null

    private var securityStyle: Output>? = null

    private var serviceLevel: Output>? = null

    private var smbAccessBasedEnumeration: Output>? = null

    private var smbContinuouslyAvailable: Output? = null

    private var smbEncryption: Output? = null

    private var smbNonBrowsable: Output>? = null

    private var snapshotDirectoryVisible: Output? = null

    private var snapshotId: Output? = null

    private var subnetId: Output? = null

    private var tags: Output>? = null

    private var throughputMibps: Output? = null

    private var unixPermissions: Output? = null

    private var usageThreshold: Output? = null

    private var volumeName: Output? = null

    private var volumeSpecName: Output? = null

    private var volumeType: Output? = null

    private var zones: Output>? = null

    /**
     * @param value The name of the NetApp account
     */
    @JvmName("srnrmlkcavdgupju")
    public suspend fun accountName(`value`: Output) {
        this.accountName = value
    }

    /**
     * @param value Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
     */
    @JvmName("jojvjccuxestkwnu")
    public suspend fun avsDataStore(`value`: Output>) {
        this.avsDataStore = value
    }

    /**
     * @param value UUID v4 or resource identifier used to identify the Backup.
     */
    @JvmName("dbitbywewjbgyalk")
    public suspend fun backupId(`value`: Output) {
        this.backupId = value
    }

    /**
     * @param value Pool Resource Id used in case of creating a volume through volume group
     */
    @JvmName("prpvsdkemcxpliih")
    public suspend fun capacityPoolResourceId(`value`: Output) {
        this.capacityPoolResourceId = value
    }

    /**
     * @param value Specifies whether Cool Access(tiering) is enabled for the volume.
     */
    @JvmName("mkvchuqyfuaqvbam")
    public suspend fun coolAccess(`value`: Output) {
        this.coolAccess = value
    }

    /**
     * @param value Specifies the number of days after which data that is not accessed by clients will be tiered.
     */
    @JvmName("rwrgsebxordgurvm")
    public suspend fun coolnessPeriod(`value`: Output) {
        this.coolnessPeriod = value
    }

    /**
     * @param value A unique file path for the volume. Used when creating mount targets
     */
    @JvmName("otylihnexrrtusjt")
    public suspend fun creationToken(`value`: Output) {
        this.creationToken = value
    }

    /**
     * @param value DataProtection type volumes include an object containing details of the replication
     */
    @JvmName("qbtpbnkofhvmxowj")
    public suspend fun dataProtection(`value`: Output) {
        this.dataProtection = value
    }

    /**
     * @param value Default group quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies.
     */
    @JvmName("nkbrphgbppbaievi")
    public suspend fun defaultGroupQuotaInKiBs(`value`: Output) {
        this.defaultGroupQuotaInKiBs = value
    }

    /**
     * @param value Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies .
     */
    @JvmName("fdewhmnwumkabpay")
    public suspend fun defaultUserQuotaInKiBs(`value`: Output) {
        this.defaultUserQuotaInKiBs = value
    }

    /**
     * @param value If enabled (true) the snapshot the volume was created from will be automatically deleted after the volume create operation has finished.  Defaults to false
     */
    @JvmName("xywmxdnousblogdb")
    public suspend fun deleteBaseSnapshot(`value`: Output) {
        this.deleteBaseSnapshot = value
    }

    /**
     * @param value Flag indicating whether subvolume operations are enabled on the volume
     */
    @JvmName("mjqxirfquldhvvoj")
    public suspend fun enableSubvolumes(`value`: Output>) {
        this.enableSubvolumes = value
    }

    /**
     * @param value Source of key used to encrypt data in volume. Applicable if NetApp account has encryption.keySource = 'Microsoft.KeyVault'. Possible values (case-insensitive) are: 'Microsoft.NetApp, Microsoft.KeyVault'
     */
    @JvmName("mrvvewqrecnbhyqd")
    public suspend fun encryptionKeySource(`value`: Output>) {
        this.encryptionKeySource = value
    }

    /**
     * @param value Set of export policy rules
     */
    @JvmName("xjcjpdlpnlwdsbkh")
    public suspend fun exportPolicy(`value`: Output) {
        this.exportPolicy = value
    }

    /**
     * @param value Specifies if default quota is enabled for the volume.
     */
    @JvmName("wvjbimqfcbbjphdn")
    public suspend fun isDefaultQuotaEnabled(`value`: Output) {
        this.isDefaultQuotaEnabled = value
    }

    /**
     * @param value Specifies whether volume is a Large Volume or Regular Volume.
     */
    @JvmName("gecasmtqbfloyqoq")
    public suspend fun isLargeVolume(`value`: Output) {
        this.isLargeVolume = value
    }

    /**
     * @param value Restoring
     */
    @JvmName("kgaonwdkqvtriikj")
    public suspend fun isRestoring(`value`: Output) {
        this.isRestoring = value
    }

    /**
     * @param value Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later
     */
    @JvmName("ojdhkgijobbrvldv")
    public suspend fun kerberosEnabled(`value`: Output) {
        this.kerberosEnabled = value
    }

    /**
     * @param value The resource ID of private endpoint for KeyVault. It must reside in the same VNET as the volume. Only applicable if encryptionKeySource = 'Microsoft.KeyVault'.
     */
    @JvmName("echaicbqoepfudav")
    public suspend fun keyVaultPrivateEndpointResourceId(`value`: Output) {
        this.keyVaultPrivateEndpointResourceId = value
    }

    /**
     * @param value Specifies whether LDAP is enabled or not for a given NFS volume.
     */
    @JvmName("ysuarqnspfdrwhtp")
    public suspend fun ldapEnabled(`value`: Output) {
        this.ldapEnabled = value
    }

    /**
     * @param value The geo-location where the resource lives
     */
    @JvmName("crxckkpxobguxvon")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value Basic network, or Standard features available to the volume.
     */
    @JvmName("xggcvihclgxflvbu")
    public suspend fun networkFeatures(`value`: Output>) {
        this.networkFeatures = value
    }

    /**
     * @param value Application specific placement rules for the particular volume
     */
    @JvmName("sqokipjlnlpjjtop")
    public suspend fun placementRules(`value`: Output>) {
        this.placementRules = value
    }

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

    /**
     * @param values Application specific placement rules for the particular volume
     */
    @JvmName("dkkqnqreuaheqenm")
    public suspend fun placementRules(values: List>) {
        this.placementRules = Output.all(values)
    }

    /**
     * @param value The name of the capacity pool
     */
    @JvmName("uslpulpurrutxtda")
    public suspend fun poolName(`value`: Output) {
        this.poolName = value
    }

    /**
     * @param value Set of protocol types, default NFSv3, CIFS for SMB protocol
     */
    @JvmName("nvvpvvrvmiiyufmi")
    public suspend fun protocolTypes(`value`: Output>) {
        this.protocolTypes = value
    }

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

    /**
     * @param values Set of protocol types, default NFSv3, CIFS for SMB protocol
     */
    @JvmName("elehvkgmeoqsftkk")
    public suspend fun protocolTypes(values: List>) {
        this.protocolTypes = Output.all(values)
    }

    /**
     * @param value Proximity placement group associated with the volume
     */
    @JvmName("hhqknkxdttwprurl")
    public suspend fun proximityPlacementGroup(`value`: Output) {
        this.proximityPlacementGroup = value
    }

    /**
     * @param value The name of the resource group. The name is case insensitive.
     */
    @JvmName("tmyjihmynjrlaxmv")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
     */
    @JvmName("ihofeexynwdtgcwt")
    public suspend fun securityStyle(`value`: Output>) {
        this.securityStyle = value
    }

    /**
     * @param value The service level of the file system
     */
    @JvmName("tvjbexhfspivpbvs")
    public suspend fun serviceLevel(`value`: Output>) {
        this.serviceLevel = value
    }

    /**
     * @param value Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
     */
    @JvmName("efeklnjxltadwtcf")
    public suspend fun smbAccessBasedEnumeration(`value`: Output>) {
        this.smbAccessBasedEnumeration = value
    }

    /**
     * @param value Enables continuously available share property for smb volume. Only applicable for SMB volume
     */
    @JvmName("mbyepobqbniismhb")
    public suspend fun smbContinuouslyAvailable(`value`: Output) {
        this.smbContinuouslyAvailable = value
    }

    /**
     * @param value Enables encryption for in-flight smb3 data. Only applicable for SMB/DualProtocol volume. To be used with swagger version 2020-08-01 or later
     */
    @JvmName("gbtoiwgycybuewwv")
    public suspend fun smbEncryption(`value`: Output) {
        this.smbEncryption = value
    }

    /**
     * @param value Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
     */
    @JvmName("rxtgancskhvdcxrk")
    public suspend fun smbNonBrowsable(`value`: Output>) {
        this.smbNonBrowsable = value
    }

    /**
     * @param value If enabled (true) the volume will contain a read-only snapshot directory which provides access to each of the volume's snapshots (defaults to true).
     */
    @JvmName("vpvafhhfqxuyalmp")
    public suspend fun snapshotDirectoryVisible(`value`: Output) {
        this.snapshotDirectoryVisible = value
    }

    /**
     * @param value UUID v4 or resource identifier used to identify the Snapshot.
     */
    @JvmName("krkfxgnsidpydkmw")
    public suspend fun snapshotId(`value`: Output) {
        this.snapshotId = value
    }

    /**
     * @param value The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
     */
    @JvmName("xdtynsharcuwuudw")
    public suspend fun subnetId(`value`: Output) {
        this.subnetId = value
    }

    /**
     * @param value Resource tags.
     */
    @JvmName("nmxvxsgpmnrwwngs")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value
     */
    @JvmName("ymlyoritacslgomm")
    public suspend fun throughputMibps(`value`: Output) {
        this.throughputMibps = value
    }

    /**
     * @param value UNIX permissions for NFS volume accepted in octal 4 digit format. First digit selects the set user ID(4), set group ID (2) and sticky (1) attributes. Second digit selects permission for the owner of the file: read (4), write (2) and execute (1). Third selects permissions for other users in the same group. the fourth for other users not in the group. 0755 - gives read/write/execute permissions to owner and read/execute to group and other users.
     */
    @JvmName("whxlxhgubkmjtall")
    public suspend fun unixPermissions(`value`: Output) {
        this.unixPermissions = value
    }

    /**
     * @param value Maximum storage quota allowed for a file system in bytes. This is a soft quota used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB, 500Tib for LargeVolume. Specified in bytes.
     */
    @JvmName("dujblyqlyoowakal")
    public suspend fun usageThreshold(`value`: Output) {
        this.usageThreshold = value
    }

    /**
     * @param value The name of the volume
     */
    @JvmName("btbjfscnvyqywevr")
    public suspend fun volumeName(`value`: Output) {
        this.volumeName = value
    }

    /**
     * @param value Volume spec name is the application specific designation or identifier for the particular volume in a volume group for e.g. data, log
     */
    @JvmName("lxkvegxxwtdfonkw")
    public suspend fun volumeSpecName(`value`: Output) {
        this.volumeSpecName = value
    }

    /**
     * @param value What type of volume is this. For destination volumes in Cross Region Replication, set type to DataProtection
     */
    @JvmName("ijoobdixiuvawtdt")
    public suspend fun volumeType(`value`: Output) {
        this.volumeType = value
    }

    /**
     * @param value Availability Zone
     */
    @JvmName("ecfbxgfghpvgrtyp")
    public suspend fun zones(`value`: Output>) {
        this.zones = value
    }

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

    /**
     * @param values Availability Zone
     */
    @JvmName("qodhtcvhupevjhrc")
    public suspend fun zones(values: List>) {
        this.zones = Output.all(values)
    }

    /**
     * @param value The name of the NetApp account
     */
    @JvmName("kubtudktwcvitxim")
    public suspend fun accountName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.accountName = mapped
    }

    /**
     * @param value Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
     */
    @JvmName("nwbwokbybvjkpdsq")
    public suspend fun avsDataStore(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.avsDataStore = mapped
    }

    /**
     * @param value Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
     */
    @JvmName("xbavtuhbwxeyawkt")
    public fun avsDataStore(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.avsDataStore = mapped
    }

    /**
     * @param value Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
     */
    @JvmName("prwqkkjittohprjv")
    public fun avsDataStore(`value`: AvsDataStore) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.avsDataStore = mapped
    }

    /**
     * @param value UUID v4 or resource identifier used to identify the Backup.
     */
    @JvmName("danjbhyntetwujnj")
    public suspend fun backupId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.backupId = mapped
    }

    /**
     * @param value Pool Resource Id used in case of creating a volume through volume group
     */
    @JvmName("yvhydhskgdvxmojx")
    public suspend fun capacityPoolResourceId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.capacityPoolResourceId = mapped
    }

    /**
     * @param value Specifies whether Cool Access(tiering) is enabled for the volume.
     */
    @JvmName("rpgxulnaeilyaxdo")
    public suspend fun coolAccess(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.coolAccess = mapped
    }

    /**
     * @param value Specifies the number of days after which data that is not accessed by clients will be tiered.
     */
    @JvmName("amakemmggaqwrghe")
    public suspend fun coolnessPeriod(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.coolnessPeriod = mapped
    }

    /**
     * @param value A unique file path for the volume. Used when creating mount targets
     */
    @JvmName("feydprtbsjdxqpxa")
    public suspend fun creationToken(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.creationToken = mapped
    }

    /**
     * @param value DataProtection type volumes include an object containing details of the replication
     */
    @JvmName("baatrdaqciqsrxes")
    public suspend fun dataProtection(`value`: VolumePropertiesDataProtectionArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dataProtection = mapped
    }

    /**
     * @param argument DataProtection type volumes include an object containing details of the replication
     */
    @JvmName("enricsjjqnmbyvmp")
    public suspend fun dataProtection(argument: suspend VolumePropertiesDataProtectionArgsBuilder.() -> Unit) {
        val toBeMapped = VolumePropertiesDataProtectionArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.dataProtection = mapped
    }

    /**
     * @param value Default group quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies.
     */
    @JvmName("pfhyqvyxjuyfscxx")
    public suspend fun defaultGroupQuotaInKiBs(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.defaultGroupQuotaInKiBs = mapped
    }

    /**
     * @param value Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies .
     */
    @JvmName("iyfwblvhnwluwofo")
    public suspend fun defaultUserQuotaInKiBs(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.defaultUserQuotaInKiBs = mapped
    }

    /**
     * @param value If enabled (true) the snapshot the volume was created from will be automatically deleted after the volume create operation has finished.  Defaults to false
     */
    @JvmName("jpjfydakbgpagjyd")
    public suspend fun deleteBaseSnapshot(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deleteBaseSnapshot = mapped
    }

    /**
     * @param value Flag indicating whether subvolume operations are enabled on the volume
     */
    @JvmName("kwttdudnfalqteoo")
    public suspend fun enableSubvolumes(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableSubvolumes = mapped
    }

    /**
     * @param value Flag indicating whether subvolume operations are enabled on the volume
     */
    @JvmName("gjkxppqeleulloyw")
    public fun enableSubvolumes(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.enableSubvolumes = mapped
    }

    /**
     * @param value Flag indicating whether subvolume operations are enabled on the volume
     */
    @JvmName("bowflkomortxymlp")
    public fun enableSubvolumes(`value`: EnableSubvolumes) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.enableSubvolumes = mapped
    }

    /**
     * @param value Source of key used to encrypt data in volume. Applicable if NetApp account has encryption.keySource = 'Microsoft.KeyVault'. Possible values (case-insensitive) are: 'Microsoft.NetApp, Microsoft.KeyVault'
     */
    @JvmName("btefsmjqkrfqyujw")
    public suspend fun encryptionKeySource(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.encryptionKeySource = mapped
    }

    /**
     * @param value Source of key used to encrypt data in volume. Applicable if NetApp account has encryption.keySource = 'Microsoft.KeyVault'. Possible values (case-insensitive) are: 'Microsoft.NetApp, Microsoft.KeyVault'
     */
    @JvmName("yeagvhmgfmsaptqf")
    public fun encryptionKeySource(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.encryptionKeySource = mapped
    }

    /**
     * @param value Source of key used to encrypt data in volume. Applicable if NetApp account has encryption.keySource = 'Microsoft.KeyVault'. Possible values (case-insensitive) are: 'Microsoft.NetApp, Microsoft.KeyVault'
     */
    @JvmName("sjnjaahovoosrxcf")
    public fun encryptionKeySource(`value`: EncryptionKeySource) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.encryptionKeySource = mapped
    }

    /**
     * @param value Set of export policy rules
     */
    @JvmName("vlbygnkjbxxvydht")
    public suspend fun exportPolicy(`value`: VolumePropertiesExportPolicyArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.exportPolicy = mapped
    }

    /**
     * @param argument Set of export policy rules
     */
    @JvmName("fqocxrfmuwkaciwq")
    public suspend fun exportPolicy(argument: suspend VolumePropertiesExportPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = VolumePropertiesExportPolicyArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.exportPolicy = mapped
    }

    /**
     * @param value Specifies if default quota is enabled for the volume.
     */
    @JvmName("cwklqqtsxqpngboy")
    public suspend fun isDefaultQuotaEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.isDefaultQuotaEnabled = mapped
    }

    /**
     * @param value Specifies whether volume is a Large Volume or Regular Volume.
     */
    @JvmName("kinehcunwctnojot")
    public suspend fun isLargeVolume(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.isLargeVolume = mapped
    }

    /**
     * @param value Restoring
     */
    @JvmName("ocqnlkbdhxiceccy")
    public suspend fun isRestoring(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.isRestoring = mapped
    }

    /**
     * @param value Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later
     */
    @JvmName("yxpfcfppwxluksau")
    public suspend fun kerberosEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kerberosEnabled = mapped
    }

    /**
     * @param value The resource ID of private endpoint for KeyVault. It must reside in the same VNET as the volume. Only applicable if encryptionKeySource = 'Microsoft.KeyVault'.
     */
    @JvmName("tmnixtuxdxekolyb")
    public suspend fun keyVaultPrivateEndpointResourceId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.keyVaultPrivateEndpointResourceId = mapped
    }

    /**
     * @param value Specifies whether LDAP is enabled or not for a given NFS volume.
     */
    @JvmName("kseanoopyjqacggb")
    public suspend fun ldapEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ldapEnabled = mapped
    }

    /**
     * @param value The geo-location where the resource lives
     */
    @JvmName("cglsfhufcqwsnsgw")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value Basic network, or Standard features available to the volume.
     */
    @JvmName("fehfftbuljurvkqo")
    public suspend fun networkFeatures(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkFeatures = mapped
    }

    /**
     * @param value Basic network, or Standard features available to the volume.
     */
    @JvmName("ekdehfwdqnfljlxf")
    public fun networkFeatures(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.networkFeatures = mapped
    }

    /**
     * @param value Basic network, or Standard features available to the volume.
     */
    @JvmName("eaigpilqlgwqmpkc")
    public fun networkFeatures(`value`: NetworkFeatures) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.networkFeatures = mapped
    }

    /**
     * @param value Application specific placement rules for the particular volume
     */
    @JvmName("makivxecpdalnway")
    public suspend fun placementRules(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.placementRules = mapped
    }

    /**
     * @param argument Application specific placement rules for the particular volume
     */
    @JvmName("ejbwuykmikmjvaty")
    public suspend fun placementRules(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            PlacementKeyValuePairsArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.placementRules = mapped
    }

    /**
     * @param argument Application specific placement rules for the particular volume
     */
    @JvmName("agtxwrhtasgvyoxp")
    public suspend fun placementRules(vararg argument: suspend PlacementKeyValuePairsArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            PlacementKeyValuePairsArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.placementRules = mapped
    }

    /**
     * @param argument Application specific placement rules for the particular volume
     */
    @JvmName("xolobfwsmnhaxikr")
    public suspend fun placementRules(argument: suspend PlacementKeyValuePairsArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(PlacementKeyValuePairsArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.placementRules = mapped
    }

    /**
     * @param values Application specific placement rules for the particular volume
     */
    @JvmName("ebrbflltqtrudmpg")
    public suspend fun placementRules(vararg values: PlacementKeyValuePairsArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.placementRules = mapped
    }

    /**
     * @param value The name of the capacity pool
     */
    @JvmName("mgntblgqwdvrbslj")
    public suspend fun poolName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.poolName = mapped
    }

    /**
     * @param value Set of protocol types, default NFSv3, CIFS for SMB protocol
     */
    @JvmName("tljiikyfwtcopcuf")
    public suspend fun protocolTypes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.protocolTypes = mapped
    }

    /**
     * @param values Set of protocol types, default NFSv3, CIFS for SMB protocol
     */
    @JvmName("hhbhsxsoajjpfafb")
    public suspend fun protocolTypes(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.protocolTypes = mapped
    }

    /**
     * @param value Proximity placement group associated with the volume
     */
    @JvmName("tnwxkkauyajsgrhb")
    public suspend fun proximityPlacementGroup(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.proximityPlacementGroup = mapped
    }

    /**
     * @param value The name of the resource group. The name is case insensitive.
     */
    @JvmName("wkufrhcdbosdklyw")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
     */
    @JvmName("kouuklraigrrlern")
    public suspend fun securityStyle(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.securityStyle = mapped
    }

    /**
     * @param value The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
     */
    @JvmName("gmxmetwpwhsgolww")
    public fun securityStyle(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.securityStyle = mapped
    }

    /**
     * @param value The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
     */
    @JvmName("xyfgqlfdpwoqvufl")
    public fun securityStyle(`value`: SecurityStyle) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.securityStyle = mapped
    }

    /**
     * @param value The service level of the file system
     */
    @JvmName("ntvehyqitfayinmi")
    public suspend fun serviceLevel(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceLevel = mapped
    }

    /**
     * @param value The service level of the file system
     */
    @JvmName("ictcxlgpohhwjtfu")
    public fun serviceLevel(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.serviceLevel = mapped
    }

    /**
     * @param value The service level of the file system
     */
    @JvmName("auktmmjcrvdmtkfu")
    public fun serviceLevel(`value`: ServiceLevel) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.serviceLevel = mapped
    }

    /**
     * @param value Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
     */
    @JvmName("uoffdfqeelsnoqnb")
    public suspend fun smbAccessBasedEnumeration(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.smbAccessBasedEnumeration = mapped
    }

    /**
     * @param value Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
     */
    @JvmName("tocponsfghlneryf")
    public fun smbAccessBasedEnumeration(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.smbAccessBasedEnumeration = mapped
    }

    /**
     * @param value Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
     */
    @JvmName("ddswxmwnoakmanis")
    public fun smbAccessBasedEnumeration(`value`: SmbAccessBasedEnumeration) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.smbAccessBasedEnumeration = mapped
    }

    /**
     * @param value Enables continuously available share property for smb volume. Only applicable for SMB volume
     */
    @JvmName("puskuxpwwmkubith")
    public suspend fun smbContinuouslyAvailable(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.smbContinuouslyAvailable = mapped
    }

    /**
     * @param value Enables encryption for in-flight smb3 data. Only applicable for SMB/DualProtocol volume. To be used with swagger version 2020-08-01 or later
     */
    @JvmName("ueqirniwsswqbqgl")
    public suspend fun smbEncryption(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.smbEncryption = mapped
    }

    /**
     * @param value Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
     */
    @JvmName("kxphwyfbkpkelcao")
    public suspend fun smbNonBrowsable(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.smbNonBrowsable = mapped
    }

    /**
     * @param value Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
     */
    @JvmName("oakabhdcjsmryrmd")
    public fun smbNonBrowsable(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.smbNonBrowsable = mapped
    }

    /**
     * @param value Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
     */
    @JvmName("iakpfeavdypfkqig")
    public fun smbNonBrowsable(`value`: SmbNonBrowsable) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.smbNonBrowsable = mapped
    }

    /**
     * @param value If enabled (true) the volume will contain a read-only snapshot directory which provides access to each of the volume's snapshots (defaults to true).
     */
    @JvmName("uqglsmyrtamxjcmg")
    public suspend fun snapshotDirectoryVisible(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snapshotDirectoryVisible = mapped
    }

    /**
     * @param value UUID v4 or resource identifier used to identify the Snapshot.
     */
    @JvmName("wrcruxyrjetayuuu")
    public suspend fun snapshotId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snapshotId = mapped
    }

    /**
     * @param value The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
     */
    @JvmName("rscjcvwbulnpvobu")
    public suspend fun subnetId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetId = mapped
    }

    /**
     * @param value Resource tags.
     */
    @JvmName("ylyugjhvaxnndxpr")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values Resource tags.
     */
    @JvmName("twxchgdedggdwopo")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value
     */
    @JvmName("xwmyorunmuaktxow")
    public suspend fun throughputMibps(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.throughputMibps = mapped
    }

    /**
     * @param value UNIX permissions for NFS volume accepted in octal 4 digit format. First digit selects the set user ID(4), set group ID (2) and sticky (1) attributes. Second digit selects permission for the owner of the file: read (4), write (2) and execute (1). Third selects permissions for other users in the same group. the fourth for other users not in the group. 0755 - gives read/write/execute permissions to owner and read/execute to group and other users.
     */
    @JvmName("bwrumkprngegfmcp")
    public suspend fun unixPermissions(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.unixPermissions = mapped
    }

    /**
     * @param value Maximum storage quota allowed for a file system in bytes. This is a soft quota used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB, 500Tib for LargeVolume. Specified in bytes.
     */
    @JvmName("mqvmburknfsubsie")
    public suspend fun usageThreshold(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.usageThreshold = mapped
    }

    /**
     * @param value The name of the volume
     */
    @JvmName("avqjmydasxwombgm")
    public suspend fun volumeName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.volumeName = mapped
    }

    /**
     * @param value Volume spec name is the application specific designation or identifier for the particular volume in a volume group for e.g. data, log
     */
    @JvmName("oojutpsxfyffmgqy")
    public suspend fun volumeSpecName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.volumeSpecName = mapped
    }

    /**
     * @param value What type of volume is this. For destination volumes in Cross Region Replication, set type to DataProtection
     */
    @JvmName("qeijhhpgkfmhogee")
    public suspend fun volumeType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.volumeType = mapped
    }

    /**
     * @param value Availability Zone
     */
    @JvmName("ubbrpvohdjpwavvl")
    public suspend fun zones(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.zones = mapped
    }

    /**
     * @param values Availability Zone
     */
    @JvmName("gixdhakiyrmttegw")
    public suspend fun zones(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.zones = mapped
    }

    internal fun build(): VolumeArgs = VolumeArgs(
        accountName = accountName,
        avsDataStore = avsDataStore,
        backupId = backupId,
        capacityPoolResourceId = capacityPoolResourceId,
        coolAccess = coolAccess,
        coolnessPeriod = coolnessPeriod,
        creationToken = creationToken,
        dataProtection = dataProtection,
        defaultGroupQuotaInKiBs = defaultGroupQuotaInKiBs,
        defaultUserQuotaInKiBs = defaultUserQuotaInKiBs,
        deleteBaseSnapshot = deleteBaseSnapshot,
        enableSubvolumes = enableSubvolumes,
        encryptionKeySource = encryptionKeySource,
        exportPolicy = exportPolicy,
        isDefaultQuotaEnabled = isDefaultQuotaEnabled,
        isLargeVolume = isLargeVolume,
        isRestoring = isRestoring,
        kerberosEnabled = kerberosEnabled,
        keyVaultPrivateEndpointResourceId = keyVaultPrivateEndpointResourceId,
        ldapEnabled = ldapEnabled,
        location = location,
        networkFeatures = networkFeatures,
        placementRules = placementRules,
        poolName = poolName,
        protocolTypes = protocolTypes,
        proximityPlacementGroup = proximityPlacementGroup,
        resourceGroupName = resourceGroupName,
        securityStyle = securityStyle,
        serviceLevel = serviceLevel,
        smbAccessBasedEnumeration = smbAccessBasedEnumeration,
        smbContinuouslyAvailable = smbContinuouslyAvailable,
        smbEncryption = smbEncryption,
        smbNonBrowsable = smbNonBrowsable,
        snapshotDirectoryVisible = snapshotDirectoryVisible,
        snapshotId = snapshotId,
        subnetId = subnetId,
        tags = tags,
        throughputMibps = throughputMibps,
        unixPermissions = unixPermissions,
        usageThreshold = usageThreshold,
        volumeName = volumeName,
        volumeSpecName = volumeSpecName,
        volumeType = volumeType,
        zones = zones,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy