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,15 @@
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
2
|
+
|
3
|
+
describe "vagrant version" do
|
4
|
+
include_context "acceptance"
|
5
|
+
|
6
|
+
it "prints the version when called with '-v'" do
|
7
|
+
result = execute("vagrant", "-v")
|
8
|
+
result.stdout.should match_output(:version, config.vagrant_version)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "prints the version when called with '--version'" do
|
12
|
+
result = execute("vagrant", "--version")
|
13
|
+
result.stdout.should match_output(:version, config.vagrant_version)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# Vagrant Buildbot System
|
2
|
+
|
3
|
+
This is the code for the Vagrant buildbot system. [Buildbot](http://buildbot.net)
|
4
|
+
is a continuous integration system that offers an extreme amount
|
5
|
+
of flexibility and power.
|
6
|
+
|
7
|
+
This directory contains a few subdirectories to setup this CI system:
|
8
|
+
|
9
|
+
* `buildbot_config` - This contains the custom Python code to setup the
|
10
|
+
various parts of the buildbot configuration.
|
11
|
+
* `master` - This is mostly auto-generated from Buildbot itself, however
|
12
|
+
the `master.cfg` file is the configuration used on the buildmaster.
|
13
|
+
* `slave`- This is mostly auto-generated from Buildbot, but the
|
14
|
+
`buildbot.tac` contains some custom code in it to connect to the Vagrant
|
15
|
+
buildmaster.
|
16
|
+
|
17
|
+
**NOTE:** One of the dependencies for the Vagrant CI system is currently
|
18
|
+
not public, and as such can't be setup by the general public. This will be
|
19
|
+
fixed in the next couple weeks.
|
20
|
+
|
21
|
+
## Contribute a CI Slave!
|
22
|
+
|
23
|
+
**NOTE:** The slave contribution process is still not completely setup and
|
24
|
+
will be ironed out very soon after the CI system is up and running.
|
25
|
+
|
26
|
+
Vagrant is an open source profit which doesn't have any income from support,
|
27
|
+
services, or otherwise. All Vagrant slave machines are donated by the
|
28
|
+
community. Donating a machine doesn't require anything more than installing
|
29
|
+
and running the slave software. Vagrant is specifically looking for slave
|
30
|
+
machines that provide a diverse set of operating systems and cpu architectures
|
31
|
+
for testing Vagrant.
|
32
|
+
|
33
|
+
## Setting up the Buildmaster
|
34
|
+
|
35
|
+
To set up the buildmaster, clone out this directory somewhere and install
|
36
|
+
the dependencies:
|
37
|
+
|
38
|
+
pip install -r requirements.txt
|
39
|
+
|
40
|
+
Once the dependencies are installed, create a configuration file with the
|
41
|
+
settings you want to use somewhere. The settings available for a master are
|
42
|
+
defined in `buildbot_config/config/master.py`. An example configuration file:
|
43
|
+
|
44
|
+
[master]
|
45
|
+
slaves=foo:password,bar:anotherpassword
|
46
|
+
web_port=8000
|
47
|
+
|
48
|
+
Execute the buildbot using:
|
49
|
+
|
50
|
+
BUILDBOT_CONFIG=/path/to/my/config.cfg buildbot start master/
|
51
|
+
|
52
|
+
## Setting up a Buildslave
|
53
|
+
|
54
|
+
To set up a slave, clone out this directory and install the dependencies:
|
55
|
+
|
56
|
+
pip install -r requirements.txt
|
57
|
+
|
58
|
+
Then, create a configuration file with the slave settings. The settings
|
59
|
+
available for a slave are defined in `buildbot_config/config/slave.py`.
|
60
|
+
An example configuration file:
|
61
|
+
|
62
|
+
[slave]
|
63
|
+
master_host=ci.vagrantup.com
|
64
|
+
master_port=9989
|
65
|
+
name=the-love-machine
|
66
|
+
password=foobarbaz
|
67
|
+
|
68
|
+
Note that the password above will be assigned to you as part of donating
|
69
|
+
any slave machine, since it must be setup on the buildmaster side as well.
|
70
|
+
Once the configuration is done, run the slave:
|
71
|
+
|
72
|
+
BUILDBOT_CONFIG=/path/to/my/config.cfg buildslave start slave/
|
File without changes
|
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"""
|
2
|
+
This module contains the configuration loader for a specific
|
3
|
+
choices instance. This is used internally to load the settings.
|
4
|
+
"""
|
5
|
+
|
6
|
+
import os
|
7
|
+
|
8
|
+
from choices import ConfigFileLoader
|
9
|
+
|
10
|
+
def load_settings(choices, type):
|
11
|
+
"""
|
12
|
+
This will load the proper settings for the given choices
|
13
|
+
instance.
|
14
|
+
|
15
|
+
:Parameters:
|
16
|
+
- `choices`: The choices instance to load.
|
17
|
+
- `type`: The type of configuration, either "master" or
|
18
|
+
"slave"
|
19
|
+
"""
|
20
|
+
if "BUILDBOT_CONFIG" not in os.environ:
|
21
|
+
raise ValueError, "BUILDBOT_CONFIG must be set to point to where the configuration file is."
|
22
|
+
|
23
|
+
choices.add_loader(ConfigFileLoader(os.environ["BUILDBOT_CONFIG"], type))
|
24
|
+
return choices.load()
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"""
|
2
|
+
This module contains the choices definition for settings required
|
3
|
+
for the build master to run.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from choices import Choices
|
7
|
+
|
8
|
+
from loader import load_settings
|
9
|
+
|
10
|
+
#----------------------------------------------------------------------
|
11
|
+
# Define the Settings
|
12
|
+
#----------------------------------------------------------------------
|
13
|
+
c = Choices()
|
14
|
+
c.define('title', type=str, help="Buildmaster title")
|
15
|
+
c.define('title_url', type=str, help="URL for title page")
|
16
|
+
c.define('buildbot_url', type=str, help="URL to the buildbot master.")
|
17
|
+
c.define('slaves', type=str, help="A list of the slave machines. The format should be name:password,name:password,...")
|
18
|
+
c.define('web_port', type=int, help="Port to listen on for web service.")
|
19
|
+
c.define('http_users', type=str, help="username:password list of users.")
|
20
|
+
|
21
|
+
#----------------------------------------------------------------------
|
22
|
+
# Load the Settings
|
23
|
+
#----------------------------------------------------------------------
|
24
|
+
options = load_settings(c, "master")
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"""
|
2
|
+
This module contains the choices definition for settings required for the
|
3
|
+
build slave to run.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from choices import Choices
|
7
|
+
|
8
|
+
from loader import load_settings
|
9
|
+
|
10
|
+
#----------------------------------------------------------------------
|
11
|
+
# Define the Settings
|
12
|
+
#----------------------------------------------------------------------
|
13
|
+
c = Choices()
|
14
|
+
c.define("master_host", type=str, help="Host of the build master.")
|
15
|
+
c.define("master_port", type=int, help="Port that is listening or build masters.")
|
16
|
+
c.define("name", type=str, help="Name of the slave machine.")
|
17
|
+
c.define("password", type=str, help="Password for the slave machine to communicate with the master.")
|
18
|
+
|
19
|
+
#----------------------------------------------------------------------
|
20
|
+
# Load the Settings
|
21
|
+
#----------------------------------------------------------------------
|
22
|
+
options = load_settings(c, "slave")
|
@@ -0,0 +1,78 @@
|
|
1
|
+
"""
|
2
|
+
This module contains the logic to create and return the various builders
|
3
|
+
that this buildmaster supports. The builders are responsible for taking
|
4
|
+
a set of changes and giving the steps necessary to build the project.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from buildbot.config import BuilderConfig
|
8
|
+
from buildbot.process.factory import BuildFactory
|
9
|
+
from buildbot.process.properties import WithProperties
|
10
|
+
from buildbot.steps.source.git import Git
|
11
|
+
|
12
|
+
from buildbot_config.master import buildsteps
|
13
|
+
|
14
|
+
def get_builders(slaves):
|
15
|
+
"""
|
16
|
+
This returns a list of builder configurations for the given
|
17
|
+
slaves.
|
18
|
+
"""
|
19
|
+
return get_vagrant_builders("master", slaves)
|
20
|
+
|
21
|
+
def get_vagrant_builders(branch, slaves):
|
22
|
+
"""
|
23
|
+
This returns a list of the builders that represent the entire
|
24
|
+
chain for a given branch (unit, acceptance, packaging builds).
|
25
|
+
"""
|
26
|
+
platforms = ["linux", "osx", "win"]
|
27
|
+
builders = []
|
28
|
+
|
29
|
+
for platform in platforms:
|
30
|
+
platform_slaves = [s.slavename for s in slaves if platform in s.slavename]
|
31
|
+
|
32
|
+
if len(platform_slaves) > 0:
|
33
|
+
unit = BuilderConfig(
|
34
|
+
name="%s-%s-unit" % (platform, branch),
|
35
|
+
slavenames=platform_slaves,
|
36
|
+
factory=make_vagrant_unit_factory(branch))
|
37
|
+
|
38
|
+
acceptance = BuilderConfig(
|
39
|
+
name="%s-%s-acceptance" % (platform, branch),
|
40
|
+
slavenames=platform_slaves,
|
41
|
+
factory=make_vagrant_acceptance_factory(branch))
|
42
|
+
|
43
|
+
builders.extend([unit, acceptance])
|
44
|
+
|
45
|
+
return builders
|
46
|
+
|
47
|
+
def make_vagrant_unit_factory(branch):
|
48
|
+
"""
|
49
|
+
This returns the factory that runs the Vagrant unit tests.
|
50
|
+
"""
|
51
|
+
f = BuildFactory()
|
52
|
+
f.addStep(Git(repourl="git://github.com/mitchellh/vagrant.git",
|
53
|
+
branch=branch,
|
54
|
+
mode="full",
|
55
|
+
method="fresh",
|
56
|
+
shallow=True))
|
57
|
+
f.addStep(buildsteps.Bundler())
|
58
|
+
f.addStep(buildsteps.UnitTests())
|
59
|
+
|
60
|
+
return f
|
61
|
+
|
62
|
+
def make_vagrant_acceptance_factory(branch):
|
63
|
+
"""
|
64
|
+
This returns a build factory that knows how to run the Vagrant
|
65
|
+
acceptance tests.
|
66
|
+
"""
|
67
|
+
f = BuildFactory()
|
68
|
+
f.addStep(Git(repourl="git://github.com/mitchellh/vagrant.git",
|
69
|
+
branch=branch,
|
70
|
+
mode="full",
|
71
|
+
method="fresh",
|
72
|
+
shallow=True))
|
73
|
+
f.addStep(buildsteps.Bundler())
|
74
|
+
f.addStep(buildsteps.AcceptanceBoxes())
|
75
|
+
f.addStep(buildsteps.AcceptanceConfig())
|
76
|
+
f.addStep(buildsteps.AcceptanceTests())
|
77
|
+
|
78
|
+
return f
|
@@ -0,0 +1,100 @@
|
|
1
|
+
"""
|
2
|
+
Contains various buildsteps that the build master uses.
|
3
|
+
"""
|
4
|
+
|
5
|
+
import os
|
6
|
+
|
7
|
+
from buildbot.steps.shell import ShellCommand
|
8
|
+
from buildbot.process.properties import WithProperties
|
9
|
+
|
10
|
+
class Bundler(ShellCommand):
|
11
|
+
"""
|
12
|
+
Runs bundler to get the dependencies for a Ruby project.
|
13
|
+
"""
|
14
|
+
|
15
|
+
name = "bundler"
|
16
|
+
description = "bundle install"
|
17
|
+
descriptionDone = "bundler install complete"
|
18
|
+
command = ["bundle", "install"]
|
19
|
+
flunkOnFailure = True
|
20
|
+
haltOnFailure = True
|
21
|
+
|
22
|
+
class UnitTests(ShellCommand):
|
23
|
+
"""
|
24
|
+
Runs the unit tests via a rake command.
|
25
|
+
"""
|
26
|
+
|
27
|
+
name = "unit tests"
|
28
|
+
description = "unit tests"
|
29
|
+
descriptionDone = "passed unit tests"
|
30
|
+
command = ["rake", "test:unit"]
|
31
|
+
flunkOnFailure = True
|
32
|
+
haltOnFailure = True
|
33
|
+
|
34
|
+
class AcceptanceBoxes(ShellCommand):
|
35
|
+
"""
|
36
|
+
This step will download all the boxes required for the tests.
|
37
|
+
"""
|
38
|
+
|
39
|
+
name = "acceptance test boxes"
|
40
|
+
description = "downloading required boxes"
|
41
|
+
descriptionDone = description
|
42
|
+
flunkOnFailure = True
|
43
|
+
haltOnFailure = True
|
44
|
+
|
45
|
+
# Make some of our variables renderable with build properties
|
46
|
+
renderables = ShellCommand.renderables + ["box_dir"]
|
47
|
+
|
48
|
+
def __init__(self, **kwargs):
|
49
|
+
self.box_dir = WithProperties("%(workdir)s/boxes")
|
50
|
+
ShellCommand.__init__(self, **kwargs)
|
51
|
+
|
52
|
+
def start(self):
|
53
|
+
# Set the property of the box directory so that later steps
|
54
|
+
# can use it.
|
55
|
+
self.setProperty("box_dir", self.box_dir, self.name)
|
56
|
+
|
57
|
+
# Set the command to be correct
|
58
|
+
self.setCommand(["rake", "acceptance:boxes[%s]" % self.box_dir])
|
59
|
+
|
60
|
+
# Run the actual start method
|
61
|
+
ShellCommand.start(self)
|
62
|
+
|
63
|
+
class AcceptanceConfig(ShellCommand):
|
64
|
+
"""
|
65
|
+
This step generates the configuration for the acceptance test.
|
66
|
+
"""
|
67
|
+
|
68
|
+
name = "acceptance test config"
|
69
|
+
description = "generating config"
|
70
|
+
descriptionDone = "config generated"
|
71
|
+
command = ["rake", WithProperties("acceptance:config[%(box_dir)s]")]
|
72
|
+
flunkOnFailure = True
|
73
|
+
haltOnFailure = True
|
74
|
+
|
75
|
+
def commandComplete(self, cmd):
|
76
|
+
# Set a property with the location of the config file
|
77
|
+
config_path = os.path.join(self.getProperty("workdir"),
|
78
|
+
self.getWorkdir(), "acceptance_config.yml")
|
79
|
+
self.setProperty("acceptance_config_path", config_path, self.name)
|
80
|
+
|
81
|
+
ShellCommand.commandComplete(self, cmd)
|
82
|
+
|
83
|
+
class AcceptanceTests(ShellCommand):
|
84
|
+
"""
|
85
|
+
This step runs the actual acceptance tests.
|
86
|
+
"""
|
87
|
+
|
88
|
+
name = "acceptance tests"
|
89
|
+
description = "running"
|
90
|
+
descriptionDone = "done"
|
91
|
+
command = ["rake", "test:acceptance"]
|
92
|
+
flunkOnFailure = True
|
93
|
+
haltOnFailure = True
|
94
|
+
|
95
|
+
def __init__(self, **kwargs):
|
96
|
+
# Make sure that the proper environment variables for the test
|
97
|
+
# get passed through to the slave
|
98
|
+
kwargs["env"] = { "ACCEPTANCE_CONFIG": WithProperties("%(acceptance_config_path)s") }
|
99
|
+
kwargs["timeout"] = 3600
|
100
|
+
ShellCommand.__init__(self, **kwargs)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"""
|
2
|
+
This module contains the logic which returns the set of
|
3
|
+
schedulers to use for the build master.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from buildbot.changes.filter import ChangeFilter
|
7
|
+
from buildbot.schedulers.basic import (
|
8
|
+
Dependent,
|
9
|
+
SingleBranchScheduler)
|
10
|
+
|
11
|
+
def get_schedulers(builders):
|
12
|
+
platforms = ["linux", "osx", "win"]
|
13
|
+
schedulers = []
|
14
|
+
|
15
|
+
for platform in platforms:
|
16
|
+
platform_builders = [b for b in builders if platform in b.name]
|
17
|
+
|
18
|
+
# Unit tests for this platform
|
19
|
+
unit_builders = [b.name for b in platform_builders if "unit" in b.name]
|
20
|
+
master_unit = SingleBranchScheduler(name="%s-master-unit" % platform,
|
21
|
+
change_filter=ChangeFilter(branch="master"),
|
22
|
+
treeStableTimer=60,
|
23
|
+
builderNames=unit_builders)
|
24
|
+
|
25
|
+
acceptance_builders = [b.name for b in platform_builders if "acceptance" in b.name]
|
26
|
+
master_acceptance = Dependent(name="%s-master-acceptance" % platform,
|
27
|
+
upstream=master_unit,
|
28
|
+
builderNames=acceptance_builders)
|
29
|
+
|
30
|
+
schedulers.extend([master_unit, master_acceptance])
|
31
|
+
|
32
|
+
return schedulers
|
@@ -0,0 +1,60 @@
|
|
1
|
+
"""
|
2
|
+
This module contains the classes and methods which help load the
|
3
|
+
list of available build slaves based on the configuration.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from buildbot.buildslave import BuildSlave
|
7
|
+
|
8
|
+
class BuildSlavesFromSlaveConfigs(list):
|
9
|
+
"""
|
10
|
+
This object turns the ``SlaveConfig`` objects into actual
|
11
|
+
``BuildSlave`` objects. This list can be directly used as the
|
12
|
+
setting.
|
13
|
+
"""
|
14
|
+
|
15
|
+
def __init__(self, configs):
|
16
|
+
for config in configs:
|
17
|
+
self.append(BuildSlave(config.name, config.password))
|
18
|
+
|
19
|
+
class SlaveListFromConfig(list):
|
20
|
+
"""
|
21
|
+
This object knows how to parse the slave configuration settings
|
22
|
+
and load them into ``SlaveConfig`` value objects. The results
|
23
|
+
can be read directly from this list.
|
24
|
+
"""
|
25
|
+
|
26
|
+
def __init__(self, config):
|
27
|
+
for config in self._slave_configs(config):
|
28
|
+
self.append(config)
|
29
|
+
|
30
|
+
def _slave_configs(self, config):
|
31
|
+
"""
|
32
|
+
Returns an array of all the slaves that were configured
|
33
|
+
with the given configuration string.
|
34
|
+
"""
|
35
|
+
results = []
|
36
|
+
for single in config.split(","):
|
37
|
+
results.append(SlaveConfig(*single.split(":")))
|
38
|
+
|
39
|
+
return results
|
40
|
+
|
41
|
+
class SlaveConfig(object):
|
42
|
+
"""
|
43
|
+
This is a value class, meant to be immutable, representing
|
44
|
+
the configuration of a single slave.
|
45
|
+
"""
|
46
|
+
|
47
|
+
def __init__(self, name, password):
|
48
|
+
self.name = name
|
49
|
+
self.password = password
|
50
|
+
|
51
|
+
def __eq__(self, other):
|
52
|
+
"""
|
53
|
+
Provides equality tests for slave configurations, specifically
|
54
|
+
for tests.
|
55
|
+
"""
|
56
|
+
return self.__dict__ == other.__dict__
|
57
|
+
|
58
|
+
# Shortcut methods to make things a bit nicer
|
59
|
+
def get_slaves_from_config(config):
|
60
|
+
return BuildSlavesFromSlaveConfigs(SlaveListFromConfig(config))
|