Module: Boucher::Volumes

Defined in:
lib/boucher/volumes.rb

Class Method Summary collapse

Class Method Details

.allObject



25
26
27
# File 'lib/boucher/volumes.rb', line 25

def self.all
  @volumes ||= Boucher.compute.volumes
end

.create(options) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/boucher/volumes.rb', line 40

def self.create(options)
  zone = options[:availability_zone]
  raise ":availability_zone is required to create a volume." unless zone
  size = options[:size]
  snapshot_id = options[:snapshot_id]
  response = if snapshot_id
    snapshot = Boucher::compute.snapshots.get(snapshot_id)
    size = snapshot.volume_size.to_i
    Boucher.compute.create_volume(zone, size, "SnapshotId" => snapshot_id)
  else
    Boucher.compute.create_volume(zone, size)
  end
  volume_id = response.body["volumeId"]
  volume = Boucher.compute.volumes.get(volume_id)
  volume.wait_for { volume.ready? }
  volume
end

.destroy(volumes) ⇒ Object



29
30
31
32
33
34
# File 'lib/boucher/volumes.rb', line 29

def self.destroy(volumes)
  Array(volumes).each do |volume|
    volume.reload
    volume.destroy
  end
end

.with_id(volume_id) ⇒ Object



36
37
38
# File 'lib/boucher/volumes.rb', line 36

def self.with_id(volume_id)
  all.find { |volume| volume.id == volume_id }
end