/*
* 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 detailed description of the cluster.
///
public partial class Cluster
{
private List _applications = new List();
private string _autoScalingRole;
private bool? _autoTerminate;
private string _clusterArn;
private List _configurations = new List();
private string _customAmiId;
private int? _ebsRootVolumeSize;
private Ec2InstanceAttributes _ec2InstanceAttributes;
private string _id;
private InstanceCollectionType _instanceCollectionType;
private KerberosAttributes _kerberosAttributes;
private string _logEncryptionKmsKeyId;
private string _logUri;
private string _masterPublicDnsName;
private string _name;
private int? _normalizedInstanceHours;
private string _osReleaseLabel;
private string _outpostArn;
private List _placementGroups = new List();
private string _releaseLabel;
private RepoUpgradeOnBoot _repoUpgradeOnBoot;
private string _requestedAmiVersion;
private string _runningAmiVersion;
private ScaleDownBehavior _scaleDownBehavior;
private string _securityConfiguration;
private string _serviceRole;
private ClusterStatus _status;
private int? _stepConcurrencyLevel;
private List _tags = new List();
private bool? _terminationProtected;
private bool? _visibleToAllUsers;
///
/// Gets and sets the property Applications.
///
/// The applications installed on this cluster.
///
///
public List Applications
{
get { return this._applications; }
set { this._applications = value; }
}
// Check to see if Applications property is set
internal bool IsSetApplications()
{
return this._applications != null && this._applications.Count > 0;
}
///
/// Gets and sets the property AutoScalingRole.
///
/// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole
.
/// The IAM role provides permissions that the automatic scaling feature requires to launch
/// and terminate Amazon EC2 instances in an instance group.
///
///
[AWSProperty(Min=0, Max=10280)]
public string AutoScalingRole
{
get { return this._autoScalingRole; }
set { this._autoScalingRole = value; }
}
// Check to see if AutoScalingRole property is set
internal bool IsSetAutoScalingRole()
{
return this._autoScalingRole != null;
}
///
/// Gets and sets the property AutoTerminate.
///
/// Specifies whether the cluster should terminate after completing all steps.
///
///
public bool AutoTerminate
{
get { return this._autoTerminate.GetValueOrDefault(); }
set { this._autoTerminate = value; }
}
// Check to see if AutoTerminate property is set
internal bool IsSetAutoTerminate()
{
return this._autoTerminate.HasValue;
}
///
/// Gets and sets the property ClusterArn.
///
/// The Amazon Resource Name of the cluster.
///
///
[AWSProperty(Min=20, Max=2048)]
public string ClusterArn
{
get { return this._clusterArn; }
set { this._clusterArn = value; }
}
// Check to see if ClusterArn property is set
internal bool IsSetClusterArn()
{
return this._clusterArn != null;
}
///
/// Gets and sets the property Configurations.
///
/// Applies only to Amazon EMR releases 4.x and later. The list of configurations that
/// are supplied to the Amazon EMR cluster.
///
///
public List Configurations
{
get { return this._configurations; }
set { this._configurations = value; }
}
// Check to see if Configurations property is set
internal bool IsSetConfigurations()
{
return this._configurations != null && this._configurations.Count > 0;
}
///
/// Gets and sets the property CustomAmiId.
///
/// Available only in Amazon EMR releases 5.7.0 and later. The ID of a custom Amazon EBS-backed
/// Linux AMI if the cluster uses a custom AMI.
///
///
[AWSProperty(Min=0, Max=256)]
public string CustomAmiId
{
get { return this._customAmiId; }
set { this._customAmiId = value; }
}
// Check to see if CustomAmiId property is set
internal bool IsSetCustomAmiId()
{
return this._customAmiId != null;
}
///
/// Gets and sets the property EbsRootVolumeSize.
///
/// The size, in GiB, of the Amazon EBS root device volume of the Linux AMI that is used
/// for each Amazon EC2 instance. Available in Amazon EMR releases 4.x and later.
///
///
public int EbsRootVolumeSize
{
get { return this._ebsRootVolumeSize.GetValueOrDefault(); }
set { this._ebsRootVolumeSize = value; }
}
// Check to see if EbsRootVolumeSize property is set
internal bool IsSetEbsRootVolumeSize()
{
return this._ebsRootVolumeSize.HasValue;
}
///
/// Gets and sets the property Ec2InstanceAttributes.
///
/// Provides information about the Amazon EC2 instances in a cluster grouped by category.
/// For example, key name, subnet ID, IAM instance profile, and so on.
///
///
public Ec2InstanceAttributes Ec2InstanceAttributes
{
get { return this._ec2InstanceAttributes; }
set { this._ec2InstanceAttributes = value; }
}
// Check to see if Ec2InstanceAttributes property is set
internal bool IsSetEc2InstanceAttributes()
{
return this._ec2InstanceAttributes != null;
}
///
/// Gets and sets the property Id.
///
/// The unique identifier for the cluster.
///
///
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 InstanceCollectionType.
///
/// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and
/// later, excluding 5.0.x versions.
///
///
///
/// The instance group configuration of the cluster. A value of INSTANCE_GROUP
/// indicates a uniform instance group configuration. A value of INSTANCE_FLEET
/// indicates an instance fleets configuration.
///
///
public InstanceCollectionType InstanceCollectionType
{
get { return this._instanceCollectionType; }
set { this._instanceCollectionType = value; }
}
// Check to see if InstanceCollectionType property is set
internal bool IsSetInstanceCollectionType()
{
return this._instanceCollectionType != null;
}
///
/// Gets and sets the property KerberosAttributes.
///
/// Attributes for Kerberos configuration when Kerberos authentication is enabled using
/// a security configuration. For more information see Use
/// Kerberos Authentication in the Amazon EMR Management Guide.
///
///
public KerberosAttributes KerberosAttributes
{
get { return this._kerberosAttributes; }
set { this._kerberosAttributes = value; }
}
// Check to see if KerberosAttributes property is set
internal bool IsSetKerberosAttributes()
{
return this._kerberosAttributes != null;
}
///
/// Gets and sets the property LogEncryptionKmsKeyId.
///
/// The KMS key used for encrypting log files. This attribute is only available with
/// Amazon EMR 5.30.0 and later, excluding Amazon EMR 6.0.0.
///
///
public string LogEncryptionKmsKeyId
{
get { return this._logEncryptionKmsKeyId; }
set { this._logEncryptionKmsKeyId = value; }
}
// Check to see if LogEncryptionKmsKeyId property is set
internal bool IsSetLogEncryptionKmsKeyId()
{
return this._logEncryptionKmsKeyId != null;
}
///
/// Gets and sets the property LogUri.
///
/// The path to the Amazon S3 location where logs for this cluster are stored.
///
///
public string LogUri
{
get { return this._logUri; }
set { this._logUri = value; }
}
// Check to see if LogUri property is set
internal bool IsSetLogUri()
{
return this._logUri != null;
}
///
/// Gets and sets the property MasterPublicDnsName.
///
/// The DNS name of the master node. If the cluster is on a private subnet, this is the
/// private DNS name. On a public subnet, this is the public DNS name.
///
///
public string MasterPublicDnsName
{
get { return this._masterPublicDnsName; }
set { this._masterPublicDnsName = value; }
}
// Check to see if MasterPublicDnsName property is set
internal bool IsSetMasterPublicDnsName()
{
return this._masterPublicDnsName != null;
}
///
/// Gets and sets the property Name.
///
/// The name of the cluster.
///
///
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 NormalizedInstanceHours.
///
/// An approximation of the cost of the cluster, represented in m1.small/hours. This value
/// is incremented one time for every hour an m1.small instance runs. Larger instances
/// are weighted more, so an Amazon EC2 instance that is roughly four times more expensive
/// would result in the normalized instance hours being incremented by four. This result
/// is only an approximation and does not reflect the actual billing rate.
///
///
public int NormalizedInstanceHours
{
get { return this._normalizedInstanceHours.GetValueOrDefault(); }
set { this._normalizedInstanceHours = value; }
}
// Check to see if NormalizedInstanceHours property is set
internal bool IsSetNormalizedInstanceHours()
{
return this._normalizedInstanceHours.HasValue;
}
///
/// Gets and sets the property OSReleaseLabel.
///
/// The Amazon Linux release specified in a cluster launch RunJobFlow request. If no Amazon
/// Linux release was specified, the default Amazon Linux release is shown in the response.
///
///
public string OSReleaseLabel
{
get { return this._osReleaseLabel; }
set { this._osReleaseLabel = value; }
}
// Check to see if OSReleaseLabel property is set
internal bool IsSetOSReleaseLabel()
{
return this._osReleaseLabel != null;
}
///
/// Gets and sets the property OutpostArn.
///
/// The Amazon Resource Name (ARN) of the Outpost where the cluster is launched.
///
///
[AWSProperty(Min=0, Max=2048)]
public string OutpostArn
{
get { return this._outpostArn; }
set { this._outpostArn = value; }
}
// Check to see if OutpostArn property is set
internal bool IsSetOutpostArn()
{
return this._outpostArn != null;
}
///
/// Gets and sets the property PlacementGroups.
///
/// Placement group configured for an Amazon EMR cluster.
///
///
public List PlacementGroups
{
get { return this._placementGroups; }
set { this._placementGroups = value; }
}
// Check to see if PlacementGroups property is set
internal bool IsSetPlacementGroups()
{
return this._placementGroups != null && this._placementGroups.Count > 0;
}
///
/// Gets and sets the property ReleaseLabel.
///
/// The Amazon EMR release label, which determines the version of open-source application
/// packages installed on the cluster. Release labels are in the form emr-x.x.x
,
/// where x.x.x is an Amazon EMR release version such as emr-5.14.0
. For
/// more information about Amazon EMR release versions and included application versions
/// and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/.
/// The release label applies only to Amazon EMR releases version 4.0 and later. Earlier
/// versions use AmiVersion
.
///
///
public string ReleaseLabel
{
get { return this._releaseLabel; }
set { this._releaseLabel = value; }
}
// Check to see if ReleaseLabel property is set
internal bool IsSetReleaseLabel()
{
return this._releaseLabel != null;
}
///
/// Gets and sets the property RepoUpgradeOnBoot.
///
/// Applies only when CustomAmiID
is used. Specifies the type of updates
/// that the Amazon Linux AMI package repositories apply when an instance boots using
/// the AMI.
///
///
public RepoUpgradeOnBoot RepoUpgradeOnBoot
{
get { return this._repoUpgradeOnBoot; }
set { this._repoUpgradeOnBoot = value; }
}
// Check to see if RepoUpgradeOnBoot property is set
internal bool IsSetRepoUpgradeOnBoot()
{
return this._repoUpgradeOnBoot != null;
}
///
/// Gets and sets the property RequestedAmiVersion.
///
/// The AMI version requested for this cluster.
///
///
public string RequestedAmiVersion
{
get { return this._requestedAmiVersion; }
set { this._requestedAmiVersion = value; }
}
// Check to see if RequestedAmiVersion property is set
internal bool IsSetRequestedAmiVersion()
{
return this._requestedAmiVersion != null;
}
///
/// Gets and sets the property RunningAmiVersion.
///
/// The AMI version running on this cluster.
///
///
public string RunningAmiVersion
{
get { return this._runningAmiVersion; }
set { this._runningAmiVersion = value; }
}
// Check to see if RunningAmiVersion property is set
internal bool IsSetRunningAmiVersion()
{
return this._runningAmiVersion != null;
}
///
/// Gets and sets the property ScaleDownBehavior.
///
/// The way that individual Amazon EC2 instances terminate when an automatic scale-in
/// activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
/// indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless
/// of when the request to terminate the instance was submitted. This option is only available
/// with Amazon EMR 5.1.0 and later and is the default for clusters created using that
/// version. TERMINATE_AT_TASK_COMPLETION
indicates that Amazon EMR adds
/// nodes to a deny list and drains tasks from nodes before terminating the Amazon EC2
/// instances, regardless of the instance-hour boundary. With either behavior, Amazon
/// EMR removes the least active nodes first and blocks instance termination if it could
/// lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
is available only
/// in Amazon EMR releases 4.1.0 and later, and is the default for versions of Amazon
/// EMR earlier than 5.1.0.
///
///
public ScaleDownBehavior ScaleDownBehavior
{
get { return this._scaleDownBehavior; }
set { this._scaleDownBehavior = value; }
}
// Check to see if ScaleDownBehavior property is set
internal bool IsSetScaleDownBehavior()
{
return this._scaleDownBehavior != null;
}
///
/// Gets and sets the property SecurityConfiguration.
///
/// The name of the security configuration applied to the cluster.
///
///
[AWSProperty(Min=0, Max=10280)]
public string SecurityConfiguration
{
get { return this._securityConfiguration; }
set { this._securityConfiguration = value; }
}
// Check to see if SecurityConfiguration property is set
internal bool IsSetSecurityConfiguration()
{
return this._securityConfiguration != null;
}
///
/// Gets and sets the property ServiceRole.
///
/// The IAM role that Amazon EMR assumes in order to access Amazon Web Services resources
/// on your behalf.
///
///
public string ServiceRole
{
get { return this._serviceRole; }
set { this._serviceRole = value; }
}
// Check to see if ServiceRole property is set
internal bool IsSetServiceRole()
{
return this._serviceRole != null;
}
///
/// Gets and sets the property Status.
///
/// The current status details about the cluster.
///
///
public ClusterStatus 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 StepConcurrencyLevel.
///
/// Specifies the number of steps that can be executed concurrently.
///
///
public int StepConcurrencyLevel
{
get { return this._stepConcurrencyLevel.GetValueOrDefault(); }
set { this._stepConcurrencyLevel = value; }
}
// Check to see if StepConcurrencyLevel property is set
internal bool IsSetStepConcurrencyLevel()
{
return this._stepConcurrencyLevel.HasValue;
}
///
/// Gets and sets the property Tags.
///
/// A list of tags associated with a cluster.
///
///
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property TerminationProtected.
///
/// Indicates whether Amazon EMR will lock the cluster to prevent the Amazon EC2 instances
/// from being terminated by an API call or user intervention, or in the event of a cluster
/// 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;
}
///
/// Gets and sets the property VisibleToAllUsers.
///
/// Indicates whether the cluster is visible to IAM principals in the Amazon Web Services
/// account associated with the cluster. When true
, IAM principals in the
/// Amazon Web Services account can perform Amazon EMR cluster actions on the cluster
/// that their IAM policies allow. When false
, only the IAM principal that
/// created the cluster and the Amazon Web Services account root user can perform Amazon
/// EMR actions, regardless of IAM permissions policies attached to other IAM principals.
///
///
///
/// The default value is true
if a value is not provided when creating a
/// cluster using the Amazon EMR API RunJobFlow command, the CLI create-cluster
/// command, or the Amazon Web Services Management Console.
///
///
public bool VisibleToAllUsers
{
get { return this._visibleToAllUsers.GetValueOrDefault(); }
set { this._visibleToAllUsers = value; }
}
// Check to see if VisibleToAllUsers property is set
internal bool IsSetVisibleToAllUsers()
{
return this._visibleToAllUsers.HasValue;
}
}
}