add backingstore parameters

This commit is contained in:
Cam Cope 2014-02-18 04:52:54 -05:00 committed by Paul Colomiets
parent 47cf361b98
commit a9248cb697
4 changed files with 24 additions and 4 deletions

View file

@ -7,7 +7,8 @@ module Vagrant
end end
def call(env) def call(env)
container_name = env[:machine].provider_config.container_name config = env[:machine].provider_config
container_name = config.container_name
case container_name case container_name
when :machine when :machine
@ -24,6 +25,8 @@ module Vagrant
env[:machine].provider.driver.create( env[:machine].provider.driver.create(
container_name, container_name,
config.backingstore,
config.backingstore_options,
env[:lxc_template_src], env[:lxc_template_src],
env[:lxc_template_config], env[:lxc_template_config],
env[:lxc_template_opts] env[:lxc_template_opts]

View file

@ -6,6 +6,12 @@ module Vagrant
# @return [Array] # @return [Array]
attr_reader :customizations attr_reader :customizations
# A string that contains the backing store type used with lxc-create -B
attr_accessor :backingstore
# Optional arguments for the backing store, such as --fssize, --fstype, ...
attr_accessor :backingstore_options
# A String that points to a file that acts as a wrapper for sudo commands. # A String that points to a file that acts as a wrapper for sudo commands.
# #
# This allows us to have a single entry when whitelisting NOPASSWD commands # This allows us to have a single entry when whitelisting NOPASSWD commands
@ -18,6 +24,8 @@ module Vagrant
def initialize def initialize
@customizations = [] @customizations = []
@backingstore = UNSET_VALUE
@backingstore_options = []
@sudo_wrapper = UNSET_VALUE @sudo_wrapper = UNSET_VALUE
@container_name = UNSET_VALUE @container_name = UNSET_VALUE
end end
@ -37,9 +45,16 @@ module Vagrant
@customizations << [key, value] @customizations << [key, value]
end end
# Stores options for backingstores like lvm, btrfs, etc
def backingstore_option(key, value)
@backingstore_options << [key, value]
end
def finalize! def finalize!
@sudo_wrapper = nil if @sudo_wrapper == UNSET_VALUE @sudo_wrapper = nil if @sudo_wrapper == UNSET_VALUE
@container_name = nil if @container_name == UNSET_VALUE @container_name = nil if @container_name == UNSET_VALUE
@backingstore = "none" if @backingstore == UNSET_VALUE
@existing_container_name = nil if @existing_container_name == UNSET_VALUE
end end
def validate(machine) def validate(machine)

View file

@ -51,12 +51,12 @@ module Vagrant
@sudo_wrapper.run('cat', base_path.join('config').to_s) @sudo_wrapper.run('cat', base_path.join('config').to_s)
end end
def create(name, template_path, config_file, template_options = {}) def create(name, backingstore, backingstore_options, template_path, config_file, template_options = {})
@cli.name = @container_name = name @cli.name = @container_name = name
import_template(template_path) do |template_name| import_template(template_path) do |template_name|
@logger.debug "Creating container..." @logger.debug "Creating container..."
@cli.create template_name, config_file, template_options @cli.create template_name, backingstore, backingstore_options, config_file, template_options
end end
end end

View file

@ -45,7 +45,7 @@ module Vagrant
end end
end end
def create(template, config_file, template_opts = {}) def create(template, backingstore, backingstore_options, config_file, template_opts = {})
if config_file if config_file
config_opts = ['-f', config_file] config_opts = ['-f', config_file]
end end
@ -54,6 +54,8 @@ module Vagrant
extra.unshift '--' unless extra.empty? extra.unshift '--' unless extra.empty?
run :create, run :create,
'-B', backingstore,
*(backingstore_options.to_a.flatten),
'--template', template, '--template', template,
'--name', @name, '--name', @name,
*(config_opts), *(config_opts),