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

com.pulumi.azure.compute.inputs.ScaleSetState Maven / Gradle / Ivy

Go to download

A Pulumi package for creating and managing Microsoft Azure cloud resources, based on the Terraform azurerm provider. We recommend using the [Azure Native provider](https://github.com/pulumi/pulumi-azure-native) to provision Azure infrastructure. Azure Native provides complete coverage of Azure resources and same-day access to new resources and resource updates.

There is a newer version: 6.10.0-alpha.1731737215
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.azure.compute.inputs;

import com.pulumi.azure.compute.inputs.ScaleSetBootDiagnosticsArgs;
import com.pulumi.azure.compute.inputs.ScaleSetExtensionArgs;
import com.pulumi.azure.compute.inputs.ScaleSetIdentityArgs;
import com.pulumi.azure.compute.inputs.ScaleSetNetworkProfileArgs;
import com.pulumi.azure.compute.inputs.ScaleSetOsProfileArgs;
import com.pulumi.azure.compute.inputs.ScaleSetOsProfileLinuxConfigArgs;
import com.pulumi.azure.compute.inputs.ScaleSetOsProfileSecretArgs;
import com.pulumi.azure.compute.inputs.ScaleSetOsProfileWindowsConfigArgs;
import com.pulumi.azure.compute.inputs.ScaleSetPlanArgs;
import com.pulumi.azure.compute.inputs.ScaleSetRollingUpgradePolicyArgs;
import com.pulumi.azure.compute.inputs.ScaleSetSkuArgs;
import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileDataDiskArgs;
import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileImageReferenceArgs;
import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileOsDiskArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ScaleSetState Empty = new ScaleSetState();

    /**
     * Automatic OS patches can be applied by Azure to your scaleset. This is particularly useful when `upgrade_policy_mode` is set to `Rolling`. Defaults to `false`.
     * 
     */
    @Import(name="automaticOsUpgrade")
    private @Nullable Output automaticOsUpgrade;

    /**
     * @return Automatic OS patches can be applied by Azure to your scaleset. This is particularly useful when `upgrade_policy_mode` is set to `Rolling`. Defaults to `false`.
     * 
     */
    public Optional> automaticOsUpgrade() {
        return Optional.ofNullable(this.automaticOsUpgrade);
    }

    /**
     * A `boot_diagnostics` block as referenced below.
     * 
     */
    @Import(name="bootDiagnostics")
    private @Nullable Output bootDiagnostics;

    /**
     * @return A `boot_diagnostics` block as referenced below.
     * 
     */
    public Optional> bootDiagnostics() {
        return Optional.ofNullable(this.bootDiagnostics);
    }

    /**
     * Specifies the eviction policy for Virtual Machines in this Scale Set. Possible values are `Deallocate` and `Delete`. Changing this forces a new resource to be created.
     * 
     * > **NOTE:** `eviction_policy` can only be set when `priority` is set to `Low`.
     * 
     */
    @Import(name="evictionPolicy")
    private @Nullable Output evictionPolicy;

    /**
     * @return Specifies the eviction policy for Virtual Machines in this Scale Set. Possible values are `Deallocate` and `Delete`. Changing this forces a new resource to be created.
     * 
     * > **NOTE:** `eviction_policy` can only be set when `priority` is set to `Low`.
     * 
     */
    public Optional> evictionPolicy() {
        return Optional.ofNullable(this.evictionPolicy);
    }

    /**
     * Can be specified multiple times to add extension profiles to the scale set. Each `extension` block supports the fields documented below.
     * 
     */
    @Import(name="extensions")
    private @Nullable Output> extensions;

    /**
     * @return Can be specified multiple times to add extension profiles to the scale set. Each `extension` block supports the fields documented below.
     * 
     */
    public Optional>> extensions() {
        return Optional.ofNullable(this.extensions);
    }

    /**
     * Specifies the identifier for the load balancer health probe. Required when using `Rolling` as your `upgrade_policy_mode`.
     * 
     */
    @Import(name="healthProbeId")
    private @Nullable Output healthProbeId;

    /**
     * @return Specifies the identifier for the load balancer health probe. Required when using `Rolling` as your `upgrade_policy_mode`.
     * 
     */
    public Optional> healthProbeId() {
        return Optional.ofNullable(this.healthProbeId);
    }

    /**
     * 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);
    }

    /**
     * (Optional, when a Windows machine) Specifies the Windows OS license type. If supplied, the only allowed values are `Windows_Client` and `Windows_Server`.
     * 
     */
    @Import(name="licenseType")
    private @Nullable Output licenseType;

    /**
     * @return (Optional, when a Windows machine) Specifies the Windows OS license type. If supplied, the only allowed values are `Windows_Client` and `Windows_Server`.
     * 
     */
    public Optional> licenseType() {
        return Optional.ofNullable(this.licenseType);
    }

    /**
     * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

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

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

    /**
     * A collection of `network_profile` blocks as documented below.
     * 
     */
    @Import(name="networkProfiles")
    private @Nullable Output> networkProfiles;

    /**
     * @return A collection of `network_profile` blocks as documented below.
     * 
     */
    public Optional>> networkProfiles() {
        return Optional.ofNullable(this.networkProfiles);
    }

    /**
     * A `os_profile` block as documented below.
     * 
     */
    @Import(name="osProfile")
    private @Nullable Output osProfile;

    /**
     * @return A `os_profile` block as documented below.
     * 
     */
    public Optional> osProfile() {
        return Optional.ofNullable(this.osProfile);
    }

    /**
     * A `os_profile_linux_config` block as documented below.
     * 
     */
    @Import(name="osProfileLinuxConfig")
    private @Nullable Output osProfileLinuxConfig;

    /**
     * @return A `os_profile_linux_config` block as documented below.
     * 
     */
    public Optional> osProfileLinuxConfig() {
        return Optional.ofNullable(this.osProfileLinuxConfig);
    }

    /**
     * A collection of `os_profile_secrets` blocks as documented below.
     * 
     */
    @Import(name="osProfileSecrets")
    private @Nullable Output> osProfileSecrets;

    /**
     * @return A collection of `os_profile_secrets` blocks as documented below.
     * 
     */
    public Optional>> osProfileSecrets() {
        return Optional.ofNullable(this.osProfileSecrets);
    }

    /**
     * A `os_profile_windows_config` block as documented below.
     * 
     */
    @Import(name="osProfileWindowsConfig")
    private @Nullable Output osProfileWindowsConfig;

    /**
     * @return A `os_profile_windows_config` block as documented below.
     * 
     */
    public Optional> osProfileWindowsConfig() {
        return Optional.ofNullable(this.osProfileWindowsConfig);
    }

    /**
     * Specifies whether the virtual machine scale set should be overprovisioned. Defaults to `true`.
     * 
     */
    @Import(name="overprovision")
    private @Nullable Output overprovision;

    /**
     * @return Specifies whether the virtual machine scale set should be overprovisioned. Defaults to `true`.
     * 
     */
    public Optional> overprovision() {
        return Optional.ofNullable(this.overprovision);
    }

    /**
     * A `plan` block as documented below.
     * 
     */
    @Import(name="plan")
    private @Nullable Output plan;

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

    /**
     * Specifies the priority for the Virtual Machines in the Scale Set. Possible values are `Low` and `Regular`. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="priority")
    private @Nullable Output priority;

    /**
     * @return Specifies the priority for the Virtual Machines in the Scale Set. Possible values are `Low` and `Regular`. Changing this forces a new resource to be created.
     * 
     */
    public Optional> priority() {
        return Optional.ofNullable(this.priority);
    }

    /**
     * The ID of the Proximity Placement Group to which this Virtual Machine should be assigned. Changing this forces a new resource to be created
     * 
     */
    @Import(name="proximityPlacementGroupId")
    private @Nullable Output proximityPlacementGroupId;

    /**
     * @return The ID of the Proximity Placement Group to which this Virtual Machine should be assigned. Changing this forces a new resource to be created
     * 
     */
    public Optional> proximityPlacementGroupId() {
        return Optional.ofNullable(this.proximityPlacementGroupId);
    }

    /**
     * The name of the resource group in which to create the virtual machine scale set. 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 virtual machine scale set. Changing this forces a new resource to be created.
     * 
     */
    public Optional> resourceGroupName() {
        return Optional.ofNullable(this.resourceGroupName);
    }

    /**
     * A `rolling_upgrade_policy` block as defined below. This is only applicable when the `upgrade_policy_mode` is `Rolling`.
     * 
     */
    @Import(name="rollingUpgradePolicy")
    private @Nullable Output rollingUpgradePolicy;

    /**
     * @return A `rolling_upgrade_policy` block as defined below. This is only applicable when the `upgrade_policy_mode` is `Rolling`.
     * 
     */
    public Optional> rollingUpgradePolicy() {
        return Optional.ofNullable(this.rollingUpgradePolicy);
    }

    /**
     * Specifies whether the scale set is limited to a single placement group with a maximum size of 100 virtual machines. If set to false, managed disks must be used. Changing this forces a new resource to be created. See [documentation](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups) for more information. Defaults to `true`.
     * 
     */
    @Import(name="singlePlacementGroup")
    private @Nullable Output singlePlacementGroup;

    /**
     * @return Specifies whether the scale set is limited to a single placement group with a maximum size of 100 virtual machines. If set to false, managed disks must be used. Changing this forces a new resource to be created. See [documentation](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups) for more information. Defaults to `true`.
     * 
     */
    public Optional> singlePlacementGroup() {
        return Optional.ofNullable(this.singlePlacementGroup);
    }

    /**
     * A `sku` block as documented below.
     * 
     */
    @Import(name="sku")
    private @Nullable Output sku;

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

    /**
     * A `storage_profile_data_disk` block as documented below.
     * 
     */
    @Import(name="storageProfileDataDisks")
    private @Nullable Output> storageProfileDataDisks;

    /**
     * @return A `storage_profile_data_disk` block as documented below.
     * 
     */
    public Optional>> storageProfileDataDisks() {
        return Optional.ofNullable(this.storageProfileDataDisks);
    }

    /**
     * A `storage_profile_image_reference` block as documented below.
     * 
     */
    @Import(name="storageProfileImageReference")
    private @Nullable Output storageProfileImageReference;

    /**
     * @return A `storage_profile_image_reference` block as documented below.
     * 
     */
    public Optional> storageProfileImageReference() {
        return Optional.ofNullable(this.storageProfileImageReference);
    }

    /**
     * A `storage_profile_os_disk` block as documented below.
     * 
     */
    @Import(name="storageProfileOsDisk")
    private @Nullable Output storageProfileOsDisk;

    /**
     * @return A `storage_profile_os_disk` block as documented below.
     * 
     */
    public Optional> storageProfileOsDisk() {
        return Optional.ofNullable(this.storageProfileOsDisk);
    }

    /**
     * A mapping of tags to assign to the resource.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Specifies the mode of an upgrade to virtual machines in the scale set. Possible values, `Rolling`, `Manual`, or `Automatic`. When choosing `Rolling`, you will need to set a health probe.
     * 
     */
    @Import(name="upgradePolicyMode")
    private @Nullable Output upgradePolicyMode;

    /**
     * @return Specifies the mode of an upgrade to virtual machines in the scale set. Possible values, `Rolling`, `Manual`, or `Automatic`. When choosing `Rolling`, you will need to set a health probe.
     * 
     */
    public Optional> upgradePolicyMode() {
        return Optional.ofNullable(this.upgradePolicyMode);
    }

    /**
     * A collection of availability zones to spread the Virtual Machines over. Changing this forces a new resource to be created.
     * 
     * > **NOTE:** Availability Zones are [only supported in several regions at this time](https://docs.microsoft.com/azure/availability-zones/az-overview).
     * 
     */
    @Import(name="zones")
    private @Nullable Output> zones;

    /**
     * @return A collection of availability zones to spread the Virtual Machines over. Changing this forces a new resource to be created.
     * 
     * > **NOTE:** Availability Zones are [only supported in several regions at this time](https://docs.microsoft.com/azure/availability-zones/az-overview).
     * 
     */
    public Optional>> zones() {
        return Optional.ofNullable(this.zones);
    }

    private ScaleSetState() {}

    private ScaleSetState(ScaleSetState $) {
        this.automaticOsUpgrade = $.automaticOsUpgrade;
        this.bootDiagnostics = $.bootDiagnostics;
        this.evictionPolicy = $.evictionPolicy;
        this.extensions = $.extensions;
        this.healthProbeId = $.healthProbeId;
        this.identity = $.identity;
        this.licenseType = $.licenseType;
        this.location = $.location;
        this.name = $.name;
        this.networkProfiles = $.networkProfiles;
        this.osProfile = $.osProfile;
        this.osProfileLinuxConfig = $.osProfileLinuxConfig;
        this.osProfileSecrets = $.osProfileSecrets;
        this.osProfileWindowsConfig = $.osProfileWindowsConfig;
        this.overprovision = $.overprovision;
        this.plan = $.plan;
        this.priority = $.priority;
        this.proximityPlacementGroupId = $.proximityPlacementGroupId;
        this.resourceGroupName = $.resourceGroupName;
        this.rollingUpgradePolicy = $.rollingUpgradePolicy;
        this.singlePlacementGroup = $.singlePlacementGroup;
        this.sku = $.sku;
        this.storageProfileDataDisks = $.storageProfileDataDisks;
        this.storageProfileImageReference = $.storageProfileImageReference;
        this.storageProfileOsDisk = $.storageProfileOsDisk;
        this.tags = $.tags;
        this.upgradePolicyMode = $.upgradePolicyMode;
        this.zones = $.zones;
    }

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

    public static final class Builder {
        private ScaleSetState $;

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

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

        /**
         * @param automaticOsUpgrade Automatic OS patches can be applied by Azure to your scaleset. This is particularly useful when `upgrade_policy_mode` is set to `Rolling`. Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder automaticOsUpgrade(@Nullable Output automaticOsUpgrade) {
            $.automaticOsUpgrade = automaticOsUpgrade;
            return this;
        }

        /**
         * @param automaticOsUpgrade Automatic OS patches can be applied by Azure to your scaleset. This is particularly useful when `upgrade_policy_mode` is set to `Rolling`. Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder automaticOsUpgrade(Boolean automaticOsUpgrade) {
            return automaticOsUpgrade(Output.of(automaticOsUpgrade));
        }

        /**
         * @param bootDiagnostics A `boot_diagnostics` block as referenced below.
         * 
         * @return builder
         * 
         */
        public Builder bootDiagnostics(@Nullable Output bootDiagnostics) {
            $.bootDiagnostics = bootDiagnostics;
            return this;
        }

        /**
         * @param bootDiagnostics A `boot_diagnostics` block as referenced below.
         * 
         * @return builder
         * 
         */
        public Builder bootDiagnostics(ScaleSetBootDiagnosticsArgs bootDiagnostics) {
            return bootDiagnostics(Output.of(bootDiagnostics));
        }

        /**
         * @param evictionPolicy Specifies the eviction policy for Virtual Machines in this Scale Set. Possible values are `Deallocate` and `Delete`. Changing this forces a new resource to be created.
         * 
         * > **NOTE:** `eviction_policy` can only be set when `priority` is set to `Low`.
         * 
         * @return builder
         * 
         */
        public Builder evictionPolicy(@Nullable Output evictionPolicy) {
            $.evictionPolicy = evictionPolicy;
            return this;
        }

        /**
         * @param evictionPolicy Specifies the eviction policy for Virtual Machines in this Scale Set. Possible values are `Deallocate` and `Delete`. Changing this forces a new resource to be created.
         * 
         * > **NOTE:** `eviction_policy` can only be set when `priority` is set to `Low`.
         * 
         * @return builder
         * 
         */
        public Builder evictionPolicy(String evictionPolicy) {
            return evictionPolicy(Output.of(evictionPolicy));
        }

        /**
         * @param extensions Can be specified multiple times to add extension profiles to the scale set. Each `extension` block supports the fields documented below.
         * 
         * @return builder
         * 
         */
        public Builder extensions(@Nullable Output> extensions) {
            $.extensions = extensions;
            return this;
        }

        /**
         * @param extensions Can be specified multiple times to add extension profiles to the scale set. Each `extension` block supports the fields documented below.
         * 
         * @return builder
         * 
         */
        public Builder extensions(List extensions) {
            return extensions(Output.of(extensions));
        }

        /**
         * @param extensions Can be specified multiple times to add extension profiles to the scale set. Each `extension` block supports the fields documented below.
         * 
         * @return builder
         * 
         */
        public Builder extensions(ScaleSetExtensionArgs... extensions) {
            return extensions(List.of(extensions));
        }

        /**
         * @param healthProbeId Specifies the identifier for the load balancer health probe. Required when using `Rolling` as your `upgrade_policy_mode`.
         * 
         * @return builder
         * 
         */
        public Builder healthProbeId(@Nullable Output healthProbeId) {
            $.healthProbeId = healthProbeId;
            return this;
        }

        /**
         * @param healthProbeId Specifies the identifier for the load balancer health probe. Required when using `Rolling` as your `upgrade_policy_mode`.
         * 
         * @return builder
         * 
         */
        public Builder healthProbeId(String healthProbeId) {
            return healthProbeId(Output.of(healthProbeId));
        }

        /**
         * @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(ScaleSetIdentityArgs identity) {
            return identity(Output.of(identity));
        }

        /**
         * @param licenseType (Optional, when a Windows machine) Specifies the Windows OS license type. If supplied, the only allowed values are `Windows_Client` and `Windows_Server`.
         * 
         * @return builder
         * 
         */
        public Builder licenseType(@Nullable Output licenseType) {
            $.licenseType = licenseType;
            return this;
        }

        /**
         * @param licenseType (Optional, when a Windows machine) Specifies the Windows OS license type. If supplied, the only allowed values are `Windows_Client` and `Windows_Server`.
         * 
         * @return builder
         * 
         */
        public Builder licenseType(String licenseType) {
            return licenseType(Output.of(licenseType));
        }

        /**
         * @param location Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param name Specifies the name of the virtual machine scale set resource. 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 virtual machine scale set resource. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param networkProfiles A collection of `network_profile` blocks as documented below.
         * 
         * @return builder
         * 
         */
        public Builder networkProfiles(@Nullable Output> networkProfiles) {
            $.networkProfiles = networkProfiles;
            return this;
        }

        /**
         * @param networkProfiles A collection of `network_profile` blocks as documented below.
         * 
         * @return builder
         * 
         */
        public Builder networkProfiles(List networkProfiles) {
            return networkProfiles(Output.of(networkProfiles));
        }

        /**
         * @param networkProfiles A collection of `network_profile` blocks as documented below.
         * 
         * @return builder
         * 
         */
        public Builder networkProfiles(ScaleSetNetworkProfileArgs... networkProfiles) {
            return networkProfiles(List.of(networkProfiles));
        }

        /**
         * @param osProfile A `os_profile` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfile(@Nullable Output osProfile) {
            $.osProfile = osProfile;
            return this;
        }

        /**
         * @param osProfile A `os_profile` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfile(ScaleSetOsProfileArgs osProfile) {
            return osProfile(Output.of(osProfile));
        }

        /**
         * @param osProfileLinuxConfig A `os_profile_linux_config` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfileLinuxConfig(@Nullable Output osProfileLinuxConfig) {
            $.osProfileLinuxConfig = osProfileLinuxConfig;
            return this;
        }

        /**
         * @param osProfileLinuxConfig A `os_profile_linux_config` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfileLinuxConfig(ScaleSetOsProfileLinuxConfigArgs osProfileLinuxConfig) {
            return osProfileLinuxConfig(Output.of(osProfileLinuxConfig));
        }

        /**
         * @param osProfileSecrets A collection of `os_profile_secrets` blocks as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfileSecrets(@Nullable Output> osProfileSecrets) {
            $.osProfileSecrets = osProfileSecrets;
            return this;
        }

        /**
         * @param osProfileSecrets A collection of `os_profile_secrets` blocks as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfileSecrets(List osProfileSecrets) {
            return osProfileSecrets(Output.of(osProfileSecrets));
        }

        /**
         * @param osProfileSecrets A collection of `os_profile_secrets` blocks as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfileSecrets(ScaleSetOsProfileSecretArgs... osProfileSecrets) {
            return osProfileSecrets(List.of(osProfileSecrets));
        }

        /**
         * @param osProfileWindowsConfig A `os_profile_windows_config` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfileWindowsConfig(@Nullable Output osProfileWindowsConfig) {
            $.osProfileWindowsConfig = osProfileWindowsConfig;
            return this;
        }

        /**
         * @param osProfileWindowsConfig A `os_profile_windows_config` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder osProfileWindowsConfig(ScaleSetOsProfileWindowsConfigArgs osProfileWindowsConfig) {
            return osProfileWindowsConfig(Output.of(osProfileWindowsConfig));
        }

        /**
         * @param overprovision Specifies whether the virtual machine scale set should be overprovisioned. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder overprovision(@Nullable Output overprovision) {
            $.overprovision = overprovision;
            return this;
        }

        /**
         * @param overprovision Specifies whether the virtual machine scale set should be overprovisioned. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder overprovision(Boolean overprovision) {
            return overprovision(Output.of(overprovision));
        }

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

        /**
         * @param plan A `plan` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder plan(ScaleSetPlanArgs plan) {
            return plan(Output.of(plan));
        }

        /**
         * @param priority Specifies the priority for the Virtual Machines in the Scale Set. Possible values are `Low` and `Regular`. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder priority(@Nullable Output priority) {
            $.priority = priority;
            return this;
        }

        /**
         * @param priority Specifies the priority for the Virtual Machines in the Scale Set. Possible values are `Low` and `Regular`. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder priority(String priority) {
            return priority(Output.of(priority));
        }

        /**
         * @param proximityPlacementGroupId The ID of the Proximity Placement Group to which this Virtual Machine should be assigned. Changing this forces a new resource to be created
         * 
         * @return builder
         * 
         */
        public Builder proximityPlacementGroupId(@Nullable Output proximityPlacementGroupId) {
            $.proximityPlacementGroupId = proximityPlacementGroupId;
            return this;
        }

        /**
         * @param proximityPlacementGroupId The ID of the Proximity Placement Group to which this Virtual Machine should be assigned. Changing this forces a new resource to be created
         * 
         * @return builder
         * 
         */
        public Builder proximityPlacementGroupId(String proximityPlacementGroupId) {
            return proximityPlacementGroupId(Output.of(proximityPlacementGroupId));
        }

        /**
         * @param resourceGroupName The name of the resource group in which to create the virtual machine scale set. 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 virtual machine scale set. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param rollingUpgradePolicy A `rolling_upgrade_policy` block as defined below. This is only applicable when the `upgrade_policy_mode` is `Rolling`.
         * 
         * @return builder
         * 
         */
        public Builder rollingUpgradePolicy(@Nullable Output rollingUpgradePolicy) {
            $.rollingUpgradePolicy = rollingUpgradePolicy;
            return this;
        }

        /**
         * @param rollingUpgradePolicy A `rolling_upgrade_policy` block as defined below. This is only applicable when the `upgrade_policy_mode` is `Rolling`.
         * 
         * @return builder
         * 
         */
        public Builder rollingUpgradePolicy(ScaleSetRollingUpgradePolicyArgs rollingUpgradePolicy) {
            return rollingUpgradePolicy(Output.of(rollingUpgradePolicy));
        }

        /**
         * @param singlePlacementGroup Specifies whether the scale set is limited to a single placement group with a maximum size of 100 virtual machines. If set to false, managed disks must be used. Changing this forces a new resource to be created. See [documentation](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups) for more information. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder singlePlacementGroup(@Nullable Output singlePlacementGroup) {
            $.singlePlacementGroup = singlePlacementGroup;
            return this;
        }

        /**
         * @param singlePlacementGroup Specifies whether the scale set is limited to a single placement group with a maximum size of 100 virtual machines. If set to false, managed disks must be used. Changing this forces a new resource to be created. See [documentation](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups) for more information. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder singlePlacementGroup(Boolean singlePlacementGroup) {
            return singlePlacementGroup(Output.of(singlePlacementGroup));
        }

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

        /**
         * @param sku A `sku` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder sku(ScaleSetSkuArgs sku) {
            return sku(Output.of(sku));
        }

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

        /**
         * @param storageProfileDataDisks A `storage_profile_data_disk` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder storageProfileDataDisks(List storageProfileDataDisks) {
            return storageProfileDataDisks(Output.of(storageProfileDataDisks));
        }

        /**
         * @param storageProfileDataDisks A `storage_profile_data_disk` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder storageProfileDataDisks(ScaleSetStorageProfileDataDiskArgs... storageProfileDataDisks) {
            return storageProfileDataDisks(List.of(storageProfileDataDisks));
        }

        /**
         * @param storageProfileImageReference A `storage_profile_image_reference` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder storageProfileImageReference(@Nullable Output storageProfileImageReference) {
            $.storageProfileImageReference = storageProfileImageReference;
            return this;
        }

        /**
         * @param storageProfileImageReference A `storage_profile_image_reference` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder storageProfileImageReference(ScaleSetStorageProfileImageReferenceArgs storageProfileImageReference) {
            return storageProfileImageReference(Output.of(storageProfileImageReference));
        }

        /**
         * @param storageProfileOsDisk A `storage_profile_os_disk` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder storageProfileOsDisk(@Nullable Output storageProfileOsDisk) {
            $.storageProfileOsDisk = storageProfileOsDisk;
            return this;
        }

        /**
         * @param storageProfileOsDisk A `storage_profile_os_disk` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder storageProfileOsDisk(ScaleSetStorageProfileOsDiskArgs storageProfileOsDisk) {
            return storageProfileOsDisk(Output.of(storageProfileOsDisk));
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param upgradePolicyMode Specifies the mode of an upgrade to virtual machines in the scale set. Possible values, `Rolling`, `Manual`, or `Automatic`. When choosing `Rolling`, you will need to set a health probe.
         * 
         * @return builder
         * 
         */
        public Builder upgradePolicyMode(@Nullable Output upgradePolicyMode) {
            $.upgradePolicyMode = upgradePolicyMode;
            return this;
        }

        /**
         * @param upgradePolicyMode Specifies the mode of an upgrade to virtual machines in the scale set. Possible values, `Rolling`, `Manual`, or `Automatic`. When choosing `Rolling`, you will need to set a health probe.
         * 
         * @return builder
         * 
         */
        public Builder upgradePolicyMode(String upgradePolicyMode) {
            return upgradePolicyMode(Output.of(upgradePolicyMode));
        }

        /**
         * @param zones A collection of availability zones to spread the Virtual Machines over. Changing this forces a new resource to be created.
         * 
         * > **NOTE:** Availability Zones are [only supported in several regions at this time](https://docs.microsoft.com/azure/availability-zones/az-overview).
         * 
         * @return builder
         * 
         */
        public Builder zones(@Nullable Output> zones) {
            $.zones = zones;
            return this;
        }

        /**
         * @param zones A collection of availability zones to spread the Virtual Machines over. Changing this forces a new resource to be created.
         * 
         * > **NOTE:** Availability Zones are [only supported in several regions at this time](https://docs.microsoft.com/azure/availability-zones/az-overview).
         * 
         * @return builder
         * 
         */
        public Builder zones(List zones) {
            return zones(Output.of(zones));
        }

        /**
         * @param zones A collection of availability zones to spread the Virtual Machines over. Changing this forces a new resource to be created.
         * 
         * > **NOTE:** Availability Zones are [only supported in several regions at this time](https://docs.microsoft.com/azure/availability-zones/az-overview).
         * 
         * @return builder
         * 
         */
        public Builder zones(String... zones) {
            return zones(List.of(zones));
        }

        public ScaleSetState build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy