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

com.azure.resourcemanager.netapp.models.VolumeGroupVolumeProperties Maven / Gradle / Ivy

Go to download

This package contains Microsoft Azure SDK for NetAppFiles Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. Microsoft NetApp Files Azure Resource Provider specification. Package tag package-2024-03.

There is a newer version: 1.4.0
Show newest version
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.netapp.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.management.ProxyResource;
import com.azure.core.util.logging.ClientLogger;
import com.azure.json.JsonReader;
import com.azure.json.JsonToken;
import com.azure.json.JsonWriter;
import com.azure.resourcemanager.netapp.fluent.models.MountTargetProperties;
import com.azure.resourcemanager.netapp.fluent.models.VolumeProperties;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * Volume resource.
 */
@Fluent
public final class VolumeGroupVolumeProperties extends ProxyResource {
    /*
     * Resource name
     */
    private String name;

    /*
     * Resource tags
     */
    private Map tags;

    /*
     * Availability Zone
     */
    private List zones;

    /*
     * Volume properties
     */
    private VolumeProperties innerProperties = new VolumeProperties();

    /*
     * The type of the resource.
     */
    private String type;

    /*
     * Fully qualified resource Id for the resource.
     */
    private String id;

    /**
     * Creates an instance of VolumeGroupVolumeProperties class.
     */
    public VolumeGroupVolumeProperties() {
    }

    /**
     * Get the name property: Resource name.
     * 
     * @return the name value.
     */
    public String name() {
        return this.name;
    }

    /**
     * Set the name property: Resource name.
     * 
     * @param name the name value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withName(String name) {
        this.name = name;
        return this;
    }

    /**
     * Get the tags property: Resource tags.
     * 
     * @return the tags value.
     */
    public Map tags() {
        return this.tags;
    }

    /**
     * Set the tags property: Resource tags.
     * 
     * @param tags the tags value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withTags(Map tags) {
        this.tags = tags;
        return this;
    }

    /**
     * Get the zones property: Availability Zone.
     * 
     * @return the zones value.
     */
    public List zones() {
        return this.zones;
    }

    /**
     * Set the zones property: Availability Zone.
     * 
     * @param zones the zones value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withZones(List zones) {
        this.zones = zones;
        return this;
    }

    /**
     * Get the innerProperties property: Volume properties.
     * 
     * @return the innerProperties value.
     */
    private VolumeProperties innerProperties() {
        return this.innerProperties;
    }

    /**
     * Get the type property: The type of the resource.
     * 
     * @return the type value.
     */
    @Override
    public String type() {
        return this.type;
    }

    /**
     * Get the id property: Fully qualified resource Id for the resource.
     * 
     * @return the id value.
     */
    @Override
    public String id() {
        return this.id;
    }

    /**
     * Get the fileSystemId property: Unique FileSystem Identifier.
     * 
     * @return the fileSystemId value.
     */
    public String fileSystemId() {
        return this.innerProperties() == null ? null : this.innerProperties().fileSystemId();
    }

    /**
     * Get the creationToken property: A unique file path for the volume. Used when creating mount targets.
     * 
     * @return the creationToken value.
     */
    public String creationToken() {
        return this.innerProperties() == null ? null : this.innerProperties().creationToken();
    }

    /**
     * Set the creationToken property: A unique file path for the volume. Used when creating mount targets.
     * 
     * @param creationToken the creationToken value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withCreationToken(String creationToken) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withCreationToken(creationToken);
        return this;
    }

    /**
     * Get the serviceLevel property: The service level of the file system.
     * 
     * @return the serviceLevel value.
     */
    public ServiceLevel serviceLevel() {
        return this.innerProperties() == null ? null : this.innerProperties().serviceLevel();
    }

    /**
     * Set the serviceLevel property: The service level of the file system.
     * 
     * @param serviceLevel the serviceLevel value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withServiceLevel(ServiceLevel serviceLevel) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withServiceLevel(serviceLevel);
        return this;
    }

    /**
     * Get the usageThreshold property: Maximum storage quota allowed for a file system in bytes. This is a soft quota
     * used for alerting only. For regular volumes, valid values are in the range 50GiB to 100TiB. For large volumes,
     * valid values are in the range 100TiB to 1PiB, and on an exceptional basis, from to 2400GiB to 2400TiB. Values
     * expressed in bytes as multiples of 1 GiB.
     * 
     * @return the usageThreshold value.
     */
    public long usageThreshold() {
        return this.innerProperties() == null ? 0L : this.innerProperties().usageThreshold();
    }

