Module: Rudy::AWS::EC2::Snapshots

Extended by:
Snapshots
Includes:
Rudy::AWS::EC2
Included in:
Snapshots
Defined in:
lib/rudy/aws/ec2/snapshot.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Rudy::AWS::EC2

connect

Methods included from Huxtable

config, #config_dirname, create_domain, #current_group_name, #current_machine_address, #current_machine_bucket, #current_machine_count, #current_machine_group, #current_machine_hostname, #current_machine_image, #current_machine_name, #current_machine_os, #current_machine_size, #current_machine_user, #current_user_keypairname, #current_user_keypairpath, #defined_keypairpath, domain, domain_exists?, global, keypair_path_to_name, #known_machine_group?, ld, #ld, #le, le, li, #li, logger, reset_config, reset_global, #root_keypairname, #root_keypairpath, update_config, update_global, update_logger, #user_keypairname, #user_keypairpath

Class Method Details

.from_hash(h) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 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

Instance Method Details

#any?Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/rudy/aws/ec2/snapshot.rb', line 78

def any?
  !(list_as_hash || {}).empty?
end

#completed?(snap_id) ⇒ Boolean

Returns:

  • (Boolean)


90
91
92
93
94
# 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) ⇒ Object



48
49
50
51
52
53
# 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) ⇒ Object



55
56
57
58
# 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) ⇒ Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/rudy/aws/ec2/snapshot.rb', line 86

def exists?(snap_id)
  !get(snap_id).nil?
end

#get(snap_id) ⇒ Object



82
83
84
# File 'lib/rudy/aws/ec2/snapshot.rb', line 82

def get(snap_id)
  list(snap_id).first rescue nil
end

#list(snap_id = []) ⇒ Object



28
29
30
31
32
33
34
# 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 = []) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
# 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