/* * 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 EC2 instance recommendation. *

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

* The Amazon Resource Name (ARN) of the current instance. *

*/ private String instanceArn; /** *

* The Amazon Web Services account ID of the instance. *

*/ private String accountId; /** *

* The name of the current instance. *

*/ private String instanceName; /** *

* The instance type of the current instance. *

*/ private String currentInstanceType; /** *

* The finding classification of the instance. *

*

* Findings for instances include: *

* */ private String finding; /** *

* The reason for the finding classification of the instance. *

*

* Finding reason codes for instances include: *

* * *

* For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. For * more information about EBS volume metrics, see Amazon CloudWatch metrics * for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

*
*/ private java.util.List findingReasonCodes; /** *

* An array of objects that describe the utilization metrics of the instance. *

*/ private java.util.List utilizationMetrics; /** *

* The number of days for which utilization metrics were analyzed for the instance. *

*/ private Double lookBackPeriodInDays; /** *

* An array of objects that describe the recommendation options for the instance. *

*/ private java.util.List recommendationOptions; /** *

* An array of objects that describe the source resource of the recommendation. *

*/ private java.util.List recommendationSources; /** *

* The timestamp of when the instance recommendation was last generated. *

*/ private java.util.Date lastRefreshTimestamp; /** *

* The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, the * more likely the current instance cannot meet the performance requirements of its workload. *

*/ private String currentPerformanceRisk; /** *

* An object that describes the effective recommendation preferences for the instance. *

*/ private EffectiveRecommendationPreferences effectiveRecommendationPreferences; /** *

* The applications that might be running on the instance as inferred by Compute Optimizer. *

*

* Compute Optimizer can infer if one of the following applications might be running on the instance: *

*
    *
  • *

    * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

    *
  • *
  • *

    * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

    *
  • *
  • *

    * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

    *
  • *
  • *

    * Memcached - Infers that Memcached might be running on the instance. *

    *
  • *
  • *

    * NGINX - Infers that NGINX might be running on the instance. *

    *
  • *
  • *

    * PostgreSql - Infers that PostgreSQL might be running on the instance. *

    *
  • *
  • *

    * Redis - Infers that Redis might be running on the instance. *

    *
  • *
  • *

    * Kafka - Infers that Kafka might be running on the instance. *

    *
  • *
  • *

    * SQLServer - Infers that SQLServer might be running on the instance. *

    *
  • *
*/ private java.util.List inferredWorkloadTypes; /** *

* The state of the instance when the recommendation was generated. *

*/ private String instanceState; /** *

* A list of tags assigned to your Amazon EC2 instance recommendations. *

*/ private java.util.List tags; /** *

* An object that describes Compute Optimizer's integration status with your external metrics provider. *

*/ private ExternalMetricStatus externalMetricStatus; /** *

* The Amazon Resource Name (ARN) of the current instance. *

* * @param instanceArn * The Amazon Resource Name (ARN) of the current instance. */ public void setInstanceArn(String instanceArn) { this.instanceArn = instanceArn; } /** *

* The Amazon Resource Name (ARN) of the current instance. *

* * @return The Amazon Resource Name (ARN) of the current instance. */ public String getInstanceArn() { return this.instanceArn; } /** *

* The Amazon Resource Name (ARN) of the current instance. *

* * @param instanceArn * The Amazon Resource Name (ARN) of the current instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withInstanceArn(String instanceArn) { setInstanceArn(instanceArn); return this; } /** *

* The Amazon Web Services account ID of the instance. *

* * @param accountId * The Amazon Web Services account ID of the instance. */ public void setAccountId(String accountId) { this.accountId = accountId; } /** *

* The Amazon Web Services account ID of the instance. *

* * @return The Amazon Web Services account ID of the instance. */ public String getAccountId() { return this.accountId; } /** *

* The Amazon Web Services account ID of the instance. *

* * @param accountId * The Amazon Web Services account ID of the instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withAccountId(String accountId) { setAccountId(accountId); return this; } /** *

* The name of the current instance. *

* * @param instanceName * The name of the current instance. */ public void setInstanceName(String instanceName) { this.instanceName = instanceName; } /** *

* The name of the current instance. *

* * @return The name of the current instance. */ public String getInstanceName() { return this.instanceName; } /** *

* The name of the current instance. *

* * @param instanceName * The name of the current instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withInstanceName(String instanceName) { setInstanceName(instanceName); return this; } /** *

* The instance type of the current instance. *

* * @param currentInstanceType * The instance type of the current instance. */ public void setCurrentInstanceType(String currentInstanceType) { this.currentInstanceType = currentInstanceType; } /** *

* The instance type of the current instance. *

* * @return The instance type of the current instance. */ public String getCurrentInstanceType() { return this.currentInstanceType; } /** *

* The instance type of the current instance. *

* * @param currentInstanceType * The instance type of the current instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withCurrentInstanceType(String currentInstanceType) { setCurrentInstanceType(currentInstanceType); return this; } /** *

* The finding classification of the instance. *

*

* Findings for instances include: *

*
    *
  • *

    * Underprovisioned —An instance is considered under-provisioned when at least one * specification of your instance, such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application performance. *

    *
  • *
  • *

    * Overprovisioned —An instance is considered over-provisioned when at least one specification * of your instance, such as CPU, memory, or network, can be sized down while still meeting the performance * requirements of your workload, and no specification is under-provisioned. Over-provisioned instances may lead to * unnecessary infrastructure cost. *

    *
  • *
  • *

    * Optimized —An instance is considered optimized when all specifications of your instance, * such as CPU, memory, and network, meet the performance requirements of your workload and is not over provisioned. * For optimized resources, Compute Optimizer might recommend a new generation instance type. *

    *
  • *
* * @param finding * The finding classification of the instance.

*

* Findings for instances include: *

*
    *
  • *

    * Underprovisioned —An instance is considered under-provisioned when at least one * specification of your instance, such as CPU, memory, or network, does not meet the performance * requirements of your workload. Under-provisioned instances may lead to poor application performance. *

    *
  • *
  • *

    * Overprovisioned —An instance is considered over-provisioned when at least one * specification of your instance, such as CPU, memory, or network, can be sized down while still meeting the * performance requirements of your workload, and no specification is under-provisioned. Over-provisioned * instances may lead to unnecessary infrastructure cost. *

    *
  • *
  • *

    * Optimized —An instance is considered optimized when all specifications of your * instance, such as CPU, memory, and network, meet the performance requirements of your workload and is not * over provisioned. For optimized resources, Compute Optimizer might recommend a new generation instance * type. *

    *
  • * @see Finding */ public void setFinding(String finding) { this.finding = finding; } /** *

    * The finding classification of the instance. *

    *

    * Findings for instances include: *

    *
      *
    • *

      * Underprovisioned —An instance is considered under-provisioned when at least one * specification of your instance, such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application performance. *

      *
    • *
    • *

      * Overprovisioned —An instance is considered over-provisioned when at least one specification * of your instance, such as CPU, memory, or network, can be sized down while still meeting the performance * requirements of your workload, and no specification is under-provisioned. Over-provisioned instances may lead to * unnecessary infrastructure cost. *

      *
    • *
    • *

      * Optimized —An instance is considered optimized when all specifications of your instance, * such as CPU, memory, and network, meet the performance requirements of your workload and is not over provisioned. * For optimized resources, Compute Optimizer might recommend a new generation instance type. *

      *
    • *
    * * @return The finding classification of the instance.

    *

    * Findings for instances include: *

    *
      *
    • *

      * Underprovisioned —An instance is considered under-provisioned when at least one * specification of your instance, such as CPU, memory, or network, does not meet the performance * requirements of your workload. Under-provisioned instances may lead to poor application performance. *

      *
    • *
    • *

      * Overprovisioned —An instance is considered over-provisioned when at least one * specification of your instance, such as CPU, memory, or network, can be sized down while still meeting * the performance requirements of your workload, and no specification is under-provisioned. * Over-provisioned instances may lead to unnecessary infrastructure cost. *

      *
    • *
    • *

      * Optimized —An instance is considered optimized when all specifications of your * instance, such as CPU, memory, and network, meet the performance requirements of your workload and is not * over provisioned. For optimized resources, Compute Optimizer might recommend a new generation instance * type. *

      *
    • * @see Finding */ public String getFinding() { return this.finding; } /** *

      * The finding classification of the instance. *

      *

      * Findings for instances include: *

      *
        *
      • *

        * Underprovisioned —An instance is considered under-provisioned when at least one * specification of your instance, such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application performance. *

        *
      • *
      • *

        * Overprovisioned —An instance is considered over-provisioned when at least one specification * of your instance, such as CPU, memory, or network, can be sized down while still meeting the performance * requirements of your workload, and no specification is under-provisioned. Over-provisioned instances may lead to * unnecessary infrastructure cost. *

        *
      • *
      • *

        * Optimized —An instance is considered optimized when all specifications of your instance, * such as CPU, memory, and network, meet the performance requirements of your workload and is not over provisioned. * For optimized resources, Compute Optimizer might recommend a new generation instance type. *

        *
      • *
      * * @param finding * The finding classification of the instance.

      *

      * Findings for instances include: *

      *
        *
      • *

        * Underprovisioned —An instance is considered under-provisioned when at least one * specification of your instance, such as CPU, memory, or network, does not meet the performance * requirements of your workload. Under-provisioned instances may lead to poor application performance. *

        *
      • *
      • *

        * Overprovisioned —An instance is considered over-provisioned when at least one * specification of your instance, such as CPU, memory, or network, can be sized down while still meeting the * performance requirements of your workload, and no specification is under-provisioned. Over-provisioned * instances may lead to unnecessary infrastructure cost. *

        *
      • *
      • *

        * Optimized —An instance is considered optimized when all specifications of your * instance, such as CPU, memory, and network, meet the performance requirements of your workload and is not * over provisioned. For optimized resources, Compute Optimizer might recommend a new generation instance * type. *

        *
      • * @return Returns a reference to this object so that method calls can be chained together. * @see Finding */ public InstanceRecommendation withFinding(String finding) { setFinding(finding); return this; } /** *

        * The finding classification of the instance. *

        *

        * Findings for instances include: *

        *
          *
        • *

          * Underprovisioned —An instance is considered under-provisioned when at least one * specification of your instance, such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application performance. *

          *
        • *
        • *

          * Overprovisioned —An instance is considered over-provisioned when at least one specification * of your instance, such as CPU, memory, or network, can be sized down while still meeting the performance * requirements of your workload, and no specification is under-provisioned. Over-provisioned instances may lead to * unnecessary infrastructure cost. *

          *
        • *
        • *

          * Optimized —An instance is considered optimized when all specifications of your instance, * such as CPU, memory, and network, meet the performance requirements of your workload and is not over provisioned. * For optimized resources, Compute Optimizer might recommend a new generation instance type. *

          *
        • *
        * * @param finding * The finding classification of the instance.

        *

        * Findings for instances include: *

        *
          *
        • *

          * Underprovisioned —An instance is considered under-provisioned when at least one * specification of your instance, such as CPU, memory, or network, does not meet the performance * requirements of your workload. Under-provisioned instances may lead to poor application performance. *

          *
        • *
        • *

          * Overprovisioned —An instance is considered over-provisioned when at least one * specification of your instance, such as CPU, memory, or network, can be sized down while still meeting the * performance requirements of your workload, and no specification is under-provisioned. Over-provisioned * instances may lead to unnecessary infrastructure cost. *

          *
        • *
        • *

          * Optimized —An instance is considered optimized when all specifications of your * instance, such as CPU, memory, and network, meet the performance requirements of your workload and is not * over provisioned. For optimized resources, Compute Optimizer might recommend a new generation instance * type. *

          *
        • * @return Returns a reference to this object so that method calls can be chained together. * @see Finding */ public InstanceRecommendation withFinding(Finding finding) { this.finding = finding.toString(); return this; } /** *

          * The reason for the finding classification of the instance. *

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing the CPUUtilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU performance. * This is identified by analyzing the CPUUtilization metric of the current instance during the * look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better memory performance. * This is identified by analyzing the memory utilization metric of the current instance during the look-back * period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on them. For * more information, see Enabling memory utilization * with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux instances, Compute * Optimizer analyses the mem_used_percent metric in the CWAgent namespace, or the legacy * MemoryUtilization metric in the System/Linux namespace. On Windows instances, Compute * Optimizer analyses the Memory % Committed Bytes In Use metric in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current instance * during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better EBS IOPS * performance. This is identified by analyzing the VolumeReadOps and VolumeWriteOps * metric of EBS volumes attached to the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides better * network bandwidth performance. This is identified by analyzing the NetworkIn and * NetworkOut metrics of the current instance during the look-back period. This finding reason happens * when the NetworkIn or NetworkOut performance of an instance is impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) configuration * can be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network PPS performance. This is identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better disk * IOPS performance. This is identified by analyzing the DiskReadOps and DiskWriteOps * metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the DiskReadBytes and * DiskWriteBytes metrics of the current instance during the look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. For * more information about EBS volume metrics, see Amazon CloudWatch metrics * for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          *
          * * @return The reason for the finding classification of the instance.

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the * CPUUtilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU * performance. This is identified by analyzing the CPUUtilization metric of the current * instance during the look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the memory * utilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization metric of the current instance * during the look-back period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on * them. For more information, see Enabling memory * utilization with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux * instances, Compute Optimizer analyses the mem_used_percent metric in the * CWAgent namespace, or the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer analyses the * Memory % Committed Bytes In Use metric in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes * attached to the current instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that * provides better EBS throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes attached to the * current instance during the look-back period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * EBS IOPS performance. This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration * can be sized down while still meeting the performance requirements of your workload. This is identified * by analyzing the NetworkIn and NetworkOut metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network bandwidth performance. This is identified by analyzing the NetworkIn * and NetworkOut metrics of the current instance during the look-back period. This finding * reason happens when the NetworkIn or NetworkOut performance of an instance is * impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) * configuration can be sized down while still meeting the performance requirements of your workload. This * is identified by analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of * the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) * configuration doesn't meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified by analyzing the * NetworkPacketsIn and NetworkPacketsIn metrics of the current instance during * the look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * disk IOPS performance. This is identified by analyzing the DiskReadOps and * DiskWriteOps metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the DiskReadBytes and DiskWriteBytes metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better disk throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the * look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User * Guide. For more information about EBS volume metrics, see Amazon CloudWatch * metrics for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          * @see InstanceRecommendationFindingReasonCode */ public java.util.List getFindingReasonCodes() { return findingReasonCodes; } /** *

          * The reason for the finding classification of the instance. *

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing the CPUUtilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU performance. * This is identified by analyzing the CPUUtilization metric of the current instance during the * look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better memory performance. * This is identified by analyzing the memory utilization metric of the current instance during the look-back * period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on them. For * more information, see Enabling memory utilization * with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux instances, Compute * Optimizer analyses the mem_used_percent metric in the CWAgent namespace, or the legacy * MemoryUtilization metric in the System/Linux namespace. On Windows instances, Compute * Optimizer analyses the Memory % Committed Bytes In Use metric in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current instance * during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better EBS IOPS * performance. This is identified by analyzing the VolumeReadOps and VolumeWriteOps * metric of EBS volumes attached to the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides better * network bandwidth performance. This is identified by analyzing the NetworkIn and * NetworkOut metrics of the current instance during the look-back period. This finding reason happens * when the NetworkIn or NetworkOut performance of an instance is impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) configuration * can be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network PPS performance. This is identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better disk * IOPS performance. This is identified by analyzing the DiskReadOps and DiskWriteOps * metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the DiskReadBytes and * DiskWriteBytes metrics of the current instance during the look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. For * more information about EBS volume metrics, see Amazon CloudWatch metrics * for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          *
          * * @param findingReasonCodes * The reason for the finding classification of the instance.

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the * CPUUtilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU * performance. This is identified by analyzing the CPUUtilization metric of the current * instance during the look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the memory * utilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization metric of the current instance * during the look-back period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on * them. For more information, see Enabling memory * utilization with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux * instances, Compute Optimizer analyses the mem_used_percent metric in the CWAgent * namespace, or the legacy MemoryUtilization metric in the System/Linux namespace. * On Windows instances, Compute Optimizer analyses the Memory % Committed Bytes In Use metric * in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes * attached to the current instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides * better EBS throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * EBS IOPS performance. This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can * be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkIn and NetworkOut metrics of the current instance during * the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network bandwidth performance. This is identified by analyzing the NetworkIn * and NetworkOut metrics of the current instance during the look-back period. This finding * reason happens when the NetworkIn or NetworkOut performance of an instance is * impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) * configuration can be sized down while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the * current instance during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) * configuration doesn't meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified by analyzing the * NetworkPacketsIn and NetworkPacketsIn metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * disk IOPS performance. This is identified by analyzing the DiskReadOps and * DiskWriteOps metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the DiskReadBytes and DiskWriteBytes metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better disk throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the * look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. * For more information about EBS volume metrics, see Amazon CloudWatch * metrics for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          * @see InstanceRecommendationFindingReasonCode */ public void setFindingReasonCodes(java.util.Collection findingReasonCodes) { if (findingReasonCodes == null) { this.findingReasonCodes = null; return; } this.findingReasonCodes = new java.util.ArrayList(findingReasonCodes); } /** *

          * The reason for the finding classification of the instance. *

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing the CPUUtilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU performance. * This is identified by analyzing the CPUUtilization metric of the current instance during the * look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better memory performance. * This is identified by analyzing the memory utilization metric of the current instance during the look-back * period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on them. For * more information, see Enabling memory utilization * with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux instances, Compute * Optimizer analyses the mem_used_percent metric in the CWAgent namespace, or the legacy * MemoryUtilization metric in the System/Linux namespace. On Windows instances, Compute * Optimizer analyses the Memory % Committed Bytes In Use metric in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current instance * during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better EBS IOPS * performance. This is identified by analyzing the VolumeReadOps and VolumeWriteOps * metric of EBS volumes attached to the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides better * network bandwidth performance. This is identified by analyzing the NetworkIn and * NetworkOut metrics of the current instance during the look-back period. This finding reason happens * when the NetworkIn or NetworkOut performance of an instance is impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) configuration * can be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network PPS performance. This is identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better disk * IOPS performance. This is identified by analyzing the DiskReadOps and DiskWriteOps * metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the DiskReadBytes and * DiskWriteBytes metrics of the current instance during the look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. For * more information about EBS volume metrics, see Amazon CloudWatch metrics * for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          *
          *

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

          * * @param findingReasonCodes * The reason for the finding classification of the instance.

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the * CPUUtilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU * performance. This is identified by analyzing the CPUUtilization metric of the current * instance during the look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the memory * utilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization metric of the current instance * during the look-back period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on * them. For more information, see Enabling memory * utilization with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux * instances, Compute Optimizer analyses the mem_used_percent metric in the CWAgent * namespace, or the legacy MemoryUtilization metric in the System/Linux namespace. * On Windows instances, Compute Optimizer analyses the Memory % Committed Bytes In Use metric * in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes * attached to the current instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides * better EBS throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * EBS IOPS performance. This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can * be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkIn and NetworkOut metrics of the current instance during * the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network bandwidth performance. This is identified by analyzing the NetworkIn * and NetworkOut metrics of the current instance during the look-back period. This finding * reason happens when the NetworkIn or NetworkOut performance of an instance is * impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) * configuration can be sized down while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the * current instance during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) * configuration doesn't meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified by analyzing the * NetworkPacketsIn and NetworkPacketsIn metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * disk IOPS performance. This is identified by analyzing the DiskReadOps and * DiskWriteOps metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the DiskReadBytes and DiskWriteBytes metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better disk throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the * look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. * For more information about EBS volume metrics, see Amazon CloudWatch * metrics for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          * @return Returns a reference to this object so that method calls can be chained together. * @see InstanceRecommendationFindingReasonCode */ public InstanceRecommendation withFindingReasonCodes(String... findingReasonCodes) { if (this.findingReasonCodes == null) { setFindingReasonCodes(new java.util.ArrayList(findingReasonCodes.length)); } for (String ele : findingReasonCodes) { this.findingReasonCodes.add(ele); } return this; } /** *

          * The reason for the finding classification of the instance. *

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing the CPUUtilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU performance. * This is identified by analyzing the CPUUtilization metric of the current instance during the * look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better memory performance. * This is identified by analyzing the memory utilization metric of the current instance during the look-back * period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on them. For * more information, see Enabling memory utilization * with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux instances, Compute * Optimizer analyses the mem_used_percent metric in the CWAgent namespace, or the legacy * MemoryUtilization metric in the System/Linux namespace. On Windows instances, Compute * Optimizer analyses the Memory % Committed Bytes In Use metric in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current instance * during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better EBS IOPS * performance. This is identified by analyzing the VolumeReadOps and VolumeWriteOps * metric of EBS volumes attached to the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides better * network bandwidth performance. This is identified by analyzing the NetworkIn and * NetworkOut metrics of the current instance during the look-back period. This finding reason happens * when the NetworkIn or NetworkOut performance of an instance is impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) configuration * can be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network PPS performance. This is identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better disk * IOPS performance. This is identified by analyzing the DiskReadOps and DiskWriteOps * metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the DiskReadBytes and * DiskWriteBytes metrics of the current instance during the look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. For * more information about EBS volume metrics, see Amazon CloudWatch metrics * for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          *
          * * @param findingReasonCodes * The reason for the finding classification of the instance.

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the * CPUUtilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU * performance. This is identified by analyzing the CPUUtilization metric of the current * instance during the look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the memory * utilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization metric of the current instance * during the look-back period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on * them. For more information, see Enabling memory * utilization with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux * instances, Compute Optimizer analyses the mem_used_percent metric in the CWAgent * namespace, or the legacy MemoryUtilization metric in the System/Linux namespace. * On Windows instances, Compute Optimizer analyses the Memory % Committed Bytes In Use metric * in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes * attached to the current instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides * better EBS throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * EBS IOPS performance. This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can * be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkIn and NetworkOut metrics of the current instance during * the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network bandwidth performance. This is identified by analyzing the NetworkIn * and NetworkOut metrics of the current instance during the look-back period. This finding * reason happens when the NetworkIn or NetworkOut performance of an instance is * impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) * configuration can be sized down while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the * current instance during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) * configuration doesn't meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified by analyzing the * NetworkPacketsIn and NetworkPacketsIn metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * disk IOPS performance. This is identified by analyzing the DiskReadOps and * DiskWriteOps metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the DiskReadBytes and DiskWriteBytes metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better disk throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the * look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. * For more information about EBS volume metrics, see Amazon CloudWatch * metrics for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          * @return Returns a reference to this object so that method calls can be chained together. * @see InstanceRecommendationFindingReasonCode */ public InstanceRecommendation withFindingReasonCodes(java.util.Collection findingReasonCodes) { setFindingReasonCodes(findingReasonCodes); return this; } /** *

          * The reason for the finding classification of the instance. *

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing the CPUUtilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU performance. * This is identified by analyzing the CPUUtilization metric of the current instance during the * look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better memory performance. * This is identified by analyzing the memory utilization metric of the current instance during the look-back * period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on them. For * more information, see Enabling memory utilization * with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux instances, Compute * Optimizer analyses the mem_used_percent metric in the CWAgent namespace, or the legacy * MemoryUtilization metric in the System/Linux namespace. On Windows instances, Compute * Optimizer analyses the Memory % Committed Bytes In Use metric in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current instance * during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better EBS IOPS * performance. This is identified by analyzing the VolumeReadOps and VolumeWriteOps * metric of EBS volumes attached to the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides better * network bandwidth performance. This is identified by analyzing the NetworkIn and * NetworkOut metrics of the current instance during the look-back period. This finding reason happens * when the NetworkIn or NetworkOut performance of an instance is impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) configuration * can be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network PPS performance. This is identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better disk * IOPS performance. This is identified by analyzing the DiskReadOps and DiskWriteOps * metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be sized * down while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the look-back * period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration doesn't meet * the performance requirements of your workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the DiskReadBytes and * DiskWriteBytes metrics of the current instance during the look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. For * more information about EBS volume metrics, see Amazon CloudWatch metrics * for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          *
          * * @param findingReasonCodes * The reason for the finding classification of the instance.

          *

          * Finding reason codes for instances include: *

          *
            *
          • *

            * CPUOverprovisioned — The instance’s CPU configuration can be sized down while still * meeting the performance requirements of your workload. This is identified by analyzing the * CPUUtilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that provides better CPU * performance. This is identified by analyzing the CPUUtilization metric of the current * instance during the look-back period. *

            *
          • *
          • *

            * MemoryOverprovisioned — The instance’s memory configuration can be sized down while * still meeting the performance requirements of your workload. This is identified by analyzing the memory * utilization metric of the current instance during the look-back period. *

            *
          • *
          • *

            * MemoryUnderprovisioned — The instance’s memory configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization metric of the current instance * during the look-back period. *

            * *

            * Memory utilization is analyzed only for resources that have the unified CloudWatch agent installed on * them. For more information, see Enabling memory * utilization with the Amazon CloudWatch Agent in the Compute Optimizer User Guide. On Linux * instances, Compute Optimizer analyses the mem_used_percent metric in the CWAgent * namespace, or the legacy MemoryUtilization metric in the System/Linux namespace. * On Windows instances, Compute Optimizer analyses the Memory % Committed Bytes In Use metric * in the CWAgent namespace. *

            *
          • *
          • *

            * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes * attached to the current instance during the look-back period. *

            *
          • *
          • *

            * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration doesn't * meet the performance requirements of your workload and there is an alternative instance type that provides * better EBS throughput performance. This is identified by analyzing the VolumeReadBytes and * VolumeWriteBytes metrics of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * VolumeReadOps and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period. *

            *
          • *
          • *

            * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * EBS IOPS performance. This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current instance during the look-back * period. *

            *
          • *
          • *

            * NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration can * be sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the NetworkIn and NetworkOut metrics of the current instance during * the look-back period. *

            *
          • *
          • *

            * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better network bandwidth performance. This is identified by analyzing the NetworkIn * and NetworkOut metrics of the current instance during the look-back period. This finding * reason happens when the NetworkIn or NetworkOut performance of an instance is * impacted. *

            *
          • *
          • *

            * NetworkPPSOverprovisioned — The instance’s network PPS (packets per second) * configuration can be sized down while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and NetworkPacketsIn metrics of the * current instance during the look-back period. *

            *
          • *
          • *

            * NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second) * configuration doesn't meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified by analyzing the * NetworkPacketsIn and NetworkPacketsIn metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can be sized down * while still meeting the performance requirements of your workload. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current instance during the * look-back period. *

            *
          • *
          • *

            * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration doesn't meet the * performance requirements of your workload and there is an alternative instance type that provides better * disk IOPS performance. This is identified by analyzing the DiskReadOps and * DiskWriteOps metrics of the current instance during the look-back period. *

            *
          • *
          • *

            * DiskThroughputOverprovisioned — The instance’s disk throughput configuration can be * sized down while still meeting the performance requirements of your workload. This is identified by * analyzing the DiskReadBytes and DiskWriteBytes metrics of the current instance * during the look-back period. *

            *
          • *
          • *

            * DiskThroughputUnderprovisioned — The instance’s disk throughput configuration * doesn't meet the performance requirements of your workload and there is an alternative instance type that * provides better disk throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the current instance during the * look-back period. *

            *
          • *
          * *

          * For more information about instance metrics, see List the * available CloudWatch metrics for your instances in the Amazon Elastic Compute Cloud User Guide. * For more information about EBS volume metrics, see Amazon CloudWatch * metrics for Amazon EBS in the Amazon Elastic Compute Cloud User Guide. *

          * @return Returns a reference to this object so that method calls can be chained together. * @see InstanceRecommendationFindingReasonCode */ public InstanceRecommendation withFindingReasonCodes(InstanceRecommendationFindingReasonCode... findingReasonCodes) { java.util.ArrayList findingReasonCodesCopy = new java.util.ArrayList(findingReasonCodes.length); for (InstanceRecommendationFindingReasonCode value : findingReasonCodes) { findingReasonCodesCopy.add(value.toString()); } if (getFindingReasonCodes() == null) { setFindingReasonCodes(findingReasonCodesCopy); } else { getFindingReasonCodes().addAll(findingReasonCodesCopy); } return this; } /** *

          * An array of objects that describe the utilization metrics of the instance. *

          * * @return An array of objects that describe the utilization metrics of the instance. */ public java.util.List getUtilizationMetrics() { return utilizationMetrics; } /** *

          * An array of objects that describe the utilization metrics of the instance. *

          * * @param utilizationMetrics * An array of objects that describe the utilization metrics of the instance. */ public void setUtilizationMetrics(java.util.Collection utilizationMetrics) { if (utilizationMetrics == null) { this.utilizationMetrics = null; return; } this.utilizationMetrics = new java.util.ArrayList(utilizationMetrics); } /** *

          * An array of objects that describe the utilization metrics of the instance. *

          *

          * 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 instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withUtilizationMetrics(UtilizationMetric... utilizationMetrics) { if (this.utilizationMetrics == null) { setUtilizationMetrics(new java.util.ArrayList(utilizationMetrics.length)); } for (UtilizationMetric ele : utilizationMetrics) { this.utilizationMetrics.add(ele); } return this; } /** *

          * An array of objects that describe the utilization metrics of the instance. *

          * * @param utilizationMetrics * An array of objects that describe the utilization metrics of the instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withUtilizationMetrics(java.util.Collection utilizationMetrics) { setUtilizationMetrics(utilizationMetrics); return this; } /** *

          * The number of days for which utilization metrics were analyzed for the instance. *

          * * @param lookBackPeriodInDays * The number of days for which utilization metrics were analyzed for the instance. */ public void setLookBackPeriodInDays(Double lookBackPeriodInDays) { this.lookBackPeriodInDays = lookBackPeriodInDays; } /** *

          * The number of days for which utilization metrics were analyzed for the instance. *

          * * @return The number of days for which utilization metrics were analyzed for the instance. */ public Double getLookBackPeriodInDays() { return this.lookBackPeriodInDays; } /** *

          * The number of days for which utilization metrics were analyzed for the instance. *

          * * @param lookBackPeriodInDays * The number of days for which utilization metrics were analyzed for the instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withLookBackPeriodInDays(Double lookBackPeriodInDays) { setLookBackPeriodInDays(lookBackPeriodInDays); return this; } /** *

          * An array of objects that describe the recommendation options for the instance. *

          * * @return An array of objects that describe the recommendation options for the instance. */ public java.util.List getRecommendationOptions() { return recommendationOptions; } /** *

          * An array of objects that describe the recommendation options for the instance. *

          * * @param recommendationOptions * An array of objects that describe the recommendation options for the instance. */ public void setRecommendationOptions(java.util.Collection recommendationOptions) { if (recommendationOptions == null) { this.recommendationOptions = null; return; } this.recommendationOptions = new java.util.ArrayList(recommendationOptions); } /** *

          * An array of objects that describe the recommendation options for the instance. *

          *

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

          * * @param recommendationOptions * An array of objects that describe the recommendation options for the instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withRecommendationOptions(InstanceRecommendationOption... recommendationOptions) { if (this.recommendationOptions == null) { setRecommendationOptions(new java.util.ArrayList(recommendationOptions.length)); } for (InstanceRecommendationOption ele : recommendationOptions) { this.recommendationOptions.add(ele); } return this; } /** *

          * An array of objects that describe the recommendation options for the instance. *

          * * @param recommendationOptions * An array of objects that describe the recommendation options for the instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withRecommendationOptions(java.util.Collection recommendationOptions) { setRecommendationOptions(recommendationOptions); return this; } /** *

          * An array of objects that describe the source resource of the recommendation. *

          * * @return An array of objects that describe the source resource of the recommendation. */ public java.util.List getRecommendationSources() { return recommendationSources; } /** *

          * An array of objects that describe the source resource of the recommendation. *

          * * @param recommendationSources * An array of objects that describe the source resource of the recommendation. */ public void setRecommendationSources(java.util.Collection recommendationSources) { if (recommendationSources == null) { this.recommendationSources = null; return; } this.recommendationSources = new java.util.ArrayList(recommendationSources); } /** *

          * An array of objects that describe the source resource of the recommendation. *

          *

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

          * * @param recommendationSources * An array of objects that describe the source resource of the recommendation. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withRecommendationSources(RecommendationSource... recommendationSources) { if (this.recommendationSources == null) { setRecommendationSources(new java.util.ArrayList(recommendationSources.length)); } for (RecommendationSource ele : recommendationSources) { this.recommendationSources.add(ele); } return this; } /** *

          * An array of objects that describe the source resource of the recommendation. *

          * * @param recommendationSources * An array of objects that describe the source resource of the recommendation. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withRecommendationSources(java.util.Collection recommendationSources) { setRecommendationSources(recommendationSources); return this; } /** *

          * The timestamp of when the instance recommendation was last generated. *

          * * @param lastRefreshTimestamp * The timestamp of when the instance recommendation was last generated. */ public void setLastRefreshTimestamp(java.util.Date lastRefreshTimestamp) { this.lastRefreshTimestamp = lastRefreshTimestamp; } /** *

          * The timestamp of when the instance recommendation was last generated. *

          * * @return The timestamp of when the instance recommendation was last generated. */ public java.util.Date getLastRefreshTimestamp() { return this.lastRefreshTimestamp; } /** *

          * The timestamp of when the instance recommendation was last generated. *

          * * @param lastRefreshTimestamp * The timestamp of when the instance recommendation was last generated. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withLastRefreshTimestamp(java.util.Date lastRefreshTimestamp) { setLastRefreshTimestamp(lastRefreshTimestamp); return this; } /** *

          * The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, the * more likely the current instance cannot meet the performance requirements of its workload. *

          * * @param currentPerformanceRisk * The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, * the more likely the current instance cannot meet the performance requirements of its workload. * @see CurrentPerformanceRisk */ public void setCurrentPerformanceRisk(String currentPerformanceRisk) { this.currentPerformanceRisk = currentPerformanceRisk; } /** *

          * The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, the * more likely the current instance cannot meet the performance requirements of its workload. *

          * * @return The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, * the more likely the current instance cannot meet the performance requirements of its workload. * @see CurrentPerformanceRisk */ public String getCurrentPerformanceRisk() { return this.currentPerformanceRisk; } /** *

          * The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, the * more likely the current instance cannot meet the performance requirements of its workload. *

          * * @param currentPerformanceRisk * The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, * the more likely the current instance cannot meet the performance requirements of its workload. * @return Returns a reference to this object so that method calls can be chained together. * @see CurrentPerformanceRisk */ public InstanceRecommendation withCurrentPerformanceRisk(String currentPerformanceRisk) { setCurrentPerformanceRisk(currentPerformanceRisk); return this; } /** *

          * The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, the * more likely the current instance cannot meet the performance requirements of its workload. *

          * * @param currentPerformanceRisk * The risk of the current instance not meeting the performance needs of its workloads. The higher the risk, * the more likely the current instance cannot meet the performance requirements of its workload. * @return Returns a reference to this object so that method calls can be chained together. * @see CurrentPerformanceRisk */ public InstanceRecommendation withCurrentPerformanceRisk(CurrentPerformanceRisk currentPerformanceRisk) { this.currentPerformanceRisk = currentPerformanceRisk.toString(); return this; } /** *

          * An object that describes the effective recommendation preferences for the instance. *

          * * @param effectiveRecommendationPreferences * An object that describes the effective recommendation preferences for the instance. */ public void setEffectiveRecommendationPreferences(EffectiveRecommendationPreferences effectiveRecommendationPreferences) { this.effectiveRecommendationPreferences = effectiveRecommendationPreferences; } /** *

          * An object that describes the effective recommendation preferences for the instance. *

          * * @return An object that describes the effective recommendation preferences for the instance. */ public EffectiveRecommendationPreferences getEffectiveRecommendationPreferences() { return this.effectiveRecommendationPreferences; } /** *

          * An object that describes the effective recommendation preferences for the instance. *

          * * @param effectiveRecommendationPreferences * An object that describes the effective recommendation preferences for the instance. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withEffectiveRecommendationPreferences(EffectiveRecommendationPreferences effectiveRecommendationPreferences) { setEffectiveRecommendationPreferences(effectiveRecommendationPreferences); return this; } /** *

          * The applications that might be running on the instance as inferred by Compute Optimizer. *

          *

          * Compute Optimizer can infer if one of the following applications might be running on the instance: *

          *
            *
          • *

            * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

            *
          • *
          • *

            * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

            *
          • *
          • *

            * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

            *
          • *
          • *

            * Memcached - Infers that Memcached might be running on the instance. *

            *
          • *
          • *

            * NGINX - Infers that NGINX might be running on the instance. *

            *
          • *
          • *

            * PostgreSql - Infers that PostgreSQL might be running on the instance. *

            *
          • *
          • *

            * Redis - Infers that Redis might be running on the instance. *

            *
          • *
          • *

            * Kafka - Infers that Kafka might be running on the instance. *

            *
          • *
          • *

            * SQLServer - Infers that SQLServer might be running on the instance. *

            *
          • *
          * * @return The applications that might be running on the instance as inferred by Compute Optimizer.

          *

          * Compute Optimizer can infer if one of the following applications might be running on the instance: *

          *
            *
          • *

            * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

            *
          • *
          • *

            * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

            *
          • *
          • *

            * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

            *
          • *
          • *

            * Memcached - Infers that Memcached might be running on the instance. *

            *
          • *
          • *

            * NGINX - Infers that NGINX might be running on the instance. *

            *
          • *
          • *

            * PostgreSql - Infers that PostgreSQL might be running on the instance. *

            *
          • *
          • *

            * Redis - Infers that Redis might be running on the instance. *

            *
          • *
          • *

            * Kafka - Infers that Kafka might be running on the instance. *

            *
          • *
          • *

            * SQLServer - Infers that SQLServer might be running on the instance. *

            *
          • * @see InferredWorkloadType */ public java.util.List getInferredWorkloadTypes() { return inferredWorkloadTypes; } /** *

            * The applications that might be running on the instance as inferred by Compute Optimizer. *

            *

            * Compute Optimizer can infer if one of the following applications might be running on the instance: *

            *
              *
            • *

              * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

              *
            • *
            • *

              * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

              *
            • *
            • *

              * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

              *
            • *
            • *

              * Memcached - Infers that Memcached might be running on the instance. *

              *
            • *
            • *

              * NGINX - Infers that NGINX might be running on the instance. *

              *
            • *
            • *

              * PostgreSql - Infers that PostgreSQL might be running on the instance. *

              *
            • *
            • *

              * Redis - Infers that Redis might be running on the instance. *

              *
            • *
            • *

              * Kafka - Infers that Kafka might be running on the instance. *

              *
            • *
            • *

              * SQLServer - Infers that SQLServer might be running on the instance. *

              *
            • *
            * * @param inferredWorkloadTypes * The applications that might be running on the instance as inferred by Compute Optimizer.

            *

            * Compute Optimizer can infer if one of the following applications might be running on the instance: *

            *
              *
            • *

              * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

              *
            • *
            • *

              * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

              *
            • *
            • *

              * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

              *
            • *
            • *

              * Memcached - Infers that Memcached might be running on the instance. *

              *
            • *
            • *

              * NGINX - Infers that NGINX might be running on the instance. *

              *
            • *
            • *

              * PostgreSql - Infers that PostgreSQL might be running on the instance. *

              *
            • *
            • *

              * Redis - Infers that Redis might be running on the instance. *

              *
            • *
            • *

              * Kafka - Infers that Kafka might be running on the instance. *

              *
            • *
            • *

              * SQLServer - Infers that SQLServer might be running on the instance. *

              *
            • * @see InferredWorkloadType */ public void setInferredWorkloadTypes(java.util.Collection inferredWorkloadTypes) { if (inferredWorkloadTypes == null) { this.inferredWorkloadTypes = null; return; } this.inferredWorkloadTypes = new java.util.ArrayList(inferredWorkloadTypes); } /** *

              * The applications that might be running on the instance as inferred by Compute Optimizer. *

              *

              * Compute Optimizer can infer if one of the following applications might be running on the instance: *

              *
                *
              • *

                * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

                *
              • *
              • *

                * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

                *
              • *
              • *

                * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

                *
              • *
              • *

                * Memcached - Infers that Memcached might be running on the instance. *

                *
              • *
              • *

                * NGINX - Infers that NGINX might be running on the instance. *

                *
              • *
              • *

                * PostgreSql - Infers that PostgreSQL might be running on the instance. *

                *
              • *
              • *

                * Redis - Infers that Redis might be running on the instance. *

                *
              • *
              • *

                * Kafka - Infers that Kafka might be running on the instance. *

                *
              • *
              • *

                * SQLServer - Infers that SQLServer might be running on the instance. *

                *
              • *
              *

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

              * * @param inferredWorkloadTypes * The applications that might be running on the instance as inferred by Compute Optimizer.

              *

              * Compute Optimizer can infer if one of the following applications might be running on the instance: *

              *
                *
              • *

                * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

                *
              • *
              • *

                * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

                *
              • *
              • *

                * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

                *
              • *
              • *

                * Memcached - Infers that Memcached might be running on the instance. *

                *
              • *
              • *

                * NGINX - Infers that NGINX might be running on the instance. *

                *
              • *
              • *

                * PostgreSql - Infers that PostgreSQL might be running on the instance. *

                *
              • *
              • *

                * Redis - Infers that Redis might be running on the instance. *

                *
              • *
              • *

                * Kafka - Infers that Kafka might be running on the instance. *

                *
              • *
              • *

                * SQLServer - Infers that SQLServer might be running on the instance. *

                *
              • * @return Returns a reference to this object so that method calls can be chained together. * @see InferredWorkloadType */ public InstanceRecommendation withInferredWorkloadTypes(String... inferredWorkloadTypes) { if (this.inferredWorkloadTypes == null) { setInferredWorkloadTypes(new java.util.ArrayList(inferredWorkloadTypes.length)); } for (String ele : inferredWorkloadTypes) { this.inferredWorkloadTypes.add(ele); } return this; } /** *

                * The applications that might be running on the instance as inferred by Compute Optimizer. *

                *

                * Compute Optimizer can infer if one of the following applications might be running on the instance: *

                *
                  *
                • *

                  * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

                  *
                • *
                • *

                  * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

                  *
                • *
                • *

                  * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

                  *
                • *
                • *

                  * Memcached - Infers that Memcached might be running on the instance. *

                  *
                • *
                • *

                  * NGINX - Infers that NGINX might be running on the instance. *

                  *
                • *
                • *

                  * PostgreSql - Infers that PostgreSQL might be running on the instance. *

                  *
                • *
                • *

                  * Redis - Infers that Redis might be running on the instance. *

                  *
                • *
                • *

                  * Kafka - Infers that Kafka might be running on the instance. *

                  *
                • *
                • *

                  * SQLServer - Infers that SQLServer might be running on the instance. *

                  *
                • *
                * * @param inferredWorkloadTypes * The applications that might be running on the instance as inferred by Compute Optimizer.

                *

                * Compute Optimizer can infer if one of the following applications might be running on the instance: *

                *
                  *
                • *

                  * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

                  *
                • *
                • *

                  * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

                  *
                • *
                • *

                  * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

                  *
                • *
                • *

                  * Memcached - Infers that Memcached might be running on the instance. *

                  *
                • *
                • *

                  * NGINX - Infers that NGINX might be running on the instance. *

                  *
                • *
                • *

                  * PostgreSql - Infers that PostgreSQL might be running on the instance. *

                  *
                • *
                • *

                  * Redis - Infers that Redis might be running on the instance. *

                  *
                • *
                • *

                  * Kafka - Infers that Kafka might be running on the instance. *

                  *
                • *
                • *

                  * SQLServer - Infers that SQLServer might be running on the instance. *

                  *
                • * @return Returns a reference to this object so that method calls can be chained together. * @see InferredWorkloadType */ public InstanceRecommendation withInferredWorkloadTypes(java.util.Collection inferredWorkloadTypes) { setInferredWorkloadTypes(inferredWorkloadTypes); return this; } /** *

                  * The applications that might be running on the instance as inferred by Compute Optimizer. *

                  *

                  * Compute Optimizer can infer if one of the following applications might be running on the instance: *

                  *
                    *
                  • *

                    * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

                    *
                  • *
                  • *

                    * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

                    *
                  • *
                  • *

                    * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

                    *
                  • *
                  • *

                    * Memcached - Infers that Memcached might be running on the instance. *

                    *
                  • *
                  • *

                    * NGINX - Infers that NGINX might be running on the instance. *

                    *
                  • *
                  • *

                    * PostgreSql - Infers that PostgreSQL might be running on the instance. *

                    *
                  • *
                  • *

                    * Redis - Infers that Redis might be running on the instance. *

                    *
                  • *
                  • *

                    * Kafka - Infers that Kafka might be running on the instance. *

                    *
                  • *
                  • *

                    * SQLServer - Infers that SQLServer might be running on the instance. *

                    *
                  • *
                  * * @param inferredWorkloadTypes * The applications that might be running on the instance as inferred by Compute Optimizer.

                  *

                  * Compute Optimizer can infer if one of the following applications might be running on the instance: *

                  *
                    *
                  • *

                    * AmazonEmr - Infers that Amazon EMR might be running on the instance. *

                    *
                  • *
                  • *

                    * ApacheCassandra - Infers that Apache Cassandra might be running on the instance. *

                    *
                  • *
                  • *

                    * ApacheHadoop - Infers that Apache Hadoop might be running on the instance. *

                    *
                  • *
                  • *

                    * Memcached - Infers that Memcached might be running on the instance. *

                    *
                  • *
                  • *

                    * NGINX - Infers that NGINX might be running on the instance. *

                    *
                  • *
                  • *

                    * PostgreSql - Infers that PostgreSQL might be running on the instance. *

                    *
                  • *
                  • *

                    * Redis - Infers that Redis might be running on the instance. *

                    *
                  • *
                  • *

                    * Kafka - Infers that Kafka might be running on the instance. *

                    *
                  • *
                  • *

                    * SQLServer - Infers that SQLServer might be running on the instance. *

                    *
                  • * @return Returns a reference to this object so that method calls can be chained together. * @see InferredWorkloadType */ public InstanceRecommendation withInferredWorkloadTypes(InferredWorkloadType... inferredWorkloadTypes) { java.util.ArrayList inferredWorkloadTypesCopy = new java.util.ArrayList(inferredWorkloadTypes.length); for (InferredWorkloadType value : inferredWorkloadTypes) { inferredWorkloadTypesCopy.add(value.toString()); } if (getInferredWorkloadTypes() == null) { setInferredWorkloadTypes(inferredWorkloadTypesCopy); } else { getInferredWorkloadTypes().addAll(inferredWorkloadTypesCopy); } return this; } /** *

                    * The state of the instance when the recommendation was generated. *

                    * * @param instanceState * The state of the instance when the recommendation was generated. * @see InstanceState */ public void setInstanceState(String instanceState) { this.instanceState = instanceState; } /** *

                    * The state of the instance when the recommendation was generated. *

                    * * @return The state of the instance when the recommendation was generated. * @see InstanceState */ public String getInstanceState() { return this.instanceState; } /** *

                    * The state of the instance when the recommendation was generated. *

                    * * @param instanceState * The state of the instance when the recommendation was generated. * @return Returns a reference to this object so that method calls can be chained together. * @see InstanceState */ public InstanceRecommendation withInstanceState(String instanceState) { setInstanceState(instanceState); return this; } /** *

                    * The state of the instance when the recommendation was generated. *

                    * * @param instanceState * The state of the instance when the recommendation was generated. * @return Returns a reference to this object so that method calls can be chained together. * @see InstanceState */ public InstanceRecommendation withInstanceState(InstanceState instanceState) { this.instanceState = instanceState.toString(); return this; } /** *

                    * A list of tags assigned to your Amazon EC2 instance recommendations. *

                    * * @return A list of tags assigned to your Amazon EC2 instance recommendations. */ public java.util.List getTags() { return tags; } /** *

                    * A list of tags assigned to your Amazon EC2 instance recommendations. *

                    * * @param tags * A list of tags assigned to your Amazon EC2 instance recommendations. */ public void setTags(java.util.Collection tags) { if (tags == null) { this.tags = null; return; } this.tags = new java.util.ArrayList(tags); } /** *

                    * A list of tags assigned to your Amazon EC2 instance 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 EC2 instance recommendations. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withTags(Tag... tags) { if (this.tags == null) { setTags(new java.util.ArrayList(tags.length)); } for (Tag ele : tags) { this.tags.add(ele); } return this; } /** *

                    * A list of tags assigned to your Amazon EC2 instance recommendations. *

                    * * @param tags * A list of tags assigned to your Amazon EC2 instance recommendations. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withTags(java.util.Collection tags) { setTags(tags); return this; } /** *

                    * An object that describes Compute Optimizer's integration status with your external metrics provider. *

                    * * @param externalMetricStatus * An object that describes Compute Optimizer's integration status with your external metrics provider. */ public void setExternalMetricStatus(ExternalMetricStatus externalMetricStatus) { this.externalMetricStatus = externalMetricStatus; } /** *

                    * An object that describes Compute Optimizer's integration status with your external metrics provider. *

                    * * @return An object that describes Compute Optimizer's integration status with your external metrics provider. */ public ExternalMetricStatus getExternalMetricStatus() { return this.externalMetricStatus; } /** *

                    * An object that describes Compute Optimizer's integration status with your external metrics provider. *

                    * * @param externalMetricStatus * An object that describes Compute Optimizer's integration status with your external metrics provider. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendation withExternalMetricStatus(ExternalMetricStatus externalMetricStatus) { setExternalMetricStatus(externalMetricStatus); return this; } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getInstanceArn() != null) sb.append("InstanceArn: ").append(getInstanceArn()).append(","); if (getAccountId() != null) sb.append("AccountId: ").append(getAccountId()).append(","); if (getInstanceName() != null) sb.append("InstanceName: ").append(getInstanceName()).append(","); if (getCurrentInstanceType() != null) sb.append("CurrentInstanceType: ").append(getCurrentInstanceType()).append(","); if (getFinding() != null) sb.append("Finding: ").append(getFinding()).append(","); if (getFindingReasonCodes() != null) sb.append("FindingReasonCodes: ").append(getFindingReasonCodes()).append(","); if (getUtilizationMetrics() != null) sb.append("UtilizationMetrics: ").append(getUtilizationMetrics()).append(","); if (getLookBackPeriodInDays() != null) sb.append("LookBackPeriodInDays: ").append(getLookBackPeriodInDays()).append(","); if (getRecommendationOptions() != null) sb.append("RecommendationOptions: ").append(getRecommendationOptions()).append(","); if (getRecommendationSources() != null) sb.append("RecommendationSources: ").append(getRecommendationSources()).append(","); if (getLastRefreshTimestamp() != null) sb.append("LastRefreshTimestamp: ").append(getLastRefreshTimestamp()).append(","); if (getCurrentPerformanceRisk() != null) sb.append("CurrentPerformanceRisk: ").append(getCurrentPerformanceRisk()).append(","); if (getEffectiveRecommendationPreferences() != null) sb.append("EffectiveRecommendationPreferences: ").append(getEffectiveRecommendationPreferences()).append(","); if (getInferredWorkloadTypes() != null) sb.append("InferredWorkloadTypes: ").append(getInferredWorkloadTypes()).append(","); if (getInstanceState() != null) sb.append("InstanceState: ").append(getInstanceState()).append(","); if (getTags() != null) sb.append("Tags: ").append(getTags()).append(","); if (getExternalMetricStatus() != null) sb.append("ExternalMetricStatus: ").append(getExternalMetricStatus()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof InstanceRecommendation == false) return false; InstanceRecommendation other = (InstanceRecommendation) obj; if (other.getInstanceArn() == null ^ this.getInstanceArn() == null) return false; if (other.getInstanceArn() != null && other.getInstanceArn().equals(this.getInstanceArn()) == false) return false; if (other.getAccountId() == null ^ this.getAccountId() == null) return false; if (other.getAccountId() != null && other.getAccountId().equals(this.getAccountId()) == false) return false; if (other.getInstanceName() == null ^ this.getInstanceName() == null) return false; if (other.getInstanceName() != null && other.getInstanceName().equals(this.getInstanceName()) == false) return false; if (other.getCurrentInstanceType() == null ^ this.getCurrentInstanceType() == null) return false; if (other.getCurrentInstanceType() != null && other.getCurrentInstanceType().equals(this.getCurrentInstanceType()) == false) return false; if (other.getFinding() == null ^ this.getFinding() == null) return false; if (other.getFinding() != null && other.getFinding().equals(this.getFinding()) == false) return false; if (other.getFindingReasonCodes() == null ^ this.getFindingReasonCodes() == null) return false; if (other.getFindingReasonCodes() != null && other.getFindingReasonCodes().equals(this.getFindingReasonCodes()) == false) return false; if (other.getUtilizationMetrics() == null ^ this.getUtilizationMetrics() == null) return false; if (other.getUtilizationMetrics() != null && other.getUtilizationMetrics().equals(this.getUtilizationMetrics()) == false) return false; if (other.getLookBackPeriodInDays() == null ^ this.getLookBackPeriodInDays() == null) return false; if (other.getLookBackPeriodInDays() != null && other.getLookBackPeriodInDays().equals(this.getLookBackPeriodInDays()) == false) return false; if (other.getRecommendationOptions() == null ^ this.getRecommendationOptions() == null) return false; if (other.getRecommendationOptions() != null && other.getRecommendationOptions().equals(this.getRecommendationOptions()) == false) return false; if (other.getRecommendationSources() == null ^ this.getRecommendationSources() == null) return false; if (other.getRecommendationSources() != null && other.getRecommendationSources().equals(this.getRecommendationSources()) == false) return false; if (other.getLastRefreshTimestamp() == null ^ this.getLastRefreshTimestamp() == null) return false; if (other.getLastRefreshTimestamp() != null && other.getLastRefreshTimestamp().equals(this.getLastRefreshTimestamp()) == false) return false; if (other.getCurrentPerformanceRisk() == null ^ this.getCurrentPerformanceRisk() == null) return false; if (other.getCurrentPerformanceRisk() != null && other.getCurrentPerformanceRisk().equals(this.getCurrentPerformanceRisk()) == false) return false; if (other.getEffectiveRecommendationPreferences() == null ^ this.getEffectiveRecommendationPreferences() == null) return false; if (other.getEffectiveRecommendationPreferences() != null && other.getEffectiveRecommendationPreferences().equals(this.getEffectiveRecommendationPreferences()) == false) return false; if (other.getInferredWorkloadTypes() == null ^ this.getInferredWorkloadTypes() == null) return false; if (other.getInferredWorkloadTypes() != null && other.getInferredWorkloadTypes().equals(this.getInferredWorkloadTypes()) == false) return false; if (other.getInstanceState() == null ^ this.getInstanceState() == null) return false; if (other.getInstanceState() != null && other.getInstanceState().equals(this.getInstanceState()) == false) return false; if (other.getTags() == null ^ this.getTags() == null) return false; if (other.getTags() != null && other.getTags().equals(this.getTags()) == false) return false; if (other.getExternalMetricStatus() == null ^ this.getExternalMetricStatus() == null) return false; if (other.getExternalMetricStatus() != null && other.getExternalMetricStatus().equals(this.getExternalMetricStatus()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getInstanceArn() == null) ? 0 : getInstanceArn().hashCode()); hashCode = prime * hashCode + ((getAccountId() == null) ? 0 : getAccountId().hashCode()); hashCode = prime * hashCode + ((getInstanceName() == null) ? 0 : getInstanceName().hashCode()); hashCode = prime * hashCode + ((getCurrentInstanceType() == null) ? 0 : getCurrentInstanceType().hashCode()); hashCode = prime * hashCode + ((getFinding() == null) ? 0 : getFinding().hashCode()); hashCode = prime * hashCode + ((getFindingReasonCodes() == null) ? 0 : getFindingReasonCodes().hashCode()); hashCode = prime * hashCode + ((getUtilizationMetrics() == null) ? 0 : getUtilizationMetrics().hashCode()); hashCode = prime * hashCode + ((getLookBackPeriodInDays() == null) ? 0 : getLookBackPeriodInDays().hashCode()); hashCode = prime * hashCode + ((getRecommendationOptions() == null) ? 0 : getRecommendationOptions().hashCode()); hashCode = prime * hashCode + ((getRecommendationSources() == null) ? 0 : getRecommendationSources().hashCode()); hashCode = prime * hashCode + ((getLastRefreshTimestamp() == null) ? 0 : getLastRefreshTimestamp().hashCode()); hashCode = prime * hashCode + ((getCurrentPerformanceRisk() == null) ? 0 : getCurrentPerformanceRisk().hashCode()); hashCode = prime * hashCode + ((getEffectiveRecommendationPreferences() == null) ? 0 : getEffectiveRecommendationPreferences().hashCode()); hashCode = prime * hashCode + ((getInferredWorkloadTypes() == null) ? 0 : getInferredWorkloadTypes().hashCode()); hashCode = prime * hashCode + ((getInstanceState() == null) ? 0 : getInstanceState().hashCode()); hashCode = prime * hashCode + ((getTags() == null) ? 0 : getTags().hashCode()); hashCode = prime * hashCode + ((getExternalMetricStatus() == null) ? 0 : getExternalMetricStatus().hashCode()); return hashCode; } @Override public InstanceRecommendation clone() { try { return (InstanceRecommendation) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e); } } @com.amazonaws.annotation.SdkInternalApi @Override public void marshall(ProtocolMarshaller protocolMarshaller) { com.amazonaws.services.computeoptimizer.model.transform.InstanceRecommendationMarshaller.getInstance().marshall(this, protocolMarshaller); } }