
com.amazonaws.services.batch.model.ComputeResource Maven / Gradle / Ivy
/*
* Copyright 2015-2020 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.batch.model;
import java.io.Serializable;
import javax.annotation.Generated;
import com.amazonaws.protocol.StructuredPojo;
import com.amazonaws.protocol.ProtocolMarshaller;
/**
*
* An object representing an AWS Batch compute resource.
*
*
* @see AWS API
* Documentation
*/
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class ComputeResource implements Serializable, Cloneable, StructuredPojo {
/**
*
* The type of compute environment: EC2
or SPOT
.
*
*/
private String type;
/**
*
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting instance
* type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best fitting
* instance type, waiting for additional capacity if it's not available. This allocation strategy keeps costs lower
* but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the Spot Fleet IAM Role must
* be specified. BEST_FIT_PROGRESSIVE
will select additional instance types that are large enough to
* meet the requirements of the jobs in the queue, with a preference for instance types with a lower cost per vCPU.
* SPOT_CAPACITY_OPTIMIZED
is only available for Spot Instance compute resources and will select
* additional instance types that are large enough to meet the requirements of the jobs in the queue, with a
* preference for instance types that are less likely to be interrupted. For more information, see Allocation Strategies
* in the AWS Batch User Guide.
*
*/
private String allocationStrategy;
/**
*
* The minimum number of Amazon EC2 vCPUs that an environment should maintain (even if the compute environment is
* DISABLED
).
*
*/
private Integer minvCpus;
/**
*
* The maximum number of Amazon EC2 vCPUs that an environment can reach.
*
*/
private Integer maxvCpus;
/**
*
* The desired number of Amazon EC2 vCPUS in the compute environment.
*
*/
private Integer desiredvCpus;
/**
*
* The instances types that may be launched. You can specify instance families to launch any instance type within
* those families (for example, c5
or p3
), or you can specify specific sizes within a
* family (such as c5.8xlarge
). You can also choose optimal
to pick instance types (from
* the C, M, and R instance families) on the fly that match the demand of your job queues.
*
*/
private java.util.List instanceTypes;
/**
*
* The Amazon Machine Image (AMI) ID used for instances launched in the compute environment.
*
*/
private String imageId;
/**
*
* The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the Amazon
* VPC User Guide.
*
*/
private java.util.List subnets;
/**
*
* The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template referenced
* in launchTemplate
. If security groups are specified using both securityGroupIds
and
* launchTemplate
, the values in securityGroupIds
will be used.
*
*/
private java.util.List securityGroupIds;
/**
*
* The Amazon EC2 key pair that is used for instances launched in the compute environment.
*
*/
private String ec2KeyPair;
/**
*
* The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. You can specify the
* short name or full Amazon Resource Name (ARN) of an instance profile. For example,
* ecsInstanceRole
or
* arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
. For more
* information, see Amazon ECS
* Instance Role in the AWS Batch User Guide.
*
*/
private String instanceRole;
/**
*
* Key-value pair tags to be applied to resources that are launched in the compute environment. For AWS Batch, these
* take the form of "String1": "String2", where String1 is the tag key and String2 is the tag value—for example, {
* "Name": "AWS Batch Instance - C4OnDemand" }.
*
*/
private java.util.Map tags;
/**
*
* The Amazon EC2 placement group to associate with your compute resources. If you intend to submit multi-node
* parallel jobs to your compute environment, you should consider creating a cluster placement group and associate
* it with your compute resources. This keeps your multi-node parallel job on a logical grouping of instances within
* a single Availability Zone with high network flow potential. For more information, see Placement Groups in the
* Amazon EC2 User Guide for Linux Instances.
*
*/
private String placementGroup;
/**
*
* The maximum percentage that a Spot Instance price can be when compared with the On-Demand price for that instance
* type before instances are launched. For example, if your maximum percentage is 20%, then the Spot price must be
* below 20% of the current On-Demand price for that Amazon EC2 instance. You always pay the lowest (market) price
* and never more than your maximum percentage. If you leave this field empty, the default value is 100% of the
* On-Demand price.
*
*/
private Integer bidPercentage;
/**
*
* The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT
compute
* environment. This role is required if the allocation strategy set to BEST_FIT
or if the allocation
* strategy is not specified. For more information, see Amazon EC2 Spot Fleet Role
* in the AWS Batch User Guide.
*
*/
private String spotIamFleetRole;
/**
*
* The launch template to use for your compute resources. Any other compute resource parameters that you specify in
* a CreateComputeEnvironment API operation override the same parameters in the launch template. You must
* specify either the launch template ID or launch template name in the request, but not both. For more information,
* see Launch Template
* Support in the AWS Batch User Guide.
*
*/
private LaunchTemplateSpecification launchTemplate;
/**
*
* The type of compute environment: EC2
or SPOT
.
*
*
* @param type
* The type of compute environment: EC2
or SPOT
.
* @see CRType
*/
public void setType(String type) {
this.type = type;
}
/**
*
* The type of compute environment: EC2
or SPOT
.
*
*
* @return The type of compute environment: EC2
or SPOT
.
* @see CRType
*/
public String getType() {
return this.type;
}
/**
*
* The type of compute environment: EC2
or SPOT
.
*
*
* @param type
* The type of compute environment: EC2
or SPOT
.
* @return Returns a reference to this object so that method calls can be chained together.
* @see CRType
*/
public ComputeResource withType(String type) {
setType(type);
return this;
}
/**
*
* The type of compute environment: EC2
or SPOT
.
*
*
* @param type
* The type of compute environment: EC2
or SPOT
.
* @see CRType
*/
public void setType(CRType type) {
withType(type);
}
/**
*
* The type of compute environment: EC2
or SPOT
.
*
*
* @param type
* The type of compute environment: EC2
or SPOT
.
* @return Returns a reference to this object so that method calls can be chained together.
* @see CRType
*/
public ComputeResource withType(CRType type) {
this.type = type.toString();
return this;
}
/**
*
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting instance
* type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best fitting
* instance type, waiting for additional capacity if it's not available. This allocation strategy keeps costs lower
* but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the Spot Fleet IAM Role must
* be specified. BEST_FIT_PROGRESSIVE
will select additional instance types that are large enough to
* meet the requirements of the jobs in the queue, with a preference for instance types with a lower cost per vCPU.
* SPOT_CAPACITY_OPTIMIZED
is only available for Spot Instance compute resources and will select
* additional instance types that are large enough to meet the requirements of the jobs in the queue, with a
* preference for instance types that are less likely to be interrupted. For more information, see Allocation Strategies
* in the AWS Batch User Guide.
*
*
* @param allocationStrategy
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting
* instance type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best
* fitting instance type, waiting for additional capacity if it's not available. This allocation strategy
* keeps costs lower but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the
* Spot Fleet IAM Role must be specified. BEST_FIT_PROGRESSIVE
will select additional instance
* types that are large enough to meet the requirements of the jobs in the queue, with a preference for
* instance types with a lower cost per vCPU. SPOT_CAPACITY_OPTIMIZED
is only available for Spot
* Instance compute resources and will select additional instance types that are large enough to meet the
* requirements of the jobs in the queue, with a preference for instance types that are less likely to be
* interrupted. For more information, see Allocation
* Strategies in the AWS Batch User Guide.
* @see CRAllocationStrategy
*/
public void setAllocationStrategy(String allocationStrategy) {
this.allocationStrategy = allocationStrategy;
}
/**
*
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting instance
* type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best fitting
* instance type, waiting for additional capacity if it's not available. This allocation strategy keeps costs lower
* but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the Spot Fleet IAM Role must
* be specified. BEST_FIT_PROGRESSIVE
will select additional instance types that are large enough to
* meet the requirements of the jobs in the queue, with a preference for instance types with a lower cost per vCPU.
* SPOT_CAPACITY_OPTIMIZED
is only available for Spot Instance compute resources and will select
* additional instance types that are large enough to meet the requirements of the jobs in the queue, with a
* preference for instance types that are less likely to be interrupted. For more information, see Allocation Strategies
* in the AWS Batch User Guide.
*
*
* @return The allocation strategy to use for the compute resource in case not enough instances of the best fitting
* instance type can be allocated. This could be due to availability of the instance type in the region or
* Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best
* fitting instance type, waiting for additional capacity if it's not available. This allocation strategy
* keeps costs lower but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the
* Spot Fleet IAM Role must be specified. BEST_FIT_PROGRESSIVE
will select additional instance
* types that are large enough to meet the requirements of the jobs in the queue, with a preference for
* instance types with a lower cost per vCPU. SPOT_CAPACITY_OPTIMIZED
is only available for
* Spot Instance compute resources and will select additional instance types that are large enough to meet
* the requirements of the jobs in the queue, with a preference for instance types that are less likely to
* be interrupted. For more information, see Allocation
* Strategies in the AWS Batch User Guide.
* @see CRAllocationStrategy
*/
public String getAllocationStrategy() {
return this.allocationStrategy;
}
/**
*
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting instance
* type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best fitting
* instance type, waiting for additional capacity if it's not available. This allocation strategy keeps costs lower
* but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the Spot Fleet IAM Role must
* be specified. BEST_FIT_PROGRESSIVE
will select additional instance types that are large enough to
* meet the requirements of the jobs in the queue, with a preference for instance types with a lower cost per vCPU.
* SPOT_CAPACITY_OPTIMIZED
is only available for Spot Instance compute resources and will select
* additional instance types that are large enough to meet the requirements of the jobs in the queue, with a
* preference for instance types that are less likely to be interrupted. For more information, see Allocation Strategies
* in the AWS Batch User Guide.
*
*
* @param allocationStrategy
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting
* instance type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best
* fitting instance type, waiting for additional capacity if it's not available. This allocation strategy
* keeps costs lower but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the
* Spot Fleet IAM Role must be specified. BEST_FIT_PROGRESSIVE
will select additional instance
* types that are large enough to meet the requirements of the jobs in the queue, with a preference for
* instance types with a lower cost per vCPU. SPOT_CAPACITY_OPTIMIZED
is only available for Spot
* Instance compute resources and will select additional instance types that are large enough to meet the
* requirements of the jobs in the queue, with a preference for instance types that are less likely to be
* interrupted. For more information, see Allocation
* Strategies in the AWS Batch User Guide.
* @return Returns a reference to this object so that method calls can be chained together.
* @see CRAllocationStrategy
*/
public ComputeResource withAllocationStrategy(String allocationStrategy) {
setAllocationStrategy(allocationStrategy);
return this;
}
/**
*
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting instance
* type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best fitting
* instance type, waiting for additional capacity if it's not available. This allocation strategy keeps costs lower
* but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the Spot Fleet IAM Role must
* be specified. BEST_FIT_PROGRESSIVE
will select additional instance types that are large enough to
* meet the requirements of the jobs in the queue, with a preference for instance types with a lower cost per vCPU.
* SPOT_CAPACITY_OPTIMIZED
is only available for Spot Instance compute resources and will select
* additional instance types that are large enough to meet the requirements of the jobs in the queue, with a
* preference for instance types that are less likely to be interrupted. For more information, see Allocation Strategies
* in the AWS Batch User Guide.
*
*
* @param allocationStrategy
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting
* instance type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best
* fitting instance type, waiting for additional capacity if it's not available. This allocation strategy
* keeps costs lower but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the
* Spot Fleet IAM Role must be specified. BEST_FIT_PROGRESSIVE
will select additional instance
* types that are large enough to meet the requirements of the jobs in the queue, with a preference for
* instance types with a lower cost per vCPU. SPOT_CAPACITY_OPTIMIZED
is only available for Spot
* Instance compute resources and will select additional instance types that are large enough to meet the
* requirements of the jobs in the queue, with a preference for instance types that are less likely to be
* interrupted. For more information, see Allocation
* Strategies in the AWS Batch User Guide.
* @see CRAllocationStrategy
*/
public void setAllocationStrategy(CRAllocationStrategy allocationStrategy) {
withAllocationStrategy(allocationStrategy);
}
/**
*
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting instance
* type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best fitting
* instance type, waiting for additional capacity if it's not available. This allocation strategy keeps costs lower
* but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the Spot Fleet IAM Role must
* be specified. BEST_FIT_PROGRESSIVE
will select additional instance types that are large enough to
* meet the requirements of the jobs in the queue, with a preference for instance types with a lower cost per vCPU.
* SPOT_CAPACITY_OPTIMIZED
is only available for Spot Instance compute resources and will select
* additional instance types that are large enough to meet the requirements of the jobs in the queue, with a
* preference for instance types that are less likely to be interrupted. For more information, see Allocation Strategies
* in the AWS Batch User Guide.
*
*
* @param allocationStrategy
* The allocation strategy to use for the compute resource in case not enough instances of the best fitting
* instance type can be allocated. This could be due to availability of the instance type in the region or Amazon EC2 service
* limits. If this is not specified, the default is BEST_FIT
, which will use only the best
* fitting instance type, waiting for additional capacity if it's not available. This allocation strategy
* keeps costs lower but can limit scaling. If you are using Spot Fleets with BEST_FIT
then the
* Spot Fleet IAM Role must be specified. BEST_FIT_PROGRESSIVE
will select additional instance
* types that are large enough to meet the requirements of the jobs in the queue, with a preference for
* instance types with a lower cost per vCPU. SPOT_CAPACITY_OPTIMIZED
is only available for Spot
* Instance compute resources and will select additional instance types that are large enough to meet the
* requirements of the jobs in the queue, with a preference for instance types that are less likely to be
* interrupted. For more information, see Allocation
* Strategies in the AWS Batch User Guide.
* @return Returns a reference to this object so that method calls can be chained together.
* @see CRAllocationStrategy
*/
public ComputeResource withAllocationStrategy(CRAllocationStrategy allocationStrategy) {
this.allocationStrategy = allocationStrategy.toString();
return this;
}
/**
*
* The minimum number of Amazon EC2 vCPUs that an environment should maintain (even if the compute environment is
* DISABLED
).
*
*
* @param minvCpus
* The minimum number of Amazon EC2 vCPUs that an environment should maintain (even if the compute
* environment is DISABLED
).
*/
public void setMinvCpus(Integer minvCpus) {
this.minvCpus = minvCpus;
}
/**
*
* The minimum number of Amazon EC2 vCPUs that an environment should maintain (even if the compute environment is
* DISABLED
).
*
*
* @return The minimum number of Amazon EC2 vCPUs that an environment should maintain (even if the compute
* environment is DISABLED
).
*/
public Integer getMinvCpus() {
return this.minvCpus;
}
/**
*
* The minimum number of Amazon EC2 vCPUs that an environment should maintain (even if the compute environment is
* DISABLED
).
*
*
* @param minvCpus
* The minimum number of Amazon EC2 vCPUs that an environment should maintain (even if the compute
* environment is DISABLED
).
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withMinvCpus(Integer minvCpus) {
setMinvCpus(minvCpus);
return this;
}
/**
*
* The maximum number of Amazon EC2 vCPUs that an environment can reach.
*
*
* @param maxvCpus
* The maximum number of Amazon EC2 vCPUs that an environment can reach.
*/
public void setMaxvCpus(Integer maxvCpus) {
this.maxvCpus = maxvCpus;
}
/**
*
* The maximum number of Amazon EC2 vCPUs that an environment can reach.
*
*
* @return The maximum number of Amazon EC2 vCPUs that an environment can reach.
*/
public Integer getMaxvCpus() {
return this.maxvCpus;
}
/**
*
* The maximum number of Amazon EC2 vCPUs that an environment can reach.
*
*
* @param maxvCpus
* The maximum number of Amazon EC2 vCPUs that an environment can reach.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withMaxvCpus(Integer maxvCpus) {
setMaxvCpus(maxvCpus);
return this;
}
/**
*
* The desired number of Amazon EC2 vCPUS in the compute environment.
*
*
* @param desiredvCpus
* The desired number of Amazon EC2 vCPUS in the compute environment.
*/
public void setDesiredvCpus(Integer desiredvCpus) {
this.desiredvCpus = desiredvCpus;
}
/**
*
* The desired number of Amazon EC2 vCPUS in the compute environment.
*
*
* @return The desired number of Amazon EC2 vCPUS in the compute environment.
*/
public Integer getDesiredvCpus() {
return this.desiredvCpus;
}
/**
*
* The desired number of Amazon EC2 vCPUS in the compute environment.
*
*
* @param desiredvCpus
* The desired number of Amazon EC2 vCPUS in the compute environment.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withDesiredvCpus(Integer desiredvCpus) {
setDesiredvCpus(desiredvCpus);
return this;
}
/**
*
* The instances types that may be launched. You can specify instance families to launch any instance type within
* those families (for example, c5
or p3
), or you can specify specific sizes within a
* family (such as c5.8xlarge
). You can also choose optimal
to pick instance types (from
* the C, M, and R instance families) on the fly that match the demand of your job queues.
*
*
* @return The instances types that may be launched. You can specify instance families to launch any instance type
* within those families (for example, c5
or p3
), or you can specify specific
* sizes within a family (such as c5.8xlarge
). You can also choose optimal
to pick
* instance types (from the C, M, and R instance families) on the fly that match the demand of your job
* queues.
*/
public java.util.List getInstanceTypes() {
return instanceTypes;
}
/**
*
* The instances types that may be launched. You can specify instance families to launch any instance type within
* those families (for example, c5
or p3
), or you can specify specific sizes within a
* family (such as c5.8xlarge
). You can also choose optimal
to pick instance types (from
* the C, M, and R instance families) on the fly that match the demand of your job queues.
*
*
* @param instanceTypes
* The instances types that may be launched. You can specify instance families to launch any instance type
* within those families (for example, c5
or p3
), or you can specify specific sizes
* within a family (such as c5.8xlarge
). You can also choose optimal
to pick
* instance types (from the C, M, and R instance families) on the fly that match the demand of your job
* queues.
*/
public void setInstanceTypes(java.util.Collection instanceTypes) {
if (instanceTypes == null) {
this.instanceTypes = null;
return;
}
this.instanceTypes = new java.util.ArrayList(instanceTypes);
}
/**
*
* The instances types that may be launched. You can specify instance families to launch any instance type within
* those families (for example, c5
or p3
), or you can specify specific sizes within a
* family (such as c5.8xlarge
). You can also choose optimal
to pick instance types (from
* the C, M, and R instance families) on the fly that match the demand of your job queues.
*
*
* NOTE: This method appends the values to the existing list (if any). Use
* {@link #setInstanceTypes(java.util.Collection)} or {@link #withInstanceTypes(java.util.Collection)} if you want
* to override the existing values.
*
*
* @param instanceTypes
* The instances types that may be launched. You can specify instance families to launch any instance type
* within those families (for example, c5
or p3
), or you can specify specific sizes
* within a family (such as c5.8xlarge
). You can also choose optimal
to pick
* instance types (from the C, M, and R instance families) on the fly that match the demand of your job
* queues.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withInstanceTypes(String... instanceTypes) {
if (this.instanceTypes == null) {
setInstanceTypes(new java.util.ArrayList(instanceTypes.length));
}
for (String ele : instanceTypes) {
this.instanceTypes.add(ele);
}
return this;
}
/**
*
* The instances types that may be launched. You can specify instance families to launch any instance type within
* those families (for example, c5
or p3
), or you can specify specific sizes within a
* family (such as c5.8xlarge
). You can also choose optimal
to pick instance types (from
* the C, M, and R instance families) on the fly that match the demand of your job queues.
*
*
* @param instanceTypes
* The instances types that may be launched. You can specify instance families to launch any instance type
* within those families (for example, c5
or p3
), or you can specify specific sizes
* within a family (such as c5.8xlarge
). You can also choose optimal
to pick
* instance types (from the C, M, and R instance families) on the fly that match the demand of your job
* queues.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withInstanceTypes(java.util.Collection instanceTypes) {
setInstanceTypes(instanceTypes);
return this;
}
/**
*
* The Amazon Machine Image (AMI) ID used for instances launched in the compute environment.
*
*
* @param imageId
* The Amazon Machine Image (AMI) ID used for instances launched in the compute environment.
*/
public void setImageId(String imageId) {
this.imageId = imageId;
}
/**
*
* The Amazon Machine Image (AMI) ID used for instances launched in the compute environment.
*
*
* @return The Amazon Machine Image (AMI) ID used for instances launched in the compute environment.
*/
public String getImageId() {
return this.imageId;
}
/**
*
* The Amazon Machine Image (AMI) ID used for instances launched in the compute environment.
*
*
* @param imageId
* The Amazon Machine Image (AMI) ID used for instances launched in the compute environment.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withImageId(String imageId) {
setImageId(imageId);
return this;
}
/**
*
* The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the Amazon
* VPC User Guide.
*
*
* @return The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the
* Amazon VPC User Guide.
*/
public java.util.List getSubnets() {
return subnets;
}
/**
*
* The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the Amazon
* VPC User Guide.
*
*
* @param subnets
* The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the
* Amazon VPC User Guide.
*/
public void setSubnets(java.util.Collection subnets) {
if (subnets == null) {
this.subnets = null;
return;
}
this.subnets = new java.util.ArrayList(subnets);
}
/**
*
* The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the Amazon
* VPC User Guide.
*
*
* NOTE: This method appends the values to the existing list (if any). Use
* {@link #setSubnets(java.util.Collection)} or {@link #withSubnets(java.util.Collection)} if you want to override
* the existing values.
*
*
* @param subnets
* The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the
* Amazon VPC User Guide.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withSubnets(String... subnets) {
if (this.subnets == null) {
setSubnets(new java.util.ArrayList(subnets.length));
}
for (String ele : subnets) {
this.subnets.add(ele);
}
return this;
}
/**
*
* The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the Amazon
* VPC User Guide.
*
*
* @param subnets
* The VPC subnets into which the compute resources are launched. For more information, see VPCs and Subnets in the
* Amazon VPC User Guide.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withSubnets(java.util.Collection subnets) {
setSubnets(subnets);
return this;
}
/**
*
* The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template referenced
* in launchTemplate
. If security groups are specified using both securityGroupIds
and
* launchTemplate
, the values in securityGroupIds
will be used.
*
*
* @return The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template
* referenced in launchTemplate
. If security groups are specified using both
* securityGroupIds
and launchTemplate
, the values in
* securityGroupIds
will be used.
*/
public java.util.List getSecurityGroupIds() {
return securityGroupIds;
}
/**
*
* The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template referenced
* in launchTemplate
. If security groups are specified using both securityGroupIds
and
* launchTemplate
, the values in securityGroupIds
will be used.
*
*
* @param securityGroupIds
* The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template
* referenced in launchTemplate
. If security groups are specified using both
* securityGroupIds
and launchTemplate
, the values in securityGroupIds
* will be used.
*/
public void setSecurityGroupIds(java.util.Collection securityGroupIds) {
if (securityGroupIds == null) {
this.securityGroupIds = null;
return;
}
this.securityGroupIds = new java.util.ArrayList(securityGroupIds);
}
/**
*
* The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template referenced
* in launchTemplate
. If security groups are specified using both securityGroupIds
and
* launchTemplate
, the values in securityGroupIds
will be used.
*
*
* NOTE: This method appends the values to the existing list (if any). Use
* {@link #setSecurityGroupIds(java.util.Collection)} or {@link #withSecurityGroupIds(java.util.Collection)} if you
* want to override the existing values.
*
*
* @param securityGroupIds
* The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template
* referenced in launchTemplate
. If security groups are specified using both
* securityGroupIds
and launchTemplate
, the values in securityGroupIds
* will be used.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withSecurityGroupIds(String... securityGroupIds) {
if (this.securityGroupIds == null) {
setSecurityGroupIds(new java.util.ArrayList(securityGroupIds.length));
}
for (String ele : securityGroupIds) {
this.securityGroupIds.add(ele);
}
return this;
}
/**
*
* The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template referenced
* in launchTemplate
. If security groups are specified using both securityGroupIds
and
* launchTemplate
, the values in securityGroupIds
will be used.
*
*
* @param securityGroupIds
* The Amazon EC2 security groups associated with instances launched in the compute environment. One or more
* security groups must be specified, either in securityGroupIds
or using a launch template
* referenced in launchTemplate
. If security groups are specified using both
* securityGroupIds
and launchTemplate
, the values in securityGroupIds
* will be used.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withSecurityGroupIds(java.util.Collection securityGroupIds) {
setSecurityGroupIds(securityGroupIds);
return this;
}
/**
*
* The Amazon EC2 key pair that is used for instances launched in the compute environment.
*
*
* @param ec2KeyPair
* The Amazon EC2 key pair that is used for instances launched in the compute environment.
*/
public void setEc2KeyPair(String ec2KeyPair) {
this.ec2KeyPair = ec2KeyPair;
}
/**
*
* The Amazon EC2 key pair that is used for instances launched in the compute environment.
*
*
* @return The Amazon EC2 key pair that is used for instances launched in the compute environment.
*/
public String getEc2KeyPair() {
return this.ec2KeyPair;
}
/**
*
* The Amazon EC2 key pair that is used for instances launched in the compute environment.
*
*
* @param ec2KeyPair
* The Amazon EC2 key pair that is used for instances launched in the compute environment.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withEc2KeyPair(String ec2KeyPair) {
setEc2KeyPair(ec2KeyPair);
return this;
}
/**
*
* The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. You can specify the
* short name or full Amazon Resource Name (ARN) of an instance profile. For example,
* ecsInstanceRole
or
* arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
. For more
* information, see Amazon ECS
* Instance Role in the AWS Batch User Guide.
*
*
* @param instanceRole
* The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. You can specify
* the short name or full Amazon Resource Name (ARN) of an instance profile. For example,
* ecsInstanceRole
or
* arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
. For more
* information, see Amazon ECS Instance
* Role in the AWS Batch User Guide.
*/
public void setInstanceRole(String instanceRole) {
this.instanceRole = instanceRole;
}
/**
*
* The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. You can specify the
* short name or full Amazon Resource Name (ARN) of an instance profile. For example,
* ecsInstanceRole
or
* arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
. For more
* information, see Amazon ECS
* Instance Role in the AWS Batch User Guide.
*
*
* @return The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. You can specify
* the short name or full Amazon Resource Name (ARN) of an instance profile. For example,
* ecsInstanceRole
or
* arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
. For
* more information, see Amazon ECS Instance
* Role in the AWS Batch User Guide.
*/
public String getInstanceRole() {
return this.instanceRole;
}
/**
*
* The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. You can specify the
* short name or full Amazon Resource Name (ARN) of an instance profile. For example,
* ecsInstanceRole
or
* arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
. For more
* information, see Amazon ECS
* Instance Role in the AWS Batch User Guide.
*
*
* @param instanceRole
* The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. You can specify
* the short name or full Amazon Resource Name (ARN) of an instance profile. For example,
* ecsInstanceRole
or
* arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
. For more
* information, see Amazon ECS Instance
* Role in the AWS Batch User Guide.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withInstanceRole(String instanceRole) {
setInstanceRole(instanceRole);
return this;
}
/**
*
* Key-value pair tags to be applied to resources that are launched in the compute environment. For AWS Batch, these
* take the form of "String1": "String2", where String1 is the tag key and String2 is the tag value—for example, {
* "Name": "AWS Batch Instance - C4OnDemand" }.
*
*
* @return Key-value pair tags to be applied to resources that are launched in the compute environment. For AWS
* Batch, these take the form of "String1": "String2", where String1 is the tag key and String2 is the tag
* value—for example, { "Name": "AWS Batch Instance - C4OnDemand" }.
*/
public java.util.Map getTags() {
return tags;
}
/**
*
* Key-value pair tags to be applied to resources that are launched in the compute environment. For AWS Batch, these
* take the form of "String1": "String2", where String1 is the tag key and String2 is the tag value—for example, {
* "Name": "AWS Batch Instance - C4OnDemand" }.
*
*
* @param tags
* Key-value pair tags to be applied to resources that are launched in the compute environment. For AWS
* Batch, these take the form of "String1": "String2", where String1 is the tag key and String2 is the tag
* value—for example, { "Name": "AWS Batch Instance - C4OnDemand" }.
*/
public void setTags(java.util.Map tags) {
this.tags = tags;
}
/**
*
* Key-value pair tags to be applied to resources that are launched in the compute environment. For AWS Batch, these
* take the form of "String1": "String2", where String1 is the tag key and String2 is the tag value—for example, {
* "Name": "AWS Batch Instance - C4OnDemand" }.
*
*
* @param tags
* Key-value pair tags to be applied to resources that are launched in the compute environment. For AWS
* Batch, these take the form of "String1": "String2", where String1 is the tag key and String2 is the tag
* value—for example, { "Name": "AWS Batch Instance - C4OnDemand" }.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withTags(java.util.Map tags) {
setTags(tags);
return this;
}
/**
* Add a single Tags entry
*
* @see ComputeResource#withTags
* @returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource addTagsEntry(String key, String value) {
if (null == this.tags) {
this.tags = new java.util.HashMap();
}
if (this.tags.containsKey(key))
throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided.");
this.tags.put(key, value);
return this;
}
/**
* Removes all the entries added into Tags.
*
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource clearTagsEntries() {
this.tags = null;
return this;
}
/**
*
* The Amazon EC2 placement group to associate with your compute resources. If you intend to submit multi-node
* parallel jobs to your compute environment, you should consider creating a cluster placement group and associate
* it with your compute resources. This keeps your multi-node parallel job on a logical grouping of instances within
* a single Availability Zone with high network flow potential. For more information, see Placement Groups in the
* Amazon EC2 User Guide for Linux Instances.
*
*
* @param placementGroup
* The Amazon EC2 placement group to associate with your compute resources. If you intend to submit
* multi-node parallel jobs to your compute environment, you should consider creating a cluster placement
* group and associate it with your compute resources. This keeps your multi-node parallel job on a logical
* grouping of instances within a single Availability Zone with high network flow potential. For more
* information, see Placement Groups in
* the Amazon EC2 User Guide for Linux Instances.
*/
public void setPlacementGroup(String placementGroup) {
this.placementGroup = placementGroup;
}
/**
*
* The Amazon EC2 placement group to associate with your compute resources. If you intend to submit multi-node
* parallel jobs to your compute environment, you should consider creating a cluster placement group and associate
* it with your compute resources. This keeps your multi-node parallel job on a logical grouping of instances within
* a single Availability Zone with high network flow potential. For more information, see Placement Groups in the
* Amazon EC2 User Guide for Linux Instances.
*
*
* @return The Amazon EC2 placement group to associate with your compute resources. If you intend to submit
* multi-node parallel jobs to your compute environment, you should consider creating a cluster placement
* group and associate it with your compute resources. This keeps your multi-node parallel job on a logical
* grouping of instances within a single Availability Zone with high network flow potential. For more
* information, see Placement Groups in
* the Amazon EC2 User Guide for Linux Instances.
*/
public String getPlacementGroup() {
return this.placementGroup;
}
/**
*
* The Amazon EC2 placement group to associate with your compute resources. If you intend to submit multi-node
* parallel jobs to your compute environment, you should consider creating a cluster placement group and associate
* it with your compute resources. This keeps your multi-node parallel job on a logical grouping of instances within
* a single Availability Zone with high network flow potential. For more information, see Placement Groups in the
* Amazon EC2 User Guide for Linux Instances.
*
*
* @param placementGroup
* The Amazon EC2 placement group to associate with your compute resources. If you intend to submit
* multi-node parallel jobs to your compute environment, you should consider creating a cluster placement
* group and associate it with your compute resources. This keeps your multi-node parallel job on a logical
* grouping of instances within a single Availability Zone with high network flow potential. For more
* information, see Placement Groups in
* the Amazon EC2 User Guide for Linux Instances.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withPlacementGroup(String placementGroup) {
setPlacementGroup(placementGroup);
return this;
}
/**
*
* The maximum percentage that a Spot Instance price can be when compared with the On-Demand price for that instance
* type before instances are launched. For example, if your maximum percentage is 20%, then the Spot price must be
* below 20% of the current On-Demand price for that Amazon EC2 instance. You always pay the lowest (market) price
* and never more than your maximum percentage. If you leave this field empty, the default value is 100% of the
* On-Demand price.
*
*
* @param bidPercentage
* The maximum percentage that a Spot Instance price can be when compared with the On-Demand price for that
* instance type before instances are launched. For example, if your maximum percentage is 20%, then the Spot
* price must be below 20% of the current On-Demand price for that Amazon EC2 instance. You always pay the
* lowest (market) price and never more than your maximum percentage. If you leave this field empty, the
* default value is 100% of the On-Demand price.
*/
public void setBidPercentage(Integer bidPercentage) {
this.bidPercentage = bidPercentage;
}
/**
*
* The maximum percentage that a Spot Instance price can be when compared with the On-Demand price for that instance
* type before instances are launched. For example, if your maximum percentage is 20%, then the Spot price must be
* below 20% of the current On-Demand price for that Amazon EC2 instance. You always pay the lowest (market) price
* and never more than your maximum percentage. If you leave this field empty, the default value is 100% of the
* On-Demand price.
*
*
* @return The maximum percentage that a Spot Instance price can be when compared with the On-Demand price for that
* instance type before instances are launched. For example, if your maximum percentage is 20%, then the
* Spot price must be below 20% of the current On-Demand price for that Amazon EC2 instance. You always pay
* the lowest (market) price and never more than your maximum percentage. If you leave this field empty, the
* default value is 100% of the On-Demand price.
*/
public Integer getBidPercentage() {
return this.bidPercentage;
}
/**
*
* The maximum percentage that a Spot Instance price can be when compared with the On-Demand price for that instance
* type before instances are launched. For example, if your maximum percentage is 20%, then the Spot price must be
* below 20% of the current On-Demand price for that Amazon EC2 instance. You always pay the lowest (market) price
* and never more than your maximum percentage. If you leave this field empty, the default value is 100% of the
* On-Demand price.
*
*
* @param bidPercentage
* The maximum percentage that a Spot Instance price can be when compared with the On-Demand price for that
* instance type before instances are launched. For example, if your maximum percentage is 20%, then the Spot
* price must be below 20% of the current On-Demand price for that Amazon EC2 instance. You always pay the
* lowest (market) price and never more than your maximum percentage. If you leave this field empty, the
* default value is 100% of the On-Demand price.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withBidPercentage(Integer bidPercentage) {
setBidPercentage(bidPercentage);
return this;
}
/**
*
* The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT
compute
* environment. This role is required if the allocation strategy set to BEST_FIT
or if the allocation
* strategy is not specified. For more information, see Amazon EC2 Spot Fleet Role
* in the AWS Batch User Guide.
*
*
* @param spotIamFleetRole
* The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT
* compute environment. This role is required if the allocation strategy set to BEST_FIT
or if
* the allocation strategy is not specified. For more information, see Amazon EC2 Spot Fleet
* Role in the AWS Batch User Guide.
*/
public void setSpotIamFleetRole(String spotIamFleetRole) {
this.spotIamFleetRole = spotIamFleetRole;
}
/**
*
* The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT
compute
* environment. This role is required if the allocation strategy set to BEST_FIT
or if the allocation
* strategy is not specified. For more information, see Amazon EC2 Spot Fleet Role
* in the AWS Batch User Guide.
*
*
* @return The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT
* compute environment. This role is required if the allocation strategy set to BEST_FIT
or if
* the allocation strategy is not specified. For more information, see Amazon EC2 Spot Fleet
* Role in the AWS Batch User Guide.
*/
public String getSpotIamFleetRole() {
return this.spotIamFleetRole;
}
/**
*
* The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT
compute
* environment. This role is required if the allocation strategy set to BEST_FIT
or if the allocation
* strategy is not specified. For more information, see Amazon EC2 Spot Fleet Role
* in the AWS Batch User Guide.
*
*
* @param spotIamFleetRole
* The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT
* compute environment. This role is required if the allocation strategy set to BEST_FIT
or if
* the allocation strategy is not specified. For more information, see Amazon EC2 Spot Fleet
* Role in the AWS Batch User Guide.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withSpotIamFleetRole(String spotIamFleetRole) {
setSpotIamFleetRole(spotIamFleetRole);
return this;
}
/**
*
* The launch template to use for your compute resources. Any other compute resource parameters that you specify in
* a CreateComputeEnvironment API operation override the same parameters in the launch template. You must
* specify either the launch template ID or launch template name in the request, but not both. For more information,
* see Launch Template
* Support in the AWS Batch User Guide.
*
*
* @param launchTemplate
* The launch template to use for your compute resources. Any other compute resource parameters that you
* specify in a CreateComputeEnvironment API operation override the same parameters in the launch
* template. You must specify either the launch template ID or launch template name in the request, but not
* both. For more information, see Launch Template
* Support in the AWS Batch User Guide.
*/
public void setLaunchTemplate(LaunchTemplateSpecification launchTemplate) {
this.launchTemplate = launchTemplate;
}
/**
*
* The launch template to use for your compute resources. Any other compute resource parameters that you specify in
* a CreateComputeEnvironment API operation override the same parameters in the launch template. You must
* specify either the launch template ID or launch template name in the request, but not both. For more information,
* see Launch Template
* Support in the AWS Batch User Guide.
*
*
* @return The launch template to use for your compute resources. Any other compute resource parameters that you
* specify in a CreateComputeEnvironment API operation override the same parameters in the launch
* template. You must specify either the launch template ID or launch template name in the request, but not
* both. For more information, see Launch Template
* Support in the AWS Batch User Guide.
*/
public LaunchTemplateSpecification getLaunchTemplate() {
return this.launchTemplate;
}
/**
*
* The launch template to use for your compute resources. Any other compute resource parameters that you specify in
* a CreateComputeEnvironment API operation override the same parameters in the launch template. You must
* specify either the launch template ID or launch template name in the request, but not both. For more information,
* see Launch Template
* Support in the AWS Batch User Guide.
*
*
* @param launchTemplate
* The launch template to use for your compute resources. Any other compute resource parameters that you
* specify in a CreateComputeEnvironment API operation override the same parameters in the launch
* template. You must specify either the launch template ID or launch template name in the request, but not
* both. For more information, see Launch Template
* Support in the AWS Batch User Guide.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public ComputeResource withLaunchTemplate(LaunchTemplateSpecification launchTemplate) {
setLaunchTemplate(launchTemplate);
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 (getType() != null)
sb.append("Type: ").append(getType()).append(",");
if (getAllocationStrategy() != null)
sb.append("AllocationStrategy: ").append(getAllocationStrategy()).append(",");
if (getMinvCpus() != null)
sb.append("MinvCpus: ").append(getMinvCpus()).append(",");
if (getMaxvCpus() != null)
sb.append("MaxvCpus: ").append(getMaxvCpus()).append(",");
if (getDesiredvCpus() != null)
sb.append("DesiredvCpus: ").append(getDesiredvCpus()).append(",");
if (getInstanceTypes() != null)
sb.append("InstanceTypes: ").append(getInstanceTypes()).append(",");
if (getImageId() != null)
sb.append("ImageId: ").append(getImageId()).append(",");
if (getSubnets() != null)
sb.append("Subnets: ").append(getSubnets()).append(",");
if (getSecurityGroupIds() != null)
sb.append("SecurityGroupIds: ").append(getSecurityGroupIds()).append(",");
if (getEc2KeyPair() != null)
sb.append("Ec2KeyPair: ").append(getEc2KeyPair()).append(",");
if (getInstanceRole() != null)
sb.append("InstanceRole: ").append(getInstanceRole()).append(",");
if (getTags() != null)
sb.append("Tags: ").append(getTags()).append(",");
if (getPlacementGroup() != null)
sb.append("PlacementGroup: ").append(getPlacementGroup()).append(",");
if (getBidPercentage() != null)
sb.append("BidPercentage: ").append(getBidPercentage()).append(",");
if (getSpotIamFleetRole() != null)
sb.append("SpotIamFleetRole: ").append(getSpotIamFleetRole()).append(",");
if (getLaunchTemplate() != null)
sb.append("LaunchTemplate: ").append(getLaunchTemplate());
sb.append("}");
return sb.toString();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (obj instanceof ComputeResource == false)
return false;
ComputeResource other = (ComputeResource) obj;
if (other.getType() == null ^ this.getType() == null)
return false;
if (other.getType() != null && other.getType().equals(this.getType()) == false)
return false;
if (other.getAllocationStrategy() == null ^ this.getAllocationStrategy() == null)
return false;
if (other.getAllocationStrategy() != null && other.getAllocationStrategy().equals(this.getAllocationStrategy()) == false)
return false;
if (other.getMinvCpus() == null ^ this.getMinvCpus() == null)
return false;
if (other.getMinvCpus() != null && other.getMinvCpus().equals(this.getMinvCpus()) == false)
return false;
if (other.getMaxvCpus() == null ^ this.getMaxvCpus() == null)
return false;
if (other.getMaxvCpus() != null && other.getMaxvCpus().equals(this.getMaxvCpus()) == false)
return false;
if (other.getDesiredvCpus() == null ^ this.getDesiredvCpus() == null)
return false;
if (other.getDesiredvCpus() != null && other.getDesiredvCpus().equals(this.getDesiredvCpus()) == false)
return false;
if (other.getInstanceTypes() == null ^ this.getInstanceTypes() == null)
return false;
if (other.getInstanceTypes() != null && other.getInstanceTypes().equals(this.getInstanceTypes()) == false)
return false;
if (other.getImageId() == null ^ this.getImageId() == null)
return false;
if (other.getImageId() != null && other.getImageId().equals(this.getImageId()) == false)
return false;
if (other.getSubnets() == null ^ this.getSubnets() == null)
return false;
if (other.getSubnets() != null && other.getSubnets().equals(this.getSubnets()) == false)
return false;
if (other.getSecurityGroupIds() == null ^ this.getSecurityGroupIds() == null)
return false;
if (other.getSecurityGroupIds() != null && other.getSecurityGroupIds().equals(this.getSecurityGroupIds()) == false)
return false;
if (other.getEc2KeyPair() == null ^ this.getEc2KeyPair() == null)
return false;
if (other.getEc2KeyPair() != null && other.getEc2KeyPair().equals(this.getEc2KeyPair()) == false)
return false;
if (other.getInstanceRole() == null ^ this.getInstanceRole() == null)
return false;
if (other.getInstanceRole() != null && other.getInstanceRole().equals(this.getInstanceRole()) == false)
return false;
if (other.getTags() == null ^ this.getTags() == null)
return false;
if (other.getTags() != null && other.getTags().equals(this.getTags()) == false)
return false;
if (other.getPlacementGroup() == null ^ this.getPlacementGroup() == null)
return false;
if (other.getPlacementGroup() != null && other.getPlacementGroup().equals(this.getPlacementGroup()) == false)
return false;
if (other.getBidPercentage() == null ^ this.getBidPercentage() == null)
return false;
if (other.getBidPercentage() != null && other.getBidPercentage().equals(this.getBidPercentage()) == false)
return false;
if (other.getSpotIamFleetRole() == null ^ this.getSpotIamFleetRole() == null)
return false;
if (other.getSpotIamFleetRole() != null && other.getSpotIamFleetRole().equals(this.getSpotIamFleetRole()) == false)
return false;
if (other.getLaunchTemplate() == null ^ this.getLaunchTemplate() == null)
return false;
if (other.getLaunchTemplate() != null && other.getLaunchTemplate().equals(this.getLaunchTemplate()) == false)
return false;
return true;
}
@Override
public int hashCode() {
final int prime = 31;
int hashCode = 1;
hashCode = prime * hashCode + ((getType() == null) ? 0 : getType().hashCode());
hashCode = prime * hashCode + ((getAllocationStrategy() == null) ? 0 : getAllocationStrategy().hashCode());
hashCode = prime * hashCode + ((getMinvCpus() == null) ? 0 : getMinvCpus().hashCode());
hashCode = prime * hashCode + ((getMaxvCpus() == null) ? 0 : getMaxvCpus().hashCode());
hashCode = prime * hashCode + ((getDesiredvCpus() == null) ? 0 : getDesiredvCpus().hashCode());
hashCode = prime * hashCode + ((getInstanceTypes() == null) ? 0 : getInstanceTypes().hashCode());
hashCode = prime * hashCode + ((getImageId() == null) ? 0 : getImageId().hashCode());
hashCode = prime * hashCode + ((getSubnets() == null) ? 0 : getSubnets().hashCode());
hashCode = prime * hashCode + ((getSecurityGroupIds() == null) ? 0 : getSecurityGroupIds().hashCode());
hashCode = prime * hashCode + ((getEc2KeyPair() == null) ? 0 : getEc2KeyPair().hashCode());
hashCode = prime * hashCode + ((getInstanceRole() == null) ? 0 : getInstanceRole().hashCode());
hashCode = prime * hashCode + ((getTags() == null) ? 0 : getTags().hashCode());
hashCode = prime * hashCode + ((getPlacementGroup() == null) ? 0 : getPlacementGroup().hashCode());
hashCode = prime * hashCode + ((getBidPercentage() == null) ? 0 : getBidPercentage().hashCode());
hashCode = prime * hashCode + ((getSpotIamFleetRole() == null) ? 0 : getSpotIamFleetRole().hashCode());
hashCode = prime * hashCode + ((getLaunchTemplate() == null) ? 0 : getLaunchTemplate().hashCode());
return hashCode;
}
@Override
public ComputeResource clone() {
try {
return (ComputeResource) 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.batch.model.transform.ComputeResourceMarshaller.getInstance().marshall(this, protocolMarshaller);
}
}