kernel/v2: default all configs properly, remove config/default.rb

This commit is contained in:
Mitchell Hashimoto 2014-02-05 15:35:37 -08:00
parent 226dbccef8
commit 5030a16f84
13 changed files with 182 additions and 49 deletions

View File

@ -1,34 +0,0 @@
Vagrant.configure("2") do |config|
config.vagrant.host = :detect
config.ssh.forward_agent = false
config.ssh.forward_x11 = false
config.ssh.guest_port = 22
config.ssh.keep_alive = true
config.ssh.shell = "bash -l"
config.ssh.default.username = "vagrant"
config.vm.usable_port_range = (2200..2250)
config.vm.box_url = nil
config.vm.base_mac = nil
config.vm.boot_timeout = 300
config.vm.graceful_halt_timeout = 60
# Share SSH locally by default
config.vm.network :forwarded_port,
guest: 22,
host: 2222,
host_ip: "127.0.0.1",
id: "ssh",
auto_correct: true
# Share the root folder. This can then be overridden by
# other Vagrantfiles, if they wish.
config.vm.synced_folder ".", "/vagrant"
config.nfs.map_uid = :auto
config.nfs.map_gid = :auto
config.package.name = 'package.box'
end

View File

@ -252,14 +252,13 @@ module Vagrant
# managing. Then, the actual individual configuration is loaded for
# each {#machine} call.
@config_loader = Config::Loader.new(Config::VERSIONS, Config::VERSIONS_ORDER)
@config_loader.set(:default, File.expand_path("config/default.rb", Vagrant.source_root))
@config_loader.set(:home, home_vagrantfile) if home_vagrantfile
@config_loader.set(:root, root_vagrantfile) if root_vagrantfile
# Make the initial call to get the "global" config. This is mostly
# only useful to get the list of machines that we are managing.
# Because of this, we ignore any warnings or errors.
@config_global, _ = @config_loader.load([:default, :home, :root])
@config_global, _ = @config_loader.load([:home, :root])
# Return the config
@config_global
@ -329,7 +328,7 @@ module Vagrant
vm_config_key = "vm_#{name}".to_sym
@config_loader.set(vm_config_key, sub_vm.config_procs)
config, config_warnings, config_errors = \
@config_loader.load([:default, :home, :root, vm_config_key])
@config_loader.load([:home, :root, vm_config_key])
# Determine the possible box formats for any boxes and find the box
box_formats = provider_options[:box_format] || provider
@ -365,7 +364,7 @@ module Vagrant
box_config_key = "box_#{box.name}_#{box.provider}".to_sym
@config_loader.set(box_config_key, box_vagrantfile)
config, config_warnings, config_errors = \
@config_loader.load([:default, box_config_key, :home, :root, vm_config_key])
@config_loader.load([box_config_key, :home, :root, vm_config_key])
end
end
@ -377,7 +376,7 @@ module Vagrant
provider_override_key = "vm_#{name}_#{config.vm.box}_#{provider}".to_sym
@config_loader.set(provider_override_key, provider_overrides)
config, config_warnings, config_errors = \
@config_loader.load([:default, box_config_key, :home, :root, vm_config_key, provider_override_key])
@config_loader.load([box_config_key, :home, :root, vm_config_key, provider_override_key])
end
if config.vm.box && original_box != config.vm.box

View File

@ -31,7 +31,8 @@ module VagrantPlugins
raise Vagrant::Errors::BoxNotFound, :name => box_name, :provider => box_provider if !box
# Repackage the box
output_path = Pathname.new(File.expand_path(@env.config_global.package.name, FileUtils.pwd))
output_name = @env.config_global.package.name || "package.box"
output_path = Pathname.new(File.expand_path(output_name, FileUtils.pwd))
box.repackage(output_path)
# Success, exit status 0

View File

@ -5,6 +5,14 @@ module VagrantPlugins
class PackageConfig < Vagrant.plugin("2", :config)
attr_accessor :name
def initialize
@name = UNSET_VALUE
end
def finalize!
@name = nil if @name == UNSET_VALUE
end
def to_s
"Package"
end

View File

@ -41,12 +41,13 @@ module VagrantPlugins
@forward_agent = false if @forward_agent == UNSET_VALUE
@forward_x11 = false if @forward_x11 == UNSET_VALUE
@guest_port = nil if @guest_port == UNSET_VALUE
@keep_alive = false if @keep_alive == UNSET_VALUE
@guest_port = 22 if @guest_port == UNSET_VALUE
@keep_alive = true if @keep_alive == UNSET_VALUE
@proxy_command = nil if @proxy_command == UNSET_VALUE
@pty = false if @pty == UNSET_VALUE
@shell = nil if @shell == UNSET_VALUE
@shell = "bash -l" if @shell == UNSET_VALUE
@default.username = "vagrant" if @default.username == UNSET_VALUE
@default.finalize!
end

View File

@ -10,7 +10,7 @@ module VagrantPlugins
end
def finalize!
@host = nil if @host == UNSET_VALUE
@host = :detect if @host == UNSET_VALUE
@host = @host.to_sym if @host
end

View File

@ -30,6 +30,7 @@ module VagrantPlugins
attr_reader :provisioners
def initialize
@base_mac = UNSET_VALUE
@boot_timeout = UNSET_VALUE
@box_download_ca_cert = UNSET_VALUE
@box_download_checksum = UNSET_VALUE
@ -41,6 +42,7 @@ module VagrantPlugins
@guest = UNSET_VALUE
@hostname = UNSET_VALUE
@provisioners = []
@usable_port_range = UNSET_VALUE
# Internal state
@__compiled_provider_configs = {}
@ -299,6 +301,7 @@ module VagrantPlugins
def finalize!
# Defaults
@base_mac = nil if @base_mac == UNSET_VALUE
@boot_timeout = 300 if @boot_timeout == UNSET_VALUE
@box_download_ca_cert = nil if @box_download_ca_cert == UNSET_VALUE
@box_download_checksum = nil if @box_download_checksum == UNSET_VALUE
@ -306,11 +309,15 @@ module VagrantPlugins
@box_download_client_cert = nil if @box_download_client_cert == UNSET_VALUE
@box_download_insecure = false if @box_download_insecure == UNSET_VALUE
@box_url = nil if @box_url == UNSET_VALUE
@graceful_halt_timeout = 300 if @graceful_halt_timeout == UNSET_VALUE
@graceful_halt_timeout = 60 if @graceful_halt_timeout == UNSET_VALUE
@guest = nil if @guest == UNSET_VALUE
@hostname = nil if @hostname == UNSET_VALUE
@hostname = @hostname.to_s if @hostname
if @usable_port_range == UNSET_VALUE
@usable_port_range = (2200..2250)
end
# Make sure that the download checksum is a string and that
# the type is a symbol
@box_download_checksum = "" if !@box_download_checksum
@ -330,8 +337,18 @@ module VagrantPlugins
# default VM which just inherits the rest of the configuration.
define(DEFAULT_VM_NAME) if defined_vm_keys.empty?
# Make sure the SSH forwarding is added if it doesn't exist
if !@__networks["ssh"]
network :forwarded_port,
guest: 22,
host: 2222,
host_ip: "127.0.0.1",
id: "ssh",
auto_correct: true
end
# Clean up some network configurations
@__networks.each do |type, opts|
@__networks.values.each do |type, opts|
if type == :forwarded_port
opts[:guest] = opts[:guest].to_i if opts[:guest]
opts[:host] = opts[:host].to_i if opts[:host]
@ -360,11 +377,17 @@ module VagrantPlugins
@__compiled_provider_configs[name] = config
end
# Finaliez all the provisioners
# Finalize all the provisioners
@provisioners.each do |p|
p.config.finalize! if !p.invalid?
end
# If we didn't share our current directory, then do it
# manually.
if !@__synced_folders["/vagrant"]
synced_folder(".", "/vagrant")
end
@__synced_folders.each do |id, options|
if options[:nfs]
options[:type] = :nfs

View File

@ -14,8 +14,8 @@ module VagrantPlugins
end
def finalize!
@map_uid = nil if @map_uid == UNSET_VALUE
@map_gid = nil if @map_gid == UNSET_VALUE
@map_uid = :auto if @map_uid == UNSET_VALUE
@map_gid = :auto if @map_gid == UNSET_VALUE
end
def to_s

View File

@ -0,0 +1,14 @@
require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/kernel_v2/config/package")
describe VagrantPlugins::Kernel_V2::PackageConfig do
subject { described_class.new }
describe "#name" do
it "defaults to nil" do
subject.finalize!
expect(subject.name).to be_nil
end
end
end

View File

@ -0,0 +1,14 @@
require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/kernel_v2/config/ssh")
describe VagrantPlugins::Kernel_V2::SSHConfig do
subject { described_class.new }
describe "#default" do
it "defaults to vagrant username" do
subject.finalize!
expect(subject.default.username).to eq("vagrant")
end
end
end

View File

@ -0,0 +1,20 @@
require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/kernel_v2/config/vagrant")
describe VagrantPlugins::Kernel_V2::VagrantConfig do
subject { described_class.new }
describe "#host" do
it "defaults to :detect" do
subject.finalize!
expect(subject.host).to eq(:detect)
end
it "symbolizes" do
subject.host = "foo"
subject.finalize!
expect(subject.host).to eq(:foo)
end
end
end

View File

@ -5,6 +5,45 @@ require Vagrant.source_root.join("plugins/kernel_v2/config/vm")
describe VagrantPlugins::Kernel_V2::VMConfig do
subject { described_class.new }
describe "#base_mac" do
it "defaults properly" do
subject.finalize!
expect(subject.base_mac).to be_nil
end
end
describe "#box_url" do
it "defaults properly" do
subject.finalize!
expect(subject.box_url).to be_nil
end
end
describe "#network(s)" do
it "defaults to forwarding SSH" do
subject.finalize!
n = subject.networks
expect(n.length).to eq(1)
expect(n[0][0]).to eq(:forwarded_port)
expect(n[0][1][:guest]).to eq(22)
expect(n[0][1][:host]).to eq(2222)
expect(n[0][1][:host_ip]).to eq("127.0.0.1")
expect(n[0][1][:id]).to eq("ssh")
end
it "turns all forwarded port ports to ints" do
subject.network "forwarded_port",
guest: "45", host: "4545", id: "test"
subject.finalize!
n = subject.networks.find do |type, data|
type == :forwarded_port && data[:id] == "test"
end
expect(n).to_not be_nil
expect(n[1][:guest]).to eq(45)
expect(n[1][:host]).to eq(4545)
end
end
describe "#provision" do
it "stores the provisioners" do
subject.provision("shell", inline: "foo")
@ -100,4 +139,31 @@ describe VagrantPlugins::Kernel_V2::VMConfig do
end
end
end
describe "#synced_folder(s)" do
it "defaults to sharing the current directory" do
subject.finalize!
sf = subject.synced_folders
expect(sf.length).to eq(1)
expect(sf).to have_key("/vagrant")
expect(sf["/vagrant"][:disabled]).to_not be
end
it "allows overriding settings on the /vagrant sf" do
subject.synced_folder(".", "/vagrant", disabled: true)
subject.finalize!
sf = subject.synced_folders
expect(sf.length).to eq(1)
expect(sf).to have_key("/vagrant")
expect(sf["/vagrant"][:disabled]).to be_true
end
end
describe "#usable_port_range" do
it "defaults properly" do
subject.finalize!
expect(subject.usable_port_range).to eq(
Range.new(2200, 2250))
end
end
end

View File

@ -0,0 +1,21 @@
require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/synced_folders/nfs/config")
describe VagrantPlugins::SyncedFolderNFS::Config do
subject { described_class.new }
describe "#map_gid" do
it "defaults to :auto" do
subject.finalize!
expect(subject.map_gid).to eq(:auto)
end
end
describe "#map_uid" do
it "defaults to nil" do
subject.finalize!
expect(subject.map_uid).to eq(:auto)
end
end
end