com.amazonaws.services.ec2.model.InstanceAttribute Maven / Gradle / Ivy
Show all versions of aws-java-sdk-ec2 Show documentation
/*
 * Copyright 2011-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 an instance attribute.
 * 
 */
public class InstanceAttribute implements Serializable, Cloneable {
    /**
     * 
     * The ID of the instance.
     * 
     */
    private String instanceId;
    /**
     * 
     * The instance type.
     * 
     */
    private String instanceType;
    /**
     * 
     * The kernel ID.
     * 
     */
    private String kernelId;
    /**
     * 
     * The RAM disk ID.
     * 
     */
    private String ramdiskId;
    /**
     * 
     * The user data.
     * 
     */
    private String userData;
    /**
     * 
     * If the value is true, you can't terminate the instance
     * through the Amazon EC2 console, CLI, or API; otherwise, you can.
     * 
     */
    private Boolean disableApiTermination;
    /**
     * 
     * Indicates whether an instance stops or terminates when you initiate
     * shutdown from the instance (using the operating system command for system
     * shutdown).
     * 
     */
    private String instanceInitiatedShutdownBehavior;
    /**
     * 
     * The name of the root device (for example, /dev/sda1 or
     * /dev/xvda).
     * 
     */
    private String rootDeviceName;
    /**
     * 
     * The block device mapping of the instance.
     * 
     */
    private com.amazonaws.internal.SdkInternalList blockDeviceMappings;
    /**
     * 
     * A list of product codes.
     * 
     */
    private com.amazonaws.internal.SdkInternalList productCodes;
    /**
     * 
     * Indicates whether the instance is optimized for EBS I/O.
     * 
     */
    private Boolean ebsOptimized;
    /**
     * 
     * Indicates whether enhanced networking with the Intel 82599 Virtual
     * Function interface is enabled.
     * 
     */
    private String sriovNetSupport;
    /**
     * 
     * Indicates whether enhanced networking with ENA is enabled.
     * 
     */
    private Boolean enaSupport;
    /**
     * 
     * Indicates whether source/destination checking is enabled. A value of
     * true means checking is enabled, and false means
     * checking is disabled. This value must be false for a NAT
     * instance to perform NAT.
     * 
     */
    private Boolean sourceDestCheck;
    /**
     * 
     * The security groups associated with the instance.
     * 
     */
    private com.amazonaws.internal.SdkInternalList groups;
    /**
     * 
     * The ID of the instance.
     * 
     * 
     * @param instanceId
     *        The ID of the instance.
     */
    public void setInstanceId(String instanceId) {
        this.instanceId = instanceId;
    }
    /**
     * 
     * The ID of the instance.
     * 
     * 
     * @return The ID of the instance.
     */
    public String getInstanceId() {
        return this.instanceId;
    }
    /**
     * 
     * The ID of the instance.
     * 
     * 
     * @param instanceId
     *        The ID of the instance.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withInstanceId(String instanceId) {
        setInstanceId(instanceId);
        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 InstanceAttribute withInstanceType(String instanceType) {
        setInstanceType(instanceType);
        return this;
    }
    /**
     * 
     * The kernel ID.
     * 
     * 
     * @param kernelId
     *        The kernel ID.
     */
    public void setKernelId(String kernelId) {
        this.kernelId = kernelId;
    }
    /**
     * 
     * The kernel ID.
     * 
     * 
     * @return The kernel ID.
     */
    public String getKernelId() {
        return this.kernelId;
    }
    /**
     * 
     * The kernel ID.
     * 
     * 
     * @param kernelId
     *        The kernel ID.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withKernelId(String kernelId) {
        setKernelId(kernelId);
        return this;
    }
    /**
     * 
     * The RAM disk ID.
     * 
     * 
     * @param ramdiskId
     *        The RAM disk ID.
     */
    public void setRamdiskId(String ramdiskId) {
        this.ramdiskId = ramdiskId;
    }
    /**
     * 
     * The RAM disk ID.
     * 
     * 
     * @return The RAM disk ID.
     */
    public String getRamdiskId() {
        return this.ramdiskId;
    }
    /**
     * 
     * The RAM disk ID.
     * 
     * 
     * @param ramdiskId
     *        The RAM disk ID.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withRamdiskId(String ramdiskId) {
        setRamdiskId(ramdiskId);
        return this;
    }
    /**
     * 
     * The user data.
     * 
     * 
     * @param userData
     *        The user data.
     */
    public void setUserData(String userData) {
        this.userData = userData;
    }
    /**
     * 
     * The user data.
     * 
     * 
     * @return The user data.
     */
    public String getUserData() {
        return this.userData;
    }
    /**
     * 
     * The user data.
     * 
     * 
     * @param userData
     *        The user data.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withUserData(String userData) {
        setUserData(userData);
        return this;
    }
    /**
     * 
     * If the value is true, you can't terminate the instance
     * through the Amazon EC2 console, CLI, or API; otherwise, you can.
     * 
     * 
     * @param disableApiTermination
     *        If the value is true, you can't terminate the
     *        instance through the Amazon EC2 console, CLI, or API; otherwise,
     *        you can.
     */
    public void setDisableApiTermination(Boolean disableApiTermination) {
        this.disableApiTermination = disableApiTermination;
    }
    /**
     * 
     * If the value is true, you can't terminate the instance
     * through the Amazon EC2 console, CLI, or API; otherwise, you can.
     * 
     * 
     * @return If the value is true, you can't terminate the
     *         instance through the Amazon EC2 console, CLI, or API; otherwise,
     *         you can.
     */
    public Boolean getDisableApiTermination() {
        return this.disableApiTermination;
    }
    /**
     * 
     * If the value is true, you can't terminate the instance
     * through the Amazon EC2 console, CLI, or API; otherwise, you can.
     * 
     * 
     * @param disableApiTermination
     *        If the value is true, you can't terminate the
     *        instance through the Amazon EC2 console, CLI, or API; otherwise,
     *        you can.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withDisableApiTermination(
            Boolean disableApiTermination) {
        setDisableApiTermination(disableApiTermination);
        return this;
    }
    /**
     * 
     * If the value is true, you can't terminate the instance
     * through the Amazon EC2 console, CLI, or API; otherwise, you can.
     * 
     * 
     * @return If the value is true, you can't terminate the
     *         instance through the Amazon EC2 console, CLI, or API; otherwise,
     *         you can.
     */
    public Boolean isDisableApiTermination() {
        return this.disableApiTermination;
    }
    /**
     * 
     * Indicates whether an instance stops or terminates when you initiate
     * shutdown from the instance (using the operating system command for system
     * shutdown).
     * 
     * 
     * @param instanceInitiatedShutdownBehavior
     *        Indicates whether an instance stops or terminates when you
     *        initiate shutdown from the instance (using the operating system
     *        command for system shutdown).
     */
    public void setInstanceInitiatedShutdownBehavior(
            String instanceInitiatedShutdownBehavior) {
        this.instanceInitiatedShutdownBehavior = instanceInitiatedShutdownBehavior;
    }
    /**
     * 
     * Indicates whether an instance stops or terminates when you initiate
     * shutdown from the instance (using the operating system command for system
     * shutdown).
     * 
     * 
     * @return Indicates whether an instance stops or terminates when you
     *         initiate shutdown from the instance (using the operating system
     *         command for system shutdown).
     */
    public String getInstanceInitiatedShutdownBehavior() {
        return this.instanceInitiatedShutdownBehavior;
    }
    /**
     * 
     * Indicates whether an instance stops or terminates when you initiate
     * shutdown from the instance (using the operating system command for system
     * shutdown).
     * 
     * 
     * @param instanceInitiatedShutdownBehavior
     *        Indicates whether an instance stops or terminates when you
     *        initiate shutdown from the instance (using the operating system
     *        command for system shutdown).
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withInstanceInitiatedShutdownBehavior(
            String instanceInitiatedShutdownBehavior) {
        setInstanceInitiatedShutdownBehavior(instanceInitiatedShutdownBehavior);
        return this;
    }
    /**
     * 
     * The name of the root device (for example, /dev/sda1 or
     * /dev/xvda).
     * 
     * 
     * @param rootDeviceName
     *        The name of the root device (for example, /dev/sda1
     *        or /dev/xvda).
     */
    public void setRootDeviceName(String rootDeviceName) {
        this.rootDeviceName = rootDeviceName;
    }
    /**
     * 
     * The name of the root device (for example, /dev/sda1 or
     * /dev/xvda).
     * 
     * 
     * @return The name of the root device (for example, /dev/sda1
     *         or /dev/xvda).
     */
    public String getRootDeviceName() {
        return this.rootDeviceName;
    }
    /**
     * 
     * The name of the root device (for example, /dev/sda1 or
     * /dev/xvda).
     * 
     * 
     * @param rootDeviceName
     *        The name of the root device (for example, /dev/sda1
     *        or /dev/xvda).
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withRootDeviceName(String rootDeviceName) {
        setRootDeviceName(rootDeviceName);
        return this;
    }
    /**
     * 
     * The block device mapping of the instance.
     * 
     * 
     * @return The block device mapping of the instance.
     */
    public java.util.List getBlockDeviceMappings() {
        if (blockDeviceMappings == null) {
            blockDeviceMappings = new com.amazonaws.internal.SdkInternalList();
        }
        return blockDeviceMappings;
    }
    /**
     * 
     * The block device mapping of the instance.
     * 
     * 
     * @param blockDeviceMappings
     *        The block device mapping of the instance.
     */
    public void setBlockDeviceMappings(
            java.util.Collection blockDeviceMappings) {
        if (blockDeviceMappings == null) {
            this.blockDeviceMappings = null;
            return;
        }
        this.blockDeviceMappings = new com.amazonaws.internal.SdkInternalList(
                blockDeviceMappings);
    }
    /**
     * 
     * The block device mapping of the instance.
     * 
     * 
     * 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
     *        The block device mapping of the instance.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withBlockDeviceMappings(
            InstanceBlockDeviceMapping... blockDeviceMappings) {
        if (this.blockDeviceMappings == null) {
            setBlockDeviceMappings(new com.amazonaws.internal.SdkInternalList(
                    blockDeviceMappings.length));
        }
        for (InstanceBlockDeviceMapping ele : blockDeviceMappings) {
            this.blockDeviceMappings.add(ele);
        }
        return this;
    }
    /**
     * 
     * The block device mapping of the instance.
     * 
     * 
     * @param blockDeviceMappings
     *        The block device mapping of the instance.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withBlockDeviceMappings(
            java.util.Collection blockDeviceMappings) {
        setBlockDeviceMappings(blockDeviceMappings);
        return this;
    }
    /**
     * 
     * A list of product codes.
     * 
     * 
     * @return A list of product codes.
     */
    public java.util.List getProductCodes() {
        if (productCodes == null) {
            productCodes = new com.amazonaws.internal.SdkInternalList();
        }
        return productCodes;
    }
    /**
     * 
     * A list of product codes.
     * 
     * 
     * @param productCodes
     *        A list of product codes.
     */
    public void setProductCodes(java.util.Collection productCodes) {
        if (productCodes == null) {
            this.productCodes = null;
            return;
        }
        this.productCodes = new com.amazonaws.internal.SdkInternalList(
                productCodes);
    }
    /**
     * 
     * A list of product codes.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if
     * any). Use {@link #setProductCodes(java.util.Collection)} or
     * {@link #withProductCodes(java.util.Collection)} if you want to override
     * the existing values.
     * 
     * 
     * @param productCodes
     *        A list of product codes.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withProductCodes(ProductCode... productCodes) {
        if (this.productCodes == null) {
            setProductCodes(new com.amazonaws.internal.SdkInternalList(
                    productCodes.length));
        }
        for (ProductCode ele : productCodes) {
            this.productCodes.add(ele);
        }
        return this;
    }
    /**
     * 
     * A list of product codes.
     * 
     * 
     * @param productCodes
     *        A list of product codes.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withProductCodes(
            java.util.Collection productCodes) {
        setProductCodes(productCodes);
        return this;
    }
    /**
     * 
     * Indicates whether the instance is optimized for EBS I/O.
     * 
     * 
     * @param ebsOptimized
     *        Indicates whether the instance is optimized for EBS I/O.
     */
    public void setEbsOptimized(Boolean ebsOptimized) {
        this.ebsOptimized = ebsOptimized;
    }
    /**
     * 
     * Indicates whether the instance is optimized for EBS I/O.
     * 
     * 
     * @return Indicates whether the instance is optimized for EBS I/O.
     */
    public Boolean getEbsOptimized() {
        return this.ebsOptimized;
    }
    /**
     * 
     * Indicates whether the instance is optimized for EBS I/O.
     * 
     * 
     * @param ebsOptimized
     *        Indicates whether the instance is optimized for EBS I/O.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withEbsOptimized(Boolean ebsOptimized) {
        setEbsOptimized(ebsOptimized);
        return this;
    }
    /**
     * 
     * Indicates whether the instance is optimized for EBS I/O.
     * 
     * 
     * @return Indicates whether the instance is optimized for EBS I/O.
     */
    public Boolean isEbsOptimized() {
        return this.ebsOptimized;
    }
    /**
     * 
     * Indicates whether enhanced networking with the Intel 82599 Virtual
     * Function interface is enabled.
     * 
     * 
     * @param sriovNetSupport
     *        Indicates whether enhanced networking with the Intel 82599 Virtual
     *        Function interface is enabled.
     */
    public void setSriovNetSupport(String sriovNetSupport) {
        this.sriovNetSupport = sriovNetSupport;
    }
    /**
     * 
     * Indicates whether enhanced networking with the Intel 82599 Virtual
     * Function interface is enabled.
     * 
     * 
     * @return Indicates whether enhanced networking with the Intel 82599
     *         Virtual Function interface is enabled.
     */
    public String getSriovNetSupport() {
        return this.sriovNetSupport;
    }
    /**
     * 
     * Indicates whether enhanced networking with the Intel 82599 Virtual
     * Function interface is enabled.
     * 
     * 
     * @param sriovNetSupport
     *        Indicates whether enhanced networking with the Intel 82599 Virtual
     *        Function interface is enabled.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withSriovNetSupport(String sriovNetSupport) {
        setSriovNetSupport(sriovNetSupport);
        return this;
    }
    /**
     * 
     * Indicates whether enhanced networking with ENA is enabled.
     * 
     * 
     * @param enaSupport
     *        Indicates whether enhanced networking with ENA is enabled.
     */
    public void setEnaSupport(Boolean enaSupport) {
        this.enaSupport = enaSupport;
    }
    /**
     * 
     * Indicates whether enhanced networking with ENA is enabled.
     * 
     * 
     * @return Indicates whether enhanced networking with ENA is enabled.
     */
    public Boolean getEnaSupport() {
        return this.enaSupport;
    }
    /**
     * 
     * Indicates whether enhanced networking with ENA is enabled.
     * 
     * 
     * @param enaSupport
     *        Indicates whether enhanced networking with ENA is enabled.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withEnaSupport(Boolean enaSupport) {
        setEnaSupport(enaSupport);
        return this;
    }
    /**
     * 
     * Indicates whether enhanced networking with ENA is enabled.
     * 
     * 
     * @return Indicates whether enhanced networking with ENA is enabled.
     */
    public Boolean isEnaSupport() {
        return this.enaSupport;
    }
    /**
     * 
     * Indicates whether source/destination checking is enabled. A value of
     * true means checking is enabled, and false means
     * checking is disabled. This value must be false for a NAT
     * instance to perform NAT.
     * 
     * 
     * @param sourceDestCheck
     *        Indicates whether source/destination checking is enabled. A value
     *        of true means checking is enabled, and
     *        false means checking is disabled. This value must be
     *        false for a NAT instance to perform NAT.
     */
    public void setSourceDestCheck(Boolean sourceDestCheck) {
        this.sourceDestCheck = sourceDestCheck;
    }
    /**
     * 
     * Indicates whether source/destination checking is enabled. A value of
     * true means checking is enabled, and false means
     * checking is disabled. This value must be false for a NAT
     * instance to perform NAT.
     * 
     * 
     * @return Indicates whether source/destination checking is enabled. A value
     *         of true means checking is enabled, and
     *         false means checking is disabled. This value must be
     *         false for a NAT instance to perform NAT.
     */
    public Boolean getSourceDestCheck() {
        return this.sourceDestCheck;
    }
    /**
     * 
     * Indicates whether source/destination checking is enabled. A value of
     * true means checking is enabled, and false means
     * checking is disabled. This value must be false for a NAT
     * instance to perform NAT.
     * 
     * 
     * @param sourceDestCheck
     *        Indicates whether source/destination checking is enabled. A value
     *        of true means checking is enabled, and
     *        false means checking is disabled. This value must be
     *        false for a NAT instance to perform NAT.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withSourceDestCheck(Boolean sourceDestCheck) {
        setSourceDestCheck(sourceDestCheck);
        return this;
    }
    /**
     * 
     * Indicates whether source/destination checking is enabled. A value of
     * true means checking is enabled, and false means
     * checking is disabled. This value must be false for a NAT
     * instance to perform NAT.
     * 
     * 
     * @return Indicates whether source/destination checking is enabled. A value
     *         of true means checking is enabled, and
     *         false means checking is disabled. This value must be
     *         false for a NAT instance to perform NAT.
     */
    public Boolean isSourceDestCheck() {
        return this.sourceDestCheck;
    }
    /**
     * 
     * The security groups associated with the instance.
     * 
     * 
     * @return The security groups associated with the instance.
     */
    public java.util.List getGroups() {
        if (groups == null) {
            groups = new com.amazonaws.internal.SdkInternalList();
        }
        return groups;
    }
    /**
     * 
     * The security groups associated with the instance.
     * 
     * 
     * @param groups
     *        The security groups associated with the instance.
     */
    public void setGroups(java.util.Collection groups) {
        if (groups == null) {
            this.groups = null;
            return;
        }
        this.groups = new com.amazonaws.internal.SdkInternalList(
                groups);
    }
    /**
     * 
     * The security groups associated with the instance.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if
     * any). Use {@link #setGroups(java.util.Collection)} or
     * {@link #withGroups(java.util.Collection)} if you want to override the
     * existing values.
     * 
     * 
     * @param groups
     *        The security groups associated with the instance.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withGroups(GroupIdentifier... groups) {
        if (this.groups == null) {
            setGroups(new com.amazonaws.internal.SdkInternalList(
                    groups.length));
        }
        for (GroupIdentifier ele : groups) {
            this.groups.add(ele);
        }
        return this;
    }
    /**
     * 
     * The security groups associated with the instance.
     * 
     * 
     * @param groups
     *        The security groups associated with the instance.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public InstanceAttribute withGroups(
            java.util.Collection groups) {
        setGroups(groups);
        return this;
    }
    /**
     * 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 (getInstanceId() != null)
            sb.append("InstanceId: " + getInstanceId() + ",");
        if (getInstanceType() != null)
            sb.append("InstanceType: " + getInstanceType() + ",");
        if (getKernelId() != null)
            sb.append("KernelId: " + getKernelId() + ",");
        if (getRamdiskId() != null)
            sb.append("RamdiskId: " + getRamdiskId() + ",");
        if (getUserData() != null)
            sb.append("UserData: " + getUserData() + ",");
        if (getDisableApiTermination() != null)
            sb.append("DisableApiTermination: " + getDisableApiTermination()
                    + ",");
        if (getInstanceInitiatedShutdownBehavior() != null)
            sb.append("InstanceInitiatedShutdownBehavior: "
                    + getInstanceInitiatedShutdownBehavior() + ",");
        if (getRootDeviceName() != null)
            sb.append("RootDeviceName: " + getRootDeviceName() + ",");
        if (getBlockDeviceMappings() != null)
            sb.append("BlockDeviceMappings: " + getBlockDeviceMappings() + ",");
        if (getProductCodes() != null)
            sb.append("ProductCodes: " + getProductCodes() + ",");
        if (getEbsOptimized() != null)
            sb.append("EbsOptimized: " + getEbsOptimized() + ",");
        if (getSriovNetSupport() != null)
            sb.append("SriovNetSupport: " + getSriovNetSupport() + ",");
        if (getEnaSupport() != null)
            sb.append("EnaSupport: " + getEnaSupport() + ",");
        if (getSourceDestCheck() != null)
            sb.append("SourceDestCheck: " + getSourceDestCheck() + ",");
        if (getGroups() != null)
            sb.append("Groups: " + getGroups());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof InstanceAttribute == false)
            return false;
        InstanceAttribute other = (InstanceAttribute) obj;
        if (other.getInstanceId() == null ^ this.getInstanceId() == null)
            return false;
        if (other.getInstanceId() != null
                && other.getInstanceId().equals(this.getInstanceId()) == 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.getKernelId() == null ^ this.getKernelId() == null)
            return false;
        if (other.getKernelId() != null
                && other.getKernelId().equals(this.getKernelId()) == 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.getUserData() == null ^ this.getUserData() == null)
            return false;
        if (other.getUserData() != null
                && other.getUserData().equals(this.getUserData()) == false)
            return false;
        if (other.getDisableApiTermination() == null
                ^ this.getDisableApiTermination() == null)
            return false;
        if (other.getDisableApiTermination() != null
                && other.getDisableApiTermination().equals(
                        this.getDisableApiTermination()) == false)
            return false;
        if (other.getInstanceInitiatedShutdownBehavior() == null
                ^ this.getInstanceInitiatedShutdownBehavior() == null)
            return false;
        if (other.getInstanceInitiatedShutdownBehavior() != null
                && other.getInstanceInitiatedShutdownBehavior().equals(
                        this.getInstanceInitiatedShutdownBehavior()) == false)
            return false;
        if (other.getRootDeviceName() == null
                ^ this.getRootDeviceName() == null)
            return false;
        if (other.getRootDeviceName() != null
                && other.getRootDeviceName().equals(this.getRootDeviceName()) == 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.getProductCodes() == null ^ this.getProductCodes() == null)
            return false;
        if (other.getProductCodes() != null
                && other.getProductCodes().equals(this.getProductCodes()) == false)
            return false;
        if (other.getEbsOptimized() == null ^ this.getEbsOptimized() == null)
            return false;
        if (other.getEbsOptimized() != null
                && other.getEbsOptimized().equals(this.getEbsOptimized()) == false)
            return false;
        if (other.getSriovNetSupport() == null
                ^ this.getSriovNetSupport() == null)
            return false;
        if (other.getSriovNetSupport() != null
                && other.getSriovNetSupport().equals(this.getSriovNetSupport()) == false)
            return false;
        if (other.getEnaSupport() == null ^ this.getEnaSupport() == null)
            return false;
        if (other.getEnaSupport() != null
                && other.getEnaSupport().equals(this.getEnaSupport()) == false)
            return false;
        if (other.getSourceDestCheck() == null
                ^ this.getSourceDestCheck() == null)
            return false;
        if (other.getSourceDestCheck() != null
                && other.getSourceDestCheck().equals(this.getSourceDestCheck()) == false)
            return false;
        if (other.getGroups() == null ^ this.getGroups() == null)
            return false;
        if (other.getGroups() != null
                && other.getGroups().equals(this.getGroups()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode
                + ((getInstanceId() == null) ? 0 : getInstanceId().hashCode());
        hashCode = prime
                * hashCode
                + ((getInstanceType() == null) ? 0 : getInstanceType()
                        .hashCode());
        hashCode = prime * hashCode
                + ((getKernelId() == null) ? 0 : getKernelId().hashCode());
        hashCode = prime * hashCode
                + ((getRamdiskId() == null) ? 0 : getRamdiskId().hashCode());
        hashCode = prime * hashCode
                + ((getUserData() == null) ? 0 : getUserData().hashCode());
        hashCode = prime
                * hashCode
                + ((getDisableApiTermination() == null) ? 0
                        : getDisableApiTermination().hashCode());
        hashCode = prime
                * hashCode
                + ((getInstanceInitiatedShutdownBehavior() == null) ? 0
                        : getInstanceInitiatedShutdownBehavior().hashCode());
        hashCode = prime
                * hashCode
                + ((getRootDeviceName() == null) ? 0 : getRootDeviceName()
                        .hashCode());
        hashCode = prime
                * hashCode
                + ((getBlockDeviceMappings() == null) ? 0
                        : getBlockDeviceMappings().hashCode());
        hashCode = prime
                * hashCode
                + ((getProductCodes() == null) ? 0 : getProductCodes()
                        .hashCode());
        hashCode = prime
                * hashCode
                + ((getEbsOptimized() == null) ? 0 : getEbsOptimized()
                        .hashCode());
        hashCode = prime
                * hashCode
                + ((getSriovNetSupport() == null) ? 0 : getSriovNetSupport()
                        .hashCode());
        hashCode = prime * hashCode
                + ((getEnaSupport() == null) ? 0 : getEnaSupport().hashCode());
        hashCode = prime
                * hashCode
                + ((getSourceDestCheck() == null) ? 0 : getSourceDestCheck()
                        .hashCode());
        hashCode = prime * hashCode
                + ((getGroups() == null) ? 0 : getGroups().hashCode());
        return hashCode;
    }
    @Override
    public InstanceAttribute clone() {
        try {
            return (InstanceAttribute) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException(
                    "Got a CloneNotSupportedException from Object.clone() "
                            + "even though we're Cloneable!", e);
        }
    }
}