com.amazonaws.services.ec2.model.EbsBlockDevice 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 a block device for an EBS volume.
 * 
 */
public class EbsBlockDevice implements Serializable, Cloneable {
    /**
     * 
     * The ID of the snapshot.
     * 
     */
    private String snapshotId;
    /**
     * 
     * The size of the volume, in GiB.
     * 
     * 
     * Constraints: 1-16384 for General Purpose SSD (gp2), 4-16384
     * for Provisioned IOPS SSD (io1), 500-16384 for Throughput
     * Optimized HDD (st1), 500-16384 for Cold HDD (
     * sc1), and 1-1024 for Magnetic (standard)
     * volumes. If you specify a snapshot, the volume size must be equal to or
     * larger than the snapshot size.
     * 
     * 
     * Default: If you're creating the volume from a snapshot and don't specify
     * a volume size, the default is the snapshot size.
     * 
     */
    private Integer volumeSize;
    /**
     * 
     * Indicates whether the EBS volume is deleted on instance termination.
     * 
     */
    private Boolean deleteOnTermination;
    /**
     * 
     * The volume type: gp2, io1, st1,
     * sc1, or standard.
     * 
     * 
     * Default: standard
     * 
     */
    private String volumeType;
    /**
     * 
     * The number of I/O operations per second (IOPS) that the volume supports.
     * For io1, this represents the number of IOPS that are provisioned for the
     * volume. For gp2, this represents the baseline performance of
     * the volume and the rate at which the volume accumulates I/O credits for
     * bursting. For more information on General Purpose SSD baseline
     * performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User
     * Guide.
     * 
     * 
     * Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS
     * for gp2 volumes.
     * 
     * 
     * Condition: This parameter is required for requests to create
     * io1 volumes; it is not used in requests to
     * create gp2, st1, sc1, or
     * standard volumes.
     * 
     */
    private Integer iops;
    /**
     * 
     * Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS
     * volumes may only be attached to instances that support Amazon EBS
     * encryption.
     * 
     */
    private Boolean encrypted;
    /**
     * 
     * The ID of the snapshot.
     * 
     * 
     * @param snapshotId
     *        The ID of the snapshot.
     */
    public void setSnapshotId(String snapshotId) {
        this.snapshotId = snapshotId;
    }
    /**
     * 
     * The ID of the snapshot.
     * 
     * 
     * @return The ID of the snapshot.
     */
    public String getSnapshotId() {
        return this.snapshotId;
    }
    /**
     * 
     * The ID of the snapshot.
     * 
     * 
     * @param snapshotId
     *        The ID of the snapshot.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public EbsBlockDevice withSnapshotId(String snapshotId) {
        setSnapshotId(snapshotId);
        return this;
    }
    /**
     * 
     * The size of the volume, in GiB.
     * 
     * 
     * Constraints: 1-16384 for General Purpose SSD (gp2), 4-16384
     * for Provisioned IOPS SSD (io1), 500-16384 for Throughput
     * Optimized HDD (st1), 500-16384 for Cold HDD (
     * sc1), and 1-1024 for Magnetic (standard)
     * volumes. If you specify a snapshot, the volume size must be equal to or
     * larger than the snapshot size.
     * 
     * 
     * Default: If you're creating the volume from a snapshot and don't specify
     * a volume size, the default is the snapshot size.
     * 
     * 
     * @param volumeSize
     *        The size of the volume, in GiB.
     *        
     *        Constraints: 1-16384 for General Purpose SSD (gp2),
     *        4-16384 for Provisioned IOPS SSD (io1), 500-16384 for
     *        Throughput Optimized HDD (st1), 500-16384 for Cold
     *        HDD (sc1), and 1-1024 for Magnetic (
     *        standard) volumes. If you specify a snapshot, the
     *        volume size must be equal to or larger than the snapshot size.
     *        
     *        
     *        Default: If you're creating the volume from a snapshot and don't
     *        specify a volume size, the default is the snapshot size.
     */
    public void setVolumeSize(Integer volumeSize) {
        this.volumeSize = volumeSize;
    }
    /**
     * 
     * The size of the volume, in GiB.
     * 
     * 
     * Constraints: 1-16384 for General Purpose SSD (gp2), 4-16384
     * for Provisioned IOPS SSD (io1), 500-16384 for Throughput
     * Optimized HDD (st1), 500-16384 for Cold HDD (
     * sc1), and 1-1024 for Magnetic (standard)
     * volumes. If you specify a snapshot, the volume size must be equal to or
     * larger than the snapshot size.
     * 
     * 
     * Default: If you're creating the volume from a snapshot and don't specify
     * a volume size, the default is the snapshot size.
     * 
     * 
     * @return The size of the volume, in GiB.
     *         
     *         Constraints: 1-16384 for General Purpose SSD (gp2),
     *         4-16384 for Provisioned IOPS SSD (io1), 500-16384
     *         for Throughput Optimized HDD (st1), 500-16384 for
     *         Cold HDD (sc1), and 1-1024 for Magnetic (
     *         standard) volumes. If you specify a snapshot, the
     *         volume size must be equal to or larger than the snapshot size.
     *         
     *         
     *         Default: If you're creating the volume from a snapshot and don't
     *         specify a volume size, the default is the snapshot size.
     */
    public Integer getVolumeSize() {
        return this.volumeSize;
    }
    /**
     * 
     * The size of the volume, in GiB.
     * 
     * 
     * Constraints: 1-16384 for General Purpose SSD (gp2), 4-16384
     * for Provisioned IOPS SSD (io1), 500-16384 for Throughput
     * Optimized HDD (st1), 500-16384 for Cold HDD (
     * sc1), and 1-1024 for Magnetic (standard)
     * volumes. If you specify a snapshot, the volume size must be equal to or
     * larger than the snapshot size.
     * 
     * 
     * Default: If you're creating the volume from a snapshot and don't specify
     * a volume size, the default is the snapshot size.
     * 
     * 
     * @param volumeSize
     *        The size of the volume, in GiB.
     *        
     *        Constraints: 1-16384 for General Purpose SSD (gp2),
     *        4-16384 for Provisioned IOPS SSD (io1), 500-16384 for
     *        Throughput Optimized HDD (st1), 500-16384 for Cold
     *        HDD (sc1), and 1-1024 for Magnetic (
     *        standard) volumes. If you specify a snapshot, the
     *        volume size must be equal to or larger than the snapshot size.
     *        
     *        
     *        Default: If you're creating the volume from a snapshot and don't
     *        specify a volume size, the default is the snapshot size.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public EbsBlockDevice withVolumeSize(Integer volumeSize) {
        setVolumeSize(volumeSize);
        return this;
    }
    /**
     * 
     * Indicates whether the EBS volume is deleted on instance termination.
     * 
     * 
     * @param deleteOnTermination
     *        Indicates whether the EBS volume is deleted on instance
     *        termination.
     */
    public void setDeleteOnTermination(Boolean deleteOnTermination) {
        this.deleteOnTermination = deleteOnTermination;
    }
    /**
     * 
     * Indicates whether the EBS volume is deleted on instance termination.
     * 
     * 
     * @return Indicates whether the EBS volume is deleted on instance
     *         termination.
     */
    public Boolean getDeleteOnTermination() {
        return this.deleteOnTermination;
    }
    /**
     * 
     * Indicates whether the EBS volume is deleted on instance termination.
     * 
     * 
     * @param deleteOnTermination
     *        Indicates whether the EBS volume is deleted on instance
     *        termination.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public EbsBlockDevice withDeleteOnTermination(Boolean deleteOnTermination) {
        setDeleteOnTermination(deleteOnTermination);
        return this;
    }
    /**
     * 
     * Indicates whether the EBS volume is deleted on instance termination.
     * 
     * 
     * @return Indicates whether the EBS volume is deleted on instance
     *         termination.
     */
    public Boolean isDeleteOnTermination() {
        return this.deleteOnTermination;
    }
    /**
     * 
     * The volume type: gp2, io1, st1,
     * sc1, or standard.
     * 
     * 
     * Default: standard
     * 
     * 
     * @param volumeType
     *        The volume type: gp2, io1,
     *        st1, sc1, or standard.
     *        
     *        Default: standard
     * @see VolumeType
     */
    public void setVolumeType(String volumeType) {
        this.volumeType = volumeType;
    }
    /**
     * 
     * The volume type: gp2, io1, st1,
     * sc1, or standard.
     * 
     * 
     * Default: standard
     * 
     * 
     * @return The volume type: gp2, io1,
     *         st1, sc1, or standard.
     *         
     *         Default: standard
     * @see VolumeType
     */
    public String getVolumeType() {
        return this.volumeType;
    }
    /**
     * 
     * The volume type: gp2, io1, st1,
     * sc1, or standard.
     * 
     * 
     * Default: standard
     * 
     * 
     * @param volumeType
     *        The volume type: gp2, io1,
     *        st1, sc1, or standard.
     *        
     *        Default: standard
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     * @see VolumeType
     */
    public EbsBlockDevice withVolumeType(String volumeType) {
        setVolumeType(volumeType);
        return this;
    }
    /**
     * 
     * The volume type: gp2, io1, st1,
     * sc1, or standard.
     * 
     * 
     * Default: standard
     * 
     * 
     * @param volumeType
     *        The volume type: gp2, io1,
     *        st1, sc1, or standard.
     *        
     *        Default: standard
     * @see VolumeType
     */
    public void setVolumeType(VolumeType volumeType) {
        this.volumeType = volumeType.toString();
    }
    /**
     * 
     * The volume type: gp2, io1, st1,
     * sc1, or standard.
     * 
     * 
     * Default: standard
     * 
     * 
     * @param volumeType
     *        The volume type: gp2, io1,
     *        st1, sc1, or standard.
     *        
     *        Default: standard
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     * @see VolumeType
     */
    public EbsBlockDevice withVolumeType(VolumeType volumeType) {
        setVolumeType(volumeType);
        return this;
    }
    /**
     * 
     * The number of I/O operations per second (IOPS) that the volume supports.
     * For io1, this represents the number of IOPS that are provisioned for the
     * volume. For gp2, this represents the baseline performance of
     * the volume and the rate at which the volume accumulates I/O credits for
     * bursting. For more information on General Purpose SSD baseline
     * performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User
     * Guide.
     * 
     * 
     * Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS
     * for gp2 volumes.
     * 
     * 
     * Condition: This parameter is required for requests to create
     * io1 volumes; it is not used in requests to
     * create gp2, st1, sc1, or
     * standard volumes.
     * 
     * 
     * @param iops
     *        The number of I/O operations per second (IOPS) that the volume
     *        supports. For io1, this represents the number of IOPS that are
     *        provisioned for the volume. For gp2, this represents
     *        the baseline performance of the volume and the rate at which the
     *        volume accumulates I/O credits for bursting. For more information
     *        on General Purpose SSD baseline performance, I/O credits, and
     *        bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute
     *        Cloud User Guide.
     *        
     *        Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000
     *        IOPS for gp2 volumes.
     *        
     *        
     *        Condition: This parameter is required for requests to create
     *        io1 volumes; it is not used in requests
     *        to create gp2, st1, sc1, or
     *        standard volumes.
     */
    public void setIops(Integer iops) {
        this.iops = iops;
    }
    /**
     * 
     * The number of I/O operations per second (IOPS) that the volume supports.
     * For io1, this represents the number of IOPS that are provisioned for the
     * volume. For gp2, this represents the baseline performance of
     * the volume and the rate at which the volume accumulates I/O credits for
     * bursting. For more information on General Purpose SSD baseline
     * performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User
     * Guide.
     * 
     * 
     * Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS
     * for gp2 volumes.
     * 
     * 
     * Condition: This parameter is required for requests to create
     * io1 volumes; it is not used in requests to
     * create gp2, st1, sc1, or
     * standard volumes.
     * 
     * 
     * @return The number of I/O operations per second (IOPS) that the volume
     *         supports. For io1, this represents the number of IOPS that are
     *         provisioned for the volume. For gp2, this represents
     *         the baseline performance of the volume and the rate at which the
     *         volume accumulates I/O credits for bursting. For more information
     *         on General Purpose SSD baseline performance, I/O credits, and
     *         bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute
     *         Cloud User Guide.
     *         
     *         Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000
     *         IOPS for gp2 volumes.
     *         
     *         
     *         Condition: This parameter is required for requests to create
     *         io1 volumes; it is not used in requests
     *         to create gp2, st1, sc1,
     *         or standard volumes.
     */
    public Integer getIops() {
        return this.iops;
    }
    /**
     * 
     * The number of I/O operations per second (IOPS) that the volume supports.
     * For io1, this represents the number of IOPS that are provisioned for the
     * volume. For gp2, this represents the baseline performance of
     * the volume and the rate at which the volume accumulates I/O credits for
     * bursting. For more information on General Purpose SSD baseline
     * performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User
     * Guide.
     * 
     * 
     * Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS
     * for gp2 volumes.
     * 
     * 
     * Condition: This parameter is required for requests to create
     * io1 volumes; it is not used in requests to
     * create gp2, st1, sc1, or
     * standard volumes.
     * 
     * 
     * @param iops
     *        The number of I/O operations per second (IOPS) that the volume
     *        supports. For io1, this represents the number of IOPS that are
     *        provisioned for the volume. For gp2, this represents
     *        the baseline performance of the volume and the rate at which the
     *        volume accumulates I/O credits for bursting. For more information
     *        on General Purpose SSD baseline performance, I/O credits, and
     *        bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute
     *        Cloud User Guide.
     *        
     *        Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000
     *        IOPS for gp2 volumes.
     *        
     *        
     *        Condition: This parameter is required for requests to create
     *        io1 volumes; it is not used in requests
     *        to create gp2, st1, sc1, or
     *        standard volumes.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public EbsBlockDevice withIops(Integer iops) {
        setIops(iops);
        return this;
    }
    /**
     * 
     * Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS
     * volumes may only be attached to instances that support Amazon EBS
     * encryption.
     * 
     * 
     * @param encrypted
     *        Indicates whether the EBS volume is encrypted. Encrypted Amazon
     *        EBS volumes may only be attached to instances that support Amazon
     *        EBS encryption.
     */
    public void setEncrypted(Boolean encrypted) {
        this.encrypted = encrypted;
    }
    /**
     * 
     * Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS
     * volumes may only be attached to instances that support Amazon EBS
     * encryption.
     * 
     * 
     * @return Indicates whether the EBS volume is encrypted. Encrypted Amazon
     *         EBS volumes may only be attached to instances that support Amazon
     *         EBS encryption.
     */
    public Boolean getEncrypted() {
        return this.encrypted;
    }
    /**
     * 
     * Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS
     * volumes may only be attached to instances that support Amazon EBS
     * encryption.
     * 
     * 
     * @param encrypted
     *        Indicates whether the EBS volume is encrypted. Encrypted Amazon
     *        EBS volumes may only be attached to instances that support Amazon
     *        EBS encryption.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public EbsBlockDevice withEncrypted(Boolean encrypted) {
        setEncrypted(encrypted);
        return this;
    }
    /**
     * 
     * Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS
     * volumes may only be attached to instances that support Amazon EBS
     * encryption.
     * 
     * 
     * @return Indicates whether the EBS volume is encrypted. Encrypted Amazon
     *         EBS volumes may only be attached to instances that support Amazon
     *         EBS encryption.
     */
    public Boolean isEncrypted() {
        return this.encrypted;
    }
    /**
     * 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 (getSnapshotId() != null)
            sb.append("SnapshotId: " + getSnapshotId() + ",");
        if (getVolumeSize() != null)
            sb.append("VolumeSize: " + getVolumeSize() + ",");
        if (getDeleteOnTermination() != null)
            sb.append("DeleteOnTermination: " + getDeleteOnTermination() + ",");
        if (getVolumeType() != null)
            sb.append("VolumeType: " + getVolumeType() + ",");
        if (getIops() != null)
            sb.append("Iops: " + getIops() + ",");
        if (getEncrypted() != null)
            sb.append("Encrypted: " + getEncrypted());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof EbsBlockDevice == false)
            return false;
        EbsBlockDevice other = (EbsBlockDevice) obj;
        if (other.getSnapshotId() == null ^ this.getSnapshotId() == null)
            return false;
        if (other.getSnapshotId() != null
                && other.getSnapshotId().equals(this.getSnapshotId()) == false)
            return false;
        if (other.getVolumeSize() == null ^ this.getVolumeSize() == null)
            return false;
        if (other.getVolumeSize() != null
                && other.getVolumeSize().equals(this.getVolumeSize()) == false)
            return false;
        if (other.getDeleteOnTermination() == null
                ^ this.getDeleteOnTermination() == null)
            return false;
        if (other.getDeleteOnTermination() != null
                && other.getDeleteOnTermination().equals(
                        this.getDeleteOnTermination()) == false)
            return false;
        if (other.getVolumeType() == null ^ this.getVolumeType() == null)
            return false;
        if (other.getVolumeType() != null
                && other.getVolumeType().equals(this.getVolumeType()) == false)
            return false;
        if (other.getIops() == null ^ this.getIops() == null)
            return false;
        if (other.getIops() != null
                && other.getIops().equals(this.getIops()) == false)
            return false;
        if (other.getEncrypted() == null ^ this.getEncrypted() == null)
            return false;
        if (other.getEncrypted() != null
                && other.getEncrypted().equals(this.getEncrypted()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode
                + ((getSnapshotId() == null) ? 0 : getSnapshotId().hashCode());
        hashCode = prime * hashCode
                + ((getVolumeSize() == null) ? 0 : getVolumeSize().hashCode());
        hashCode = prime
                * hashCode
                + ((getDeleteOnTermination() == null) ? 0
                        : getDeleteOnTermination().hashCode());
        hashCode = prime * hashCode
                + ((getVolumeType() == null) ? 0 : getVolumeType().hashCode());
        hashCode = prime * hashCode
                + ((getIops() == null) ? 0 : getIops().hashCode());
        hashCode = prime * hashCode
                + ((getEncrypted() == null) ? 0 : getEncrypted().hashCode());
        return hashCode;
    }
    @Override
    public EbsBlockDevice clone() {
        try {
            return (EbsBlockDevice) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException(
                    "Got a CloneNotSupportedException from Object.clone() "
                            + "even though we're Cloneable!", e);
        }
    }
}