From fe7705e69474f688bea238ad0eeecf25851bc388 Mon Sep 17 00:00:00 2001 From: Brian Cain Date: Tue, 7 Apr 2020 09:47:26 -0700 Subject: [PATCH] Update how disk_ext default is set Prior to this commit, the default value of disk_ext was set in the finalize! method, and was really only valid for the virtualbox provider. This commit updates that by moving the step into the validate function, which has access to the machines provider. --- plugins/kernel_v2/config/disk.rb | 15 ++++++++++++--- test/unit/plugins/kernel_v2/config/disk_test.rb | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) 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