com.amazonaws.services.ec2.model.ScheduledInstancesLaunchSpecification Maven / Gradle / Ivy
Show all versions of aws-java-sdk-osgi Show documentation
/*
 * Copyright 2010-2016 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.ec2.model;
import java.io.Serializable;
/**
 * 
 * Describes the launch specification for a Scheduled Instance.
 * 
 * 
 * If you are launching the Scheduled Instance in EC2-VPC, you must specify the
 * ID of the subnet. You can specify the subnet using either
 * SubnetId or NetworkInterface.
 * 
 */
public class ScheduledInstancesLaunchSpecification implements Serializable,
        Cloneable {
    /**
     * 
     * The ID of the Amazon Machine Image (AMI).
     * 
     */
    private String imageId;
    /**
     * 
     * The name of the key pair.
     * 
     */
    private String keyName;
    /**
     * 
     * The IDs of one or more security groups.
     * 
     */
    private com.amazonaws.internal.SdkInternalList securityGroupIds;
    /**
     * 
     * The base64-encoded MIME user data.
     * 
     */
    private String userData;
    /**
     * 
     * The placement information.
     * 
     */
    private ScheduledInstancesPlacement placement;
    /**
     * 
     * The ID of the kernel.
     * 
     */
    private String kernelId;
    /**
     * 
     * The instance type.
     * 
     */
    private String instanceType;
    /**
     * 
     * The ID of the RAM disk.
     * 
     */
    private String ramdiskId;
    /**
     * 
     * One or more block device mapping entries.
     * 
     */
    private com.amazonaws.internal.SdkInternalList blockDeviceMappings;
    /**
     * 
     * Enable or disable monitoring for the instances.
     * 
     */
    private ScheduledInstancesMonitoring monitoring;
    /**
     * 
     * The ID of the subnet in which to launch the instances.
     * 
     */
    private String subnetId;
    /**
     * 
     * One or more network interfaces.
     * 
     */
    private com.amazonaws.internal.SdkInternalList networkInterfaces;
    /**
     * 
     * The IAM instance profile.
     * 
     */
    private ScheduledInstancesIamInstanceProfile iamInstanceProfile;
    /**
     * 
     * Indicates whether the instances are optimized for EBS I/O. This
     * optimization provides dedicated throughput to Amazon EBS and an optimized
     * configuration stack to provide optimal EBS I/O performance. This
     * optimization isn't available with all instance types. Additional usage
     * charges apply when using an EBS-optimized instance.
     * 
     * 
     * Default: false
     * 
     */
    private Boolean ebsOptimized;
    /**
     * 
     * The ID of the Amazon Machine Image (AMI).
     * 
     * 
     * @param imageId
     *        The ID of the Amazon Machine Image (AMI).
     */
    public void setImageId(String imageId) {
        this.imageId = imageId;
    }
    /**
     * 
     * The ID of the Amazon Machine Image (AMI).
     * 
     * 
     * @return The ID of the Amazon Machine Image (AMI).
     */
    public String getImageId() {
        return this.imageId;
    }
    /**
     * 
     * The ID of the Amazon Machine Image (AMI).
     * 
     * 
     * @param imageId
     *        The ID of the Amazon Machine Image (AMI).
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withImageId(String imageId) {
        setImageId(imageId);
        return this;
    }
    /**
     * 
     * The name of the key pair.
     * 
     * 
     * @param keyName
     *        The name of the key pair.
     */
    public void setKeyName(String keyName) {
        this.keyName = keyName;
    }
    /**
     * 
     * The name of the key pair.
     * 
     * 
     * @return The name of the key pair.
     */
    public String getKeyName() {
        return this.keyName;
    }
    /**
     * 
     * The name of the key pair.
     * 
     * 
     * @param keyName
     *        The name of the key pair.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withKeyName(String keyName) {
        setKeyName(keyName);
        return this;
    }
    /**
     * 
     * The IDs of one or more security groups.
     * 
     * 
     * @return The IDs of one or more security groups.
     */
    public java.util.List getSecurityGroupIds() {
        if (securityGroupIds == null) {
            securityGroupIds = new com.amazonaws.internal.SdkInternalList();
        }
        return securityGroupIds;
    }
    /**
     * 
     * The IDs of one or more security groups.
     * 
     * 
     * @param securityGroupIds
     *        The IDs of one or more security groups.
     */
    public void setSecurityGroupIds(
            java.util.Collection securityGroupIds) {
        if (securityGroupIds == null) {
            this.securityGroupIds = null;
            return;
        }
        this.securityGroupIds = new com.amazonaws.internal.SdkInternalList(
                securityGroupIds);
    }
    /**
     * 
     * The IDs of one or more security groups.
     * 
     * 
     * 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 IDs of one or more security groups.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withSecurityGroupIds(
            String... securityGroupIds) {
        if (this.securityGroupIds == null) {
            setSecurityGroupIds(new com.amazonaws.internal.SdkInternalList(
                    securityGroupIds.length));
        }
        for (String ele : securityGroupIds) {
            this.securityGroupIds.add(ele);
        }
        return this;
    }
    /**
     * 
     * The IDs of one or more security groups.
     * 
     * 
     * @param securityGroupIds
     *        The IDs of one or more security groups.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withSecurityGroupIds(
            java.util.Collection securityGroupIds) {
        setSecurityGroupIds(securityGroupIds);
        return this;
    }
    /**
     * 
     * The base64-encoded MIME user data.
     * 
     * 
     * @param userData
     *        The base64-encoded MIME user data.
     */
    public void setUserData(String userData) {
        this.userData = userData;
    }
    /**
     * 
     * The base64-encoded MIME user data.
     * 
     * 
     * @return The base64-encoded MIME user data.
     */
    public String getUserData() {
        return this.userData;
    }
    /**
     * 
     * The base64-encoded MIME user data.
     * 
     * 
     * @param userData
     *        The base64-encoded MIME user data.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withUserData(String userData) {
        setUserData(userData);
        return this;
    }
    /**
     * 
     * The placement information.
     * 
     * 
     * @param placement
     *        The placement information.
     */
    public void setPlacement(ScheduledInstancesPlacement placement) {
        this.placement = placement;
    }
    /**
     * 
     * The placement information.
     * 
     * 
     * @return The placement information.
     */
    public ScheduledInstancesPlacement getPlacement() {
        return this.placement;
    }
    /**
     * 
     * The placement information.
     * 
     * 
     * @param placement
     *        The placement information.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withPlacement(
            ScheduledInstancesPlacement placement) {
        setPlacement(placement);
        return this;
    }
    /**
     * 
     * The ID of the kernel.
     * 
     * 
     * @param kernelId
     *        The ID of the kernel.
     */
    public void setKernelId(String kernelId) {
        this.kernelId = kernelId;
    }
    /**
     * 
     * The ID of the kernel.
     * 
     * 
     * @return The ID of the kernel.
     */
    public String getKernelId() {
        return this.kernelId;
    }
    /**
     * 
     * The ID of the kernel.
     * 
     * 
     * @param kernelId
     *        The ID of the kernel.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withKernelId(String kernelId) {
        setKernelId(kernelId);
        return this;
    }
    /**
     * 
     * The instance type.
     * 
     * 
     * @param instanceType
     *        The instance type.
     */
    public void setInstanceType(String instanceType) {
        this.instanceType = instanceType;
    }
    /**
     * 
     * The instance type.
     * 
     * 
     * @return The instance type.
     */
    public String getInstanceType() {
        return this.instanceType;
    }
    /**
     * 
     * The instance type.
     * 
     * 
     * @param instanceType
     *        The instance type.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withInstanceType(
            String instanceType) {
        setInstanceType(instanceType);
        return this;
    }
    /**
     * 
     * The ID of the RAM disk.
     * 
     * 
     * @param ramdiskId
     *        The ID of the RAM disk.
     */
    public void setRamdiskId(String ramdiskId) {
        this.ramdiskId = ramdiskId;
    }
    /**
     * 
     * The ID of the RAM disk.
     * 
     * 
     * @return The ID of the RAM disk.
     */
    public String getRamdiskId() {
        return this.ramdiskId;
    }
    /**
     * 
     * The ID of the RAM disk.
     * 
     * 
     * @param ramdiskId
     *        The ID of the RAM disk.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withRamdiskId(String ramdiskId) {
        setRamdiskId(ramdiskId);
        return this;
    }
    /**
     * 
     * One or more block device mapping entries.
     * 
     * 
     * @return One or more block device mapping entries.
     */
    public java.util.List getBlockDeviceMappings() {
        if (blockDeviceMappings == null) {
            blockDeviceMappings = new com.amazonaws.internal.SdkInternalList();
        }
        return blockDeviceMappings;
    }
    /**
     * 
     * One or more block device mapping entries.
     * 
     * 
     * @param blockDeviceMappings
     *        One or more block device mapping entries.
     */
    public void setBlockDeviceMappings(
            java.util.Collection blockDeviceMappings) {
        if (blockDeviceMappings == null) {
            this.blockDeviceMappings = null;
            return;
        }
        this.blockDeviceMappings = new com.amazonaws.internal.SdkInternalList(
                blockDeviceMappings);
    }
    /**
     * 
     * One or more block device mapping entries.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if
     * any). Use {@link #setBlockDeviceMappings(java.util.Collection)} or
     * {@link #withBlockDeviceMappings(java.util.Collection)} if you want to
     * override the existing values.
     * 
     * 
     * @param blockDeviceMappings
     *        One or more block device mapping entries.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withBlockDeviceMappings(
            ScheduledInstancesBlockDeviceMapping... blockDeviceMappings) {
        if (this.blockDeviceMappings == null) {
            setBlockDeviceMappings(new com.amazonaws.internal.SdkInternalList(
                    blockDeviceMappings.length));
        }
        for (ScheduledInstancesBlockDeviceMapping ele : blockDeviceMappings) {
            this.blockDeviceMappings.add(ele);
        }
        return this;
    }
    /**
     * 
     * One or more block device mapping entries.
     * 
     * 
     * @param blockDeviceMappings
     *        One or more block device mapping entries.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withBlockDeviceMappings(
            java.util.Collection blockDeviceMappings) {
        setBlockDeviceMappings(blockDeviceMappings);
        return this;
    }
    /**
     * 
     * Enable or disable monitoring for the instances.
     * 
     * 
     * @param monitoring
     *        Enable or disable monitoring for the instances.
     */
    public void setMonitoring(ScheduledInstancesMonitoring monitoring) {
        this.monitoring = monitoring;
    }
    /**
     * 
     * Enable or disable monitoring for the instances.
     * 
     * 
     * @return Enable or disable monitoring for the instances.
     */
    public ScheduledInstancesMonitoring getMonitoring() {
        return this.monitoring;
    }
    /**
     * 
     * Enable or disable monitoring for the instances.
     * 
     * 
     * @param monitoring
     *        Enable or disable monitoring for the instances.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withMonitoring(
            ScheduledInstancesMonitoring monitoring) {
        setMonitoring(monitoring);
        return this;
    }
    /**
     * 
     * The ID of the subnet in which to launch the instances.
     * 
     * 
     * @param subnetId
     *        The ID of the subnet in which to launch the instances.
     */
    public void setSubnetId(String subnetId) {
        this.subnetId = subnetId;
    }
    /**
     * 
     * The ID of the subnet in which to launch the instances.
     * 
     * 
     * @return The ID of the subnet in which to launch the instances.
     */
    public String getSubnetId() {
        return this.subnetId;
    }
    /**
     * 
     * The ID of the subnet in which to launch the instances.
     * 
     * 
     * @param subnetId
     *        The ID of the subnet in which to launch the instances.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withSubnetId(String subnetId) {
        setSubnetId(subnetId);
        return this;
    }
    /**
     * 
     * One or more network interfaces.
     * 
     * 
     * @return One or more network interfaces.
     */
    public java.util.List getNetworkInterfaces() {
        if (networkInterfaces == null) {
            networkInterfaces = new com.amazonaws.internal.SdkInternalList();
        }
        return networkInterfaces;
    }
    /**
     * 
     * One or more network interfaces.
     * 
     * 
     * @param networkInterfaces
     *        One or more network interfaces.
     */
    public void setNetworkInterfaces(
            java.util.Collection networkInterfaces) {
        if (networkInterfaces == null) {
            this.networkInterfaces = null;
            return;
        }
        this.networkInterfaces = new com.amazonaws.internal.SdkInternalList(
                networkInterfaces);
    }
    /**
     * 
     * One or more network interfaces.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if
     * any). Use {@link #setNetworkInterfaces(java.util.Collection)} or
     * {@link #withNetworkInterfaces(java.util.Collection)} if you want to
     * override the existing values.
     * 
     * 
     * @param networkInterfaces
     *        One or more network interfaces.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withNetworkInterfaces(
            ScheduledInstancesNetworkInterface... networkInterfaces) {
        if (this.networkInterfaces == null) {
            setNetworkInterfaces(new com.amazonaws.internal.SdkInternalList(
                    networkInterfaces.length));
        }
        for (ScheduledInstancesNetworkInterface ele : networkInterfaces) {
            this.networkInterfaces.add(ele);
        }
        return this;
    }
    /**
     * 
     * One or more network interfaces.
     * 
     * 
     * @param networkInterfaces
     *        One or more network interfaces.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withNetworkInterfaces(
            java.util.Collection networkInterfaces) {
        setNetworkInterfaces(networkInterfaces);
        return this;
    }
    /**
     * 
     * The IAM instance profile.
     * 
     * 
     * @param iamInstanceProfile
     *        The IAM instance profile.
     */
    public void setIamInstanceProfile(
            ScheduledInstancesIamInstanceProfile iamInstanceProfile) {
        this.iamInstanceProfile = iamInstanceProfile;
    }
    /**
     * 
     * The IAM instance profile.
     * 
     * 
     * @return The IAM instance profile.
     */
    public ScheduledInstancesIamInstanceProfile getIamInstanceProfile() {
        return this.iamInstanceProfile;
    }
    /**
     * 
     * The IAM instance profile.
     * 
     * 
     * @param iamInstanceProfile
     *        The IAM instance profile.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withIamInstanceProfile(
            ScheduledInstancesIamInstanceProfile iamInstanceProfile) {
        setIamInstanceProfile(iamInstanceProfile);
        return this;
    }
    /**
     * 
     * Indicates whether the instances are optimized for EBS I/O. This
     * optimization provides dedicated throughput to Amazon EBS and an optimized
     * configuration stack to provide optimal EBS I/O performance. This
     * optimization isn't available with all instance types. Additional usage
     * charges apply when using an EBS-optimized instance.
     * 
     * 
     * Default: false
     * 
     * 
     * @param ebsOptimized
     *        Indicates whether the instances are optimized for EBS I/O. This
     *        optimization provides dedicated throughput to Amazon EBS and an
     *        optimized configuration stack to provide optimal EBS I/O
     *        performance. This optimization isn't available with all instance
     *        types. Additional usage charges apply when using an EBS-optimized
     *        instance.
     *        
     *        Default: false
     */
    public void setEbsOptimized(Boolean ebsOptimized) {
        this.ebsOptimized = ebsOptimized;
    }
    /**
     * 
     * Indicates whether the instances are optimized for EBS I/O. This
     * optimization provides dedicated throughput to Amazon EBS and an optimized
     * configuration stack to provide optimal EBS I/O performance. This
     * optimization isn't available with all instance types. Additional usage
     * charges apply when using an EBS-optimized instance.
     * 
     * 
     * Default: false
     * 
     * 
     * @return Indicates whether the instances are optimized for EBS I/O. This
     *         optimization provides dedicated throughput to Amazon EBS and an
     *         optimized configuration stack to provide optimal EBS I/O
     *         performance. This optimization isn't available with all instance
     *         types. Additional usage charges apply when using an EBS-optimized
     *         instance.
     *         
     *         Default: false
     */
    public Boolean getEbsOptimized() {
        return this.ebsOptimized;
    }
    /**
     * 
     * Indicates whether the instances are optimized for EBS I/O. This
     * optimization provides dedicated throughput to Amazon EBS and an optimized
     * configuration stack to provide optimal EBS I/O performance. This
     * optimization isn't available with all instance types. Additional usage
     * charges apply when using an EBS-optimized instance.
     * 
     * 
     * Default: false
     * 
     * 
     * @param ebsOptimized
     *        Indicates whether the instances are optimized for EBS I/O. This
     *        optimization provides dedicated throughput to Amazon EBS and an
     *        optimized configuration stack to provide optimal EBS I/O
     *        performance. This optimization isn't available with all instance
     *        types. Additional usage charges apply when using an EBS-optimized
     *        instance.
     *        
     *        Default: false
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public ScheduledInstancesLaunchSpecification withEbsOptimized(
            Boolean ebsOptimized) {
        setEbsOptimized(ebsOptimized);
        return this;
    }
    /**
     * 
     * Indicates whether the instances are optimized for EBS I/O. This
     * optimization provides dedicated throughput to Amazon EBS and an optimized
     * configuration stack to provide optimal EBS I/O performance. This
     * optimization isn't available with all instance types. Additional usage
     * charges apply when using an EBS-optimized instance.
     * 
     * 
     * Default: false
     * 
     * 
     * @return Indicates whether the instances are optimized for EBS I/O. This
     *         optimization provides dedicated throughput to Amazon EBS and an
     *         optimized configuration stack to provide optimal EBS I/O
     *         performance. This optimization isn't available with all instance
     *         types. Additional usage charges apply when using an EBS-optimized
     *         instance.
     *         
     *         Default: false
     */
    public Boolean isEbsOptimized() {
        return this.ebsOptimized;
    }
    /**
     * Returns a string representation of this object; useful for testing and
     * debugging.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getImageId() != null)
            sb.append("ImageId: " + getImageId() + ",");
        if (getKeyName() != null)
            sb.append("KeyName: " + getKeyName() + ",");
        if (getSecurityGroupIds() != null)
            sb.append("SecurityGroupIds: " + getSecurityGroupIds() + ",");
        if (getUserData() != null)
            sb.append("UserData: " + getUserData() + ",");
        if (getPlacement() != null)
            sb.append("Placement: " + getPlacement() + ",");
        if (getKernelId() != null)
            sb.append("KernelId: " + getKernelId() + ",");
        if (getInstanceType() != null)
            sb.append("InstanceType: " + getInstanceType() + ",");
        if (getRamdiskId() != null)
            sb.append("RamdiskId: " + getRamdiskId() + ",");
        if (getBlockDeviceMappings() != null)
            sb.append("BlockDeviceMappings: " + getBlockDeviceMappings() + ",");
        if (getMonitoring() != null)
            sb.append("Monitoring: " + getMonitoring() + ",");
        if (getSubnetId() != null)
            sb.append("SubnetId: " + getSubnetId() + ",");
        if (getNetworkInterfaces() != null)
            sb.append("NetworkInterfaces: " + getNetworkInterfaces() + ",");
        if (getIamInstanceProfile() != null)
            sb.append("IamInstanceProfile: " + getIamInstanceProfile() + ",");
        if (getEbsOptimized() != null)
            sb.append("EbsOptimized: " + getEbsOptimized());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof ScheduledInstancesLaunchSpecification == false)
            return false;
        ScheduledInstancesLaunchSpecification other = (ScheduledInstancesLaunchSpecification) obj;
        if (other.getImageId() == null ^ this.getImageId() == null)
            return false;
        if (other.getImageId() != null
                && other.getImageId().equals(this.getImageId()) == false)
            return false;
        if (other.getKeyName() == null ^ this.getKeyName() == null)
            return false;
        if (other.getKeyName() != null
                && other.getKeyName().equals(this.getKeyName()) == 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.getUserData() == null ^ this.getUserData() == null)
            return false;
        if (other.getUserData() != null
                && other.getUserData().equals(this.getUserData()) == false)
            return false;
        if (other.getPlacement() == null ^ this.getPlacement() == null)
            return false;
        if (other.getPlacement() != null
                && other.getPlacement().equals(this.getPlacement()) == false)
            return false;
        if (other.getKernelId() == null ^ this.getKernelId() == null)
            return false;
        if (other.getKernelId() != null
                && other.getKernelId().equals(this.getKernelId()) == false)
            return false;
        if (other.getInstanceType() == null ^ this.getInstanceType() == null)
            return false;
        if (other.getInstanceType() != null
                && other.getInstanceType().equals(this.getInstanceType()) == false)
            return false;
        if (other.getRamdiskId() == null ^ this.getRamdiskId() == null)
            return false;
        if (other.getRamdiskId() != null
                && other.getRamdiskId().equals(this.getRamdiskId()) == false)
            return false;
        if (other.getBlockDeviceMappings() == null
                ^ this.getBlockDeviceMappings() == null)
            return false;
        if (other.getBlockDeviceMappings() != null
                && other.getBlockDeviceMappings().equals(
                        this.getBlockDeviceMappings()) == false)
            return false;
        if (other.getMonitoring() == null ^ this.getMonitoring() == null)
            return false;
        if (other.getMonitoring() != null
                && other.getMonitoring().equals(this.getMonitoring()) == false)
            return false;
        if (other.getSubnetId() == null ^ this.getSubnetId() == null)
            return false;
        if (other.getSubnetId() != null
                && other.getSubnetId().equals(this.getSubnetId()) == false)
            return false;
        if (other.getNetworkInterfaces() == null
                ^ this.getNetworkInterfaces() == null)
            return false;
        if (other.getNetworkInterfaces() != null
                && other.getNetworkInterfaces().equals(
                        this.getNetworkInterfaces()) == false)
            return false;
        if (other.getIamInstanceProfile() == null
                ^ this.getIamInstanceProfile() == null)
            return false;
        if (other.getIamInstanceProfile() != null
                && other.getIamInstanceProfile().equals(
                        this.getIamInstanceProfile()) == false)
            return false;
        if (other.getEbsOptimized() == null ^ this.getEbsOptimized() == null)
            return false;
        if (other.getEbsOptimized() != null
                && other.getEbsOptimized().equals(this.getEbsOptimized()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode
                + ((getImageId() == null) ? 0 : getImageId().hashCode());
        hashCode = prime * hashCode
                + ((getKeyName() == null) ? 0 : getKeyName().hashCode());
        hashCode = prime
                * hashCode
                + ((getSecurityGroupIds() == null) ? 0 : getSecurityGroupIds()
                        .hashCode());
        hashCode = prime * hashCode
                + ((getUserData() == null) ? 0 : getUserData().hashCode());
        hashCode = prime * hashCode
                + ((getPlacement() == null) ? 0 : getPlacement().hashCode());
        hashCode = prime * hashCode
                + ((getKernelId() == null) ? 0 : getKernelId().hashCode());
        hashCode = prime
                * hashCode
                + ((getInstanceType() == null) ? 0 : getInstanceType()
                        .hashCode());
        hashCode = prime * hashCode
                + ((getRamdiskId() == null) ? 0 : getRamdiskId().hashCode());
        hashCode = prime
                * hashCode
                + ((getBlockDeviceMappings() == null) ? 0
                        : getBlockDeviceMappings().hashCode());
        hashCode = prime * hashCode
                + ((getMonitoring() == null) ? 0 : getMonitoring().hashCode());
        hashCode = prime * hashCode
                + ((getSubnetId() == null) ? 0 : getSubnetId().hashCode());
        hashCode = prime
                * hashCode
                + ((getNetworkInterfaces() == null) ? 0
                        : getNetworkInterfaces().hashCode());
        hashCode = prime
                * hashCode
                + ((getIamInstanceProfile() == null) ? 0
                        : getIamInstanceProfile().hashCode());
        hashCode = prime
                * hashCode
                + ((getEbsOptimized() == null) ? 0 : getEbsOptimized()
                        .hashCode());
        return hashCode;
    }
    @Override
    public ScheduledInstancesLaunchSpecification clone() {
        try {
            return (ScheduledInstancesLaunchSpecification) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException(
                    "Got a CloneNotSupportedException from Object.clone() "
                            + "even though we're Cloneable!", e);
        }
    }
}