    /**
     * Set the usageThreshold property: Maximum storage quota allowed for a file system in bytes. This is a soft quota
     * used for alerting only. For regular volumes, valid values are in the range 50GiB to 100TiB. For large volumes,
     * valid values are in the range 100TiB to 1PiB, and on an exceptional basis, from to 2400GiB to 2400TiB. Values
     * expressed in bytes as multiples of 1 GiB.
     * 
     * @param usageThreshold the usageThreshold value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withUsageThreshold(long usageThreshold) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withUsageThreshold(usageThreshold);
        return this;
    }

    /**
     * Get the exportPolicy property: Set of export policy rules.
     * 
     * @return the exportPolicy value.
     */
    public VolumePropertiesExportPolicy exportPolicy() {
        return this.innerProperties() == null ? null : this.innerProperties().exportPolicy();
    }

    /**
     * Set the exportPolicy property: Set of export policy rules.
     * 
     * @param exportPolicy the exportPolicy value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withExportPolicy(VolumePropertiesExportPolicy exportPolicy) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withExportPolicy(exportPolicy);
        return this;
    }

    /**
     * Get the protocolTypes property: Set of protocol types, default NFSv3, CIFS for SMB protocol.
     * 
     * @return the protocolTypes value.
     */
    public List protocolTypes() {
        return this.innerProperties() == null ? null : this.innerProperties().protocolTypes();
    }

    /**
     * Set the protocolTypes property: Set of protocol types, default NFSv3, CIFS for SMB protocol.
     * 
     * @param protocolTypes the protocolTypes value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withProtocolTypes(List protocolTypes) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withProtocolTypes(protocolTypes);
        return this;
    }

    /**
     * Get the provisioningState property: Azure lifecycle management.
     * 
     * @return the provisioningState value.
     */
    public String provisioningState() {
        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
    }

    /**
     * Get the snapshotId property: Resource identifier used to identify the Snapshot.
     * 
     * @return the snapshotId value.
     */
    public String snapshotId() {
        return this.innerProperties() == null ? null : this.innerProperties().snapshotId();
    }

    /**
     * Set the snapshotId property: Resource identifier used to identify the Snapshot.
     * 
     * @param snapshotId the snapshotId value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withSnapshotId(String snapshotId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withSnapshotId(snapshotId);
        return this;
    }

    /**
     * Get the deleteBaseSnapshot property: 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 the deleteBaseSnapshot value.
     */
    public Boolean deleteBaseSnapshot() {
        return this.innerProperties() == null ? null : this.innerProperties().deleteBaseSnapshot();
    }

    /**
     * Set the deleteBaseSnapshot property: If enabled (true) the snapshot the volume was created from will be
     * automatically deleted after the volume create operation has finished. Defaults to false.
     * 
     * @param deleteBaseSnapshot the deleteBaseSnapshot value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withDeleteBaseSnapshot(Boolean deleteBaseSnapshot) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withDeleteBaseSnapshot(deleteBaseSnapshot);
        return this;
    }

    /**
     * Get the backupId property: Resource identifier used to identify the Backup.
     * 
     * @return the backupId value.
     */
    public String backupId() {
        return this.innerProperties() == null ? null : this.innerProperties().backupId();
    }

    /**
     * Set the backupId property: Resource identifier used to identify the Backup.
     * 
     * @param backupId the backupId value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withBackupId(String backupId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withBackupId(backupId);
        return this;
    }

    /**
     * Get the baremetalTenantId property: Unique Baremetal Tenant Identifier.
     * 
     * @return the baremetalTenantId value.
     */
    public String baremetalTenantId() {
        return this.innerProperties() == null ? null : this.innerProperties().baremetalTenantId();
    }

    /**
     * Get the subnetId property: The Azure Resource URI for a delegated subnet. Must have the delegation
     * Microsoft.NetApp/volumes.
     * 
     * @return the subnetId value.
     */
    public String subnetId() {
        return this.innerProperties() == null ? null : this.innerProperties().subnetId();
    }

    /**
     * Set the subnetId property: The Azure Resource URI for a delegated subnet. Must have the delegation
     * Microsoft.NetApp/volumes.
     * 
     * @param subnetId the subnetId value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withSubnetId(String subnetId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withSubnetId(subnetId);
        return this;
    }

    /**
     * Get the networkFeatures property: The original value of the network features type available to the volume at the
     * time it was created.
     * 
     * @return the networkFeatures value.
     */
    public NetworkFeatures networkFeatures() {
        return this.innerProperties() == null ? null : this.innerProperties().networkFeatures();
    }

    /**
     * Set the networkFeatures property: The original value of the network features type available to the volume at the
     * time it was created.
     * 
     * @param networkFeatures the networkFeatures value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withNetworkFeatures(NetworkFeatures networkFeatures) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withNetworkFeatures(networkFeatures);
        return this;
    }

    /**
     * Get the effectiveNetworkFeatures property: The effective value of the network features type available to the
     * volume, or current effective state of update.
     * 
     * @return the effectiveNetworkFeatures value.
     */
    public NetworkFeatures effectiveNetworkFeatures() {
        return this.innerProperties() == null ? null : this.innerProperties().effectiveNetworkFeatures();
    }

    /**
     * Get the networkSiblingSetId property: Network Sibling Set ID for the the group of volumes sharing networking
     * resources.
     * 
     * @return the networkSiblingSetId value.
     */
    public String networkSiblingSetId() {
        return this.innerProperties() == null ? null : this.innerProperties().networkSiblingSetId();
    }

    /**
     * Get the storageToNetworkProximity property: Provides storage to network proximity information for the volume.
     * 
     * @return the storageToNetworkProximity value.
     */
    public VolumeStorageToNetworkProximity storageToNetworkProximity() {
        return this.innerProperties() == null ? null : this.innerProperties().storageToNetworkProximity();
    }

    /**
     * Get the mountTargets property: List of mount targets.
     * 
     * @return the mountTargets value.
     */
    public List mountTargets() {
        return this.innerProperties() == null ? null : this.innerProperties().mountTargets();
    }

    /**
     * Get the volumeType property: What type of volume is this. For destination volumes in Cross Region Replication,
     * set type to DataProtection. For creating clone volume, set type to ShortTermClone.
     * 
     * @return the volumeType value.
     */
    public String volumeType() {
        return this.innerProperties() == null ? null : this.innerProperties().volumeType();
    }

    /**
     * Set the volumeType property: What type of volume is this. For destination volumes in Cross Region Replication,
     * set type to DataProtection. For creating clone volume, set type to ShortTermClone.
     * 
     * @param volumeType the volumeType value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withVolumeType(String volumeType) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withVolumeType(volumeType);
        return this;
    }

    /**
     * Get the dataProtection property: DataProtection type volumes include an object containing details of the
     * replication.
     * 
     * @return the dataProtection value.
     */
    public VolumePropertiesDataProtection dataProtection() {
        return this.innerProperties() == null ? null : this.innerProperties().dataProtection();
    }

    /**
     * Set the dataProtection property: DataProtection type volumes include an object containing details of the
     * replication.
     * 
     * @param dataProtection the dataProtection value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withDataProtection(VolumePropertiesDataProtection dataProtection) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withDataProtection(dataProtection);
        return this;
    }

    /**
     * Get the acceptGrowCapacityPoolForShortTermCloneSplit property: While auto splitting the short term clone volume,
     * if the parent pool does not have enough space to accommodate the volume after split, it will be automatically
     * resized, which will lead to increased billing. To accept capacity pool size auto grow and create a short term
     * clone volume, set the property as accepted.
     * 
     * @return the acceptGrowCapacityPoolForShortTermCloneSplit value.
     */
    public AcceptGrowCapacityPoolForShortTermCloneSplit acceptGrowCapacityPoolForShortTermCloneSplit() {
        return this.innerProperties() == null
            ? null
            : this.innerProperties().acceptGrowCapacityPoolForShortTermCloneSplit();
    }

    /**
     * Set the acceptGrowCapacityPoolForShortTermCloneSplit property: While auto splitting the short term clone volume,
     * if the parent pool does not have enough space to accommodate the volume after split, it will be automatically
     * resized, which will lead to increased billing. To accept capacity pool size auto grow and create a short term
     * clone volume, set the property as accepted.
     * 
     * @param acceptGrowCapacityPoolForShortTermCloneSplit the acceptGrowCapacityPoolForShortTermCloneSplit value to
     * set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withAcceptGrowCapacityPoolForShortTermCloneSplit(
        AcceptGrowCapacityPoolForShortTermCloneSplit acceptGrowCapacityPoolForShortTermCloneSplit) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties()
            .withAcceptGrowCapacityPoolForShortTermCloneSplit(acceptGrowCapacityPoolForShortTermCloneSplit);
        return this;
    }

    /**
     * Get the isRestoring property: Restoring.
     * 
     * @return the isRestoring value.
     */
    public Boolean isRestoring() {
        return this.innerProperties() == null ? null : this.innerProperties().isRestoring();
    }

    /**
     * Set the isRestoring property: Restoring.
     * 
     * @param isRestoring the isRestoring value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withIsRestoring(Boolean isRestoring) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withIsRestoring(isRestoring);
        return this;
    }

    /**
     * Get the snapshotDirectoryVisible property: 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 the snapshotDirectoryVisible value.
     */
    public Boolean snapshotDirectoryVisible() {
        return this.innerProperties() == null ? null : this.innerProperties().snapshotDirectoryVisible();
    }

    /**
     * Set the snapshotDirectoryVisible property: 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).
     * 
     * @param snapshotDirectoryVisible the snapshotDirectoryVisible value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withSnapshotDirectoryVisible(Boolean snapshotDirectoryVisible) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withSnapshotDirectoryVisible(snapshotDirectoryVisible);
        return this;
    }

    /**
     * Get the kerberosEnabled property: Describe if a volume is KerberosEnabled. To be use with swagger version
     * 2020-05-01 or later.
     * 
     * @return the kerberosEnabled value.
     */
    public Boolean kerberosEnabled() {
        return this.innerProperties() == null ? null : this.innerProperties().kerberosEnabled();
    }

