vagrant-fixed-ssh 1.0.7
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.
- data/.gitignore +46 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +723 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +121 -0
- data/Rakefile +18 -0
- data/bin/vagrant +60 -0
- data/config/default.rb +30 -0
- data/contrib/README.md +12 -0
- data/contrib/emacs/vagrant.el +8 -0
- data/contrib/vim/vagrantfile.vim +9 -0
- data/keys/README.md +17 -0
- data/keys/vagrant +27 -0
- data/keys/vagrant.pub +1 -0
- data/lib/vagrant.rb +197 -0
- data/lib/vagrant/action.rb +63 -0
- data/lib/vagrant/action/box/destroy.rb +25 -0
- data/lib/vagrant/action/box/download.rb +84 -0
- data/lib/vagrant/action/box/package.rb +19 -0
- data/lib/vagrant/action/box/unpackage.rb +61 -0
- data/lib/vagrant/action/box/verify.rb +23 -0
- data/lib/vagrant/action/builder.rb +128 -0
- data/lib/vagrant/action/builtin.rb +171 -0
- data/lib/vagrant/action/env/set.rb +21 -0
- data/lib/vagrant/action/environment.rb +12 -0
- data/lib/vagrant/action/general/check_virtualbox.rb +28 -0
- data/lib/vagrant/action/general/package.rb +101 -0
- data/lib/vagrant/action/general/validate.rb +18 -0
- data/lib/vagrant/action/runner.rb +53 -0
- data/lib/vagrant/action/vm/boot.rb +53 -0
- data/lib/vagrant/action/vm/check_accessible.rb +23 -0
- data/lib/vagrant/action/vm/check_box.rb +33 -0
- data/lib/vagrant/action/vm/check_guest_additions.rb +38 -0
- data/lib/vagrant/action/vm/check_port_collisions.rb +89 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +18 -0
- data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +18 -0
- data/lib/vagrant/action/vm/customize.rb +36 -0
- data/lib/vagrant/action/vm/default_name.rb +22 -0
- data/lib/vagrant/action/vm/destroy.rb +19 -0
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +20 -0
- data/lib/vagrant/action/vm/discard_state.rb +22 -0
- data/lib/vagrant/action/vm/export.rb +57 -0
- data/lib/vagrant/action/vm/forward_ports.rb +92 -0
- data/lib/vagrant/action/vm/halt.rb +32 -0
- data/lib/vagrant/action/vm/host_name.rb +21 -0
- data/lib/vagrant/action/vm/import.rb +48 -0
- data/lib/vagrant/action/vm/match_mac_address.rb +21 -0
- data/lib/vagrant/action/vm/network.rb +403 -0
- data/lib/vagrant/action/vm/nfs.rb +196 -0
- data/lib/vagrant/action/vm/package.rb +23 -0
- data/lib/vagrant/action/vm/package_vagrantfile.rb +36 -0
- data/lib/vagrant/action/vm/provision.rb +61 -0
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +26 -0
- data/lib/vagrant/action/vm/prune_nfs_exports.rb +20 -0
- data/lib/vagrant/action/vm/resume.rb +20 -0
- data/lib/vagrant/action/vm/sane_defaults.rb +78 -0
- data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
- data/lib/vagrant/action/vm/share_folders.rb +114 -0
- data/lib/vagrant/action/vm/suspend.rb +20 -0
- data/lib/vagrant/action/warden.rb +92 -0
- data/lib/vagrant/box.rb +44 -0
- data/lib/vagrant/box_collection.rb +58 -0
- data/lib/vagrant/cli.rb +76 -0
- data/lib/vagrant/command.rb +24 -0
- data/lib/vagrant/command/base.rb +167 -0
- data/lib/vagrant/command/box.rb +58 -0
- data/lib/vagrant/command/box_add.rb +37 -0
- data/lib/vagrant/command/box_list.rb +28 -0
- data/lib/vagrant/command/box_remove.rb +27 -0
- data/lib/vagrant/command/box_repackage.rb +27 -0
- data/lib/vagrant/command/destroy.rb +64 -0
- data/lib/vagrant/command/gem.rb +39 -0
- data/lib/vagrant/command/halt.rb +39 -0
- data/lib/vagrant/command/init.rb +40 -0
- data/lib/vagrant/command/package.rb +75 -0
- data/lib/vagrant/command/provision.rb +40 -0
- data/lib/vagrant/command/reload.rb +39 -0
- data/lib/vagrant/command/resume.rb +33 -0
- data/lib/vagrant/command/ssh.rb +90 -0
- data/lib/vagrant/command/ssh_config.rb +51 -0
- data/lib/vagrant/command/start_mixins.rb +26 -0
- data/lib/vagrant/command/status.rb +36 -0
- data/lib/vagrant/command/suspend.rb +33 -0
- data/lib/vagrant/command/up.rb +40 -0
- data/lib/vagrant/communication.rb +7 -0
- data/lib/vagrant/communication/base.rb +56 -0
- data/lib/vagrant/communication/ssh.rb +230 -0
- data/lib/vagrant/config.rb +49 -0
- data/lib/vagrant/config/base.rb +82 -0
- data/lib/vagrant/config/container.rb +37 -0
- data/lib/vagrant/config/error_recorder.rb +19 -0
- data/lib/vagrant/config/loader.rb +127 -0
- data/lib/vagrant/config/nfs.rb +8 -0
- data/lib/vagrant/config/package.rb +7 -0
- data/lib/vagrant/config/ssh.rb +27 -0
- data/lib/vagrant/config/top.rb +72 -0
- data/lib/vagrant/config/vagrant.rb +14 -0
- data/lib/vagrant/config/vm.rb +168 -0
- data/lib/vagrant/config/vm/provisioner.rb +52 -0
- data/lib/vagrant/config/vm/sub_vm.rb +17 -0
- data/lib/vagrant/data_store.rb +92 -0
- data/lib/vagrant/downloaders.rb +7 -0
- data/lib/vagrant/downloaders/base.rb +25 -0
- data/lib/vagrant/downloaders/file.rb +22 -0
- data/lib/vagrant/downloaders/http.rb +97 -0
- data/lib/vagrant/driver.rb +8 -0
- data/lib/vagrant/driver/virtualbox.rb +134 -0
- data/lib/vagrant/driver/virtualbox_4_0.rb +459 -0
- data/lib/vagrant/driver/virtualbox_4_1.rb +459 -0
- data/lib/vagrant/driver/virtualbox_4_2.rb +606 -0
- data/lib/vagrant/driver/virtualbox_base.rb +326 -0
- data/lib/vagrant/environment.rb +522 -0
- data/lib/vagrant/errors.rb +445 -0
- data/lib/vagrant/guest.rb +18 -0
- data/lib/vagrant/guest/arch.rb +56 -0
- data/lib/vagrant/guest/base.rb +99 -0
- data/lib/vagrant/guest/debian.rb +64 -0
- data/lib/vagrant/guest/fedora.rb +66 -0
- data/lib/vagrant/guest/freebsd.rb +86 -0
- data/lib/vagrant/guest/gentoo.rb +46 -0
- data/lib/vagrant/guest/linux.rb +118 -0
- data/lib/vagrant/guest/linux/config.rb +19 -0
- data/lib/vagrant/guest/linux/error.rb +9 -0
- data/lib/vagrant/guest/openbsd.rb +20 -0
- data/lib/vagrant/guest/redhat.rb +67 -0
- data/lib/vagrant/guest/solaris.rb +118 -0
- data/lib/vagrant/guest/suse.rb +17 -0
- data/lib/vagrant/guest/ubuntu.rb +23 -0
- data/lib/vagrant/hosts.rb +37 -0
- data/lib/vagrant/hosts/arch.rb +55 -0
- data/lib/vagrant/hosts/base.rb +66 -0
- data/lib/vagrant/hosts/bsd.rb +97 -0
- data/lib/vagrant/hosts/fedora.rb +47 -0
- data/lib/vagrant/hosts/freebsd.rb +41 -0
- data/lib/vagrant/hosts/gentoo.rb +20 -0
- data/lib/vagrant/hosts/linux.rb +94 -0
- data/lib/vagrant/hosts/opensuse.rb +30 -0
- data/lib/vagrant/hosts/windows.rb +16 -0
- data/lib/vagrant/plugin.rb +81 -0
- data/lib/vagrant/provisioners.rb +12 -0
- data/lib/vagrant/provisioners/base.rb +44 -0
- data/lib/vagrant/provisioners/chef.rb +168 -0
- data/lib/vagrant/provisioners/chef_client.rb +132 -0
- data/lib/vagrant/provisioners/chef_solo.rb +234 -0
- data/lib/vagrant/provisioners/puppet.rb +176 -0
- data/lib/vagrant/provisioners/puppet_server.rb +78 -0
- data/lib/vagrant/provisioners/shell.rb +103 -0
- data/lib/vagrant/registry.rb +52 -0
- data/lib/vagrant/ssh.rb +126 -0
- data/lib/vagrant/test_helpers.rb +154 -0
- data/lib/vagrant/ui.rb +168 -0
- data/lib/vagrant/util.rb +12 -0
- data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/counter.rb +24 -0
- data/lib/vagrant/util/file_checksum.rb +38 -0
- data/lib/vagrant/util/file_mode.rb +12 -0
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/is_port_open.rb +38 -0
- data/lib/vagrant/util/line_ending_helpers.rb +14 -0
- data/lib/vagrant/util/network_ip.rb +28 -0
- data/lib/vagrant/util/platform.rb +68 -0
- data/lib/vagrant/util/retryable.rb +25 -0
- data/lib/vagrant/util/safe_exec.rb +36 -0
- data/lib/vagrant/util/safe_puts.rb +31 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/subprocess.rb +247 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant/vm.rb +195 -0
- data/tasks/acceptance.rake +113 -0
- data/tasks/bundler.rake +3 -0
- data/tasks/test.rake +20 -0
- data/templates/commands/init/Vagrantfile.erb +99 -0
- data/templates/commands/ssh_config/config.erb +15 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/guests/arch/network_dhcp.erb +7 -0
- data/templates/guests/arch/network_static.erb +7 -0
- data/templates/guests/debian/network_dhcp.erb +6 -0
- data/templates/guests/debian/network_static.erb +7 -0
- data/templates/guests/fedora/network_dhcp.erb +6 -0
- data/templates/guests/fedora/network_static.erb +13 -0
- data/templates/guests/freebsd/network_dhcp.erb +3 -0
- data/templates/guests/freebsd/network_static.erb +3 -0
- data/templates/guests/gentoo/network_dhcp.erb +4 -0
- data/templates/guests/gentoo/network_static.erb +4 -0
- data/templates/guests/redhat/network_dhcp.erb +6 -0
- data/templates/guests/redhat/network_static.erb +7 -0
- data/templates/locales/en.yml +759 -0
- data/templates/nfs/exports.erb +5 -0
- data/templates/nfs/exports_freebsd.erb +5 -0
- data/templates/nfs/exports_linux.erb +5 -0
- data/templates/package_Vagrantfile.erb +11 -0
- data/templates/provisioners/chef_client/client.erb +32 -0
- data/templates/provisioners/chef_solo/solo.erb +25 -0
- data/test/acceptance/base.rb +48 -0
- data/test/acceptance/box_test.rb +99 -0
- data/test/acceptance/destroy_test.rb +37 -0
- data/test/acceptance/halt_test.rb +72 -0
- data/test/acceptance/init_test.rb +33 -0
- data/test/acceptance/networking/host_only_test.rb +37 -0
- data/test/acceptance/networking/port_forward_test.rb +125 -0
- data/test/acceptance/package_test.rb +46 -0
- data/test/acceptance/provisioning/basic_test.rb +61 -0
- data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
- data/test/acceptance/provisioning/shell_test.rb +53 -0
- data/test/acceptance/resume_test.rb +17 -0
- data/test/acceptance/shared_folders_test.rb +84 -0
- data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
- data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
- data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/ssh_test.rb +46 -0
- data/test/acceptance/support/config.rb +42 -0
- data/test/acceptance/support/isolated_environment.rb +117 -0
- data/test/acceptance/support/matchers/have_color.rb +9 -0
- data/test/acceptance/support/matchers/match_output.rb +14 -0
- data/test/acceptance/support/matchers/succeed.rb +14 -0
- data/test/acceptance/support/network_tests.rb +29 -0
- data/test/acceptance/support/output.rb +95 -0
- data/test/acceptance/support/shared/base_context.rb +72 -0
- data/test/acceptance/support/shared/command_examples.rb +33 -0
- data/test/acceptance/support/virtualbox.rb +36 -0
- data/test/acceptance/suspend_test.rb +56 -0
- data/test/acceptance/up_basic_test.rb +33 -0
- data/test/acceptance/up_with_box_url.rb +40 -0
- data/test/acceptance/vagrant_test.rb +47 -0
- data/test/acceptance/version_test.rb +15 -0
- data/test/buildbot/README.md +72 -0
- 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 +24 -0
- data/test/buildbot/buildbot_config/config/master.py +24 -0
- data/test/buildbot/buildbot_config/config/slave.py +22 -0
- data/test/buildbot/buildbot_config/master/__init__.py +6 -0
- data/test/buildbot/buildbot_config/master/builders.py +78 -0
- data/test/buildbot/buildbot_config/master/buildsteps.py +100 -0
- data/test/buildbot/buildbot_config/master/change_sources.py +8 -0
- data/test/buildbot/buildbot_config/master/schedulers.py +32 -0
- data/test/buildbot/buildbot_config/master/slaves.py +60 -0
- data/test/buildbot/buildbot_config/master/status.py +52 -0
- data/test/buildbot/master/Makefile.sample +28 -0
- data/test/buildbot/master/buildbot.tac +36 -0
- data/test/buildbot/master/master.cfg +67 -0
- data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
- data/test/buildbot/master/public_html/default.css +545 -0
- data/test/buildbot/master/public_html/favicon.ico +0 -0
- data/test/buildbot/master/public_html/robots.txt +10 -0
- data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +356 -0
- data/test/buildbot/master/public_html/static/css/prettify.css +97 -0
- data/test/buildbot/master/public_html/static/css/syntax.css +60 -0
- data/test/buildbot/master/public_html/static/css/vagrant.base.css +205 -0
- 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 +80 -0
- data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +4 -0
- data/test/buildbot/master/templates/authfail.html +9 -0
- data/test/buildbot/master/templates/build.html +205 -0
- data/test/buildbot/master/templates/builder.html +118 -0
- data/test/buildbot/master/templates/builders.html +33 -0
- data/test/buildbot/master/templates/buildslave.html +72 -0
- data/test/buildbot/master/templates/buildslaves.html +70 -0
- data/test/buildbot/master/templates/change.html +15 -0
- data/test/buildbot/master/templates/layouts/base.html +58 -0
- data/test/buildbot/master/templates/macros/box.html +37 -0
- data/test/buildbot/master/templates/macros/build_line.html +50 -0
- data/test/buildbot/master/templates/macros/change.html +81 -0
- data/test/buildbot/master/templates/macros/forms.html +300 -0
- data/test/buildbot/master/templates/root.html +42 -0
- data/test/buildbot/master/templates/waterfall.html +53 -0
- data/test/buildbot/requirements.txt +4 -0
- data/test/buildbot/scripts/deploy.sh +38 -0
- data/test/buildbot/scripts/setup.sh +107 -0
- data/test/buildbot/slave/buildbot.tac +43 -0
- data/test/buildbot/slave/info/admin +1 -0
- data/test/buildbot/slave/info/host +1 -0
- 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 +41 -0
- data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
- data/test/config/acceptance_boxes.yml +7 -0
- data/test/support/isolated_environment.rb +46 -0
- data/test/support/tempdir.rb +34 -0
- data/test/unit/base.rb +21 -0
- data/test/unit/support/isolated_environment.rb +47 -0
- data/test/unit/support/shared/base_context.rb +30 -0
- data/test/unit/vagrant/action/builder_test.rb +156 -0
- data/test/unit/vagrant/action/environment_test.rb +16 -0
- data/test/unit/vagrant/action/runner_test.rb +65 -0
- data/test/unit/vagrant/action/warden_test.rb +92 -0
- data/test/unit/vagrant/box_collection_test.rb +56 -0
- data/test/unit/vagrant/box_test.rb +34 -0
- data/test/unit/vagrant/command/base_test.rb +150 -0
- data/test/unit/vagrant/config/base_test.rb +48 -0
- data/test/unit/vagrant/config/loader_test.rb +79 -0
- data/test/unit/vagrant/config/ssh_test.rb +17 -0
- data/test/unit/vagrant/config/top_test.rb +69 -0
- data/test/unit/vagrant/config/vm_test.rb +71 -0
- data/test/unit/vagrant/config_test.rb +27 -0
- data/test/unit/vagrant/data_store_test.rb +79 -0
- data/test/unit/vagrant/downloaders/base_test.rb +18 -0
- data/test/unit/vagrant/downloaders/file_test.rb +75 -0
- data/test/unit/vagrant/downloaders/http_test.rb +19 -0
- data/test/unit/vagrant/environment_test.rb +220 -0
- data/test/unit/vagrant/hosts_test.rb +36 -0
- data/test/unit/vagrant/registry_test.rb +74 -0
- data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
- data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
- data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
- data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
- data/test/unit/vagrant/util/network_ip_test.rb +17 -0
- data/test/unit/vagrant/util/retryable_test.rb +106 -0
- data/test/unit/vagrant_test.rb +27 -0
- data/test/unit_legacy/locales/en.yml +8 -0
- data/test/unit_legacy/test_helper.rb +32 -0
- data/test/unit_legacy/vagrant/action/box/destroy_test.rb +18 -0
- data/test/unit_legacy/vagrant/action/box/download_test.rb +125 -0
- data/test/unit_legacy/vagrant/action/box/package_test.rb +25 -0
- data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +84 -0
- data/test/unit_legacy/vagrant/action/box/verify_test.rb +30 -0
- data/test/unit_legacy/vagrant/action/env/set_test.rb +24 -0
- data/test/unit_legacy/vagrant/action/general/package_test.rb +268 -0
- data/test/unit_legacy/vagrant/action/general/validate_test.rb +31 -0
- data/test/unit_legacy/vagrant/action/vm/boot_test.rb +66 -0
- data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +61 -0
- data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +61 -0
- data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +9 -0
- data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
- data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +52 -0
- data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
- data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +40 -0
- data/test/unit_legacy/vagrant/action/vm/customize_test.rb +37 -0
- data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +25 -0
- data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
- data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +45 -0
- data/test/unit_legacy/vagrant/action/vm/export_test.rb +107 -0
- data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +77 -0
- data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +197 -0
- data/test/unit_legacy/vagrant/action/vm/halt_test.rb +79 -0
- data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +36 -0
- data/test/unit_legacy/vagrant/action/vm/import_test.rb +66 -0
- data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +40 -0
- data/test/unit_legacy/vagrant/action/vm/modify_test.rb +38 -0
- data/test/unit_legacy/vagrant/action/vm/network_test.rb +286 -0
- data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +26 -0
- data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +260 -0
- data/test/unit_legacy/vagrant/action/vm/package_test.rb +25 -0
- data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
- data/test/unit_legacy/vagrant/action/vm/provision_test.rb +65 -0
- data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +56 -0
- data/test/unit_legacy/vagrant/action/vm/resume_test.rb +35 -0
- data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +144 -0
- data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +35 -0
- data/test/unit_legacy/vagrant/action_test.rb +89 -0
- data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
- data/test/unit_legacy/vagrant/box_test.rb +74 -0
- data/test/unit_legacy/vagrant/cli_test.rb +35 -0
- data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
- data/test/unit_legacy/vagrant/command/group_base_test.rb +15 -0
- data/test/unit_legacy/vagrant/command/helpers_test.rb +88 -0
- data/test/unit_legacy/vagrant/command/init_test.rb +10 -0
- data/test/unit_legacy/vagrant/command/package_test.rb +27 -0
- data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
- data/test/unit_legacy/vagrant/config/error_recorder_test.rb +18 -0
- data/test/unit_legacy/vagrant/config/ssh_test.rb +12 -0
- data/test/unit_legacy/vagrant/config/vagrant_test.rb +35 -0
- data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +92 -0
- data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
- data/test/unit_legacy/vagrant/config_test.rb +148 -0
- data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
- data/test/unit_legacy/vagrant/environment_test.rb +539 -0
- data/test/unit_legacy/vagrant/errors_test.rb +42 -0
- data/test/unit_legacy/vagrant/hosts/base_test.rb +46 -0
- data/test/unit_legacy/vagrant/hosts/bsd_test.rb +53 -0
- data/test/unit_legacy/vagrant/hosts/linux_test.rb +54 -0
- data/test/unit_legacy/vagrant/plugin_test.rb +9 -0
- data/test/unit_legacy/vagrant/provisioners/base_test.rb +63 -0
- data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +190 -0
- data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +115 -0
- data/test/unit_legacy/vagrant/provisioners/chef_test.rb +209 -0
- data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +68 -0
- data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +182 -0
- data/test/unit_legacy/vagrant/provisioners/shell_test.rb +79 -0
- data/test/unit_legacy/vagrant/ssh/session_test.rb +40 -0
- data/test/unit_legacy/vagrant/ssh_test.rb +304 -0
- data/test/unit_legacy/vagrant/systems/base_test.rb +18 -0
- data/test/unit_legacy/vagrant/systems/linux_test.rb +104 -0
- data/test/unit_legacy/vagrant/util/busy_test.rb +106 -0
- data/test/unit_legacy/vagrant/util/counter_test.rb +29 -0
- data/test/unit_legacy/vagrant/util/platform_test.rb +18 -0
- data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +43 -0
- data/test/unit_legacy/vagrant/util/template_renderer_test.rb +145 -0
- data/test/unit_legacy/vagrant/vm_test.rb +300 -0
- data/vagrant-fixed-ssh.gemspec +70 -0
- metadata +712 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Action
|
3
|
+
module Env
|
4
|
+
# A middleware which just sets up the environment with some
|
5
|
+
# options which are passed to it.
|
6
|
+
class Set
|
7
|
+
def initialize(app, env, options=nil)
|
8
|
+
@app = app
|
9
|
+
@options = options || {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def call(env)
|
13
|
+
# Merge the options that were given to us
|
14
|
+
env.merge!(@options)
|
15
|
+
|
16
|
+
@app.call(env)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'vagrant/util/hash_with_indifferent_access'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Action
|
5
|
+
# Represents an action environment which is what is passed
|
6
|
+
# to the `call` method of each action. This environment contains
|
7
|
+
# some helper methods for accessing the environment as well
|
8
|
+
# as being a hash, to store any additional options.
|
9
|
+
class Environment < Util::HashWithIndifferentAccess
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Action
|
3
|
+
module General
|
4
|
+
# Checks that virtualbox is installed and ready to be used.
|
5
|
+
class CheckVirtualbox
|
6
|
+
def initialize(app, env)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
# Certain actions may not actually have a VM, and thus no
|
12
|
+
# driver, so we have to be clever about obtaining an instance
|
13
|
+
# of the driver.
|
14
|
+
driver = nil
|
15
|
+
driver = env[:vm].driver if env[:vm]
|
16
|
+
driver = Driver::VirtualBox.new(nil) if !driver
|
17
|
+
|
18
|
+
# Verify that it is ready to go! This will raise an exception
|
19
|
+
# if anything goes wrong.
|
20
|
+
driver.verify!
|
21
|
+
|
22
|
+
# Carry on.
|
23
|
+
@app.call(env)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'archive/tar/minitar'
|
3
|
+
|
4
|
+
module Vagrant
|
5
|
+
module Action
|
6
|
+
module General
|
7
|
+
# A general packaging (tar) middleware. Given the following options,
|
8
|
+
# it will do the right thing:
|
9
|
+
#
|
10
|
+
# * package.output - The filename of the outputted package.
|
11
|
+
# * package.include - An array of files to include in the package.
|
12
|
+
# * package.directory - The directory which contains the contents to
|
13
|
+
# compress into the package.
|
14
|
+
#
|
15
|
+
# This middleware always produces the final file in the current working
|
16
|
+
# directory (FileUtils.pwd)
|
17
|
+
class Package
|
18
|
+
include Util
|
19
|
+
|
20
|
+
def initialize(app, env)
|
21
|
+
@app = app
|
22
|
+
|
23
|
+
env["package.files"] ||= {}
|
24
|
+
env["package.output"] ||= env["global_config"].package.name
|
25
|
+
end
|
26
|
+
|
27
|
+
def call(env)
|
28
|
+
@env = env
|
29
|
+
|
30
|
+
raise Errors::PackageOutputDirectory if File.directory?(tar_path)
|
31
|
+
raise Errors::PackageOutputExists if File.exist?(tar_path)
|
32
|
+
raise Errors::PackageRequiresDirectory if !env["package.directory"] ||
|
33
|
+
!File.directory?(env["package.directory"])
|
34
|
+
|
35
|
+
compress
|
36
|
+
|
37
|
+
@app.call(env)
|
38
|
+
end
|
39
|
+
|
40
|
+
def recover(env)
|
41
|
+
# There are certain exceptions that we don't delete the file for.
|
42
|
+
ignore_exc = [Errors::PackageOutputDirectory, Errors::PackageOutputExists]
|
43
|
+
ignore_exc.each do |exc|
|
44
|
+
return if env["vagrant.error"].is_a?(exc)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Cleanup any packaged files if the packaging failed at some point.
|
48
|
+
File.delete(tar_path) if File.exist?(tar_path)
|
49
|
+
end
|
50
|
+
|
51
|
+
# This method copies the include files (passed in via command line)
|
52
|
+
# to the temporary directory so they are included in a sub-folder within
|
53
|
+
# the actual box
|
54
|
+
def copy_include_files
|
55
|
+
include_directory = Pathname.new(@env["package.directory"]).join("include")
|
56
|
+
|
57
|
+
@env["package.files"].each do |from, dest|
|
58
|
+
# We place the file in the include directory
|
59
|
+
to = include_directory.join(dest)
|
60
|
+
|
61
|
+
@env[:ui].info I18n.t("vagrant.actions.general.package.packaging", :file => from)
|
62
|
+
FileUtils.mkdir_p(to.parent)
|
63
|
+
|
64
|
+
# Copy direcotry contents recursively.
|
65
|
+
if File.directory?(from)
|
66
|
+
FileUtils.cp_r(Dir.glob(from), to.parent)
|
67
|
+
else
|
68
|
+
FileUtils.cp(from, to)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Compress the exported file into a package
|
74
|
+
def compress
|
75
|
+
@env[:ui].info I18n.t("vagrant.actions.general.package.compressing", :tar_path => tar_path)
|
76
|
+
File.open(tar_path, Platform.tar_file_options) do |tar|
|
77
|
+
Archive::Tar::Minitar::Output.open(tar) do |output|
|
78
|
+
begin
|
79
|
+
current_dir = FileUtils.pwd
|
80
|
+
|
81
|
+
copy_include_files
|
82
|
+
|
83
|
+
FileUtils.cd(@env["package.directory"])
|
84
|
+
Dir.glob(File.join(".", "**", "*")).each do |entry|
|
85
|
+
Archive::Tar::Minitar.pack_file(entry, output)
|
86
|
+
end
|
87
|
+
ensure
|
88
|
+
FileUtils.cd(current_dir)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# Path to the final box output file
|
95
|
+
def tar_path
|
96
|
+
File.expand_path(@env["package.output"], FileUtils.pwd)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,18 @@
|
|
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
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'log4r'
|
2
|
+
|
3
|
+
require 'vagrant/util/busy'
|
4
|
+
|
5
|
+
# TODO:
|
6
|
+
# * env.lock
|
7
|
+
|
8
|
+
module Vagrant
|
9
|
+
module Action
|
10
|
+
class Runner
|
11
|
+
@@reported_interrupt = false
|
12
|
+
|
13
|
+
def initialize(registry, globals=nil, &block)
|
14
|
+
@registry = registry
|
15
|
+
@globals = globals || {}
|
16
|
+
@lazy_globals = block
|
17
|
+
@logger = Log4r::Logger.new("vagrant::action::runner")
|
18
|
+
end
|
19
|
+
|
20
|
+
def run(callable_id, options=nil)
|
21
|
+
callable = callable_id
|
22
|
+
callable = Builder.new.use(callable_id) if callable_id.kind_of?(Class)
|
23
|
+
callable = @registry.get(callable_id) if callable_id.kind_of?(Symbol)
|
24
|
+
raise ArgumentError, "Argument to run must be a callable object or registered action." if !callable || !callable.respond_to?(:call)
|
25
|
+
|
26
|
+
# Create the initial environment with the options given
|
27
|
+
environment = Environment.new
|
28
|
+
environment.merge!(@globals)
|
29
|
+
environment.merge!(@lazy_globals.call) if @lazy_globals
|
30
|
+
environment.merge!(options || {})
|
31
|
+
|
32
|
+
# Run the action chain in a busy block, marking the environment as
|
33
|
+
# interrupted if a SIGINT occurs, and exiting cleanly once the
|
34
|
+
# chain has been run.
|
35
|
+
ui = environment[:ui] if environment.has_key?(:ui)
|
36
|
+
int_callback = lambda do
|
37
|
+
if environment[:interrupted]
|
38
|
+
ui.error I18n.t("vagrant.actions.runner.exit_immediately") if ui
|
39
|
+
abort
|
40
|
+
end
|
41
|
+
|
42
|
+
ui.warn I18n.t("vagrant.actions.runner.waiting_cleanup") if ui && !@@reported_interrupt
|
43
|
+
environment[:interrupted] = true
|
44
|
+
@@reported_interrupt = true
|
45
|
+
end
|
46
|
+
|
47
|
+
# We place a process lock around every action that is called
|
48
|
+
@logger.info("Running action: #{callable_id}")
|
49
|
+
Util::Busy.busy(int_callback) { callable.call(environment) }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Action
|
3
|
+
module VM
|
4
|
+
class Boot
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
@env = env
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
@env = env
|
12
|
+
|
13
|
+
# Start up the VM and wait for it to boot.
|
14
|
+
boot
|
15
|
+
raise Errors::VMFailedToBoot if !wait_for_boot
|
16
|
+
|
17
|
+
@app.call(env)
|
18
|
+
end
|
19
|
+
|
20
|
+
def boot
|
21
|
+
@env[:ui].info I18n.t("vagrant.actions.vm.boot.booting")
|
22
|
+
@env[:vm].driver.start(@env[:vm].config.vm.boot_mode)
|
23
|
+
end
|
24
|
+
|
25
|
+
def wait_for_boot
|
26
|
+
@env[:ui].info I18n.t("vagrant.actions.vm.boot.waiting")
|
27
|
+
|
28
|
+
@env[:vm].config.ssh.max_tries.to_i.times do |i|
|
29
|
+
if @env[:vm].channel.ready?
|
30
|
+
@env[:ui].info I18n.t("vagrant.actions.vm.boot.ready")
|
31
|
+
return true
|
32
|
+
end
|
33
|
+
|
34
|
+
# Return true so that the vm_failed_to_boot error doesn't
|
35
|
+
# get shown
|
36
|
+
return true if @env[:interrupted]
|
37
|
+
|
38
|
+
# If the VM is not starting or running, something went wrong
|
39
|
+
# and we need to show a useful error.
|
40
|
+
state = @env[:vm].state
|
41
|
+
raise Errors::VMFailedToRun if state != :starting && state != :running
|
42
|
+
|
43
|
+
sleep 2 if !@env["vagrant.test"]
|
44
|
+
end
|
45
|
+
|
46
|
+
@env[:ui].error I18n.t("vagrant.actions.vm.boot.failed")
|
47
|
+
false
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Action
|
3
|
+
module VM
|
4
|
+
class CheckAccessible
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
if env[:vm].state == :inaccessible
|
11
|
+
# The VM we are attempting to manipulate is inaccessible. This
|
12
|
+
# is a very bad situation and can only be fixed by the user. It
|
13
|
+
# also prohibits us from actually doing anything with the virtual
|
14
|
+
# machine, so we raise an error.
|
15
|
+
raise Errors::VMInaccessible
|
16
|
+
end
|
17
|
+
|
18
|
+
@app.call(env)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,33 @@
|
|
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
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Action
|
3
|
+
module VM
|
4
|
+
# Middleware which verifies that the VM has the proper guest additions
|
5
|
+
# installed and prints a warning if they're not detected or if the
|
6
|
+
# version does not match the installed VirtualBox version.
|
7
|
+
class CheckGuestAdditions
|
8
|
+
def initialize(app, env)
|
9
|
+
@app = app
|
10
|
+
end
|
11
|
+
|
12
|
+
def call(env)
|
13
|
+
# Use the raw interface for now, while the virtualbox gem
|
14
|
+
# doesn't support guest properties (due to cross platform issues)
|
15
|
+
version = env[:vm].driver.read_guest_additions_version
|
16
|
+
if !version
|
17
|
+
env[:ui].warn I18n.t("vagrant.actions.vm.check_guest_additions.not_detected")
|
18
|
+
else
|
19
|
+
# Strip the -OSE/_OSE off from the guest additions and the virtual box
|
20
|
+
# version since all the matters are that the version _numbers_ match up.
|
21
|
+
guest_version, vb_version = [version, env[:vm].driver.version].map do |v|
|
22
|
+
v.gsub(/[-_]ose/i, '')
|
23
|
+
end
|
24
|
+
|
25
|
+
if guest_version != vb_version
|
26
|
+
env[:ui].warn(I18n.t("vagrant.actions.vm.check_guest_additions.version_mismatch",
|
27
|
+
:guest_version => version,
|
28
|
+
:virtualbox_version => vb_version))
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Continue
|
33
|
+
@app.call(env)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,89 @@
|
|
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
|