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,47 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Hosts
|
5
|
+
class Fedora < Linux
|
6
|
+
def self.match?
|
7
|
+
release_file = Pathname.new("/etc/redhat-release")
|
8
|
+
|
9
|
+
if release_file.exist?
|
10
|
+
release_file.open("r") do |f|
|
11
|
+
return true if f.gets =~ /^Fedora/
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
false
|
16
|
+
end
|
17
|
+
|
18
|
+
# Normal, mid-range precedence.
|
19
|
+
def self.precedence
|
20
|
+
5
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(*args)
|
24
|
+
super
|
25
|
+
|
26
|
+
@nfs_server_binary = "/etc/init.d/nfs"
|
27
|
+
|
28
|
+
# On Fedora 16+, systemd replaced init.d, so we have to use the
|
29
|
+
# proper NFS binary. This checks to see if we need to do that.
|
30
|
+
release_file = Pathname.new("/etc/redhat-release")
|
31
|
+
begin
|
32
|
+
release_file.open("r") do |f|
|
33
|
+
version_number = /Fedora release ([0-9]+)/.match(f.gets)[1].to_i
|
34
|
+
if version_number >= 16
|
35
|
+
# "service nfs-server" will redirect properly to systemctl
|
36
|
+
# when "service nfs-server restart" is called.
|
37
|
+
@nfs_server_binary = "/usr/sbin/service nfs-server"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
rescue Errno::ENOENT
|
41
|
+
# File doesn't exist, not a big deal, assume we're on a
|
42
|
+
# lower version.
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'vagrant/util/platform'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Hosts
|
5
|
+
# Represents a FreeBSD host
|
6
|
+
class FreeBSD < BSD
|
7
|
+
class FreeBSDHostError < Errors::VagrantError
|
8
|
+
error_namespace("vagrant.hosts.freebsd")
|
9
|
+
end
|
10
|
+
|
11
|
+
include Util
|
12
|
+
include Util::Retryable
|
13
|
+
|
14
|
+
def self.match?
|
15
|
+
Util::Platform.freebsd?
|
16
|
+
end
|
17
|
+
|
18
|
+
# Normal, mid-range precedence.
|
19
|
+
def self.precedence
|
20
|
+
5
|
21
|
+
end
|
22
|
+
|
23
|
+
def nfs_export(id, ip, folders)
|
24
|
+
folders.each do |folder_name, folder_values|
|
25
|
+
if folder_values[:hostpath] =~ /\s+/
|
26
|
+
raise FreeBSDHostError, :_key => :nfs_whitespace
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
super
|
31
|
+
end
|
32
|
+
|
33
|
+
def initialize(*args)
|
34
|
+
super
|
35
|
+
|
36
|
+
@nfs_restart_command = "sudo /etc/rc.d/mountd onereload"
|
37
|
+
@nfs_exports_template = "nfs/exports_freebsd"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Hosts
|
3
|
+
class Gentoo < Linux
|
4
|
+
def self.match?
|
5
|
+
return File.exists?("/etc/gentoo-release")
|
6
|
+
end
|
7
|
+
|
8
|
+
# Normal, mid-range precedence.
|
9
|
+
def self.precedence
|
10
|
+
5
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(*args)
|
14
|
+
super
|
15
|
+
|
16
|
+
@nfs_server_binary = "/etc/init.d/nfs"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'log4r'
|
2
|
+
|
3
|
+
require 'vagrant/util/platform'
|
4
|
+
|
5
|
+
module Vagrant
|
6
|
+
module Hosts
|
7
|
+
# Represents a Linux based host, such as Ubuntu.
|
8
|
+
class Linux < Base
|
9
|
+
include Util
|
10
|
+
include Util::Retryable
|
11
|
+
|
12
|
+
def self.match?
|
13
|
+
Util::Platform.linux?
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.precedence
|
17
|
+
# Set a lower precedence because this is a generic OS. We
|
18
|
+
# want specific distros to match first.
|
19
|
+
2
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(*args)
|
23
|
+
super
|
24
|
+
|
25
|
+
@logger = Log4r::Logger.new("vagrant::hosts::linux")
|
26
|
+
@nfs_server_binary = "/etc/init.d/nfs-kernel-server"
|
27
|
+
end
|
28
|
+
|
29
|
+
def nfs?
|
30
|
+
retryable(:tries => 10, :on => TypeError) do
|
31
|
+
# Check procfs to see if NFSd is a supported filesystem
|
32
|
+
system("cat /proc/filesystems | grep nfsd > /dev/null 2>&1")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def nfs_export(id, ip, folders)
|
37
|
+
output = TemplateRenderer.render('nfs/exports_linux',
|
38
|
+
:uuid => id,
|
39
|
+
:ip => ip,
|
40
|
+
:folders => folders)
|
41
|
+
|
42
|
+
@ui.info I18n.t("vagrant.hosts.linux.nfs_export")
|
43
|
+
sleep 0.5
|
44
|
+
|
45
|
+
nfs_cleanup(id)
|
46
|
+
|
47
|
+
output.split("\n").each do |line|
|
48
|
+
# This should only ask for administrative permission once, even
|
49
|
+
# though its executed in multiple subshells.
|
50
|
+
system(%Q[sudo su root -c "echo '#{line}' >> /etc/exports"])
|
51
|
+
end
|
52
|
+
|
53
|
+
# We run restart here instead of "update" just in case nfsd
|
54
|
+
# is not starting
|
55
|
+
system("sudo #{@nfs_server_binary} restart")
|
56
|
+
end
|
57
|
+
|
58
|
+
def nfs_prune(valid_ids)
|
59
|
+
return if !File.exist?("/etc/exports")
|
60
|
+
|
61
|
+
@logger.info("Pruning invalid NFS entries...")
|
62
|
+
|
63
|
+
output = false
|
64
|
+
|
65
|
+
File.read("/etc/exports").lines.each do |line|
|
66
|
+
if line =~ /^# VAGRANT-BEGIN: (.+?)$/
|
67
|
+
if valid_ids.include?($1.to_s)
|
68
|
+
@logger.debug("Valid ID: #{$1.to_s}")
|
69
|
+
else
|
70
|
+
if !output
|
71
|
+
# We want to warn the user but we only want to output once
|
72
|
+
@ui.info I18n.t("vagrant.hosts.linux.nfs_prune")
|
73
|
+
output = true
|
74
|
+
end
|
75
|
+
|
76
|
+
@logger.info("Invalid ID, pruning: #{$1.to_s}")
|
77
|
+
nfs_cleanup($1.to_s)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
protected
|
84
|
+
|
85
|
+
def nfs_cleanup(id)
|
86
|
+
return if !File.exist?("/etc/exports")
|
87
|
+
|
88
|
+
# Use sed to just strip out the block of code which was inserted
|
89
|
+
# by Vagrant
|
90
|
+
system("sudo sed -e '/^# VAGRANT-BEGIN: #{id}/,/^# VAGRANT-END: #{id}/ d' -ibak /etc/exports")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Hosts
|
5
|
+
class OpenSUSE < Linux
|
6
|
+
def self.match?
|
7
|
+
release_file = Pathname.new("/etc/SuSE-release")
|
8
|
+
|
9
|
+
if release_file.exist?
|
10
|
+
release_file.open("r") do |f|
|
11
|
+
return true if f.gets =~ /^openSUSE/
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
false
|
16
|
+
end
|
17
|
+
|
18
|
+
# Normal, mid-range precedence.
|
19
|
+
def self.precedence
|
20
|
+
5
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(*args)
|
24
|
+
super
|
25
|
+
|
26
|
+
@nfs_server_binary = "/etc/init.d/nfsserver"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
|
3
|
+
require "log4r"
|
4
|
+
|
5
|
+
module Vagrant
|
6
|
+
# Represents a single plugin and also manages loading plugins from
|
7
|
+
# RubyGems. If a plugin has a `vagrant_init.rb` file somewhere on its
|
8
|
+
# load path, then this class will find it and load it. For logging purposes
|
9
|
+
# (for debugging), the list of loaded plugins is stored in the {plugins}
|
10
|
+
# array.
|
11
|
+
class Plugin
|
12
|
+
# The array of gem specifications that were loaded as plugins.
|
13
|
+
@@plugins = []
|
14
|
+
|
15
|
+
# Loads all the plugins for Vagrant. Plugins are currently
|
16
|
+
# gems which have a "vagrant_init.rb" somewhere on their
|
17
|
+
# load path. This file is loaded to kick off the load sequence
|
18
|
+
# for that plugin.
|
19
|
+
def self.load!
|
20
|
+
logger = Log4r::Logger.new("vagrant::plugin")
|
21
|
+
logger.info("Searching and loading any available plugins...")
|
22
|
+
|
23
|
+
# Our version is used for checking dependencies
|
24
|
+
our_version = Gem::Version.create(Vagrant::VERSION)
|
25
|
+
|
26
|
+
# RubyGems 1.8.0 deprecated `source_index`. Gem::Specification is the
|
27
|
+
# new replacement. For now, we support both, but special-case 1.8.x
|
28
|
+
# so that we avoid deprecation messages.
|
29
|
+
index = Gem::VERSION >= "1.8.0" ? Gem::Specification : Gem.source_index
|
30
|
+
|
31
|
+
# Stupid hack since Rails 2.3.x overrides Gem.source_index with their
|
32
|
+
# own incomplete replacement which causes issues.
|
33
|
+
index = [index.installed_source_index, index.vendor_source_index] if defined?(Rails::VendorGemSourceIndex) && index.is_a?(Rails::VendorGemSourceIndex)
|
34
|
+
|
35
|
+
# Look for a vagrant_init.rb in all the gems, but only the
|
36
|
+
# latest version of the gems.
|
37
|
+
[index].flatten.each do |source|
|
38
|
+
# In 1.6.0, added the option of including prerelease gems, which is
|
39
|
+
# useful for developers.
|
40
|
+
specs = Gem::VERSION >= "1.6.0" ? source.latest_specs(true) : source.latest_specs
|
41
|
+
|
42
|
+
specs.each do |spec|
|
43
|
+
if @@plugins.include?(spec)
|
44
|
+
logger.debug("Plugin already loaded, not loading again: #{spec.name}")
|
45
|
+
next
|
46
|
+
end
|
47
|
+
|
48
|
+
# If this gem depends on Vagrant, verify this is a valid release of
|
49
|
+
# Vagrant for this gem to load into.
|
50
|
+
vagrant_dep = spec.dependencies.find { |d| d.name == "vagrant" }
|
51
|
+
if vagrant_dep && !vagrant_dep.requirement.satisfied_by?(our_version)
|
52
|
+
logger.debug("Plugin Vagrant dependency mismatch: #{spec.name} (#{spec.version})")
|
53
|
+
next
|
54
|
+
end
|
55
|
+
|
56
|
+
# Find a vagrant_init.rb to verify if this is a plugin
|
57
|
+
file = nil
|
58
|
+
if Gem::VERSION >= "1.8.0"
|
59
|
+
file = spec.matches_for_glob("**/vagrant_init.rb").first
|
60
|
+
else
|
61
|
+
file = Gem.searcher.matching_files(spec, "vagrant_init.rb").first
|
62
|
+
end
|
63
|
+
|
64
|
+
next if !file
|
65
|
+
|
66
|
+
logger.info("Loading plugin: #{spec.name} (#{spec.version})")
|
67
|
+
@@plugins << spec
|
68
|
+
load file
|
69
|
+
end
|
70
|
+
|
71
|
+
logger.info("Loaded #{@@plugins.length} plugins.")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# Returns the array of plugins which are currently loaded by
|
76
|
+
# Vagrant.
|
77
|
+
#
|
78
|
+
# @return [Array]
|
79
|
+
def self.plugins; @@plugins; end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# These aren't autoloaded because they have to register things such
|
2
|
+
# as configuration classes right away with Vagrant.
|
3
|
+
module Vagrant
|
4
|
+
module Provisioners
|
5
|
+
autoload :Base, 'vagrant/provisioners/base'
|
6
|
+
autoload :ChefSolo, 'vagrant/provisioners/chef_solo'
|
7
|
+
autoload :ChefClient, 'vagrant/provisioners/chef_client'
|
8
|
+
autoload :Puppet, 'vagrant/provisioners/puppet'
|
9
|
+
autoload :PuppetServer, 'vagrant/provisioners/puppet_server'
|
10
|
+
autoload :Shell, 'vagrant/provisioners/shell'
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Provisioners
|
3
|
+
# The base class for a "provisioner." A provisioner is responsible for
|
4
|
+
# provisioning a Vagrant system.
|
5
|
+
#
|
6
|
+
# This has been abstracted out so it is easy to provide support for
|
7
|
+
# multiple solutions.
|
8
|
+
class Base
|
9
|
+
include Vagrant::Util
|
10
|
+
|
11
|
+
# The environment which provisioner is running in. This is the
|
12
|
+
# action environment, not a Vagrant::Environment.
|
13
|
+
attr_reader :env
|
14
|
+
|
15
|
+
# The configuration for this provisioner. This will be an instance of
|
16
|
+
# the `Config` class which is part of the provisioner.
|
17
|
+
attr_reader :config
|
18
|
+
|
19
|
+
def initialize(env, config)
|
20
|
+
@env = env
|
21
|
+
@config = config
|
22
|
+
end
|
23
|
+
|
24
|
+
# This method is expected to return a class that is used for configuration
|
25
|
+
# for the provisioner.
|
26
|
+
def self.config_class; end
|
27
|
+
|
28
|
+
# This is the method called to "prepare" the provisioner. This is called
|
29
|
+
# before any actions are run by the action runner (see {Vagrant::Actions::Runner}).
|
30
|
+
# This can be used to setup shared folders, forward ports, etc. Whatever is
|
31
|
+
# necessary on a "meta" level.
|
32
|
+
def prepare; end
|
33
|
+
|
34
|
+
# This is the method called to provision the system. This method
|
35
|
+
# is expected to do whatever necessary to provision the system (create files,
|
36
|
+
# SSH, etc.)
|
37
|
+
def provision!; end
|
38
|
+
|
39
|
+
# This is the method called to when the system is being destroyed
|
40
|
+
# and allows the provisioners to engage in any cleanup tasks necessary.
|
41
|
+
def cleanup; end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,168 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Provisioners
|
5
|
+
# This class is a base class where the common functionality shared between
|
6
|
+
# chef-solo and chef-client provisioning are stored. This is **not an actual
|
7
|
+
# provisioner**. Instead, {ChefSolo} or {ChefServer} should be used.
|
8
|
+
class Chef < Base
|
9
|
+
include Util::Counter
|
10
|
+
|
11
|
+
def initialize(env, config)
|
12
|
+
super
|
13
|
+
|
14
|
+
config.provisioning_path ||= "/tmp/vagrant-chef-#{get_and_update_counter(:provisioning_path)}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def prepare
|
18
|
+
raise ChefError, :invalid_provisioner
|
19
|
+
end
|
20
|
+
|
21
|
+
def verify_binary(binary)
|
22
|
+
# Checks for the existence of chef binary and error if it
|
23
|
+
# doesn't exist.
|
24
|
+
env[:vm].channel.sudo("which #{binary}",
|
25
|
+
:error_class => ChefError,
|
26
|
+
:error_key => :chef_not_detected,
|
27
|
+
:binary => binary)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Returns the path to the Chef binary, taking into account the
|
31
|
+
# `binary_path` configuration option.
|
32
|
+
def chef_binary_path(binary)
|
33
|
+
return binary if !config.binary_path
|
34
|
+
return File.join(config.binary_path, binary)
|
35
|
+
end
|
36
|
+
|
37
|
+
def chown_provisioning_folder
|
38
|
+
env[:vm].channel.sudo("mkdir -p #{config.provisioning_path}")
|
39
|
+
env[:vm].channel.sudo("chown #{env[:vm].config.ssh.username} #{config.provisioning_path}")
|
40
|
+
end
|
41
|
+
|
42
|
+
def setup_config(template, filename, template_vars)
|
43
|
+
config_file = TemplateRenderer.render(template, {
|
44
|
+
:log_level => config.log_level.to_sym,
|
45
|
+
:http_proxy => config.http_proxy,
|
46
|
+
:http_proxy_user => config.http_proxy_user,
|
47
|
+
:http_proxy_pass => config.http_proxy_pass,
|
48
|
+
:https_proxy => config.https_proxy,
|
49
|
+
:https_proxy_user => config.https_proxy_user,
|
50
|
+
:https_proxy_pass => config.https_proxy_pass,
|
51
|
+
:no_proxy => config.no_proxy
|
52
|
+
}.merge(template_vars))
|
53
|
+
|
54
|
+
# Create a temporary file to store the data so we
|
55
|
+
# can upload it
|
56
|
+
temp = Tempfile.new("vagrant")
|
57
|
+
temp.write(config_file)
|
58
|
+
temp.close
|
59
|
+
|
60
|
+
remote_file = File.join(config.provisioning_path, filename)
|
61
|
+
env[:vm].channel.sudo("rm #{remote_file}", :error_check => false)
|
62
|
+
env[:vm].channel.upload(temp.path, remote_file)
|
63
|
+
end
|
64
|
+
|
65
|
+
def setup_json
|
66
|
+
env[:ui].info I18n.t("vagrant.provisioners.chef.json")
|
67
|
+
|
68
|
+
# Set up our configuration that is passed to the attributes by default
|
69
|
+
data = { :config => env[:global_config].to_hash }
|
70
|
+
|
71
|
+
# Add our default share directory if it exists
|
72
|
+
default_share = env[:vm].config.vm.shared_folders["v-root"]
|
73
|
+
data[:directory] = default_share[:guestpath] if default_share
|
74
|
+
|
75
|
+
# And wrap it under the "vagrant" namespace
|
76
|
+
data = { :vagrant => data }
|
77
|
+
|
78
|
+
# Merge with the "extra data" which isn't put under the
|
79
|
+
# vagrant namespace by default
|
80
|
+
data.merge!(config.merged_json)
|
81
|
+
|
82
|
+
json = data.to_json
|
83
|
+
|
84
|
+
# Create a temporary file to store the data so we
|
85
|
+
# can upload it
|
86
|
+
temp = Tempfile.new("vagrant")
|
87
|
+
temp.write(json)
|
88
|
+
temp.close
|
89
|
+
|
90
|
+
env[:vm].channel.upload(temp.path, File.join(config.provisioning_path, "dna.json"))
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
class Chef < Base
|
95
|
+
class ChefError < Errors::VagrantError
|
96
|
+
error_namespace("vagrant.provisioners.chef")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
class Chef < Base
|
101
|
+
# This is the configuration which is available through `config.chef`
|
102
|
+
class Config < Vagrant::Config::Base
|
103
|
+
# Shared config
|
104
|
+
attr_accessor :node_name
|
105
|
+
attr_accessor :provisioning_path
|
106
|
+
attr_accessor :log_level
|
107
|
+
attr_accessor :json
|
108
|
+
attr_accessor :http_proxy
|
109
|
+
attr_accessor :http_proxy_user
|
110
|
+
attr_accessor :http_proxy_pass
|
111
|
+
attr_accessor :https_proxy
|
112
|
+
attr_accessor :https_proxy_user
|
113
|
+
attr_accessor :https_proxy_pass
|
114
|
+
attr_accessor :no_proxy
|
115
|
+
attr_accessor :binary_path
|
116
|
+
attr_accessor :binary_env
|
117
|
+
attr_accessor :attempts
|
118
|
+
attr_writer :run_list
|
119
|
+
|
120
|
+
# Provide defaults in such a way that they won't override the instance
|
121
|
+
# variable. This is so merging continues to work properly.
|
122
|
+
def attempts; @attempts || 1; end
|
123
|
+
def json; @json ||= {}; end
|
124
|
+
def log_level; @log_level || :info; end
|
125
|
+
|
126
|
+
# This returns the json that is merged with the defaults and the
|
127
|
+
# user set data.
|
128
|
+
def merged_json
|
129
|
+
original = { :instance_role => "vagrant" }
|
130
|
+
original[:run_list] = @run_list if @run_list
|
131
|
+
original.merge(json || {})
|
132
|
+
end
|
133
|
+
|
134
|
+
# Returns the run list, but also sets it up to be empty if it
|
135
|
+
# hasn't been defined already.
|
136
|
+
def run_list
|
137
|
+
@run_list ||= []
|
138
|
+
end
|
139
|
+
|
140
|
+
# Adds a recipe to the run list
|
141
|
+
def add_recipe(name)
|
142
|
+
name = "recipe[#{name}]" unless name =~ /^recipe\[(.+?)\]$/
|
143
|
+
run_list << name
|
144
|
+
end
|
145
|
+
|
146
|
+
# Adds a role to the run list
|
147
|
+
def add_role(name)
|
148
|
+
name = "role[#{name}]" unless name =~ /^role\[(.+?)\]$/
|
149
|
+
run_list << name
|
150
|
+
end
|
151
|
+
|
152
|
+
def validate(env, errors)
|
153
|
+
super
|
154
|
+
|
155
|
+
errors.add(I18n.t("vagrant.config.chef.vagrant_as_json_key")) if json.has_key?(:vagrant)
|
156
|
+
end
|
157
|
+
|
158
|
+
def instance_variables_hash
|
159
|
+
# Overridden so that the 'json' key could be removed, since its just
|
160
|
+
# merged into the config anyways
|
161
|
+
result = super
|
162
|
+
result.delete("json")
|
163
|
+
result
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|