/* * 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 a recommendation option for an Amazon EC2 instance. *

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

* The instance type of the instance recommendation. *

*/ private String instanceType; /** *

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

* *

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling Memory Utilization * with the CloudWatch Agent. *

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

* Describes the configuration differences between the current instance and the recommended instance type. You * should consider the configuration differences before migrating your workloads from the current instance to the * recommended instance type. The Change the instance type * guide for Linux and Change the instance type * guide for Windows provide general guidance for getting started with an instance migration. *

*

* Platform differences include: *

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

* The performance risk of the instance recommendation option. *

*

* Performance risk indicates the likelihood of the recommended instance type not meeting the resource needs of your * workload. Compute Optimizer calculates an individual performance risk score for each specification of the * recommended instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk IOPS, network * throughput, and network PPS. The performance risk of the recommended instance is calculated as the maximum * performance risk score across the analyzed resource specifications. *

*

* The value ranges from 0 - 4, with 0 meaning that the recommended resource * is predicted to always provide enough hardware capability. The higher the performance risk is, the more likely * you should validate whether the recommendation will meet the performance requirements of your workload before * migrating your resource. *

*/ private Double performanceRisk; /** *

* The rank of the instance recommendation option. *

*

* The top recommendation option is ranked as 1. *

*/ private Integer rank; /** *

* An object that describes the savings opportunity for the instance recommendation option. Savings opportunity * includes the estimated monthly savings amount and percentage. *

*/ private SavingsOpportunity savingsOpportunity; /** *

* The level of effort required to migrate from the current instance type to the recommended instance type. *

*

* For example, the migration effort is Low if Amazon EMR is the inferred workload type and an Amazon * Web Services Graviton instance type is recommended. The migration effort is Medium if a workload * type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. The migration effort * is VeryLow if both the current and recommended instance types are of the same CPU architecture. *

*/ private String migrationEffort; /** *

* The instance type of the instance recommendation. *

* * @param instanceType * The instance type of the instance recommendation. */ public void setInstanceType(String instanceType) { this.instanceType = instanceType; } /** *

* The instance type of the instance recommendation. *

* * @return The instance type of the instance recommendation. */ public String getInstanceType() { return this.instanceType; } /** *

* The instance type of the instance recommendation. *

* * @param instanceType * The instance type of the instance recommendation. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendationOption withInstanceType(String instanceType) { setInstanceType(instanceType); return this; } /** *

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

* *

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling Memory Utilization * with the CloudWatch Agent. *

*
* * @return An array of objects that describe the projected utilization metrics of the instance recommendation * option.

*

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified * CloudWatch agent installed on them. For more information, see Enabling Memory * Utilization with the CloudWatch Agent. *

*/ public java.util.List getProjectedUtilizationMetrics() { return projectedUtilizationMetrics; } /** *

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

* *

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling Memory Utilization * with the CloudWatch Agent. *

*
* * @param projectedUtilizationMetrics * An array of objects that describe the projected utilization metrics of the instance recommendation * option.

*

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified * CloudWatch agent installed on them. For more information, see Enabling Memory * Utilization with the CloudWatch Agent. *

*/ public void setProjectedUtilizationMetrics(java.util.Collection projectedUtilizationMetrics) { if (projectedUtilizationMetrics == null) { this.projectedUtilizationMetrics = null; return; } this.projectedUtilizationMetrics = new java.util.ArrayList(projectedUtilizationMetrics); } /** *

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

* *

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling Memory Utilization * with the CloudWatch Agent. *

*
*

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

* * @param projectedUtilizationMetrics * An array of objects that describe the projected utilization metrics of the instance recommendation * option.

*

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified * CloudWatch agent installed on them. For more information, see Enabling Memory * Utilization with the CloudWatch Agent. *

* @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendationOption withProjectedUtilizationMetrics(UtilizationMetric... projectedUtilizationMetrics) { if (this.projectedUtilizationMetrics == null) { setProjectedUtilizationMetrics(new java.util.ArrayList(projectedUtilizationMetrics.length)); } for (UtilizationMetric ele : projectedUtilizationMetrics) { this.projectedUtilizationMetrics.add(ele); } return this; } /** *

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

* *

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling Memory Utilization * with the CloudWatch Agent. *

*
* * @param projectedUtilizationMetrics * An array of objects that describe the projected utilization metrics of the instance recommendation * option.

*

* The Cpu and Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that have the unified * CloudWatch agent installed on them. For more information, see Enabling Memory * Utilization with the CloudWatch Agent. *

* @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendationOption withProjectedUtilizationMetrics(java.util.Collection projectedUtilizationMetrics) { setProjectedUtilizationMetrics(projectedUtilizationMetrics); return this; } /** *

* Describes the configuration differences between the current instance and the recommended instance type. You * should consider the configuration differences before migrating your workloads from the current instance to the * recommended instance type. The Change the instance type * guide for Linux and Change the instance type * guide for Windows provide general guidance for getting started with an instance migration. *

*

* Platform differences include: *

*
    *
  • *

    * Hypervisor — The hypervisor of the recommended instance type is different than that of the * current instance. For example, the recommended instance type uses a Nitro hypervisor and the current instance * uses a Xen hypervisor. The differences that you should consider between these hypervisors are covered in the Nitro Hypervisor section of the Amazon EC2 frequently * asked questions. For more information, see Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances * built on the Nitro System in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * NetworkInterface — The network interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type supports enhanced networking and the * current instance might not. To enable enhanced networking for the recommended instance type, you must install the * Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function driver. For more information, see * Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking on * Windows in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * StorageInterface — The storage interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type uses an NVMe storage interface and the * current instance does not. To access NVMe volumes for the recommended instance type, you will need to install or * upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on Linux * instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * InstanceStoreAvailability — The recommended instance type does not support instance store * volumes and the current instance does. Before migrating, you might need to back up the data on your instance * store volumes if you want to preserve them. For more information, see How do I back up an * instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services Premium Support * Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance store in * the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance store * in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * VirtualizationType — The recommended instance type uses the hardware virtual machine (HVM) * virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more information * about the differences between these virtualization types, see Linux AMI virtualization * types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * Architecture — The CPU architecture between the recommended instance type and the current * instance is different. For example, the recommended instance type might use an Arm CPU architecture and the * current instance type might use a different one, such as x86. Before migrating, you should consider recompiling * the software on your instance for the new architecture. Alternatively, you might switch to an Amazon Machine * Image (AMI) that supports the new architecture. For more information about the CPU architecture for each instance * type, see Amazon EC2 Instance Types. *

    *
  • *
* * @return Describes the configuration differences between the current instance and the recommended instance type. * You should consider the configuration differences before migrating your workloads from the current * instance to the recommended instance type. The Change the instance * type guide for Linux and Change the * instance type guide for Windows provide general guidance for getting started with an instance * migration.

*

* Platform differences include: *

*
    *
  • *

    * Hypervisor — The hypervisor of the recommended instance type is different than that * of the current instance. For example, the recommended instance type uses a Nitro hypervisor and the * current instance uses a Xen hypervisor. The differences that you should consider between these * hypervisors are covered in the Nitro * Hypervisor section of the Amazon EC2 frequently asked questions. For more information, see Instances built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances built on the Nitro System in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * NetworkInterface — The network interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for the recommended instance * type, you must install the Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function * driver. For more information, see Networking and storage features and Enhanced networking * on Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * StorageInterface — The storage interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type uses an NVMe * storage interface and the current instance does not. To access NVMe volumes for the recommended instance * type, you will need to install or upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on * Linux instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe * on Windows instances in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * InstanceStoreAvailability — The recommended instance type does not support instance * store volumes and the current instance does. Before migrating, you might need to back up the data on your * instance store volumes if you want to preserve them. For more information, see How do I back * up an instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services * Premium Support Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * VirtualizationType — The recommended instance type uses the hardware virtual * machine (HVM) virtualization type and the current instance uses the paravirtual (PV) virtualization type. * For more information about the differences between these virtualization types, see Linux AMI * virtualization types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

    *
  • *
  • *

    * Architecture — The CPU architecture between the recommended instance type and the * current instance is different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as x86. Before migrating, you * should consider recompiling the software on your instance for the new architecture. Alternatively, you * might switch to an Amazon Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance Types. *

    *
  • * @see PlatformDifference */ public java.util.List getPlatformDifferences() { return platformDifferences; } /** *

    * Describes the configuration differences between the current instance and the recommended instance type. You * should consider the configuration differences before migrating your workloads from the current instance to the * recommended instance type. The Change the instance type * guide for Linux and Change the instance type * guide for Windows provide general guidance for getting started with an instance migration. *

    *

    * Platform differences include: *

    *
      *
    • *

      * Hypervisor — The hypervisor of the recommended instance type is different than that of the * current instance. For example, the recommended instance type uses a Nitro hypervisor and the current instance * uses a Xen hypervisor. The differences that you should consider between these hypervisors are covered in the Nitro Hypervisor section of the Amazon EC2 frequently * asked questions. For more information, see Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances * built on the Nitro System in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * NetworkInterface — The network interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type supports enhanced networking and the * current instance might not. To enable enhanced networking for the recommended instance type, you must install the * Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function driver. For more information, see * Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking on * Windows in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * StorageInterface — The storage interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type uses an NVMe storage interface and the * current instance does not. To access NVMe volumes for the recommended instance type, you will need to install or * upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on Linux * instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * InstanceStoreAvailability — The recommended instance type does not support instance store * volumes and the current instance does. Before migrating, you might need to back up the data on your instance * store volumes if you want to preserve them. For more information, see How do I back up an * instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services Premium Support * Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance store in * the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance store * in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * VirtualizationType — The recommended instance type uses the hardware virtual machine (HVM) * virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more information * about the differences between these virtualization types, see Linux AMI virtualization * types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * Architecture — The CPU architecture between the recommended instance type and the current * instance is different. For example, the recommended instance type might use an Arm CPU architecture and the * current instance type might use a different one, such as x86. Before migrating, you should consider recompiling * the software on your instance for the new architecture. Alternatively, you might switch to an Amazon Machine * Image (AMI) that supports the new architecture. For more information about the CPU architecture for each instance * type, see Amazon EC2 Instance Types. *

      *
    • *
    * * @param platformDifferences * Describes the configuration differences between the current instance and the recommended instance type. * You should consider the configuration differences before migrating your workloads from the current * instance to the recommended instance type. The Change the instance * type guide for Linux and Change the instance * type guide for Windows provide general guidance for getting started with an instance migration.

    *

    * Platform differences include: *

    *
      *
    • *

      * Hypervisor — The hypervisor of the recommended instance type is different than that * of the current instance. For example, the recommended instance type uses a Nitro hypervisor and the * current instance uses a Xen hypervisor. The differences that you should consider between these hypervisors * are covered in the Nitro Hypervisor section * of the Amazon EC2 frequently asked questions. For more information, see Instances built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances built on the Nitro System in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * NetworkInterface — The network interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for the recommended instance * type, you must install the Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function * driver. For more information, see Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking * on Windows in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * StorageInterface — The storage interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type uses an NVMe * storage interface and the current instance does not. To access NVMe volumes for the recommended instance * type, you will need to install or upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on * Linux instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * InstanceStoreAvailability — The recommended instance type does not support instance * store volumes and the current instance does. Before migrating, you might need to back up the data on your * instance store volumes if you want to preserve them. For more information, see How do I back up * an instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services * Premium Support Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * VirtualizationType — The recommended instance type uses the hardware virtual machine * (HVM) virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux AMI * virtualization types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

      *
    • *
    • *

      * Architecture — The CPU architecture between the recommended instance type and the * current instance is different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as x86. Before migrating, you * should consider recompiling the software on your instance for the new architecture. Alternatively, you * might switch to an Amazon Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance Types. *

      *
    • * @see PlatformDifference */ public void setPlatformDifferences(java.util.Collection platformDifferences) { if (platformDifferences == null) { this.platformDifferences = null; return; } this.platformDifferences = new java.util.ArrayList(platformDifferences); } /** *

      * Describes the configuration differences between the current instance and the recommended instance type. You * should consider the configuration differences before migrating your workloads from the current instance to the * recommended instance type. The Change the instance type * guide for Linux and Change the instance type * guide for Windows provide general guidance for getting started with an instance migration. *

      *

      * Platform differences include: *

      *
        *
      • *

        * Hypervisor — The hypervisor of the recommended instance type is different than that of the * current instance. For example, the recommended instance type uses a Nitro hypervisor and the current instance * uses a Xen hypervisor. The differences that you should consider between these hypervisors are covered in the Nitro Hypervisor section of the Amazon EC2 frequently * asked questions. For more information, see Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances * built on the Nitro System in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * NetworkInterface — The network interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type supports enhanced networking and the * current instance might not. To enable enhanced networking for the recommended instance type, you must install the * Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function driver. For more information, see * Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking on * Windows in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * StorageInterface — The storage interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type uses an NVMe storage interface and the * current instance does not. To access NVMe volumes for the recommended instance type, you will need to install or * upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on Linux * instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * InstanceStoreAvailability — The recommended instance type does not support instance store * volumes and the current instance does. Before migrating, you might need to back up the data on your instance * store volumes if you want to preserve them. For more information, see How do I back up an * instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services Premium Support * Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance store in * the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance store * in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * VirtualizationType — The recommended instance type uses the hardware virtual machine (HVM) * virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more information * about the differences between these virtualization types, see Linux AMI virtualization * types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * Architecture — The CPU architecture between the recommended instance type and the current * instance is different. For example, the recommended instance type might use an Arm CPU architecture and the * current instance type might use a different one, such as x86. Before migrating, you should consider recompiling * the software on your instance for the new architecture. Alternatively, you might switch to an Amazon Machine * Image (AMI) that supports the new architecture. For more information about the CPU architecture for each instance * type, see Amazon EC2 Instance Types. *

        *
      • *
      *

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

      * * @param platformDifferences * Describes the configuration differences between the current instance and the recommended instance type. * You should consider the configuration differences before migrating your workloads from the current * instance to the recommended instance type. The Change the instance * type guide for Linux and Change the instance * type guide for Windows provide general guidance for getting started with an instance migration.

      *

      * Platform differences include: *

      *
        *
      • *

        * Hypervisor — The hypervisor of the recommended instance type is different than that * of the current instance. For example, the recommended instance type uses a Nitro hypervisor and the * current instance uses a Xen hypervisor. The differences that you should consider between these hypervisors * are covered in the Nitro Hypervisor section * of the Amazon EC2 frequently asked questions. For more information, see Instances built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances built on the Nitro System in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * NetworkInterface — The network interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for the recommended instance * type, you must install the Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function * driver. For more information, see Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking * on Windows in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * StorageInterface — The storage interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type uses an NVMe * storage interface and the current instance does not. To access NVMe volumes for the recommended instance * type, you will need to install or upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on * Linux instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * InstanceStoreAvailability — The recommended instance type does not support instance * store volumes and the current instance does. Before migrating, you might need to back up the data on your * instance store volumes if you want to preserve them. For more information, see How do I back up * an instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services * Premium Support Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * VirtualizationType — The recommended instance type uses the hardware virtual machine * (HVM) virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux AMI * virtualization types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

        *
      • *
      • *

        * Architecture — The CPU architecture between the recommended instance type and the * current instance is different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as x86. Before migrating, you * should consider recompiling the software on your instance for the new architecture. Alternatively, you * might switch to an Amazon Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance Types. *

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

        * Describes the configuration differences between the current instance and the recommended instance type. You * should consider the configuration differences before migrating your workloads from the current instance to the * recommended instance type. The Change the instance type * guide for Linux and Change the instance type * guide for Windows provide general guidance for getting started with an instance migration. *

        *

        * Platform differences include: *

        *
          *
        • *

          * Hypervisor — The hypervisor of the recommended instance type is different than that of the * current instance. For example, the recommended instance type uses a Nitro hypervisor and the current instance * uses a Xen hypervisor. The differences that you should consider between these hypervisors are covered in the Nitro Hypervisor section of the Amazon EC2 frequently * asked questions. For more information, see Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances * built on the Nitro System in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * NetworkInterface — The network interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type supports enhanced networking and the * current instance might not. To enable enhanced networking for the recommended instance type, you must install the * Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function driver. For more information, see * Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking on * Windows in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * StorageInterface — The storage interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type uses an NVMe storage interface and the * current instance does not. To access NVMe volumes for the recommended instance type, you will need to install or * upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on Linux * instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * InstanceStoreAvailability — The recommended instance type does not support instance store * volumes and the current instance does. Before migrating, you might need to back up the data on your instance * store volumes if you want to preserve them. For more information, see How do I back up an * instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services Premium Support * Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance store in * the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance store * in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * VirtualizationType — The recommended instance type uses the hardware virtual machine (HVM) * virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more information * about the differences between these virtualization types, see Linux AMI virtualization * types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * Architecture — The CPU architecture between the recommended instance type and the current * instance is different. For example, the recommended instance type might use an Arm CPU architecture and the * current instance type might use a different one, such as x86. Before migrating, you should consider recompiling * the software on your instance for the new architecture. Alternatively, you might switch to an Amazon Machine * Image (AMI) that supports the new architecture. For more information about the CPU architecture for each instance * type, see Amazon EC2 Instance Types. *

          *
        • *
        * * @param platformDifferences * Describes the configuration differences between the current instance and the recommended instance type. * You should consider the configuration differences before migrating your workloads from the current * instance to the recommended instance type. The Change the instance * type guide for Linux and Change the instance * type guide for Windows provide general guidance for getting started with an instance migration.

        *

        * Platform differences include: *

        *
          *
        • *

          * Hypervisor — The hypervisor of the recommended instance type is different than that * of the current instance. For example, the recommended instance type uses a Nitro hypervisor and the * current instance uses a Xen hypervisor. The differences that you should consider between these hypervisors * are covered in the Nitro Hypervisor section * of the Amazon EC2 frequently asked questions. For more information, see Instances built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances built on the Nitro System in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * NetworkInterface — The network interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for the recommended instance * type, you must install the Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function * driver. For more information, see Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking * on Windows in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * StorageInterface — The storage interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type uses an NVMe * storage interface and the current instance does not. To access NVMe volumes for the recommended instance * type, you will need to install or upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on * Linux instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * InstanceStoreAvailability — The recommended instance type does not support instance * store volumes and the current instance does. Before migrating, you might need to back up the data on your * instance store volumes if you want to preserve them. For more information, see How do I back up * an instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services * Premium Support Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * VirtualizationType — The recommended instance type uses the hardware virtual machine * (HVM) virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux AMI * virtualization types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

          *
        • *
        • *

          * Architecture — The CPU architecture between the recommended instance type and the * current instance is different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as x86. Before migrating, you * should consider recompiling the software on your instance for the new architecture. Alternatively, you * might switch to an Amazon Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance Types. *

          *
        • * @return Returns a reference to this object so that method calls can be chained together. * @see PlatformDifference */ public InstanceRecommendationOption withPlatformDifferences(java.util.Collection platformDifferences) { setPlatformDifferences(platformDifferences); return this; } /** *

          * Describes the configuration differences between the current instance and the recommended instance type. You * should consider the configuration differences before migrating your workloads from the current instance to the * recommended instance type. The Change the instance type * guide for Linux and Change the instance type * guide for Windows provide general guidance for getting started with an instance migration. *

          *

          * Platform differences include: *

          *
            *
          • *

            * Hypervisor — The hypervisor of the recommended instance type is different than that of the * current instance. For example, the recommended instance type uses a Nitro hypervisor and the current instance * uses a Xen hypervisor. The differences that you should consider between these hypervisors are covered in the Nitro Hypervisor section of the Amazon EC2 frequently * asked questions. For more information, see Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances * built on the Nitro System in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * NetworkInterface — The network interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type supports enhanced networking and the * current instance might not. To enable enhanced networking for the recommended instance type, you must install the * Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function driver. For more information, see * Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking on * Windows in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * StorageInterface — The storage interface of the recommended instance type is different than * that of the current instance. For example, the recommended instance type uses an NVMe storage interface and the * current instance does not. To access NVMe volumes for the recommended instance type, you will need to install or * upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on Linux * instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * InstanceStoreAvailability — The recommended instance type does not support instance store * volumes and the current instance does. Before migrating, you might need to back up the data on your instance * store volumes if you want to preserve them. For more information, see How do I back up an * instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services Premium Support * Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance store in * the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance store * in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * VirtualizationType — The recommended instance type uses the hardware virtual machine (HVM) * virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more information * about the differences between these virtualization types, see Linux AMI virtualization * types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * Architecture — The CPU architecture between the recommended instance type and the current * instance is different. For example, the recommended instance type might use an Arm CPU architecture and the * current instance type might use a different one, such as x86. Before migrating, you should consider recompiling * the software on your instance for the new architecture. Alternatively, you might switch to an Amazon Machine * Image (AMI) that supports the new architecture. For more information about the CPU architecture for each instance * type, see Amazon EC2 Instance Types. *

            *
          • *
          * * @param platformDifferences * Describes the configuration differences between the current instance and the recommended instance type. * You should consider the configuration differences before migrating your workloads from the current * instance to the recommended instance type. The Change the instance * type guide for Linux and Change the instance * type guide for Windows provide general guidance for getting started with an instance migration.

          *

          * Platform differences include: *

          *
            *
          • *

            * Hypervisor — The hypervisor of the recommended instance type is different than that * of the current instance. For example, the recommended instance type uses a Nitro hypervisor and the * current instance uses a Xen hypervisor. The differences that you should consider between these hypervisors * are covered in the Nitro Hypervisor section * of the Amazon EC2 frequently asked questions. For more information, see Instances built on the Nitro System in the Amazon EC2 User Guide for Linux, or Instances built on the Nitro System in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * NetworkInterface — The network interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for the recommended instance * type, you must install the Elastic Network Adapter (ENA) driver or the Intel 82599 Virtual Function * driver. For more information, see Networking and storage features and Enhanced networking on * Linux in the Amazon EC2 User Guide for Linux, or Networking and storage features and Enhanced networking * on Windows in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * StorageInterface — The storage interface of the recommended instance type is * different than that of the current instance. For example, the recommended instance type uses an NVMe * storage interface and the current instance does not. To access NVMe volumes for the recommended instance * type, you will need to install or upgrade the NVMe driver. For more information, see Networking and storage features and Amazon EBS and NVMe on * Linux instances in the Amazon EC2 User Guide for Linux, or Networking and storage features and Amazon EBS and NVMe on * Windows instances in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * InstanceStoreAvailability — The recommended instance type does not support instance * store volumes and the current instance does. Before migrating, you might need to back up the data on your * instance store volumes if you want to preserve them. For more information, see How do I back up * an instance store volume on my Amazon EC2 instance to Amazon EBS? in the Amazon Web Services * Premium Support Knowledge Base. For more information, see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Linux, or see Networking and storage features and Amazon EC2 instance * store in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * VirtualizationType — The recommended instance type uses the hardware virtual machine * (HVM) virtualization type and the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux AMI * virtualization types in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types in the Amazon EC2 User Guide for Windows. *

            *
          • *
          • *

            * Architecture — The CPU architecture between the recommended instance type and the * current instance is different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as x86. Before migrating, you * should consider recompiling the software on your instance for the new architecture. Alternatively, you * might switch to an Amazon Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance Types. *

            *
          • * @return Returns a reference to this object so that method calls can be chained together. * @see PlatformDifference */ public InstanceRecommendationOption withPlatformDifferences(PlatformDifference... platformDifferences) { java.util.ArrayList platformDifferencesCopy = new java.util.ArrayList(platformDifferences.length); for (PlatformDifference value : platformDifferences) { platformDifferencesCopy.add(value.toString()); } if (getPlatformDifferences() == null) { setPlatformDifferences(platformDifferencesCopy); } else { getPlatformDifferences().addAll(platformDifferencesCopy); } return this; } /** *

            * The performance risk of the instance recommendation option. *

            *

            * Performance risk indicates the likelihood of the recommended instance type not meeting the resource needs of your * workload. Compute Optimizer calculates an individual performance risk score for each specification of the * recommended instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk IOPS, network * throughput, and network PPS. The performance risk of the recommended instance is calculated as the maximum * performance risk score across the analyzed resource specifications. *

            *

            * The value ranges from 0 - 4, with 0 meaning that the recommended resource * is predicted to always provide enough hardware capability. The higher the performance risk is, the more likely * you should validate whether the recommendation will meet the performance requirements of your workload before * migrating your resource. *

            * * @param performanceRisk * The performance risk of the instance recommendation option.

            *

            * Performance risk indicates the likelihood of the recommended instance type not meeting the resource needs * of your workload. Compute Optimizer calculates an individual performance risk score for each specification * of the recommended instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk IOPS, * network throughput, and network PPS. The performance risk of the recommended instance is calculated as the * maximum performance risk score across the analyzed resource specifications. *

            *

            * The value ranges from 0 - 4, with 0 meaning that the recommended * resource is predicted to always provide enough hardware capability. The higher the performance risk is, * the more likely you should validate whether the recommendation will meet the performance requirements of * your workload before migrating your resource. */ public void setPerformanceRisk(Double performanceRisk) { this.performanceRisk = performanceRisk; } /** *

            * The performance risk of the instance recommendation option. *

            *

            * Performance risk indicates the likelihood of the recommended instance type not meeting the resource needs of your * workload. Compute Optimizer calculates an individual performance risk score for each specification of the * recommended instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk IOPS, network * throughput, and network PPS. The performance risk of the recommended instance is calculated as the maximum * performance risk score across the analyzed resource specifications. *

            *

            * The value ranges from 0 - 4, with 0 meaning that the recommended resource * is predicted to always provide enough hardware capability. The higher the performance risk is, the more likely * you should validate whether the recommendation will meet the performance requirements of your workload before * migrating your resource. *

            * * @return The performance risk of the instance recommendation option.

            *

            * Performance risk indicates the likelihood of the recommended instance type not meeting the resource needs * of your workload. Compute Optimizer calculates an individual performance risk score for each * specification of the recommended instance, including CPU, memory, EBS throughput, EBS IOPS, disk * throughput, disk IOPS, network throughput, and network PPS. The performance risk of the recommended * instance is calculated as the maximum performance risk score across the analyzed resource specifications. *

            *

            * The value ranges from 0 - 4, with 0 meaning that the recommended * resource is predicted to always provide enough hardware capability. The higher the performance risk is, * the more likely you should validate whether the recommendation will meet the performance requirements of * your workload before migrating your resource. */ public Double getPerformanceRisk() { return this.performanceRisk; } /** *

            * The performance risk of the instance recommendation option. *

            *

            * Performance risk indicates the likelihood of the recommended instance type not meeting the resource needs of your * workload. Compute Optimizer calculates an individual performance risk score for each specification of the * recommended instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk IOPS, network * throughput, and network PPS. The performance risk of the recommended instance is calculated as the maximum * performance risk score across the analyzed resource specifications. *

            *

            * The value ranges from 0 - 4, with 0 meaning that the recommended resource * is predicted to always provide enough hardware capability. The higher the performance risk is, the more likely * you should validate whether the recommendation will meet the performance requirements of your workload before * migrating your resource. *

            * * @param performanceRisk * The performance risk of the instance recommendation option.

            *

            * Performance risk indicates the likelihood of the recommended instance type not meeting the resource needs * of your workload. Compute Optimizer calculates an individual performance risk score for each specification * of the recommended instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk IOPS, * network throughput, and network PPS. The performance risk of the recommended instance is calculated as the * maximum performance risk score across the analyzed resource specifications. *

            *

            * The value ranges from 0 - 4, with 0 meaning that the recommended * resource is predicted to always provide enough hardware capability. The higher the performance risk is, * the more likely you should validate whether the recommendation will meet the performance requirements of * your workload before migrating your resource. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendationOption withPerformanceRisk(Double performanceRisk) { setPerformanceRisk(performanceRisk); return this; } /** *

            * The rank of the instance recommendation option. *

            *

            * The top recommendation option is ranked as 1. *

            * * @param rank * The rank of the instance recommendation option.

            *

            * The top recommendation option is ranked as 1. */ public void setRank(Integer rank) { this.rank = rank; } /** *

            * The rank of the instance recommendation option. *

            *

            * The top recommendation option is ranked as 1. *

            * * @return The rank of the instance recommendation option.

            *

            * The top recommendation option is ranked as 1. */ public Integer getRank() { return this.rank; } /** *

            * The rank of the instance recommendation option. *

            *

            * The top recommendation option is ranked as 1. *

            * * @param rank * The rank of the instance recommendation option.

            *

            * The top recommendation option is ranked as 1. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendationOption withRank(Integer rank) { setRank(rank); return this; } /** *

            * An object that describes the savings opportunity for the instance recommendation option. Savings opportunity * includes the estimated monthly savings amount and percentage. *

            * * @param savingsOpportunity * An object that describes the savings opportunity for the instance recommendation option. Savings * opportunity includes the estimated monthly savings amount and percentage. */ public void setSavingsOpportunity(SavingsOpportunity savingsOpportunity) { this.savingsOpportunity = savingsOpportunity; } /** *

            * An object that describes the savings opportunity for the instance recommendation option. Savings opportunity * includes the estimated monthly savings amount and percentage. *

            * * @return An object that describes the savings opportunity for the instance recommendation option. Savings * opportunity includes the estimated monthly savings amount and percentage. */ public SavingsOpportunity getSavingsOpportunity() { return this.savingsOpportunity; } /** *

            * An object that describes the savings opportunity for the instance recommendation option. Savings opportunity * includes the estimated monthly savings amount and percentage. *

            * * @param savingsOpportunity * An object that describes the savings opportunity for the instance recommendation option. Savings * opportunity includes the estimated monthly savings amount and percentage. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceRecommendationOption withSavingsOpportunity(SavingsOpportunity savingsOpportunity) { setSavingsOpportunity(savingsOpportunity); return this; } /** *

            * The level of effort required to migrate from the current instance type to the recommended instance type. *

            *

            * For example, the migration effort is Low if Amazon EMR is the inferred workload type and an Amazon * Web Services Graviton instance type is recommended. The migration effort is Medium if a workload * type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. The migration effort * is VeryLow if both the current and recommended instance types are of the same CPU architecture. *

            * * @param migrationEffort * The level of effort required to migrate from the current instance type to the recommended instance * type.

            *

            * For example, the migration effort is Low if Amazon EMR is the inferred workload type and an * Amazon Web Services Graviton instance type is recommended. The migration effort is Medium if * a workload type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. The * migration effort is VeryLow if both the current and recommended instance types are of the * same CPU architecture. * @see MigrationEffort */ public void setMigrationEffort(String migrationEffort) { this.migrationEffort = migrationEffort; } /** *

            * The level of effort required to migrate from the current instance type to the recommended instance type. *

            *

            * For example, the migration effort is Low if Amazon EMR is the inferred workload type and an Amazon * Web Services Graviton instance type is recommended. The migration effort is Medium if a workload * type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. The migration effort * is VeryLow if both the current and recommended instance types are of the same CPU architecture. *

            * * @return The level of effort required to migrate from the current instance type to the recommended instance * type.

            *

            * For example, the migration effort is Low if Amazon EMR is the inferred workload type and an * Amazon Web Services Graviton instance type is recommended. The migration effort is Medium if * a workload type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. * The migration effort is VeryLow if both the current and recommended instance types are of * the same CPU architecture. * @see MigrationEffort */ public String getMigrationEffort() { return this.migrationEffort; } /** *

            * The level of effort required to migrate from the current instance type to the recommended instance type. *

            *

            * For example, the migration effort is Low if Amazon EMR is the inferred workload type and an Amazon * Web Services Graviton instance type is recommended. The migration effort is Medium if a workload * type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. The migration effort * is VeryLow if both the current and recommended instance types are of the same CPU architecture. *

            * * @param migrationEffort * The level of effort required to migrate from the current instance type to the recommended instance * type.

            *

            * For example, the migration effort is Low if Amazon EMR is the inferred workload type and an * Amazon Web Services Graviton instance type is recommended. The migration effort is Medium if * a workload type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. The * migration effort is VeryLow if both the current and recommended instance types are of the * same CPU architecture. * @return Returns a reference to this object so that method calls can be chained together. * @see MigrationEffort */ public InstanceRecommendationOption withMigrationEffort(String migrationEffort) { setMigrationEffort(migrationEffort); return this; } /** *

            * The level of effort required to migrate from the current instance type to the recommended instance type. *

            *

            * For example, the migration effort is Low if Amazon EMR is the inferred workload type and an Amazon * Web Services Graviton instance type is recommended. The migration effort is Medium if a workload * type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. The migration effort * is VeryLow if both the current and recommended instance types are of the same CPU architecture. *

            * * @param migrationEffort * The level of effort required to migrate from the current instance type to the recommended instance * type.

            *

            * For example, the migration effort is Low if Amazon EMR is the inferred workload type and an * Amazon Web Services Graviton instance type is recommended. The migration effort is Medium if * a workload type couldn't be inferred but an Amazon Web Services Graviton instance type is recommended. The * migration effort is VeryLow if both the current and recommended instance types are of the * same CPU architecture. * @return Returns a reference to this object so that method calls can be chained together. * @see MigrationEffort */ public InstanceRecommendationOption withMigrationEffort(MigrationEffort migrationEffort) { this.migrationEffort = migrationEffort.toString(); 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 (getInstanceType() != null) sb.append("InstanceType: ").append(getInstanceType()).append(","); if (getProjectedUtilizationMetrics() != null) sb.append("ProjectedUtilizationMetrics: ").append(getProjectedUtilizationMetrics()).append(","); if (getPlatformDifferences() != null) sb.append("PlatformDifferences: ").append(getPlatformDifferences()).append(","); if (getPerformanceRisk() != null) sb.append("PerformanceRisk: ").append(getPerformanceRisk()).append(","); if (getRank() != null) sb.append("Rank: ").append(getRank()).append(","); if (getSavingsOpportunity() != null) sb.append("SavingsOpportunity: ").append(getSavingsOpportunity()).append(","); if (getMigrationEffort() != null) sb.append("MigrationEffort: ").append(getMigrationEffort()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof InstanceRecommendationOption == false) return false; InstanceRecommendationOption other = (InstanceRecommendationOption) obj; if (other.getInstanceType() == null ^ this.getInstanceType() == null) return false; if (other.getInstanceType() != null && other.getInstanceType().equals(this.getInstanceType()) == false) return false; if (other.getProjectedUtilizationMetrics() == null ^ this.getProjectedUtilizationMetrics() == null) return false; if (other.getProjectedUtilizationMetrics() != null && other.getProjectedUtilizationMetrics().equals(this.getProjectedUtilizationMetrics()) == false) return false; if (other.getPlatformDifferences() == null ^ this.getPlatformDifferences() == null) return false; if (other.getPlatformDifferences() != null && other.getPlatformDifferences().equals(this.getPlatformDifferences()) == false) return false; if (other.getPerformanceRisk() == null ^ this.getPerformanceRisk() == null) return false; if (other.getPerformanceRisk() != null && other.getPerformanceRisk().equals(this.getPerformanceRisk()) == false) return false; if (other.getRank() == null ^ this.getRank() == null) return false; if (other.getRank() != null && other.getRank().equals(this.getRank()) == false) return false; if (other.getSavingsOpportunity() == null ^ this.getSavingsOpportunity() == null) return false; if (other.getSavingsOpportunity() != null && other.getSavingsOpportunity().equals(this.getSavingsOpportunity()) == false) return false; if (other.getMigrationEffort() == null ^ this.getMigrationEffort() == null) return false; if (other.getMigrationEffort() != null && other.getMigrationEffort().equals(this.getMigrationEffort()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getInstanceType() == null) ? 0 : getInstanceType().hashCode()); hashCode = prime * hashCode + ((getProjectedUtilizationMetrics() == null) ? 0 : getProjectedUtilizationMetrics().hashCode()); hashCode = prime * hashCode + ((getPlatformDifferences() == null) ? 0 : getPlatformDifferences().hashCode()); hashCode = prime * hashCode + ((getPerformanceRisk() == null) ? 0 : getPerformanceRisk().hashCode()); hashCode = prime * hashCode + ((getRank() == null) ? 0 : getRank().hashCode()); hashCode = prime * hashCode + ((getSavingsOpportunity() == null) ? 0 : getSavingsOpportunity().hashCode()); hashCode = prime * hashCode + ((getMigrationEffort() == null) ? 0 : getMigrationEffort().hashCode()); return hashCode; } @Override public InstanceRecommendationOption clone() { try { return (InstanceRecommendationOption) 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.InstanceRecommendationOptionMarshaller.getInstance().marshall(this, protocolMarshaller); } }