Add resize for disks

Also add warnings in case disk resize request is smaller than original
disk size.
This commit is contained in:
Brian Cain 2019-12-13 10:22:33 -08:00
parent 7e686e6f70
commit 4df346c5c6
No known key found for this signature in database
GPG Key ID: 9FC4639B2E4510A0
2 changed files with 13 additions and 4 deletions

View File

@ -44,7 +44,7 @@ module VagrantPlugins
machine.ui.warn("Disk '#{disk.name}' not found in guest. Creating and attaching disk to guest...")
# create new disk and attach
create_disk(machine, disk)
elsif !compare_disk_state(disk, current_disk)
elsif compare_disk_state(machine, disk, current_disk)
machine.ui.warn("Disk '#{disk.name}' needs to be resized. Attempting to resize disk...", prefix: true)
resize_disk(machine, disk, current_disk)
else
@ -58,11 +58,18 @@ module VagrantPlugins
# @param [Kernel_V2::VagrantConfigDisk] disk_config
# @param [Hash] defined_disk
# @return [Boolean]
def self.compare_disk_state(disk_config, defined_disk)
def self.compare_disk_state(machine, disk_config, defined_disk)
requested_disk_size = Vagrant::Util::Numeric.bytes_to_megabytes(disk_config.size)
defined_disk_size = defined_disk["Capacity"].split(" ").first.to_f
return defined_disk_size == requested_disk_size
if defined_disk_size > requested_disk_size
machine.ui.warn("VirtualBox does not support shrinking disk size. Cannot shrink '#{disk_config.name}' disks size")
return false
elsif defined_disk_size < requested_disk_size
return true
else
return false
end
end
# Creates and attaches a disk to a machine

View File

@ -416,7 +416,9 @@ module VagrantPlugins
# todo: better error handling for this execute
# todo: MEDIUM changes if virtualbox is older than 5. Need a proper check/switch
# Maybe move this into version_4, then version_5
execute("modify#{MEDIUM}", disk_file, '--resize', disk_size_in_mb.to_s)
# if version 4, medium = "hd"
medium = "medium"
execute("modify#{medium}", disk_file, '--resizebyte', disk_size_in_mb.to_i.to_s)
end
# Creates a disk. Default format is VDI unless overridden