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

com.pulumi.azurenative.datafactory.inputs.HDInsightOnDemandLinkedServiceArgs Maven / Gradle / Ivy

There is a newer version: 2.72.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.datafactory.inputs;

import com.pulumi.azurenative.datafactory.inputs.AzureKeyVaultSecretReferenceArgs;
import com.pulumi.azurenative.datafactory.inputs.CredentialReferenceArgs;
import com.pulumi.azurenative.datafactory.inputs.IntegrationRuntimeReferenceArgs;
import com.pulumi.azurenative.datafactory.inputs.LinkedServiceReferenceArgs;
import com.pulumi.azurenative.datafactory.inputs.ParameterSpecificationArgs;
import com.pulumi.azurenative.datafactory.inputs.ScriptActionArgs;
import com.pulumi.azurenative.datafactory.inputs.SecureStringArgs;
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.Object;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


/**
 * HDInsight ondemand linked service.
 * 
 */
public final class HDInsightOnDemandLinkedServiceArgs extends com.pulumi.resources.ResourceArgs {

    public static final HDInsightOnDemandLinkedServiceArgs Empty = new HDInsightOnDemandLinkedServiceArgs();

    /**
     * Specifies additional storage accounts for the HDInsight linked service so that the Data Factory service can register them on your behalf.
     * 
     */
    @Import(name="additionalLinkedServiceNames")
    private @Nullable Output> additionalLinkedServiceNames;

    /**
     * @return Specifies additional storage accounts for the HDInsight linked service so that the Data Factory service can register them on your behalf.
     * 
     */
    public Optional>> additionalLinkedServiceNames() {
        return Optional.ofNullable(this.additionalLinkedServiceNames);
    }

    /**
     * List of tags that can be used for describing the linked service.
     * 
     */
    @Import(name="annotations")
    private @Nullable Output> annotations;

    /**
     * @return List of tags that can be used for describing the linked service.
     * 
     */
    public Optional>> annotations() {
        return Optional.ofNullable(this.annotations);
    }

    /**
     * The prefix of cluster name, postfix will be distinct with timestamp. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="clusterNamePrefix")
    private @Nullable Output clusterNamePrefix;

    /**
     * @return The prefix of cluster name, postfix will be distinct with timestamp. Type: string (or Expression with resultType string).
     * 
     */
    public Optional> clusterNamePrefix() {
        return Optional.ofNullable(this.clusterNamePrefix);
    }

    /**
     * The password to access the cluster.
     * 
     */
    @Import(name="clusterPassword")
    private @Nullable Output> clusterPassword;

    /**
     * @return The password to access the cluster.
     * 
     */
    public Optional>> clusterPassword() {
        return Optional.ofNullable(this.clusterPassword);
    }

    /**
     * The resource group where the cluster belongs. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="clusterResourceGroup", required=true)
    private Output clusterResourceGroup;

    /**
     * @return The resource group where the cluster belongs. Type: string (or Expression with resultType string).
     * 
     */
    public Output clusterResourceGroup() {
        return this.clusterResourceGroup;
    }

    /**
     * Number of worker/data nodes in the cluster. Suggestion value: 4. Type: int (or Expression with resultType int).
     * 
     */
    @Import(name="clusterSize", required=true)
    private Output clusterSize;

    /**
     * @return Number of worker/data nodes in the cluster. Suggestion value: 4. Type: int (or Expression with resultType int).
     * 
     */
    public Output clusterSize() {
        return this.clusterSize;
    }

    /**
     * The password to SSH remotely connect cluster’s node (for Linux).
     * 
     */
    @Import(name="clusterSshPassword")
    private @Nullable Output> clusterSshPassword;

    /**
     * @return The password to SSH remotely connect cluster’s node (for Linux).
     * 
     */
    public Optional>> clusterSshPassword() {
        return Optional.ofNullable(this.clusterSshPassword);
    }

    /**
     * The username to SSH remotely connect to cluster’s node (for Linux). Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="clusterSshUserName")
    private @Nullable Output clusterSshUserName;

    /**
     * @return The username to SSH remotely connect to cluster’s node (for Linux). Type: string (or Expression with resultType string).
     * 
     */
    public Optional> clusterSshUserName() {
        return Optional.ofNullable(this.clusterSshUserName);
    }

    /**
     * The cluster type. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="clusterType")
    private @Nullable Output clusterType;

    /**
     * @return The cluster type. Type: string (or Expression with resultType string).
     * 
     */
    public Optional> clusterType() {
        return Optional.ofNullable(this.clusterType);
    }

    /**
     * The username to access the cluster. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="clusterUserName")
    private @Nullable Output clusterUserName;

    /**
     * @return The username to access the cluster. Type: string (or Expression with resultType string).
     * 
     */
    public Optional> clusterUserName() {
        return Optional.ofNullable(this.clusterUserName);
    }

    /**
     * The integration runtime reference.
     * 
     */
    @Import(name="connectVia")
    private @Nullable Output connectVia;

    /**
     * @return The integration runtime reference.
     * 
     */
    public Optional> connectVia() {
        return Optional.ofNullable(this.connectVia);
    }

