#952 : support different storage pool for base box snapshot (#953)

This commit is contained in:
Michael Ablassmeier 2018-12-04 17:43:38 +01:00 committed by Dmitry Vasilets
parent 5f7841ffff
commit d5ba63d413
3 changed files with 20 additions and 2 deletions

View File

@ -81,6 +81,7 @@ module VagrantPlugins
# Storage
@storage_pool_name = config.storage_pool_name
@snapshot_pool_name = config.snapshot_pool_name
@disks = config.disks
@cdroms = config.cdroms
@ -119,9 +120,15 @@ module VagrantPlugins
# Get path to domain image from the storage pool selected if we have a box.
if env[:machine].config.vm.box
if @snapshot_pool_name != 'default'
pool_name = @snapshot_pool_name
else
pool_name = @storage_pool_name
end
@logger.debug "Search for volume in pool: #{pool_name}"
actual_volumes =
env[:machine].provider.driver.connection.volumes.all.select do |x|
x.pool_name == @storage_pool_name
x.pool_name == pool_name
end
domain_volume = ProviderLibvirt::Util::Collection.find_matching(
actual_volumes, "#{@name}.img"

View File

@ -71,9 +71,15 @@ module VagrantPlugins
Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS |
Nokogiri::XML::Node::SaveOptions::FORMAT
)
if config.snapshot_pool_name != 'default'
pool_name = config.snapshot_pool_name
else
pool_name = config.storage_pool_name
end
@logger.debug "Using pool #{pool_name} for base box snapshot"
domain_volume = env[:machine].provider.driver.connection.volumes.create(
xml: xml,
pool_name: config.storage_pool_name
pool_name: pool_name
)
rescue Fog::Errors::Error => e
raise Errors::FogDomainVolumeCreateError,

View File

@ -42,6 +42,9 @@ module VagrantPlugins
attr_accessor :storage_pool_name
attr_accessor :storage_pool_path
# Libvirt storage pool where the base image snapshot shall be stored
attr_accessor :snapshot_pool_name
# Turn on to prevent hostname conflicts
attr_accessor :random_hostname
@ -170,6 +173,7 @@ module VagrantPlugins
@password = UNSET_VALUE
@id_ssh_key_file = UNSET_VALUE
@storage_pool_name = UNSET_VALUE
@snapshot_pool_name = UNSET_VALUE
@random_hostname = UNSET_VALUE
@management_network_device = UNSET_VALUE
@management_network_name = UNSET_VALUE
@ -638,6 +642,7 @@ module VagrantPlugins
@password = nil if @password == UNSET_VALUE
@id_ssh_key_file = 'id_rsa' if @id_ssh_key_file == UNSET_VALUE
@storage_pool_name = 'default' if @storage_pool_name == UNSET_VALUE
@snapshot_pool_name = 'default' if @snapshot_pool_name == UNSET_VALUE
@storage_pool_path = nil if @storage_pool_path == UNSET_VALUE
@random_hostname = false if @random_hostname == UNSET_VALUE
@management_network_device = 'virbr0' if @management_network_device == UNSET_VALUE