/*
* 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
{
///
/// A description of the Amazon EC2 instance on which the cluster (job flow) runs. A valid
/// JobFlowInstancesConfig must contain either InstanceGroups or InstanceFleets. They
/// cannot be used together. You may also have MasterInstanceType, SlaveInstanceType,
/// and InstanceCount (all three must be present), but we don't recommend this configuration.
///
public partial class JobFlowInstancesConfig
{
private List _additionalMasterSecurityGroups = new List();
private List _additionalSlaveSecurityGroups = new List();
private string _ec2KeyName;
private string _ec2SubnetId;
private List _ec2SubnetIds = new List();
private string _emrManagedMasterSecurityGroup;
private string _emrManagedSlaveSecurityGroup;
private string _hadoopVersion;
private int? _instanceCount;
private List _instanceFleets = new List();
private List _instanceGroups = new List();
private bool? _keepJobFlowAliveWhenNoSteps;
private string _masterInstanceType;
private PlacementType _placement;
private string _serviceAccessSecurityGroup;
private string _slaveInstanceType;
private bool? _terminationProtected;
///
/// Empty constructor used to set properties independently even when a simple constructor is available
///
public JobFlowInstancesConfig() { }
///
/// Gets and sets the property AdditionalMasterSecurityGroups.
///
/// A list of additional Amazon EC2 security group IDs for the master node.
///
///
public List AdditionalMasterSecurityGroups
{
get { return this._additionalMasterSecurityGroups; }
set { this._additionalMasterSecurityGroups = value; }
}
// Check to see if AdditionalMasterSecurityGroups property is set
internal bool IsSetAdditionalMasterSecurityGroups()
{
return this._additionalMasterSecurityGroups != null && this._additionalMasterSecurityGroups.Count > 0;
}
///
/// Gets and sets the property AdditionalSlaveSecurityGroups.
///
/// A list of additional Amazon EC2 security group IDs for the core and task nodes.
///
///
public List AdditionalSlaveSecurityGroups
{
get { return this._additionalSlaveSecurityGroups; }
set { this._additionalSlaveSecurityGroups = value; }
}
// Check to see if AdditionalSlaveSecurityGroups property is set
internal bool IsSetAdditionalSlaveSecurityGroups()
{
return this._additionalSlaveSecurityGroups != null && this._additionalSlaveSecurityGroups.Count > 0;
}
///
/// Gets and sets the property Ec2KeyName.
///
/// The name of the Amazon EC2 key pair that can be used to connect to the master node
/// using SSH as the user called "hadoop."
///
///
[AWSProperty(Min=0, Max=256)]
public string Ec2KeyName
{
get { return this._ec2KeyName; }
set { this._ec2KeyName = value; }
}
// Check to see if Ec2KeyName property is set
internal bool IsSetEc2KeyName()
{
return this._ec2KeyName != null;
}
///
/// Gets and sets the property Ec2SubnetId.
///
/// Applies to clusters that use the uniform instance group configuration. To launch the
/// cluster in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier
/// of the Amazon VPC subnet where you want the cluster to launch. If you do not specify
/// this value and your account supports EC2-Classic, the cluster launches in EC2-Classic.
///
///
[AWSProperty(Min=0, Max=256)]
public string Ec2SubnetId
{
get { return this._ec2SubnetId; }
set { this._ec2SubnetId = value; }
}
// Check to see if Ec2SubnetId property is set
internal bool IsSetEc2SubnetId()
{
return this._ec2SubnetId != null;
}
///
/// Gets and sets the property Ec2SubnetIds.
///
/// Applies to clusters that use the instance fleet configuration. When multiple Amazon
/// EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances in
/// the optimal subnet.
///
///
///
/// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and
/// later, excluding 5.0.x versions.
///
///
///
public List Ec2SubnetIds
{
get { return this._ec2SubnetIds; }
set { this._ec2SubnetIds = value; }
}
// Check to see if Ec2SubnetIds property is set
internal bool IsSetEc2SubnetIds()
{
return this._ec2SubnetIds != null && this._ec2SubnetIds.Count > 0;
}
///
/// Gets and sets the property EmrManagedMasterSecurityGroup.
///
/// The identifier of the Amazon EC2 security group for the master node. If you specify
/// EmrManagedMasterSecurityGroup
, you must also specify EmrManagedSlaveSecurityGroup
.
///
///
[AWSProperty(Min=0, Max=256)]
public string EmrManagedMasterSecurityGroup
{
get { return this._emrManagedMasterSecurityGroup; }
set { this._emrManagedMasterSecurityGroup = value; }
}
// Check to see if EmrManagedMasterSecurityGroup property is set
internal bool IsSetEmrManagedMasterSecurityGroup()
{
return this._emrManagedMasterSecurityGroup != null;
}
///
/// Gets and sets the property EmrManagedSlaveSecurityGroup.
///
/// The identifier of the Amazon EC2 security group for the core and task nodes. If you
/// specify EmrManagedSlaveSecurityGroup
, you must also specify EmrManagedMasterSecurityGroup
.
///
///
[AWSProperty(Min=0, Max=256)]
public string EmrManagedSlaveSecurityGroup
{
get { return this._emrManagedSlaveSecurityGroup; }
set { this._emrManagedSlaveSecurityGroup = value; }
}
// Check to see if EmrManagedSlaveSecurityGroup property is set
internal bool IsSetEmrManagedSlaveSecurityGroup()
{
return this._emrManagedSlaveSecurityGroup != null;
}
///
/// Gets and sets the property HadoopVersion.
///
/// Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop version for
/// the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" (no longer maintained),
/// "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or "2.4.0". If you do not set
/// this value, the default of 0.18 is used, unless the AmiVersion
parameter
/// is set in the RunJobFlow call, in which case the default version of Hadoop for that
/// AMI version is used.
///
///
[AWSProperty(Min=0, Max=256)]
public string HadoopVersion
{
get { return this._hadoopVersion; }
set { this._hadoopVersion = value; }
}
// Check to see if HadoopVersion property is set
internal bool IsSetHadoopVersion()
{
return this._hadoopVersion != null;
}
///
/// Gets and sets the property InstanceCount.
///
/// The number of Amazon EC2 instances in the cluster.
///
///
public int InstanceCount
{
get { return this._instanceCount.GetValueOrDefault(); }
set { this._instanceCount = value; }
}
// Check to see if InstanceCount property is set
internal bool IsSetInstanceCount()
{
return this._instanceCount.HasValue;
}
///
/// Gets and sets the property InstanceFleets.
///
/// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and
/// later, excluding 5.0.x versions.
///
///
///
/// Describes the Amazon EC2 instances and instance configurations for clusters that use
/// the instance fleet configuration.
///
///
public List InstanceFleets
{
get { return this._instanceFleets; }
set { this._instanceFleets = value; }
}
// Check to see if InstanceFleets property is set
internal bool IsSetInstanceFleets()
{
return this._instanceFleets != null && this._instanceFleets.Count > 0;
}
///
/// Gets and sets the property InstanceGroups.
///
/// Configuration for the instance groups in a cluster.
///
///
public List InstanceGroups
{
get { return this._instanceGroups; }
set { this._instanceGroups = value; }
}
// Check to see if InstanceGroups property is set
internal bool IsSetInstanceGroups()
{
return this._instanceGroups != null && this._instanceGroups.Count > 0;
}
///
/// Gets and sets the property KeepJobFlowAliveWhenNoSteps.
///
/// Specifies whether the cluster should remain available after completing all steps.
/// Defaults to true
. For more information about configuring cluster termination,
/// see Control
/// Cluster Termination in the EMR Management Guide.
///
///
public bool KeepJobFlowAliveWhenNoSteps
{
get { return this._keepJobFlowAliveWhenNoSteps.GetValueOrDefault(); }
set { this._keepJobFlowAliveWhenNoSteps = value; }
}
// Check to see if KeepJobFlowAliveWhenNoSteps property is set
internal bool IsSetKeepJobFlowAliveWhenNoSteps()
{
return this._keepJobFlowAliveWhenNoSteps.HasValue;
}
///
/// Gets and sets the property MasterInstanceType.
///
/// The Amazon EC2 instance type of the master node.
///
///
[AWSProperty(Min=1, Max=256)]
public string MasterInstanceType
{
get { return this._masterInstanceType; }
set { this._masterInstanceType = value; }
}
// Check to see if MasterInstanceType property is set
internal bool IsSetMasterInstanceType()
{
return this._masterInstanceType != null;
}
///
/// Gets and sets the property Placement.
///
/// The Availability Zone in which the cluster runs.
///
///
public PlacementType Placement
{
get { return this._placement; }
set { this._placement = value; }
}
// Check to see if Placement property is set
internal bool IsSetPlacement()
{
return this._placement != null;
}
///
/// Gets and sets the property ServiceAccessSecurityGroup.
///
/// The identifier of the Amazon EC2 security group for the Amazon EMR service to access
/// clusters in VPC private subnets.
///
///
[AWSProperty(Min=0, Max=256)]
public string ServiceAccessSecurityGroup
{
get { return this._serviceAccessSecurityGroup; }
set { this._serviceAccessSecurityGroup = value; }
}
// Check to see if ServiceAccessSecurityGroup property is set
internal bool IsSetServiceAccessSecurityGroup()
{
return this._serviceAccessSecurityGroup != null;
}
///
/// Gets and sets the property SlaveInstanceType.
///
/// The Amazon EC2 instance type of the core and task nodes.
///
///
[AWSProperty(Min=1, Max=256)]
public string SlaveInstanceType
{
get { return this._slaveInstanceType; }
set { this._slaveInstanceType = value; }
}
// Check to see if SlaveInstanceType property is set
internal bool IsSetSlaveInstanceType()
{
return this._slaveInstanceType != null;
}
///
/// Gets and sets the property TerminationProtected.
///
/// Specifies whether to lock the cluster to prevent the Amazon EC2 instances from being
/// terminated by API call, user intervention, or in the event of a job-flow error.
///
///
public bool TerminationProtected
{
get { return this._terminationProtected.GetValueOrDefault(); }
set { this._terminationProtected = value; }
}
// Check to see if TerminationProtected property is set
internal bool IsSetTerminationProtected()
{
return this._terminationProtected.HasValue;
}
}
}