    /**
     * Set the kerberosEnabled property: Describe if a volume is KerberosEnabled. To be use with swagger version
     * 2020-05-01 or later.
     * 
     * @param kerberosEnabled the kerberosEnabled value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withKerberosEnabled(Boolean kerberosEnabled) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withKerberosEnabled(kerberosEnabled);
        return this;
    }

    /**
     * Get the securityStyle property: The security style of volume, default unix, defaults to ntfs for dual protocol or
     * CIFS protocol.
     * 
     * @return the securityStyle value.
     */
    public SecurityStyle securityStyle() {
        return this.innerProperties() == null ? null : this.innerProperties().securityStyle();
    }

    /**
     * Set the securityStyle property: The security style of volume, default unix, defaults to ntfs for dual protocol or
     * CIFS protocol.
     * 
     * @param securityStyle the securityStyle value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withSecurityStyle(SecurityStyle securityStyle) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withSecurityStyle(securityStyle);
        return this;
    }

    /**
     * Get the smbEncryption property: 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 the smbEncryption value.
     */
    public Boolean smbEncryption() {
        return this.innerProperties() == null ? null : this.innerProperties().smbEncryption();
    }

    /**
     * Set the smbEncryption property: Enables encryption for in-flight smb3 data. Only applicable for SMB/DualProtocol
     * volume. To be used with swagger version 2020-08-01 or later.
     * 
     * @param smbEncryption the smbEncryption value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withSmbEncryption(Boolean smbEncryption) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withSmbEncryption(smbEncryption);
        return this;
    }

    /**
     * Get the smbAccessBasedEnumeration property: Enables access-based enumeration share property for SMB Shares. Only
     * applicable for SMB/DualProtocol volume.
     * 
     * @return the smbAccessBasedEnumeration value.
     */
    public SmbAccessBasedEnumeration smbAccessBasedEnumeration() {
        return this.innerProperties() == null ? null : this.innerProperties().smbAccessBasedEnumeration();
    }

    /**
     * Set the smbAccessBasedEnumeration property: Enables access-based enumeration share property for SMB Shares. Only
     * applicable for SMB/DualProtocol volume.
     * 
     * @param smbAccessBasedEnumeration the smbAccessBasedEnumeration value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties
        withSmbAccessBasedEnumeration(SmbAccessBasedEnumeration smbAccessBasedEnumeration) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withSmbAccessBasedEnumeration(smbAccessBasedEnumeration);
        return this;
    }

    /**
     * Get the smbNonBrowsable property: Enables non-browsable property for SMB Shares. Only applicable for
     * SMB/DualProtocol volume.
     * 
     * @return the smbNonBrowsable value.
     */
    public SmbNonBrowsable smbNonBrowsable() {
        return this.innerProperties() == null ? null : this.innerProperties().smbNonBrowsable();
    }

    /**
     * Set the smbNonBrowsable property: Enables non-browsable property for SMB Shares. Only applicable for
     * SMB/DualProtocol volume.
     * 
     * @param smbNonBrowsable the smbNonBrowsable value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withSmbNonBrowsable(SmbNonBrowsable smbNonBrowsable) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withSmbNonBrowsable(smbNonBrowsable);
        return this;
    }

    /**
     * Get the smbContinuouslyAvailable property: Enables continuously available share property for smb volume. Only
     * applicable for SMB volume.
     * 
     * @return the smbContinuouslyAvailable value.
     */
    public Boolean smbContinuouslyAvailable() {
        return this.innerProperties() == null ? null : this.innerProperties().smbContinuouslyAvailable();
    }

    /**
     * Set the smbContinuouslyAvailable property: Enables continuously available share property for smb volume. Only
     * applicable for SMB volume.
     * 
     * @param smbContinuouslyAvailable the smbContinuouslyAvailable value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withSmbContinuouslyAvailable(Boolean smbContinuouslyAvailable) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withSmbContinuouslyAvailable(smbContinuouslyAvailable);
        return this;
    }

    /**
     * Get the throughputMibps property: Maximum throughput in MiB/s that can be achieved by this volume and this will
     * be accepted as input only for manual qosType volume.
     * 
     * @return the throughputMibps value.
     */
    public Float throughputMibps() {
        return this.innerProperties() == null ? null : this.innerProperties().throughputMibps();
    }

