// *** 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.containerservice.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;


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

    public static final KubernetesClusterDefaultNodePoolUpgradeSettingsArgs Empty = new KubernetesClusterDefaultNodePoolUpgradeSettingsArgs();

    /**
     * The maximum number or percentage of nodes which will be added to the Node Pool size during an upgrade.
     * 
     * &gt; **Note:** If a percentage is provided, the number of surge nodes is calculated from the `node_count` value on the current cluster. Node surge can allow a cluster to have more nodes than `max_count` during an upgrade. Ensure that your cluster has enough [IP space](https://docs.microsoft.com/azure/aks/upgrade-cluster#customize-node-surge-upgrade) during an upgrade.
     * 
     */
    @Import(name="maxSurge", required=true)
    private Output<String> maxSurge;

    /**
     * @return The maximum number or percentage of nodes which will be added to the Node Pool size during an upgrade.
     * 
     * &gt; **Note:** If a percentage is provided, the number of surge nodes is calculated from the `node_count` value on the current cluster. Node surge can allow a cluster to have more nodes than `max_count` during an upgrade. Ensure that your cluster has enough [IP space](https://docs.microsoft.com/azure/aks/upgrade-cluster#customize-node-surge-upgrade) during an upgrade.
     * 
     */
    public Output<String> maxSurge() {
        return this.maxSurge;
    }

    private KubernetesClusterDefaultNodePoolUpgradeSettingsArgs() {}

    private KubernetesClusterDefaultNodePoolUpgradeSettingsArgs(KubernetesClusterDefaultNodePoolUpgradeSettingsArgs $) {
        this.maxSurge = $.maxSurge;
    }

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

    public static final class Builder {
        private KubernetesClusterDefaultNodePoolUpgradeSettingsArgs $;

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

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

        /**
         * @param maxSurge The maximum number or percentage of nodes which will be added to the Node Pool size during an upgrade.
         * 
         * &gt; **Note:** If a percentage is provided, the number of surge nodes is calculated from the `node_count` value on the current cluster. Node surge can allow a cluster to have more nodes than `max_count` during an upgrade. Ensure that your cluster has enough [IP space](https://docs.microsoft.com/azure/aks/upgrade-cluster#customize-node-surge-upgrade) during an upgrade.
         * 
         * @return builder
         * 
         */
        public Builder maxSurge(Output<String> maxSurge) {
            $.maxSurge = maxSurge;
            return this;
        }

        /**
         * @param maxSurge The maximum number or percentage of nodes which will be added to the Node Pool size during an upgrade.
         * 
         * &gt; **Note:** If a percentage is provided, the number of surge nodes is calculated from the `node_count` value on the current cluster. Node surge can allow a cluster to have more nodes than `max_count` during an upgrade. Ensure that your cluster has enough [IP space](https://docs.microsoft.com/azure/aks/upgrade-cluster#customize-node-surge-upgrade) during an upgrade.
         * 
         * @return builder
         * 
         */
        public Builder maxSurge(String maxSurge) {
            return maxSurge(Output.of(maxSurge));
        }

        public KubernetesClusterDefaultNodePoolUpgradeSettingsArgs build() {
            $.maxSurge = Objects.requireNonNull($.maxSurge, "expected parameter 'maxSurge' to be non-null");
            return $;
        }
    }

}
