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

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


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

    public static final KubernetesClusterStorageProfileArgs Empty = new KubernetesClusterStorageProfileArgs();

    /**
     * Is the Blob CSI driver enabled? Defaults to `false`.
     * 
     */
    @Import(name="blobDriverEnabled")
    private @Nullable Output<Boolean> blobDriverEnabled;

    /**
     * @return Is the Blob CSI driver enabled? Defaults to `false`.
     * 
     */
    public Optional<Output<Boolean>> blobDriverEnabled() {
        return Optional.ofNullable(this.blobDriverEnabled);
    }

    /**
     * Is the Disk CSI driver enabled? Defaults to `true`.
     * 
     */
    @Import(name="diskDriverEnabled")
    private @Nullable Output<Boolean> diskDriverEnabled;

    /**
     * @return Is the Disk CSI driver enabled? Defaults to `true`.
     * 
     */
    public Optional<Output<Boolean>> diskDriverEnabled() {
        return Optional.ofNullable(this.diskDriverEnabled);
    }

    /**
     * Disk CSI Driver version to be used. Possible values are `v1` and `v2`. Defaults to `v1`.
     * 
     * &gt; **Note:** `Azure Disk CSI driver v2` is currently in [Public Preview](https://azure.microsoft.com/en-us/updates/public-preview-azure-disk-csi-driver-v2-in-aks/) on an opt-in basis. To use it, the feature `EnableAzureDiskCSIDriverV2` for namespace `Microsoft.ContainerService` must be requested.
     * 
     */
    @Import(name="diskDriverVersion")
    private @Nullable Output<String> diskDriverVersion;

    /**
     * @return Disk CSI Driver version to be used. Possible values are `v1` and `v2`. Defaults to `v1`.
     * 
     * &gt; **Note:** `Azure Disk CSI driver v2` is currently in [Public Preview](https://azure.microsoft.com/en-us/updates/public-preview-azure-disk-csi-driver-v2-in-aks/) on an opt-in basis. To use it, the feature `EnableAzureDiskCSIDriverV2` for namespace `Microsoft.ContainerService` must be requested.
     * 
     */
    public Optional<Output<String>> diskDriverVersion() {
        return Optional.ofNullable(this.diskDriverVersion);
    }

    /**
     * Is the File CSI driver enabled? Defaults to `true`.
     * 
     */
    @Import(name="fileDriverEnabled")
    private @Nullable Output<Boolean> fileDriverEnabled;

    /**
     * @return Is the File CSI driver enabled? Defaults to `true`.
     * 
     */
    public Optional<Output<Boolean>> fileDriverEnabled() {
        return Optional.ofNullable(this.fileDriverEnabled);
    }

    /**
     * Is the Snapshot Controller enabled? Defaults to `true`.
     * 
     */
    @Import(name="snapshotControllerEnabled")
    private @Nullable Output<Boolean> snapshotControllerEnabled;

    /**
     * @return Is the Snapshot Controller enabled? Defaults to `true`.
     * 
     */
    public Optional<Output<Boolean>> snapshotControllerEnabled() {
        return Optional.ofNullable(this.snapshotControllerEnabled);
    }

    private KubernetesClusterStorageProfileArgs() {}

    private KubernetesClusterStorageProfileArgs(KubernetesClusterStorageProfileArgs $) {
        this.blobDriverEnabled = $.blobDriverEnabled;
        this.diskDriverEnabled = $.diskDriverEnabled;
        this.diskDriverVersion = $.diskDriverVersion;
        this.fileDriverEnabled = $.fileDriverEnabled;
        this.snapshotControllerEnabled = $.snapshotControllerEnabled;
    }

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

    public static final class Builder {
        private KubernetesClusterStorageProfileArgs $;

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

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

        /**
         * @param blobDriverEnabled Is the Blob CSI driver enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder blobDriverEnabled(@Nullable Output<Boolean> blobDriverEnabled) {
            $.blobDriverEnabled = blobDriverEnabled;
            return this;
        }

        /**
         * @param blobDriverEnabled Is the Blob CSI driver enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder blobDriverEnabled(Boolean blobDriverEnabled) {
            return blobDriverEnabled(Output.of(blobDriverEnabled));
        }

        /**
         * @param diskDriverEnabled Is the Disk CSI driver enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder diskDriverEnabled(@Nullable Output<Boolean> diskDriverEnabled) {
            $.diskDriverEnabled = diskDriverEnabled;
            return this;
        }

        /**
         * @param diskDriverEnabled Is the Disk CSI driver enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder diskDriverEnabled(Boolean diskDriverEnabled) {
            return diskDriverEnabled(Output.of(diskDriverEnabled));
        }

        /**
         * @param diskDriverVersion Disk CSI Driver version to be used. Possible values are `v1` and `v2`. Defaults to `v1`.
         * 
         * &gt; **Note:** `Azure Disk CSI driver v2` is currently in [Public Preview](https://azure.microsoft.com/en-us/updates/public-preview-azure-disk-csi-driver-v2-in-aks/) on an opt-in basis. To use it, the feature `EnableAzureDiskCSIDriverV2` for namespace `Microsoft.ContainerService` must be requested.
         * 
         * @return builder
         * 
         */
        public Builder diskDriverVersion(@Nullable Output<String> diskDriverVersion) {
            $.diskDriverVersion = diskDriverVersion;
            return this;
        }

        /**
         * @param diskDriverVersion Disk CSI Driver version to be used. Possible values are `v1` and `v2`. Defaults to `v1`.
         * 
         * &gt; **Note:** `Azure Disk CSI driver v2` is currently in [Public Preview](https://azure.microsoft.com/en-us/updates/public-preview-azure-disk-csi-driver-v2-in-aks/) on an opt-in basis. To use it, the feature `EnableAzureDiskCSIDriverV2` for namespace `Microsoft.ContainerService` must be requested.
         * 
         * @return builder
         * 
         */
        public Builder diskDriverVersion(String diskDriverVersion) {
            return diskDriverVersion(Output.of(diskDriverVersion));
        }

        /**
         * @param fileDriverEnabled Is the File CSI driver enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder fileDriverEnabled(@Nullable Output<Boolean> fileDriverEnabled) {
            $.fileDriverEnabled = fileDriverEnabled;
            return this;
        }

        /**
         * @param fileDriverEnabled Is the File CSI driver enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder fileDriverEnabled(Boolean fileDriverEnabled) {
            return fileDriverEnabled(Output.of(fileDriverEnabled));
        }

        /**
         * @param snapshotControllerEnabled Is the Snapshot Controller enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder snapshotControllerEnabled(@Nullable Output<Boolean> snapshotControllerEnabled) {
            $.snapshotControllerEnabled = snapshotControllerEnabled;
            return this;
        }

        /**
         * @param snapshotControllerEnabled Is the Snapshot Controller enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder snapshotControllerEnabled(Boolean snapshotControllerEnabled) {
            return snapshotControllerEnabled(Output.of(snapshotControllerEnabled));
        }

        public KubernetesClusterStorageProfileArgs build() {
            return $;
        }
    }

}
