Class: VagrantPlugins::ProviderLibvirt::Action::CreateDomainVolume
- Inherits:
-
Object
- Object
- VagrantPlugins::ProviderLibvirt::Action::CreateDomainVolume
- Includes:
- Util::ErbTemplate
- Defined in:
- lib/vagrant-libvirt/action/create_domain_volume.rb
Overview
Create a snapshot of base box image. This new snapshot is just new cow image with backing storage pointing to base box image. Use this image as new domain volume.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, env) ⇒ CreateDomainVolume
constructor
A new instance of CreateDomainVolume.
Methods included from Util::ErbTemplate
Constructor Details
#initialize(app, env) ⇒ CreateDomainVolume
Returns a new instance of CreateDomainVolume.
13 14 15 16 |
# File 'lib/vagrant-libvirt/action/create_domain_volume.rb', line 13 def initialize(app, env) @logger = Log4r::Logger.new("vagrant_libvirt::action::create_domain_volume") @app = app end |
Instance Method Details
#call(env) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/vagrant-libvirt/action/create_domain_volume.rb', line 18 def call(env) env[:ui].info(I18n.t("vagrant_libvirt.creating_domain_volume")) # Get config options. config = env[:machine].provider_config # This is name of newly created image for vm. @name = "#{env[:domain_name]}.img" # Verify the volume doesn't exist already. domain_volume = ProviderLibvirt::Util::Collection.find_matching( env[:libvirt_compute].volumes.all, @name) raise Errors::DomainVolumeExists if domain_volume # Get path to backing image - box volume. box_volume = ProviderLibvirt::Util::Collection.find_matching( env[:libvirt_compute].volumes.all, env[:box_volume_name]) @backing_file = box_volume.path # Virtual size of image. Same as box image size. @capacity = env[:machine].box.['virtual_size'] #G # Create new volume from xml template. Fog currently doesn't support # volume snapshots directly. begin domain_volume = env[:libvirt_compute].volumes.create( :xml => to_xml('volume_snapshot'), :pool_name => config.storage_pool_name) rescue Fog::Errors::Error => e raise Errors::FogDomainVolumeCreateError, :error_message => e. end @app.call(env) end |