/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.autoscaling.model; import java.io.Serializable; import javax.annotation.Generated; /** *

* Represents a predictive scaling policy configuration to use with Amazon EC2 Auto Scaling. *

* * @see AWS API Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class PredictiveScalingConfiguration implements Serializable, Cloneable { /** *

* This structure includes the metrics and target utilization to use for predictive scaling. *

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a target * value and a single metric pair, or a target value and one scaling metric and one load metric. *

*/ private com.amazonaws.internal.SdkInternalList metricSpecifications; /** *

* The predictive scaling mode. Defaults to ForecastOnly if not specified. *

*/ private String mode; /** *

* The amount of time, in seconds, by which the instance launch time can be advanced. For example, the forecast says * to add capacity at 10:00 AM, and you choose to pre-launch instances by 5 minutes. In that case, the instances * will be launched at 9:55 AM. The intention is to give resources time to be provisioned. It can take a few minutes * to launch an EC2 instance. The actual amount of time required depends on several factors, such as the size of the * instance and whether there are startup scripts to complete. *

*

* The value must be less than the forecast interval duration of 3600 seconds (60 minutes). Defaults to 300 seconds * if not specified. *

*/ private Integer schedulingBufferTime; /** *

* Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity * of the Auto Scaling group. Defaults to HonorMaxCapacity if not specified. *

*

* The following are possible values: *

* */ private String maxCapacityBreachBehavior; /** *

* The size of the capacity buffer to use when the forecast capacity is close to or exceeds the maximum capacity. * The value is specified as a percentage relative to the forecast capacity. For example, if the buffer is 10, this * means a 10 percent buffer, such that if the forecast capacity is 50, and the maximum capacity is 40, then the * effective maximum capacity is 55. *

*

* If set to 0, Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to equal but not exceed * forecast capacity. *

*

* Required if the MaxCapacityBreachBehavior property is set to IncreaseMaxCapacity, and * cannot be used otherwise. *

*/ private Integer maxCapacityBuffer; /** *

* This structure includes the metrics and target utilization to use for predictive scaling. *

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a target * value and a single metric pair, or a target value and one scaling metric and one load metric. *

* * @return This structure includes the metrics and target utilization to use for predictive scaling.

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a * target value and a single metric pair, or a target value and one scaling metric and one load metric. */ public java.util.List getMetricSpecifications() { if (metricSpecifications == null) { metricSpecifications = new com.amazonaws.internal.SdkInternalList(); } return metricSpecifications; } /** *

* This structure includes the metrics and target utilization to use for predictive scaling. *

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a target * value and a single metric pair, or a target value and one scaling metric and one load metric. *

* * @param metricSpecifications * This structure includes the metrics and target utilization to use for predictive scaling.

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a * target value and a single metric pair, or a target value and one scaling metric and one load metric. */ public void setMetricSpecifications(java.util.Collection metricSpecifications) { if (metricSpecifications == null) { this.metricSpecifications = null; return; } this.metricSpecifications = new com.amazonaws.internal.SdkInternalList(metricSpecifications); } /** *

* This structure includes the metrics and target utilization to use for predictive scaling. *

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a target * value and a single metric pair, or a target value and one scaling metric and one load metric. *

*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setMetricSpecifications(java.util.Collection)} or {@link #withMetricSpecifications(java.util.Collection)} * if you want to override the existing values. *

* * @param metricSpecifications * This structure includes the metrics and target utilization to use for predictive scaling.

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a * target value and a single metric pair, or a target value and one scaling metric and one load metric. * @return Returns a reference to this object so that method calls can be chained together. */ public PredictiveScalingConfiguration withMetricSpecifications(PredictiveScalingMetricSpecification... metricSpecifications) { if (this.metricSpecifications == null) { setMetricSpecifications(new com.amazonaws.internal.SdkInternalList(metricSpecifications.length)); } for (PredictiveScalingMetricSpecification ele : metricSpecifications) { this.metricSpecifications.add(ele); } return this; } /** *

* This structure includes the metrics and target utilization to use for predictive scaling. *

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a target * value and a single metric pair, or a target value and one scaling metric and one load metric. *

* * @param metricSpecifications * This structure includes the metrics and target utilization to use for predictive scaling.

*

* This is an array, but we currently only support a single metric specification. That is, you can specify a * target value and a single metric pair, or a target value and one scaling metric and one load metric. * @return Returns a reference to this object so that method calls can be chained together. */ public PredictiveScalingConfiguration withMetricSpecifications(java.util.Collection metricSpecifications) { setMetricSpecifications(metricSpecifications); return this; } /** *

* The predictive scaling mode. Defaults to ForecastOnly if not specified. *

* * @param mode * The predictive scaling mode. Defaults to ForecastOnly if not specified. * @see PredictiveScalingMode */ public void setMode(String mode) { this.mode = mode; } /** *

* The predictive scaling mode. Defaults to ForecastOnly if not specified. *

* * @return The predictive scaling mode. Defaults to ForecastOnly if not specified. * @see PredictiveScalingMode */ public String getMode() { return this.mode; } /** *

* The predictive scaling mode. Defaults to ForecastOnly if not specified. *

* * @param mode * The predictive scaling mode. Defaults to ForecastOnly if not specified. * @return Returns a reference to this object so that method calls can be chained together. * @see PredictiveScalingMode */ public PredictiveScalingConfiguration withMode(String mode) { setMode(mode); return this; } /** *

* The predictive scaling mode. Defaults to ForecastOnly if not specified. *

* * @param mode * The predictive scaling mode. Defaults to ForecastOnly if not specified. * @return Returns a reference to this object so that method calls can be chained together. * @see PredictiveScalingMode */ public PredictiveScalingConfiguration withMode(PredictiveScalingMode mode) { this.mode = mode.toString(); return this; } /** *

* The amount of time, in seconds, by which the instance launch time can be advanced. For example, the forecast says * to add capacity at 10:00 AM, and you choose to pre-launch instances by 5 minutes. In that case, the instances * will be launched at 9:55 AM. The intention is to give resources time to be provisioned. It can take a few minutes * to launch an EC2 instance. The actual amount of time required depends on several factors, such as the size of the * instance and whether there are startup scripts to complete. *

*

* The value must be less than the forecast interval duration of 3600 seconds (60 minutes). Defaults to 300 seconds * if not specified. *

* * @param schedulingBufferTime * The amount of time, in seconds, by which the instance launch time can be advanced. For example, the * forecast says to add capacity at 10:00 AM, and you choose to pre-launch instances by 5 minutes. In that * case, the instances will be launched at 9:55 AM. The intention is to give resources time to be * provisioned. It can take a few minutes to launch an EC2 instance. The actual amount of time required * depends on several factors, such as the size of the instance and whether there are startup scripts to * complete.

*

* The value must be less than the forecast interval duration of 3600 seconds (60 minutes). Defaults to 300 * seconds if not specified. */ public void setSchedulingBufferTime(Integer schedulingBufferTime) { this.schedulingBufferTime = schedulingBufferTime; } /** *

* The amount of time, in seconds, by which the instance launch time can be advanced. For example, the forecast says * to add capacity at 10:00 AM, and you choose to pre-launch instances by 5 minutes. In that case, the instances * will be launched at 9:55 AM. The intention is to give resources time to be provisioned. It can take a few minutes * to launch an EC2 instance. The actual amount of time required depends on several factors, such as the size of the * instance and whether there are startup scripts to complete. *

*

* The value must be less than the forecast interval duration of 3600 seconds (60 minutes). Defaults to 300 seconds * if not specified. *

* * @return The amount of time, in seconds, by which the instance launch time can be advanced. For example, the * forecast says to add capacity at 10:00 AM, and you choose to pre-launch instances by 5 minutes. In that * case, the instances will be launched at 9:55 AM. The intention is to give resources time to be * provisioned. It can take a few minutes to launch an EC2 instance. The actual amount of time required * depends on several factors, such as the size of the instance and whether there are startup scripts to * complete.

*

* The value must be less than the forecast interval duration of 3600 seconds (60 minutes). Defaults to 300 * seconds if not specified. */ public Integer getSchedulingBufferTime() { return this.schedulingBufferTime; } /** *

* The amount of time, in seconds, by which the instance launch time can be advanced. For example, the forecast says * to add capacity at 10:00 AM, and you choose to pre-launch instances by 5 minutes. In that case, the instances * will be launched at 9:55 AM. The intention is to give resources time to be provisioned. It can take a few minutes * to launch an EC2 instance. The actual amount of time required depends on several factors, such as the size of the * instance and whether there are startup scripts to complete. *

*

* The value must be less than the forecast interval duration of 3600 seconds (60 minutes). Defaults to 300 seconds * if not specified. *

* * @param schedulingBufferTime * The amount of time, in seconds, by which the instance launch time can be advanced. For example, the * forecast says to add capacity at 10:00 AM, and you choose to pre-launch instances by 5 minutes. In that * case, the instances will be launched at 9:55 AM. The intention is to give resources time to be * provisioned. It can take a few minutes to launch an EC2 instance. The actual amount of time required * depends on several factors, such as the size of the instance and whether there are startup scripts to * complete.

*

* The value must be less than the forecast interval duration of 3600 seconds (60 minutes). Defaults to 300 * seconds if not specified. * @return Returns a reference to this object so that method calls can be chained together. */ public PredictiveScalingConfiguration withSchedulingBufferTime(Integer schedulingBufferTime) { setSchedulingBufferTime(schedulingBufferTime); return this; } /** *

* Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity * of the Auto Scaling group. Defaults to HonorMaxCapacity if not specified. *

*

* The following are possible values: *

* * * @param maxCapacityBreachBehavior * Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum * capacity of the Auto Scaling group. Defaults to HonorMaxCapacity if not specified.

*

* The following are possible values: *

*