vagrantup 1.0.7 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +91 -0
- data/LICENSE +2 -2
- data/README.md +11 -13
- data/bin/vagrant +29 -5
- data/config/default.rb +14 -9
- data/contrib/bash/completion.sh +3 -0
- data/keys/README.md +3 -3
- data/lib/vagrant.rb +156 -102
- data/lib/vagrant/action.rb +26 -47
- data/lib/vagrant/action/builder.rb +49 -23
- data/lib/vagrant/action/builtin/box_add.rb +85 -0
- data/lib/vagrant/action/builtin/call.rb +67 -0
- data/lib/vagrant/action/builtin/config_validate.rb +30 -0
- data/lib/vagrant/action/builtin/confirm.rb +38 -0
- data/lib/vagrant/action/builtin/env_set.rb +24 -0
- data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
- data/lib/vagrant/action/builtin/handle_box_url.rb +43 -0
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +117 -0
- data/lib/vagrant/action/builtin/lock.rb +57 -0
- data/lib/vagrant/action/builtin/nfs.rb +117 -0
- data/lib/vagrant/action/builtin/provision.rb +70 -0
- data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
- data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
- data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
- data/lib/vagrant/action/general/package.rb +19 -18
- data/lib/vagrant/action/hook.rb +103 -0
- data/lib/vagrant/action/runner.rb +21 -5
- data/lib/vagrant/action/warden.rb +20 -9
- data/lib/vagrant/box.rb +75 -26
- data/lib/vagrant/box_collection.rb +301 -35
- data/lib/vagrant/cli.rb +20 -14
- data/lib/vagrant/config.rb +23 -9
- data/lib/vagrant/config/loader.rb +131 -36
- data/lib/vagrant/config/v1.rb +9 -0
- data/lib/vagrant/config/v1/dummy_config.rb +13 -0
- data/lib/vagrant/config/v1/loader.rb +105 -0
- data/lib/vagrant/config/v1/root.rb +60 -0
- data/lib/vagrant/config/v2.rb +9 -0
- data/lib/vagrant/config/v2/dummy_config.rb +13 -0
- data/lib/vagrant/config/v2/loader.rb +141 -0
- data/lib/vagrant/config/v2/root.rb +105 -0
- data/lib/vagrant/config/v2/util.rb +21 -0
- data/lib/vagrant/config/version_base.rb +80 -0
- data/lib/vagrant/downloaders/base.rb +0 -3
- data/lib/vagrant/downloaders/file.rb +10 -4
- data/lib/vagrant/downloaders/http.rb +29 -10
- data/lib/vagrant/environment.rb +447 -240
- data/lib/vagrant/errors.rb +138 -97
- data/lib/vagrant/hosts.rb +3 -12
- data/lib/vagrant/machine.rb +325 -0
- data/lib/vagrant/machine_state.rb +45 -0
- data/lib/vagrant/plugin.rb +3 -78
- data/lib/vagrant/plugin/v1.rb +19 -0
- data/lib/vagrant/plugin/v1/command.rb +169 -0
- data/lib/vagrant/plugin/v1/communicator.rb +98 -0
- data/lib/vagrant/plugin/v1/config.rb +112 -0
- data/lib/vagrant/plugin/v1/errors.rb +15 -0
- data/lib/vagrant/plugin/v1/guest.rb +92 -0
- data/lib/vagrant/plugin/v1/host.rb +66 -0
- data/lib/vagrant/plugin/v1/manager.rb +131 -0
- data/lib/vagrant/plugin/v1/plugin.rb +229 -0
- data/lib/vagrant/plugin/v1/provider.rb +68 -0
- data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
- data/lib/vagrant/plugin/v2.rb +22 -0
- data/lib/vagrant/plugin/v2/command.rb +234 -0
- data/lib/vagrant/plugin/v2/communicator.rb +98 -0
- data/lib/vagrant/plugin/v2/components.rb +29 -0
- data/lib/vagrant/plugin/v2/config.rb +101 -0
- data/lib/vagrant/plugin/v2/errors.rb +15 -0
- data/lib/vagrant/plugin/v2/guest.rb +92 -0
- data/lib/vagrant/plugin/v2/host.rb +66 -0
- data/lib/vagrant/plugin/v2/manager.rb +158 -0
- data/lib/vagrant/plugin/v2/plugin.rb +217 -0
- data/lib/vagrant/plugin/v2/provider.rb +69 -0
- data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
- data/lib/vagrant/registry.rb +43 -17
- data/lib/vagrant/ssh.rb +15 -9
- data/lib/vagrant/ui.rb +7 -5
- data/lib/vagrant/util/is_port_open.rb +1 -1
- data/lib/vagrant/util/platform.rb +19 -0
- data/lib/vagrant/util/retryable.rb +8 -2
- data/lib/vagrant/util/safe_exec.rb +2 -2
- data/lib/vagrant/util/scoped_hash_override.rb +45 -0
- data/lib/vagrant/util/ssh.rb +126 -0
- data/lib/vagrant/util/string_block_editor.rb +75 -0
- data/lib/vagrant/util/subprocess.rb +33 -10
- data/lib/vagrant/util/which.rb +43 -0
- data/lib/vagrant/version.rb +1 -1
- data/plugins/README.md +5 -0
- data/plugins/commands/box/command/add.rb +46 -0
- data/plugins/commands/box/command/list.rb +41 -0
- data/plugins/commands/box/command/remove.rb +37 -0
- data/plugins/commands/box/command/repackage.rb +43 -0
- data/plugins/commands/box/command/root.rb +75 -0
- data/plugins/commands/box/plugin.rb +15 -0
- data/plugins/commands/destroy/command.rb +31 -0
- data/plugins/commands/destroy/plugin.rb +18 -0
- data/plugins/commands/halt/command.rb +33 -0
- data/plugins/commands/halt/plugin.rb +18 -0
- data/{lib/vagrant/command/init.rb → plugins/commands/init/command.rb} +4 -4
- data/plugins/commands/init/plugin.rb +18 -0
- data/plugins/commands/package/command.rb +83 -0
- data/plugins/commands/package/plugin.rb +18 -0
- data/plugins/commands/plugin/action.rb +52 -0
- data/plugins/commands/plugin/action/bundler_check.rb +25 -0
- data/plugins/commands/plugin/action/install_gem.rb +70 -0
- data/plugins/commands/plugin/action/license_plugin.rb +54 -0
- data/plugins/commands/plugin/action/list_plugins.rb +54 -0
- data/plugins/commands/plugin/action/prune_gems.rb +149 -0
- data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
- data/plugins/commands/plugin/command/base.rb +22 -0
- data/plugins/commands/plugin/command/install.rb +39 -0
- data/plugins/commands/plugin/command/license.rb +31 -0
- data/plugins/commands/plugin/command/list.rb +28 -0
- data/plugins/commands/plugin/command/root.rb +75 -0
- data/plugins/commands/plugin/command/uninstall.rb +28 -0
- data/plugins/commands/plugin/gem_helper.rb +74 -0
- data/plugins/commands/plugin/plugin.rb +22 -0
- data/plugins/commands/plugin/state_file.rb +57 -0
- data/plugins/commands/provision/command.rb +34 -0
- data/plugins/commands/provision/plugin.rb +18 -0
- data/plugins/commands/reload/command.rb +37 -0
- data/plugins/commands/reload/plugin.rb +18 -0
- data/plugins/commands/resume/command.rb +25 -0
- data/plugins/commands/resume/plugin.rb +17 -0
- data/{lib/vagrant/command/ssh.rb → plugins/commands/ssh/command.rb} +17 -41
- data/plugins/commands/ssh/plugin.rb +17 -0
- data/{lib/vagrant/command/ssh_config.rb → plugins/commands/ssh_config/command.rb} +14 -16
- data/plugins/commands/ssh_config/plugin.rb +18 -0
- data/plugins/commands/status/command.rb +39 -0
- data/plugins/commands/status/plugin.rb +18 -0
- data/plugins/commands/suspend/command.rb +25 -0
- data/plugins/commands/suspend/plugin.rb +18 -0
- data/plugins/commands/up/command.rb +45 -0
- data/plugins/commands/up/plugin.rb +17 -0
- data/{lib/vagrant/command → plugins/commands/up}/start_mixins.rb +6 -6
- data/{lib/vagrant/communication/ssh.rb → plugins/communicators/ssh/communicator.rb} +139 -52
- data/plugins/communicators/ssh/plugin.rb +19 -0
- data/plugins/guests/arch/guest.rb +41 -0
- data/plugins/guests/arch/plugin.rb +15 -0
- data/{lib/vagrant/guest/debian.rb → plugins/guests/debian/guest.rb} +21 -13
- data/plugins/guests/debian/plugin.rb +15 -0
- data/{lib/vagrant/guest/fedora.rb → plugins/guests/fedora/guest.rb} +19 -14
- data/plugins/guests/fedora/plugin.rb +15 -0
- data/plugins/guests/freebsd/config.rb +13 -0
- data/plugins/guests/freebsd/guest.rb +70 -0
- data/plugins/guests/freebsd/plugin.rb +20 -0
- data/plugins/guests/gentoo/guest.rb +51 -0
- data/plugins/guests/gentoo/plugin.rb +15 -0
- data/plugins/guests/linux/config.rb +13 -0
- data/{lib/vagrant/guest/linux.rb → plugins/guests/linux/guest.rb} +35 -34
- data/plugins/guests/linux/plugin.rb +20 -0
- data/plugins/guests/openbsd/guest.rb +13 -0
- data/plugins/guests/openbsd/plugin.rb +15 -0
- data/{lib/vagrant/guest/redhat.rb → plugins/guests/redhat/guest.rb} +22 -15
- data/plugins/guests/redhat/plugin.rb +15 -0
- data/plugins/guests/solaris/config.rb +18 -0
- data/plugins/guests/solaris/guest.rb +73 -0
- data/plugins/guests/solaris/plugin.rb +20 -0
- data/plugins/guests/suse/guest.rb +24 -0
- data/plugins/guests/suse/plugin.rb +15 -0
- data/plugins/guests/ubuntu/guest.rb +44 -0
- data/plugins/guests/ubuntu/plugin.rb +15 -0
- data/{lib/vagrant/hosts/arch.rb → plugins/hosts/arch/host.rb} +18 -5
- data/plugins/hosts/arch/plugin.rb +15 -0
- data/{lib/vagrant/hosts/bsd.rb → plugins/hosts/bsd/host.rb} +16 -11
- data/plugins/hosts/bsd/plugin.rb +15 -0
- data/{lib/vagrant/hosts/fedora.rb → plugins/hosts/fedora/host.rb} +8 -4
- data/plugins/hosts/fedora/plugin.rb +15 -0
- data/{lib/vagrant/hosts/freebsd.rb → plugins/hosts/freebsd/host.rb} +10 -8
- data/plugins/hosts/freebsd/plugin.rb +15 -0
- data/{lib/vagrant/hosts/gentoo.rb → plugins/hosts/gentoo/host.rb} +7 -3
- data/plugins/hosts/gentoo/plugin.rb +15 -0
- data/{lib/vagrant/hosts/linux.rb → plugins/hosts/linux/host.rb} +12 -11
- data/plugins/hosts/linux/plugin.rb +15 -0
- data/{lib/vagrant/hosts/opensuse.rb → plugins/hosts/opensuse/host.rb} +8 -4
- data/plugins/hosts/opensuse/plugin.rb +15 -0
- data/{lib/vagrant/hosts/windows.rb → plugins/hosts/windows/host.rb} +5 -4
- data/plugins/hosts/windows/plugin.rb +15 -0
- data/plugins/kernel_v1/config/nfs.rb +20 -0
- data/plugins/kernel_v1/config/package.rb +17 -0
- data/plugins/kernel_v1/config/ssh.rb +46 -0
- data/plugins/kernel_v1/config/vagrant.rb +31 -0
- data/plugins/kernel_v1/config/vm.rb +184 -0
- data/plugins/kernel_v1/plugin.rb +44 -0
- data/plugins/kernel_v2/config/nfs.rb +10 -0
- data/plugins/kernel_v2/config/package.rb +9 -0
- data/plugins/kernel_v2/config/ssh.rb +35 -0
- data/plugins/kernel_v2/config/vagrant.rb +9 -0
- data/plugins/kernel_v2/config/vm.rb +314 -0
- data/plugins/kernel_v2/config/vm_provisioner.rb +40 -0
- data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
- data/plugins/kernel_v2/plugin.rb +44 -0
- data/plugins/providers/virtualbox/action.rb +308 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/boot.rb +12 -16
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/check_accessible.rb +5 -5
- data/plugins/providers/virtualbox/action/check_created.rb +21 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/check_guest_additions.rb +18 -11
- data/plugins/providers/virtualbox/action/check_running.rb +21 -0
- data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clean_machine_folder.rb +5 -5
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_forwarded_ports.rb +4 -4
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_network_interfaces.rb +4 -4
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_shared_folders.rb +4 -5
- data/plugins/providers/virtualbox/action/created.rb +20 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/customize.rb +7 -7
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/destroy.rb +5 -5
- data/plugins/providers/virtualbox/action/destroy_confirm.rb +17 -0
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
- data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/export.rb +7 -7
- data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/forward_ports.rb +29 -42
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/import.rb +15 -12
- data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
- data/plugins/providers/virtualbox/action/is_running.rb +20 -0
- data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/match_mac_address.rb +5 -5
- data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
- data/plugins/providers/virtualbox/action/network.rb +366 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/package.rb +4 -7
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/package_vagrantfile.rb +5 -8
- data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +51 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/prune_nfs_exports.rb +5 -5
- data/plugins/providers/virtualbox/action/resume.rb +25 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/sane_defaults.rb +41 -32
- data/plugins/providers/virtualbox/action/set_name.rb +40 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/setup_package_files.rb +5 -8
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/share_folders.rb +24 -25
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/suspend.rb +5 -5
- data/plugins/providers/virtualbox/config.rb +82 -0
- data/plugins/providers/virtualbox/driver/base.rb +344 -0
- data/plugins/providers/virtualbox/driver/meta.rb +142 -0
- data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_2.rb +475 -0
- data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
- data/plugins/providers/virtualbox/plugin.rb +42 -0
- data/plugins/providers/virtualbox/provider.rb +92 -0
- data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
- data/plugins/provisioners/chef/config/base.rb +65 -0
- data/plugins/provisioners/chef/config/chef_client.rb +39 -0
- data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
- data/plugins/provisioners/chef/plugin.rb +33 -0
- data/plugins/provisioners/chef/provisioner/base.rb +91 -0
- data/plugins/provisioners/chef/provisioner/chef_client.rb +103 -0
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +182 -0
- data/plugins/provisioners/puppet/config/puppet.rb +70 -0
- data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
- data/plugins/provisioners/puppet/plugin.rb +33 -0
- data/plugins/provisioners/puppet/provisioner/puppet.rb +110 -0
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
- data/plugins/provisioners/shell/config.rb +46 -0
- data/plugins/provisioners/shell/plugin.rb +23 -0
- data/plugins/provisioners/shell/provisioner.rb +66 -0
- data/templates/commands/init/Vagrantfile.erb +33 -21
- data/templates/commands/ssh_config/config.erb +1 -0
- data/templates/config/messages.erb +14 -0
- data/templates/config/validation_failed.erb +3 -3
- data/templates/guests/arch/network_dhcp.erb +4 -7
- data/templates/guests/arch/network_static.erb +6 -7
- data/templates/guests/debian/network_dhcp.erb +5 -0
- data/templates/locales/en.yml +336 -100
- data/templates/rgloader.rb +9 -0
- data/test/acceptance/support/isolated_environment.rb +3 -2
- data/test/support/tempdir.rb +13 -4
- data/test/unit/base.rb +6 -0
- data/test/unit/support/dummy_provider.rb +16 -0
- data/test/unit/support/isolated_environment.rb +132 -0
- data/test/unit/support/shared/base_context.rb +74 -0
- data/test/unit/vagrant/action/builder_test.rb +88 -48
- data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
- data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
- data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
- data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
- data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
- data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
- data/test/unit/vagrant/action/hook_test.rb +101 -0
- data/test/unit/vagrant/action/runner_test.rb +15 -9
- data/test/unit/vagrant/box_collection_test.rb +219 -38
- data/test/unit/vagrant/box_test.rb +94 -19
- data/test/unit/vagrant/cli_test.rb +27 -0
- data/test/unit/vagrant/config/loader_test.rb +154 -49
- data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
- data/test/unit/vagrant/config/v1/root_test.rb +40 -0
- data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
- data/test/unit/vagrant/config/v2/root_test.rb +97 -0
- data/test/unit/vagrant/config/v2/util_test.rb +21 -0
- data/test/unit/vagrant/config_test.rb +40 -1
- data/test/unit/vagrant/downloaders/base_test.rb +0 -4
- data/test/unit/vagrant/downloaders/file_test.rb +21 -9
- data/test/unit/vagrant/downloaders/http_test.rb +4 -0
- data/test/unit/vagrant/environment_test.rb +414 -63
- data/test/unit/vagrant/hosts_test.rb +10 -9
- data/test/unit/vagrant/machine_state_test.rb +26 -0
- data/test/unit/vagrant/machine_test.rb +418 -0
- data/test/unit/vagrant/{command/base_test.rb → plugin/v1/command_test.rb} +2 -9
- data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
- data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
- data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
- data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
- data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
- data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
- data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
- data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v2/manager_test.rb +157 -0
- data/test/unit/vagrant/plugin/v2/plugin_test.rb +287 -0
- data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
- data/test/unit/vagrant/registry_test.rb +59 -5
- data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
- data/test/unit/vagrant/util/ssh_test.rb +30 -0
- data/test/unit/vagrant/util/string_block_editor_test.rb +98 -0
- data/test/unit/vagrant/util/which_test.rb +43 -0
- data/test/unit/vagrant_test.rb +42 -13
- data/vagrant.gemspec +6 -7
- data/vagrant.gemspecbak +6 -7
- metadata +273 -358
- data/lib/vagrant/action/box/destroy.rb +0 -25
- data/lib/vagrant/action/box/download.rb +0 -84
- data/lib/vagrant/action/box/package.rb +0 -19
- data/lib/vagrant/action/box/unpackage.rb +0 -61
- data/lib/vagrant/action/box/verify.rb +0 -23
- data/lib/vagrant/action/builtin.rb +0 -171
- data/lib/vagrant/action/env/set.rb +0 -21
- data/lib/vagrant/action/environment.rb +0 -12
- data/lib/vagrant/action/general/check_virtualbox.rb +0 -28
- data/lib/vagrant/action/general/validate.rb +0 -18
- data/lib/vagrant/action/vm/check_box.rb +0 -33
- data/lib/vagrant/action/vm/check_port_collisions.rb +0 -89
- data/lib/vagrant/action/vm/default_name.rb +0 -22
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +0 -20
- data/lib/vagrant/action/vm/discard_state.rb +0 -22
- data/lib/vagrant/action/vm/halt.rb +0 -32
- data/lib/vagrant/action/vm/host_name.rb +0 -21
- data/lib/vagrant/action/vm/network.rb +0 -403
- data/lib/vagrant/action/vm/nfs.rb +0 -196
- data/lib/vagrant/action/vm/provision.rb +0 -61
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +0 -26
- data/lib/vagrant/action/vm/resume.rb +0 -20
- data/lib/vagrant/command.rb +0 -24
- data/lib/vagrant/command/base.rb +0 -167
- data/lib/vagrant/command/box.rb +0 -58
- data/lib/vagrant/command/box_add.rb +0 -37
- data/lib/vagrant/command/box_list.rb +0 -28
- data/lib/vagrant/command/box_remove.rb +0 -27
- data/lib/vagrant/command/box_repackage.rb +0 -27
- data/lib/vagrant/command/destroy.rb +0 -64
- data/lib/vagrant/command/gem.rb +0 -39
- data/lib/vagrant/command/halt.rb +0 -39
- data/lib/vagrant/command/package.rb +0 -75
- data/lib/vagrant/command/provision.rb +0 -40
- data/lib/vagrant/command/reload.rb +0 -39
- data/lib/vagrant/command/resume.rb +0 -33
- data/lib/vagrant/command/status.rb +0 -36
- data/lib/vagrant/command/suspend.rb +0 -33
- data/lib/vagrant/command/up.rb +0 -40
- data/lib/vagrant/communication.rb +0 -7
- data/lib/vagrant/communication/base.rb +0 -56
- data/lib/vagrant/config/base.rb +0 -82
- data/lib/vagrant/config/error_recorder.rb +0 -19
- data/lib/vagrant/config/nfs.rb +0 -8
- data/lib/vagrant/config/package.rb +0 -7
- data/lib/vagrant/config/ssh.rb +0 -27
- data/lib/vagrant/config/top.rb +0 -72
- data/lib/vagrant/config/vagrant.rb +0 -14
- data/lib/vagrant/config/vm.rb +0 -168
- data/lib/vagrant/config/vm/provisioner.rb +0 -52
- data/lib/vagrant/config/vm/sub_vm.rb +0 -17
- data/lib/vagrant/data_store.rb +0 -92
- data/lib/vagrant/driver.rb +0 -8
- data/lib/vagrant/driver/virtualbox.rb +0 -134
- data/lib/vagrant/driver/virtualbox_4_0.rb +0 -459
- data/lib/vagrant/driver/virtualbox_4_1.rb +0 -459
- data/lib/vagrant/driver/virtualbox_4_2.rb +0 -606
- data/lib/vagrant/driver/virtualbox_base.rb +0 -326
- data/lib/vagrant/guest.rb +0 -18
- data/lib/vagrant/guest/arch.rb +0 -56
- data/lib/vagrant/guest/base.rb +0 -99
- data/lib/vagrant/guest/freebsd.rb +0 -86
- data/lib/vagrant/guest/gentoo.rb +0 -46
- data/lib/vagrant/guest/linux/config.rb +0 -19
- data/lib/vagrant/guest/linux/error.rb +0 -9
- data/lib/vagrant/guest/openbsd.rb +0 -20
- data/lib/vagrant/guest/solaris.rb +0 -118
- data/lib/vagrant/guest/suse.rb +0 -17
- data/lib/vagrant/guest/ubuntu.rb +0 -23
- data/lib/vagrant/hosts/base.rb +0 -66
- data/lib/vagrant/provisioners.rb +0 -12
- data/lib/vagrant/provisioners/base.rb +0 -44
- data/lib/vagrant/provisioners/chef.rb +0 -168
- data/lib/vagrant/provisioners/chef_client.rb +0 -132
- data/lib/vagrant/provisioners/chef_solo.rb +0 -234
- data/lib/vagrant/provisioners/puppet.rb +0 -176
- data/lib/vagrant/provisioners/puppet_server.rb +0 -78
- data/lib/vagrant/provisioners/shell.rb +0 -103
- data/lib/vagrant/vm.rb +0 -195
- data/test/buildbot/README.md +0 -72
- data/test/buildbot/buildbot_config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/loader.py +0 -24
- data/test/buildbot/buildbot_config/config/master.py +0 -24
- data/test/buildbot/buildbot_config/config/slave.py +0 -22
- data/test/buildbot/buildbot_config/master/__init__.py +0 -6
- data/test/buildbot/buildbot_config/master/builders.py +0 -78
- data/test/buildbot/buildbot_config/master/buildsteps.py +0 -100
- data/test/buildbot/buildbot_config/master/change_sources.py +0 -8
- data/test/buildbot/buildbot_config/master/schedulers.py +0 -32
- data/test/buildbot/buildbot_config/master/slaves.py +0 -60
- data/test/buildbot/buildbot_config/master/status.py +0 -52
- data/test/buildbot/master/Makefile.sample +0 -28
- data/test/buildbot/master/buildbot.tac +0 -36
- data/test/buildbot/master/master.cfg +0 -67
- data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
- data/test/buildbot/master/public_html/default.css +0 -545
- data/test/buildbot/master/public_html/favicon.ico +0 -0
- data/test/buildbot/master/public_html/robots.txt +0 -10
- data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +0 -356
- data/test/buildbot/master/public_html/static/css/prettify.css +0 -97
- data/test/buildbot/master/public_html/static/css/syntax.css +0 -60
- data/test/buildbot/master/public_html/static/css/vagrant.base.css +0 -205
- data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
- data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
- data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +0 -80
- data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +0 -4
- data/test/buildbot/master/templates/authfail.html +0 -9
- data/test/buildbot/master/templates/build.html +0 -205
- data/test/buildbot/master/templates/builder.html +0 -118
- data/test/buildbot/master/templates/builders.html +0 -33
- data/test/buildbot/master/templates/buildslave.html +0 -72
- data/test/buildbot/master/templates/buildslaves.html +0 -70
- data/test/buildbot/master/templates/change.html +0 -15
- data/test/buildbot/master/templates/layouts/base.html +0 -58
- data/test/buildbot/master/templates/macros/box.html +0 -37
- data/test/buildbot/master/templates/macros/build_line.html +0 -50
- data/test/buildbot/master/templates/macros/change.html +0 -81
- data/test/buildbot/master/templates/macros/forms.html +0 -300
- data/test/buildbot/master/templates/root.html +0 -42
- data/test/buildbot/master/templates/waterfall.html +0 -53
- data/test/buildbot/requirements.txt +0 -4
- data/test/buildbot/scripts/deploy.sh +0 -38
- data/test/buildbot/scripts/setup.sh +0 -107
- data/test/buildbot/slave/buildbot.tac +0 -43
- data/test/buildbot/slave/info/admin +0 -1
- data/test/buildbot/slave/info/host +0 -1
- data/test/buildbot/tests/__init__.py +0 -0
- data/test/buildbot/tests/master/__init__.py +0 -0
- data/test/buildbot/tests/master/test_slaves.py +0 -41
- data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
- data/test/unit/vagrant/action/environment_test.rb +0 -16
- data/test/unit/vagrant/config/base_test.rb +0 -48
- data/test/unit/vagrant/config/ssh_test.rb +0 -17
- data/test/unit/vagrant/config/top_test.rb +0 -69
- data/test/unit/vagrant/config/vm_test.rb +0 -71
- data/test/unit/vagrant/data_store_test.rb +0 -79
- data/test/unit_legacy/locales/en.yml +0 -8
- data/test/unit_legacy/test_helper.rb +0 -32
- data/test/unit_legacy/vagrant/action/box/destroy_test.rb +0 -18
- data/test/unit_legacy/vagrant/action/box/download_test.rb +0 -125
- data/test/unit_legacy/vagrant/action/box/package_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +0 -84
- data/test/unit_legacy/vagrant/action/box/verify_test.rb +0 -30
- data/test/unit_legacy/vagrant/action/env/set_test.rb +0 -24
- data/test/unit_legacy/vagrant/action/general/package_test.rb +0 -268
- data/test/unit_legacy/vagrant/action/general/validate_test.rb +0 -31
- data/test/unit_legacy/vagrant/action/vm/boot_test.rb +0 -66
- data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +0 -61
- data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +0 -61
- data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +0 -9
- data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +0 -84
- data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -52
- data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +0 -22
- data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +0 -40
- data/test/unit_legacy/vagrant/action/vm/customize_test.rb +0 -37
- data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -49
- data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +0 -45
- data/test/unit_legacy/vagrant/action/vm/export_test.rb +0 -107
- data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +0 -77
- data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +0 -197
- data/test/unit_legacy/vagrant/action/vm/halt_test.rb +0 -79
- data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +0 -36
- data/test/unit_legacy/vagrant/action/vm/import_test.rb +0 -66
- data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +0 -40
- data/test/unit_legacy/vagrant/action/vm/modify_test.rb +0 -38
- data/test/unit_legacy/vagrant/action/vm/network_test.rb +0 -286
- data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +0 -26
- data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +0 -260
- data/test/unit_legacy/vagrant/action/vm/package_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +0 -46
- data/test/unit_legacy/vagrant/action/vm/provision_test.rb +0 -65
- data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +0 -56
- data/test/unit_legacy/vagrant/action/vm/resume_test.rb +0 -35
- data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +0 -144
- data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +0 -35
- data/test/unit_legacy/vagrant/action_test.rb +0 -89
- data/test/unit_legacy/vagrant/box_collection_test.rb +0 -45
- data/test/unit_legacy/vagrant/box_test.rb +0 -74
- data/test/unit_legacy/vagrant/cli_test.rb +0 -35
- data/test/unit_legacy/vagrant/command/base_test.rb +0 -23
- data/test/unit_legacy/vagrant/command/group_base_test.rb +0 -15
- data/test/unit_legacy/vagrant/command/helpers_test.rb +0 -88
- data/test/unit_legacy/vagrant/command/init_test.rb +0 -10
- data/test/unit_legacy/vagrant/command/package_test.rb +0 -27
- data/test/unit_legacy/vagrant/config/base_test.rb +0 -52
- data/test/unit_legacy/vagrant/config/error_recorder_test.rb +0 -18
- data/test/unit_legacy/vagrant/config/ssh_test.rb +0 -12
- data/test/unit_legacy/vagrant/config/vagrant_test.rb +0 -35
- data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +0 -92
- data/test/unit_legacy/vagrant/config/vm_test.rb +0 -47
- data/test/unit_legacy/vagrant/config_test.rb +0 -148
- data/test/unit_legacy/vagrant/downloaders/http_test.rb +0 -93
- data/test/unit_legacy/vagrant/environment_test.rb +0 -539
- data/test/unit_legacy/vagrant/errors_test.rb +0 -42
- data/test/unit_legacy/vagrant/hosts/base_test.rb +0 -46
- data/test/unit_legacy/vagrant/hosts/bsd_test.rb +0 -53
- data/test/unit_legacy/vagrant/hosts/linux_test.rb +0 -54
- data/test/unit_legacy/vagrant/plugin_test.rb +0 -9
- data/test/unit_legacy/vagrant/provisioners/base_test.rb +0 -63
- data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +0 -190
- data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +0 -115
- data/test/unit_legacy/vagrant/provisioners/chef_test.rb +0 -209
- data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +0 -68
- data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +0 -182
- data/test/unit_legacy/vagrant/provisioners/shell_test.rb +0 -79
- data/test/unit_legacy/vagrant/ssh/session_test.rb +0 -40
- data/test/unit_legacy/vagrant/ssh_test.rb +0 -304
- data/test/unit_legacy/vagrant/systems/base_test.rb +0 -18
- data/test/unit_legacy/vagrant/systems/linux_test.rb +0 -104
- data/test/unit_legacy/vagrant/util/busy_test.rb +0 -106
- data/test/unit_legacy/vagrant/util/counter_test.rb +0 -29
- data/test/unit_legacy/vagrant/util/platform_test.rb +0 -18
- data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +0 -43
- data/test/unit_legacy/vagrant/util/template_renderer_test.rb +0 -145
- data/test/unit_legacy/vagrant/vm_test.rb +0 -300
- data/vagrant-1.1.4.gem +0 -0
- data/vagrantup-0.1.0.gem +0 -0
- data/vagrantup-0.1.1.gem +0 -0
- data/vagrantup-0.1.2.gem +0 -0
- data/vagrantup-0.1.3.gem +0 -0
- data/vagrantup-0.1.4.gem +0 -0
- data/vagrantup-0.2.0.gem +0 -0
- data/vagrantup-0.3.0.gem +0 -0
- data/vagrantup-0.3.1.gem +0 -0
- data/vagrantup-0.3.2.gem +0 -0
- data/vagrantup-0.3.3.gem +0 -0
- data/vagrantup-0.3.4.gem +0 -0
- data/vagrantup-0.4.0.gem +0 -0
- data/vagrantup-0.4.1.gem +0 -0
- data/vagrantup-0.4.3.dev.gem +0 -0
- data/vagrantup-0.5.0.gem +0 -0
- data/vagrantup-0.5.1.gem +0 -0
- data/vagrantup-0.5.2.gem +0 -0
- data/vagrantup-0.5.3.gem +0 -0
- data/vagrantup-0.5.4.gem +0 -0
- data/vagrantup-0.6.0.gem +0 -0
- data/vagrantup-0.6.1.gem +0 -0
- data/vagrantup-0.6.2.gem +0 -0
- data/vagrantup-0.6.3.gem +0 -0
- data/vagrantup-0.6.4.gem +0 -0
- data/vagrantup-0.6.5.gem +0 -0
- data/vagrantup-0.6.6.gem +0 -0
- data/vagrantup-0.6.7.gem +0 -0
- data/vagrantup-0.6.8.gem +0 -0
- data/vagrantup-0.6.9.gem +0 -0
- data/vagrantup-0.7.0.gem +0 -0
- data/vagrantup-0.7.1.gem +0 -0
- data/vagrantup-0.7.2.gem +0 -0
- data/vagrantup-0.7.3.gem +0 -0
- data/vagrantup-0.7.4.gem +0 -0
- data/vagrantup-0.7.5.gem +0 -0
- data/vagrantup-0.7.6.gem +0 -0
- data/vagrantup-0.7.7.gem +0 -0
- data/vagrantup-0.7.8.gem +0 -0
- data/vagrantup-0.8.0.gem +0 -0
- data/vagrantup-0.8.1.gem +0 -0
- data/vagrantup-0.8.10.gem +0 -0
- data/vagrantup-0.8.2.gem +0 -0
- data/vagrantup-0.8.3.gem +0 -0
- data/vagrantup-0.8.4.gem +0 -0
- data/vagrantup-0.8.5.gem +0 -0
- data/vagrantup-0.8.6.gem +0 -0
- data/vagrantup-0.8.7.gem +0 -0
- data/vagrantup-0.8.8.gem +0 -0
- data/vagrantup-0.8.9.gem +0 -0
- data/vagrantup-0.9.0.gem +0 -0
- data/vagrantup-0.9.1.gem +0 -0
- data/vagrantup-0.9.2.gem +0 -0
- data/vagrantup-0.9.3.gem +0 -0
- data/vagrantup-0.9.4.gem +0 -0
- data/vagrantup-0.9.5.gem +0 -0
- data/vagrantup-0.9.6.gem +0 -0
- data/vagrantup-0.9.7.gem +0 -0
- data/vagrantup-0.9.99.1.gem +0 -0
- data/vagrantup-0.9.99.2.gem +0 -0
- data/vagrantup-1.0.0.gem +0 -0
- data/vagrantup-1.0.1.gem +0 -0
- data/vagrantup-1.0.2.gem +0 -0
- data/vagrantup-1.0.3.gem +0 -0
- data/vagrantup-1.0.4.gem +0 -0
- data/vagrantup-1.0.5.gem +0 -0
- data/vagrantup-1.0.6.gem +0 -0
- data/vagrantup-1.1.4.gem +0 -0
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
module Vagrant
|
|
2
|
-
module Action
|
|
3
|
-
module General
|
|
4
|
-
# Simply validates the configuration of the current Vagrant
|
|
5
|
-
# environment.
|
|
6
|
-
class Validate
|
|
7
|
-
def initialize(app, env)
|
|
8
|
-
@app = app
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def call(env)
|
|
12
|
-
env[:vm].config.validate!(env[:vm].env) if !env.has_key?("validate") || env["validate"]
|
|
13
|
-
@app.call(env)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module Vagrant
|
|
2
|
-
module Action
|
|
3
|
-
module VM
|
|
4
|
-
class CheckBox
|
|
5
|
-
def initialize(app, env)
|
|
6
|
-
@app = app
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def call(env)
|
|
10
|
-
box_name = env[:vm].config.vm.box
|
|
11
|
-
raise Errors::BoxNotSpecified if !box_name
|
|
12
|
-
|
|
13
|
-
if !env[:box_collection].find(box_name)
|
|
14
|
-
box_url = env[:vm].config.vm.box_url
|
|
15
|
-
raise Errors::BoxSpecifiedDoesntExist, :name => box_name if !box_url
|
|
16
|
-
|
|
17
|
-
# Add the box then reload the box collection so that it becomes
|
|
18
|
-
# aware of it.
|
|
19
|
-
env[:ui].info I18n.t("vagrant.actions.vm.check_box.not_found", :name => box_name)
|
|
20
|
-
env[:box_collection].add(box_name, box_url)
|
|
21
|
-
env[:box_collection].reload!
|
|
22
|
-
|
|
23
|
-
# Reload the environment and set the VM to be the new loaded VM.
|
|
24
|
-
env[:vm].env.reload!
|
|
25
|
-
env[:vm] = env[:vm].env.vms[env[:vm].name]
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
@app.call(env)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
require "vagrant/util/is_port_open"
|
|
2
|
-
|
|
3
|
-
module Vagrant
|
|
4
|
-
module Action
|
|
5
|
-
module VM
|
|
6
|
-
# Action that checks to make sure there are no forwarded port collisions,
|
|
7
|
-
# and raises an exception if there is.
|
|
8
|
-
class CheckPortCollisions
|
|
9
|
-
include Util::IsPortOpen
|
|
10
|
-
|
|
11
|
-
def initialize(app, env)
|
|
12
|
-
@app = app
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def call(env)
|
|
16
|
-
# For the handlers...
|
|
17
|
-
@env = env
|
|
18
|
-
|
|
19
|
-
# Figure out how we handle port collisions. By default we error.
|
|
20
|
-
handler = env[:port_collision_handler] || :error
|
|
21
|
-
|
|
22
|
-
# Read our forwarded ports, if we have any, to override what
|
|
23
|
-
# we have configured.
|
|
24
|
-
current = {}
|
|
25
|
-
env[:vm].driver.read_forwarded_ports.each do |nic, name, hostport, guestport|
|
|
26
|
-
current[name] = hostport.to_i
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
existing = env[:vm].driver.read_used_ports
|
|
30
|
-
env[:vm].config.vm.forwarded_ports.each do |options|
|
|
31
|
-
# Use the proper port, whether that be the configured port or the
|
|
32
|
-
# port that is currently on use of the VM.
|
|
33
|
-
hostport = options[:hostport].to_i
|
|
34
|
-
hostport = current[options[:name]] if current.has_key?(options[:name])
|
|
35
|
-
|
|
36
|
-
if existing.include?(hostport) || is_port_open?("127.0.0.1", hostport)
|
|
37
|
-
# We have a collision! Handle it
|
|
38
|
-
send("handle_#{handler}".to_sym, options, existing)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
@app.call(env)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Handles a port collision by raising an exception.
|
|
46
|
-
def handle_error(options, existing_ports)
|
|
47
|
-
raise Errors::ForwardPortCollisionResume
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Handles a port collision by attempting to fix it.
|
|
51
|
-
def handle_correct(options, existing_ports)
|
|
52
|
-
# We need to keep this for messaging purposes
|
|
53
|
-
original_hostport = options[:hostport]
|
|
54
|
-
|
|
55
|
-
if !options[:auto]
|
|
56
|
-
# Auto fixing is disabled for this port forward, so we
|
|
57
|
-
# must throw an error so the user can fix it.
|
|
58
|
-
raise Errors::ForwardPortCollision, :host_port => options[:hostport].to_s,
|
|
59
|
-
:guest_port => options[:guestport].to_s
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# Get the auto port range and get rid of the used ports and
|
|
63
|
-
# ports which are being used in other forwards so we're just
|
|
64
|
-
# left with available ports.
|
|
65
|
-
range = @env[:vm].config.vm.auto_port_range.to_a
|
|
66
|
-
range -= @env[:vm].config.vm.forwarded_ports.collect { |opts| opts[:hostport].to_i }
|
|
67
|
-
range -= existing_ports
|
|
68
|
-
|
|
69
|
-
if range.empty?
|
|
70
|
-
raise Errors::ForwardPortAutolistEmpty, :vm_name => @env[:vm].name,
|
|
71
|
-
:host_port => options[:hostport].to_s,
|
|
72
|
-
:guest_port => options[:guestport].to_s
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# Set the port up to be the first one and add that port to
|
|
76
|
-
# the used list.
|
|
77
|
-
options[:hostport] = range.shift
|
|
78
|
-
existing_ports << options[:hostport]
|
|
79
|
-
|
|
80
|
-
# Notify the user
|
|
81
|
-
@env[:ui].info(I18n.t("vagrant.actions.vm.forward_ports.fixed_collision",
|
|
82
|
-
:host_port => original_hostport.to_s,
|
|
83
|
-
:guest_port => options[:guestport].to_s,
|
|
84
|
-
:new_port => options[:hostport]))
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
require 'log4r'
|
|
2
|
-
|
|
3
|
-
module Vagrant
|
|
4
|
-
module Action
|
|
5
|
-
module VM
|
|
6
|
-
class DefaultName
|
|
7
|
-
def initialize(app, env)
|
|
8
|
-
@logger = Log4r::Logger.new("vagrant::action::vm::defaultname")
|
|
9
|
-
@app = app
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def call(env)
|
|
13
|
-
@logger.info("Setting the default name of the VM")
|
|
14
|
-
name = env[:root_path].basename.to_s + "_#{Time.now.to_i}"
|
|
15
|
-
env[:vm].driver.set_name(name)
|
|
16
|
-
|
|
17
|
-
@app.call(env)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Vagrant
|
|
2
|
-
module Action
|
|
3
|
-
module VM
|
|
4
|
-
# Destroys the unused host only interfaces. This middleware cleans
|
|
5
|
-
# up any created host only networks.
|
|
6
|
-
class DestroyUnusedNetworkInterfaces
|
|
7
|
-
def initialize(app, env)
|
|
8
|
-
@app = app
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def call(env)
|
|
12
|
-
env[:vm].driver.delete_unused_host_only_networks
|
|
13
|
-
|
|
14
|
-
# Continue along
|
|
15
|
-
@app.call(env)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
module Vagrant
|
|
2
|
-
module Action
|
|
3
|
-
module VM
|
|
4
|
-
# Discards the saved state of the VM if its saved. If its
|
|
5
|
-
# not saved, does nothing.
|
|
6
|
-
class DiscardState
|
|
7
|
-
def initialize(app, env)
|
|
8
|
-
@app = app
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def call(env)
|
|
12
|
-
if env[:vm].state == :saved
|
|
13
|
-
env[:ui].info I18n.t("vagrant.actions.vm.discard_state.discarding")
|
|
14
|
-
env[:vm].driver.discard_saved_state
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
@app.call(env)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module Vagrant
|
|
2
|
-
module Action
|
|
3
|
-
module VM
|
|
4
|
-
class Halt
|
|
5
|
-
def initialize(app, env, options=nil)
|
|
6
|
-
@app = app
|
|
7
|
-
env.merge!(options || {})
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def call(env)
|
|
11
|
-
if env[:vm].state == :running
|
|
12
|
-
if !env["force"]
|
|
13
|
-
env[:ui].info I18n.t("vagrant.actions.vm.halt.graceful")
|
|
14
|
-
env[:vm].guest.halt
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
if env[:vm].state != :poweroff
|
|
18
|
-
env[:ui].info I18n.t("vagrant.actions.vm.halt.force")
|
|
19
|
-
env[:vm].driver.halt
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Sleep for a second to verify that the VM properly
|
|
23
|
-
# cleans itself up
|
|
24
|
-
sleep 1 if !env["vagrant.test"]
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
@app.call(env)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module Vagrant
|
|
2
|
-
module Action
|
|
3
|
-
module VM
|
|
4
|
-
class HostName
|
|
5
|
-
def initialize(app, env)
|
|
6
|
-
@app = app
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def call(env)
|
|
10
|
-
@app.call(env)
|
|
11
|
-
|
|
12
|
-
host_name = env[:vm].config.vm.host_name
|
|
13
|
-
if !host_name.nil?
|
|
14
|
-
env[:ui].info I18n.t("vagrant.actions.vm.host_name.setting")
|
|
15
|
-
env[:vm].guest.change_host_name(host_name)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,403 +0,0 @@
|
|
|
1
|
-
require 'set'
|
|
2
|
-
|
|
3
|
-
require 'log4r'
|
|
4
|
-
|
|
5
|
-
require 'vagrant/util/network_ip'
|
|
6
|
-
|
|
7
|
-
module Vagrant
|
|
8
|
-
module Action
|
|
9
|
-
module VM
|
|
10
|
-
# This action handles all `config.vm.network` configurations by
|
|
11
|
-
# setting up the VM properly and enabling the networks afterword.
|
|
12
|
-
class Network
|
|
13
|
-
# Utilities to deal with network addresses
|
|
14
|
-
include Util::NetworkIP
|
|
15
|
-
|
|
16
|
-
def initialize(app, env)
|
|
17
|
-
@logger = Log4r::Logger.new("vagrant::action::vm::network")
|
|
18
|
-
|
|
19
|
-
@app = app
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def call(env)
|
|
23
|
-
@env = env
|
|
24
|
-
|
|
25
|
-
# First we have to get the array of adapters that we need
|
|
26
|
-
# to create on the virtual machine itself, as well as the
|
|
27
|
-
# driver-agnostic network configurations for each.
|
|
28
|
-
@logger.debug("Determining adapters and networks...")
|
|
29
|
-
adapters = []
|
|
30
|
-
networks = []
|
|
31
|
-
env[:vm].config.vm.networks.each do |type, args|
|
|
32
|
-
# Get the normalized configuration we'll use around
|
|
33
|
-
config = send("#{type}_config", args)
|
|
34
|
-
|
|
35
|
-
# Get the virtualbox adapter configuration
|
|
36
|
-
adapter = send("#{type}_adapter", config)
|
|
37
|
-
adapters << adapter
|
|
38
|
-
|
|
39
|
-
# Get the network configuration
|
|
40
|
-
network = send("#{type}_network_config", config)
|
|
41
|
-
network[:_auto_config] = true if config[:auto_config]
|
|
42
|
-
networks << network
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
if !adapters.empty?
|
|
46
|
-
# Automatically assign an adapter number to any adapters
|
|
47
|
-
# that aren't explicitly set.
|
|
48
|
-
@logger.debug("Assigning adapter locations...")
|
|
49
|
-
assign_adapter_locations(adapters)
|
|
50
|
-
|
|
51
|
-
# Verify that our adapters are good just prior to enabling them.
|
|
52
|
-
verify_adapters(adapters)
|
|
53
|
-
|
|
54
|
-
# Create all the network interfaces
|
|
55
|
-
@logger.info("Enabling adapters...")
|
|
56
|
-
env[:ui].info I18n.t("vagrant.actions.vm.network.preparing")
|
|
57
|
-
env[:vm].driver.enable_adapters(adapters)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Continue the middleware chain. We're done with our VM
|
|
61
|
-
# setup until after it is booted.
|
|
62
|
-
@app.call(env)
|
|
63
|
-
|
|
64
|
-
if !adapters.empty? && !networks.empty?
|
|
65
|
-
# Determine the interface numbers for the guest.
|
|
66
|
-
assign_interface_numbers(networks, adapters)
|
|
67
|
-
|
|
68
|
-
# Configure all the network interfaces on the guest. We only
|
|
69
|
-
# want to configure the networks that have `auto_config` setup.
|
|
70
|
-
networks_to_configure = networks.select { |n| n[:_auto_config] }
|
|
71
|
-
env[:ui].info I18n.t("vagrant.actions.vm.network.configuring")
|
|
72
|
-
env[:vm].guest.configure_networks(networks_to_configure)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# This method assigns the adapter to use for the adapter.
|
|
77
|
-
# e.g. it says that the first adapter is actually on the
|
|
78
|
-
# virtual machine's 2nd adapter location.
|
|
79
|
-
#
|
|
80
|
-
# It determines the adapter numbers by simply finding the
|
|
81
|
-
# "next available" in each case.
|
|
82
|
-
#
|
|
83
|
-
# The adapters are modified in place by adding an ":adapter"
|
|
84
|
-
# field to each.
|
|
85
|
-
def assign_adapter_locations(adapters)
|
|
86
|
-
available = Set.new(1..8)
|
|
87
|
-
|
|
88
|
-
# Determine which NICs are actually available.
|
|
89
|
-
interfaces = @env[:vm].driver.read_network_interfaces
|
|
90
|
-
interfaces.each do |number, nic|
|
|
91
|
-
# Remove the number from the available NICs if the
|
|
92
|
-
# NIC is in use.
|
|
93
|
-
available.delete(number) if nic[:type] != :none
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
# Based on the available set, assign in order to
|
|
97
|
-
# the adapters.
|
|
98
|
-
available = available.to_a.sort
|
|
99
|
-
@logger.debug("Available NICs: #{available.inspect}")
|
|
100
|
-
adapters.each do |adapter|
|
|
101
|
-
# Ignore the adapters that already have been assigned
|
|
102
|
-
if !adapter[:adapter]
|
|
103
|
-
# If we have no available adapters, then that is an exceptional
|
|
104
|
-
# event.
|
|
105
|
-
raise Errors::NetworkNoAdapters if available.empty?
|
|
106
|
-
|
|
107
|
-
# Otherwise, assign as the adapter the next available item
|
|
108
|
-
adapter[:adapter] = available.shift
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
# Verifies that the adapter configurations look good. This will
|
|
114
|
-
# raise an exception in the case that any errors occur.
|
|
115
|
-
def verify_adapters(adapters)
|
|
116
|
-
# Verify that there are no collisions in the adapters being used.
|
|
117
|
-
used = Set.new
|
|
118
|
-
adapters.each do |adapter|
|
|
119
|
-
raise Errors::NetworkAdapterCollision if used.include?(adapter[:adapter])
|
|
120
|
-
used.add(adapter[:adapter])
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# Assigns the actual interface number of a network based on the
|
|
125
|
-
# enabled NICs on the virtual machine.
|
|
126
|
-
#
|
|
127
|
-
# This interface number is used by the guest to configure the
|
|
128
|
-
# NIC on the guest VM.
|
|
129
|
-
#
|
|
130
|
-
# The networks are modified in place by adding an ":interface"
|
|
131
|
-
# field to each.
|
|
132
|
-
def assign_interface_numbers(networks, adapters)
|
|
133
|
-
current = 0
|
|
134
|
-
adapter_to_interface = {}
|
|
135
|
-
|
|
136
|
-
# Make a first pass to assign interface numbers by adapter location
|
|
137
|
-
vm_adapters = @env[:vm].driver.read_network_interfaces
|
|
138
|
-
vm_adapters.sort.each do |number, adapter|
|
|
139
|
-
if adapter[:type] != :none
|
|
140
|
-
# Not used, so assign the interface number and increment
|
|
141
|
-
adapter_to_interface[number] = current
|
|
142
|
-
current += 1
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
# Make a pass through the adapters to assign the :interface
|
|
147
|
-
# key to each network configuration.
|
|
148
|
-
adapters.each_index do |i|
|
|
149
|
-
adapter = adapters[i]
|
|
150
|
-
network = networks[i]
|
|
151
|
-
|
|
152
|
-
# Figure out the interface number by simple lookup
|
|
153
|
-
network[:interface] = adapter_to_interface[adapter[:adapter]]
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
def hostonly_config(args)
|
|
158
|
-
ip = args[0]
|
|
159
|
-
options = args[1] || {}
|
|
160
|
-
|
|
161
|
-
# Determine if we're dealing with a static IP or a DHCP-served IP.
|
|
162
|
-
type = ip == :dhcp ? :dhcp : :static
|
|
163
|
-
|
|
164
|
-
# Default IP is in the 20-bit private network block for DHCP based networks
|
|
165
|
-
ip = "172.28.128.1" if type == :dhcp
|
|
166
|
-
|
|
167
|
-
options = {
|
|
168
|
-
:type => type,
|
|
169
|
-
:ip => ip,
|
|
170
|
-
:netmask => "255.255.255.0",
|
|
171
|
-
:adapter => nil,
|
|
172
|
-
:mac => nil,
|
|
173
|
-
:name => nil,
|
|
174
|
-
:auto_config => true
|
|
175
|
-
}.merge(options)
|
|
176
|
-
|
|
177
|
-
# Verify that this hostonly network wouldn't conflict with any
|
|
178
|
-
# bridged interfaces
|
|
179
|
-
verify_no_bridge_collision(options)
|
|
180
|
-
|
|
181
|
-
# Get the network address and IP parts which are used for many
|
|
182
|
-
# default calculations
|
|
183
|
-
netaddr = network_address(options[:ip], options[:netmask])
|
|
184
|
-
ip_parts = netaddr.split(".").map { |i| i.to_i }
|
|
185
|
-
|
|
186
|
-
# Calculate the adapter IP, which we assume is the IP ".1" at the
|
|
187
|
-
# end usually.
|
|
188
|
-
adapter_ip = ip_parts.dup
|
|
189
|
-
adapter_ip[3] += 1
|
|
190
|
-
options[:adapter_ip] ||= adapter_ip.join(".")
|
|
191
|
-
|
|
192
|
-
if type == :dhcp
|
|
193
|
-
# Calculate the DHCP server IP, which is the network address
|
|
194
|
-
# with the final octet + 2. So "172.28.0.0" turns into "172.28.0.2"
|
|
195
|
-
dhcp_ip = ip_parts.dup
|
|
196
|
-
dhcp_ip[3] += 2
|
|
197
|
-
options[:dhcp_ip] ||= dhcp_ip.join(".")
|
|
198
|
-
|
|
199
|
-
# Calculate the lower and upper bound for the DHCP server
|
|
200
|
-
dhcp_lower = ip_parts.dup
|
|
201
|
-
dhcp_lower[3] += 3
|
|
202
|
-
options[:dhcp_lower] ||= dhcp_lower.join(".")
|
|
203
|
-
|
|
204
|
-
dhcp_upper = ip_parts.dup
|
|
205
|
-
dhcp_upper[3] = 254
|
|
206
|
-
options[:dhcp_upper] ||= dhcp_upper.join(".")
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
# Return the hostonly network configuration
|
|
210
|
-
return options
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
def hostonly_adapter(config)
|
|
214
|
-
@logger.debug("Searching for matching network: #{config[:ip]}")
|
|
215
|
-
interface = find_matching_hostonly_network(config)
|
|
216
|
-
|
|
217
|
-
if !interface
|
|
218
|
-
@logger.debug("Network not found. Creating if we can.")
|
|
219
|
-
|
|
220
|
-
# It is an error case if a specific name was given but the network
|
|
221
|
-
# doesn't exist.
|
|
222
|
-
if config[:name]
|
|
223
|
-
raise Errors::NetworkNotFound, :name => config[:name]
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
# Otherwise, we create a new network and put the net network
|
|
227
|
-
# in the list of available networks so other network definitions
|
|
228
|
-
# can use it!
|
|
229
|
-
interface = create_hostonly_network(config)
|
|
230
|
-
@logger.debug("Created network: #{interface[:name]}")
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
if config[:type] == :dhcp
|
|
234
|
-
# Check that if there is a DHCP server attached on our interface,
|
|
235
|
-
# then it is identical. Otherwise, we can't set it.
|
|
236
|
-
if interface[:dhcp]
|
|
237
|
-
valid = interface[:dhcp][:ip] == config[:dhcp_ip] &&
|
|
238
|
-
interface[:dhcp][:lower] == config[:dhcp_lower] &&
|
|
239
|
-
interface[:dhcp][:upper] == config[:dhcp_upper]
|
|
240
|
-
|
|
241
|
-
raise Errors::NetworkDHCPAlreadyAttached if !valid
|
|
242
|
-
|
|
243
|
-
@logger.debug("DHCP server already properly configured")
|
|
244
|
-
else
|
|
245
|
-
# Configure the DHCP server for the network.
|
|
246
|
-
@logger.debug("Creating a DHCP server...")
|
|
247
|
-
@env[:vm].driver.create_dhcp_server(interface[:name], config)
|
|
248
|
-
end
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
return {
|
|
252
|
-
:adapter => config[:adapter],
|
|
253
|
-
:type => :hostonly,
|
|
254
|
-
:hostonly => interface[:name],
|
|
255
|
-
:mac_address => config[:mac],
|
|
256
|
-
:nic_type => config[:nic_type]
|
|
257
|
-
}
|
|
258
|
-
end
|
|
259
|
-
|
|
260
|
-
def hostonly_network_config(config)
|
|
261
|
-
return {
|
|
262
|
-
:type => config[:type],
|
|
263
|
-
:ip => config[:ip],
|
|
264
|
-
:netmask => config[:netmask]
|
|
265
|
-
}
|
|
266
|
-
end
|
|
267
|
-
|
|
268
|
-
# Creates a new hostonly network that matches the network requested
|
|
269
|
-
# by the given host-only network configuration.
|
|
270
|
-
def create_hostonly_network(config)
|
|
271
|
-
# Create the options that are going to be used to create our
|
|
272
|
-
# new network.
|
|
273
|
-
options = config.dup
|
|
274
|
-
options[:ip] = options[:adapter_ip]
|
|
275
|
-
|
|
276
|
-
@env[:vm].driver.create_host_only_network(options)
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
# Finds a host only network that matches our configuration on VirtualBox.
|
|
280
|
-
# This will return nil if a matching network does not exist.
|
|
281
|
-
def find_matching_hostonly_network(config)
|
|
282
|
-
this_netaddr = network_address(config[:ip], config[:netmask])
|
|
283
|
-
|
|
284
|
-
@env[:vm].driver.read_host_only_interfaces.each do |interface|
|
|
285
|
-
if config[:name] && config[:name] == interface[:name]
|
|
286
|
-
return interface
|
|
287
|
-
elsif this_netaddr == network_address(interface[:ip], interface[:netmask])
|
|
288
|
-
return interface
|
|
289
|
-
end
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
nil
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
# Verifies that a host-only network subnet would not collide with
|
|
296
|
-
# a bridged networking interface.
|
|
297
|
-
#
|
|
298
|
-
# If the subnets overlap in any way then the host only network
|
|
299
|
-
# will not work because the routing tables will force the traffic
|
|
300
|
-
# onto the real interface rather than the virtualbox interface.
|
|
301
|
-
def verify_no_bridge_collision(options)
|
|
302
|
-
this_netaddr = network_address(options[:ip], options[:netmask])
|
|
303
|
-
|
|
304
|
-
@env[:vm].driver.read_bridged_interfaces.each do |interface|
|
|
305
|
-
that_netaddr = network_address(interface[:ip], interface[:netmask])
|
|
306
|
-
raise Errors::NetworkCollision if this_netaddr == that_netaddr && interface[:status] != "Down"
|
|
307
|
-
end
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
def bridged_config(args)
|
|
311
|
-
options = args[0] || {}
|
|
312
|
-
options = {} if !options.is_a?(Hash)
|
|
313
|
-
|
|
314
|
-
return {
|
|
315
|
-
:adapter => nil,
|
|
316
|
-
:mac => nil,
|
|
317
|
-
:bridge => nil,
|
|
318
|
-
:auto_config => true
|
|
319
|
-
}.merge(options)
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
def bridged_adapter(config)
|
|
323
|
-
# Find the bridged interfaces that are available
|
|
324
|
-
bridgedifs = @env[:vm].driver.read_bridged_interfaces
|
|
325
|
-
bridgedifs.delete_if { |interface| interface[:status] == "Down" }
|
|
326
|
-
|
|
327
|
-
# The name of the chosen bridge interface will be assigned to this
|
|
328
|
-
# variable.
|
|
329
|
-
chosen_bridge = nil
|
|
330
|
-
|
|
331
|
-
if config[:bridge]
|
|
332
|
-
@logger.debug("Bridge was directly specified in config, searching for: #{config[:bridge]}")
|
|
333
|
-
|
|
334
|
-
# Search for a matching bridged interface
|
|
335
|
-
bridgedifs.each do |interface|
|
|
336
|
-
if interface[:name].downcase == config[:bridge].downcase
|
|
337
|
-
@logger.debug("Specific bridge found as configured in the Vagrantfile. Using it.")
|
|
338
|
-
chosen_bridge = interface[:name]
|
|
339
|
-
break
|
|
340
|
-
end
|
|
341
|
-
end
|
|
342
|
-
|
|
343
|
-
# If one wasn't found, then we notify the user here.
|
|
344
|
-
if !chosen_bridge
|
|
345
|
-
@env[:ui].info I18n.t("vagrant.actions.vm.bridged_networking.specific_not_found",
|
|
346
|
-
:bridge => config[:bridge])
|
|
347
|
-
end
|
|
348
|
-
end
|
|
349
|
-
|
|
350
|
-
# If we still don't have a bridge chosen (this means that one wasn't
|
|
351
|
-
# specified in the Vagrantfile, or the bridge specified in the Vagrantfile
|
|
352
|
-
# wasn't found), then we fall back to the normal means of searchign for a
|
|
353
|
-
# bridged network.
|
|
354
|
-
if !chosen_bridge
|
|
355
|
-
if bridgedifs.length == 1
|
|
356
|
-
# One bridgable interface? Just use it.
|
|
357
|
-
chosen_bridge = bridgedifs[0][:name]
|
|
358
|
-
@logger.debug("Only one bridged interface available. Using it by default.")
|
|
359
|
-
else
|
|
360
|
-
# More than one bridgable interface requires a user decision, so
|
|
361
|
-
# show options to choose from.
|
|
362
|
-
@env[:ui].info I18n.t("vagrant.actions.vm.bridged_networking.available",
|
|
363
|
-
:prefix => false)
|
|
364
|
-
bridgedifs.each_index do |index|
|
|
365
|
-
interface = bridgedifs[index]
|
|
366
|
-
@env[:ui].info("#{index + 1}) #{interface[:name]}", :prefix => false)
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
# The range of valid choices
|
|
370
|
-
valid = Range.new(1, bridgedifs.length)
|
|
371
|
-
|
|
372
|
-
# The choice that the user has chosen as the bridging interface
|
|
373
|
-
choice = nil
|
|
374
|
-
while !valid.include?(choice)
|
|
375
|
-
choice = @env[:ui].ask("What interface should the network bridge to? ")
|
|
376
|
-
choice = choice.to_i
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
chosen_bridge = bridgedifs[choice - 1][:name]
|
|
380
|
-
end
|
|
381
|
-
end
|
|
382
|
-
|
|
383
|
-
@logger.info("Bridging adapter #{config[:adapter]} to #{chosen_bridge}")
|
|
384
|
-
|
|
385
|
-
# Given the choice we can now define the adapter we're using
|
|
386
|
-
return {
|
|
387
|
-
:adapter => config[:adapter],
|
|
388
|
-
:type => :bridged,
|
|
389
|
-
:bridge => chosen_bridge,
|
|
390
|
-
:mac_address => config[:mac],
|
|
391
|
-
:nic_type => config[:nic_type],
|
|
392
|
-
}
|
|
393
|
-
end
|
|
394
|
-
|
|
395
|
-
def bridged_network_config(config)
|
|
396
|
-
return {
|
|
397
|
-
:type => :dhcp
|
|
398
|
-
}
|
|
399
|
-
end
|
|
400
|
-
end
|
|
401
|
-
end
|
|
402
|
-
end
|
|
403
|
-
end
|