    /**
     * Set the throughputMibps property: Maximum throughput in MiB/s that can be achieved by this volume and this will
     * be accepted as input only for manual qosType volume.
     * 
     * @param throughputMibps the throughputMibps value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withThroughputMibps(Float throughputMibps) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withThroughputMibps(throughputMibps);
        return this;
    }

    /**
     * Get the actualThroughputMibps property: Actual throughput in MiB/s for auto qosType volumes calculated based on
     * size and serviceLevel.
     * 
     * @return the actualThroughputMibps value.
     */
    public Float actualThroughputMibps() {
        return this.innerProperties() == null ? null : this.innerProperties().actualThroughputMibps();
    }

    /**
     * Get the encryptionKeySource property: 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 the encryptionKeySource value.
     */
    public EncryptionKeySource encryptionKeySource() {
        return this.innerProperties() == null ? null : this.innerProperties().encryptionKeySource();
    }

    /**
     * Set the encryptionKeySource property: 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'.
     * 
     * @param encryptionKeySource the encryptionKeySource value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withEncryptionKeySource(EncryptionKeySource encryptionKeySource) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withEncryptionKeySource(encryptionKeySource);
        return this;
    }

    /**
     * Get the keyVaultPrivateEndpointResourceId property: 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 the keyVaultPrivateEndpointResourceId value.
     */
    public String keyVaultPrivateEndpointResourceId() {
        return this.innerProperties() == null ? null : this.innerProperties().keyVaultPrivateEndpointResourceId();
    }

    /**
     * Set the keyVaultPrivateEndpointResourceId property: The resource ID of private endpoint for KeyVault. It must
     * reside in the same VNET as the volume. Only applicable if encryptionKeySource = 'Microsoft.KeyVault'.
     * 
     * @param keyVaultPrivateEndpointResourceId the keyVaultPrivateEndpointResourceId value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withKeyVaultPrivateEndpointResourceId(String keyVaultPrivateEndpointResourceId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withKeyVaultPrivateEndpointResourceId(keyVaultPrivateEndpointResourceId);
        return this;
    }

    /**
     * Get the ldapEnabled property: Specifies whether LDAP is enabled or not for a given NFS volume.
     * 
     * @return the ldapEnabled value.
     */
    public Boolean ldapEnabled() {
        return this.innerProperties() == null ? null : this.innerProperties().ldapEnabled();
    }

    /**
     * Set the ldapEnabled property: Specifies whether LDAP is enabled or not for a given NFS volume.
     * 
     * @param ldapEnabled the ldapEnabled value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withLdapEnabled(Boolean ldapEnabled) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withLdapEnabled(ldapEnabled);
        return this;
    }

    /**
     * Get the coolAccess property: Specifies whether Cool Access(tiering) is enabled for the volume.
     * 
     * @return the coolAccess value.
     */
    public Boolean coolAccess() {
        return this.innerProperties() == null ? null : this.innerProperties().coolAccess();
    }

    /**
     * Set the coolAccess property: Specifies whether Cool Access(tiering) is enabled for the volume.
     * 
     * @param coolAccess the coolAccess value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withCoolAccess(Boolean coolAccess) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withCoolAccess(coolAccess);
        return this;
    }

    /**
     * Get the coolnessPeriod property: Specifies the number of days after which data that is not accessed by clients
     * will be tiered.
     * 
     * @return the coolnessPeriod value.
     */
    public Integer coolnessPeriod() {
        return this.innerProperties() == null ? null : this.innerProperties().coolnessPeriod();
    }

    /**
     * Set the coolnessPeriod property: Specifies the number of days after which data that is not accessed by clients
     * will be tiered.
     * 
     * @param coolnessPeriod the coolnessPeriod value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withCoolnessPeriod(Integer coolnessPeriod) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withCoolnessPeriod(coolnessPeriod);
        return this;
    }

    /**
     * Get the coolAccessRetrievalPolicy property: coolAccessRetrievalPolicy determines the data retrieval behavior from
     * the cool tier to standard storage based on the read pattern for cool access enabled volumes. The possible values
     * for this field are:
     * Default - Data will be pulled from cool tier to standard storage on random reads. This policy is the default.
     * OnRead - All client-driven data read is pulled from cool tier to standard storage on both sequential and random
     * reads.
     * Never - No client-driven data is pulled from cool tier to standard storage.
     * 
     * @return the coolAccessRetrievalPolicy value.
     */
    public CoolAccessRetrievalPolicy coolAccessRetrievalPolicy() {
        return this.innerProperties() == null ? null : this.innerProperties().coolAccessRetrievalPolicy();
    }

