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

com.pulumi.azure.netapp.outputs.VolumeGroupSapHanaVolume Maven / Gradle / Ivy

// *** 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.azure.netapp.outputs;

import com.pulumi.azure.netapp.outputs.VolumeGroupSapHanaVolumeDataProtectionReplication;
import com.pulumi.azure.netapp.outputs.VolumeGroupSapHanaVolumeDataProtectionSnapshotPolicy;
import com.pulumi.azure.netapp.outputs.VolumeGroupSapHanaVolumeExportPolicyRule;
import com.pulumi.core.annotations.CustomType;
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;

@CustomType
public final class VolumeGroupSapHanaVolume {
    /**
     * @return The ID of the Capacity Pool. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private String capacityPoolId;
    /**
     * @return A `data_protection_replication` block as defined below. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private @Nullable VolumeGroupSapHanaVolumeDataProtectionReplication dataProtectionReplication;
    /**
     * @return A `data_protection_snapshot_policy` block as defined below.
     * 
     */
    private @Nullable VolumeGroupSapHanaVolumeDataProtectionSnapshotPolicy dataProtectionSnapshotPolicy;
    /**
     * @return One or more `export_policy_rule` blocks as defined below.
     * 
     */
    private List exportPolicyRules;
    /**
     * @return The ID of the Application Volume Group.
     * 
     */
    private @Nullable String id;
    private @Nullable List mountIpAddresses;
    /**
     * @return The name which should be used for this volume. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private String name;
    /**
     * @return The target volume protocol expressed as a list. Changing this forces a new Application Volume Group to be created and data will be lost. Supported values for Application Volume Group include `NFSv3` or `NFSv4.1`, multi-protocol is not supported and there are certain rules on which protocol is supporteed per volume spec, please check [Configure application volume groups for the SAP HANA REST API](https://learn.microsoft.com/en-us/azure/azure-netapp-files/configure-application-volume-group-sap-hana-api) document for details.
     * 
     */
    private String protocols;
    /**
     * @return The ID of the proximity placement group. Changing this forces a new Application Volume Group to be created and data will be lost. For SAP-HANA application, it is required to have PPG enabled so Azure NetApp Files can pin the volumes next to your compute resources, please check [Requirements and considerations for application volume group for SAP HANA](https://learn.microsoft.com/en-us/azure/azure-netapp-files/application-volume-group-considerations) for details and other requirements.
     * 
     */
    private @Nullable String proximityPlacementGroupId;
    /**
     * @return Volume security style. Possible values are `ntfs` and `unix`. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private String securityStyle;
    /**
     * @return Volume security style. Possible values are `Premium`, `Standard` and `Ultra`. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private String serviceLevel;
    /**
     * @return Specifies whether the .snapshot (NFS clients) path of a volume is visible. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private Boolean snapshotDirectoryVisible;
    /**
     * @return The maximum Storage Quota allowed for a file system in Gigabytes.
     * 
     */
    private Integer storageQuotaInGb;
    /**
     * @return The ID of the Subnet the NetApp Volume resides in, which must have the `Microsoft.NetApp/volumes` delegation. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private String subnetId;
    /**
     * @return A mapping of tags which should be assigned to the Application Volume Group.
     * 
     */
    private @Nullable Map tags;
    /**
     * @return Throughput of this volume in Mibps.
     * 
     */
    private Double throughputInMibps;
    /**
     * @return A unique file path for the volume. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private String volumePath;
    /**
     * @return Volume specification name. Possible values are `data`, `log`, `shared`, `data-backup` and `log-backup`. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    private String volumeSpecName;

    private VolumeGroupSapHanaVolume() {}
    /**
     * @return The ID of the Capacity Pool. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public String capacityPoolId() {
        return this.capacityPoolId;
    }
    /**
     * @return A `data_protection_replication` block as defined below. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public Optional dataProtectionReplication() {
        return Optional.ofNullable(this.dataProtectionReplication);
    }
    /**
     * @return A `data_protection_snapshot_policy` block as defined below.
     * 
     */
    public Optional dataProtectionSnapshotPolicy() {
        return Optional.ofNullable(this.dataProtectionSnapshotPolicy);
    }
    /**
     * @return One or more `export_policy_rule` blocks as defined below.
     * 
     */
    public List exportPolicyRules() {
        return this.exportPolicyRules;
    }
    /**
     * @return The ID of the Application Volume Group.
     * 
     */
    public Optional id() {
        return Optional.ofNullable(this.id);
    }
    public List mountIpAddresses() {
        return this.mountIpAddresses == null ? List.of() : this.mountIpAddresses;
    }
    /**
     * @return The name which should be used for this volume. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public String name() {
        return this.name;
    }
    /**
     * @return The target volume protocol expressed as a list. Changing this forces a new Application Volume Group to be created and data will be lost. Supported values for Application Volume Group include `NFSv3` or `NFSv4.1`, multi-protocol is not supported and there are certain rules on which protocol is supporteed per volume spec, please check [Configure application volume groups for the SAP HANA REST API](https://learn.microsoft.com/en-us/azure/azure-netapp-files/configure-application-volume-group-sap-hana-api) document for details.
     * 
     */
    public String protocols() {
        return this.protocols;
    }
    /**
     * @return The ID of the proximity placement group. Changing this forces a new Application Volume Group to be created and data will be lost. For SAP-HANA application, it is required to have PPG enabled so Azure NetApp Files can pin the volumes next to your compute resources, please check [Requirements and considerations for application volume group for SAP HANA](https://learn.microsoft.com/en-us/azure/azure-netapp-files/application-volume-group-considerations) for details and other requirements.
     * 
     */
    public Optional proximityPlacementGroupId() {
        return Optional.ofNullable(this.proximityPlacementGroupId);
    }
    /**
     * @return Volume security style. Possible values are `ntfs` and `unix`. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public String securityStyle() {
        return this.securityStyle;
    }
    /**
     * @return Volume security style. Possible values are `Premium`, `Standard` and `Ultra`. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public String serviceLevel() {
        return this.serviceLevel;
    }
    /**
     * @return Specifies whether the .snapshot (NFS clients) path of a volume is visible. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public Boolean snapshotDirectoryVisible() {
        return this.snapshotDirectoryVisible;
    }
    /**
     * @return The maximum Storage Quota allowed for a file system in Gigabytes.
     * 
     */
    public Integer storageQuotaInGb() {
        return this.storageQuotaInGb;
    }
    /**
     * @return The ID of the Subnet the NetApp Volume resides in, which must have the `Microsoft.NetApp/volumes` delegation. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public String subnetId() {
        return this.subnetId;
    }
    /**
     * @return A mapping of tags which should be assigned to the Application Volume Group.
     * 
     */
    public Map tags() {
        return this.tags == null ? Map.of() : this.tags;
    }
    /**
     * @return Throughput of this volume in Mibps.
     * 
     */
    public Double throughputInMibps() {
        return this.throughputInMibps;
    }
    /**
     * @return A unique file path for the volume. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public String volumePath() {
        return this.volumePath;
    }
    /**
     * @return Volume specification name. Possible values are `data`, `log`, `shared`, `data-backup` and `log-backup`. Changing this forces a new Application Volume Group to be created and data will be lost.
     * 
     */
    public String volumeSpecName() {
        return this.volumeSpecName;
    }

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

