From 8739c04aa97db1e3a1166f5a1cc101dfcfddd50e Mon Sep 17 00:00:00 2001 From: Jeff Bonhag Date: Thu, 28 May 2020 11:28:36 -0400 Subject: [PATCH] Mock out storage controllers --- .../providers/virtualbox/cap/cleanup_disks.rb | 4 ++-- .../virtualbox/cap/cleanup_disks_test.rb | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/plugins/providers/virtualbox/cap/cleanup_disks.rb b/plugins/providers/virtualbox/cap/cleanup_disks.rb index d1e96b095..4c215118e 100644 --- a/plugins/providers/virtualbox/cap/cleanup_disks.rb +++ b/plugins/providers/virtualbox/cap/cleanup_disks.rb @@ -26,8 +26,8 @@ module VagrantPlugins # @param [VagrantPlugins::Kernel_V2::VagrantConfigDisk] defined_disks # @param [Hash] disk_meta - A hash of all the previously defined disks from the last configure_disk action def self.handle_cleanup_disk(machine, defined_disks, disk_meta) - vm_info = machine.provider.driver.show_vm_info - primary_disk = vm_info["SATA Controller-ImageUUID-0-0"] + storage_controller = machine.provider.driver.storage_controllers.detect { |c| c[:type] == "IntelAhci" } + primary_disk = storage_controller[:attachments].detect { |a| a[:port] == "0" && a[:device] == "0" }[:uuid] unless disk_meta.nil? disk_meta.each do |d| diff --git a/test/unit/plugins/providers/virtualbox/cap/cleanup_disks_test.rb b/test/unit/plugins/providers/virtualbox/cap/cleanup_disks_test.rb index 918846cf7..3b92bf683 100644 --- a/test/unit/plugins/providers/virtualbox/cap/cleanup_disks_test.rb +++ b/test/unit/plugins/providers/virtualbox/cap/cleanup_disks_test.rb @@ -33,8 +33,11 @@ describe VagrantPlugins::ProviderVirtualBox::Cap::CleanupDisks do let(:vm_info) { {"SATA Controller-ImageUUID-0-0" => "12345", "SATA Controller-ImageUUID-1-0" => "67890"} } - let(:storage_controllers) { - } + let(:storage_controllers) { [{name: "SATA Controller", + type: "IntelAhci", + maxportcount: 30, + attachments: [{port: "0", device: "0", uuid: "12345"}, + {port: "1", device: "0", uuid: "67890"}]}] } before do allow(Vagrant::Util::Experimental).to receive(:feature_enabled?).and_return(true) @@ -104,6 +107,10 @@ describe VagrantPlugins::ProviderVirtualBox::Cap::CleanupDisks do describe "#handle_cleanup_dvd" do let(:vm_info) { {"IDE Controller-ImageUUID-0-0" => "1234" } } + let(:storage_controllers) { [{name: "IDE Controller", + type: "PIIX4", + maxportcount: 2, + attachments: [{port: "0", device: "0", uuid: "1234"}]}] } let(:disk_meta_file) { {dvd: [{"uuid" => "1234", "name" => "iso"}]} } let(:defined_disks) { [] } @@ -117,6 +124,12 @@ describe VagrantPlugins::ProviderVirtualBox::Cap::CleanupDisks do let(:vm_info) { {"IDE Controller-ImageUUID-0-0" => "1234", "IDE Controller-ImageUUID-0-1" => "1234"} } + let(:storage_controllers) { [{name: "IDE Controller", + type: "PIIX4", + maxportcount: 2, + attachments: [{port: "0", device: "0", uuid: "1234"}, + {port: "0", device: "1", uuid: "1234"}]}] } + it "removes all media with that UUID" do expect(driver).to receive(:remove_disk).with("0", "0", "IDE Controller").and_return(true) expect(driver).to receive(:remove_disk).with("0", "1", "IDE Controller").and_return(true)