Class: Fog::Libvirt::Compute::Volume
- Inherits:
-
Model
- Object
- Model
- Fog::Libvirt::Compute::Volume
- Includes:
- Util
- Defined in:
- lib/fog/libvirt/models/compute/volume.rb
Instance Attribute Summary collapse
-
#xml ⇒ Object
readonly
Returns the value of attribute xml.
Instance Method Summary collapse
-
#clone(name) ⇒ Object
Clones this volume to the name provided.
- #clone_volume(new_name) ⇒ Object
-
#destroy ⇒ Object
Destroy a volume.
-
#initialize(attributes = { }) ⇒ Volume
constructor
Can be created by passing in :xml => “<xml to create volume>” A volume always belongs to a pool, :pool_name => “<name of pool>”.
-
#save ⇒ Object
Takes a pool and either :xml or other settings.
- #upload_image(file_path) ⇒ Object
-
#wipe ⇒ Object
Wipes a volume , zeroes disk.
Methods included from Util
#randomized_name, #to_xml, #xml_element, #xml_elements
Constructor Details
#initialize(attributes = { }) ⇒ Volume
Can be created by passing in :xml => “<xml to create volume>” A volume always belongs to a pool, :pool_name => “<name of pool>”
27 28 29 30 31 32 33 34 |
# File 'lib/fog/libvirt/models/compute/volume.rb', line 27 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 |
Instance Attribute Details
#xml ⇒ Object (readonly)
Returns the value of attribute xml.
8 9 10 |
# File 'lib/fog/libvirt/models/compute/volume.rb', line 8 def xml @xml end |
Instance Method Details
#clone(name) ⇒ Object
Clones this volume to the name provided
56 57 58 59 60 61 62 63 |
# File 'lib/fog/libvirt/models/compute/volume.rb', line 56 def clone(name) new_volume = self.dup new_volume.key = nil new_volume.name = name new_volume.save new_volume.reload end |
#clone_volume(new_name) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/fog/libvirt/models/compute/volume.rb', line 65 def clone_volume(new_name) requires :pool_name new_volume = self.dup new_volume.key = nil new_volume.name = new_name new_volume.path = service.clone_volume(pool_name, new_volume.to_xml, self.name).path new_volume.reload end |
#destroy ⇒ Object
Destroy a volume
46 47 48 |
# File 'lib/fog/libvirt/models/compute/volume.rb', line 46 def destroy service.volume_action key, :delete end |
#save ⇒ Object
Takes a pool and either :xml or other settings
37 38 39 40 41 42 43 |
# File 'lib/fog/libvirt/models/compute/volume.rb', line 37 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 |
#upload_image(file_path) ⇒ Object
76 77 78 79 |
# File 'lib/fog/libvirt/models/compute/volume.rb', line 76 def upload_image(file_path) requires :pool_name service.upload_volume(pool_name, name, file_path) end |
#wipe ⇒ Object
Wipes a volume , zeroes disk
51 52 53 |
# File 'lib/fog/libvirt/models/compute/volume.rb', line 51 def wipe service.volume_action key, :wipe end |