// *** 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.managedlustre.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final FileSystemHsmSettingArgs Empty = new FileSystemHsmSettingArgs();

    /**
     * The resource ID of the storage container that is used for hydrating the namespace and archiving from the namespace. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="containerId", required=true)
    private Output<String> containerId;

    /**
     * @return The resource ID of the storage container that is used for hydrating the namespace and archiving from the namespace. Changing this forces a new resource to be created.
     * 
     */
    public Output<String> containerId() {
        return this.containerId;
    }

    /**
     * The import prefix for the Azure Managed Lustre File System. Only blobs in the non-logging container that start with this path/prefix get hydrated into the cluster namespace. Changing this forces a new resource to be created.
     * 
     * &gt; **NOTE:** The roles `Contributor` and `Storage Blob Data Contributor` must be added to the Service Principal `HPC Cache Resource Provider` for the Storage Account. See official docs for more information.
     * 
     */
    @Import(name="importPrefix")
    private @Nullable Output<String> importPrefix;

    /**
     * @return The import prefix for the Azure Managed Lustre File System. Only blobs in the non-logging container that start with this path/prefix get hydrated into the cluster namespace. Changing this forces a new resource to be created.
     * 
     * &gt; **NOTE:** The roles `Contributor` and `Storage Blob Data Contributor` must be added to the Service Principal `HPC Cache Resource Provider` for the Storage Account. See official docs for more information.
     * 
     */
    public Optional<Output<String>> importPrefix() {
        return Optional.ofNullable(this.importPrefix);
    }

    /**
     * The resource ID of the storage container that is used for logging events and errors. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="loggingContainerId", required=true)
    private Output<String> loggingContainerId;

    /**
     * @return The resource ID of the storage container that is used for logging events and errors. Changing this forces a new resource to be created.
     * 
     */
    public Output<String> loggingContainerId() {
        return this.loggingContainerId;
    }

    private FileSystemHsmSettingArgs() {}

    private FileSystemHsmSettingArgs(FileSystemHsmSettingArgs $) {
        this.containerId = $.containerId;
        this.importPrefix = $.importPrefix;
        this.loggingContainerId = $.loggingContainerId;
    }

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

    public static final class Builder {
        private FileSystemHsmSettingArgs $;

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

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

        /**
         * @param containerId The resource ID of the storage container that is used for hydrating the namespace and archiving from the namespace. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder containerId(Output<String> containerId) {
            $.containerId = containerId;
            return this;
        }

        /**
         * @param containerId The resource ID of the storage container that is used for hydrating the namespace and archiving from the namespace. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder containerId(String containerId) {
            return containerId(Output.of(containerId));
        }

        /**
         * @param importPrefix The import prefix for the Azure Managed Lustre File System. Only blobs in the non-logging container that start with this path/prefix get hydrated into the cluster namespace. Changing this forces a new resource to be created.
         * 
         * &gt; **NOTE:** The roles `Contributor` and `Storage Blob Data Contributor` must be added to the Service Principal `HPC Cache Resource Provider` for the Storage Account. See official docs for more information.
         * 
         * @return builder
         * 
         */
        public Builder importPrefix(@Nullable Output<String> importPrefix) {
            $.importPrefix = importPrefix;
            return this;
        }

        /**
         * @param importPrefix The import prefix for the Azure Managed Lustre File System. Only blobs in the non-logging container that start with this path/prefix get hydrated into the cluster namespace. Changing this forces a new resource to be created.
         * 
         * &gt; **NOTE:** The roles `Contributor` and `Storage Blob Data Contributor` must be added to the Service Principal `HPC Cache Resource Provider` for the Storage Account. See official docs for more information.
         * 
         * @return builder
         * 
         */
        public Builder importPrefix(String importPrefix) {
            return importPrefix(Output.of(importPrefix));
        }

        /**
         * @param loggingContainerId The resource ID of the storage container that is used for logging events and errors. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder loggingContainerId(Output<String> loggingContainerId) {
            $.loggingContainerId = loggingContainerId;
            return this;
        }

        /**
         * @param loggingContainerId The resource ID of the storage container that is used for logging events and errors. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder loggingContainerId(String loggingContainerId) {
            return loggingContainerId(Output.of(loggingContainerId));
        }

        public FileSystemHsmSettingArgs build() {
            $.containerId = Objects.requireNonNull($.containerId, "expected parameter 'containerId' to be non-null");
            $.loggingContainerId = Objects.requireNonNull($.loggingContainerId, "expected parameter 'loggingContainerId' to be non-null");
            return $;
        }
    }

}
