Begin to add code for resizing VMDK type disks

This commit is contained in:
Brian Cain 2019-12-13 10:23:03 -08:00
parent 4df346c5c6
commit fcc9c55fa0
No known key found for this signature in database
GPG Key ID: 9FC4639B2E4510A0
2 changed files with 25 additions and 9 deletions

View File

@ -125,21 +125,34 @@ module VagrantPlugins
port
end
def self.resize_disk(machine, disk_config, defined_disk)
# check if vmdk (probably)
# if so, convert
# then resize
# if converted, convert back
# reattach??
# done
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")
# How to:
# grab disks port and device number
# clone disk to vdi formatted disk
# detatch vmdk disk??
# resize vdi
# clone disk to vmdk
# attach vmdk to original port/device
# delete vdi
# delete vmdk
#
# TODO: IF any of the above steps fail, display a useful error message
# telling the user how to recover
#
# Vagrant could also have a "rescue" here where in the case of failure, it simply
# reattaches the original disk
else
machine.provider.driver.resize_disk(defined_disk["Location"], disk_config.size.to_i)
end
end
def self.vmdk_to_vdi(driver)
def self.vmdk_to_vdi(driver, defined_disk)
LOGGER.warn("Converting disk from vmdk to vdi format")
end
def self.vdi_to_vmdk(driver)
def self.vdi_to_vmdk(driver, defined_disk)
LOGGER.warn("Converting disk from vdi to vmdk format")
end
end

View File

@ -433,6 +433,9 @@ module VagrantPlugins
execute("createmedium", '--filename', disk_file, '--sizebyte', disk_size.to_i.to_s, '--format', disk_format)
end
def clone_disk(disk_file, disk_format="VDI")
end
# Controller-Port-Device looks like:
# SATA Controller-ImageUUID-0-0 (sub out ImageUUID)
# - Controller: SATA Controller