module Rudy::AWS::EC2::Snapshots

Public Class Methods

from_hash(h) click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 61
def Snapshots.from_hash(h)
  #snapshotSet: 
  #  item: 
  #  - snapshotId: snap-5493653d
  #    volumeId: vol-0836d761
  #    status: completed
  #    startTime: "2009-03-29T20:15:10.000Z"
  #    progress: 100%
  vol = Rudy::AWS::EC2::Snapshot.new
  vol.awsid = h['snapshotId']
  vol.volid = h['volumeId']
  vol.created = h['startTime']
  vol.progress = h['progress']
  vol.status = h['status']
  vol 
end

Public Instance Methods

any?() click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 78
def any?
  !(list_as_hash || {}).empty?
end
completed?(snap_id) click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 90
def completed?(snap_id)
  s = get(snap_id)
  return false if s.nil?
  s.completed?
end
create(vol_id) click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 48
def create(vol_id)
  vol_id = (vol_id.is_a?(Rudy::AWS::EC2::Volume)) ? vol_id.awsid : vol_id
  shash = @@ec2.create_snapshot(:volume_id => vol_id)
  snap = Snapshots.from_hash(shash)
  snap
end
destroy(snap_id) click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 55
def destroy(snap_id)
  ret = @@ec2.delete_snapshot(:snapshot_id => snap_id)
  (ret && ret['return'] == 'true') 
end
exists?(snap_id) click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 86
def exists?(snap_id)
  !get(snap_id).nil?
end
get(snap_id) click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 82
def get(snap_id)
  list(snap_id).first rescue nil
end
list(snap_id=[]) click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 28
def list(snap_id=[])
  snapshots = list_as_hash(snap_id)
  if snapshots
    snapshots = snapshots.values.sort { |a,b| a.created <=> b.created }
  end
  snapshots
end
list_as_hash(snap_id=[]) click to toggle source
# File lib/rudy/aws/ec2/snapshot.rb, line 35
def list_as_hash(snap_id=[])
  snap_id = [snap_id].flatten.compact
  slist = @@ec2.describe_snapshots(:snapshot_id => snap_id)
  return unless slist['snapshotSet'].is_a?(Hash)
  snapshots = {}
  slist['snapshotSet']['item'].each do |snap| 
    kp = self.from_hash(snap)
    snapshots[kp.awsid] = kp
  end
  snapshots = nil if snapshots.empty?
  snapshots
end