class Fog::Compute::Libvirt::Volume
Attributes
xml[R]
Public Class Methods
new(attributes={ })
click to toggle source
Can be created by passing in :xml => “<xml to create volume>” A volume always belongs to a pool, :pool_name => “<name of pool>”
Calls superclass method
Fog::Model::new
# File lib/fog/libvirt/models/compute/volume.rb, line 26 def initialize(attributes={ }) @xml = attributes.delete(:xml) super(defaults.merge(attributes)) # We need a connection to calculate the pool_name # This is why we do this after super self.pool_name ||= default_pool_name end
Public Instance Methods
clone(name)
click to toggle source
Clones this volume to the name provided
# File lib/fog/libvirt/models/compute/volume.rb, line 55 def clone(name) new_volume = self.dup new_volume.key = nil new_volume.name = name new_volume.save new_volume.reload end
destroy()
click to toggle source
Destroy a volume
# File lib/fog/libvirt/models/compute/volume.rb, line 45 def destroy service.volume_action key, :delete end
save()
click to toggle source
Takes a pool and either :xml or other settings
# File lib/fog/libvirt/models/compute/volume.rb, line 36 def save requires :pool_name raise Fog::Errors::Error.new('Reserving an existing volume may create a duplicate') if key @xml ||= to_xml self.path = service.create_volume(pool_name, xml).path end
wipe()
click to toggle source
Wipes a volume , zeroes disk
# File lib/fog/libvirt/models/compute/volume.rb, line 50 def wipe service.volume_action key, :wipe end
Private Instance Methods
default_pool_name()
click to toggle source
Try to guess the default/first pool of no pool_name was specified
# File lib/fog/libvirt/models/compute/volume.rb, line 76 def default_pool_name name = "default" return name unless (service.pools.all(:name => name)).empty? # we default to the first pool we find. first_pool = service.pools.first raise Fog::Errors::Error.new('No storage pools are defined') unless first_pool first_pool.name end
defaults()
click to toggle source
# File lib/fog/libvirt/models/compute/volume.rb, line 87 def defaults { :persistent => true, :format_type => "raw", :name => randomized_name, :capacity => "10G", :allocation => "1G", } end
image_suffix()
click to toggle source
# File lib/fog/libvirt/models/compute/volume.rb, line 66 def image_suffix return "img" if format_type == "raw" format_type end
randominzed_name()
click to toggle source
# File lib/fog/libvirt/models/compute/volume.rb, line 71 def randominzed_name "#{super}.#{image_suffix}" end
split_size_unit(text)
click to toggle source
# File lib/fog/libvirt/models/compute/volume.rb, line 97 def split_size_unit(text) matcher=text.match(/(\d+)(.+)/) size = matcher[1] unit = matcher[2] [size, unit] end