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

com.azure.resourcemanager.netapp.fluent.models.VolumeInner 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-preview-2024-07-01-preview.

There is a newer version: 1.6.0-beta.1
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.fluent.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.annotation.JsonFlatten;
import com.azure.core.management.Resource;
import com.azure.core.util.logging.ClientLogger;
import com.azure.resourcemanager.netapp.models.MountTargetProperties;
import com.azure.resourcemanager.netapp.models.SecurityStyle;
import com.azure.resourcemanager.netapp.models.ServiceLevel;
import com.azure.resourcemanager.netapp.models.VolumePropertiesDataProtection;
import com.azure.resourcemanager.netapp.models.VolumePropertiesExportPolicy;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import java.util.Map;

/** Volume resource. */
@JsonFlatten
@Fluent
public class VolumeInner extends Resource {
    @JsonIgnore private final ClientLogger logger = new ClientLogger(VolumeInner.class);

    /*
     * Unique FileSystem Identifier.
     */
    @JsonProperty(value = "properties.fileSystemId", access = JsonProperty.Access.WRITE_ONLY)
    private String fileSystemId;

    /*
     * A unique file path for the volume. Used when creating mount targets
     */
    @JsonProperty(value = "properties.creationToken", required = true)
    private String creationToken;

    /*
     * The service level of the file system
     */
    @JsonProperty(value = "properties.serviceLevel")
    private ServiceLevel serviceLevel;

    /*
     * 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. Specified in bytes.
     */
    @JsonProperty(value = "properties.usageThreshold", required = true)
    private long usageThreshold;

    /*
     * Set of export policy rules
     */
    @JsonProperty(value = "properties.exportPolicy")
    private VolumePropertiesExportPolicy exportPolicy;

    /*
     * Set of protocol types, default NFSv3, CIFS for SMB protocol
     */
    @JsonProperty(value = "properties.protocolTypes")
    private List protocolTypes;

    /*
     * Azure lifecycle management
     */
    @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
    private String provisioningState;

    /*
     * UUID v4 or resource identifier used to identify the Snapshot.
     */
    @JsonProperty(value = "properties.snapshotId")
    private String snapshotId;

    /*
     * UUID v4 or resource identifier used to identify the Backup.
     */
    @JsonProperty(value = "properties.backupId")
    private String backupId;

    /*
     * Unique Baremetal Tenant Identifier.
     */
    @JsonProperty(value = "properties.baremetalTenantId", access = JsonProperty.Access.WRITE_ONLY)
    private String baremetalTenantId;

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

    /*
     * List of mount targets
     */
    @JsonProperty(value = "properties.mountTargets", access = JsonProperty.Access.WRITE_ONLY)
    private List mountTargets;

    /*
     * What type of volume is this
     */
    @JsonProperty(value = "properties.volumeType")
    private String volumeType;

    /*
     * DataProtection type volumes include an object containing details of the
     * replication
     */
    @JsonProperty(value = "properties.dataProtection")
    private VolumePropertiesDataProtection dataProtection;

    /*
     * Restoring
     */
    @JsonProperty(value = "properties.isRestoring")
    private Boolean isRestoring;

    /*
     * If enabled (true) the volume will contain a read-only snapshot directory
     * which provides access to each of the volume's snapshots (default to
     * true).
     */
    @JsonProperty(value = "properties.snapshotDirectoryVisible")
    private Boolean snapshotDirectoryVisible;

    /*
     * Describe if a volume is KerberosEnabled. To be use with swagger version
     * 2020-05-01 or later
     */
    @JsonProperty(value = "properties.kerberosEnabled")
    private Boolean kerberosEnabled;

    /*
     * The security style of volume, default unix, defaults to ntfs for dual
     * protocol or CIFS protocol
     */
    @JsonProperty(value = "properties.securityStyle")
    private SecurityStyle securityStyle;

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

    /*
     * Enables continuously available share property for smb volume. Only
     * applicable for SMB volume
     */
    @JsonProperty(value = "properties.smbContinuouslyAvailable")
    private Boolean smbContinuouslyAvailable;

