/*
* 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 elasticmapreduce-2009-03-31.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.ElasticMapReduce.Model
{
///
/// The configuration that defines an instance fleet.
///
///
///
/// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and
/// later, excluding 5.0.x versions.
///
///
///
public partial class InstanceFleetConfig
{
private InstanceFleetType _instanceFleetType;
private List _instanceTypeConfigs = new List();
private InstanceFleetProvisioningSpecifications _launchSpecifications;
private string _name;
private InstanceFleetResizingSpecifications _resizeSpecifications;
private int? _targetOnDemandCapacity;
private int? _targetSpotCapacity;
///
/// Gets and sets the property InstanceFleetType.
///
/// The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK.
///
///
[AWSProperty(Required=true)]
public InstanceFleetType InstanceFleetType
{
get { return this._instanceFleetType; }
set { this._instanceFleetType = value; }
}
// Check to see if InstanceFleetType property is set
internal bool IsSetInstanceFleetType()
{
return this._instanceFleetType != null;
}
///
/// Gets and sets the property InstanceTypeConfigs.
///
/// The instance type configurations that define the Amazon EC2 instances in the instance
/// fleet.
///
///
public List InstanceTypeConfigs
{
get { return this._instanceTypeConfigs; }
set { this._instanceTypeConfigs = value; }
}
// Check to see if InstanceTypeConfigs property is set
internal bool IsSetInstanceTypeConfigs()
{
return this._instanceTypeConfigs != null && this._instanceTypeConfigs.Count > 0;
}
///
/// Gets and sets the property LaunchSpecifications.
///
/// The launch specification for the instance fleet.
///
///
public InstanceFleetProvisioningSpecifications LaunchSpecifications
{
get { return this._launchSpecifications; }
set { this._launchSpecifications = value; }
}
// Check to see if LaunchSpecifications property is set
internal bool IsSetLaunchSpecifications()
{
return this._launchSpecifications != null;
}
///
/// Gets and sets the property Name.
///
/// The friendly name of the instance fleet.
///
///
[AWSProperty(Min=0, Max=256)]
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property ResizeSpecifications.
///
/// The resize specification for the instance fleet.
///
///
public InstanceFleetResizingSpecifications ResizeSpecifications
{
get { return this._resizeSpecifications; }
set { this._resizeSpecifications = value; }
}
// Check to see if ResizeSpecifications property is set
internal bool IsSetResizeSpecifications()
{
return this._resizeSpecifications != null;
}
///
/// Gets and sets the property TargetOnDemandCapacity.
///
/// The target capacity of On-Demand units for the instance fleet, which determines how
/// many On-Demand Instances to provision. When the instance fleet launches, Amazon EMR
/// tries to provision On-Demand Instances as specified by InstanceTypeConfig.
/// Each instance configuration has a specified WeightedCapacity
. When an
/// On-Demand Instance is provisioned, the WeightedCapacity
units count toward
/// the target capacity. Amazon EMR provisions instances until the target capacity is
/// totally fulfilled, even if this results in an overage. For example, if there are 2
/// units remaining to fulfill capacity, and Amazon EMR can only provision an instance
/// with a WeightedCapacity
of 5 units, the instance is provisioned, and
/// the target capacity is exceeded by 3 units.
///
///
///
/// If not specified or set to 0, only Spot Instances are provisioned for the instance
/// fleet using TargetSpotCapacity
. At least one of TargetSpotCapacity
/// and TargetOnDemandCapacity
should be greater than 0. For a master instance
/// fleet, only one of TargetSpotCapacity
and TargetOnDemandCapacity
/// can be specified, and its value must be 1.
///
///
///
[AWSProperty(Min=0)]
public int TargetOnDemandCapacity
{
get { return this._targetOnDemandCapacity.GetValueOrDefault(); }
set { this._targetOnDemandCapacity = value; }
}
// Check to see if TargetOnDemandCapacity property is set
internal bool IsSetTargetOnDemandCapacity()
{
return this._targetOnDemandCapacity.HasValue;
}
///
/// Gets and sets the property TargetSpotCapacity.
///
/// The target capacity of Spot units for the instance fleet, which determines how many
/// Spot Instances to provision. When the instance fleet launches, Amazon EMR tries to
/// provision Spot Instances as specified by InstanceTypeConfig. Each instance
/// configuration has a specified WeightedCapacity
. When a Spot Instance
/// is provisioned, the WeightedCapacity
units count toward the target capacity.
/// Amazon EMR provisions instances until the target capacity is totally fulfilled, even
/// if this results in an overage. For example, if there are 2 units remaining to fulfill
/// capacity, and Amazon EMR can only provision an instance with a WeightedCapacity
/// of 5 units, the instance is provisioned, and the target capacity is exceeded by 3
/// units.
///
///
///
/// If not specified or set to 0, only On-Demand Instances are provisioned for the instance
/// fleet. At least one of TargetSpotCapacity
and TargetOnDemandCapacity
/// should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity
/// and TargetOnDemandCapacity
can be specified, and its value must be 1.
///
///
///
[AWSProperty(Min=0)]
public int TargetSpotCapacity
{
get { return this._targetSpotCapacity.GetValueOrDefault(); }
set { this._targetSpotCapacity = value; }
}
// Check to see if TargetSpotCapacity property is set
internal bool IsSetTargetSpotCapacity()
{
return this._targetSpotCapacity.HasValue;
}
}
}