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

com.pulumi.azurenative.batch.PoolArgs 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.batch;

import com.pulumi.azurenative.batch.enums.InterNodeCommunicationState;
import com.pulumi.azurenative.batch.enums.NodeCommunicationMode;
import com.pulumi.azurenative.batch.inputs.ApplicationPackageReferenceArgs;
import com.pulumi.azurenative.batch.inputs.BatchPoolIdentityArgs;
import com.pulumi.azurenative.batch.inputs.CertificateReferenceArgs;
import com.pulumi.azurenative.batch.inputs.DeploymentConfigurationArgs;
import com.pulumi.azurenative.batch.inputs.MetadataItemArgs;
import com.pulumi.azurenative.batch.inputs.MountConfigurationArgs;
import com.pulumi.azurenative.batch.inputs.NetworkConfigurationArgs;
import com.pulumi.azurenative.batch.inputs.ScaleSettingsArgs;
import com.pulumi.azurenative.batch.inputs.StartTaskArgs;
import com.pulumi.azurenative.batch.inputs.TaskSchedulingPolicyArgs;
import com.pulumi.azurenative.batch.inputs.UserAccountArgs;
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.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final PoolArgs Empty = new PoolArgs();

    /**
     * The name of the Batch account.
     * 
     */
    @Import(name="accountName", required=true)
    private Output accountName;

    /**
     * @return The name of the Batch account.
     * 
     */
    public Output accountName() {
        return this.accountName;
    }

    /**
     * The list of application licenses must be a subset of available Batch service application licenses. If a license is requested which is not supported, pool creation will fail.
     * 
     */
    @Import(name="applicationLicenses")
    private @Nullable Output> applicationLicenses;

    /**
     * @return The list of application licenses must be a subset of available Batch service application licenses. If a license is requested which is not supported, pool creation will fail.
     * 
     */
    public Optional>> applicationLicenses() {
        return Optional.ofNullable(this.applicationLicenses);
    }

    /**
     * Changes to application package references affect all new compute nodes joining the pool, but do not affect compute nodes that are already in the pool until they are rebooted or reimaged. There is a maximum of 10 application package references on any given pool.
     * 
     */
    @Import(name="applicationPackages")
    private @Nullable Output> applicationPackages;

    /**
     * @return Changes to application package references affect all new compute nodes joining the pool, but do not affect compute nodes that are already in the pool until they are rebooted or reimaged. There is a maximum of 10 application package references on any given pool.
     * 
     */
    public Optional>> applicationPackages() {
        return Optional.ofNullable(this.applicationPackages);
    }

    /**
     * For Windows compute nodes, the Batch service installs the certificates to the specified certificate store and location. For Linux compute nodes, the certificates are stored in a directory inside the task working directory and an environment variable AZ_BATCH_CERTIFICATES_DIR is supplied to the task to query for this location. For certificates with visibility of 'remoteUser', a 'certs' directory is created in the user's home directory (e.g., /home/{user-name}/certs) and certificates are placed in that directory.
     * 
     * Warning: This property is deprecated and will be removed after February, 2024. Please use the [Azure KeyVault Extension](https://learn.microsoft.com/azure/batch/batch-certificate-migration-guide) instead.
     * 
     */
    @Import(name="certificates")
    private @Nullable Output> certificates;

    /**
     * @return For Windows compute nodes, the Batch service installs the certificates to the specified certificate store and location. For Linux compute nodes, the certificates are stored in a directory inside the task working directory and an environment variable AZ_BATCH_CERTIFICATES_DIR is supplied to the task to query for this location. For certificates with visibility of 'remoteUser', a 'certs' directory is created in the user's home directory (e.g., /home/{user-name}/certs) and certificates are placed in that directory.
     * 
     * Warning: This property is deprecated and will be removed after February, 2024. Please use the [Azure KeyVault Extension](https://learn.microsoft.com/azure/batch/batch-certificate-migration-guide) instead.
     * 
     */
    public Optional>> certificates() {
        return Optional.ofNullable(this.certificates);
    }

    /**
     * Using CloudServiceConfiguration specifies that the nodes should be creating using Azure Cloud Services (PaaS), while VirtualMachineConfiguration uses Azure Virtual Machines (IaaS).
     * 
     */
    @Import(name="deploymentConfiguration")
    private @Nullable Output deploymentConfiguration;

    /**
     * @return Using CloudServiceConfiguration specifies that the nodes should be creating using Azure Cloud Services (PaaS), while VirtualMachineConfiguration uses Azure Virtual Machines (IaaS).
     * 
     */
    public Optional> deploymentConfiguration() {
        return Optional.ofNullable(this.deploymentConfiguration);
    }

    /**
     * The display name need not be unique and can contain any Unicode characters up to a maximum length of 1024.
     * 
     */
    @Import(name="displayName")
    private @Nullable Output displayName;

    /**
     * @return The display name need not be unique and can contain any Unicode characters up to a maximum length of 1024.
     * 
     */
    public Optional> displayName() {
        return Optional.ofNullable(this.displayName);
    }

    /**
     * The type of identity used for the Batch Pool.
     * 
     */
    @Import(name="identity")
    private @Nullable Output identity;

    /**
     * @return The type of identity used for the Batch Pool.
     * 
     */
    public Optional> identity() {
        return Optional.ofNullable(this.identity);
    }

    /**
     * This imposes restrictions on which nodes can be assigned to the pool. Enabling this value can reduce the chance of the requested number of nodes to be allocated in the pool. If not specified, this value defaults to 'Disabled'.
     * 
     */
    @Import(name="interNodeCommunication")
    private @Nullable Output interNodeCommunication;

    /**
     * @return This imposes restrictions on which nodes can be assigned to the pool. Enabling this value can reduce the chance of the requested number of nodes to be allocated in the pool. If not specified, this value defaults to 'Disabled'.
     * 
     */
    public Optional> interNodeCommunication() {
        return Optional.ofNullable(this.interNodeCommunication);
    }

    /**
     * The Batch service does not assign any meaning to metadata; it is solely for the use of user code.
     * 
     */
    @Import(name="metadata")
    private @Nullable Output> metadata;

    /**
     * @return The Batch service does not assign any meaning to metadata; it is solely for the use of user code.
     * 
     */
    public Optional>> metadata() {
        return Optional.ofNullable(this.metadata);
    }

    /**
     * This supports Azure Files, NFS, CIFS/SMB, and Blobfuse.
     * 
     */
    @Import(name="mountConfiguration")
    private @Nullable Output> mountConfiguration;

    /**
     * @return This supports Azure Files, NFS, CIFS/SMB, and Blobfuse.
     * 
     */
    public Optional>> mountConfiguration() {
        return Optional.ofNullable(this.mountConfiguration);
    }

    /**
     * The network configuration for a pool.
     * 
     */
    @Import(name="networkConfiguration")
    private @Nullable Output networkConfiguration;

    /**
     * @return The network configuration for a pool.
     * 
     */
    public Optional> networkConfiguration() {
        return Optional.ofNullable(this.networkConfiguration);
    }

    /**
     * The pool name. This must be unique within the account.
     * 
     */
    @Import(name="poolName")
    private @Nullable Output poolName;

    /**
     * @return The pool name. This must be unique within the account.
     * 
     */
    public Optional> poolName() {
        return Optional.ofNullable(this.poolName);
    }

    /**
     * The name of the resource group that contains the Batch account.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the resource group that contains the Batch account.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * Defines the desired size of the pool. This can either be 'fixedScale' where the requested targetDedicatedNodes is specified, or 'autoScale' which defines a formula which is periodically reevaluated. If this property is not specified, the pool will have a fixed scale with 0 targetDedicatedNodes.
     * 
     */
    @Import(name="scaleSettings")
    private @Nullable Output scaleSettings;

    /**
     * @return Defines the desired size of the pool. This can either be 'fixedScale' where the requested targetDedicatedNodes is specified, or 'autoScale' which defines a formula which is periodically reevaluated. If this property is not specified, the pool will have a fixed scale with 0 targetDedicatedNodes.
     * 
     */
    public Optional> scaleSettings() {
        return Optional.ofNullable(this.scaleSettings);
    }

    /**
     * In an PATCH (update) operation, this property can be set to an empty object to remove the start task from the pool.
     * 
     */
    @Import(name="startTask")
    private @Nullable Output startTask;

    /**
     * @return In an PATCH (update) operation, this property can be set to an empty object to remove the start task from the pool.
     * 
     */
    public Optional> startTask() {
        return Optional.ofNullable(this.startTask);
    }

    /**
     * If omitted, the default value is Default.
     * 
     */
    @Import(name="targetNodeCommunicationMode")
    private @Nullable Output targetNodeCommunicationMode;

    /**
     * @return If omitted, the default value is Default.
     * 
     */
    public Optional> targetNodeCommunicationMode() {
        return Optional.ofNullable(this.targetNodeCommunicationMode);
    }

    /**
     * If not specified, the default is spread.
     * 
     */
    @Import(name="taskSchedulingPolicy")
    private @Nullable Output taskSchedulingPolicy;

    /**
     * @return If not specified, the default is spread.
     * 
     */
    public Optional> taskSchedulingPolicy() {
        return Optional.ofNullable(this.taskSchedulingPolicy);
    }

    /**
     * The default value is 1. The maximum value is the smaller of 4 times the number of cores of the vmSize of the pool or 256.
     * 
     */
    @Import(name="taskSlotsPerNode")
    private @Nullable Output taskSlotsPerNode;

    /**
     * @return The default value is 1. The maximum value is the smaller of 4 times the number of cores of the vmSize of the pool or 256.
     * 
     */
    public Optional> taskSlotsPerNode() {
        return Optional.ofNullable(this.taskSlotsPerNode);
    }

    @Import(name="userAccounts")
    private @Nullable Output> userAccounts;

    public Optional>> userAccounts() {
        return Optional.ofNullable(this.userAccounts);
    }

    /**
     * For information about available sizes of virtual machines for Cloud Services pools (pools created with cloudServiceConfiguration), see Sizes for Cloud Services (https://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/). Batch supports all Cloud Services VM sizes except ExtraSmall. For information about available VM sizes for pools using images from the Virtual Machines Marketplace (pools created with virtualMachineConfiguration) see Sizes for Virtual Machines (Linux) (https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/) or Sizes for Virtual Machines (Windows) (https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/). Batch supports all Azure VM sizes except STANDARD_A0 and those with premium storage (STANDARD_GS, STANDARD_DS, and STANDARD_DSV2 series).
     * 
     */
    @Import(name="vmSize")
    private @Nullable Output vmSize;

    /**
     * @return For information about available sizes of virtual machines for Cloud Services pools (pools created with cloudServiceConfiguration), see Sizes for Cloud Services (https://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/). Batch supports all Cloud Services VM sizes except ExtraSmall. For information about available VM sizes for pools using images from the Virtual Machines Marketplace (pools created with virtualMachineConfiguration) see Sizes for Virtual Machines (Linux) (https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/) or Sizes for Virtual Machines (Windows) (https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/). Batch supports all Azure VM sizes except STANDARD_A0 and those with premium storage (STANDARD_GS, STANDARD_DS, and STANDARD_DSV2 series).
     * 
     */
    public Optional> vmSize() {
        return Optional.ofNullable(this.vmSize);
    }

    private PoolArgs() {}

    private PoolArgs(PoolArgs $) {
        this.accountName = $.accountName;
        this.applicationLicenses = $.applicationLicenses;
        this.applicationPackages = $.applicationPackages;
        this.certificates = $.certificates;
        this.deploymentConfiguration = $.deploymentConfiguration;
        this.displayName = $.displayName;
        this.identity = $.identity;
        this.interNodeCommunication = $.interNodeCommunication;
        this.metadata = $.metadata;
        this.mountConfiguration = $.mountConfiguration;
        this.networkConfiguration = $.networkConfiguration;
        this.poolName = $.poolName;
        this.resourceGroupName = $.resourceGroupName;
        this.scaleSettings = $.scaleSettings;
        this.startTask = $.startTask;
        this.targetNodeCommunicationMode = $.targetNodeCommunicationMode;
        this.taskSchedulingPolicy = $.taskSchedulingPolicy;
        this.taskSlotsPerNode = $.taskSlotsPerNode;
        this.userAccounts = $.userAccounts;
        this.vmSize = $.vmSize;
    }

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

    public static final class Builder {
        private PoolArgs $;

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

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

        /**
         * @param accountName The name of the Batch account.
         * 
         * @return builder
         * 
         */
        public Builder accountName(Output accountName) {
            $.accountName = accountName;
            return this;
        }

        /**
         * @param accountName The name of the Batch account.
         * 
         * @return builder
         * 
         */
        public Builder accountName(String accountName) {
            return accountName(Output.of(accountName));
        }

        /**
         * @param applicationLicenses The list of application licenses must be a subset of available Batch service application licenses. If a license is requested which is not supported, pool creation will fail.
         * 
         * @return builder
         * 
         */
        public Builder applicationLicenses(@Nullable Output> applicationLicenses) {
            $.applicationLicenses = applicationLicenses;
            return this;
        }

        /**
         * @param applicationLicenses The list of application licenses must be a subset of available Batch service application licenses. If a license is requested which is not supported, pool creation will fail.
         * 
         * @return builder
         * 
         */
        public Builder applicationLicenses(List applicationLicenses) {
            return applicationLicenses(Output.of(applicationLicenses));
        }

        /**
         * @param applicationLicenses The list of application licenses must be a subset of available Batch service application licenses. If a license is requested which is not supported, pool creation will fail.
         * 
         * @return builder
         * 
         */
        public Builder applicationLicenses(String... applicationLicenses) {
            return applicationLicenses(List.of(applicationLicenses));
        }

        /**
         * @param applicationPackages Changes to application package references affect all new compute nodes joining the pool, but do not affect compute nodes that are already in the pool until they are rebooted or reimaged. There is a maximum of 10 application package references on any given pool.
         * 
         * @return builder
         * 
         */
        public Builder applicationPackages(@Nullable Output> applicationPackages) {
            $.applicationPackages = applicationPackages;
            return this;
        }

        /**
         * @param applicationPackages Changes to application package references affect all new compute nodes joining the pool, but do not affect compute nodes that are already in the pool until they are rebooted or reimaged. There is a maximum of 10 application package references on any given pool.
         * 
         * @return builder
         * 
         */
        public Builder applicationPackages(List applicationPackages) {
            return applicationPackages(Output.of(applicationPackages));
        }

        /**
         * @param applicationPackages Changes to application package references affect all new compute nodes joining the pool, but do not affect compute nodes that are already in the pool until they are rebooted or reimaged. There is a maximum of 10 application package references on any given pool.
         * 
         * @return builder
         * 
         */
        public Builder applicationPackages(ApplicationPackageReferenceArgs... applicationPackages) {
            return applicationPackages(List.of(applicationPackages));
        }

        /**
         * @param certificates For Windows compute nodes, the Batch service installs the certificates to the specified certificate store and location. For Linux compute nodes, the certificates are stored in a directory inside the task working directory and an environment variable AZ_BATCH_CERTIFICATES_DIR is supplied to the task to query for this location. For certificates with visibility of 'remoteUser', a 'certs' directory is created in the user's home directory (e.g., /home/{user-name}/certs) and certificates are placed in that directory.
         * 
         * Warning: This property is deprecated and will be removed after February, 2024. Please use the [Azure KeyVault Extension](https://learn.microsoft.com/azure/batch/batch-certificate-migration-guide) instead.
         * 
         * @return builder
         * 
         */
        public Builder certificates(@Nullable Output> certificates) {
            $.certificates = certificates;
            return this;
        }

        /**
         * @param certificates For Windows compute nodes, the Batch service installs the certificates to the specified certificate store and location. For Linux compute nodes, the certificates are stored in a directory inside the task working directory and an environment variable AZ_BATCH_CERTIFICATES_DIR is supplied to the task to query for this location. For certificates with visibility of 'remoteUser', a 'certs' directory is created in the user's home directory (e.g., /home/{user-name}/certs) and certificates are placed in that directory.
         * 
         * Warning: This property is deprecated and will be removed after February, 2024. Please use the [Azure KeyVault Extension](https://learn.microsoft.com/azure/batch/batch-certificate-migration-guide) instead.
         * 
         * @return builder
         * 
         */
        public Builder certificates(List certificates) {
            return certificates(Output.of(certificates));
        }

        /**
         * @param certificates For Windows compute nodes, the Batch service installs the certificates to the specified certificate store and location. For Linux compute nodes, the certificates are stored in a directory inside the task working directory and an environment variable AZ_BATCH_CERTIFICATES_DIR is supplied to the task to query for this location. For certificates with visibility of 'remoteUser', a 'certs' directory is created in the user's home directory (e.g., /home/{user-name}/certs) and certificates are placed in that directory.
         * 
         * Warning: This property is deprecated and will be removed after February, 2024. Please use the [Azure KeyVault Extension](https://learn.microsoft.com/azure/batch/batch-certificate-migration-guide) instead.
         * 
         * @return builder
         * 
         */
        public Builder certificates(CertificateReferenceArgs... certificates) {
            return certificates(List.of(certificates));
        }

        /**
         * @param deploymentConfiguration Using CloudServiceConfiguration specifies that the nodes should be creating using Azure Cloud Services (PaaS), while VirtualMachineConfiguration uses Azure Virtual Machines (IaaS).
         * 
         * @return builder
         * 
         */
        public Builder deploymentConfiguration(@Nullable Output deploymentConfiguration) {
            $.deploymentConfiguration = deploymentConfiguration;
            return this;
        }

        /**
         * @param deploymentConfiguration Using CloudServiceConfiguration specifies that the nodes should be creating using Azure Cloud Services (PaaS), while VirtualMachineConfiguration uses Azure Virtual Machines (IaaS).
         * 
         * @return builder
         * 
         */
        public Builder deploymentConfiguration(DeploymentConfigurationArgs deploymentConfiguration) {
            return deploymentConfiguration(Output.of(deploymentConfiguration));
        }

        /**
         * @param displayName The display name need not be unique and can contain any Unicode characters up to a maximum length of 1024.
         * 
         * @return builder
         * 
         */
        public Builder displayName(@Nullable Output displayName) {
            $.displayName = displayName;
            return this;
        }

        /**
         * @param displayName The display name need not be unique and can contain any Unicode characters up to a maximum length of 1024.
         * 
         * @return builder
         * 
         */
        public Builder displayName(String displayName) {
            return displayName(Output.of(displayName));
        }

        /**
         * @param identity The type of identity used for the Batch Pool.
         * 
         * @return builder
         * 
         */
        public Builder identity(@Nullable Output identity) {
            $.identity = identity;
            return this;
        }

        /**
         * @param identity The type of identity used for the Batch Pool.
         * 
         * @return builder
         * 
         */
        public Builder identity(BatchPoolIdentityArgs identity) {
            return identity(Output.of(identity));
        }

        /**
         * @param interNodeCommunication This imposes restrictions on which nodes can be assigned to the pool. Enabling this value can reduce the chance of the requested number of nodes to be allocated in the pool. If not specified, this value defaults to 'Disabled'.
         * 
         * @return builder
         * 
         */
        public Builder interNodeCommunication(@Nullable Output interNodeCommunication) {
            $.interNodeCommunication = interNodeCommunication;
            return this;
        }

        /**
         * @param interNodeCommunication This imposes restrictions on which nodes can be assigned to the pool. Enabling this value can reduce the chance of the requested number of nodes to be allocated in the pool. If not specified, this value defaults to 'Disabled'.
         * 
         * @return builder
         * 
         */
        public Builder interNodeCommunication(InterNodeCommunicationState interNodeCommunication) {
            return interNodeCommunication(Output.of(interNodeCommunication));
        }

        /**
         * @param metadata The Batch service does not assign any meaning to metadata; it is solely for the use of user code.
         * 
         * @return builder
         * 
         */
        public Builder metadata(@Nullable Output> metadata) {
            $.metadata = metadata;
            return this;
        }

        /**
         * @param metadata The Batch service does not assign any meaning to metadata; it is solely for the use of user code.
         * 
         * @return builder
         * 
         */
        public Builder metadata(List metadata) {
            return metadata(Output.of(metadata));
        }

        /**
         * @param metadata The Batch service does not assign any meaning to metadata; it is solely for the use of user code.
         * 
         * @return builder
         * 
         */
        public Builder metadata(MetadataItemArgs... metadata) {
            return metadata(List.of(metadata));
        }

        /**
         * @param mountConfiguration This supports Azure Files, NFS, CIFS/SMB, and Blobfuse.
         * 
         * @return builder
         * 
         */
        public Builder mountConfiguration(@Nullable Output> mountConfiguration) {
            $.mountConfiguration = mountConfiguration;
            return this;
        }

        /**
         * @param mountConfiguration This supports Azure Files, NFS, CIFS/SMB, and Blobfuse.
         * 
         * @return builder
         * 
         */
        public Builder mountConfiguration(List mountConfiguration) {
            return mountConfiguration(Output.of(mountConfiguration));
        }

        /**
         * @param mountConfiguration This supports Azure Files, NFS, CIFS/SMB, and Blobfuse.
         * 
         * @return builder
         * 
         */
        public Builder mountConfiguration(MountConfigurationArgs... mountConfiguration) {
            return mountConfiguration(List.of(mountConfiguration));
        }

        /**
         * @param networkConfiguration The network configuration for a pool.
         * 
         * @return builder
         * 
         */
        public Builder networkConfiguration(@Nullable Output networkConfiguration) {
            $.networkConfiguration = networkConfiguration;
            return this;
        }

        /**
         * @param networkConfiguration The network configuration for a pool.
         * 
         * @return builder
         * 
         */
        public Builder networkConfiguration(NetworkConfigurationArgs networkConfiguration) {
            return networkConfiguration(Output.of(networkConfiguration));
        }

        /**
         * @param poolName The pool name. This must be unique within the account.
         * 
         * @return builder
         * 
         */
        public Builder poolName(@Nullable Output poolName) {
            $.poolName = poolName;
            return this;
        }

        /**
         * @param poolName The pool name. This must be unique within the account.
         * 
         * @return builder
         * 
         */
        public Builder poolName(String poolName) {
            return poolName(Output.of(poolName));
        }

        /**
         * @param resourceGroupName The name of the resource group that contains the Batch account.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group that contains the Batch account.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param scaleSettings Defines the desired size of the pool. This can either be 'fixedScale' where the requested targetDedicatedNodes is specified, or 'autoScale' which defines a formula which is periodically reevaluated. If this property is not specified, the pool will have a fixed scale with 0 targetDedicatedNodes.
         * 
         * @return builder
         * 
         */
        public Builder scaleSettings(@Nullable Output scaleSettings) {
            $.scaleSettings = scaleSettings;
            return this;
        }

        /**
         * @param scaleSettings Defines the desired size of the pool. This can either be 'fixedScale' where the requested targetDedicatedNodes is specified, or 'autoScale' which defines a formula which is periodically reevaluated. If this property is not specified, the pool will have a fixed scale with 0 targetDedicatedNodes.
         * 
         * @return builder
         * 
         */
        public Builder scaleSettings(ScaleSettingsArgs scaleSettings) {
            return scaleSettings(Output.of(scaleSettings));
        }

        /**
         * @param startTask In an PATCH (update) operation, this property can be set to an empty object to remove the start task from the pool.
         * 
         * @return builder
         * 
         */
        public Builder startTask(@Nullable Output startTask) {
            $.startTask = startTask;
            return this;
        }

        /**
         * @param startTask In an PATCH (update) operation, this property can be set to an empty object to remove the start task from the pool.
         * 
         * @return builder
         * 
         */
        public Builder startTask(StartTaskArgs startTask) {
            return startTask(Output.of(startTask));
        }

        /**
         * @param targetNodeCommunicationMode If omitted, the default value is Default.
         * 
         * @return builder
         * 
         */
        public Builder targetNodeCommunicationMode(@Nullable Output targetNodeCommunicationMode) {
            $.targetNodeCommunicationMode = targetNodeCommunicationMode;
            return this;
        }

        /**
         * @param targetNodeCommunicationMode If omitted, the default value is Default.
         * 
         * @return builder
         * 
         */
        public Builder targetNodeCommunicationMode(NodeCommunicationMode targetNodeCommunicationMode) {
            return targetNodeCommunicationMode(Output.of(targetNodeCommunicationMode));
        }

        /**
         * @param taskSchedulingPolicy If not specified, the default is spread.
         * 
         * @return builder
         * 
         */
        public Builder taskSchedulingPolicy(@Nullable Output taskSchedulingPolicy) {
            $.taskSchedulingPolicy = taskSchedulingPolicy;
            return this;
        }

        /**
         * @param taskSchedulingPolicy If not specified, the default is spread.
         * 
         * @return builder
         * 
         */
        public Builder taskSchedulingPolicy(TaskSchedulingPolicyArgs taskSchedulingPolicy) {
            return taskSchedulingPolicy(Output.of(taskSchedulingPolicy));
        }

        /**
         * @param taskSlotsPerNode The default value is 1. The maximum value is the smaller of 4 times the number of cores of the vmSize of the pool or 256.
         * 
         * @return builder
         * 
         */
        public Builder taskSlotsPerNode(@Nullable Output taskSlotsPerNode) {
            $.taskSlotsPerNode = taskSlotsPerNode;
            return this;
        }

        /**
         * @param taskSlotsPerNode The default value is 1. The maximum value is the smaller of 4 times the number of cores of the vmSize of the pool or 256.
         * 
         * @return builder
         * 
         */
        public Builder taskSlotsPerNode(Integer taskSlotsPerNode) {
            return taskSlotsPerNode(Output.of(taskSlotsPerNode));
        }

        public Builder userAccounts(@Nullable Output> userAccounts) {
            $.userAccounts = userAccounts;
            return this;
        }

        public Builder userAccounts(List userAccounts) {
            return userAccounts(Output.of(userAccounts));
        }

        public Builder userAccounts(UserAccountArgs... userAccounts) {
            return userAccounts(List.of(userAccounts));
        }

        /**
         * @param vmSize For information about available sizes of virtual machines for Cloud Services pools (pools created with cloudServiceConfiguration), see Sizes for Cloud Services (https://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/). Batch supports all Cloud Services VM sizes except ExtraSmall. For information about available VM sizes for pools using images from the Virtual Machines Marketplace (pools created with virtualMachineConfiguration) see Sizes for Virtual Machines (Linux) (https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/) or Sizes for Virtual Machines (Windows) (https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/). Batch supports all Azure VM sizes except STANDARD_A0 and those with premium storage (STANDARD_GS, STANDARD_DS, and STANDARD_DSV2 series).
         * 
         * @return builder
         * 
         */
        public Builder vmSize(@Nullable Output vmSize) {
            $.vmSize = vmSize;
            return this;
        }

        /**
         * @param vmSize For information about available sizes of virtual machines for Cloud Services pools (pools created with cloudServiceConfiguration), see Sizes for Cloud Services (https://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/). Batch supports all Cloud Services VM sizes except ExtraSmall. For information about available VM sizes for pools using images from the Virtual Machines Marketplace (pools created with virtualMachineConfiguration) see Sizes for Virtual Machines (Linux) (https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/) or Sizes for Virtual Machines (Windows) (https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/). Batch supports all Azure VM sizes except STANDARD_A0 and those with premium storage (STANDARD_GS, STANDARD_DS, and STANDARD_DSV2 series).
         * 
         * @return builder
         * 
         */
        public Builder vmSize(String vmSize) {
            return vmSize(Output.of(vmSize));
        }

        public PoolArgs build() {
            if ($.accountName == null) {
                throw new MissingRequiredPropertyException("PoolArgs", "accountName");
            }
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("PoolArgs", "resourceGroupName");
            }
            $.taskSlotsPerNode = Codegen.integerProp("taskSlotsPerNode").output().arg($.taskSlotsPerNode).def(1).getNullable();
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy