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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Double;
import java.lang.Integer;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final NodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyArgs Empty = new NodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyArgs();

    /**
     * Number of blue nodes to drain in a batch.
     * 
     */
    @Import(name="batchNodeCount")
    private @Nullable Output<Integer> batchNodeCount;

    /**
     * @return Number of blue nodes to drain in a batch.
     * 
     */
    public Optional<Output<Integer>> batchNodeCount() {
        return Optional.ofNullable(this.batchNodeCount);
    }

    /**
     * Percentage of the blue pool nodes to drain in a batch.
     * 
     */
    @Import(name="batchPercentage")
    private @Nullable Output<Double> batchPercentage;

    /**
     * @return Percentage of the blue pool nodes to drain in a batch.
     * 
     */
    public Optional<Output<Double>> batchPercentage() {
        return Optional.ofNullable(this.batchPercentage);
    }

    /**
     * Soak time after each batch gets drained.
     * 
     */
    @Import(name="batchSoakDuration")
    private @Nullable Output<String> batchSoakDuration;

    /**
     * @return Soak time after each batch gets drained.
     * 
     */
    public Optional<Output<String>> batchSoakDuration() {
        return Optional.ofNullable(this.batchSoakDuration);
    }

    private NodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyArgs() {}

    private NodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyArgs(NodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyArgs $) {
        this.batchNodeCount = $.batchNodeCount;
        this.batchPercentage = $.batchPercentage;
        this.batchSoakDuration = $.batchSoakDuration;
    }

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

    public static final class Builder {
        private NodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyArgs $;

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

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

        /**
         * @param batchNodeCount Number of blue nodes to drain in a batch.
         * 
         * @return builder
         * 
         */
        public Builder batchNodeCount(@Nullable Output<Integer> batchNodeCount) {
            $.batchNodeCount = batchNodeCount;
            return this;
        }

        /**
         * @param batchNodeCount Number of blue nodes to drain in a batch.
         * 
         * @return builder
         * 
         */
        public Builder batchNodeCount(Integer batchNodeCount) {
            return batchNodeCount(Output.of(batchNodeCount));
        }

        /**
         * @param batchPercentage Percentage of the blue pool nodes to drain in a batch.
         * 
         * @return builder
         * 
         */
        public Builder batchPercentage(@Nullable Output<Double> batchPercentage) {
            $.batchPercentage = batchPercentage;
            return this;
        }

        /**
         * @param batchPercentage Percentage of the blue pool nodes to drain in a batch.
         * 
         * @return builder
         * 
         */
        public Builder batchPercentage(Double batchPercentage) {
            return batchPercentage(Output.of(batchPercentage));
        }

        /**
         * @param batchSoakDuration Soak time after each batch gets drained.
         * 
         * @return builder
         * 
         */
        public Builder batchSoakDuration(@Nullable Output<String> batchSoakDuration) {
            $.batchSoakDuration = batchSoakDuration;
            return this;
        }

        /**
         * @param batchSoakDuration Soak time after each batch gets drained.
         * 
         * @return builder
         * 
         */
        public Builder batchSoakDuration(String batchSoakDuration) {
            return batchSoakDuration(Output.of(batchSoakDuration));
        }

        public NodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyArgs build() {
            return $;
        }
    }

}
