Use existing disk structure rather than finding port/device again
This commit is contained in:
parent
e2c844db74
commit
60ef0d7d9c
@ -338,9 +338,6 @@ module VagrantPlugins
|
||||
def self.resize_disk(machine, disk_config, defined_disk, controller)
|
||||
machine.ui.detail(I18n.t("vagrant.cap.configure_disks.resize_disk", name: disk_config.name), prefix: true)
|
||||
|
||||
# grab disk to be resized port and device number
|
||||
disk_info = machine.provider.driver.get_port_and_device(defined_disk[:uuid])
|
||||
|
||||
if defined_disk[:storage_format] == "VMDK"
|
||||
LOGGER.warn("Disk type VMDK cannot be resized in VirtualBox. Vagrant will convert disk to VDI format to resize first, and then convert resized disk back to VMDK format")
|
||||
|
||||
@ -356,7 +353,7 @@ module VagrantPlugins
|
||||
begin
|
||||
# Danger Zone
|
||||
# remove and close original volume
|
||||
machine.provider.driver.remove_disk(controller.name, disk_info[:port], disk_info[:device])
|
||||
machine.provider.driver.remove_disk(controller.name, defined_disk[:port], defined_disk[:device])
|
||||
# Create a backup of the original disk if something goes wrong
|
||||
LOGGER.warn("Making a backup of the original disk at #{defined_disk[:location]}")
|
||||
FileUtils.mv(defined_disk[:location], backup_disk_location)
|
||||
@ -368,8 +365,8 @@ module VagrantPlugins
|
||||
# clone back to original vmdk format and attach resized disk
|
||||
vmdk_disk_file = machine.provider.driver.vdi_to_vmdk(vdi_disk_file)
|
||||
machine.provider.driver.attach_disk(controller.name,
|
||||
disk_info[:port],
|
||||
disk_info[:device],
|
||||
defined_disk[:port],
|
||||
defined_disk[:device],
|
||||
"hdd",
|
||||
vmdk_disk_file)
|
||||
rescue ScriptError, SignalException, StandardError
|
||||
@ -377,7 +374,7 @@ module VagrantPlugins
|
||||
machine.ui.error(I18n.t("vagrant.cap.configure_disks.recovery_from_resize",
|
||||
location: original_disk[:location],
|
||||
name: machine.name))
|
||||
recover_from_resize(machine, disk_info, backup_disk_location, original_disk, vdi_disk_file, controller)
|
||||
recover_from_resize(machine, defined_disk, backup_disk_location, original_disk, vdi_disk_file, controller)
|
||||
raise
|
||||
ensure
|
||||
# Remove backup disk file if all goes well
|
||||
@ -398,7 +395,7 @@ module VagrantPlugins
|
||||
end
|
||||
|
||||
disk_metadata = { uuid: defined_disk[:uuid], name: disk_config.name, controller: controller.name,
|
||||
port: disk_info[:port], device: disk_info[:device] }
|
||||
port: defined_disk[:port], device: defined_disk[:device] }
|
||||
|
||||
disk_metadata
|
||||
end
|
||||
|
||||
@ -484,9 +484,6 @@ describe VagrantPlugins::ProviderVirtualBox::Cap::ConfigureDisks do
|
||||
expect(FileUtils).to receive(:mv).with(vmdk_disk_file, "#{vmdk_disk_file}.backup").
|
||||
and_return(true)
|
||||
|
||||
expect(driver).to receive(:get_port_and_device).with("12345").
|
||||
and_return(attach_info)
|
||||
|
||||
expect(driver).to receive(:vmdk_to_vdi).with(all_disks[0][:location]).
|
||||
and_return(vdi_disk_file)
|
||||
|
||||
@ -516,9 +513,6 @@ describe VagrantPlugins::ProviderVirtualBox::Cap::ConfigureDisks do
|
||||
expect(FileUtils).to receive(:mv).with(vmdk_disk_file, "#{vmdk_disk_file}.backup").
|
||||
and_return(true)
|
||||
|
||||
expect(driver).to receive(:get_port_and_device).with("12345").
|
||||
and_return(attach_info)
|
||||
|
||||
expect(driver).to receive(:vmdk_to_vdi).with(all_disks[0][:location]).
|
||||
and_return(vdi_disk_file)
|
||||
|
||||
@ -530,7 +524,7 @@ describe VagrantPlugins::ProviderVirtualBox::Cap::ConfigureDisks do
|
||||
|
||||
allow(driver).to receive(:vdi_to_vmdk).and_raise(StandardError)
|
||||
|
||||
expect(subject).to receive(:recover_from_resize).with(machine, attach_info, "#{vmdk_disk_file}.backup", all_disks[0], vdi_disk_file, controller)
|
||||
expect(subject).to receive(:recover_from_resize).with(machine, all_disks[0], "#{vmdk_disk_file}.backup", all_disks[0], vdi_disk_file, controller)
|
||||
|
||||
expect{subject.resize_disk(machine, disk_config, all_disks[0], controller)}.to raise_error(Exception)
|
||||
end
|
||||
@ -543,9 +537,6 @@ describe VagrantPlugins::ProviderVirtualBox::Cap::ConfigureDisks do
|
||||
it "resizes the disk" do
|
||||
expect(driver).to receive(:resize_disk).with(all_disks[1][:location], disk_config.size.to_i)
|
||||
|
||||
expect(driver).to receive(:get_port_and_device).with(all_disks[1][:uuid]).
|
||||
and_return({port: "1", device: "0"})
|
||||
|
||||
subject.resize_disk(machine, disk_config, all_disks[1], controller)
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user