    /**
     * Set the coolAccessRetrievalPolicy property: coolAccessRetrievalPolicy determines the data retrieval behavior from
     * the cool tier to standard storage based on the read pattern for cool access enabled volumes. The possible values
     * for this field are:
     * Default - Data will be pulled from cool tier to standard storage on random reads. This policy is the default.
     * OnRead - All client-driven data read is pulled from cool tier to standard storage on both sequential and random
     * reads.
     * Never - No client-driven data is pulled from cool tier to standard storage.
     * 
     * @param coolAccessRetrievalPolicy the coolAccessRetrievalPolicy value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties
        withCoolAccessRetrievalPolicy(CoolAccessRetrievalPolicy coolAccessRetrievalPolicy) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withCoolAccessRetrievalPolicy(coolAccessRetrievalPolicy);
        return this;
    }

    /**
     * Get the unixPermissions property: 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. Avoid passing null value for unixPermissions in volume update operation,
     * As per the behavior, If Null value is passed then user-visible unixPermissions value will became null, and user
     * will not be able to get unixPermissions value. On safer side, actual unixPermissions value on volume will remain
     * as its last saved value only.
     * 
     * @return the unixPermissions value.
     */
    public String unixPermissions() {
        return this.innerProperties() == null ? null : this.innerProperties().unixPermissions();
    }

    /**
     * Set the unixPermissions property: 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. Avoid passing null value for unixPermissions in volume update operation,
     * As per the behavior, If Null value is passed then user-visible unixPermissions value will became null, and user
     * will not be able to get unixPermissions value. On safer side, actual unixPermissions value on volume will remain
     * as its last saved value only.
     * 
     * @param unixPermissions the unixPermissions value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withUnixPermissions(String unixPermissions) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withUnixPermissions(unixPermissions);
        return this;
    }

    /**
     * Get the cloneProgress property: When a volume is being restored from another volume's snapshot, will show the
     * percentage completion of this cloning process. When this value is empty/null there is no cloning process
     * currently happening on this volume. This value will update every 5 minutes during cloning.
     * 
     * @return the cloneProgress value.
     */
    public Integer cloneProgress() {
        return this.innerProperties() == null ? null : this.innerProperties().cloneProgress();
    }

    /**
     * Get the fileAccessLogs property: Flag indicating whether file access logs are enabled for the volume, based on
     * active diagnostic settings present on the volume.
     * 
     * @return the fileAccessLogs value.
     */
    public FileAccessLogs fileAccessLogs() {
        return this.innerProperties() == null ? null : this.innerProperties().fileAccessLogs();
    }

    /**
     * Get the avsDataStore property: Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore
     * purpose.
     * 
     * @return the avsDataStore value.
     */
    public AvsDataStore avsDataStore() {
        return this.innerProperties() == null ? null : this.innerProperties().avsDataStore();
    }

    /**
     * Set the avsDataStore property: Specifies whether the volume is enabled for Azure VMware Solution (AVS) datastore
     * purpose.
     * 
     * @param avsDataStore the avsDataStore value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withAvsDataStore(AvsDataStore avsDataStore) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withAvsDataStore(avsDataStore);
        return this;
    }

    /**
     * Get the dataStoreResourceId property: Data store resource unique identifier.
     * 
     * @return the dataStoreResourceId value.
     */
    public List dataStoreResourceId() {
        return this.innerProperties() == null ? null : this.innerProperties().dataStoreResourceId();
    }

    /**
     * Get the isDefaultQuotaEnabled property: Specifies if default quota is enabled for the volume.
     * 
     * @return the isDefaultQuotaEnabled value.
     */
    public Boolean isDefaultQuotaEnabled() {
        return this.innerProperties() == null ? null : this.innerProperties().isDefaultQuotaEnabled();
    }

    /**
     * Set the isDefaultQuotaEnabled property: Specifies if default quota is enabled for the volume.
     * 
     * @param isDefaultQuotaEnabled the isDefaultQuotaEnabled value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withIsDefaultQuotaEnabled(Boolean isDefaultQuotaEnabled) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withIsDefaultQuotaEnabled(isDefaultQuotaEnabled);
        return this;
    }

    /**
     * Get the defaultUserQuotaInKiBs property: Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set,
     * the minimum value of 4 KiBs applies .
     * 
     * @return the defaultUserQuotaInKiBs value.
     */
    public Long defaultUserQuotaInKiBs() {
        return this.innerProperties() == null ? null : this.innerProperties().defaultUserQuotaInKiBs();
    }

    /**
     * Set the defaultUserQuotaInKiBs property: Default user quota for volume in KiBs. If isDefaultQuotaEnabled is set,
     * the minimum value of 4 KiBs applies .
     * 
     * @param defaultUserQuotaInKiBs the defaultUserQuotaInKiBs value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withDefaultUserQuotaInKiBs(Long defaultUserQuotaInKiBs) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withDefaultUserQuotaInKiBs(defaultUserQuotaInKiBs);
        return this;
    }

    /**
     * Get the defaultGroupQuotaInKiBs property: Default group quota for volume in KiBs. If isDefaultQuotaEnabled is
     * set, the minimum value of 4 KiBs applies.
     * 
     * @return the defaultGroupQuotaInKiBs value.
     */
    public Long defaultGroupQuotaInKiBs() {
        return this.innerProperties() == null ? null : this.innerProperties().defaultGroupQuotaInKiBs();
    }

