Class/Module Index [+]

Quicksearch

Ironfan::Provider::Ec2::EbsVolume

Public Class Methods

expected_ids(computer) click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 27
def self.expected_ids(computer)
  computer.server.volumes.values.map do |volume|
    saved = computer.node[:volumes][volume.name][:volume_id] rescue nil
    ebs_name = "#{computer.server.full_name}-#{volume.name}"
    [ volume.volume_id, saved, ebs_name ]
  end.flatten.compact
end
load!(cluster=nil) click to toggle source

Discovery

# File lib/ironfan/provider/ec2/ebs_volume.rb, line 51
def self.load!(cluster=nil)
  Ec2.connection.volumes.each do |vol|
    next if vol.blank?
    next if ]deleting deleted error].include?(vol.state.to_s)
    ebs = EbsVolume.new(:adaptee => vol)
    # Already have a volume by this name
    if recall? ebs.name
      ebs.bogus <<              :duplicate_volumes
      recall(ebs.name).bogus << :duplicate_volumes
      remember ebs, :append_id => "duplicate:#{ebs.id}"
    else
      remember ebs
    end
    Chef::Log.debug("Loaded #{ebs}")
  end
end
multiple?() click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 25
def self.multiple?()    true;   end
resource_type() click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 26
def self.resource_type()        :ebs_volume;   end
save!(computer) click to toggle source

Manipulation

# File lib/ironfan/provider/ec2/ebs_volume.rb, line 96
def self.save!(computer)
  Ironfan.step(computer.name,"syncing EBS volumes",:blue)
  computer.drives.each do |drive|
    # Only worry about computers with ebs volumes
    ebs = drive.disk or next
    # Only attach volumes if they aren't already attached
    if ebs.server_id.nil?
      Ironfan.step(computer.name, "  - attaching #{ebs.name}", :blue)
      Ironfan.safely do
        ebs.device =          drive.volume.device
        ebs.server =          computer.machine.adaptee
      end
    end
  end
end
shared?() click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 24
def self.shared?()      true;   end
validate_computer!(computer) click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 80
def self.validate_computer!(computer)
  computer.drives.each do |drive|
    next unless drive.disk.class == EbsVolume
    [ (drive.node['volume_id'] rescue nil),
      (drive.volume.volume_id  rescue nil)
    ].compact.each do |id|
      Chef::Log.debug "checking #{id} against ebs_volume id #{drive.disk.id}"
      id == drive.disk.id or drive.disk.bogus << :volume_id_mismatch
    end
  end
end

Public Instance Methods

drivename() click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 39
def drivename
  return id unless tags.key? "Name"
  tags["Name"].split('-').pop
end
ephemeral_device?() click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 44
def ephemeral_device?
  false
end
name() click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 35
def name
  tags["Name"] || tags["name"] || id
end
on_correlate(computer) click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 73
def on_correlate(computer)
  drive = computer.drive(drivename)
  drive.disk = self
  drive.node = computer.node[:volumes][drivename].to_hash rescue {}
  drive
end
receive_adaptee(obj) click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 68
def receive_adaptee(obj)
  obj = Ec2.connection.volumes.new(obj) if obj.is_a?(Hash)
  super
end
to_s() click to toggle source
# File lib/ironfan/provider/ec2/ebs_volume.rb, line 19
def to_s
  "<%-15s %-12s %-25s %-32s %-10s %-12s %-15s %-5s %s:%s>" % [
    self.class.handle, id, created_at, tags['name'], state, device, tags['mount_point'], size, server_id, attached_at ]
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.