Ability to specify `:bridge` to networking [GH-655]

This commit is contained in:
Mitchell Hashimoto 2012-02-04 15:04:28 +01:00
parent 26d9636faf
commit a6a42b31df
3 changed files with 55 additions and 21 deletions

View File

@ -12,6 +12,8 @@
that are up as choices. [GH-701]
- More intelligent handling of the `certname` option for puppet
server. [GH-702]
- You may now explicitly set the network to bridge to in the Vagrantfile
using the `:bridge` parameter. [GH-655]
## 0.9.4 (January 28, 2012)

View File

@ -313,6 +313,7 @@ module Vagrant
return {
:adapter => nil,
:mac => nil,
:bridge => nil,
:auto_config => true
}.merge(options)
end
@ -322,7 +323,34 @@ module Vagrant
bridgedifs = @env[:vm].driver.read_bridged_interfaces
bridgedifs.delete_if { |interface| interface[:status] == "Down" }
# The name of the chosen bridge interface will be assigned to this
# variable.
chosen_bridge = nil
if config[:bridge]
@logger.debug("Bridge was directly specified in config, searching for: #{config[:bridge]}")
# Search for a matching bridged interface
bridgedifs.each do |interface|
if interface[:name].downcase == config[:bridge].downcase
@logger.debug("Specific bridge found as configured in the Vagrantfile. Using it.")
chosen_bridge = interface[:name]
break
end
end
# If one wasn't found, then we notify the user here.
if !chosen_bridge
@env[:ui].info I18n.t("vagrant.actions.vm.bridged_networking.specific_not_found",
:bridge => config[:bridge])
end
end
# If we still don't have a bridge chosen (this means that one wasn't
# specified in the Vagrantfile, or the bridge specified in the Vagrantfile
# wasn't found), then we fall back to the normal means of searchign for a
# bridged network.
if !chosen_bridge
if bridgedifs.length == 1
# One bridgable interface? Just use it.
chosen_bridge = bridgedifs[0][:name]
@ -349,6 +377,7 @@ module Vagrant
chosen_bridge = bridgedifs[choice - 1][:name]
end
end
@logger.info("Bridging adapter #{config[:adapter]} to #{chosen_bridge}")

View File

@ -299,6 +299,9 @@ en:
Enabling bridged network...
preparing: |-
Preparing bridged networking...
specific_not_found: |-
Specific bridge '%{bridge}' not found. You may be asked to specify
which network to bridge to.
check_box:
not_found: Box %{name} was not found. Fetching box from specified URL...
not_specified: |-