Check for adapter collisions

This commit is contained in:
Mitchell Hashimoto 2012-01-03 09:34:32 -08:00
parent 20edb5d05a
commit 7982f01f2e
3 changed files with 23 additions and 0 deletions

View File

@ -46,6 +46,9 @@ module Vagrant
@logger.debug("Assigning adapter locations...")
assign_adapter_locations(adapters)
# Verify that our adapters are good just prior to enabling them.
verify_adapters(adapters)
# Create all the network interfaces
@logger.info("Enabling adapters...")
env[:ui].info I18n.t("vagrant.actions.vm.network.preparing")
@ -100,6 +103,17 @@ module Vagrant
end
end
# Verifies that the adapter configurations look good. This will
# raise an exception in the case that any errors occur.
def verify_adapters(adapters)
# Verify that there are no collisions in the adapters being used.
used = Set.new
adapters.each do |adapter|
raise Errors::NetworkAdapterCollision if used.include?(adapter[:adapter])
used.add(adapter[:adapter])
end
end
# Assigns the actual interface number of a network based on the
# enabled NICs on the virtual machine.
#

View File

@ -203,6 +203,11 @@ module Vagrant
error_key(:multi_vm_target_required)
end
class NetworkAdapterCollision < VagrantError
status_code(65)
error_key(:adapter_collision, "vagrant.actions.vm.network")
end
class NetworkCollision < VagrantError
status_code(29)
error_key(:collides, "vagrant.actions.vm.host_only_network")

View File

@ -395,6 +395,10 @@ en:
MAC address is typically up to the box and box maintiner. Please contact
the relevant person to solve this issue.
network:
adapter_collision: |-
More than one network have been assigned to the same adapter. At
this point this error is actually indicative of an internal error
within Vagrant. Please report this as a bug.
configuring: |-
Configuring and enabling network interfaces...
no_adapters: |-