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

com.pulumi.azurenative.kubernetesruntime.StorageClassArgs Maven / Gradle / Ivy

There is a newer version: 2.78.0
Show newest version
// *** 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.azurenative.kubernetesruntime;

import com.pulumi.azurenative.kubernetesruntime.enums.AccessMode;
import com.pulumi.azurenative.kubernetesruntime.enums.DataResilienceTier;
import com.pulumi.azurenative.kubernetesruntime.enums.FailoverTier;
import com.pulumi.azurenative.kubernetesruntime.enums.PerformanceTier;
import com.pulumi.azurenative.kubernetesruntime.enums.VolumeBindingMode;
import com.pulumi.azurenative.kubernetesruntime.enums.VolumeExpansion;
import com.pulumi.azurenative.kubernetesruntime.inputs.BlobStorageClassTypePropertiesArgs;
import com.pulumi.azurenative.kubernetesruntime.inputs.NativeStorageClassTypePropertiesArgs;
import com.pulumi.azurenative.kubernetesruntime.inputs.NfsStorageClassTypePropertiesArgs;
import com.pulumi.azurenative.kubernetesruntime.inputs.RwxStorageClassTypePropertiesArgs;
import com.pulumi.azurenative.kubernetesruntime.inputs.SmbStorageClassTypePropertiesArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Double;
import java.lang.Object;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final StorageClassArgs Empty = new StorageClassArgs();

    /**
     * The access mode: [ReadWriteOnce, ReadWriteMany] or [ReadWriteOnce]
     * 
     */
    @Import(name="accessModes")
    private @Nullable Output>> accessModes;

    /**
     * @return The access mode: [ReadWriteOnce, ReadWriteMany] or [ReadWriteOnce]
     * 
     */
    public Optional>>> accessModes() {
        return Optional.ofNullable(this.accessModes);
    }

    /**
     * Volume can be expanded or not
     * 
     */
    @Import(name="allowVolumeExpansion")
    private @Nullable Output> allowVolumeExpansion;

    /**
     * @return Volume can be expanded or not
     * 
     */
    public Optional>> allowVolumeExpansion() {
        return Optional.ofNullable(this.allowVolumeExpansion);
    }

    /**
     * Allow single data node failure
     * 
     */
    @Import(name="dataResilience")
    private @Nullable Output> dataResilience;

    /**
     * @return Allow single data node failure
     * 
     */
    public Optional>> dataResilience() {
        return Optional.ofNullable(this.dataResilience);
    }

    /**
     * Failover speed: NA, Slow, Fast
     * 
     */
    @Import(name="failoverSpeed")
    private @Nullable Output> failoverSpeed;

    /**
     * @return Failover speed: NA, Slow, Fast
     * 
     */
    public Optional>> failoverSpeed() {
        return Optional.ofNullable(this.failoverSpeed);
    }

    /**
     * Limitations of the storage class
     * 
     */
    @Import(name="limitations")
    private @Nullable Output> limitations;

    /**
     * @return Limitations of the storage class
     * 
     */
    public Optional>> limitations() {
        return Optional.ofNullable(this.limitations);
    }

    /**
     * Additional mount options
     * 
     */
    @Import(name="mountOptions")
    private @Nullable Output> mountOptions;

    /**
     * @return Additional mount options
     * 
     */
    public Optional>> mountOptions() {
        return Optional.ofNullable(this.mountOptions);
    }

    /**
     * Performance tier
     * 
     */
    @Import(name="performance")
    private @Nullable Output> performance;

    /**
     * @return Performance tier
     * 
     */
    public Optional>> performance() {
        return Optional.ofNullable(this.performance);
    }

    /**
     * Selection priority when multiple storage classes meet the criteria. 0: Highest, -1: Never use
     * 
     */
    @Import(name="priority")
    private @Nullable Output priority;

    /**
     * @return Selection priority when multiple storage classes meet the criteria. 0: Highest, -1: Never use
     * 
     */
    public Optional> priority() {
        return Optional.ofNullable(this.priority);
    }

    /**
     * Provisioner name
     * 
     */
    @Import(name="provisioner")
    private @Nullable Output provisioner;

    /**
     * @return Provisioner name
     * 
     */
    public Optional> provisioner() {
        return Optional.ofNullable(this.provisioner);
    }

    /**
     * The fully qualified Azure Resource manager identifier of the resource.
     * 
     */
    @Import(name="resourceUri", required=true)
    private Output resourceUri;

    /**
     * @return The fully qualified Azure Resource manager identifier of the resource.
     * 
     */
    public Output resourceUri() {
        return this.resourceUri;
    }

    /**
     * The name of the the storage class
     * 
     */
    @Import(name="storageClassName")
    private @Nullable Output storageClassName;

    /**
     * @return The name of the the storage class
     * 
     */
    public Optional> storageClassName() {
        return Optional.ofNullable(this.storageClassName);
    }

    /**
     * Properties of the StorageClass
     * 
     */
    @Import(name="typeProperties", required=true)
    private Output typeProperties;

    /**
     * @return Properties of the StorageClass
     * 
     */
    public Output typeProperties() {
        return this.typeProperties;
    }

    /**
     * Binding mode of volumes: Immediate, WaitForFirstConsumer
     * 
     */
    @Import(name="volumeBindingMode")
    private @Nullable Output> volumeBindingMode;

    /**
     * @return Binding mode of volumes: Immediate, WaitForFirstConsumer
     * 
     */
    public Optional>> volumeBindingMode() {
        return Optional.ofNullable(this.volumeBindingMode);
    }

    private StorageClassArgs() {}

    private StorageClassArgs(StorageClassArgs $) {
        this.accessModes = $.accessModes;
        this.allowVolumeExpansion = $.allowVolumeExpansion;
        this.dataResilience = $.dataResilience;
        this.failoverSpeed = $.failoverSpeed;
        this.limitations = $.limitations;
        this.mountOptions = $.mountOptions;
        this.performance = $.performance;
        this.priority = $.priority;
        this.provisioner = $.provisioner;
        this.resourceUri = $.resourceUri;
        this.storageClassName = $.storageClassName;
        this.typeProperties = $.typeProperties;
        this.volumeBindingMode = $.volumeBindingMode;
    }

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

    public static final class Builder {
        private StorageClassArgs $;

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

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

        /**
         * @param accessModes The access mode: [ReadWriteOnce, ReadWriteMany] or [ReadWriteOnce]
         * 
         * @return builder
         * 
         */
        public Builder accessModes(@Nullable Output>> accessModes) {
            $.accessModes = accessModes;
            return this;
        }

        /**
         * @param accessModes The access mode: [ReadWriteOnce, ReadWriteMany] or [ReadWriteOnce]
         * 
         * @return builder
         * 
         */
        public Builder accessModes(List> accessModes) {
            return accessModes(Output.of(accessModes));
        }

        /**
         * @param accessModes The access mode: [ReadWriteOnce, ReadWriteMany] or [ReadWriteOnce]
         * 
         * @return builder
         * 
         */
        public Builder accessModes(Either... accessModes) {
            return accessModes(List.of(accessModes));
        }

        /**
         * @param allowVolumeExpansion Volume can be expanded or not
         * 
         * @return builder
         * 
         */
        public Builder allowVolumeExpansion(@Nullable Output> allowVolumeExpansion) {
            $.allowVolumeExpansion = allowVolumeExpansion;
            return this;
        }

        /**
         * @param allowVolumeExpansion Volume can be expanded or not
         * 
         * @return builder
         * 
         */
        public Builder allowVolumeExpansion(Either allowVolumeExpansion) {
            return allowVolumeExpansion(Output.of(allowVolumeExpansion));
        }

        /**
         * @param allowVolumeExpansion Volume can be expanded or not
         * 
         * @return builder
         * 
         */
        public Builder allowVolumeExpansion(String allowVolumeExpansion) {
            return allowVolumeExpansion(Either.ofLeft(allowVolumeExpansion));
        }

        /**
         * @param allowVolumeExpansion Volume can be expanded or not
         * 
         * @return builder
         * 
         */
        public Builder allowVolumeExpansion(VolumeExpansion allowVolumeExpansion) {
            return allowVolumeExpansion(Either.ofRight(allowVolumeExpansion));
        }

        /**
         * @param dataResilience Allow single data node failure
         * 
         * @return builder
         * 
         */
        public Builder dataResilience(@Nullable Output> dataResilience) {
            $.dataResilience = dataResilience;
            return this;
        }

        /**
         * @param dataResilience Allow single data node failure
         * 
         * @return builder
         * 
         */
        public Builder dataResilience(Either dataResilience) {
            return dataResilience(Output.of(dataResilience));
        }

        /**
         * @param dataResilience Allow single data node failure
         * 
         * @return builder
         * 
         */
        public Builder dataResilience(String dataResilience) {
            return dataResilience(Either.ofLeft(dataResilience));
        }

        /**
         * @param dataResilience Allow single data node failure
         * 
         * @return builder
         * 
         */
        public Builder dataResilience(DataResilienceTier dataResilience) {
            return dataResilience(Either.ofRight(dataResilience));
        }

        /**
         * @param failoverSpeed Failover speed: NA, Slow, Fast
         * 
         * @return builder
         * 
         */
        public Builder failoverSpeed(@Nullable Output> failoverSpeed) {
            $.failoverSpeed = failoverSpeed;
            return this;
        }

        /**
         * @param failoverSpeed Failover speed: NA, Slow, Fast
         * 
         * @return builder
         * 
         */
        public Builder failoverSpeed(Either failoverSpeed) {
            return failoverSpeed(Output.of(failoverSpeed));
        }

        /**
         * @param failoverSpeed Failover speed: NA, Slow, Fast
         * 
         * @return builder
         * 
         */
        public Builder failoverSpeed(String failoverSpeed) {
            return failoverSpeed(Either.ofLeft(failoverSpeed));
        }

        /**
         * @param failoverSpeed Failover speed: NA, Slow, Fast
         * 
         * @return builder
         * 
         */
        public Builder failoverSpeed(FailoverTier failoverSpeed) {
            return failoverSpeed(Either.ofRight(failoverSpeed));
        }

        /**
         * @param limitations Limitations of the storage class
         * 
         * @return builder
         * 
         */
        public Builder limitations(@Nullable Output> limitations) {
            $.limitations = limitations;
            return this;
        }

        /**
         * @param limitations Limitations of the storage class
         * 
         * @return builder
         * 
         */
        public Builder limitations(List limitations) {
            return limitations(Output.of(limitations));
        }

        /**
         * @param limitations Limitations of the storage class
         * 
         * @return builder
         * 
         */
        public Builder limitations(String... limitations) {
            return limitations(List.of(limitations));
        }

        /**
         * @param mountOptions Additional mount options
         * 
         * @return builder
         * 
         */
        public Builder mountOptions(@Nullable Output> mountOptions) {
            $.mountOptions = mountOptions;
            return this;
        }

        /**
         * @param mountOptions Additional mount options
         * 
         * @return builder
         * 
         */
        public Builder mountOptions(List mountOptions) {
            return mountOptions(Output.of(mountOptions));
        }

        /**
         * @param mountOptions Additional mount options
         * 
         * @return builder
         * 
         */
        public Builder mountOptions(String... mountOptions) {
            return mountOptions(List.of(mountOptions));
        }

        /**
         * @param performance Performance tier
         * 
         * @return builder
         * 
         */
        public Builder performance(@Nullable Output> performance) {
            $.performance = performance;
            return this;
        }

        /**
         * @param performance Performance tier
         * 
         * @return builder
         * 
         */
        public Builder performance(Either performance) {
            return performance(Output.of(performance));
        }

        /**
         * @param performance Performance tier
         * 
         * @return builder
         * 
         */
        public Builder performance(String performance) {
            return performance(Either.ofLeft(performance));
        }

        /**
         * @param performance Performance tier
         * 
         * @return builder
         * 
         */
        public Builder performance(PerformanceTier performance) {
            return performance(Either.ofRight(performance));
        }

        /**
         * @param priority Selection priority when multiple storage classes meet the criteria. 0: Highest, -1: Never use
         * 
         * @return builder
         * 
         */
        public Builder priority(@Nullable Output priority) {
            $.priority = priority;
            return this;
        }

        /**
         * @param priority Selection priority when multiple storage classes meet the criteria. 0: Highest, -1: Never use
         * 
         * @return builder
         * 
         */
        public Builder priority(Double priority) {
            return priority(Output.of(priority));
        }

        /**
         * @param provisioner Provisioner name
         * 
         * @return builder
         * 
         */
        public Builder provisioner(@Nullable Output provisioner) {
            $.provisioner = provisioner;
            return this;
        }

        /**
         * @param provisioner Provisioner name
         * 
         * @return builder
         * 
         */
        public Builder provisioner(String provisioner) {
            return provisioner(Output.of(provisioner));
        }

        /**
         * @param resourceUri The fully qualified Azure Resource manager identifier of the resource.
         * 
         * @return builder
         * 
         */
        public Builder resourceUri(Output resourceUri) {
            $.resourceUri = resourceUri;
            return this;
        }

        /**
         * @param resourceUri The fully qualified Azure Resource manager identifier of the resource.
         * 
         * @return builder
         * 
         */
        public Builder resourceUri(String resourceUri) {
            return resourceUri(Output.of(resourceUri));
        }

        /**
         * @param storageClassName The name of the the storage class
         * 
         * @return builder
         * 
         */
        public Builder storageClassName(@Nullable Output storageClassName) {
            $.storageClassName = storageClassName;
            return this;
        }

        /**
         * @param storageClassName The name of the the storage class
         * 
         * @return builder
         * 
         */
        public Builder storageClassName(String storageClassName) {
            return storageClassName(Output.of(storageClassName));
        }

        /**
         * @param typeProperties Properties of the StorageClass
         * 
         * @return builder
         * 
         */
        public Builder typeProperties(Output typeProperties) {
            $.typeProperties = typeProperties;
            return this;
        }

        /**
         * @param typeProperties Properties of the StorageClass
         * 
         * @return builder
         * 
         */
        public Builder typeProperties(Object typeProperties) {
            return typeProperties(Output.of(typeProperties));
        }

        /**
         * @param volumeBindingMode Binding mode of volumes: Immediate, WaitForFirstConsumer
         * 
         * @return builder
         * 
         */
        public Builder volumeBindingMode(@Nullable Output> volumeBindingMode) {
            $.volumeBindingMode = volumeBindingMode;
            return this;
        }

        /**
         * @param volumeBindingMode Binding mode of volumes: Immediate, WaitForFirstConsumer
         * 
         * @return builder
         * 
         */
        public Builder volumeBindingMode(Either volumeBindingMode) {
            return volumeBindingMode(Output.of(volumeBindingMode));
        }

        /**
         * @param volumeBindingMode Binding mode of volumes: Immediate, WaitForFirstConsumer
         * 
         * @return builder
         * 
         */
        public Builder volumeBindingMode(String volumeBindingMode) {
            return volumeBindingMode(Either.ofLeft(volumeBindingMode));
        }

        /**
         * @param volumeBindingMode Binding mode of volumes: Immediate, WaitForFirstConsumer
         * 
         * @return builder
         * 
         */
        public Builder volumeBindingMode(VolumeBindingMode volumeBindingMode) {
            return volumeBindingMode(Either.ofRight(volumeBindingMode));
        }

        public StorageClassArgs build() {
            if ($.resourceUri == null) {
                throw new MissingRequiredPropertyException("StorageClassArgs", "resourceUri");
            }
            if ($.typeProperties == null) {
                throw new MissingRequiredPropertyException("StorageClassArgs", "typeProperties");
            }
            return $;
        }
    }

}