/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the compute-optimizer-2019-11-01.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.ComputeOptimizer.Model
{
///
/// Describes a recommendation option for an Amazon EC2 instance.
///
public partial class InstanceRecommendationOption
{
private string _instanceType;
private MigrationEffort _migrationEffort;
private double? _performanceRisk;
private List _platformDifferences = new List();
private List _projectedUtilizationMetrics = new List();
private int? _rank;
private SavingsOpportunity _savingsOpportunity;
///
/// Gets and sets the property InstanceType.
///
/// The instance type of the instance recommendation.
///
///
public string InstanceType
{
get { return this._instanceType; }
set { this._instanceType = value; }
}
// Check to see if InstanceType property is set
internal bool IsSetInstanceType()
{
return this._instanceType != null;
}
///
/// Gets and sets the property 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.
///
///
public MigrationEffort MigrationEffort
{
get { return this._migrationEffort; }
set { this._migrationEffort = value; }
}
// Check to see if MigrationEffort property is set
internal bool IsSetMigrationEffort()
{
return this._migrationEffort != null;
}
///
/// Gets and sets the property 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.
///
///
[AWSProperty(Min=0, Max=4)]
public double PerformanceRisk
{
get { return this._performanceRisk.GetValueOrDefault(); }
set { this._performanceRisk = value; }
}
// Check to see if PerformanceRisk property is set
internal bool IsSetPerformanceRisk()
{
return this._performanceRisk.HasValue;
}
///
/// Gets and sets the property 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.
///
///
///
public List PlatformDifferences
{
get { return this._platformDifferences; }
set { this._platformDifferences = value; }
}
// Check to see if PlatformDifferences property is set
internal bool IsSetPlatformDifferences()
{
return this._platformDifferences != null && this._platformDifferences.Count > 0;
}
///
/// Gets and sets the property 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 List ProjectedUtilizationMetrics
{
get { return this._projectedUtilizationMetrics; }
set { this._projectedUtilizationMetrics = value; }
}
// Check to see if ProjectedUtilizationMetrics property is set
internal bool IsSetProjectedUtilizationMetrics()
{
return this._projectedUtilizationMetrics != null && this._projectedUtilizationMetrics.Count > 0;
}
///
/// Gets and sets the property Rank.
///
/// The rank of the instance recommendation option.
///
///
///
/// The top recommendation option is ranked as 1
.
///
///
public int Rank
{
get { return this._rank.GetValueOrDefault(); }
set { this._rank = value; }
}
// Check to see if Rank property is set
internal bool IsSetRank()
{
return this._rank.HasValue;
}
///
/// Gets and sets the property SavingsOpportunity.
///
/// An object that describes the savings opportunity for the instance recommendation option.
/// Savings opportunity includes the estimated monthly savings amount and percentage.
///
///
public SavingsOpportunity SavingsOpportunity
{
get { return this._savingsOpportunity; }
set { this._savingsOpportunity = value; }
}
// Check to see if SavingsOpportunity property is set
internal bool IsSetSavingsOpportunity()
{
return this._savingsOpportunity != null;
}
}
}