/* * 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.computeoptimizer.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** *
* Describes an Amazon Elastic Block Store (Amazon EBS) volume recommendation. *
* * @see AWS API Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class VolumeRecommendation implements Serializable, Cloneable, StructuredPojo { /** ** The Amazon Resource Name (ARN) of the current volume. *
*/ private String volumeArn; /** ** The Amazon Web Services account ID of the volume. *
*/ private String accountId; /** ** An array of objects that describe the current configuration of the volume. *
*/ private VolumeConfiguration currentConfiguration; /** ** The finding classification of the volume. *
** Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies a
* recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that the
* volume is correctly provisioned to run your workload based on the chosen volume type. For optimized resources,
* Compute Optimizer might recommend a new generation volume type.
*
* An array of objects that describe the utilization metrics of the volume. *
*/ private java.util.List* The number of days for which utilization metrics were analyzed for the volume. *
*/ private Double lookBackPeriodInDays; /** ** An array of objects that describe the recommendation options for the volume. *
*/ private java.util.List* The timestamp of when the volume recommendation was last generated. *
*/ private java.util.Date lastRefreshTimestamp; /** ** The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the risk, the * more likely the current EBS volume doesn't have sufficient capacity. *
*/ private String currentPerformanceRisk; /** ** A list of tags assigned to your Amazon EBS volume recommendations. *
*/ private java.util.List* The Amazon Resource Name (ARN) of the current volume. *
* * @param volumeArn * The Amazon Resource Name (ARN) of the current volume. */ public void setVolumeArn(String volumeArn) { this.volumeArn = volumeArn; } /** ** The Amazon Resource Name (ARN) of the current volume. *
* * @return The Amazon Resource Name (ARN) of the current volume. */ public String getVolumeArn() { return this.volumeArn; } /** ** The Amazon Resource Name (ARN) of the current volume. *
* * @param volumeArn * The Amazon Resource Name (ARN) of the current volume. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withVolumeArn(String volumeArn) { setVolumeArn(volumeArn); return this; } /** ** The Amazon Web Services account ID of the volume. *
* * @param accountId * The Amazon Web Services account ID of the volume. */ public void setAccountId(String accountId) { this.accountId = accountId; } /** ** The Amazon Web Services account ID of the volume. *
* * @return The Amazon Web Services account ID of the volume. */ public String getAccountId() { return this.accountId; } /** ** The Amazon Web Services account ID of the volume. *
* * @param accountId * The Amazon Web Services account ID of the volume. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withAccountId(String accountId) { setAccountId(accountId); return this; } /** ** An array of objects that describe the current configuration of the volume. *
* * @param currentConfiguration * An array of objects that describe the current configuration of the volume. */ public void setCurrentConfiguration(VolumeConfiguration currentConfiguration) { this.currentConfiguration = currentConfiguration; } /** ** An array of objects that describe the current configuration of the volume. *
* * @return An array of objects that describe the current configuration of the volume. */ public VolumeConfiguration getCurrentConfiguration() { return this.currentConfiguration; } /** ** An array of objects that describe the current configuration of the volume. *
* * @param currentConfiguration * An array of objects that describe the current configuration of the volume. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withCurrentConfiguration(VolumeConfiguration currentConfiguration) { setCurrentConfiguration(currentConfiguration); return this; } /** ** The finding classification of the volume. *
** Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies a
* recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that the
* volume is correctly provisioned to run your workload based on the chosen volume type. For optimized resources,
* Compute Optimizer might recommend a new generation volume type.
*
* Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies
* a recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that
* the volume is correctly provisioned to run your workload based on the chosen volume type. For optimized
* resources, Compute Optimizer might recommend a new generation volume type.
*
* The finding classification of the volume. *
** Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies a
* recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that the
* volume is correctly provisioned to run your workload based on the chosen volume type. For optimized resources,
* Compute Optimizer might recommend a new generation volume type.
*
* Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies
* a recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that
* the volume is correctly provisioned to run your workload based on the chosen volume type. For optimized
* resources, Compute Optimizer might recommend a new generation volume type.
*
* The finding classification of the volume. *
** Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies a
* recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that the
* volume is correctly provisioned to run your workload based on the chosen volume type. For optimized resources,
* Compute Optimizer might recommend a new generation volume type.
*
* Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies
* a recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that
* the volume is correctly provisioned to run your workload based on the chosen volume type. For optimized
* resources, Compute Optimizer might recommend a new generation volume type.
*
* The finding classification of the volume. *
** Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies a
* recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that the
* volume is correctly provisioned to run your workload based on the chosen volume type. For optimized resources,
* Compute Optimizer might recommend a new generation volume type.
*
* Findings for volumes include: *
*
* NotOptimized
—A volume is considered not optimized when Compute Optimizer identifies
* a recommendation that can provide better performance for your workload.
*
* Optimized
—An volume is considered optimized when Compute Optimizer determines that
* the volume is correctly provisioned to run your workload based on the chosen volume type. For optimized
* resources, Compute Optimizer might recommend a new generation volume type.
*
* An array of objects that describe the utilization metrics of the volume. *
* * @return An array of objects that describe the utilization metrics of the volume. */ public java.util.List* An array of objects that describe the utilization metrics of the volume. *
* * @param utilizationMetrics * An array of objects that describe the utilization metrics of the volume. */ public void setUtilizationMetrics(java.util.Collection* An array of objects that describe the utilization metrics of the volume. *
** NOTE: This method appends the values to the existing list (if any). Use * {@link #setUtilizationMetrics(java.util.Collection)} or {@link #withUtilizationMetrics(java.util.Collection)} if * you want to override the existing values. *
* * @param utilizationMetrics * An array of objects that describe the utilization metrics of the volume. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withUtilizationMetrics(EBSUtilizationMetric... utilizationMetrics) { if (this.utilizationMetrics == null) { setUtilizationMetrics(new java.util.ArrayList* An array of objects that describe the utilization metrics of the volume. *
* * @param utilizationMetrics * An array of objects that describe the utilization metrics of the volume. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withUtilizationMetrics(java.util.Collection* The number of days for which utilization metrics were analyzed for the volume. *
* * @param lookBackPeriodInDays * The number of days for which utilization metrics were analyzed for the volume. */ public void setLookBackPeriodInDays(Double lookBackPeriodInDays) { this.lookBackPeriodInDays = lookBackPeriodInDays; } /** ** The number of days for which utilization metrics were analyzed for the volume. *
* * @return The number of days for which utilization metrics were analyzed for the volume. */ public Double getLookBackPeriodInDays() { return this.lookBackPeriodInDays; } /** ** The number of days for which utilization metrics were analyzed for the volume. *
* * @param lookBackPeriodInDays * The number of days for which utilization metrics were analyzed for the volume. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withLookBackPeriodInDays(Double lookBackPeriodInDays) { setLookBackPeriodInDays(lookBackPeriodInDays); return this; } /** ** An array of objects that describe the recommendation options for the volume. *
* * @return An array of objects that describe the recommendation options for the volume. */ public java.util.List* An array of objects that describe the recommendation options for the volume. *
* * @param volumeRecommendationOptions * An array of objects that describe the recommendation options for the volume. */ public void setVolumeRecommendationOptions(java.util.Collection* An array of objects that describe the recommendation options for the volume. *
** NOTE: This method appends the values to the existing list (if any). Use * {@link #setVolumeRecommendationOptions(java.util.Collection)} or * {@link #withVolumeRecommendationOptions(java.util.Collection)} if you want to override the existing values. *
* * @param volumeRecommendationOptions * An array of objects that describe the recommendation options for the volume. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withVolumeRecommendationOptions(VolumeRecommendationOption... volumeRecommendationOptions) { if (this.volumeRecommendationOptions == null) { setVolumeRecommendationOptions(new java.util.ArrayList* An array of objects that describe the recommendation options for the volume. *
* * @param volumeRecommendationOptions * An array of objects that describe the recommendation options for the volume. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withVolumeRecommendationOptions(java.util.Collection* The timestamp of when the volume recommendation was last generated. *
* * @param lastRefreshTimestamp * The timestamp of when the volume recommendation was last generated. */ public void setLastRefreshTimestamp(java.util.Date lastRefreshTimestamp) { this.lastRefreshTimestamp = lastRefreshTimestamp; } /** ** The timestamp of when the volume recommendation was last generated. *
* * @return The timestamp of when the volume recommendation was last generated. */ public java.util.Date getLastRefreshTimestamp() { return this.lastRefreshTimestamp; } /** ** The timestamp of when the volume recommendation was last generated. *
* * @param lastRefreshTimestamp * The timestamp of when the volume recommendation was last generated. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withLastRefreshTimestamp(java.util.Date lastRefreshTimestamp) { setLastRefreshTimestamp(lastRefreshTimestamp); return this; } /** ** The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the risk, the * more likely the current EBS volume doesn't have sufficient capacity. *
* * @param currentPerformanceRisk * The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the * risk, the more likely the current EBS volume doesn't have sufficient capacity. * @see CurrentPerformanceRisk */ public void setCurrentPerformanceRisk(String currentPerformanceRisk) { this.currentPerformanceRisk = currentPerformanceRisk; } /** ** The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the risk, the * more likely the current EBS volume doesn't have sufficient capacity. *
* * @return The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the * risk, the more likely the current EBS volume doesn't have sufficient capacity. * @see CurrentPerformanceRisk */ public String getCurrentPerformanceRisk() { return this.currentPerformanceRisk; } /** ** The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the risk, the * more likely the current EBS volume doesn't have sufficient capacity. *
* * @param currentPerformanceRisk * The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the * risk, the more likely the current EBS volume doesn't have sufficient capacity. * @return Returns a reference to this object so that method calls can be chained together. * @see CurrentPerformanceRisk */ public VolumeRecommendation withCurrentPerformanceRisk(String currentPerformanceRisk) { setCurrentPerformanceRisk(currentPerformanceRisk); return this; } /** ** The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the risk, the * more likely the current EBS volume doesn't have sufficient capacity. *
* * @param currentPerformanceRisk * The risk of the current EBS volume not meeting the performance needs of its workloads. The higher the * risk, the more likely the current EBS volume doesn't have sufficient capacity. * @return Returns a reference to this object so that method calls can be chained together. * @see CurrentPerformanceRisk */ public VolumeRecommendation withCurrentPerformanceRisk(CurrentPerformanceRisk currentPerformanceRisk) { this.currentPerformanceRisk = currentPerformanceRisk.toString(); return this; } /** ** A list of tags assigned to your Amazon EBS volume recommendations. *
* * @return A list of tags assigned to your Amazon EBS volume recommendations. */ public java.util.List* A list of tags assigned to your Amazon EBS volume recommendations. *
* * @param tags * A list of tags assigned to your Amazon EBS volume recommendations. */ public void setTags(java.util.Collection* A list of tags assigned to your Amazon EBS volume recommendations. *
** NOTE: This method appends the values to the existing list (if any). Use * {@link #setTags(java.util.Collection)} or {@link #withTags(java.util.Collection)} if you want to override the * existing values. *
* * @param tags * A list of tags assigned to your Amazon EBS volume recommendations. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withTags(Tag... tags) { if (this.tags == null) { setTags(new java.util.ArrayList* A list of tags assigned to your Amazon EBS volume recommendations. *
* * @param tags * A list of tags assigned to your Amazon EBS volume recommendations. * @return Returns a reference to this object so that method calls can be chained together. */ public VolumeRecommendation withTags(java.util.Collection