    /**
     * Specifies the core configuration parameters (as in core-site.xml) for the HDInsight cluster to be created.
     * 
     */
    @Import(name="coreConfiguration")
    private @Nullable Output coreConfiguration;

    /**
     * @return Specifies the core configuration parameters (as in core-site.xml) for the HDInsight cluster to be created.
     * 
     */
    public Optional> coreConfiguration() {
        return Optional.ofNullable(this.coreConfiguration);
    }

    /**
     * The credential reference containing authentication information.
     * 
     */
    @Import(name="credential")
    private @Nullable Output credential;

    /**
     * @return The credential reference containing authentication information.
     * 
     */
    public Optional> credential() {
        return Optional.ofNullable(this.credential);
    }

    /**
     * Specifies the size of the data node for the HDInsight cluster.
     * 
     */
    @Import(name="dataNodeSize")
    private @Nullable Output dataNodeSize;

    /**
     * @return Specifies the size of the data node for the HDInsight cluster.
     * 
     */
    public Optional> dataNodeSize() {
        return Optional.ofNullable(this.dataNodeSize);
    }

    /**
     * Linked service description.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return Linked service description.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string.
     * 
     */
    @Import(name="encryptedCredential")
    private @Nullable Output encryptedCredential;

    /**
     * @return The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string.
     * 
     */
    public Optional> encryptedCredential() {
        return Optional.ofNullable(this.encryptedCredential);
    }

    /**
     * Specifies the HBase configuration parameters (hbase-site.xml) for the HDInsight cluster.
     * 
     */
    @Import(name="hBaseConfiguration")
    private @Nullable Output hBaseConfiguration;

    /**
     * @return Specifies the HBase configuration parameters (hbase-site.xml) for the HDInsight cluster.
     * 
     */
    public Optional> hBaseConfiguration() {
        return Optional.ofNullable(this.hBaseConfiguration);
    }

    /**
     * The name of Azure SQL linked service that point to the HCatalog database. The on-demand HDInsight cluster is created by using the Azure SQL database as the metastore.
     * 
     */
    @Import(name="hcatalogLinkedServiceName")
    private @Nullable Output hcatalogLinkedServiceName;

    /**
     * @return The name of Azure SQL linked service that point to the HCatalog database. The on-demand HDInsight cluster is created by using the Azure SQL database as the metastore.
     * 
     */
    public Optional> hcatalogLinkedServiceName() {
        return Optional.ofNullable(this.hcatalogLinkedServiceName);
    }

    /**
     * Specifies the HDFS configuration parameters (hdfs-site.xml) for the HDInsight cluster.
     * 
     */
    @Import(name="hdfsConfiguration")
    private @Nullable Output hdfsConfiguration;

    /**
     * @return Specifies the HDFS configuration parameters (hdfs-site.xml) for the HDInsight cluster.
     * 
     */
    public Optional> hdfsConfiguration() {
        return Optional.ofNullable(this.hdfsConfiguration);
    }

    /**
     * Specifies the size of the head node for the HDInsight cluster.
     * 
     */
    @Import(name="headNodeSize")
    private @Nullable Output headNodeSize;

    /**
     * @return Specifies the size of the head node for the HDInsight cluster.
     * 
     */
    public Optional> headNodeSize() {
        return Optional.ofNullable(this.headNodeSize);
    }

    /**
     * Specifies the hive configuration parameters (hive-site.xml) for the HDInsight cluster.
     * 
     */
    @Import(name="hiveConfiguration")
    private @Nullable Output hiveConfiguration;

    /**
     * @return Specifies the hive configuration parameters (hive-site.xml) for the HDInsight cluster.
     * 
     */
    public Optional> hiveConfiguration() {
        return Optional.ofNullable(this.hiveConfiguration);
    }

    /**
     * The customer’s subscription to host the cluster. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="hostSubscriptionId", required=true)
    private Output hostSubscriptionId;

    /**
     * @return The customer’s subscription to host the cluster. Type: string (or Expression with resultType string).
     * 
     */
    public Output hostSubscriptionId() {
        return this.hostSubscriptionId;
    }

    /**
     * Azure Storage linked service to be used by the on-demand cluster for storing and processing data.
     * 
     */
    @Import(name="linkedServiceName", required=true)
    private Output linkedServiceName;

    /**
     * @return Azure Storage linked service to be used by the on-demand cluster for storing and processing data.
     * 
     */
    public Output linkedServiceName() {
        return this.linkedServiceName;
    }

    /**
     * Specifies the MapReduce configuration parameters (mapred-site.xml) for the HDInsight cluster.
     * 
     */
    @Import(name="mapReduceConfiguration")
    private @Nullable Output mapReduceConfiguration;

    /**
     * @return Specifies the MapReduce configuration parameters (mapred-site.xml) for the HDInsight cluster.
     * 
     */
    public Optional> mapReduceConfiguration() {
        return Optional.ofNullable(this.mapReduceConfiguration);
    }

    /**
     * Specifies the Oozie configuration parameters (oozie-site.xml) for the HDInsight cluster.
     * 
     */
    @Import(name="oozieConfiguration")
    private @Nullable Output oozieConfiguration;

    /**
     * @return Specifies the Oozie configuration parameters (oozie-site.xml) for the HDInsight cluster.
     * 
     */
    public Optional> oozieConfiguration() {
        return Optional.ofNullable(this.oozieConfiguration);
    }

    /**
     * Parameters for linked service.
     * 
     */
    @Import(name="parameters")
    private @Nullable Output> parameters;

    /**
     * @return Parameters for linked service.
     * 
     */
    public Optional>> parameters() {
        return Optional.ofNullable(this.parameters);
    }

    /**
     * Custom script actions to run on HDI ondemand cluster once it's up. Please refer to https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-customize-cluster-linux?toc=%2Fen-us%2Fazure%2Fhdinsight%2Fr-server%2FTOC.json&bc=%2Fen-us%2Fazure%2Fbread%2Ftoc.json#understanding-script-actions.
     * 
     */
    @Import(name="scriptActions")
    private @Nullable Output> scriptActions;

    /**
     * @return Custom script actions to run on HDI ondemand cluster once it's up. Please refer to https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-customize-cluster-linux?toc=%2Fen-us%2Fazure%2Fhdinsight%2Fr-server%2FTOC.json&bc=%2Fen-us%2Fazure%2Fbread%2Ftoc.json#understanding-script-actions.
     * 
     */
    public Optional>> scriptActions() {
        return Optional.ofNullable(this.scriptActions);
    }

    /**
     * The service principal id for the hostSubscriptionId. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="servicePrincipalId")
    private @Nullable Output servicePrincipalId;

    /**
     * @return The service principal id for the hostSubscriptionId. Type: string (or Expression with resultType string).
     * 
     */
    public Optional> servicePrincipalId() {
        return Optional.ofNullable(this.servicePrincipalId);
    }

    /**
     * The key for the service principal id.
     * 
     */
    @Import(name="servicePrincipalKey")
    private @Nullable Output> servicePrincipalKey;

    /**
     * @return The key for the service principal id.
     * 
     */
    public Optional>> servicePrincipalKey() {
        return Optional.ofNullable(this.servicePrincipalKey);
    }

    /**
     * The version of spark if the cluster type is 'spark'. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="sparkVersion")
    private @Nullable Output sparkVersion;

    /**
     * @return The version of spark if the cluster type is 'spark'. Type: string (or Expression with resultType string).
     * 
     */
    public Optional> sparkVersion() {
        return Optional.ofNullable(this.sparkVersion);
    }

    /**
     * Specifies the Storm configuration parameters (storm-site.xml) for the HDInsight cluster.
     * 
     */
    @Import(name="stormConfiguration")
    private @Nullable Output stormConfiguration;

    /**
     * @return Specifies the Storm configuration parameters (storm-site.xml) for the HDInsight cluster.
     * 
     */
    public Optional> stormConfiguration() {
        return Optional.ofNullable(this.stormConfiguration);
    }

    /**
     * The ARM resource ID for the subnet in the vNet. If virtualNetworkId was specified, then this property is required. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="subnetName")
    private @Nullable Output subnetName;

    /**
     * @return The ARM resource ID for the subnet in the vNet. If virtualNetworkId was specified, then this property is required. Type: string (or Expression with resultType string).
     * 
     */
    public Optional> subnetName() {
        return Optional.ofNullable(this.subnetName);
    }

    /**
     * The Tenant id/name to which the service principal belongs. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="tenant", required=true)
    private Output tenant;

    /**
     * @return The Tenant id/name to which the service principal belongs. Type: string (or Expression with resultType string).
     * 
     */
    public Output tenant() {
        return this.tenant;
    }

    /**
     * The allowed idle time for the on-demand HDInsight cluster. Specifies how long the on-demand HDInsight cluster stays alive after completion of an activity run if there are no other active jobs in the cluster. The minimum value is 5 mins. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="timeToLive", required=true)
    private Output timeToLive;

    /**
     * @return The allowed idle time for the on-demand HDInsight cluster. Specifies how long the on-demand HDInsight cluster stays alive after completion of an activity run if there are no other active jobs in the cluster. The minimum value is 5 mins. Type: string (or Expression with resultType string).
     * 
     */
    public Output timeToLive() {
        return this.timeToLive;
    }

    /**
     * Type of linked service.
     * Expected value is 'HDInsightOnDemand'.
     * 
     */
    @Import(name="type", required=true)
    private Output type;

    /**
     * @return Type of linked service.
     * Expected value is 'HDInsightOnDemand'.
     * 
     */
    public Output type() {
        return this.type;
    }

    /**
     * Version of the linked service.
     * 
     */
    @Import(name="version", required=true)
    private Output version;

    /**
     * @return Version of the linked service.
     * 
     */
    public Output version() {
        return this.version;
    }

    /**
     * The ARM resource ID for the vNet to which the cluster should be joined after creation. Type: string (or Expression with resultType string).
     * 
     */
    @Import(name="virtualNetworkId")
    private @Nullable Output virtualNetworkId;

    /**
     * @return The ARM resource ID for the vNet to which the cluster should be joined after creation. Type: string (or Expression with resultType string).
     * 
     */
    public Optional> virtualNetworkId() {
        return Optional.ofNullable(this.virtualNetworkId);
    }