    /**
     * Set the defaultGroupQuotaInKiBs property: Default group quota for volume in KiBs. If isDefaultQuotaEnabled is
     * set, the minimum value of 4 KiBs applies.
     * 
     * @param defaultGroupQuotaInKiBs the defaultGroupQuotaInKiBs value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withDefaultGroupQuotaInKiBs(Long defaultGroupQuotaInKiBs) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withDefaultGroupQuotaInKiBs(defaultGroupQuotaInKiBs);
        return this;
    }

    /**
     * Get the maximumNumberOfFiles property: Maximum number of files allowed. Needs a service request in order to be
     * changed. Only allowed to be changed if volume quota is more than 4TiB.
     * 
     * @return the maximumNumberOfFiles value.
     */
    public Long maximumNumberOfFiles() {
        return this.innerProperties() == null ? null : this.innerProperties().maximumNumberOfFiles();
    }

    /**
     * Get the volumeGroupName property: Volume Group Name.
     * 
     * @return the volumeGroupName value.
     */
    public String volumeGroupName() {
        return this.innerProperties() == null ? null : this.innerProperties().volumeGroupName();
    }

    /**
     * Get the capacityPoolResourceId property: Pool Resource Id used in case of creating a volume through volume group.
     * 
     * @return the capacityPoolResourceId value.
     */
    public String capacityPoolResourceId() {
        return this.innerProperties() == null ? null : this.innerProperties().capacityPoolResourceId();
    }

    /**
     * Set the capacityPoolResourceId property: Pool Resource Id used in case of creating a volume through volume group.
     * 
     * @param capacityPoolResourceId the capacityPoolResourceId value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withCapacityPoolResourceId(String capacityPoolResourceId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withCapacityPoolResourceId(capacityPoolResourceId);
        return this;
    }

    /**
     * Get the proximityPlacementGroup property: Proximity placement group associated with the volume.
     * 
     * @return the proximityPlacementGroup value.
     */
    public String proximityPlacementGroup() {
        return this.innerProperties() == null ? null : this.innerProperties().proximityPlacementGroup();
    }

    /**
     * Set the proximityPlacementGroup property: Proximity placement group associated with the volume.
     * 
     * @param proximityPlacementGroup the proximityPlacementGroup value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withProximityPlacementGroup(String proximityPlacementGroup) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withProximityPlacementGroup(proximityPlacementGroup);
        return this;
    }

    /**
     * Get the t2Network property: T2 network information.
     * 
     * @return the t2Network value.
     */
    public String t2Network() {
        return this.innerProperties() == null ? null : this.innerProperties().t2Network();
    }

    /**
     * Get the volumeSpecName property: Volume spec name is the application specific designation or identifier for the
     * particular volume in a volume group for e.g. data, log.
     * 
     * @return the volumeSpecName value.
     */
    public String volumeSpecName() {
        return this.innerProperties() == null ? null : this.innerProperties().volumeSpecName();
    }

    /**
     * Set the volumeSpecName property: Volume spec name is the application specific designation or identifier for the
     * particular volume in a volume group for e.g. data, log.
     * 
     * @param volumeSpecName the volumeSpecName value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withVolumeSpecName(String volumeSpecName) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withVolumeSpecName(volumeSpecName);
        return this;
    }

    /**
     * Get the encrypted property: Specifies if the volume is encrypted or not. Only available on volumes created or
     * updated after 2022-01-01.
     * 
     * @return the encrypted value.
     */
    public Boolean encrypted() {
        return this.innerProperties() == null ? null : this.innerProperties().encrypted();
    }

    /**
     * Get the placementRules property: Application specific placement rules for the particular volume.
     * 
     * @return the placementRules value.
     */
    public List placementRules() {
        return this.innerProperties() == null ? null : this.innerProperties().placementRules();
    }

    /**
     * Set the placementRules property: Application specific placement rules for the particular volume.
     * 
     * @param placementRules the placementRules value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withPlacementRules(List placementRules) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withPlacementRules(placementRules);
        return this;
    }

    /**
     * Get the enableSubvolumes property: Flag indicating whether subvolume operations are enabled on the volume.
     * 
     * @return the enableSubvolumes value.
     */
    public EnableSubvolumes enableSubvolumes() {
        return this.innerProperties() == null ? null : this.innerProperties().enableSubvolumes();
    }

