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

com.pulumi.azurenative.kusto.ClusterArgs Maven / Gradle / Ivy

There is a newer version: 2.82.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.kusto;

import com.pulumi.azurenative.kusto.enums.ClusterNetworkAccessFlag;
import com.pulumi.azurenative.kusto.enums.EngineType;
import com.pulumi.azurenative.kusto.enums.PublicIPType;
import com.pulumi.azurenative.kusto.enums.PublicNetworkAccess;
import com.pulumi.azurenative.kusto.inputs.AcceptedAudiencesArgs;
import com.pulumi.azurenative.kusto.inputs.AzureSkuArgs;
import com.pulumi.azurenative.kusto.inputs.IdentityArgs;
import com.pulumi.azurenative.kusto.inputs.KeyVaultPropertiesArgs;
import com.pulumi.azurenative.kusto.inputs.LanguageExtensionsListArgs;
import com.pulumi.azurenative.kusto.inputs.OptimizedAutoscaleArgs;
import com.pulumi.azurenative.kusto.inputs.TrustedExternalTenantArgs;
import com.pulumi.azurenative.kusto.inputs.VirtualNetworkConfigurationArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.core.internal.Codegen;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ClusterArgs Empty = new ClusterArgs();

    /**
     * The cluster's accepted audiences.
     * 
     */
    @Import(name="acceptedAudiences")
    private @Nullable Output> acceptedAudiences;

    /**
     * @return The cluster's accepted audiences.
     * 
     */
    public Optional>> acceptedAudiences() {
        return Optional.ofNullable(this.acceptedAudiences);
    }

    /**
     * List of allowed FQDNs(Fully Qualified Domain Name) for egress from Cluster.
     * 
     */
    @Import(name="allowedFqdnList")
    private @Nullable Output> allowedFqdnList;

    /**
     * @return List of allowed FQDNs(Fully Qualified Domain Name) for egress from Cluster.
     * 
     */
    public Optional>> allowedFqdnList() {
        return Optional.ofNullable(this.allowedFqdnList);
    }

    /**
     * The list of ips in the format of CIDR allowed to connect to the cluster.
     * 
     */
    @Import(name="allowedIpRangeList")
    private @Nullable Output> allowedIpRangeList;

    /**
     * @return The list of ips in the format of CIDR allowed to connect to the cluster.
     * 
     */
    public Optional>> allowedIpRangeList() {
        return Optional.ofNullable(this.allowedIpRangeList);
    }

    /**
     * The name of the Kusto cluster.
     * 
     */
    @Import(name="clusterName")
    private @Nullable Output clusterName;

    /**
     * @return The name of the Kusto cluster.
     * 
     */
    public Optional> clusterName() {
        return Optional.ofNullable(this.clusterName);
    }

    /**
     * A boolean value that indicates if the cluster could be automatically stopped (due to lack of data or no activity for many days).
     * 
     */
    @Import(name="enableAutoStop")
    private @Nullable Output enableAutoStop;

    /**
     * @return A boolean value that indicates if the cluster could be automatically stopped (due to lack of data or no activity for many days).
     * 
     */
    public Optional> enableAutoStop() {
        return Optional.ofNullable(this.enableAutoStop);
    }

    /**
     * A boolean value that indicates if the cluster's disks are encrypted.
     * 
     */
    @Import(name="enableDiskEncryption")
    private @Nullable Output enableDiskEncryption;

    /**
     * @return A boolean value that indicates if the cluster's disks are encrypted.
     * 
     */
    public Optional> enableDiskEncryption() {
        return Optional.ofNullable(this.enableDiskEncryption);
    }

    /**
     * A boolean value that indicates if double encryption is enabled.
     * 
     */
    @Import(name="enableDoubleEncryption")
    private @Nullable Output enableDoubleEncryption;

    /**
     * @return A boolean value that indicates if double encryption is enabled.
     * 
     */
    public Optional> enableDoubleEncryption() {
        return Optional.ofNullable(this.enableDoubleEncryption);
    }

    /**
     * A boolean value that indicates if the purge operations are enabled.
     * 
     */
    @Import(name="enablePurge")
    private @Nullable Output enablePurge;

    /**
     * @return A boolean value that indicates if the purge operations are enabled.
     * 
     */
    public Optional> enablePurge() {
        return Optional.ofNullable(this.enablePurge);
    }

    /**
     * A boolean value that indicates if the streaming ingest is enabled.
     * 
     */
    @Import(name="enableStreamingIngest")
    private @Nullable Output enableStreamingIngest;

    /**
     * @return A boolean value that indicates if the streaming ingest is enabled.
     * 
     */
    public Optional> enableStreamingIngest() {
        return Optional.ofNullable(this.enableStreamingIngest);
    }

    /**
     * The engine type
     * 
     */
    @Import(name="engineType")
    private @Nullable Output> engineType;

    /**
     * @return The engine type
     * 
     */
    public Optional>> engineType() {
        return Optional.ofNullable(this.engineType);
    }

    /**
     * The identity of the cluster, if configured.
     * 
     */
    @Import(name="identity")
    private @Nullable Output identity;

    /**
     * @return The identity of the cluster, if configured.
     * 
     */
    public Optional> identity() {
        return Optional.ofNullable(this.identity);
    }

    /**
     * KeyVault properties for the cluster encryption.
     * 
     */
    @Import(name="keyVaultProperties")
    private @Nullable Output keyVaultProperties;

    /**
     * @return KeyVault properties for the cluster encryption.
     * 
     */
    public Optional> keyVaultProperties() {
        return Optional.ofNullable(this.keyVaultProperties);
    }

    /**
     * List of the cluster's language extensions.
     * 
     */
    @Import(name="languageExtensions")
    private @Nullable Output languageExtensions;

    /**
     * @return List of the cluster's language extensions.
     * 
     */
    public Optional> languageExtensions() {
        return Optional.ofNullable(this.languageExtensions);
    }

    /**
     * The geo-location where the resource lives
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return The geo-location where the resource lives
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * Optimized auto scale definition.
     * 
     */
    @Import(name="optimizedAutoscale")
    private @Nullable Output optimizedAutoscale;

    /**
     * @return Optimized auto scale definition.
     * 
     */
    public Optional> optimizedAutoscale() {
        return Optional.ofNullable(this.optimizedAutoscale);
    }

    /**
     * Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6)
     * 
     */
    @Import(name="publicIPType")
    private @Nullable Output> publicIPType;

    /**
     * @return Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6)
     * 
     */
    public Optional>> publicIPType() {
        return Optional.ofNullable(this.publicIPType);
    }

    /**
     * Public network access to the cluster is enabled by default. When disabled, only private endpoint connection to the cluster is allowed
     * 
     */
    @Import(name="publicNetworkAccess")
    private @Nullable Output> publicNetworkAccess;

    /**
     * @return Public network access to the cluster is enabled by default. When disabled, only private endpoint connection to the cluster is allowed
     * 
     */
    public Optional>> publicNetworkAccess() {
        return Optional.ofNullable(this.publicNetworkAccess);
    }

    /**
     * The name of the resource group containing the Kusto cluster.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the resource group containing the Kusto cluster.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * Whether or not to restrict outbound network access.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'
     * 
     */
    @Import(name="restrictOutboundNetworkAccess")
    private @Nullable Output> restrictOutboundNetworkAccess;

    /**
     * @return Whether or not to restrict outbound network access.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'
     * 
     */
    public Optional>> restrictOutboundNetworkAccess() {
        return Optional.ofNullable(this.restrictOutboundNetworkAccess);
    }

    /**
     * The SKU of the cluster.
     * 
     */
    @Import(name="sku", required=true)
    private Output sku;

    /**
     * @return The SKU of the cluster.
     * 
     */
    public Output sku() {
        return this.sku;
    }

    /**
     * Resource tags.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Resource tags.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * The cluster's external tenants.
     * 
     */
    @Import(name="trustedExternalTenants")
    private @Nullable Output> trustedExternalTenants;

    /**
     * @return The cluster's external tenants.
     * 
     */
    public Optional>> trustedExternalTenants() {
        return Optional.ofNullable(this.trustedExternalTenants);
    }

    /**
     * Virtual Cluster graduation properties
     * 
     */
    @Import(name="virtualClusterGraduationProperties")
    private @Nullable Output virtualClusterGraduationProperties;

    /**
     * @return Virtual Cluster graduation properties
     * 
     */
    public Optional> virtualClusterGraduationProperties() {
        return Optional.ofNullable(this.virtualClusterGraduationProperties);
    }

    /**
     * Virtual network definition.
     * 
     */
    @Import(name="virtualNetworkConfiguration")
    private @Nullable Output virtualNetworkConfiguration;

    /**
     * @return Virtual network definition.
     * 
     */
    public Optional> virtualNetworkConfiguration() {
        return Optional.ofNullable(this.virtualNetworkConfiguration);
    }

    /**
     * The availability zones of the cluster.
     * 
     */
    @Import(name="zones")
    private @Nullable Output> zones;

    /**
     * @return The availability zones of the cluster.
     * 
     */
    public Optional>> zones() {
        return Optional.ofNullable(this.zones);
    }

    private ClusterArgs() {}

    private ClusterArgs(ClusterArgs $) {
        this.acceptedAudiences = $.acceptedAudiences;
        this.allowedFqdnList = $.allowedFqdnList;
        this.allowedIpRangeList = $.allowedIpRangeList;
        this.clusterName = $.clusterName;
        this.enableAutoStop = $.enableAutoStop;
        this.enableDiskEncryption = $.enableDiskEncryption;
        this.enableDoubleEncryption = $.enableDoubleEncryption;
        this.enablePurge = $.enablePurge;
        this.enableStreamingIngest = $.enableStreamingIngest;
        this.engineType = $.engineType;
        this.identity = $.identity;
        this.keyVaultProperties = $.keyVaultProperties;
        this.languageExtensions = $.languageExtensions;
        this.location = $.location;
        this.optimizedAutoscale = $.optimizedAutoscale;
        this.publicIPType = $.publicIPType;
        this.publicNetworkAccess = $.publicNetworkAccess;
        this.resourceGroupName = $.resourceGroupName;
        this.restrictOutboundNetworkAccess = $.restrictOutboundNetworkAccess;
        this.sku = $.sku;
        this.tags = $.tags;
        this.trustedExternalTenants = $.trustedExternalTenants;
        this.virtualClusterGraduationProperties = $.virtualClusterGraduationProperties;
        this.virtualNetworkConfiguration = $.virtualNetworkConfiguration;
        this.zones = $.zones;
    }

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

    public static final class Builder {
        private ClusterArgs $;

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

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

        /**
         * @param acceptedAudiences The cluster's accepted audiences.
         * 
         * @return builder
         * 
         */
        public Builder acceptedAudiences(@Nullable Output> acceptedAudiences) {
            $.acceptedAudiences = acceptedAudiences;
            return this;
        }

        /**
         * @param acceptedAudiences The cluster's accepted audiences.
         * 
         * @return builder
         * 
         */
        public Builder acceptedAudiences(List acceptedAudiences) {
            return acceptedAudiences(Output.of(acceptedAudiences));
        }

        /**
         * @param acceptedAudiences The cluster's accepted audiences.
         * 
         * @return builder
         * 
         */
        public Builder acceptedAudiences(AcceptedAudiencesArgs... acceptedAudiences) {
            return acceptedAudiences(List.of(acceptedAudiences));
        }

        /**
         * @param allowedFqdnList List of allowed FQDNs(Fully Qualified Domain Name) for egress from Cluster.
         * 
         * @return builder
         * 
         */
        public Builder allowedFqdnList(@Nullable Output> allowedFqdnList) {
            $.allowedFqdnList = allowedFqdnList;
            return this;
        }

        /**
         * @param allowedFqdnList List of allowed FQDNs(Fully Qualified Domain Name) for egress from Cluster.
         * 
         * @return builder
         * 
         */
        public Builder allowedFqdnList(List allowedFqdnList) {
            return allowedFqdnList(Output.of(allowedFqdnList));
        }

        /**
         * @param allowedFqdnList List of allowed FQDNs(Fully Qualified Domain Name) for egress from Cluster.
         * 
         * @return builder
         * 
         */
        public Builder allowedFqdnList(String... allowedFqdnList) {
            return allowedFqdnList(List.of(allowedFqdnList));
        }

        /**
         * @param allowedIpRangeList The list of ips in the format of CIDR allowed to connect to the cluster.
         * 
         * @return builder
         * 
         */
        public Builder allowedIpRangeList(@Nullable Output> allowedIpRangeList) {
            $.allowedIpRangeList = allowedIpRangeList;
            return this;
        }

        /**
         * @param allowedIpRangeList The list of ips in the format of CIDR allowed to connect to the cluster.
         * 
         * @return builder
         * 
         */
        public Builder allowedIpRangeList(List allowedIpRangeList) {
            return allowedIpRangeList(Output.of(allowedIpRangeList));
        }

        /**
         * @param allowedIpRangeList The list of ips in the format of CIDR allowed to connect to the cluster.
         * 
         * @return builder
         * 
         */
        public Builder allowedIpRangeList(String... allowedIpRangeList) {
            return allowedIpRangeList(List.of(allowedIpRangeList));
        }

        /**
         * @param clusterName The name of the Kusto cluster.
         * 
         * @return builder
         * 
         */
        public Builder clusterName(@Nullable Output clusterName) {
            $.clusterName = clusterName;
            return this;
        }

        /**
         * @param clusterName The name of the Kusto cluster.
         * 
         * @return builder
         * 
         */
        public Builder clusterName(String clusterName) {
            return clusterName(Output.of(clusterName));
        }

        /**
         * @param enableAutoStop A boolean value that indicates if the cluster could be automatically stopped (due to lack of data or no activity for many days).
         * 
         * @return builder
         * 
         */
        public Builder enableAutoStop(@Nullable Output enableAutoStop) {
            $.enableAutoStop = enableAutoStop;
            return this;
        }

        /**
         * @param enableAutoStop A boolean value that indicates if the cluster could be automatically stopped (due to lack of data or no activity for many days).
         * 
         * @return builder
         * 
         */
        public Builder enableAutoStop(Boolean enableAutoStop) {
            return enableAutoStop(Output.of(enableAutoStop));
        }

        /**
         * @param enableDiskEncryption A boolean value that indicates if the cluster's disks are encrypted.
         * 
         * @return builder
         * 
         */
        public Builder enableDiskEncryption(@Nullable Output enableDiskEncryption) {
            $.enableDiskEncryption = enableDiskEncryption;
            return this;
        }

        /**
         * @param enableDiskEncryption A boolean value that indicates if the cluster's disks are encrypted.
         * 
         * @return builder
         * 
         */
        public Builder enableDiskEncryption(Boolean enableDiskEncryption) {
            return enableDiskEncryption(Output.of(enableDiskEncryption));
        }

        /**
         * @param enableDoubleEncryption A boolean value that indicates if double encryption is enabled.
         * 
         * @return builder
         * 
         */
        public Builder enableDoubleEncryption(@Nullable Output enableDoubleEncryption) {
            $.enableDoubleEncryption = enableDoubleEncryption;
            return this;
        }

        /**
         * @param enableDoubleEncryption A boolean value that indicates if double encryption is enabled.
         * 
         * @return builder
         * 
         */
        public Builder enableDoubleEncryption(Boolean enableDoubleEncryption) {
            return enableDoubleEncryption(Output.of(enableDoubleEncryption));
        }

        /**
         * @param enablePurge A boolean value that indicates if the purge operations are enabled.
         * 
         * @return builder
         * 
         */
        public Builder enablePurge(@Nullable Output enablePurge) {
            $.enablePurge = enablePurge;
            return this;
        }

        /**
         * @param enablePurge A boolean value that indicates if the purge operations are enabled.
         * 
         * @return builder
         * 
         */
        public Builder enablePurge(Boolean enablePurge) {
            return enablePurge(Output.of(enablePurge));
        }

        /**
         * @param enableStreamingIngest A boolean value that indicates if the streaming ingest is enabled.
         * 
         * @return builder
         * 
         */
        public Builder enableStreamingIngest(@Nullable Output enableStreamingIngest) {
            $.enableStreamingIngest = enableStreamingIngest;
            return this;
        }

        /**
         * @param enableStreamingIngest A boolean value that indicates if the streaming ingest is enabled.
         * 
         * @return builder
         * 
         */
        public Builder enableStreamingIngest(Boolean enableStreamingIngest) {
            return enableStreamingIngest(Output.of(enableStreamingIngest));
        }

        /**
         * @param engineType The engine type
         * 
         * @return builder
         * 
         */
        public Builder engineType(@Nullable Output> engineType) {
            $.engineType = engineType;
            return this;
        }

        /**
         * @param engineType The engine type
         * 
         * @return builder
         * 
         */
        public Builder engineType(Either engineType) {
            return engineType(Output.of(engineType));
        }

        /**
         * @param engineType The engine type
         * 
         * @return builder
         * 
         */
        public Builder engineType(String engineType) {
            return engineType(Either.ofLeft(engineType));
        }

        /**
         * @param engineType The engine type
         * 
         * @return builder
         * 
         */
        public Builder engineType(EngineType engineType) {
            return engineType(Either.ofRight(engineType));
        }

        /**
         * @param identity The identity of the cluster, if configured.
         * 
         * @return builder
         * 
         */
        public Builder identity(@Nullable Output identity) {
            $.identity = identity;
            return this;
        }

        /**
         * @param identity The identity of the cluster, if configured.
         * 
         * @return builder
         * 
         */
        public Builder identity(IdentityArgs identity) {
            return identity(Output.of(identity));
        }

        /**
         * @param keyVaultProperties KeyVault properties for the cluster encryption.
         * 
         * @return builder
         * 
         */
        public Builder keyVaultProperties(@Nullable Output keyVaultProperties) {
            $.keyVaultProperties = keyVaultProperties;
            return this;
        }

        /**
         * @param keyVaultProperties KeyVault properties for the cluster encryption.
         * 
         * @return builder
         * 
         */
        public Builder keyVaultProperties(KeyVaultPropertiesArgs keyVaultProperties) {
            return keyVaultProperties(Output.of(keyVaultProperties));
        }

        /**
         * @param languageExtensions List of the cluster's language extensions.
         * 
         * @return builder
         * 
         */
        public Builder languageExtensions(@Nullable Output languageExtensions) {
            $.languageExtensions = languageExtensions;
            return this;
        }

        /**
         * @param languageExtensions List of the cluster's language extensions.
         * 
         * @return builder
         * 
         */
        public Builder languageExtensions(LanguageExtensionsListArgs languageExtensions) {
            return languageExtensions(Output.of(languageExtensions));
        }

        /**
         * @param location The geo-location where the resource lives
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location The geo-location where the resource lives
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param optimizedAutoscale Optimized auto scale definition.
         * 
         * @return builder
         * 
         */
        public Builder optimizedAutoscale(@Nullable Output optimizedAutoscale) {
            $.optimizedAutoscale = optimizedAutoscale;
            return this;
        }

        /**
         * @param optimizedAutoscale Optimized auto scale definition.
         * 
         * @return builder
         * 
         */
        public Builder optimizedAutoscale(OptimizedAutoscaleArgs optimizedAutoscale) {
            return optimizedAutoscale(Output.of(optimizedAutoscale));
        }

        /**
         * @param publicIPType Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6)
         * 
         * @return builder
         * 
         */
        public Builder publicIPType(@Nullable Output> publicIPType) {
            $.publicIPType = publicIPType;
            return this;
        }

        /**
         * @param publicIPType Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6)
         * 
         * @return builder
         * 
         */
        public Builder publicIPType(Either publicIPType) {
            return publicIPType(Output.of(publicIPType));
        }

        /**
         * @param publicIPType Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6)
         * 
         * @return builder
         * 
         */
        public Builder publicIPType(String publicIPType) {
            return publicIPType(Either.ofLeft(publicIPType));
        }

        /**
         * @param publicIPType Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6)
         * 
         * @return builder
         * 
         */
        public Builder publicIPType(PublicIPType publicIPType) {
            return publicIPType(Either.ofRight(publicIPType));
        }

        /**
         * @param publicNetworkAccess Public network access to the cluster is enabled by default. When disabled, only private endpoint connection to the cluster is allowed
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(@Nullable Output> publicNetworkAccess) {
            $.publicNetworkAccess = publicNetworkAccess;
            return this;
        }

        /**
         * @param publicNetworkAccess Public network access to the cluster is enabled by default. When disabled, only private endpoint connection to the cluster is allowed
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(Either publicNetworkAccess) {
            return publicNetworkAccess(Output.of(publicNetworkAccess));
        }

        /**
         * @param publicNetworkAccess Public network access to the cluster is enabled by default. When disabled, only private endpoint connection to the cluster is allowed
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(String publicNetworkAccess) {
            return publicNetworkAccess(Either.ofLeft(publicNetworkAccess));
        }

        /**
         * @param publicNetworkAccess Public network access to the cluster is enabled by default. When disabled, only private endpoint connection to the cluster is allowed
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(PublicNetworkAccess publicNetworkAccess) {
            return publicNetworkAccess(Either.ofRight(publicNetworkAccess));
        }

        /**
         * @param resourceGroupName The name of the resource group containing the Kusto cluster.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group containing the Kusto cluster.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param restrictOutboundNetworkAccess Whether or not to restrict outbound network access.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'
         * 
         * @return builder
         * 
         */
        public Builder restrictOutboundNetworkAccess(@Nullable Output> restrictOutboundNetworkAccess) {
            $.restrictOutboundNetworkAccess = restrictOutboundNetworkAccess;
            return this;
        }

        /**
         * @param restrictOutboundNetworkAccess Whether or not to restrict outbound network access.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'
         * 
         * @return builder
         * 
         */
        public Builder restrictOutboundNetworkAccess(Either restrictOutboundNetworkAccess) {
            return restrictOutboundNetworkAccess(Output.of(restrictOutboundNetworkAccess));
        }

        /**
         * @param restrictOutboundNetworkAccess Whether or not to restrict outbound network access.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'
         * 
         * @return builder
         * 
         */
        public Builder restrictOutboundNetworkAccess(String restrictOutboundNetworkAccess) {
            return restrictOutboundNetworkAccess(Either.ofLeft(restrictOutboundNetworkAccess));
        }

        /**
         * @param restrictOutboundNetworkAccess Whether or not to restrict outbound network access.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'
         * 
         * @return builder
         * 
         */
        public Builder restrictOutboundNetworkAccess(ClusterNetworkAccessFlag restrictOutboundNetworkAccess) {
            return restrictOutboundNetworkAccess(Either.ofRight(restrictOutboundNetworkAccess));
        }

        /**
         * @param sku The SKU of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder sku(Output sku) {
            $.sku = sku;
            return this;
        }

        /**
         * @param sku The SKU of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder sku(AzureSkuArgs sku) {
            return sku(Output.of(sku));
        }

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

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param trustedExternalTenants The cluster's external tenants.
         * 
         * @return builder
         * 
         */
        public Builder trustedExternalTenants(@Nullable Output> trustedExternalTenants) {
            $.trustedExternalTenants = trustedExternalTenants;
            return this;
        }

        /**
         * @param trustedExternalTenants The cluster's external tenants.
         * 
         * @return builder
         * 
         */
        public Builder trustedExternalTenants(List trustedExternalTenants) {
            return trustedExternalTenants(Output.of(trustedExternalTenants));
        }

        /**
         * @param trustedExternalTenants The cluster's external tenants.
         * 
         * @return builder
         * 
         */
        public Builder trustedExternalTenants(TrustedExternalTenantArgs... trustedExternalTenants) {
            return trustedExternalTenants(List.of(trustedExternalTenants));
        }

        /**
         * @param virtualClusterGraduationProperties Virtual Cluster graduation properties
         * 
         * @return builder
         * 
         */
        public Builder virtualClusterGraduationProperties(@Nullable Output virtualClusterGraduationProperties) {
            $.virtualClusterGraduationProperties = virtualClusterGraduationProperties;
            return this;
        }

        /**
         * @param virtualClusterGraduationProperties Virtual Cluster graduation properties
         * 
         * @return builder
         * 
         */
        public Builder virtualClusterGraduationProperties(String virtualClusterGraduationProperties) {
            return virtualClusterGraduationProperties(Output.of(virtualClusterGraduationProperties));
        }

        /**
         * @param virtualNetworkConfiguration Virtual network definition.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkConfiguration(@Nullable Output virtualNetworkConfiguration) {
            $.virtualNetworkConfiguration = virtualNetworkConfiguration;
            return this;
        }

        /**
         * @param virtualNetworkConfiguration Virtual network definition.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkConfiguration(VirtualNetworkConfigurationArgs virtualNetworkConfiguration) {
            return virtualNetworkConfiguration(Output.of(virtualNetworkConfiguration));
        }

        /**
         * @param zones The availability zones of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder zones(@Nullable Output> zones) {
            $.zones = zones;
            return this;
        }

        /**
         * @param zones The availability zones of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder zones(List zones) {
            return zones(Output.of(zones));
        }

        /**
         * @param zones The availability zones of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder zones(String... zones) {
            return zones(List.of(zones));
        }

        public ClusterArgs build() {
            $.enableAutoStop = Codegen.booleanProp("enableAutoStop").output().arg($.enableAutoStop).def(true).getNullable();
            $.enableDiskEncryption = Codegen.booleanProp("enableDiskEncryption").output().arg($.enableDiskEncryption).def(false).getNullable();
            $.enableDoubleEncryption = Codegen.booleanProp("enableDoubleEncryption").output().arg($.enableDoubleEncryption).def(false).getNullable();
            $.enablePurge = Codegen.booleanProp("enablePurge").output().arg($.enablePurge).def(false).getNullable();
            $.enableStreamingIngest = Codegen.booleanProp("enableStreamingIngest").output().arg($.enableStreamingIngest).def(false).getNullable();
            $.engineType = Codegen.stringProp("engineType").left(EngineType.class).output().arg($.engineType).def("V3").getNullable();
            $.publicIPType = Codegen.stringProp("publicIPType").left(PublicIPType.class).output().arg($.publicIPType).def("IPv4").getNullable();
            $.publicNetworkAccess = Codegen.stringProp("publicNetworkAccess").left(PublicNetworkAccess.class).output().arg($.publicNetworkAccess).def("Enabled").getNullable();
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("ClusterArgs", "resourceGroupName");
            }
            $.restrictOutboundNetworkAccess = Codegen.stringProp("restrictOutboundNetworkAccess").left(ClusterNetworkAccessFlag.class).output().arg($.restrictOutboundNetworkAccess).def("Disabled").getNullable();
            if ($.sku == null) {
                throw new MissingRequiredPropertyException("ClusterArgs", "sku");
            }
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy