Add virtualbox capability for validating disk extension types

This commit is contained in:
Brian Cain 2020-02-12 13:21:09 -08:00
parent 2174f4c219
commit c5f4534487
No known key found for this signature in database
GPG Key ID: 9FC4639B2E4510A0
3 changed files with 47 additions and 6 deletions

View File

@ -11,7 +11,6 @@ module VagrantPlugins
#-------------------------------------------------------------------
DEFAULT_DISK_TYPES = [:disk, :dvd, :floppy].freeze
DEFAULT_DISK_EXT = ["vdi", "vmdk", "vhd", "vhdx"].freeze
# Note: This value is for internal use only
#
@ -136,13 +135,18 @@ module VagrantPlugins
types: DEFAULT_DISK_TYPES.join(', '))
end
if !DEFAULT_DISK_EXT.include?(@disk_ext)
errors << I18n.t("vagrant.config.disk.invalid_ext", ext: @disk_ext,
name: @name, exts: DEFAULT_DISK_EXT.join(', ') )
end
if @disk_ext
@disk_ext = @disk_ext.downcase
if machine.provider.capability?(:validate_disk_ext)
if !machine.provider.capability(:validate_disk_ext, @disk_ext)
errors << I18n.t("vagrant.config.disk.invalid_ext", ext: @disk_ext,
name: @name,
exts: machine.provider.capability(:get_default_disk_ext).join(', '))
end
else
@logger.warn("No provider capability defined to validate 'disk_ext' type")
end
end
if @size && !@size.is_a?(Integer)

View File

@ -0,0 +1,27 @@
require "log4r"
module VagrantPlugins
module ProviderVirtualBox
module Cap
module ValidateDiskExt
LOGGER = Log4r::Logger.new("vagrant::plugins::virtualbox::validate_disk_ext")
# The default set of disk formats that VirtualBox supports
DEFAULT_DISK_EXT = ["vdi", "vmdk", "vhd"].freeze
# @param [Vagrant::Machine] machine
# @param [String] disk_ext
# @return [Bool]
def self.validate_disk_ext(machine, disk_ext)
DEFAULT_DISK_EXT.include?(disk_ext)
end
# @param [Vagrant::Machine] machine
# @return [Array]
def self.get_default_disk_ext(machine)
DEFAULT_DISK_EXT
end
end
end
end
end

View File

@ -49,6 +49,16 @@ module VagrantPlugins
Cap::CleanupDisks
end
provider_capability(:virtualbox, :validate_disk_ext) do
require_relative "cap/validate_disk_ext"
Cap::ValidateDiskExt
end
provider_capability(:virtualbox, :get_default_disk_ext) do
require_relative "cap/validate_disk_ext"
Cap::ValidateDiskExt
end
provider_capability(:virtualbox, :snapshot_list) do
require_relative "cap"
Cap