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

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

There is a newer version: 2.78.0
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azurenative.netapp;

import com.pulumi.azurenative.netapp.enums.AvsDataStore;
import com.pulumi.azurenative.netapp.enums.EnableSubvolumes;
import com.pulumi.azurenative.netapp.enums.EncryptionKeySource;
import com.pulumi.azurenative.netapp.enums.NetworkFeatures;
import com.pulumi.azurenative.netapp.enums.SecurityStyle;
import com.pulumi.azurenative.netapp.enums.ServiceLevel;
import com.pulumi.azurenative.netapp.enums.SmbAccessBasedEnumeration;
import com.pulumi.azurenative.netapp.enums.SmbNonBrowsable;
import com.pulumi.azurenative.netapp.inputs.PlacementKeyValuePairsArgs;
import com.pulumi.azurenative.netapp.inputs.VolumePropertiesDataProtectionArgs;
import com.pulumi.azurenative.netapp.inputs.VolumePropertiesExportPolicyArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.core.internal.Codegen;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Double;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class VolumeArgs extends com.pulumi.resources.ResourceArgs {

    public static final VolumeArgs Empty = new VolumeArgs();

    /**
     * The name of the NetApp account
     * 
     */
    @Import(name="accountName", required=true)
    private Output accountName;

    /**
     * @return The name of the NetApp account
     * 
     */
    public Output accountName() {
        return this.accountName;
    }

    /**
     * Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
     * 
     */
    @Import(name="avsDataStore")
    private @Nullable Output> avsDataStore;

    /**
     * @return Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
     * 
     */
    public Optional>> avsDataStore() {
        return Optional.ofNullable(this.avsDataStore);
    }

    /**
     * UUID v4 or resource identifier used to identify the Backup.
     * 
     */
    @Import(name="backupId")
    private @Nullable Output backupId;

    /**
     * @return UUID v4 or resource identifier used to identify the Backup.
     * 
     */
    public Optional> backupId() {
        return Optional.ofNullable(this.backupId);
    }

    /**
     * Pool Resource Id used in case of creating a volume through volume group
     * 
     */
    @Import(name="capacityPoolResourceId")
    private @Nullable Output capacityPoolResourceId;

    /**
     * @return Pool Resource Id used in case of creating a volume through volume group
     * 
     */
    public Optional> capacityPoolResourceId() {
        return Optional.ofNullable(this.capacityPoolResourceId);
    }

    /**
     * Specifies whether Cool Access(tiering) is enabled for the volume.
     * 
     */
    @Import(name="coolAccess")
    private @Nullable Output coolAccess;

    /**
     * @return Specifies whether Cool Access(tiering) is enabled for the volume.
     * 
     */
    public Optional> coolAccess() {
        return Optional.ofNullable(this.coolAccess);
    }

    /**
     * Specifies the number of days after which data that is not accessed by clients will be tiered.
     * 
     */
    @Import(name="coolnessPeriod")
    private @Nullable Output coolnessPeriod;

    /**
     * @return Specifies the number of days after which data that is not accessed by clients will be tiered.
     * 
     */
    public Optional> coolnessPeriod() {
        return Optional.ofNullable(this.coolnessPeriod);
    }

    /**
     * A unique file path for the volume. Used when creating mount targets
     * 
     */
    @Import(name="creationToken", required=true)
    private Output creationToken;

    /**
     * @return A unique file path for the volume. Used when creating mount targets
     * 
     */
    public Output creationToken() {
        return this.creationToken;
    }

    /**
     * DataProtection type volumes include an object containing details of the replication
     * 
     */
    @Import(name="dataProtection")
    private @Nullable Output dataProtection;

    /**
     * @return DataProtection type volumes include an object containing details of the replication
     * 
     */
    public Optional> dataProtection() {
        return Optional.ofNullable(this.dataProtection);
    }

    /**
     * Default group quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies.
     * 
     */
    @Import(name="defaultGroupQuotaInKiBs")
    private @Nullable Output defaultGroupQuotaInKiBs;

    /**
     * @return Default group quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies.
     * 
     */
    public Optional> defaultGroupQuotaInKiBs() {
        return Optional.ofNullable(this.defaultGroupQuotaInKiBs);
    }

    /**
     * Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies .
     * 
     */
    @Import(name="defaultUserQuotaInKiBs")
    private @Nullable Output defaultUserQuotaInKiBs;

    /**
     * @return Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies .
     * 
     */
    public Optional> defaultUserQuotaInKiBs() {
        return Optional.ofNullable(this.defaultUserQuotaInKiBs);
    }

    /**
     * If enabled (true) the snapshot the volume was created from will be automatically deleted after the volume create operation has finished.  Defaults to false
     * 
     */
    @Import(name="deleteBaseSnapshot")
    private @Nullable Output deleteBaseSnapshot;

    /**
     * @return If enabled (true) the snapshot the volume was created from will be automatically deleted after the volume create operation has finished.  Defaults to false
     * 
     */
    public Optional> deleteBaseSnapshot() {
        return Optional.ofNullable(this.deleteBaseSnapshot);
    }

    /**
     * Flag indicating whether subvolume operations are enabled on the volume
     * 
     */
    @Import(name="enableSubvolumes")
    private @Nullable Output> enableSubvolumes;

    /**
     * @return Flag indicating whether subvolume operations are enabled on the volume
     * 
     */
    public Optional>> enableSubvolumes() {
        return Optional.ofNullable(this.enableSubvolumes);
    }

    /**
     * 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'
     * 
     */
    @Import(name="encryptionKeySource")
    private @Nullable Output> encryptionKeySource;

    /**
     * @return 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'
     * 
     */
    public Optional>> encryptionKeySource() {
        return Optional.ofNullable(this.encryptionKeySource);
    }

    /**
     * Set of export policy rules
     * 
     */
    @Import(name="exportPolicy")
    private @Nullable Output exportPolicy;

    /**
     * @return Set of export policy rules
     * 
     */
    public Optional> exportPolicy() {
        return Optional.ofNullable(this.exportPolicy);
    }

    /**
     * Specifies if default quota is enabled for the volume.
     * 
     */
    @Import(name="isDefaultQuotaEnabled")
    private @Nullable Output isDefaultQuotaEnabled;

    /**
     * @return Specifies if default quota is enabled for the volume.
     * 
     */
    public Optional> isDefaultQuotaEnabled() {
        return Optional.ofNullable(this.isDefaultQuotaEnabled);
    }

    /**
     * Specifies whether volume is a Large Volume or Regular Volume.
     * 
     */
    @Import(name="isLargeVolume")
    private @Nullable Output isLargeVolume;

    /**
     * @return Specifies whether volume is a Large Volume or Regular Volume.
     * 
     */
    public Optional> isLargeVolume() {
        return Optional.ofNullable(this.isLargeVolume);
    }

    /**
     * Restoring
     * 
     */
    @Import(name="isRestoring")
    private @Nullable Output isRestoring;

    /**
     * @return Restoring
     * 
     */
    public Optional> isRestoring() {
        return Optional.ofNullable(this.isRestoring);
    }

    /**
     * Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later
     * 
     */
    @Import(name="kerberosEnabled")
    private @Nullable Output kerberosEnabled;

    /**
     * @return Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later
     * 
     */
    public Optional> kerberosEnabled() {
        return Optional.ofNullable(this.kerberosEnabled);
    }

    /**
     * The resource ID of private endpoint for KeyVault. It must reside in the same VNET as the volume. Only applicable if encryptionKeySource = 'Microsoft.KeyVault'.
     * 
     */
    @Import(name="keyVaultPrivateEndpointResourceId")
    private @Nullable Output keyVaultPrivateEndpointResourceId;

    /**
     * @return The resource ID of private endpoint for KeyVault. It must reside in the same VNET as the volume. Only applicable if encryptionKeySource = 'Microsoft.KeyVault'.
     * 
     */
    public Optional> keyVaultPrivateEndpointResourceId() {
        return Optional.ofNullable(this.keyVaultPrivateEndpointResourceId);
    }

    /**
     * Specifies whether LDAP is enabled or not for a given NFS volume.
     * 
     */
    @Import(name="ldapEnabled")
    private @Nullable Output ldapEnabled;

    /**
     * @return Specifies whether LDAP is enabled or not for a given NFS volume.
     * 
     */
    public Optional> ldapEnabled() {
        return Optional.ofNullable(this.ldapEnabled);
    }

    /**
     * The geo-location where the resource lives
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return The geo-location where the resource lives
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * Basic network, or Standard features available to the volume.
     * 
     */
    @Import(name="networkFeatures")
    private @Nullable Output> networkFeatures;

    /**
     * @return Basic network, or Standard features available to the volume.
     * 
     */
    public Optional>> networkFeatures() {
        return Optional.ofNullable(this.networkFeatures);
    }

    /**
     * Application specific placement rules for the particular volume
     * 
     */
    @Import(name="placementRules")
    private @Nullable Output> placementRules;

    /**
     * @return Application specific placement rules for the particular volume
     * 
     */
    public Optional>> placementRules() {
        return Optional.ofNullable(this.placementRules);
    }

    /**
     * The name of the capacity pool
     * 
     */
    @Import(name="poolName", required=true)
    private Output poolName;

    /**
     * @return The name of the capacity pool
     * 
     */
    public Output poolName() {
        return this.poolName;
    }

    /**
     * Set of protocol types, default NFSv3, CIFS for SMB protocol
     * 
     */
    @Import(name="protocolTypes")
    private @Nullable Output> protocolTypes;

    /**
     * @return Set of protocol types, default NFSv3, CIFS for SMB protocol
     * 
     */
    public Optional>> protocolTypes() {
        return Optional.ofNullable(this.protocolTypes);
    }

    /**
     * Proximity placement group associated with the volume
     * 
     */
    @Import(name="proximityPlacementGroup")
    private @Nullable Output proximityPlacementGroup;

    /**
     * @return Proximity placement group associated with the volume
     * 
     */
    public Optional> proximityPlacementGroup() {
        return Optional.ofNullable(this.proximityPlacementGroup);
    }

    /**
     * The name of the resource group. The name is case insensitive.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the resource group. The name is case insensitive.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
     * 
     */
    @Import(name="securityStyle")
    private @Nullable Output> securityStyle;

    /**
     * @return The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
     * 
     */
    public Optional>> securityStyle() {
        return Optional.ofNullable(this.securityStyle);
    }

    /**
     * The service level of the file system
     * 
     */
    @Import(name="serviceLevel")
    private @Nullable Output> serviceLevel;

    /**
     * @return The service level of the file system
     * 
     */
    public Optional>> serviceLevel() {
        return Optional.ofNullable(this.serviceLevel);
    }

    /**
     * Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
     * 
     */
    @Import(name="smbAccessBasedEnumeration")
    private @Nullable Output> smbAccessBasedEnumeration;

    /**
     * @return Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
     * 
     */
    public Optional>> smbAccessBasedEnumeration() {
        return Optional.ofNullable(this.smbAccessBasedEnumeration);
    }

    /**
     * Enables continuously available share property for smb volume. Only applicable for SMB volume
     * 
     */
    @Import(name="smbContinuouslyAvailable")
    private @Nullable Output smbContinuouslyAvailable;

    /**
     * @return Enables continuously available share property for smb volume. Only applicable for SMB volume
     * 
     */
    public Optional> smbContinuouslyAvailable() {
        return Optional.ofNullable(this.smbContinuouslyAvailable);
    }

    /**
     * Enables encryption for in-flight smb3 data. Only applicable for SMB/DualProtocol volume. To be used with swagger version 2020-08-01 or later
     * 
     */
    @Import(name="smbEncryption")
    private @Nullable Output smbEncryption;

    /**
     * @return Enables encryption for in-flight smb3 data. Only applicable for SMB/DualProtocol volume. To be used with swagger version 2020-08-01 or later
     * 
     */
    public Optional> smbEncryption() {
        return Optional.ofNullable(this.smbEncryption);
    }

    /**
     * Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
     * 
     */
    @Import(name="smbNonBrowsable")
    private @Nullable Output> smbNonBrowsable;

    /**
     * @return Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
     * 
     */
    public Optional>> smbNonBrowsable() {
        return Optional.ofNullable(this.smbNonBrowsable);
    }

    /**
     * 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).
     * 
     */
    @Import(name="snapshotDirectoryVisible")
    private @Nullable Output snapshotDirectoryVisible;

    /**
     * @return 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).
     * 
     */
    public Optional> snapshotDirectoryVisible() {
        return Optional.ofNullable(this.snapshotDirectoryVisible);
    }

    /**
     * UUID v4 or resource identifier used to identify the Snapshot.
     * 
     */
    @Import(name="snapshotId")
    private @Nullable Output snapshotId;

    /**
     * @return UUID v4 or resource identifier used to identify the Snapshot.
     * 
     */
    public Optional> snapshotId() {
        return Optional.ofNullable(this.snapshotId);
    }

    /**
     * The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
     * 
     */
    @Import(name="subnetId", required=true)
    private Output subnetId;

    /**
     * @return The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
     * 
     */
    public Output subnetId() {
        return this.subnetId;
    }

    /**
     * Resource tags.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Resource tags.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    @Import(name="throughputMibps")
    private @Nullable Output throughputMibps;

    public Optional> throughputMibps() {
        return Optional.ofNullable(this.throughputMibps);
    }

    /**
     * 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.
     * 
     */
    @Import(name="unixPermissions")
    private @Nullable Output unixPermissions;

    /**
     * @return 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.
     * 
     */
    public Optional> unixPermissions() {
        return Optional.ofNullable(this.unixPermissions);
    }

    /**
     * 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.
     * 
     */
    @Import(name="usageThreshold", required=true)
    private Output usageThreshold;

    /**
     * @return 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.
     * 
     */
    public Output usageThreshold() {
        return this.usageThreshold;
    }

    /**
     * The name of the volume
     * 
     */
    @Import(name="volumeName")
    private @Nullable Output volumeName;

    /**
     * @return The name of the volume
     * 
     */
    public Optional> volumeName() {
        return Optional.ofNullable(this.volumeName);
    }

    /**
     * Volume spec name is the application specific designation or identifier for the particular volume in a volume group for e.g. data, log
     * 
     */
    @Import(name="volumeSpecName")
    private @Nullable Output volumeSpecName;

    /**
     * @return Volume spec name is the application specific designation or identifier for the particular volume in a volume group for e.g. data, log
     * 
     */
    public Optional> volumeSpecName() {
        return Optional.ofNullable(this.volumeSpecName);
    }

    /**
     * What type of volume is this. For destination volumes in Cross Region Replication, set type to DataProtection
     * 
     */
    @Import(name="volumeType")
    private @Nullable Output volumeType;

    /**
     * @return What type of volume is this. For destination volumes in Cross Region Replication, set type to DataProtection
     * 
     */
    public Optional> volumeType() {
        return Optional.ofNullable(this.volumeType);
    }

    /**
     * Availability Zone
     * 
     */
    @Import(name="zones")
    private @Nullable Output> zones;

    /**
     * @return Availability Zone
     * 
     */
    public Optional>> zones() {
        return Optional.ofNullable(this.zones);
    }

    private VolumeArgs() {}

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

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(VolumeArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private VolumeArgs $;

        public Builder() {
            $ = new VolumeArgs();
        }

        public Builder(VolumeArgs defaults) {
            $ = new VolumeArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param accountName The name of the NetApp account
         * 
         * @return builder
         * 
         */
        public Builder accountName(Output accountName) {
            $.accountName = accountName;
            return this;
        }

        /**
         * @param accountName The name of the NetApp account
         * 
         * @return builder
         * 
         */
        public Builder accountName(String accountName) {
            return accountName(Output.of(accountName));
        }

        /**
         * @param avsDataStore Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
         * 
         * @return builder
         * 
         */
        public Builder avsDataStore(@Nullable Output> avsDataStore) {
            $.avsDataStore = avsDataStore;
            return this;
        }

        /**
         * @param avsDataStore Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
         * 
         * @return builder
         * 
         */
        public Builder avsDataStore(Either avsDataStore) {
            return avsDataStore(Output.of(avsDataStore));
        }

        /**
         * @param avsDataStore Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
         * 
         * @return builder
         * 
         */
        public Builder avsDataStore(String avsDataStore) {
            return avsDataStore(Either.ofLeft(avsDataStore));
        }

        /**
         * @param avsDataStore Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore purpose
         * 
         * @return builder
         * 
         */
        public Builder avsDataStore(AvsDataStore avsDataStore) {
            return avsDataStore(Either.ofRight(avsDataStore));
        }

        /**
         * @param backupId UUID v4 or resource identifier used to identify the Backup.
         * 
         * @return builder
         * 
         */
        public Builder backupId(@Nullable Output backupId) {
            $.backupId = backupId;
            return this;
        }

        /**
         * @param backupId UUID v4 or resource identifier used to identify the Backup.
         * 
         * @return builder
         * 
         */
        public Builder backupId(String backupId) {
            return backupId(Output.of(backupId));
        }

        /**
         * @param capacityPoolResourceId Pool Resource Id used in case of creating a volume through volume group
         * 
         * @return builder
         * 
         */
        public Builder capacityPoolResourceId(@Nullable Output capacityPoolResourceId) {
            $.capacityPoolResourceId = capacityPoolResourceId;
            return this;
        }

        /**
         * @param capacityPoolResourceId Pool Resource Id used in case of creating a volume through volume group
         * 
         * @return builder
         * 
         */
        public Builder capacityPoolResourceId(String capacityPoolResourceId) {
            return capacityPoolResourceId(Output.of(capacityPoolResourceId));
        }

        /**
         * @param coolAccess Specifies whether Cool Access(tiering) is enabled for the volume.
         * 
         * @return builder
         * 
         */
        public Builder coolAccess(@Nullable Output coolAccess) {
            $.coolAccess = coolAccess;
            return this;
        }

        /**
         * @param coolAccess Specifies whether Cool Access(tiering) is enabled for the volume.
         * 
         * @return builder
         * 
         */
        public Builder coolAccess(Boolean coolAccess) {
            return coolAccess(Output.of(coolAccess));
        }

        /**
         * @param coolnessPeriod Specifies the number of days after which data that is not accessed by clients will be tiered.
         * 
         * @return builder
         * 
         */
        public Builder coolnessPeriod(@Nullable Output coolnessPeriod) {
            $.coolnessPeriod = coolnessPeriod;
            return this;
        }

        /**
         * @param coolnessPeriod Specifies the number of days after which data that is not accessed by clients will be tiered.
         * 
         * @return builder
         * 
         */
        public Builder coolnessPeriod(Integer coolnessPeriod) {
            return coolnessPeriod(Output.of(coolnessPeriod));
        }

        /**
         * @param creationToken A unique file path for the volume. Used when creating mount targets
         * 
         * @return builder
         * 
         */
        public Builder creationToken(Output creationToken) {
            $.creationToken = creationToken;
            return this;
        }

        /**
         * @param creationToken A unique file path for the volume. Used when creating mount targets
         * 
         * @return builder
         * 
         */
        public Builder creationToken(String creationToken) {
            return creationToken(Output.of(creationToken));
        }

        /**
         * @param dataProtection DataProtection type volumes include an object containing details of the replication
         * 
         * @return builder
         * 
         */
        public Builder dataProtection(@Nullable Output dataProtection) {
            $.dataProtection = dataProtection;
            return this;
        }

        /**
         * @param dataProtection DataProtection type volumes include an object containing details of the replication
         * 
         * @return builder
         * 
         */
        public Builder dataProtection(VolumePropertiesDataProtectionArgs dataProtection) {
            return dataProtection(Output.of(dataProtection));
        }

        /**
         * @param defaultGroupQuotaInKiBs Default group quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies.
         * 
         * @return builder
         * 
         */
        public Builder defaultGroupQuotaInKiBs(@Nullable Output defaultGroupQuotaInKiBs) {
            $.defaultGroupQuotaInKiBs = defaultGroupQuotaInKiBs;
            return this;
        }

        /**
         * @param defaultGroupQuotaInKiBs Default group quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies.
         * 
         * @return builder
         * 
         */
        public Builder defaultGroupQuotaInKiBs(Double defaultGroupQuotaInKiBs) {
            return defaultGroupQuotaInKiBs(Output.of(defaultGroupQuotaInKiBs));
        }

        /**
         * @param defaultUserQuotaInKiBs Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies .
         * 
         * @return builder
         * 
         */
        public Builder defaultUserQuotaInKiBs(@Nullable Output defaultUserQuotaInKiBs) {
            $.defaultUserQuotaInKiBs = defaultUserQuotaInKiBs;
            return this;
        }

        /**
         * @param defaultUserQuotaInKiBs Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set, the minimum value of 4 KiBs applies .
         * 
         * @return builder
         * 
         */
        public Builder defaultUserQuotaInKiBs(Double defaultUserQuotaInKiBs) {
            return defaultUserQuotaInKiBs(Output.of(defaultUserQuotaInKiBs));
        }

        /**
         * @param 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
         * 
         * @return builder
         * 
         */
        public Builder deleteBaseSnapshot(@Nullable Output deleteBaseSnapshot) {
            $.deleteBaseSnapshot = deleteBaseSnapshot;
            return this;
        }

        /**
         * @param 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
         * 
         * @return builder
         * 
         */
        public Builder deleteBaseSnapshot(Boolean deleteBaseSnapshot) {
            return deleteBaseSnapshot(Output.of(deleteBaseSnapshot));
        }

        /**
         * @param enableSubvolumes Flag indicating whether subvolume operations are enabled on the volume
         * 
         * @return builder
         * 
         */
        public Builder enableSubvolumes(@Nullable Output> enableSubvolumes) {
            $.enableSubvolumes = enableSubvolumes;
            return this;
        }

        /**
         * @param enableSubvolumes Flag indicating whether subvolume operations are enabled on the volume
         * 
         * @return builder
         * 
         */
        public Builder enableSubvolumes(Either enableSubvolumes) {
            return enableSubvolumes(Output.of(enableSubvolumes));
        }

        /**
         * @param enableSubvolumes Flag indicating whether subvolume operations are enabled on the volume
         * 
         * @return builder
         * 
         */
        public Builder enableSubvolumes(String enableSubvolumes) {
            return enableSubvolumes(Either.ofLeft(enableSubvolumes));
        }

        /**
         * @param enableSubvolumes Flag indicating whether subvolume operations are enabled on the volume
         * 
         * @return builder
         * 
         */
        public Builder enableSubvolumes(EnableSubvolumes enableSubvolumes) {
            return enableSubvolumes(Either.ofRight(enableSubvolumes));
        }

        /**
         * @param 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'
         * 
         * @return builder
         * 
         */
        public Builder encryptionKeySource(@Nullable Output> encryptionKeySource) {
            $.encryptionKeySource = encryptionKeySource;
            return this;
        }

        /**
         * @param 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'
         * 
         * @return builder
         * 
         */
        public Builder encryptionKeySource(Either encryptionKeySource) {
            return encryptionKeySource(Output.of(encryptionKeySource));
        }

        /**
         * @param 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'
         * 
         * @return builder
         * 
         */
        public Builder encryptionKeySource(String encryptionKeySource) {
            return encryptionKeySource(Either.ofLeft(encryptionKeySource));
        }

        /**
         * @param 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'
         * 
         * @return builder
         * 
         */
        public Builder encryptionKeySource(EncryptionKeySource encryptionKeySource) {
            return encryptionKeySource(Either.ofRight(encryptionKeySource));
        }

        /**
         * @param exportPolicy Set of export policy rules
         * 
         * @return builder
         * 
         */
        public Builder exportPolicy(@Nullable Output exportPolicy) {
            $.exportPolicy = exportPolicy;
            return this;
        }

        /**
         * @param exportPolicy Set of export policy rules
         * 
         * @return builder
         * 
         */
        public Builder exportPolicy(VolumePropertiesExportPolicyArgs exportPolicy) {
            return exportPolicy(Output.of(exportPolicy));
        }

        /**
         * @param isDefaultQuotaEnabled Specifies if default quota is enabled for the volume.
         * 
         * @return builder
         * 
         */
        public Builder isDefaultQuotaEnabled(@Nullable Output isDefaultQuotaEnabled) {
            $.isDefaultQuotaEnabled = isDefaultQuotaEnabled;
            return this;
        }

        /**
         * @param isDefaultQuotaEnabled Specifies if default quota is enabled for the volume.
         * 
         * @return builder
         * 
         */
        public Builder isDefaultQuotaEnabled(Boolean isDefaultQuotaEnabled) {
            return isDefaultQuotaEnabled(Output.of(isDefaultQuotaEnabled));
        }

        /**
         * @param isLargeVolume Specifies whether volume is a Large Volume or Regular Volume.
         * 
         * @return builder
         * 
         */
        public Builder isLargeVolume(@Nullable Output isLargeVolume) {
            $.isLargeVolume = isLargeVolume;
            return this;
        }

        /**
         * @param isLargeVolume Specifies whether volume is a Large Volume or Regular Volume.
         * 
         * @return builder
         * 
         */
        public Builder isLargeVolume(Boolean isLargeVolume) {
            return isLargeVolume(Output.of(isLargeVolume));
        }

        /**
         * @param isRestoring Restoring
         * 
         * @return builder
         * 
         */
        public Builder isRestoring(@Nullable Output isRestoring) {
            $.isRestoring = isRestoring;
            return this;
        }

        /**
         * @param isRestoring Restoring
         * 
         * @return builder
         * 
         */
        public Builder isRestoring(Boolean isRestoring) {
            return isRestoring(Output.of(isRestoring));
        }

        /**
         * @param kerberosEnabled Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later
         * 
         * @return builder
         * 
         */
        public Builder kerberosEnabled(@Nullable Output kerberosEnabled) {
            $.kerberosEnabled = kerberosEnabled;
            return this;
        }

        /**
         * @param kerberosEnabled Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later
         * 
         * @return builder
         * 
         */
        public Builder kerberosEnabled(Boolean kerberosEnabled) {
            return kerberosEnabled(Output.of(kerberosEnabled));
        }

        /**
         * @param 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'.
         * 
         * @return builder
         * 
         */
        public Builder keyVaultPrivateEndpointResourceId(@Nullable Output keyVaultPrivateEndpointResourceId) {
            $.keyVaultPrivateEndpointResourceId = keyVaultPrivateEndpointResourceId;
            return this;
        }

        /**
         * @param 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'.
         * 
         * @return builder
         * 
         */
        public Builder keyVaultPrivateEndpointResourceId(String keyVaultPrivateEndpointResourceId) {
            return keyVaultPrivateEndpointResourceId(Output.of(keyVaultPrivateEndpointResourceId));
        }

        /**
         * @param ldapEnabled Specifies whether LDAP is enabled or not for a given NFS volume.
         * 
         * @return builder
         * 
         */
        public Builder ldapEnabled(@Nullable Output ldapEnabled) {
            $.ldapEnabled = ldapEnabled;
            return this;
        }

        /**
         * @param ldapEnabled Specifies whether LDAP is enabled or not for a given NFS volume.
         * 
         * @return builder
         * 
         */
        public Builder ldapEnabled(Boolean ldapEnabled) {
            return ldapEnabled(Output.of(ldapEnabled));
        }

        /**
         * @param location The geo-location where the resource lives
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location The geo-location where the resource lives
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param networkFeatures Basic network, or Standard features available to the volume.
         * 
         * @return builder
         * 
         */
        public Builder networkFeatures(@Nullable Output> networkFeatures) {
            $.networkFeatures = networkFeatures;
            return this;
        }

        /**
         * @param networkFeatures Basic network, or Standard features available to the volume.
         * 
         * @return builder
         * 
         */
        public Builder networkFeatures(Either networkFeatures) {
            return networkFeatures(Output.of(networkFeatures));
        }

        /**
         * @param networkFeatures Basic network, or Standard features available to the volume.
         * 
         * @return builder
         * 
         */
        public Builder networkFeatures(String networkFeatures) {
            return networkFeatures(Either.ofLeft(networkFeatures));
        }

        /**
         * @param networkFeatures Basic network, or Standard features available to the volume.
         * 
         * @return builder
         * 
         */
        public Builder networkFeatures(NetworkFeatures networkFeatures) {
            return networkFeatures(Either.ofRight(networkFeatures));
        }

        /**
         * @param placementRules Application specific placement rules for the particular volume
         * 
         * @return builder
         * 
         */
        public Builder placementRules(@Nullable Output> placementRules) {
            $.placementRules = placementRules;
            return this;
        }

        /**
         * @param placementRules Application specific placement rules for the particular volume
         * 
         * @return builder
         * 
         */
        public Builder placementRules(List placementRules) {
            return placementRules(Output.of(placementRules));
        }

        /**
         * @param placementRules Application specific placement rules for the particular volume
         * 
         * @return builder
         * 
         */
        public Builder placementRules(PlacementKeyValuePairsArgs... placementRules) {
            return placementRules(List.of(placementRules));
        }

        /**
         * @param poolName The name of the capacity pool
         * 
         * @return builder
         * 
         */
        public Builder poolName(Output poolName) {
            $.poolName = poolName;
            return this;
        }

        /**
         * @param poolName The name of the capacity pool
         * 
         * @return builder
         * 
         */
        public Builder poolName(String poolName) {
            return poolName(Output.of(poolName));
        }

        /**
         * @param protocolTypes Set of protocol types, default NFSv3, CIFS for SMB protocol
         * 
         * @return builder
         * 
         */
        public Builder protocolTypes(@Nullable Output> protocolTypes) {
            $.protocolTypes = protocolTypes;
            return this;
        }

        /**
         * @param protocolTypes Set of protocol types, default NFSv3, CIFS for SMB protocol
         * 
         * @return builder
         * 
         */
        public Builder protocolTypes(List protocolTypes) {
            return protocolTypes(Output.of(protocolTypes));
        }

        /**
         * @param protocolTypes Set of protocol types, default NFSv3, CIFS for SMB protocol
         * 
         * @return builder
         * 
         */
        public Builder protocolTypes(String... protocolTypes) {
            return protocolTypes(List.of(protocolTypes));
        }

        /**
         * @param proximityPlacementGroup Proximity placement group associated with the volume
         * 
         * @return builder
         * 
         */
        public Builder proximityPlacementGroup(@Nullable Output proximityPlacementGroup) {
            $.proximityPlacementGroup = proximityPlacementGroup;
            return this;
        }

        /**
         * @param proximityPlacementGroup Proximity placement group associated with the volume
         * 
         * @return builder
         * 
         */
        public Builder proximityPlacementGroup(String proximityPlacementGroup) {
            return proximityPlacementGroup(Output.of(proximityPlacementGroup));
        }

        /**
         * @param resourceGroupName The name of the resource group. The name is case insensitive.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group. The name is case insensitive.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param securityStyle The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
         * 
         * @return builder
         * 
         */
        public Builder securityStyle(@Nullable Output> securityStyle) {
            $.securityStyle = securityStyle;
            return this;
        }

        /**
         * @param securityStyle The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
         * 
         * @return builder
         * 
         */
        public Builder securityStyle(Either securityStyle) {
            return securityStyle(Output.of(securityStyle));
        }

        /**
         * @param securityStyle The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
         * 
         * @return builder
         * 
         */
        public Builder securityStyle(String securityStyle) {
            return securityStyle(Either.ofLeft(securityStyle));
        }

        /**
         * @param securityStyle The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol
         * 
         * @return builder
         * 
         */
        public Builder securityStyle(SecurityStyle securityStyle) {
            return securityStyle(Either.ofRight(securityStyle));
        }

        /**
         * @param serviceLevel The service level of the file system
         * 
         * @return builder
         * 
         */
        public Builder serviceLevel(@Nullable Output> serviceLevel) {
            $.serviceLevel = serviceLevel;
            return this;
        }

        /**
         * @param serviceLevel The service level of the file system
         * 
         * @return builder
         * 
         */
        public Builder serviceLevel(Either serviceLevel) {
            return serviceLevel(Output.of(serviceLevel));
        }

        /**
         * @param serviceLevel The service level of the file system
         * 
         * @return builder
         * 
         */
        public Builder serviceLevel(String serviceLevel) {
            return serviceLevel(Either.ofLeft(serviceLevel));
        }

        /**
         * @param serviceLevel The service level of the file system
         * 
         * @return builder
         * 
         */
        public Builder serviceLevel(ServiceLevel serviceLevel) {
            return serviceLevel(Either.ofRight(serviceLevel));
        }

        /**
         * @param smbAccessBasedEnumeration Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
         * 
         * @return builder
         * 
         */
        public Builder smbAccessBasedEnumeration(@Nullable Output> smbAccessBasedEnumeration) {
            $.smbAccessBasedEnumeration = smbAccessBasedEnumeration;
            return this;
        }

        /**
         * @param smbAccessBasedEnumeration Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
         * 
         * @return builder
         * 
         */
        public Builder smbAccessBasedEnumeration(Either smbAccessBasedEnumeration) {
            return smbAccessBasedEnumeration(Output.of(smbAccessBasedEnumeration));
        }

        /**
         * @param smbAccessBasedEnumeration Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
         * 
         * @return builder
         * 
         */
        public Builder smbAccessBasedEnumeration(String smbAccessBasedEnumeration) {
            return smbAccessBasedEnumeration(Either.ofLeft(smbAccessBasedEnumeration));
        }

        /**
         * @param smbAccessBasedEnumeration Enables access based enumeration share property for SMB Shares. Only applicable for SMB/DualProtocol volume
         * 
         * @return builder
         * 
         */
        public Builder smbAccessBasedEnumeration(SmbAccessBasedEnumeration smbAccessBasedEnumeration) {
            return smbAccessBasedEnumeration(Either.ofRight(smbAccessBasedEnumeration));
        }

        /**
         * @param smbContinuouslyAvailable Enables continuously available share property for smb volume. Only applicable for SMB volume
         * 
         * @return builder
         * 
         */
        public Builder smbContinuouslyAvailable(@Nullable Output smbContinuouslyAvailable) {
            $.smbContinuouslyAvailable = smbContinuouslyAvailable;
            return this;
        }

        /**
         * @param smbContinuouslyAvailable Enables continuously available share property for smb volume. Only applicable for SMB volume
         * 
         * @return builder
         * 
         */
        public Builder smbContinuouslyAvailable(Boolean smbContinuouslyAvailable) {
            return smbContinuouslyAvailable(Output.of(smbContinuouslyAvailable));
        }

        /**
         * @param 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
         * 
         * @return builder
         * 
         */
        public Builder smbEncryption(@Nullable Output smbEncryption) {
            $.smbEncryption = smbEncryption;
            return this;
        }

        /**
         * @param 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
         * 
         * @return builder
         * 
         */
        public Builder smbEncryption(Boolean smbEncryption) {
            return smbEncryption(Output.of(smbEncryption));
        }

        /**
         * @param smbNonBrowsable Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
         * 
         * @return builder
         * 
         */
        public Builder smbNonBrowsable(@Nullable Output> smbNonBrowsable) {
            $.smbNonBrowsable = smbNonBrowsable;
            return this;
        }

        /**
         * @param smbNonBrowsable Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
         * 
         * @return builder
         * 
         */
        public Builder smbNonBrowsable(Either smbNonBrowsable) {
            return smbNonBrowsable(Output.of(smbNonBrowsable));
        }

        /**
         * @param smbNonBrowsable Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
         * 
         * @return builder
         * 
         */
        public Builder smbNonBrowsable(String smbNonBrowsable) {
            return smbNonBrowsable(Either.ofLeft(smbNonBrowsable));
        }

        /**
         * @param smbNonBrowsable Enables non browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume
         * 
         * @return builder
         * 
         */
        public Builder smbNonBrowsable(SmbNonBrowsable smbNonBrowsable) {
            return smbNonBrowsable(Either.ofRight(smbNonBrowsable));
        }

        /**
         * @param 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).
         * 
         * @return builder
         * 
         */
        public Builder snapshotDirectoryVisible(@Nullable Output snapshotDirectoryVisible) {
            $.snapshotDirectoryVisible = snapshotDirectoryVisible;
            return this;
        }

        /**
         * @param 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).
         * 
         * @return builder
         * 
         */
        public Builder snapshotDirectoryVisible(Boolean snapshotDirectoryVisible) {
            return snapshotDirectoryVisible(Output.of(snapshotDirectoryVisible));
        }

        /**
         * @param snapshotId UUID v4 or resource identifier used to identify the Snapshot.
         * 
         * @return builder
         * 
         */
        public Builder snapshotId(@Nullable Output snapshotId) {
            $.snapshotId = snapshotId;
            return this;
        }

        /**
         * @param snapshotId UUID v4 or resource identifier used to identify the Snapshot.
         * 
         * @return builder
         * 
         */
        public Builder snapshotId(String snapshotId) {
            return snapshotId(Output.of(snapshotId));
        }

        /**
         * @param subnetId The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
         * 
         * @return builder
         * 
         */
        public Builder subnetId(Output subnetId) {
            $.subnetId = subnetId;
            return this;
        }

        /**
         * @param subnetId The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
         * 
         * @return builder
         * 
         */
        public Builder subnetId(String subnetId) {
            return subnetId(Output.of(subnetId));
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        public Builder throughputMibps(@Nullable Output throughputMibps) {
            $.throughputMibps = throughputMibps;
            return this;
        }

        public Builder throughputMibps(Double throughputMibps) {
            return throughputMibps(Output.of(throughputMibps));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder unixPermissions(@Nullable Output unixPermissions) {
            $.unixPermissions = unixPermissions;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder unixPermissions(String unixPermissions) {
            return unixPermissions(Output.of(unixPermissions));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder usageThreshold(Output usageThreshold) {
            $.usageThreshold = usageThreshold;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder usageThreshold(Double usageThreshold) {
            return usageThreshold(Output.of(usageThreshold));
        }

        /**
         * @param volumeName The name of the volume
         * 
         * @return builder
         * 
         */
        public Builder volumeName(@Nullable Output volumeName) {
            $.volumeName = volumeName;
            return this;
        }

        /**
         * @param volumeName The name of the volume
         * 
         * @return builder
         * 
         */
        public Builder volumeName(String volumeName) {
            return volumeName(Output.of(volumeName));
        }

        /**
         * @param volumeSpecName Volume spec name is the application specific designation or identifier for the particular volume in a volume group for e.g. data, log
         * 
         * @return builder
         * 
         */
        public Builder volumeSpecName(@Nullable Output volumeSpecName) {
            $.volumeSpecName = volumeSpecName;
            return this;
        }

        /**
         * @param volumeSpecName Volume spec name is the application specific designation or identifier for the particular volume in a volume group for e.g. data, log
         * 
         * @return builder
         * 
         */
        public Builder volumeSpecName(String volumeSpecName) {
            return volumeSpecName(Output.of(volumeSpecName));
        }

        /**
         * @param volumeType What type of volume is this. For destination volumes in Cross Region Replication, set type to DataProtection
         * 
         * @return builder
         * 
         */
        public Builder volumeType(@Nullable Output volumeType) {
            $.volumeType = volumeType;
            return this;
        }

        /**
         * @param volumeType What type of volume is this. For destination volumes in Cross Region Replication, set type to DataProtection
         * 
         * @return builder
         * 
         */
        public Builder volumeType(String volumeType) {
            return volumeType(Output.of(volumeType));
        }

        /**
         * @param zones Availability Zone
         * 
         * @return builder
         * 
         */
        public Builder zones(@Nullable Output> zones) {
            $.zones = zones;
            return this;
        }

        /**
         * @param zones Availability Zone
         * 
         * @return builder
         * 
         */
        public Builder zones(List zones) {
            return zones(Output.of(zones));
        }

        /**
         * @param zones Availability Zone
         * 
         * @return builder
         * 
         */
        public Builder zones(String... zones) {
            return zones(List.of(zones));
        }

        public VolumeArgs build() {
            if ($.accountName == null) {
                throw new MissingRequiredPropertyException("VolumeArgs", "accountName");
            }
            $.avsDataStore = Codegen.stringProp("avsDataStore").left(AvsDataStore.class).output().arg($.avsDataStore).def("Disabled").getNullable();
            $.coolAccess = Codegen.booleanProp("coolAccess").output().arg($.coolAccess).def(false).getNullable();
            if ($.creationToken == null) {
                throw new MissingRequiredPropertyException("VolumeArgs", "creationToken");
            }
            $.defaultGroupQuotaInKiBs = Codegen.doubleProp("defaultGroupQuotaInKiBs").output().arg($.defaultGroupQuotaInKiBs).def(0e+00).getNullable();
            $.defaultUserQuotaInKiBs = Codegen.doubleProp("defaultUserQuotaInKiBs").output().arg($.defaultUserQuotaInKiBs).def(0e+00).getNullable();
            $.enableSubvolumes = Codegen.stringProp("enableSubvolumes").left(EnableSubvolumes.class).output().arg($.enableSubvolumes).def("Disabled").getNullable();
            $.encryptionKeySource = Codegen.stringProp("encryptionKeySource").left(EncryptionKeySource.class).output().arg($.encryptionKeySource).def("Microsoft.NetApp").getNullable();
            $.isDefaultQuotaEnabled = Codegen.booleanProp("isDefaultQuotaEnabled").output().arg($.isDefaultQuotaEnabled).def(false).getNullable();
            $.isLargeVolume = Codegen.booleanProp("isLargeVolume").output().arg($.isLargeVolume).def(false).getNullable();
            $.kerberosEnabled = Codegen.booleanProp("kerberosEnabled").output().arg($.kerberosEnabled).def(false).getNullable();
            $.ldapEnabled = Codegen.booleanProp("ldapEnabled").output().arg($.ldapEnabled).def(false).getNullable();
            $.networkFeatures = Codegen.stringProp("networkFeatures").left(NetworkFeatures.class).output().arg($.networkFeatures).def("Basic").getNullable();
            if ($.poolName == null) {
                throw new MissingRequiredPropertyException("VolumeArgs", "poolName");
            }
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("VolumeArgs", "resourceGroupName");
            }
            $.securityStyle = Codegen.stringProp("securityStyle").left(SecurityStyle.class).output().arg($.securityStyle).def("unix").getNullable();
            $.smbContinuouslyAvailable = Codegen.booleanProp("smbContinuouslyAvailable").output().arg($.smbContinuouslyAvailable).def(false).getNullable();
            $.smbEncryption = Codegen.booleanProp("smbEncryption").output().arg($.smbEncryption).def(false).getNullable();
            $.snapshotDirectoryVisible = Codegen.booleanProp("snapshotDirectoryVisible").output().arg($.snapshotDirectoryVisible).def(true).getNullable();
            if ($.subnetId == null) {
                throw new MissingRequiredPropertyException("VolumeArgs", "subnetId");
            }
            $.unixPermissions = Codegen.stringProp("unixPermissions").output().arg($.unixPermissions).def("0770").getNullable();
            $.usageThreshold = Codegen.doubleProp("usageThreshold").output().arg($.usageThreshold).def(1.073741824e+11).require();
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy