/* * Copyright 2018-2023 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. */ package com.amazonaws.services.elasticmapreduce.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** *
* 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. *
** The friendly name of the instance fleet. *
*/ private String name; /** ** The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. *
*/ private String instanceFleetType; /** *
* 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.
*
* 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.
*
* The instance type configurations that define the Amazon EC2 instances in the instance fleet. *
*/ private com.amazonaws.internal.SdkInternalList* The launch specification for the instance fleet. *
*/ private InstanceFleetProvisioningSpecifications launchSpecifications; /** ** The resize specification for the instance fleet. *
*/ private InstanceFleetResizingSpecifications resizeSpecifications; /** ** The friendly name of the instance fleet. *
* * @param name * The friendly name of the instance fleet. */ public void setName(String name) { this.name = name; } /** ** The friendly name of the instance fleet. *
* * @return The friendly name of the instance fleet. */ public String getName() { return this.name; } /** ** The friendly name of the instance fleet. *
* * @param name * The friendly name of the instance fleet. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceFleetConfig withName(String name) { setName(name); return this; } /** ** The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. *
* * @param instanceFleetType * The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. * @see InstanceFleetType */ public void setInstanceFleetType(String instanceFleetType) { this.instanceFleetType = instanceFleetType; } /** ** The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. *
* * @return The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. * @see InstanceFleetType */ public String getInstanceFleetType() { return this.instanceFleetType; } /** ** The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. *
* * @param instanceFleetType * The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. * @return Returns a reference to this object so that method calls can be chained together. * @see InstanceFleetType */ public InstanceFleetConfig withInstanceFleetType(String instanceFleetType) { setInstanceFleetType(instanceFleetType); return this; } /** ** The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. *
* * @param instanceFleetType * The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. * @see InstanceFleetType */ public void setInstanceFleetType(InstanceFleetType instanceFleetType) { withInstanceFleetType(instanceFleetType); } /** ** The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. *
* * @param instanceFleetType * The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. * @return Returns a reference to this object so that method calls can be chained together. * @see InstanceFleetType */ public InstanceFleetConfig withInstanceFleetType(InstanceFleetType instanceFleetType) { this.instanceFleetType = instanceFleetType.toString(); return this; } /** *
* 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.
*
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.
*
* 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.
*
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.
*
* 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.
*
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.
*
* 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.
*
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.
*
* 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.
*
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.
*
* 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.
*
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.
*
* The instance type configurations that define the Amazon EC2 instances in the instance fleet. *
* * @return The instance type configurations that define the Amazon EC2 instances in the instance fleet. */ public java.util.List* The instance type configurations that define the Amazon EC2 instances in the instance fleet. *
* * @param instanceTypeConfigs * The instance type configurations that define the Amazon EC2 instances in the instance fleet. */ public void setInstanceTypeConfigs(java.util.Collection* The instance type configurations that define the Amazon EC2 instances in the instance fleet. *
** NOTE: This method appends the values to the existing list (if any). Use * {@link #setInstanceTypeConfigs(java.util.Collection)} or {@link #withInstanceTypeConfigs(java.util.Collection)} * if you want to override the existing values. *
* * @param instanceTypeConfigs * The instance type configurations that define the Amazon EC2 instances in the instance fleet. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceFleetConfig withInstanceTypeConfigs(InstanceTypeConfig... instanceTypeConfigs) { if (this.instanceTypeConfigs == null) { setInstanceTypeConfigs(new com.amazonaws.internal.SdkInternalList* The instance type configurations that define the Amazon EC2 instances in the instance fleet. *
* * @param instanceTypeConfigs * The instance type configurations that define the Amazon EC2 instances in the instance fleet. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceFleetConfig withInstanceTypeConfigs(java.util.Collection* The launch specification for the instance fleet. *
* * @param launchSpecifications * The launch specification for the instance fleet. */ public void setLaunchSpecifications(InstanceFleetProvisioningSpecifications launchSpecifications) { this.launchSpecifications = launchSpecifications; } /** ** The launch specification for the instance fleet. *
* * @return The launch specification for the instance fleet. */ public InstanceFleetProvisioningSpecifications getLaunchSpecifications() { return this.launchSpecifications; } /** ** The launch specification for the instance fleet. *
* * @param launchSpecifications * The launch specification for the instance fleet. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceFleetConfig withLaunchSpecifications(InstanceFleetProvisioningSpecifications launchSpecifications) { setLaunchSpecifications(launchSpecifications); return this; } /** ** The resize specification for the instance fleet. *
* * @param resizeSpecifications * The resize specification for the instance fleet. */ public void setResizeSpecifications(InstanceFleetResizingSpecifications resizeSpecifications) { this.resizeSpecifications = resizeSpecifications; } /** ** The resize specification for the instance fleet. *
* * @return The resize specification for the instance fleet. */ public InstanceFleetResizingSpecifications getResizeSpecifications() { return this.resizeSpecifications; } /** ** The resize specification for the instance fleet. *
* * @param resizeSpecifications * The resize specification for the instance fleet. * @return Returns a reference to this object so that method calls can be chained together. */ public InstanceFleetConfig withResizeSpecifications(InstanceFleetResizingSpecifications resizeSpecifications) { setResizeSpecifications(resizeSpecifications); return this; } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getName() != null) sb.append("Name: ").append(getName()).append(","); if (getInstanceFleetType() != null) sb.append("InstanceFleetType: ").append(getInstanceFleetType()).append(","); if (getTargetOnDemandCapacity() != null) sb.append("TargetOnDemandCapacity: ").append(getTargetOnDemandCapacity()).append(","); if (getTargetSpotCapacity() != null) sb.append("TargetSpotCapacity: ").append(getTargetSpotCapacity()).append(","); if (getInstanceTypeConfigs() != null) sb.append("InstanceTypeConfigs: ").append(getInstanceTypeConfigs()).append(","); if (getLaunchSpecifications() != null) sb.append("LaunchSpecifications: ").append(getLaunchSpecifications()).append(","); if (getResizeSpecifications() != null) sb.append("ResizeSpecifications: ").append(getResizeSpecifications()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof InstanceFleetConfig == false) return false; InstanceFleetConfig other = (InstanceFleetConfig) obj; if (other.getName() == null ^ this.getName() == null) return false; if (other.getName() != null && other.getName().equals(this.getName()) == false) return false; if (other.getInstanceFleetType() == null ^ this.getInstanceFleetType() == null) return false; if (other.getInstanceFleetType() != null && other.getInstanceFleetType().equals(this.getInstanceFleetType()) == false) return false; if (other.getTargetOnDemandCapacity() == null ^ this.getTargetOnDemandCapacity() == null) return false; if (other.getTargetOnDemandCapacity() != null && other.getTargetOnDemandCapacity().equals(this.getTargetOnDemandCapacity()) == false) return false; if (other.getTargetSpotCapacity() == null ^ this.getTargetSpotCapacity() == null) return false; if (other.getTargetSpotCapacity() != null && other.getTargetSpotCapacity().equals(this.getTargetSpotCapacity()) == false) return false; if (other.getInstanceTypeConfigs() == null ^ this.getInstanceTypeConfigs() == null) return false; if (other.getInstanceTypeConfigs() != null && other.getInstanceTypeConfigs().equals(this.getInstanceTypeConfigs()) == false) return false; if (other.getLaunchSpecifications() == null ^ this.getLaunchSpecifications() == null) return false; if (other.getLaunchSpecifications() != null && other.getLaunchSpecifications().equals(this.getLaunchSpecifications()) == false) return false; if (other.getResizeSpecifications() == null ^ this.getResizeSpecifications() == null) return false; if (other.getResizeSpecifications() != null && other.getResizeSpecifications().equals(this.getResizeSpecifications()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getName() == null) ? 0 : getName().hashCode()); hashCode = prime * hashCode + ((getInstanceFleetType() == null) ? 0 : getInstanceFleetType().hashCode()); hashCode = prime * hashCode + ((getTargetOnDemandCapacity() == null) ? 0 : getTargetOnDemandCapacity().hashCode()); hashCode = prime * hashCode + ((getTargetSpotCapacity() == null) ? 0 : getTargetSpotCapacity().hashCode()); hashCode = prime * hashCode + ((getInstanceTypeConfigs() == null) ? 0 : getInstanceTypeConfigs().hashCode()); hashCode = prime * hashCode + ((getLaunchSpecifications() == null) ? 0 : getLaunchSpecifications().hashCode()); hashCode = prime * hashCode + ((getResizeSpecifications() == null) ? 0 : getResizeSpecifications().hashCode()); return hashCode; } @Override public InstanceFleetConfig clone() { try { return (InstanceFleetConfig) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e); } } @com.amazonaws.annotation.SdkInternalApi @Override public void marshall(ProtocolMarshaller protocolMarshaller) { com.amazonaws.services.elasticmapreduce.model.transform.InstanceFleetConfigMarshaller.getInstance().marshall(this, protocolMarshaller); } }