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

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


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

    public static final CapacityProviderAutoScalingGroupProviderManagedScalingArgs Empty = new CapacityProviderAutoScalingGroupProviderManagedScalingArgs();

    /**
     * Period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. If this parameter is omitted, the default value of 300 seconds is used.
     * 
     */
    @Import(name="instanceWarmupPeriod")
    private @Nullable Output<Integer> instanceWarmupPeriod;

    /**
     * @return Period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. If this parameter is omitted, the default value of 300 seconds is used.
     * 
     */
    public Optional<Output<Integer>> instanceWarmupPeriod() {
        return Optional.ofNullable(this.instanceWarmupPeriod);
    }

    /**
     * Maximum step adjustment size. A number between 1 and 10,000.
     * 
     */
    @Import(name="maximumScalingStepSize")
    private @Nullable Output<Integer> maximumScalingStepSize;

    /**
     * @return Maximum step adjustment size. A number between 1 and 10,000.
     * 
     */
    public Optional<Output<Integer>> maximumScalingStepSize() {
        return Optional.ofNullable(this.maximumScalingStepSize);
    }

    /**
     * Minimum step adjustment size. A number between 1 and 10,000.
     * 
     */
    @Import(name="minimumScalingStepSize")
    private @Nullable Output<Integer> minimumScalingStepSize;

    /**
     * @return Minimum step adjustment size. A number between 1 and 10,000.
     * 
     */
    public Optional<Output<Integer>> minimumScalingStepSize() {
        return Optional.ofNullable(this.minimumScalingStepSize);
    }

    /**
     * Whether auto scaling is managed by ECS. Valid values are `ENABLED` and `DISABLED`.
     * 
     */
    @Import(name="status")
    private @Nullable Output<String> status;

    /**
     * @return Whether auto scaling is managed by ECS. Valid values are `ENABLED` and `DISABLED`.
     * 
     */
    public Optional<Output<String>> status() {
        return Optional.ofNullable(this.status);
    }

    /**
     * Target utilization for the capacity provider. A number between 1 and 100.
     * 
     */
    @Import(name="targetCapacity")
    private @Nullable Output<Integer> targetCapacity;

    /**
     * @return Target utilization for the capacity provider. A number between 1 and 100.
     * 
     */
    public Optional<Output<Integer>> targetCapacity() {
        return Optional.ofNullable(this.targetCapacity);
    }

    private CapacityProviderAutoScalingGroupProviderManagedScalingArgs() {}

    private CapacityProviderAutoScalingGroupProviderManagedScalingArgs(CapacityProviderAutoScalingGroupProviderManagedScalingArgs $) {
        this.instanceWarmupPeriod = $.instanceWarmupPeriod;
        this.maximumScalingStepSize = $.maximumScalingStepSize;
        this.minimumScalingStepSize = $.minimumScalingStepSize;
        this.status = $.status;
        this.targetCapacity = $.targetCapacity;
    }

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

    public static final class Builder {
        private CapacityProviderAutoScalingGroupProviderManagedScalingArgs $;

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

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

        /**
         * @param instanceWarmupPeriod Period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. If this parameter is omitted, the default value of 300 seconds is used.
         * 
         * @return builder
         * 
         */
        public Builder instanceWarmupPeriod(@Nullable Output<Integer> instanceWarmupPeriod) {
            $.instanceWarmupPeriod = instanceWarmupPeriod;
            return this;
        }

        /**
         * @param instanceWarmupPeriod Period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. If this parameter is omitted, the default value of 300 seconds is used.
         * 
         * @return builder
         * 
         */
        public Builder instanceWarmupPeriod(Integer instanceWarmupPeriod) {
            return instanceWarmupPeriod(Output.of(instanceWarmupPeriod));
        }

        /**
         * @param maximumScalingStepSize Maximum step adjustment size. A number between 1 and 10,000.
         * 
         * @return builder
         * 
         */
        public Builder maximumScalingStepSize(@Nullable Output<Integer> maximumScalingStepSize) {
            $.maximumScalingStepSize = maximumScalingStepSize;
            return this;
        }

        /**
         * @param maximumScalingStepSize Maximum step adjustment size. A number between 1 and 10,000.
         * 
         * @return builder
         * 
         */
        public Builder maximumScalingStepSize(Integer maximumScalingStepSize) {
            return maximumScalingStepSize(Output.of(maximumScalingStepSize));
        }

        /**
         * @param minimumScalingStepSize Minimum step adjustment size. A number between 1 and 10,000.
         * 
         * @return builder
         * 
         */
        public Builder minimumScalingStepSize(@Nullable Output<Integer> minimumScalingStepSize) {
            $.minimumScalingStepSize = minimumScalingStepSize;
            return this;
        }

        /**
         * @param minimumScalingStepSize Minimum step adjustment size. A number between 1 and 10,000.
         * 
         * @return builder
         * 
         */
        public Builder minimumScalingStepSize(Integer minimumScalingStepSize) {
            return minimumScalingStepSize(Output.of(minimumScalingStepSize));
        }

        /**
         * @param status Whether auto scaling is managed by ECS. Valid values are `ENABLED` and `DISABLED`.
         * 
         * @return builder
         * 
         */
        public Builder status(@Nullable Output<String> status) {
            $.status = status;
            return this;
        }

        /**
         * @param status Whether auto scaling is managed by ECS. Valid values are `ENABLED` and `DISABLED`.
         * 
         * @return builder
         * 
         */
        public Builder status(String status) {
            return status(Output.of(status));
        }

        /**
         * @param targetCapacity Target utilization for the capacity provider. A number between 1 and 100.
         * 
         * @return builder
         * 
         */
        public Builder targetCapacity(@Nullable Output<Integer> targetCapacity) {
            $.targetCapacity = targetCapacity;
            return this;
        }

        /**
         * @param targetCapacity Target utilization for the capacity provider. A number between 1 and 100.
         * 
         * @return builder
         * 
         */
        public Builder targetCapacity(Integer targetCapacity) {
            return targetCapacity(Output.of(targetCapacity));
        }

        public CapacityProviderAutoScalingGroupProviderManagedScalingArgs build() {
            return $;
        }
    }

}