    /**
     * Specifies the Yarn configuration parameters (yarn-site.xml) for the HDInsight cluster.
     * 
     */
    @Import(name="yarnConfiguration")
    private @Nullable Output yarnConfiguration;

    /**
     * @return Specifies the Yarn configuration parameters (yarn-site.xml) for the HDInsight cluster.
     * 
     */
    public Optional> yarnConfiguration() {
        return Optional.ofNullable(this.yarnConfiguration);
    }

    /**
     * Specifies the size of the Zoo Keeper node for the HDInsight cluster.
     * 
     */
    @Import(name="zookeeperNodeSize")
    private @Nullable Output zookeeperNodeSize;

    /**
     * @return Specifies the size of the Zoo Keeper node for the HDInsight cluster.
     * 
     */
    public Optional> zookeeperNodeSize() {
        return Optional.ofNullable(this.zookeeperNodeSize);
    }

    private HDInsightOnDemandLinkedServiceArgs() {}

    private HDInsightOnDemandLinkedServiceArgs(HDInsightOnDemandLinkedServiceArgs $) {
        this.additionalLinkedServiceNames = $.additionalLinkedServiceNames;
        this.annotations = $.annotations;
        this.clusterNamePrefix = $.clusterNamePrefix;
        this.clusterPassword = $.clusterPassword;
        this.clusterResourceGroup = $.clusterResourceGroup;
        this.clusterSize = $.clusterSize;
        this.clusterSshPassword = $.clusterSshPassword;
        this.clusterSshUserName = $.clusterSshUserName;
        this.clusterType = $.clusterType;
        this.clusterUserName = $.clusterUserName;
        this.connectVia = $.connectVia;
        this.coreConfiguration = $.coreConfiguration;
        this.credential = $.credential;
        this.dataNodeSize = $.dataNodeSize;
        this.description = $.description;
        this.encryptedCredential = $.encryptedCredential;
        this.hBaseConfiguration = $.hBaseConfiguration;
        this.hcatalogLinkedServiceName = $.hcatalogLinkedServiceName;
        this.hdfsConfiguration = $.hdfsConfiguration;
        this.headNodeSize = $.headNodeSize;
        this.hiveConfiguration = $.hiveConfiguration;
        this.hostSubscriptionId = $.hostSubscriptionId;
        this.linkedServiceName = $.linkedServiceName;
        this.mapReduceConfiguration = $.mapReduceConfiguration;
        this.oozieConfiguration = $.oozieConfiguration;
        this.parameters = $.parameters;
        this.scriptActions = $.scriptActions;
        this.servicePrincipalId = $.servicePrincipalId;
        this.servicePrincipalKey = $.servicePrincipalKey;
        this.sparkVersion = $.sparkVersion;
        this.stormConfiguration = $.stormConfiguration;
        this.subnetName = $.subnetName;
        this.tenant = $.tenant;
        this.timeToLive = $.timeToLive;
        this.type = $.type;
        this.version = $.version;
        this.virtualNetworkId = $.virtualNetworkId;
        this.yarnConfiguration = $.yarnConfiguration;
        this.zookeeperNodeSize = $.zookeeperNodeSize;
    }

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

    public static final class Builder {
        private HDInsightOnDemandLinkedServiceArgs $;

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

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

        /**
         * @param additionalLinkedServiceNames Specifies additional storage accounts for the HDInsight linked service so that the Data Factory service can register them on your behalf.
         * 
         * @return builder
         * 
         */
        public Builder additionalLinkedServiceNames(@Nullable Output> additionalLinkedServiceNames) {
            $.additionalLinkedServiceNames = additionalLinkedServiceNames;
            return this;
        }

        /**
         * @param additionalLinkedServiceNames Specifies additional storage accounts for the HDInsight linked service so that the Data Factory service can register them on your behalf.
         * 
         * @return builder
         * 
         */
        public Builder additionalLinkedServiceNames(List additionalLinkedServiceNames) {
            return additionalLinkedServiceNames(Output.of(additionalLinkedServiceNames));
        }

        /**
         * @param additionalLinkedServiceNames Specifies additional storage accounts for the HDInsight linked service so that the Data Factory service can register them on your behalf.
         * 
         * @return builder
         * 
         */
        public Builder additionalLinkedServiceNames(LinkedServiceReferenceArgs... additionalLinkedServiceNames) {
            return additionalLinkedServiceNames(List.of(additionalLinkedServiceNames));
        }

        /**
         * @param annotations List of tags that can be used for describing the linked service.
         * 
         * @return builder
         * 
         */
        public Builder annotations(@Nullable Output> annotations) {
            $.annotations = annotations;
            return this;
        }

        /**
         * @param annotations List of tags that can be used for describing the linked service.
         * 
         * @return builder
         * 
         */
        public Builder annotations(List annotations) {
            return annotations(Output.of(annotations));
        }

        /**
         * @param annotations List of tags that can be used for describing the linked service.
         * 
         * @return builder
         * 
         */
        public Builder annotations(Object... annotations) {
            return annotations(List.of(annotations));
        }

        /**
         * @param clusterNamePrefix The prefix of cluster name, postfix will be distinct with timestamp. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterNamePrefix(@Nullable Output clusterNamePrefix) {
            $.clusterNamePrefix = clusterNamePrefix;
            return this;
        }

        /**
         * @param clusterNamePrefix The prefix of cluster name, postfix will be distinct with timestamp. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterNamePrefix(Object clusterNamePrefix) {
            return clusterNamePrefix(Output.of(clusterNamePrefix));
        }

        /**
         * @param clusterPassword The password to access the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clusterPassword(@Nullable Output> clusterPassword) {
            $.clusterPassword = clusterPassword;
            return this;
        }

        /**
         * @param clusterPassword The password to access the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clusterPassword(Either clusterPassword) {
            return clusterPassword(Output.of(clusterPassword));
        }

        /**
         * @param clusterPassword The password to access the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clusterPassword(AzureKeyVaultSecretReferenceArgs clusterPassword) {
            return clusterPassword(Either.ofLeft(clusterPassword));
        }

        /**
         * @param clusterPassword The password to access the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clusterPassword(SecureStringArgs clusterPassword) {
            return clusterPassword(Either.ofRight(clusterPassword));
        }

        /**
         * @param clusterResourceGroup The resource group where the cluster belongs. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterResourceGroup(Output clusterResourceGroup) {
            $.clusterResourceGroup = clusterResourceGroup;
            return this;
        }

        /**
         * @param clusterResourceGroup The resource group where the cluster belongs. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterResourceGroup(Object clusterResourceGroup) {
            return clusterResourceGroup(Output.of(clusterResourceGroup));
        }

        /**
         * @param clusterSize Number of worker/data nodes in the cluster. Suggestion value: 4. Type: int (or Expression with resultType int).
         * 
         * @return builder
         * 
         */
        public Builder clusterSize(Output clusterSize) {
            $.clusterSize = clusterSize;
            return this;
        }

        /**
         * @param clusterSize Number of worker/data nodes in the cluster. Suggestion value: 4. Type: int (or Expression with resultType int).
         * 
         * @return builder
         * 
         */
        public Builder clusterSize(Object clusterSize) {
            return clusterSize(Output.of(clusterSize));
        }

        /**
         * @param clusterSshPassword The password to SSH remotely connect cluster’s node (for Linux).
         * 
         * @return builder
         * 
         */
        public Builder clusterSshPassword(@Nullable Output> clusterSshPassword) {
            $.clusterSshPassword = clusterSshPassword;
            return this;
        }

        /**
         * @param clusterSshPassword The password to SSH remotely connect cluster’s node (for Linux).
         * 
         * @return builder
         * 
         */
        public Builder clusterSshPassword(Either clusterSshPassword) {
            return clusterSshPassword(Output.of(clusterSshPassword));
        }

        /**
         * @param clusterSshPassword The password to SSH remotely connect cluster’s node (for Linux).
         * 
         * @return builder
         * 
         */
        public Builder clusterSshPassword(AzureKeyVaultSecretReferenceArgs clusterSshPassword) {
            return clusterSshPassword(Either.ofLeft(clusterSshPassword));
        }

        /**
         * @param clusterSshPassword The password to SSH remotely connect cluster’s node (for Linux).
         * 
         * @return builder
         * 
         */
        public Builder clusterSshPassword(SecureStringArgs clusterSshPassword) {
            return clusterSshPassword(Either.ofRight(clusterSshPassword));
        }

        /**
         * @param clusterSshUserName The username to SSH remotely connect to cluster’s node (for Linux). Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterSshUserName(@Nullable Output clusterSshUserName) {
            $.clusterSshUserName = clusterSshUserName;
            return this;
        }

        /**
         * @param clusterSshUserName The username to SSH remotely connect to cluster’s node (for Linux). Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterSshUserName(Object clusterSshUserName) {
            return clusterSshUserName(Output.of(clusterSshUserName));
        }

        /**
         * @param clusterType The cluster type. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterType(@Nullable Output clusterType) {
            $.clusterType = clusterType;
            return this;
        }

        /**
         * @param clusterType The cluster type. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterType(Object clusterType) {
            return clusterType(Output.of(clusterType));
        }

        /**
         * @param clusterUserName The username to access the cluster. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterUserName(@Nullable Output clusterUserName) {
            $.clusterUserName = clusterUserName;
            return this;
        }

        /**
         * @param clusterUserName The username to access the cluster. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder clusterUserName(Object clusterUserName) {
            return clusterUserName(Output.of(clusterUserName));
        }

        /**
         * @param connectVia The integration runtime reference.
         * 
         * @return builder
         * 
         */
        public Builder connectVia(@Nullable Output connectVia) {
            $.connectVia = connectVia;
            return this;
        }

        /**
         * @param connectVia The integration runtime reference.
         * 
         * @return builder
         * 
         */
        public Builder connectVia(IntegrationRuntimeReferenceArgs connectVia) {
            return connectVia(Output.of(connectVia));
        }

        /**
         * @param coreConfiguration Specifies the core configuration parameters (as in core-site.xml) for the HDInsight cluster to be created.
         * 
         * @return builder
         * 
         */
        public Builder coreConfiguration(@Nullable Output coreConfiguration) {
            $.coreConfiguration = coreConfiguration;
            return this;
        }

        /**
         * @param coreConfiguration Specifies the core configuration parameters (as in core-site.xml) for the HDInsight cluster to be created.
         * 
         * @return builder
         * 
         */
        public Builder coreConfiguration(Object coreConfiguration) {
            return coreConfiguration(Output.of(coreConfiguration));
        }

        /**
         * @param credential The credential reference containing authentication information.
         * 
         * @return builder
         * 
         */
        public Builder credential(@Nullable Output credential) {
            $.credential = credential;
            return this;
        }

        /**
         * @param credential The credential reference containing authentication information.
         * 
         * @return builder
         * 
         */
        public Builder credential(CredentialReferenceArgs credential) {
            return credential(Output.of(credential));
        }

        /**
         * @param dataNodeSize Specifies the size of the data node for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder dataNodeSize(@Nullable Output dataNodeSize) {
            $.dataNodeSize = dataNodeSize;
            return this;
        }

        /**
         * @param dataNodeSize Specifies the size of the data node for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder dataNodeSize(Object dataNodeSize) {
            return dataNodeSize(Output.of(dataNodeSize));
        }

        /**
         * @param description Linked service description.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description Linked service description.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param encryptedCredential The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string.
         * 
         * @return builder
         * 
         */
        public Builder encryptedCredential(@Nullable Output encryptedCredential) {
            $.encryptedCredential = encryptedCredential;
            return this;
        }

        /**
         * @param encryptedCredential The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string.
         * 
         * @return builder
         * 
         */
        public Builder encryptedCredential(String encryptedCredential) {
            return encryptedCredential(Output.of(encryptedCredential));
        }

        /**
         * @param hBaseConfiguration Specifies the HBase configuration parameters (hbase-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder hBaseConfiguration(@Nullable Output hBaseConfiguration) {
            $.hBaseConfiguration = hBaseConfiguration;
            return this;
        }

        /**
         * @param hBaseConfiguration Specifies the HBase configuration parameters (hbase-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder hBaseConfiguration(Object hBaseConfiguration) {
            return hBaseConfiguration(Output.of(hBaseConfiguration));
        }

        /**
         * @param hcatalogLinkedServiceName The name of Azure SQL linked service that point to the HCatalog database. The on-demand HDInsight cluster is created by using the Azure SQL database as the metastore.
         * 
         * @return builder
         * 
         */
        public Builder hcatalogLinkedServiceName(@Nullable Output hcatalogLinkedServiceName) {
            $.hcatalogLinkedServiceName = hcatalogLinkedServiceName;
            return this;
        }

        /**
         * @param hcatalogLinkedServiceName The name of Azure SQL linked service that point to the HCatalog database. The on-demand HDInsight cluster is created by using the Azure SQL database as the metastore.
         * 
         * @return builder
         * 
         */
        public Builder hcatalogLinkedServiceName(LinkedServiceReferenceArgs hcatalogLinkedServiceName) {
            return hcatalogLinkedServiceName(Output.of(hcatalogLinkedServiceName));
        }

        /**
         * @param hdfsConfiguration Specifies the HDFS configuration parameters (hdfs-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder hdfsConfiguration(@Nullable Output hdfsConfiguration) {
            $.hdfsConfiguration = hdfsConfiguration;
            return this;
        }

        /**
         * @param hdfsConfiguration Specifies the HDFS configuration parameters (hdfs-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder hdfsConfiguration(Object hdfsConfiguration) {
            return hdfsConfiguration(Output.of(hdfsConfiguration));
        }

        /**
         * @param headNodeSize Specifies the size of the head node for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder headNodeSize(@Nullable Output headNodeSize) {
            $.headNodeSize = headNodeSize;
            return this;
        }

        /**
         * @param headNodeSize Specifies the size of the head node for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder headNodeSize(Object headNodeSize) {
            return headNodeSize(Output.of(headNodeSize));
        }

        /**
         * @param hiveConfiguration Specifies the hive configuration parameters (hive-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder hiveConfiguration(@Nullable Output hiveConfiguration) {
            $.hiveConfiguration = hiveConfiguration;
            return this;
        }

        /**
         * @param hiveConfiguration Specifies the hive configuration parameters (hive-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder hiveConfiguration(Object hiveConfiguration) {
            return hiveConfiguration(Output.of(hiveConfiguration));
        }

        /**
         * @param hostSubscriptionId The customer’s subscription to host the cluster. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder hostSubscriptionId(Output hostSubscriptionId) {
            $.hostSubscriptionId = hostSubscriptionId;
            return this;
        }

        /**
         * @param hostSubscriptionId The customer’s subscription to host the cluster. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder hostSubscriptionId(Object hostSubscriptionId) {
            return hostSubscriptionId(Output.of(hostSubscriptionId));
        }

        /**
         * @param linkedServiceName Azure Storage linked service to be used by the on-demand cluster for storing and processing data.
         * 
         * @return builder
         * 
         */
        public Builder linkedServiceName(Output linkedServiceName) {
            $.linkedServiceName = linkedServiceName;
            return this;
        }

        /**
         * @param linkedServiceName Azure Storage linked service to be used by the on-demand cluster for storing and processing data.
         * 
         * @return builder
         * 
         */
        public Builder linkedServiceName(LinkedServiceReferenceArgs linkedServiceName) {
            return linkedServiceName(Output.of(linkedServiceName));
        }

        /**
         * @param mapReduceConfiguration Specifies the MapReduce configuration parameters (mapred-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder mapReduceConfiguration(@Nullable Output mapReduceConfiguration) {
            $.mapReduceConfiguration = mapReduceConfiguration;
            return this;
        }

        /**
         * @param mapReduceConfiguration Specifies the MapReduce configuration parameters (mapred-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder mapReduceConfiguration(Object mapReduceConfiguration) {
            return mapReduceConfiguration(Output.of(mapReduceConfiguration));
        }

        /**
         * @param oozieConfiguration Specifies the Oozie configuration parameters (oozie-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder oozieConfiguration(@Nullable Output oozieConfiguration) {
            $.oozieConfiguration = oozieConfiguration;
            return this;
        }

        /**
         * @param oozieConfiguration Specifies the Oozie configuration parameters (oozie-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder oozieConfiguration(Object oozieConfiguration) {
            return oozieConfiguration(Output.of(oozieConfiguration));
        }

        /**
         * @param parameters Parameters for linked service.
         * 
         * @return builder
         * 
         */
        public Builder parameters(@Nullable Output> parameters) {
            $.parameters = parameters;
            return this;
        }

        /**
         * @param parameters Parameters for linked service.
         * 
         * @return builder
         * 
         */
        public Builder parameters(Map parameters) {
            return parameters(Output.of(parameters));
        }

        /**
         * @param scriptActions Custom script actions to run on HDI ondemand cluster once it's up. Please refer to https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-customize-cluster-linux?toc=%2Fen-us%2Fazure%2Fhdinsight%2Fr-server%2FTOC.json&bc=%2Fen-us%2Fazure%2Fbread%2Ftoc.json#understanding-script-actions.
         * 
         * @return builder
         * 
         */
        public Builder scriptActions(@Nullable Output> scriptActions) {
            $.scriptActions = scriptActions;
            return this;
        }

        /**
         * @param scriptActions Custom script actions to run on HDI ondemand cluster once it's up. Please refer to https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-customize-cluster-linux?toc=%2Fen-us%2Fazure%2Fhdinsight%2Fr-server%2FTOC.json&bc=%2Fen-us%2Fazure%2Fbread%2Ftoc.json#understanding-script-actions.
         * 
         * @return builder
         * 
         */
        public Builder scriptActions(List scriptActions) {
            return scriptActions(Output.of(scriptActions));
        }

        /**
         * @param scriptActions Custom script actions to run on HDI ondemand cluster once it's up. Please refer to https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-customize-cluster-linux?toc=%2Fen-us%2Fazure%2Fhdinsight%2Fr-server%2FTOC.json&bc=%2Fen-us%2Fazure%2Fbread%2Ftoc.json#understanding-script-actions.
         * 
         * @return builder
         * 
         */
        public Builder scriptActions(ScriptActionArgs... scriptActions) {
            return scriptActions(List.of(scriptActions));
        }

        /**
         * @param servicePrincipalId The service principal id for the hostSubscriptionId. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder servicePrincipalId(@Nullable Output servicePrincipalId) {
            $.servicePrincipalId = servicePrincipalId;
            return this;
        }

        /**
         * @param servicePrincipalId The service principal id for the hostSubscriptionId. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder servicePrincipalId(Object servicePrincipalId) {
            return servicePrincipalId(Output.of(servicePrincipalId));
        }

        /**
         * @param servicePrincipalKey The key for the service principal id.
         * 
         * @return builder
         * 
         */
        public Builder servicePrincipalKey(@Nullable Output> servicePrincipalKey) {
            $.servicePrincipalKey = servicePrincipalKey;
            return this;
        }

        /**
         * @param servicePrincipalKey The key for the service principal id.
         * 
         * @return builder
         * 
         */
        public Builder servicePrincipalKey(Either servicePrincipalKey) {
            return servicePrincipalKey(Output.of(servicePrincipalKey));
        }

        /**
         * @param servicePrincipalKey The key for the service principal id.
         * 
         * @return builder
         * 
         */
        public Builder servicePrincipalKey(AzureKeyVaultSecretReferenceArgs servicePrincipalKey) {
            return servicePrincipalKey(Either.ofLeft(servicePrincipalKey));
        }

        /**
         * @param servicePrincipalKey The key for the service principal id.
         * 
         * @return builder
         * 
         */
        public Builder servicePrincipalKey(SecureStringArgs servicePrincipalKey) {
            return servicePrincipalKey(Either.ofRight(servicePrincipalKey));
        }

        /**
         * @param sparkVersion The version of spark if the cluster type is 'spark'. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder sparkVersion(@Nullable Output sparkVersion) {
            $.sparkVersion = sparkVersion;
            return this;
        }

        /**
         * @param sparkVersion The version of spark if the cluster type is 'spark'. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder sparkVersion(Object sparkVersion) {
            return sparkVersion(Output.of(sparkVersion));
        }

        /**
         * @param stormConfiguration Specifies the Storm configuration parameters (storm-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder stormConfiguration(@Nullable Output stormConfiguration) {
            $.stormConfiguration = stormConfiguration;
            return this;
        }

        /**
         * @param stormConfiguration Specifies the Storm configuration parameters (storm-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder stormConfiguration(Object stormConfiguration) {
            return stormConfiguration(Output.of(stormConfiguration));
        }

        /**
         * @param subnetName The ARM resource ID for the subnet in the vNet. If virtualNetworkId was specified, then this property is required. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder subnetName(@Nullable Output subnetName) {
            $.subnetName = subnetName;
            return this;
        }

        /**
         * @param subnetName The ARM resource ID for the subnet in the vNet. If virtualNetworkId was specified, then this property is required. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder subnetName(Object subnetName) {
            return subnetName(Output.of(subnetName));
        }

        /**
         * @param tenant The Tenant id/name to which the service principal belongs. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder tenant(Output tenant) {
            $.tenant = tenant;
            return this;
        }

        /**
         * @param tenant The Tenant id/name to which the service principal belongs. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder tenant(Object tenant) {
            return tenant(Output.of(tenant));
        }

        /**
         * @param timeToLive The allowed idle time for the on-demand HDInsight cluster. Specifies how long the on-demand HDInsight cluster stays alive after completion of an activity run if there are no other active jobs in the cluster. The minimum value is 5 mins. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder timeToLive(Output timeToLive) {
            $.timeToLive = timeToLive;
            return this;
        }

        /**
         * @param timeToLive The allowed idle time for the on-demand HDInsight cluster. Specifies how long the on-demand HDInsight cluster stays alive after completion of an activity run if there are no other active jobs in the cluster. The minimum value is 5 mins. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder timeToLive(Object timeToLive) {
            return timeToLive(Output.of(timeToLive));
        }

        /**
         * @param type Type of linked service.
         * Expected value is 'HDInsightOnDemand'.
         * 
         * @return builder
         * 
         */
        public Builder type(Output type) {
            $.type = type;
            return this;
        }

        /**
         * @param type Type of linked service.
         * Expected value is 'HDInsightOnDemand'.
         * 
         * @return builder
         * 
         */
        public Builder type(String type) {
            return type(Output.of(type));
        }

        /**
         * @param version Version of the linked service.
         * 
         * @return builder
         * 
         */
        public Builder version(Output version) {
            $.version = version;
            return this;
        }

        /**
         * @param version Version of the linked service.
         * 
         * @return builder
         * 
         */
        public Builder version(String version) {
            return version(Output.of(version));
        }

        /**
         * @param virtualNetworkId The ARM resource ID for the vNet to which the cluster should be joined after creation. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkId(@Nullable Output virtualNetworkId) {
            $.virtualNetworkId = virtualNetworkId;
            return this;
        }

        /**
         * @param virtualNetworkId The ARM resource ID for the vNet to which the cluster should be joined after creation. Type: string (or Expression with resultType string).
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkId(Object virtualNetworkId) {
            return virtualNetworkId(Output.of(virtualNetworkId));
        }

        /**
         * @param yarnConfiguration Specifies the Yarn configuration parameters (yarn-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder yarnConfiguration(@Nullable Output yarnConfiguration) {
            $.yarnConfiguration = yarnConfiguration;
            return this;
        }

        /**
         * @param yarnConfiguration Specifies the Yarn configuration parameters (yarn-site.xml) for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder yarnConfiguration(Object yarnConfiguration) {
            return yarnConfiguration(Output.of(yarnConfiguration));
        }

        /**
         * @param zookeeperNodeSize Specifies the size of the Zoo Keeper node for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder zookeeperNodeSize(@Nullable Output zookeeperNodeSize) {
            $.zookeeperNodeSize = zookeeperNodeSize;
            return this;
        }

        /**
         * @param zookeeperNodeSize Specifies the size of the Zoo Keeper node for the HDInsight cluster.
         * 
         * @return builder
         * 
         */
        public Builder zookeeperNodeSize(Object zookeeperNodeSize) {
            return zookeeperNodeSize(Output.of(zookeeperNodeSize));
        }

        public HDInsightOnDemandLinkedServiceArgs build() {
            if ($.clusterResourceGroup == null) {
                throw new MissingRequiredPropertyException("HDInsightOnDemandLinkedServiceArgs", "clusterResourceGroup");
            }
            if ($.clusterSize == null) {
                throw new MissingRequiredPropertyException("HDInsightOnDemandLinkedServiceArgs", "clusterSize");
            }
            if ($.hostSubscriptionId == null) {
                throw new MissingRequiredPropertyException("HDInsightOnDemandLinkedServiceArgs", "hostSubscriptionId");
            }
            if ($.linkedServiceName == null) {
                throw new MissingRequiredPropertyException("HDInsightOnDemandLinkedServiceArgs", "linkedServiceName");
            }
            if ($.tenant == null) {
                throw new MissingRequiredPropertyException("HDInsightOnDemandLinkedServiceArgs", "tenant");
            }
            if ($.timeToLive == null) {
                throw new MissingRequiredPropertyException("HDInsightOnDemandLinkedServiceArgs", "timeToLive");
            }
            $.type = Codegen.stringProp("type").output().arg($.type).require();
            if ($.version == null) {
                throw new MissingRequiredPropertyException("HDInsightOnDemandLinkedServiceArgs", "version");
            }
            return $;
        }
    }

}