    /**
     * Set the enableSubvolumes property: Flag indicating whether subvolume operations are enabled on the volume.
     * 
     * @param enableSubvolumes the enableSubvolumes value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withEnableSubvolumes(EnableSubvolumes enableSubvolumes) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withEnableSubvolumes(enableSubvolumes);
        return this;
    }

    /**
     * Get the provisionedAvailabilityZone property: The availability zone where the volume is provisioned. This refers
     * to the logical availability zone where the volume resides.
     * 
     * @return the provisionedAvailabilityZone value.
     */
    public String provisionedAvailabilityZone() {
        return this.innerProperties() == null ? null : this.innerProperties().provisionedAvailabilityZone();
    }

    /**
     * Get the isLargeVolume property: Specifies whether volume is a Large Volume or Regular Volume.
     * 
     * @return the isLargeVolume value.
     */
    public Boolean isLargeVolume() {
        return this.innerProperties() == null ? null : this.innerProperties().isLargeVolume();
    }

    /**
     * Set the isLargeVolume property: Specifies whether volume is a Large Volume or Regular Volume.
     * 
     * @param isLargeVolume the isLargeVolume value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withIsLargeVolume(Boolean isLargeVolume) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withIsLargeVolume(isLargeVolume);
        return this;
    }

    /**
     * Get the originatingResourceId property: Id of the snapshot or backup that the volume is restored from.
     * 
     * @return the originatingResourceId value.
     */
    public String originatingResourceId() {
        return this.innerProperties() == null ? null : this.innerProperties().originatingResourceId();
    }

    /**
     * Get the inheritedSizeInBytes property: Space shared by short term clone volume with parent volume in bytes.
     * 
     * @return the inheritedSizeInBytes value.
     */
    public Long inheritedSizeInBytes() {
        return this.innerProperties() == null ? null : this.innerProperties().inheritedSizeInBytes();
    }

    /**
     * Get the language property: Language supported for volume.
     * 
     * @return the language value.
     */
    public VolumeLanguage language() {
        return this.innerProperties() == null ? null : this.innerProperties().language();
    }

    /**
     * Set the language property: Language supported for volume.
     * 
     * @param language the language value to set.
     * @return the VolumeGroupVolumeProperties object itself.
     */
    public VolumeGroupVolumeProperties withLanguage(VolumeLanguage language) {
        if (this.innerProperties() == null) {
            this.innerProperties = new VolumeProperties();
        }
        this.innerProperties().withLanguage(language);
        return this;
    }

    /**
     * Validates the instance.
     * 
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
        if (innerProperties() == null) {
            throw LOGGER.atError()
                .log(new IllegalArgumentException(
                    "Missing required property innerProperties in model VolumeGroupVolumeProperties"));
        } else {
            innerProperties().validate();
        }
    }

    private static final ClientLogger LOGGER = new ClientLogger(VolumeGroupVolumeProperties.class);

    /**
     * {@inheritDoc}
     */
    @Override
    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
        jsonWriter.writeStartObject();
        jsonWriter.writeJsonField("properties", this.innerProperties);
        jsonWriter.writeStringField("name", this.name);
        jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element));
        jsonWriter.writeArrayField("zones", this.zones, (writer, element) -> writer.writeString(element));
        return jsonWriter.writeEndObject();
    }

    /**
     * Reads an instance of VolumeGroupVolumeProperties from the JsonReader.
     * 
     * @param jsonReader The JsonReader being read.
     * @return An instance of VolumeGroupVolumeProperties if the JsonReader was pointing to an instance of it, or null
     * if it was pointing to JSON null.
     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
     * @throws IOException If an error occurs while reading the VolumeGroupVolumeProperties.
     */
    public static VolumeGroupVolumeProperties fromJson(JsonReader jsonReader) throws IOException {
        return jsonReader.readObject(reader -> {
            VolumeGroupVolumeProperties deserializedVolumeGroupVolumeProperties = new VolumeGroupVolumeProperties();
            while (reader.nextToken() != JsonToken.END_OBJECT) {
                String fieldName = reader.getFieldName();
                reader.nextToken();

                if ("id".equals(fieldName)) {
                    deserializedVolumeGroupVolumeProperties.id = reader.getString();
                } else if ("type".equals(fieldName)) {
                    deserializedVolumeGroupVolumeProperties.type = reader.getString();
                } else if ("properties".equals(fieldName)) {
                    deserializedVolumeGroupVolumeProperties.innerProperties = VolumeProperties.fromJson(reader);
                } else if ("name".equals(fieldName)) {
                    deserializedVolumeGroupVolumeProperties.name = reader.getString();
                } else if ("tags".equals(fieldName)) {
                    Map tags = reader.readMap(reader1 -> reader1.getString());
                    deserializedVolumeGroupVolumeProperties.tags = tags;
                } else if ("zones".equals(fieldName)) {
                    List zones = reader.readArray(reader1 -> reader1.getString());
                    deserializedVolumeGroupVolumeProperties.zones = zones;
                } else {
                    reader.skipChildren();
                }
            }

            return deserializedVolumeGroupVolumeProperties;
        });
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy