/*
* 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
{
///
/// Describes an instance fleet, which is a group of Amazon EC2 instances that host a
/// particular node type (master, core, or task) in an Amazon EMR cluster. Instance fleets
/// can consist of a mix of instance types and On-Demand and Spot Instances, which are
/// provisioned to meet a defined target capacity.
///
///
///
/// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and
/// later, excluding 5.0.x versions.
///
///
///
public partial class InstanceFleet
{
private string _id;
private InstanceFleetType _instanceFleetType;
private List _instanceTypeSpecifications = new List();
private InstanceFleetProvisioningSpecifications _launchSpecifications;
private string _name;
private int? _provisionedOnDemandCapacity;
private int? _provisionedSpotCapacity;
private InstanceFleetResizingSpecifications _resizeSpecifications;
private InstanceFleetStatus _status;
private int? _targetOnDemandCapacity;
private int? _targetSpotCapacity;
///
/// Gets and sets the property Id.
///
/// The unique identifier of the instance fleet.
///
///
public string Id
{
get { return this._id; }
set { this._id = value; }
}
// Check to see if Id property is set
internal bool IsSetId()
{
return this._id != null;
}
///
/// Gets and sets the property InstanceFleetType.
///
/// The node type that the instance fleet hosts. Valid values are MASTER, CORE, or TASK.
///
///
///
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 InstanceTypeSpecifications.
///
/// An array of specifications for the instance types that comprise an instance fleet.
///
///
public List InstanceTypeSpecifications
{
get { return this._instanceTypeSpecifications; }
set { this._instanceTypeSpecifications = value; }
}
// Check to see if InstanceTypeSpecifications property is set
internal bool IsSetInstanceTypeSpecifications()
{
return this._instanceTypeSpecifications != null && this._instanceTypeSpecifications.Count > 0;
}
///
/// Gets and sets the property LaunchSpecifications.
///
/// Describes the launch specification for an 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.
///
/// A friendly name for 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 ProvisionedOnDemandCapacity.
///
/// The number of On-Demand units that have been provisioned for the instance fleet to
/// fulfill TargetOnDemandCapacity
. This provisioned capacity might be less
/// than or greater than TargetOnDemandCapacity
.
///
///
[AWSProperty(Min=0)]
public int ProvisionedOnDemandCapacity
{
get { return this._provisionedOnDemandCapacity.GetValueOrDefault(); }
set { this._provisionedOnDemandCapacity = value; }
}
// Check to see if ProvisionedOnDemandCapacity property is set
internal bool IsSetProvisionedOnDemandCapacity()
{
return this._provisionedOnDemandCapacity.HasValue;
}
///
/// Gets and sets the property ProvisionedSpotCapacity.
///
/// The number of Spot units that have been provisioned for this instance fleet to fulfill
/// TargetSpotCapacity
. This provisioned capacity might be less than or greater
/// than TargetSpotCapacity
.
///
///
[AWSProperty(Min=0)]
public int ProvisionedSpotCapacity
{
get { return this._provisionedSpotCapacity.GetValueOrDefault(); }
set { this._provisionedSpotCapacity = value; }
}
// Check to see if ProvisionedSpotCapacity property is set
internal bool IsSetProvisionedSpotCapacity()
{
return this._provisionedSpotCapacity.HasValue;
}
///
/// 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 Status.
///
/// The current status of the instance fleet.
///
///
public InstanceFleetStatus Status
{
get { return this._status; }
set { this._status = value; }
}
// Check to see if Status property is set
internal bool IsSetStatus()
{
return this._status != 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. You can use InstanceFleet$ProvisionedOnDemandCapacity
/// to determine the Spot capacity units that have been provisioned for the instance fleet.
///
///
///
/// 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. You can use InstanceFleet$ProvisionedSpotCapacity to determine the Spot
/// capacity units that have been provisioned for the instance fleet.
///
///
///
/// 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;
}
}
}