    public static Builder builder(VolumeGroupSapHanaVolume defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String capacityPoolId;
        private @Nullable VolumeGroupSapHanaVolumeDataProtectionReplication dataProtectionReplication;
        private @Nullable VolumeGroupSapHanaVolumeDataProtectionSnapshotPolicy dataProtectionSnapshotPolicy;
        private List exportPolicyRules;
        private @Nullable String id;
        private @Nullable List mountIpAddresses;
        private String name;
        private String protocols;
        private @Nullable String proximityPlacementGroupId;
        private String securityStyle;
        private String serviceLevel;
        private Boolean snapshotDirectoryVisible;
        private Integer storageQuotaInGb;
        private String subnetId;
        private @Nullable Map tags;
        private Double throughputInMibps;
        private String volumePath;
        private String volumeSpecName;
        public Builder() {}
        public Builder(VolumeGroupSapHanaVolume defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.capacityPoolId = defaults.capacityPoolId;
    	      this.dataProtectionReplication = defaults.dataProtectionReplication;
    	      this.dataProtectionSnapshotPolicy = defaults.dataProtectionSnapshotPolicy;
    	      this.exportPolicyRules = defaults.exportPolicyRules;
    	      this.id = defaults.id;
    	      this.mountIpAddresses = defaults.mountIpAddresses;
    	      this.name = defaults.name;
    	      this.protocols = defaults.protocols;
    	      this.proximityPlacementGroupId = defaults.proximityPlacementGroupId;
    	      this.securityStyle = defaults.securityStyle;
    	      this.serviceLevel = defaults.serviceLevel;
    	      this.snapshotDirectoryVisible = defaults.snapshotDirectoryVisible;
    	      this.storageQuotaInGb = defaults.storageQuotaInGb;
    	      this.subnetId = defaults.subnetId;
    	      this.tags = defaults.tags;
    	      this.throughputInMibps = defaults.throughputInMibps;
    	      this.volumePath = defaults.volumePath;
    	      this.volumeSpecName = defaults.volumeSpecName;
        }

        @CustomType.Setter
        public Builder capacityPoolId(String capacityPoolId) {
            if (capacityPoolId == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "capacityPoolId");
            }
            this.capacityPoolId = capacityPoolId;
            return this;
        }
        @CustomType.Setter
        public Builder dataProtectionReplication(@Nullable VolumeGroupSapHanaVolumeDataProtectionReplication dataProtectionReplication) {

            this.dataProtectionReplication = dataProtectionReplication;
            return this;
        }
        @CustomType.Setter
        public Builder dataProtectionSnapshotPolicy(@Nullable VolumeGroupSapHanaVolumeDataProtectionSnapshotPolicy dataProtectionSnapshotPolicy) {

            this.dataProtectionSnapshotPolicy = dataProtectionSnapshotPolicy;
            return this;
        }
        @CustomType.Setter
        public Builder exportPolicyRules(List exportPolicyRules) {
            if (exportPolicyRules == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "exportPolicyRules");
            }
            this.exportPolicyRules = exportPolicyRules;
            return this;
        }
        public Builder exportPolicyRules(VolumeGroupSapHanaVolumeExportPolicyRule... exportPolicyRules) {
            return exportPolicyRules(List.of(exportPolicyRules));
        }
        @CustomType.Setter
        public Builder id(@Nullable String id) {

            this.id = id;
            return this;
        }
        @CustomType.Setter
        public Builder mountIpAddresses(@Nullable List mountIpAddresses) {

            this.mountIpAddresses = mountIpAddresses;
            return this;
        }
        public Builder mountIpAddresses(String... mountIpAddresses) {
            return mountIpAddresses(List.of(mountIpAddresses));
        }
        @CustomType.Setter
        public Builder name(String name) {
            if (name == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "name");
            }
            this.name = name;
            return this;
        }
        @CustomType.Setter
        public Builder protocols(String protocols) {
            if (protocols == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "protocols");
            }
            this.protocols = protocols;
            return this;
        }
        @CustomType.Setter
        public Builder proximityPlacementGroupId(@Nullable String proximityPlacementGroupId) {

            this.proximityPlacementGroupId = proximityPlacementGroupId;
            return this;
        }
        @CustomType.Setter
        public Builder securityStyle(String securityStyle) {
            if (securityStyle == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "securityStyle");
            }
            this.securityStyle = securityStyle;
            return this;
        }
        @CustomType.Setter
        public Builder serviceLevel(String serviceLevel) {
            if (serviceLevel == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "serviceLevel");
            }
            this.serviceLevel = serviceLevel;
            return this;
        }
        @CustomType.Setter
        public Builder snapshotDirectoryVisible(Boolean snapshotDirectoryVisible) {
            if (snapshotDirectoryVisible == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "snapshotDirectoryVisible");
            }
            this.snapshotDirectoryVisible = snapshotDirectoryVisible;
            return this;
        }
        @CustomType.Setter
        public Builder storageQuotaInGb(Integer storageQuotaInGb) {
            if (storageQuotaInGb == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "storageQuotaInGb");
            }
            this.storageQuotaInGb = storageQuotaInGb;
            return this;
        }
        @CustomType.Setter
        public Builder subnetId(String subnetId) {
            if (subnetId == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "subnetId");
            }
            this.subnetId = subnetId;
            return this;
        }
        @CustomType.Setter
        public Builder tags(@Nullable Map tags) {

            this.tags = tags;
            return this;
        }
        @CustomType.Setter
        public Builder throughputInMibps(Double throughputInMibps) {
            if (throughputInMibps == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "throughputInMibps");
            }
            this.throughputInMibps = throughputInMibps;
            return this;
        }
        @CustomType.Setter
        public Builder volumePath(String volumePath) {
            if (volumePath == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "volumePath");
            }
            this.volumePath = volumePath;
            return this;
        }
        @CustomType.Setter
        public Builder volumeSpecName(String volumeSpecName) {
            if (volumeSpecName == null) {
              throw new MissingRequiredPropertyException("VolumeGroupSapHanaVolume", "volumeSpecName");
            }
            this.volumeSpecName = volumeSpecName;
            return this;
        }
        public VolumeGroupSapHanaVolume build() {
            final var _resultValue = new VolumeGroupSapHanaVolume();
            _resultValue.capacityPoolId = capacityPoolId;
            _resultValue.dataProtectionReplication = dataProtectionReplication;
            _resultValue.dataProtectionSnapshotPolicy = dataProtectionSnapshotPolicy;
            _resultValue.exportPolicyRules = exportPolicyRules;
            _resultValue.id = id;
            _resultValue.mountIpAddresses = mountIpAddresses;
            _resultValue.name = name;
            _resultValue.protocols = protocols;
            _resultValue.proximityPlacementGroupId = proximityPlacementGroupId;
            _resultValue.securityStyle = securityStyle;
            _resultValue.serviceLevel = serviceLevel;
            _resultValue.snapshotDirectoryVisible = snapshotDirectoryVisible;
            _resultValue.storageQuotaInGb = storageQuotaInGb;
            _resultValue.subnetId = subnetId;
            _resultValue.tags = tags;
            _resultValue.throughputInMibps = throughputInMibps;
            _resultValue.volumePath = volumePath;
            _resultValue.volumeSpecName = volumeSpecName;
            return _resultValue;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy