class AWS::EC2::VolumeCollection

Represents a collection of Amazon EBS volumes. Typically you should get an instance of this class by calling {AWS::EC2#volumes}.

@example Create an empty 15GiB volume

ec2.volumes.create(:size => 15,
                   :availability_zone => "us-east-1a")

@example Get a volume by ID

volume = ec2.volumes["vol-123"]
volume.exists?

@example Get a map of volume IDs to volume status

ec2.volumes.inject({}) { |m, v| m[v.id] = v.status; m }
# => { "vol-12345678" => :available, "vol-87654321" => :in_use }

Public Instance Methods

create(options = {}) click to toggle source

Creates a new Amazon EBS volume that any Amazon EC2 instance in the same Availability Zone can attach to. For more information about Amazon EBS, go to the Amazon Elastic Compute Cloud User Guide.

@return [Volume] An object representing the new volume.

@param [Hash] options Options for creating the volume.

+:availability_zone+ and one of +:size+, +:snapshot+, or
+:snapshot_id+ is required.

@option options [Integer] :size The size of the volume, in

GiBs.  Valid values: 1 - 1024.  If +:snapshot+ or
+:snapshot_id+ is specified, this defaults to the size of
the specified snapshot.

@option options [Snapshot] :snapshot The snapshot from which to

create the new volume.

@option options [String] :snapshot_id The ID of the snapshot

from which to create the new volume.

@option options [String, AvailabilityZone] :availability_zone

The Availability Zone in which to create the new volume.
To get a list of the availability zones you can use, see
{EC2#availability_zones}.

@return [Volume]

# File lib/aws/ec2/volume_collection.rb, line 78
def create options = {}
  if snapshot = options.delete(:snapshot)
    options[:snapshot_id] = snapshot.id
  end
  resp = client.create_volume(options)
  Volume.new_from(:create_volume, resp, resp.volume_id, :config => config)
end
each() { |volume| ... } click to toggle source

@yield [Instance] Yields each volume in the collection. @return [nil]

# File lib/aws/ec2/volume_collection.rb, line 37
def each(&block)
  resp = filtered_request(:describe_volumes)
  resp.volume_set.each do |v|

    volume = Volume.new_from(:describe_volumes, v, 
      v.volume_id, :config => config)

    yield(volume)

  end
  nil
end

Protected Instance Methods

member_class() click to toggle source

@private

# File lib/aws/ec2/volume_collection.rb, line 88
def member_class
  Volume
end