    /*
     * Maximum throughput in Mibps that can be achieved by this volume
     */
    @JsonProperty(value = "properties.throughputMibps")
    private Float throughputMibps;

    /*
     * Encryption Key Source. Possible values are: 'Microsoft.NetApp'
     */
    @JsonProperty(value = "properties.encryptionKeySource")
    private String encryptionKeySource;

    /*
     * Specifies whether LDAP is enabled or not for a given NFS volume.
     */
    @JsonProperty(value = "properties.ldapEnabled")
    private Boolean ldapEnabled;

    /*
     * Specifies whether Cool Access(tiering) is enabled for the volume.
     */
    @JsonProperty(value = "properties.coolAccess")
    private Boolean coolAccess;

    /*
     * Specifies the number of days after which data that is not accessed by
     * clients will be tiered.
     */
    @JsonProperty(value = "properties.coolnessPeriod")
    private Integer coolnessPeriod;

    /*
     * 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.
     */
    @JsonProperty(value = "properties.unixPermissions")
    private String unixPermissions;

    /**
     * Get the fileSystemId property: Unique FileSystem Identifier.
     *
     * @return the fileSystemId value.
     */
    public String fileSystemId() {
        return this.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.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 VolumeInner object itself.
     */
    public VolumeInner withCreationToken(String creationToken) {
        this.creationToken = creationToken;
        return this;
    }

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

    /**
     * Set the serviceLevel property: The service level of the file system.
     *
     * @param serviceLevel the serviceLevel value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withServiceLevel(ServiceLevel serviceLevel) {
        this.serviceLevel = 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. Minimum size is 100 GiB. Upper limit is 100TiB. Specified in bytes.
     *
     * @return the usageThreshold value.
     */
    public long usageThreshold() {
        return this.usageThreshold;
    }

    /**
     * Set the usageThreshold property: 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. Specified in bytes.
     *
     * @param usageThreshold the usageThreshold value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withUsageThreshold(long usageThreshold) {
        this.usageThreshold = usageThreshold;
        return this;
    }

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

    /**
     * Set the exportPolicy property: Set of export policy rules.
     *
     * @param exportPolicy the exportPolicy value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withExportPolicy(VolumePropertiesExportPolicy exportPolicy) {
        this.exportPolicy = 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.protocolTypes;
    }

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

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

    /**
     * Get the snapshotId property: UUID v4 or resource identifier used to identify the Snapshot.
     *
     * @return the snapshotId value.
     */
    public String snapshotId() {
        return this.snapshotId;
    }

    /**
     * Set the snapshotId property: UUID v4 or resource identifier used to identify the Snapshot.
     *
     * @param snapshotId the snapshotId value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withSnapshotId(String snapshotId) {
        this.snapshotId = snapshotId;
        return this;
    }

    /**
     * Get the backupId property: UUID v4 or resource identifier used to identify the Backup.
     *
     * @return the backupId value.
     */
    public String backupId() {
        return this.backupId;
    }

    /**
     * Set the backupId property: UUID v4 or resource identifier used to identify the Backup.
     *
     * @param backupId the backupId value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withBackupId(String backupId) {
        this.backupId = backupId;
        return this;
    }

    /**
     * Get the baremetalTenantId property: Unique Baremetal Tenant Identifier.
     *
     * @return the baremetalTenantId value.
     */
    public String baremetalTenantId() {
        return this.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.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 VolumeInner object itself.
     */
    public VolumeInner withSubnetId(String subnetId) {
        this.subnetId = subnetId;
        return this;
    }

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

    /**
     * Get the volumeType property: What type of volume is this.
     *
     * @return the volumeType value.
     */
    public String volumeType() {
        return this.volumeType;
    }

    /**
     * Set the volumeType property: What type of volume is this.
     *
     * @param volumeType the volumeType value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withVolumeType(String volumeType) {
        this.volumeType = 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.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 VolumeInner object itself.
     */
    public VolumeInner withDataProtection(VolumePropertiesDataProtection dataProtection) {
        this.dataProtection = dataProtection;
        return this;
    }

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

    /**
     * Set the isRestoring property: Restoring.
     *
     * @param isRestoring the isRestoring value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withIsRestoring(Boolean isRestoring) {
        this.isRestoring = 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 (default to true).
     *
     * @return the snapshotDirectoryVisible value.
     */
    public Boolean snapshotDirectoryVisible() {
        return this.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 (default to true).
     *
     * @param snapshotDirectoryVisible the snapshotDirectoryVisible value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withSnapshotDirectoryVisible(Boolean snapshotDirectoryVisible) {
        this.snapshotDirectoryVisible = 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.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 VolumeInner object itself.
     */
    public VolumeInner withKerberosEnabled(Boolean kerberosEnabled) {
        this.kerberosEnabled = 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.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 VolumeInner object itself.
     */
    public VolumeInner withSecurityStyle(SecurityStyle securityStyle) {
        this.securityStyle = 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.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 VolumeInner object itself.
     */
    public VolumeInner withSmbEncryption(Boolean smbEncryption) {
        this.smbEncryption = smbEncryption;
        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.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 VolumeInner object itself.
     */
    public VolumeInner withSmbContinuouslyAvailable(Boolean smbContinuouslyAvailable) {
        this.smbContinuouslyAvailable = smbContinuouslyAvailable;
        return this;
    }

    /**
     * Get the throughputMibps property: Maximum throughput in Mibps that can be achieved by this volume.
     *
     * @return the throughputMibps value.
     */
    public Float throughputMibps() {
        return this.throughputMibps;
    }

    /**
     * Set the throughputMibps property: Maximum throughput in Mibps that can be achieved by this volume.
     *
     * @param throughputMibps the throughputMibps value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withThroughputMibps(Float throughputMibps) {
        this.throughputMibps = throughputMibps;
        return this;
    }

    /**
     * Get the encryptionKeySource property: Encryption Key Source. Possible values are: 'Microsoft.NetApp'.
     *
     * @return the encryptionKeySource value.
     */
    public String encryptionKeySource() {
        return this.encryptionKeySource;
    }

    /**
     * Set the encryptionKeySource property: Encryption Key Source. Possible values are: 'Microsoft.NetApp'.
     *
     * @param encryptionKeySource the encryptionKeySource value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withEncryptionKeySource(String encryptionKeySource) {
        this.encryptionKeySource = encryptionKeySource;
        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.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 VolumeInner object itself.
     */
    public VolumeInner withLdapEnabled(Boolean ldapEnabled) {
        this.ldapEnabled = 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.coolAccess;
    }

    /**
     * Set the coolAccess property: Specifies whether Cool Access(tiering) is enabled for the volume.
     *
     * @param coolAccess the coolAccess value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withCoolAccess(Boolean coolAccess) {
        this.coolAccess = 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.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 VolumeInner object itself.
     */
    public VolumeInner withCoolnessPeriod(Integer coolnessPeriod) {
        this.coolnessPeriod = coolnessPeriod;
        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.
     *
     * @return the unixPermissions value.
     */
    public String unixPermissions() {
        return this.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.
     *
     * @param unixPermissions the unixPermissions value to set.
     * @return the VolumeInner object itself.
     */
    public VolumeInner withUnixPermissions(String unixPermissions) {
        this.unixPermissions = unixPermissions;
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public VolumeInner withLocation(String location) {
        super.withLocation(location);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public VolumeInner withTags(Map tags) {
        super.withTags(tags);
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
        if (creationToken() == null) {
            throw logger
                .logExceptionAsError(
                    new IllegalArgumentException("Missing required property creationToken in model VolumeInner"));
        }
        if (exportPolicy() != null) {
            exportPolicy().validate();
        }
        if (subnetId() == null) {
            throw logger
                .logExceptionAsError(
                    new IllegalArgumentException("Missing required property subnetId in model VolumeInner"));
        }
        if (mountTargets() != null) {
            mountTargets().forEach(e -> e.validate());
        }
        if (dataProtection() != null) {
            dataProtection().validate();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy