Add resize for disks
Also add warnings in case disk resize request is smaller than original disk size.
This commit is contained in:
parent
7e686e6f70
commit
4df346c5c6
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user