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

com.pulumi.azure.batch.inputs.PoolState Maven / Gradle / Ivy

// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.batch.inputs;

import com.pulumi.azure.batch.inputs.PoolAutoScaleArgs;
import com.pulumi.azure.batch.inputs.PoolCertificateArgs;
import com.pulumi.azure.batch.inputs.PoolContainerConfigurationArgs;
import com.pulumi.azure.batch.inputs.PoolDataDiskArgs;
import com.pulumi.azure.batch.inputs.PoolDiskEncryptionArgs;
import com.pulumi.azure.batch.inputs.PoolExtensionArgs;
import com.pulumi.azure.batch.inputs.PoolFixedScaleArgs;
import com.pulumi.azure.batch.inputs.PoolIdentityArgs;
import com.pulumi.azure.batch.inputs.PoolMountArgs;
import com.pulumi.azure.batch.inputs.PoolNetworkConfigurationArgs;
import com.pulumi.azure.batch.inputs.PoolNodePlacementArgs;
import com.pulumi.azure.batch.inputs.PoolStartTaskArgs;
import com.pulumi.azure.batch.inputs.PoolStorageImageReferenceArgs;
import com.pulumi.azure.batch.inputs.PoolTaskSchedulingPolicyArgs;
import com.pulumi.azure.batch.inputs.PoolUserAccountArgs;
import com.pulumi.azure.batch.inputs.PoolWindowArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.Integer;
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 PoolState extends com.pulumi.resources.ResourceArgs {

    public static final PoolState Empty = new PoolState();

    /**
     * Specifies the name of the Batch account in which the pool will be created. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="accountName")
    private @Nullable Output accountName;

    /**
     * @return Specifies the name of the Batch account in which the pool will be created. Changing this forces a new resource to be created.
     * 
     */
    public Optional> accountName() {
        return Optional.ofNullable(this.accountName);
    }

    /**
     * A `auto_scale` block that describes the scale settings when using auto scale as defined below.
     * 
     */
    @Import(name="autoScale")
    private @Nullable Output autoScale;

    /**
     * @return A `auto_scale` block that describes the scale settings when using auto scale as defined below.
     * 
     */
    public Optional> autoScale() {
        return Optional.ofNullable(this.autoScale);
    }

    /**
     * One or more `certificate` blocks that describe the certificates to be installed on each compute node in the pool as defined below.
     * 
     */
    @Import(name="certificates")
    private @Nullable Output> certificates;

    /**
     * @return One or more `certificate` blocks that describe the certificates to be installed on each compute node in the pool as defined below.
     * 
     */
    public Optional>> certificates() {
        return Optional.ofNullable(this.certificates);
    }

    /**
     * The container configuration used in the pool's VMs. One `container_configuration` block as defined below.
     * 
     */
    @Import(name="containerConfiguration")
    private @Nullable Output containerConfiguration;

    /**
     * @return The container configuration used in the pool's VMs. One `container_configuration` block as defined below.
     * 
     */
    public Optional> containerConfiguration() {
        return Optional.ofNullable(this.containerConfiguration);
    }

    /**
     * A `data_disks` block describes the data disk settings as defined below.
     * 
     */
    @Import(name="dataDisks")
    private @Nullable Output> dataDisks;

    /**
     * @return A `data_disks` block describes the data disk settings as defined below.
     * 
     */
    public Optional>> dataDisks() {
        return Optional.ofNullable(this.dataDisks);
    }

    /**
     * A `disk_encryption` block, as defined below, describes the disk encryption configuration applied on compute nodes in the pool. Disk encryption configuration is not supported on Linux pool created with Virtual Machine Image or Shared Image Gallery Image.
     * 
     */
    @Import(name="diskEncryptions")
    private @Nullable Output> diskEncryptions;

    /**
     * @return A `disk_encryption` block, as defined below, describes the disk encryption configuration applied on compute nodes in the pool. Disk encryption configuration is not supported on Linux pool created with Virtual Machine Image or Shared Image Gallery Image.
     * 
     */
    public Optional>> diskEncryptions() {
        return Optional.ofNullable(this.diskEncryptions);
    }

    /**
     * Specifies the display name of the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="displayName")
    private @Nullable Output displayName;

    /**
     * @return Specifies the display name of the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    public Optional> displayName() {
        return Optional.ofNullable(this.displayName);
    }

    /**
     * An `extensions` block as defined below.
     * 
     */
    @Import(name="extensions")
    private @Nullable Output> extensions;

    /**
     * @return An `extensions` block as defined below.
     * 
     */
    public Optional>> extensions() {
        return Optional.ofNullable(this.extensions);
    }

    /**
     * A `fixed_scale` block that describes the scale settings when using fixed scale as defined below.
     * 
     */
    @Import(name="fixedScale")
    private @Nullable Output fixedScale;

    /**
     * @return A `fixed_scale` block that describes the scale settings when using fixed scale as defined below.
     * 
     */
    public Optional> fixedScale() {
        return Optional.ofNullable(this.fixedScale);
    }

    /**
     * An `identity` block as defined below.
     * 
     */
    @Import(name="identity")
    private @Nullable Output identity;

    /**
     * @return An `identity` block as defined below.
     * 
     */
    public Optional> identity() {
        return Optional.ofNullable(this.identity);
    }

    /**
     * Whether the pool permits direct communication between nodes. 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. Values allowed are `Disabled` and `Enabled`. Defaults to `Enabled`.
     * 
     */
    @Import(name="interNodeCommunication")
    private @Nullable Output interNodeCommunication;

    /**
     * @return Whether the pool permits direct communication between nodes. 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. Values allowed are `Disabled` and `Enabled`. Defaults to `Enabled`.
     * 
     */
    public Optional> interNodeCommunication() {
        return Optional.ofNullable(this.interNodeCommunication);
    }

    /**
     * The type of on-premises license to be used when deploying the operating system. This only applies to images that contain the Windows operating system, and should only be used when you hold valid on-premises licenses for the nodes which will be deployed. If omitted, no on-premises licensing discount is applied. Values are: "Windows_Server" - The on-premises license is for Windows Server. "Windows_Client" - The on-premises license is for Windows Client.
     * 
     */
    @Import(name="licenseType")
    private @Nullable Output licenseType;

    /**
     * @return The type of on-premises license to be used when deploying the operating system. This only applies to images that contain the Windows operating system, and should only be used when you hold valid on-premises licenses for the nodes which will be deployed. If omitted, no on-premises licensing discount is applied. Values are: "Windows_Server" - The on-premises license is for Windows Server. "Windows_Client" - The on-premises license is for Windows Client.
     * 
     */
    public Optional> licenseType() {
        return Optional.ofNullable(this.licenseType);
    }

    /**
     * Specifies the maximum number of tasks that can run concurrently on a single compute node in the pool. Defaults to `1`. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="maxTasksPerNode")
    private @Nullable Output maxTasksPerNode;

    /**
     * @return Specifies the maximum number of tasks that can run concurrently on a single compute node in the pool. Defaults to `1`. Changing this forces a new resource to be created.
     * 
     */
    public Optional> maxTasksPerNode() {
        return Optional.ofNullable(this.maxTasksPerNode);
    }

    /**
     * A map of custom batch pool metadata.
     * 
     */
    @Import(name="metadata")
    private @Nullable Output> metadata;

    /**
     * @return A map of custom batch pool metadata.
     * 
     */
    public Optional>> metadata() {
        return Optional.ofNullable(this.metadata);
    }

    /**
     * A `mount` block defined as below.
     * 
     */
    @Import(name="mounts")
    private @Nullable Output> mounts;

    /**
     * @return A `mount` block defined as below.
     * 
     */
    public Optional>> mounts() {
        return Optional.ofNullable(this.mounts);
    }

    /**
     * Specifies the name of the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return Specifies the name of the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * A `network_configuration` block that describes the network configurations for the Batch pool as defined below. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="networkConfiguration")
    private @Nullable Output networkConfiguration;

    /**
     * @return A `network_configuration` block that describes the network configurations for the Batch pool as defined below. Changing this forces a new resource to be created.
     * 
     */
    public Optional> networkConfiguration() {
        return Optional.ofNullable(this.networkConfiguration);
    }

    /**
     * Specifies the SKU of the node agents that will be created in the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="nodeAgentSkuId")
    private @Nullable Output nodeAgentSkuId;

    /**
     * @return Specifies the SKU of the node agents that will be created in the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    public Optional> nodeAgentSkuId() {
        return Optional.ofNullable(this.nodeAgentSkuId);
    }

    /**
     * A `node_placement` block that describes the placement policy for allocating nodes in the pool as defined below.
     * 
     */
    @Import(name="nodePlacements")
    private @Nullable Output> nodePlacements;

    /**
     * @return A `node_placement` block that describes the placement policy for allocating nodes in the pool as defined below.
     * 
     */
    public Optional>> nodePlacements() {
        return Optional.ofNullable(this.nodePlacements);
    }

    /**
     * Specifies the ephemeral disk placement for operating system disk for all VMs in the pool. This property can be used by user in the request to choose which location the operating system should be in. e.g., cache disk space for Ephemeral OS disk provisioning. For more information on Ephemeral OS disk size requirements, please refer to Ephemeral OS disk size requirements for Windows VMs at <https://docs.microsoft.com/en-us/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements> and Linux VMs at <https://docs.microsoft.com/en-us/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements>. The only possible value is `CacheDisk`.
     * 
     */
    @Import(name="osDiskPlacement")
    private @Nullable Output osDiskPlacement;

    /**
     * @return Specifies the ephemeral disk placement for operating system disk for all VMs in the pool. This property can be used by user in the request to choose which location the operating system should be in. e.g., cache disk space for Ephemeral OS disk provisioning. For more information on Ephemeral OS disk size requirements, please refer to Ephemeral OS disk size requirements for Windows VMs at <https://docs.microsoft.com/en-us/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements> and Linux VMs at <https://docs.microsoft.com/en-us/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements>. The only possible value is `CacheDisk`.
     * 
     */
    public Optional> osDiskPlacement() {
        return Optional.ofNullable(this.osDiskPlacement);
    }

    /**
     * The name of the resource group in which to create the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="resourceGroupName")
    private @Nullable Output resourceGroupName;

    /**
     * @return The name of the resource group in which to create the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    public Optional> resourceGroupName() {
        return Optional.ofNullable(this.resourceGroupName);
    }

    /**
     * A `start_task` block that describes the start task settings for the Batch pool as defined below.
     * 
     */
    @Import(name="startTask")
    private @Nullable Output startTask;

    /**
     * @return A `start_task` block that describes the start task settings for the Batch pool as defined below.
     * 
     */
    public Optional> startTask() {
        return Optional.ofNullable(this.startTask);
    }

    /**
     * Whether to stop if there is a pending resize operation on this pool.
     * 
     */
    @Import(name="stopPendingResizeOperation")
    private @Nullable Output stopPendingResizeOperation;

    /**
     * @return Whether to stop if there is a pending resize operation on this pool.
     * 
     */
    public Optional> stopPendingResizeOperation() {
        return Optional.ofNullable(this.stopPendingResizeOperation);
    }

    /**
     * A `storage_image_reference` block for the virtual machines that will compose the Batch pool as defined below. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="storageImageReference")
    private @Nullable Output storageImageReference;

    /**
     * @return A `storage_image_reference` block for the virtual machines that will compose the Batch pool as defined below. Changing this forces a new resource to be created.
     * 
     */
    public Optional> storageImageReference() {
        return Optional.ofNullable(this.storageImageReference);
    }

    /**
     * The desired node communication mode for the pool. Possible values are `Classic`, `Default` and `Simplified`.
     * 
     */
    @Import(name="targetNodeCommunicationMode")
    private @Nullable Output targetNodeCommunicationMode;

    /**
     * @return The desired node communication mode for the pool. Possible values are `Classic`, `Default` and `Simplified`.
     * 
     */
    public Optional> targetNodeCommunicationMode() {
        return Optional.ofNullable(this.targetNodeCommunicationMode);
    }

    /**
     * A `task_scheduling_policy` block that describes how tasks are distributed across compute nodes in a pool as defined below. If not specified, the default is spread as defined below.
     * 
     */
    @Import(name="taskSchedulingPolicies")
    private @Nullable Output> taskSchedulingPolicies;

    /**
     * @return A `task_scheduling_policy` block that describes how tasks are distributed across compute nodes in a pool as defined below. If not specified, the default is spread as defined below.
     * 
     */
    public Optional>> taskSchedulingPolicies() {
        return Optional.ofNullable(this.taskSchedulingPolicies);
    }

    /**
     * A `user_accounts` block that describes the list of user accounts to be created on each node in the pool as defined below.
     * 
     */
    @Import(name="userAccounts")
    private @Nullable Output> userAccounts;

    /**
     * @return A `user_accounts` block that describes the list of user accounts to be created on each node in the pool as defined below.
     * 
     */
    public Optional>> userAccounts() {
        return Optional.ofNullable(this.userAccounts);
    }

    /**
     * Specifies the size of the VM created in the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="vmSize")
    private @Nullable Output vmSize;

    /**
     * @return Specifies the size of the VM created in the Batch pool. Changing this forces a new resource to be created.
     * 
     */
    public Optional> vmSize() {
        return Optional.ofNullable(this.vmSize);
    }

    /**
     * A `windows` block that describes the Windows configuration in the pool as defined below.
     * 
     * > **NOTE:** 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.
     * 
     * > **Please Note:** `fixed_scale` and `auto_scale` blocks cannot be used both at the same time.
     * 
     */
    @Import(name="windows")
    private @Nullable Output> windows;

    /**
     * @return A `windows` block that describes the Windows configuration in the pool as defined below.
     * 
     * > **NOTE:** 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.
     * 
     * > **Please Note:** `fixed_scale` and `auto_scale` blocks cannot be used both at the same time.
     * 
     */
    public Optional>> windows() {
        return Optional.ofNullable(this.windows);
    }

    private PoolState() {}

    private PoolState(PoolState $) {
        this.accountName = $.accountName;
        this.autoScale = $.autoScale;
        this.certificates = $.certificates;
        this.containerConfiguration = $.containerConfiguration;
        this.dataDisks = $.dataDisks;
        this.diskEncryptions = $.diskEncryptions;
        this.displayName = $.displayName;
        this.extensions = $.extensions;
        this.fixedScale = $.fixedScale;
        this.identity = $.identity;
        this.interNodeCommunication = $.interNodeCommunication;
        this.licenseType = $.licenseType;
        this.maxTasksPerNode = $.maxTasksPerNode;
        this.metadata = $.metadata;
        this.mounts = $.mounts;
        this.name = $.name;
        this.networkConfiguration = $.networkConfiguration;
        this.nodeAgentSkuId = $.nodeAgentSkuId;
        this.nodePlacements = $.nodePlacements;
        this.osDiskPlacement = $.osDiskPlacement;
        this.resourceGroupName = $.resourceGroupName;
        this.startTask = $.startTask;
        this.stopPendingResizeOperation = $.stopPendingResizeOperation;
        this.storageImageReference = $.storageImageReference;
        this.targetNodeCommunicationMode = $.targetNodeCommunicationMode;
        this.taskSchedulingPolicies = $.taskSchedulingPolicies;
        this.userAccounts = $.userAccounts;
        this.vmSize = $.vmSize;
        this.windows = $.windows;
    }

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

    public static final class Builder {
        private PoolState $;

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

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

        /**
         * @param accountName Specifies the name of the Batch account in which the pool will be created. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder accountName(@Nullable Output accountName) {
            $.accountName = accountName;
            return this;
        }

        /**
         * @param accountName Specifies the name of the Batch account in which the pool will be created. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder accountName(String accountName) {
            return accountName(Output.of(accountName));
        }

        /**
         * @param autoScale A `auto_scale` block that describes the scale settings when using auto scale as defined below.
         * 
         * @return builder
         * 
         */
        public Builder autoScale(@Nullable Output autoScale) {
            $.autoScale = autoScale;
            return this;
        }

        /**
         * @param autoScale A `auto_scale` block that describes the scale settings when using auto scale as defined below.
         * 
         * @return builder
         * 
         */
        public Builder autoScale(PoolAutoScaleArgs autoScale) {
            return autoScale(Output.of(autoScale));
        }

        /**
         * @param certificates One or more `certificate` blocks that describe the certificates to be installed on each compute node in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder certificates(@Nullable Output> certificates) {
            $.certificates = certificates;
            return this;
        }

        /**
         * @param certificates One or more `certificate` blocks that describe the certificates to be installed on each compute node in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder certificates(List certificates) {
            return certificates(Output.of(certificates));
        }

        /**
         * @param certificates One or more `certificate` blocks that describe the certificates to be installed on each compute node in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder certificates(PoolCertificateArgs... certificates) {
            return certificates(List.of(certificates));
        }

        /**
         * @param containerConfiguration The container configuration used in the pool's VMs. One `container_configuration` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder containerConfiguration(@Nullable Output containerConfiguration) {
            $.containerConfiguration = containerConfiguration;
            return this;
        }

        /**
         * @param containerConfiguration The container configuration used in the pool's VMs. One `container_configuration` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder containerConfiguration(PoolContainerConfigurationArgs containerConfiguration) {
            return containerConfiguration(Output.of(containerConfiguration));
        }

        /**
         * @param dataDisks A `data_disks` block describes the data disk settings as defined below.
         * 
         * @return builder
         * 
         */
        public Builder dataDisks(@Nullable Output> dataDisks) {
            $.dataDisks = dataDisks;
            return this;
        }

        /**
         * @param dataDisks A `data_disks` block describes the data disk settings as defined below.
         * 
         * @return builder
         * 
         */
        public Builder dataDisks(List dataDisks) {
            return dataDisks(Output.of(dataDisks));
        }

        /**
         * @param dataDisks A `data_disks` block describes the data disk settings as defined below.
         * 
         * @return builder
         * 
         */
        public Builder dataDisks(PoolDataDiskArgs... dataDisks) {
            return dataDisks(List.of(dataDisks));
        }

        /**
         * @param diskEncryptions A `disk_encryption` block, as defined below, describes the disk encryption configuration applied on compute nodes in the pool. Disk encryption configuration is not supported on Linux pool created with Virtual Machine Image or Shared Image Gallery Image.
         * 
         * @return builder
         * 
         */
        public Builder diskEncryptions(@Nullable Output> diskEncryptions) {
            $.diskEncryptions = diskEncryptions;
            return this;
        }

        /**
         * @param diskEncryptions A `disk_encryption` block, as defined below, describes the disk encryption configuration applied on compute nodes in the pool. Disk encryption configuration is not supported on Linux pool created with Virtual Machine Image or Shared Image Gallery Image.
         * 
         * @return builder
         * 
         */
        public Builder diskEncryptions(List diskEncryptions) {
            return diskEncryptions(Output.of(diskEncryptions));
        }

        /**
         * @param diskEncryptions A `disk_encryption` block, as defined below, describes the disk encryption configuration applied on compute nodes in the pool. Disk encryption configuration is not supported on Linux pool created with Virtual Machine Image or Shared Image Gallery Image.
         * 
         * @return builder
         * 
         */
        public Builder diskEncryptions(PoolDiskEncryptionArgs... diskEncryptions) {
            return diskEncryptions(List.of(diskEncryptions));
        }

        /**
         * @param displayName Specifies the display name of the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder displayName(@Nullable Output displayName) {
            $.displayName = displayName;
            return this;
        }

        /**
         * @param displayName Specifies the display name of the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder displayName(String displayName) {
            return displayName(Output.of(displayName));
        }

        /**
         * @param extensions An `extensions` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder extensions(@Nullable Output> extensions) {
            $.extensions = extensions;
            return this;
        }

        /**
         * @param extensions An `extensions` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder extensions(List extensions) {
            return extensions(Output.of(extensions));
        }

        /**
         * @param extensions An `extensions` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder extensions(PoolExtensionArgs... extensions) {
            return extensions(List.of(extensions));
        }

        /**
         * @param fixedScale A `fixed_scale` block that describes the scale settings when using fixed scale as defined below.
         * 
         * @return builder
         * 
         */
        public Builder fixedScale(@Nullable Output fixedScale) {
            $.fixedScale = fixedScale;
            return this;
        }

        /**
         * @param fixedScale A `fixed_scale` block that describes the scale settings when using fixed scale as defined below.
         * 
         * @return builder
         * 
         */
        public Builder fixedScale(PoolFixedScaleArgs fixedScale) {
            return fixedScale(Output.of(fixedScale));
        }

        /**
         * @param identity An `identity` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder identity(@Nullable Output identity) {
            $.identity = identity;
            return this;
        }

        /**
         * @param identity An `identity` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder identity(PoolIdentityArgs identity) {
            return identity(Output.of(identity));
        }

        /**
         * @param interNodeCommunication Whether the pool permits direct communication between nodes. 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. Values allowed are `Disabled` and `Enabled`. Defaults to `Enabled`.
         * 
         * @return builder
         * 
         */
        public Builder interNodeCommunication(@Nullable Output interNodeCommunication) {
            $.interNodeCommunication = interNodeCommunication;
            return this;
        }

        /**
         * @param interNodeCommunication Whether the pool permits direct communication between nodes. 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. Values allowed are `Disabled` and `Enabled`. Defaults to `Enabled`.
         * 
         * @return builder
         * 
         */
        public Builder interNodeCommunication(String interNodeCommunication) {
            return interNodeCommunication(Output.of(interNodeCommunication));
        }

        /**
         * @param licenseType The type of on-premises license to be used when deploying the operating system. This only applies to images that contain the Windows operating system, and should only be used when you hold valid on-premises licenses for the nodes which will be deployed. If omitted, no on-premises licensing discount is applied. Values are: "Windows_Server" - The on-premises license is for Windows Server. "Windows_Client" - The on-premises license is for Windows Client.
         * 
         * @return builder
         * 
         */
        public Builder licenseType(@Nullable Output licenseType) {
            $.licenseType = licenseType;
            return this;
        }

        /**
         * @param licenseType The type of on-premises license to be used when deploying the operating system. This only applies to images that contain the Windows operating system, and should only be used when you hold valid on-premises licenses for the nodes which will be deployed. If omitted, no on-premises licensing discount is applied. Values are: "Windows_Server" - The on-premises license is for Windows Server. "Windows_Client" - The on-premises license is for Windows Client.
         * 
         * @return builder
         * 
         */
        public Builder licenseType(String licenseType) {
            return licenseType(Output.of(licenseType));
        }

        /**
         * @param maxTasksPerNode Specifies the maximum number of tasks that can run concurrently on a single compute node in the pool. Defaults to `1`. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder maxTasksPerNode(@Nullable Output maxTasksPerNode) {
            $.maxTasksPerNode = maxTasksPerNode;
            return this;
        }

        /**
         * @param maxTasksPerNode Specifies the maximum number of tasks that can run concurrently on a single compute node in the pool. Defaults to `1`. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder maxTasksPerNode(Integer maxTasksPerNode) {
            return maxTasksPerNode(Output.of(maxTasksPerNode));
        }

        /**
         * @param metadata A map of custom batch pool metadata.
         * 
         * @return builder
         * 
         */
        public Builder metadata(@Nullable Output> metadata) {
            $.metadata = metadata;
            return this;
        }

        /**
         * @param metadata A map of custom batch pool metadata.
         * 
         * @return builder
         * 
         */
        public Builder metadata(Map metadata) {
            return metadata(Output.of(metadata));
        }

        /**
         * @param mounts A `mount` block defined as below.
         * 
         * @return builder
         * 
         */
        public Builder mounts(@Nullable Output> mounts) {
            $.mounts = mounts;
            return this;
        }

        /**
         * @param mounts A `mount` block defined as below.
         * 
         * @return builder
         * 
         */
        public Builder mounts(List mounts) {
            return mounts(Output.of(mounts));
        }

        /**
         * @param mounts A `mount` block defined as below.
         * 
         * @return builder
         * 
         */
        public Builder mounts(PoolMountArgs... mounts) {
            return mounts(List.of(mounts));
        }

        /**
         * @param name Specifies the name of the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name Specifies the name of the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param networkConfiguration A `network_configuration` block that describes the network configurations for the Batch pool as defined below. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder networkConfiguration(@Nullable Output networkConfiguration) {
            $.networkConfiguration = networkConfiguration;
            return this;
        }

        /**
         * @param networkConfiguration A `network_configuration` block that describes the network configurations for the Batch pool as defined below. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder networkConfiguration(PoolNetworkConfigurationArgs networkConfiguration) {
            return networkConfiguration(Output.of(networkConfiguration));
        }

        /**
         * @param nodeAgentSkuId Specifies the SKU of the node agents that will be created in the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder nodeAgentSkuId(@Nullable Output nodeAgentSkuId) {
            $.nodeAgentSkuId = nodeAgentSkuId;
            return this;
        }

        /**
         * @param nodeAgentSkuId Specifies the SKU of the node agents that will be created in the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder nodeAgentSkuId(String nodeAgentSkuId) {
            return nodeAgentSkuId(Output.of(nodeAgentSkuId));
        }

        /**
         * @param nodePlacements A `node_placement` block that describes the placement policy for allocating nodes in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder nodePlacements(@Nullable Output> nodePlacements) {
            $.nodePlacements = nodePlacements;
            return this;
        }

        /**
         * @param nodePlacements A `node_placement` block that describes the placement policy for allocating nodes in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder nodePlacements(List nodePlacements) {
            return nodePlacements(Output.of(nodePlacements));
        }

        /**
         * @param nodePlacements A `node_placement` block that describes the placement policy for allocating nodes in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder nodePlacements(PoolNodePlacementArgs... nodePlacements) {
            return nodePlacements(List.of(nodePlacements));
        }

        /**
         * @param osDiskPlacement Specifies the ephemeral disk placement for operating system disk for all VMs in the pool. This property can be used by user in the request to choose which location the operating system should be in. e.g., cache disk space for Ephemeral OS disk provisioning. For more information on Ephemeral OS disk size requirements, please refer to Ephemeral OS disk size requirements for Windows VMs at <https://docs.microsoft.com/en-us/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements> and Linux VMs at <https://docs.microsoft.com/en-us/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements>. The only possible value is `CacheDisk`.
         * 
         * @return builder
         * 
         */
        public Builder osDiskPlacement(@Nullable Output osDiskPlacement) {
            $.osDiskPlacement = osDiskPlacement;
            return this;
        }

        /**
         * @param osDiskPlacement Specifies the ephemeral disk placement for operating system disk for all VMs in the pool. This property can be used by user in the request to choose which location the operating system should be in. e.g., cache disk space for Ephemeral OS disk provisioning. For more information on Ephemeral OS disk size requirements, please refer to Ephemeral OS disk size requirements for Windows VMs at <https://docs.microsoft.com/en-us/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements> and Linux VMs at <https://docs.microsoft.com/en-us/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements>. The only possible value is `CacheDisk`.
         * 
         * @return builder
         * 
         */
        public Builder osDiskPlacement(String osDiskPlacement) {
            return osDiskPlacement(Output.of(osDiskPlacement));
        }

        /**
         * @param resourceGroupName The name of the resource group in which to create the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(@Nullable Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group in which to create the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param startTask A `start_task` block that describes the start task settings for the Batch pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder startTask(@Nullable Output startTask) {
            $.startTask = startTask;
            return this;
        }

        /**
         * @param startTask A `start_task` block that describes the start task settings for the Batch pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder startTask(PoolStartTaskArgs startTask) {
            return startTask(Output.of(startTask));
        }

        /**
         * @param stopPendingResizeOperation Whether to stop if there is a pending resize operation on this pool.
         * 
         * @return builder
         * 
         */
        public Builder stopPendingResizeOperation(@Nullable Output stopPendingResizeOperation) {
            $.stopPendingResizeOperation = stopPendingResizeOperation;
            return this;
        }

        /**
         * @param stopPendingResizeOperation Whether to stop if there is a pending resize operation on this pool.
         * 
         * @return builder
         * 
         */
        public Builder stopPendingResizeOperation(Boolean stopPendingResizeOperation) {
            return stopPendingResizeOperation(Output.of(stopPendingResizeOperation));
        }

        /**
         * @param storageImageReference A `storage_image_reference` block for the virtual machines that will compose the Batch pool as defined below. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder storageImageReference(@Nullable Output storageImageReference) {
            $.storageImageReference = storageImageReference;
            return this;
        }

        /**
         * @param storageImageReference A `storage_image_reference` block for the virtual machines that will compose the Batch pool as defined below. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder storageImageReference(PoolStorageImageReferenceArgs storageImageReference) {
            return storageImageReference(Output.of(storageImageReference));
        }

        /**
         * @param targetNodeCommunicationMode The desired node communication mode for the pool. Possible values are `Classic`, `Default` and `Simplified`.
         * 
         * @return builder
         * 
         */
        public Builder targetNodeCommunicationMode(@Nullable Output targetNodeCommunicationMode) {
            $.targetNodeCommunicationMode = targetNodeCommunicationMode;
            return this;
        }

        /**
         * @param targetNodeCommunicationMode The desired node communication mode for the pool. Possible values are `Classic`, `Default` and `Simplified`.
         * 
         * @return builder
         * 
         */
        public Builder targetNodeCommunicationMode(String targetNodeCommunicationMode) {
            return targetNodeCommunicationMode(Output.of(targetNodeCommunicationMode));
        }

        /**
         * @param taskSchedulingPolicies A `task_scheduling_policy` block that describes how tasks are distributed across compute nodes in a pool as defined below. If not specified, the default is spread as defined below.
         * 
         * @return builder
         * 
         */
        public Builder taskSchedulingPolicies(@Nullable Output> taskSchedulingPolicies) {
            $.taskSchedulingPolicies = taskSchedulingPolicies;
            return this;
        }

        /**
         * @param taskSchedulingPolicies A `task_scheduling_policy` block that describes how tasks are distributed across compute nodes in a pool as defined below. If not specified, the default is spread as defined below.
         * 
         * @return builder
         * 
         */
        public Builder taskSchedulingPolicies(List taskSchedulingPolicies) {
            return taskSchedulingPolicies(Output.of(taskSchedulingPolicies));
        }

        /**
         * @param taskSchedulingPolicies A `task_scheduling_policy` block that describes how tasks are distributed across compute nodes in a pool as defined below. If not specified, the default is spread as defined below.
         * 
         * @return builder
         * 
         */
        public Builder taskSchedulingPolicies(PoolTaskSchedulingPolicyArgs... taskSchedulingPolicies) {
            return taskSchedulingPolicies(List.of(taskSchedulingPolicies));
        }

        /**
         * @param userAccounts A `user_accounts` block that describes the list of user accounts to be created on each node in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder userAccounts(@Nullable Output> userAccounts) {
            $.userAccounts = userAccounts;
            return this;
        }

        /**
         * @param userAccounts A `user_accounts` block that describes the list of user accounts to be created on each node in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder userAccounts(List userAccounts) {
            return userAccounts(Output.of(userAccounts));
        }

        /**
         * @param userAccounts A `user_accounts` block that describes the list of user accounts to be created on each node in the pool as defined below.
         * 
         * @return builder
         * 
         */
        public Builder userAccounts(PoolUserAccountArgs... userAccounts) {
            return userAccounts(List.of(userAccounts));
        }

        /**
         * @param vmSize Specifies the size of the VM created in the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder vmSize(@Nullable Output vmSize) {
            $.vmSize = vmSize;
            return this;
        }

        /**
         * @param vmSize Specifies the size of the VM created in the Batch pool. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder vmSize(String vmSize) {
            return vmSize(Output.of(vmSize));
        }

        /**
         * @param windows A `windows` block that describes the Windows configuration in the pool as defined below.
         * 
         * > **NOTE:** 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.
         * 
         * > **Please Note:** `fixed_scale` and `auto_scale` blocks cannot be used both at the same time.
         * 
         * @return builder
         * 
         */
        public Builder windows(@Nullable Output> windows) {
            $.windows = windows;
            return this;
        }

        /**
         * @param windows A `windows` block that describes the Windows configuration in the pool as defined below.
         * 
         * > **NOTE:** 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.
         * 
         * > **Please Note:** `fixed_scale` and `auto_scale` blocks cannot be used both at the same time.
         * 
         * @return builder
         * 
         */
        public Builder windows(List windows) {
            return windows(Output.of(windows));
        }

        /**
         * @param windows A `windows` block that describes the Windows configuration in the pool as defined below.
         * 
         * > **NOTE:** 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.
         * 
         * > **Please Note:** `fixed_scale` and `auto_scale` blocks cannot be used both at the same time.
         * 
         * @return builder
         * 
         */
        public Builder windows(PoolWindowArgs... windows) {
            return windows(List.of(windows));
        }

        public PoolState build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy