diff --git a/plugins/kernel_v2/config/disk.rb b/plugins/kernel_v2/config/disk.rb index 5c3daf44f..2dc6a2909 100644 --- a/plugins/kernel_v2/config/disk.rb +++ b/plugins/kernel_v2/config/disk.rb @@ -107,8 +107,6 @@ module VagrantPlugins @size = nil if @size == UNSET_VALUE @file = nil if @file == UNSET_VALUE - @disk_ext = "vdi" if @disk_ext == UNSET_VALUE - if @primary == UNSET_VALUE @primary = false end @@ -135,7 +133,18 @@ module VagrantPlugins types: DEFAULT_DISK_TYPES.join(', ')) end - if @disk_ext + if @disk_ext == UNSET_VALUE + # Work around to finalize disk_ext with a valid default per-provider + if machine.provider_name == :virtualbox + @disk_ext = "vdi" + elsif machine.provider_name == :vmware_desktop + @disk_ext = nil + elsif machine.provider_name == :hyperv + @disk_ext = "vhdx" + else + @disk_ext = "vdi" + end + elsif @disk_ext @disk_ext = @disk_ext.downcase if machine.provider.capability?(:validate_disk_ext) diff --git a/test/unit/plugins/kernel_v2/config/disk_test.rb b/test/unit/plugins/kernel_v2/config/disk_test.rb index 6b6879f37..ebb0f4103 100644 --- a/test/unit/plugins/kernel_v2/config/disk_test.rb +++ b/test/unit/plugins/kernel_v2/config/disk_test.rb @@ -10,7 +10,7 @@ describe VagrantPlugins::Kernel_V2::VagrantConfigDisk do subject { described_class.new(type) } let(:provider) { double("provider") } - let(:machine) { double("machine", provider: provider) } + let(:machine) { double("machine", provider: provider, provider_name: :virtualbox) } def assert_invalid