From 46e0d09ce6da760445b121031b6efde90d134c60 Mon Sep 17 00:00:00 2001 From: Darragh Bailey Date: Fri, 25 Nov 2016 16:08:26 +0000 Subject: [PATCH] Fix separate storage config blocks device assignment Move device assignment for CDROM's and disk storage to occur during finalize, to ensure that storage config blocks are merged before assigning devices. This ensures that defining multiple storage config blocks within the same or different Vagrantfiles that are merged, works as expected to create multiple separate storage devices without needing to explicitly define the dev name. Fixes #655 --- lib/vagrant-libvirt/config.rb | 10 ++++++++-- spec/unit/config_spec.rb | 6 ++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb index 30acc03..325b38c 100644 --- a/lib/vagrant-libvirt/config.rb +++ b/lib/vagrant-libvirt/config.rb @@ -432,7 +432,6 @@ module VagrantPlugins # as will the address unit number (unit=0, unit=1, etc) options = { - :dev => self._get_cdrom_dev(@cdroms), :bus => "ide", :path => nil, }.merge(options) @@ -448,7 +447,6 @@ module VagrantPlugins def _handle_disk_storage(options={}) options = { - :device => _get_device(@disks), :type => 'qcow2', :size => '10G', # matches the fog default :path => nil, @@ -586,7 +584,15 @@ module VagrantPlugins # Storage @disks = [] if @disks == UNSET_VALUE + @disks.map! do |disk| + disk[:device] = _get_device(@disks) if disk[:device].nil? + disk + end @cdroms = [] if @cdroms == UNSET_VALUE + @cdroms.map! do |cdrom| + cdrom[:dev] = _get_cdrom_dev(@cdroms) if cdrom[:dev].nil? + cdrom + end # Inputs @inputs = [{:type => "mouse", :bus => "ps2"}] if @inputs == UNSET_VALUE diff --git a/spec/unit/config_spec.rb b/spec/unit/config_spec.rb index 0fb97a2..b6a677f 100644 --- a/spec/unit/config_spec.rb +++ b/spec/unit/config_spec.rb @@ -74,8 +74,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do end context "without devices given" do - xit "pending device assignment in finalize " + - "should merge disks with different devices assigned automatically" do + it "should merge disks with different devices assigned automatically" do one.storage(:file) two.storage(:file) subject.finalize! @@ -97,8 +96,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do end context "without devs given" do - xit "pending cdroms merging support and device assignment in finalize " + - "should merge cdroms with different devs assigned automatically" do + it "should merge cdroms with different devs assigned automatically" do one.storage(:file, :device => :cdrom) two.storage(:file, :device => :cdrom) subject.finalize!