Environment#default_provider

This commit is contained in:
Mitchell Hashimoto 2012-12-22 15:00:35 -08:00
parent 1ee470a551
commit 128c06e78d
4 changed files with 31 additions and 8 deletions

View File

@ -122,6 +122,16 @@ module Vagrant
# Helpers # Helpers
#--------------------------------------------------------------- #---------------------------------------------------------------
# This returns the provider name for the default provider for this
# environment. The provider returned is currently hardcoded to "virtualbox"
# but one day should be a detected valid, best-case provider for this
# environment.
#
# @return [Symbol] Name of the default provider.
def default_provider
:virtualbox
end
# The path to the `dotfile`, which contains the persisted UUID of # The path to the `dotfile`, which contains the persisted UUID of
# the VM if it exists. # the VM if it exists.
# #

View File

@ -61,8 +61,9 @@ module Vagrant
# specific VM name is specified. # specific VM name is specified.
# #
# @param [String] name The name of the VM. Nil if every VM. # @param [String] name The name of the VM. Nil if every VM.
# @param [Boolean] single_target If true, then an exception will be # @param [Hash] options Additional tweakable settings.
# raised if more than one target is found. # @option options [Boolean] :single_target If true, then an
# exception will be raised if more than one target is found.
def with_target_vms(names=nil, options=nil) def with_target_vms(names=nil, options=nil)
# Using VMs requires a Vagrant environment to be properly setup # Using VMs requires a Vagrant environment to be properly setup
raise Errors::NoEnvironmentError if !@env.root_path raise Errors::NoEnvironmentError if !@env.root_path
@ -74,6 +75,9 @@ module Vagrant
names ||= [] names ||= []
names = [names] if !names.is_a?(Array) names = [names] if !names.is_a?(Array)
# The provider that we'll be loading up.
provider = @env.default_provider
# First determine the proper array of VMs. # First determine the proper array of VMs.
machines = [] machines = []
if names.length > 0 if names.length > 0
@ -85,14 +89,14 @@ module Vagrant
@env.machine_names.each do |machine_name| @env.machine_names.each do |machine_name|
if machine_name =~ regex if machine_name =~ regex
machines << @env.machine(machine_name, :virtualbox) machines << @env.machine(machine_name, provider)
end end
end end
raise Errors::VMNoMatchError if machines.empty? raise Errors::VMNoMatchError if machines.empty?
else else
# String name, just look for a specific VM # String name, just look for a specific VM
machines << @env.machine(name.to_sym, :virtualbox) machines << @env.machine(name.to_sym, provider)
raise Errors::VMNotFoundError, :name => name if !machines[0] raise Errors::VMNotFoundError, :name => name if !machines[0]
end end
end end
@ -100,7 +104,7 @@ module Vagrant
# No name was given, so we return every VM in the order # No name was given, so we return every VM in the order
# configured. # configured.
machines = @env.machine_names.map do |machine_name| machines = @env.machine_names.map do |machine_name|
@env.machine(machine_name, :virtualbox) @env.machine(machine_name, provider)
end end
end end

View File

@ -72,6 +72,12 @@ describe Vagrant::Environment do
end end
end end
describe "default provider" do
it "should return virtualbox" do
instance.default_provider.should == :virtualbox
end
end
describe "copying the private SSH key" do describe "copying the private SSH key" do
it "copies the SSH key into the home directory" do it "copies the SSH key into the home directory" do
env = isolated_environment env = isolated_environment

View File

@ -53,8 +53,11 @@ describe Vagrant::Plugin::V2::Command do
end end
end end
let(:default_provider) { :virtualbox }
let(:environment) do let(:environment) do
env = double("environment") env = double("environment")
env.stub(:default_provider => default_provider)
env.stub(:root_path => "foo") env.stub(:root_path => "foo")
env env
end end
@ -76,8 +79,8 @@ describe Vagrant::Plugin::V2::Command do
bar_vm.stub(:name).and_return("bar") bar_vm.stub(:name).and_return("bar")
environment.stub(:machine_names => [:foo, :bar]) environment.stub(:machine_names => [:foo, :bar])
environment.stub(:machine).with(:foo, :virtualbox).and_return(foo_vm) environment.stub(:machine).with(:foo, default_provider).and_return(foo_vm)
environment.stub(:machine).with(:bar, :virtualbox).and_return(bar_vm) environment.stub(:machine).with(:bar, default_provider).and_return(bar_vm)
vms = [] vms = []
instance.with_target_vms do |vm| instance.with_target_vms do |vm|
@ -98,7 +101,7 @@ describe Vagrant::Plugin::V2::Command do
it "yields the given VM if a name is given" do it "yields the given VM if a name is given" do
foo_vm = double("foo") foo_vm = double("foo")
environment.stub(:machine).with(:foo, :virtualbox).and_return(foo_vm) environment.stub(:machine).with(:foo, default_provider).and_return(foo_vm)
vms = [] vms = []
instance.with_target_vms("foo") { |vm| vms << vm } instance.with_target_vms("foo") { |vm| vms << vm }