tnargav 1.2.2
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 +31 -0
- data/.gitsetup.yml +5 -0
- data/.travis.yml +7 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +1067 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/README.md +89 -0
- data/Rakefile +18 -0
- data/bin/vagrant +106 -0
- data/config/default.rb +36 -0
- data/contrib/README.md +12 -0
- data/contrib/bash/completion.sh +3 -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/action/builder.rb +174 -0
- data/lib/vagrant/action/builtin/box_add.rb +81 -0
- data/lib/vagrant/action/builtin/call.rb +67 -0
- data/lib/vagrant/action/builtin/config_validate.rb +30 -0
- data/lib/vagrant/action/builtin/confirm.rb +38 -0
- data/lib/vagrant/action/builtin/destroy_confirm.rb +21 -0
- data/lib/vagrant/action/builtin/env_set.rb +24 -0
- data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
- data/lib/vagrant/action/builtin/handle_box_url.rb +77 -0
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +134 -0
- data/lib/vagrant/action/builtin/lock.rb +57 -0
- data/lib/vagrant/action/builtin/nfs.rb +118 -0
- data/lib/vagrant/action/builtin/provision.rb +70 -0
- data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
- data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
- data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
- data/lib/vagrant/action/general/package.rb +103 -0
- data/lib/vagrant/action/hook.rb +107 -0
- data/lib/vagrant/action/runner.rb +69 -0
- data/lib/vagrant/action/warden.rb +103 -0
- data/lib/vagrant/action.rb +43 -0
- data/lib/vagrant/batch_action.rb +113 -0
- data/lib/vagrant/box.rb +97 -0
- data/lib/vagrant/box_collection.rb +375 -0
- data/lib/vagrant/cli.rb +82 -0
- data/lib/vagrant/config/loader.rb +222 -0
- data/lib/vagrant/config/v1/dummy_config.rb +13 -0
- data/lib/vagrant/config/v1/loader.rb +105 -0
- data/lib/vagrant/config/v1/root.rb +60 -0
- data/lib/vagrant/config/v1.rb +9 -0
- data/lib/vagrant/config/v2/dummy_config.rb +13 -0
- data/lib/vagrant/config/v2/loader.rb +141 -0
- data/lib/vagrant/config/v2/root.rb +105 -0
- data/lib/vagrant/config/v2/util.rb +21 -0
- data/lib/vagrant/config/v2.rb +9 -0
- data/lib/vagrant/config/version_base.rb +80 -0
- data/lib/vagrant/config.rb +61 -0
- data/lib/vagrant/environment.rb +843 -0
- data/lib/vagrant/errors.rb +570 -0
- data/lib/vagrant/guest.rb +163 -0
- data/lib/vagrant/hosts.rb +28 -0
- data/lib/vagrant/machine.rb +325 -0
- data/lib/vagrant/machine_state.rb +45 -0
- data/lib/vagrant/plugin/v1/command.rb +169 -0
- data/lib/vagrant/plugin/v1/communicator.rb +98 -0
- data/lib/vagrant/plugin/v1/config.rb +112 -0
- data/lib/vagrant/plugin/v1/errors.rb +15 -0
- data/lib/vagrant/plugin/v1/guest.rb +92 -0
- data/lib/vagrant/plugin/v1/host.rb +66 -0
- data/lib/vagrant/plugin/v1/manager.rb +131 -0
- data/lib/vagrant/plugin/v1/plugin.rb +229 -0
- data/lib/vagrant/plugin/v1/provider.rb +68 -0
- data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
- data/lib/vagrant/plugin/v1.rb +19 -0
- data/lib/vagrant/plugin/v2/command.rb +234 -0
- data/lib/vagrant/plugin/v2/communicator.rb +98 -0
- data/lib/vagrant/plugin/v2/components.rb +47 -0
- data/lib/vagrant/plugin/v2/config.rb +136 -0
- data/lib/vagrant/plugin/v2/errors.rb +15 -0
- data/lib/vagrant/plugin/v2/guest.rb +78 -0
- data/lib/vagrant/plugin/v2/host.rb +66 -0
- data/lib/vagrant/plugin/v2/manager.rb +173 -0
- data/lib/vagrant/plugin/v2/plugin.rb +226 -0
- data/lib/vagrant/plugin/v2/provider.rb +69 -0
- data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
- data/lib/vagrant/plugin/v2.rb +22 -0
- data/lib/vagrant/plugin.rb +6 -0
- data/lib/vagrant/registry.rb +78 -0
- data/lib/vagrant/ui.rb +215 -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/downloader.rb +146 -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 +58 -0
- data/lib/vagrant/util/retryable.rb +31 -0
- data/lib/vagrant/util/safe_chdir.rb +33 -0
- data/lib/vagrant/util/safe_exec.rb +36 -0
- data/lib/vagrant/util/safe_puts.rb +31 -0
- data/lib/vagrant/util/scoped_hash_override.rb +45 -0
- data/lib/vagrant/util/ssh.rb +150 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/string_block_editor.rb +77 -0
- data/lib/vagrant/util/subprocess.rb +273 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/util/which.rb +43 -0
- data/lib/vagrant/util.rb +12 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant.rb +258 -0
- data/plugins/README.md +5 -0
- data/plugins/commands/box/command/add.rb +51 -0
- data/plugins/commands/box/command/list.rb +41 -0
- data/plugins/commands/box/command/remove.rb +37 -0
- data/plugins/commands/box/command/repackage.rb +43 -0
- data/plugins/commands/box/command/root.rb +75 -0
- data/plugins/commands/box/plugin.rb +15 -0
- data/plugins/commands/destroy/command.rb +31 -0
- data/plugins/commands/destroy/plugin.rb +18 -0
- data/plugins/commands/halt/command.rb +33 -0
- data/plugins/commands/halt/plugin.rb +18 -0
- data/plugins/commands/init/command.rb +40 -0
- data/plugins/commands/init/plugin.rb +18 -0
- data/plugins/commands/package/command.rb +83 -0
- data/plugins/commands/package/plugin.rb +18 -0
- data/plugins/commands/plugin/action/bundler_check.rb +25 -0
- data/plugins/commands/plugin/action/install_gem.rb +81 -0
- data/plugins/commands/plugin/action/license_plugin.rb +54 -0
- data/plugins/commands/plugin/action/list_plugins.rb +54 -0
- data/plugins/commands/plugin/action/prune_gems.rb +149 -0
- data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
- data/plugins/commands/plugin/action.rb +52 -0
- data/plugins/commands/plugin/command/base.rb +22 -0
- data/plugins/commands/plugin/command/install.rb +58 -0
- data/plugins/commands/plugin/command/license.rb +31 -0
- data/plugins/commands/plugin/command/list.rb +28 -0
- data/plugins/commands/plugin/command/root.rb +75 -0
- data/plugins/commands/plugin/command/uninstall.rb +28 -0
- data/plugins/commands/plugin/gem_helper.rb +74 -0
- data/plugins/commands/plugin/plugin.rb +22 -0
- data/plugins/commands/plugin/state_file.rb +57 -0
- data/plugins/commands/provision/command.rb +34 -0
- data/plugins/commands/provision/plugin.rb +18 -0
- data/plugins/commands/reload/command.rb +37 -0
- data/plugins/commands/reload/plugin.rb +18 -0
- data/plugins/commands/resume/command.rb +25 -0
- data/plugins/commands/resume/plugin.rb +17 -0
- data/plugins/commands/ssh/command.rb +63 -0
- data/plugins/commands/ssh/plugin.rb +17 -0
- data/plugins/commands/ssh_config/command.rb +49 -0
- data/plugins/commands/ssh_config/plugin.rb +18 -0
- data/plugins/commands/status/command.rb +39 -0
- data/plugins/commands/status/plugin.rb +18 -0
- data/plugins/commands/suspend/command.rb +25 -0
- data/plugins/commands/suspend/plugin.rb +18 -0
- data/plugins/commands/up/command.rb +57 -0
- data/plugins/commands/up/plugin.rb +17 -0
- data/plugins/commands/up/start_mixins.rb +26 -0
- data/plugins/communicators/ssh/communicator.rb +342 -0
- data/plugins/communicators/ssh/plugin.rb +19 -0
- data/plugins/guests/arch/cap/change_host_name.rb +18 -0
- data/plugins/guests/arch/cap/configure_networks.rb +23 -0
- data/plugins/guests/arch/guest.rb +11 -0
- data/plugins/guests/arch/plugin.rb +25 -0
- data/plugins/guests/debian/cap/change_host_name.rb +18 -0
- data/plugins/guests/debian/cap/configure_networks.rb +61 -0
- data/plugins/guests/debian/guest.rb +9 -0
- data/plugins/guests/debian/plugin.rb +25 -0
- data/plugins/guests/fedora/cap/configure_networks.rb +59 -0
- data/plugins/guests/fedora/cap/network_scripts_dir.rb +15 -0
- data/plugins/guests/fedora/guest.rb +11 -0
- data/plugins/guests/fedora/plugin.rb +25 -0
- data/plugins/guests/freebsd/cap/change_host_name.rb +14 -0
- data/plugins/guests/freebsd/cap/configure_networks.rb +39 -0
- data/plugins/guests/freebsd/cap/halt.rb +16 -0
- data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +14 -0
- data/plugins/guests/freebsd/guest.rb +14 -0
- data/plugins/guests/freebsd/plugin.rb +35 -0
- data/plugins/guests/gentoo/cap/change_host_name.rb +17 -0
- data/plugins/guests/gentoo/cap/configure_networks.rb +43 -0
- data/plugins/guests/gentoo/guest.rb +9 -0
- data/plugins/guests/gentoo/plugin.rb +25 -0
- data/plugins/guests/linux/cap/halt.rb +16 -0
- data/plugins/guests/linux/cap/mount_nfs.rb +30 -0
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +40 -0
- data/plugins/guests/linux/cap/read_ip_address.rb +17 -0
- data/plugins/guests/linux/cap/shell_expand_guest_path.rb +26 -0
- data/plugins/guests/linux/guest.rb +11 -0
- data/plugins/guests/linux/plugin.rb +40 -0
- data/plugins/guests/openbsd/cap/halt.rb +16 -0
- data/plugins/guests/openbsd/guest.rb +11 -0
- data/plugins/guests/openbsd/plugin.rb +20 -0
- data/plugins/guests/pld/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/pld/guest.rb +11 -0
- data/plugins/guests/pld/plugin.rb +20 -0
- data/plugins/guests/redhat/cap/change_host_name.rb +18 -0
- data/plugins/guests/redhat/cap/configure_networks.rb +60 -0
- data/plugins/guests/redhat/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/redhat/guest.rb +11 -0
- data/plugins/guests/redhat/plugin.rb +30 -0
- data/plugins/guests/solaris/cap/change_host_name.rb +17 -0
- data/plugins/guests/solaris/cap/configure_networks.rb +25 -0
- data/plugins/guests/solaris/cap/halt.rb +21 -0
- data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +28 -0
- data/plugins/guests/solaris/config.rb +18 -0
- data/plugins/guests/solaris/guest.rb +14 -0
- data/plugins/guests/solaris/plugin.rb +40 -0
- data/plugins/guests/suse/cap/change_host_name.rb +18 -0
- data/plugins/guests/suse/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/suse/guest.rb +11 -0
- data/plugins/guests/suse/plugin.rb +25 -0
- data/plugins/guests/ubuntu/cap/change_host_name.rb +23 -0
- data/plugins/guests/ubuntu/guest.rb +32 -0
- data/plugins/guests/ubuntu/plugin.rb +20 -0
- data/plugins/hosts/arch/host.rb +68 -0
- data/plugins/hosts/arch/plugin.rb +15 -0
- data/plugins/hosts/bsd/host.rb +102 -0
- data/plugins/hosts/bsd/plugin.rb +15 -0
- data/plugins/hosts/fedora/host.rb +51 -0
- data/plugins/hosts/fedora/plugin.rb +15 -0
- data/plugins/hosts/freebsd/host.rb +43 -0
- data/plugins/hosts/freebsd/plugin.rb +15 -0
- data/plugins/hosts/gentoo/host.rb +24 -0
- data/plugins/hosts/gentoo/plugin.rb +15 -0
- data/plugins/hosts/linux/host.rb +95 -0
- data/plugins/hosts/linux/plugin.rb +15 -0
- data/plugins/hosts/opensuse/host.rb +34 -0
- data/plugins/hosts/opensuse/plugin.rb +15 -0
- data/plugins/hosts/windows/host.rb +17 -0
- data/plugins/hosts/windows/plugin.rb +15 -0
- data/plugins/kernel_v1/config/nfs.rb +20 -0
- data/plugins/kernel_v1/config/package.rb +17 -0
- data/plugins/kernel_v1/config/ssh.rb +46 -0
- data/plugins/kernel_v1/config/vagrant.rb +31 -0
- data/plugins/kernel_v1/config/vm.rb +184 -0
- data/plugins/kernel_v1/plugin.rb +44 -0
- data/plugins/kernel_v2/config/nfs.rb +14 -0
- data/plugins/kernel_v2/config/package.rb +13 -0
- data/plugins/kernel_v2/config/ssh.rb +76 -0
- data/plugins/kernel_v2/config/ssh_connect.rb +40 -0
- data/plugins/kernel_v2/config/vagrant.rb +13 -0
- data/plugins/kernel_v2/config/vm.rb +416 -0
- data/plugins/kernel_v2/config/vm_provisioner.rb +55 -0
- data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
- data/plugins/kernel_v2/plugin.rb +44 -0
- data/plugins/providers/virtualbox/action/boot.rb +49 -0
- data/plugins/providers/virtualbox/action/check_accessible.rb +23 -0
- data/plugins/providers/virtualbox/action/check_created.rb +21 -0
- data/plugins/providers/virtualbox/action/check_guest_additions.rb +45 -0
- data/plugins/providers/virtualbox/action/check_running.rb +21 -0
- data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
- data/plugins/providers/virtualbox/action/clean_machine_folder.rb +43 -0
- data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +18 -0
- data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +31 -0
- data/plugins/providers/virtualbox/action/clear_shared_folders.rb +17 -0
- data/plugins/providers/virtualbox/action/created.rb +20 -0
- data/plugins/providers/virtualbox/action/customize.rb +36 -0
- data/plugins/providers/virtualbox/action/destroy.rb +19 -0
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
- data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
- data/plugins/providers/virtualbox/action/export.rb +57 -0
- data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
- data/plugins/providers/virtualbox/action/forward_ports.rb +87 -0
- data/plugins/providers/virtualbox/action/import.rb +51 -0
- data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
- data/plugins/providers/virtualbox/action/is_running.rb +20 -0
- data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
- data/plugins/providers/virtualbox/action/match_mac_address.rb +21 -0
- data/plugins/providers/virtualbox/action/message_already_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
- data/plugins/providers/virtualbox/action/network.rb +410 -0
- data/plugins/providers/virtualbox/action/package.rb +20 -0
- data/plugins/providers/virtualbox/action/package_vagrantfile.rb +33 -0
- data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +64 -0
- data/plugins/providers/virtualbox/action/prune_nfs_exports.rb +20 -0
- data/plugins/providers/virtualbox/action/resume.rb +25 -0
- data/plugins/providers/virtualbox/action/sane_defaults.rb +91 -0
- data/plugins/providers/virtualbox/action/set_name.rb +40 -0
- data/plugins/providers/virtualbox/action/setup_package_files.rb +51 -0
- data/plugins/providers/virtualbox/action/share_folders.rb +128 -0
- data/plugins/providers/virtualbox/action/suspend.rb +20 -0
- data/plugins/providers/virtualbox/action.rb +311 -0
- data/plugins/providers/virtualbox/config.rb +86 -0
- data/plugins/providers/virtualbox/driver/base.rb +360 -0
- data/plugins/providers/virtualbox/driver/meta.rb +142 -0
- data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_2.rb +482 -0
- data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
- data/plugins/providers/virtualbox/plugin.rb +42 -0
- data/plugins/providers/virtualbox/provider.rb +92 -0
- data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
- data/plugins/provisioners/ansible/config.rb +72 -0
- data/plugins/provisioners/ansible/plugin.rb +23 -0
- data/plugins/provisioners/ansible/provisioner.rb +45 -0
- data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +19 -0
- data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +14 -0
- data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +34 -0
- data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +24 -0
- data/plugins/provisioners/cfengine/config.rb +120 -0
- data/plugins/provisioners/cfengine/plugin.rb +42 -0
- data/plugins/provisioners/cfengine/provisioner.rb +136 -0
- data/plugins/provisioners/chef/config/base.rb +85 -0
- data/plugins/provisioners/chef/config/chef_client.rb +57 -0
- data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
- data/plugins/provisioners/chef/plugin.rb +33 -0
- data/plugins/provisioners/chef/provisioner/base.rb +93 -0
- data/plugins/provisioners/chef/provisioner/chef_client.rb +107 -0
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +192 -0
- data/plugins/provisioners/puppet/config/puppet.rb +70 -0
- data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
- data/plugins/provisioners/puppet/plugin.rb +33 -0
- data/plugins/provisioners/puppet/provisioner/puppet.rb +117 -0
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
- data/plugins/provisioners/shell/config.rb +56 -0
- data/plugins/provisioners/shell/plugin.rb +23 -0
- data/plugins/provisioners/shell/provisioner.rb +86 -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 +111 -0
- data/templates/commands/ssh_config/config.erb +16 -0
- data/templates/config/messages.erb +14 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/guests/arch/network_dhcp.erb +4 -0
- data/templates/guests/arch/network_static.erb +6 -0
- data/templates/guests/debian/network_dhcp.erb +11 -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 +8 -0
- data/templates/locales/en.yml +1126 -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/templates/rgloader.rb +9 -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 +118 -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/config/acceptance_boxes.yml +7 -0
- data/test/support/isolated_environment.rb +46 -0
- data/test/support/tempdir.rb +43 -0
- data/test/unit/base.rb +27 -0
- data/test/unit/support/dummy_provider.rb +16 -0
- data/test/unit/support/isolated_environment.rb +179 -0
- data/test/unit/support/shared/base_context.rb +104 -0
- data/test/unit/vagrant/action/builder_test.rb +242 -0
- data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
- data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
- data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
- data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
- data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
- data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
- data/test/unit/vagrant/action/hook_test.rb +120 -0
- data/test/unit/vagrant/action/runner_test.rb +71 -0
- data/test/unit/vagrant/action/warden_test.rb +92 -0
- data/test/unit/vagrant/batch_action_test.rb +36 -0
- data/test/unit/vagrant/box_collection_test.rb +237 -0
- data/test/unit/vagrant/box_test.rb +122 -0
- data/test/unit/vagrant/cli_test.rb +27 -0
- data/test/unit/vagrant/config/loader_test.rb +184 -0
- data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
- data/test/unit/vagrant/config/v1/root_test.rb +40 -0
- data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
- data/test/unit/vagrant/config/v2/root_test.rb +97 -0
- data/test/unit/vagrant/config/v2/util_test.rb +21 -0
- data/test/unit/vagrant/config_test.rb +66 -0
- data/test/unit/vagrant/environment_test.rb +721 -0
- data/test/unit/vagrant/guest_test.rb +166 -0
- data/test/unit/vagrant/hosts_test.rb +37 -0
- data/test/unit/vagrant/machine_state_test.rb +26 -0
- data/test/unit/vagrant/machine_test.rb +384 -0
- data/test/unit/vagrant/plugin/v1/command_test.rb +143 -0
- data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
- data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
- data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
- data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
- data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
- data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
- data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
- data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v2/manager_test.rb +174 -0
- data/test/unit/vagrant/plugin/v2/plugin_test.rb +305 -0
- data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
- data/test/unit/vagrant/registry_test.rb +128 -0
- data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
- data/test/unit/vagrant/util/downloader_test.rb +57 -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/util/safe_chdir_test.rb +43 -0
- data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
- data/test/unit/vagrant/util/ssh_test.rb +30 -0
- data/test/unit/vagrant/util/string_block_editor_test.rb +106 -0
- data/test/unit/vagrant/util/which_test.rb +43 -0
- data/test/unit/vagrant_test.rb +56 -0
- data/tnargav.gemspec +69 -0
- data/vagrant.gemspec +69 -0
- metadata +730 -0
data/Gemfile
ADDED
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2010-2013 Mitchell Hashimoto
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Vagrant
|
|
2
|
+
|
|
3
|
+
* Website: [http://www.vagrantup.com](http://www.vagrantup.com)
|
|
4
|
+
* Source: [https://github.com/mitchellh/vagrant](https://github.com/mitchellh/vagrant)
|
|
5
|
+
* IRC: `#vagrant` on Freenode
|
|
6
|
+
* Mailing list: [Google Groups](http://groups.google.com/group/vagrant-up)
|
|
7
|
+
|
|
8
|
+
Vagrant is a tool for building and distributing development environments.
|
|
9
|
+
|
|
10
|
+
Vagrant provides the framework and configuration format to create and
|
|
11
|
+
manage complete portable development environments. These development
|
|
12
|
+
environments can live on your computer or in the cloud, and are portable
|
|
13
|
+
between Windows, Mac OS X, and Linux.
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
First, make sure your development machine has [VirtualBox](http://www.virtualbox.org)
|
|
18
|
+
installed. After this, [download and install the appropriate Vagrant package for your OS](http://downloads.vagrantup.com). If you're not on Mac OS X or Windows, you'll need
|
|
19
|
+
to add `/opt/vagrant/bin` to your `PATH`. After this, you're ready to go!
|
|
20
|
+
|
|
21
|
+
To build your first virtual environment:
|
|
22
|
+
|
|
23
|
+
vagrant init precise32 http://files.vagrantup.com/precise32.box
|
|
24
|
+
vagrant up
|
|
25
|
+
|
|
26
|
+
Note: The above `vagrant up` command will also trigger Vagrant to download the
|
|
27
|
+
`precise32` box via the specified URL. Vagrant only does this if it detects that
|
|
28
|
+
the box doesn't already exist on your system.
|
|
29
|
+
|
|
30
|
+
## Getting Started Guide
|
|
31
|
+
|
|
32
|
+
To learn how to build a fully functional rails development environment, view the
|
|
33
|
+
[getting started guide](http://docs.vagrantup.com/v2/getting-started/index.html).
|
|
34
|
+
|
|
35
|
+
## Installing the Gem from Git
|
|
36
|
+
|
|
37
|
+
If you want the bleeding edge version of Vagrant, we try to keep master pretty stable
|
|
38
|
+
and you're welcome to give it a shot. The following is an example showing how to do this:
|
|
39
|
+
|
|
40
|
+
rake install
|
|
41
|
+
|
|
42
|
+
## Contributing to Vagrant
|
|
43
|
+
|
|
44
|
+
### Dependencies and Unit Tests
|
|
45
|
+
|
|
46
|
+
To hack on vagrant, you'll need [bundler](http://github.com/carlhuda/bundler) which can
|
|
47
|
+
be installed with a simple `gem install bundler`. Afterwords, do the following:
|
|
48
|
+
|
|
49
|
+
bundle install
|
|
50
|
+
rake
|
|
51
|
+
|
|
52
|
+
This will run the unit test suite, which should come back all green! Then you're good to go!
|
|
53
|
+
|
|
54
|
+
If you want to run Vagrant without having to install the gem, you may use `bundle exec`,
|
|
55
|
+
like so:
|
|
56
|
+
|
|
57
|
+
bundle exec bin/vagrant help
|
|
58
|
+
|
|
59
|
+
### Acceptance Tests
|
|
60
|
+
|
|
61
|
+
Vagrant also comes with an acceptance test suite which runs the system
|
|
62
|
+
end-to-end, without mocking out any dependencies. Note that this test
|
|
63
|
+
suite is **extremely slow**, with the test suite taking hours on even
|
|
64
|
+
a decent system. A CI will be setup in due time to run these tests
|
|
65
|
+
automatically. However, it is still useful to know how to run these
|
|
66
|
+
tests since it is often useful to run a single test if you're working
|
|
67
|
+
on a specific feature.
|
|
68
|
+
|
|
69
|
+
The acceptance tests have absolutely _zero_ dependence on the Vagrant
|
|
70
|
+
source. Instead, an external configuration file must be used to give
|
|
71
|
+
the acceptance tests some parameters (such as what Vagrant version is
|
|
72
|
+
running, where the Vagrant `vagrant` binary is, etc.). If you want to
|
|
73
|
+
run acceptance tests against source, or just want to see an example of
|
|
74
|
+
this file, you can generate it automatically for the source code:
|
|
75
|
+
|
|
76
|
+
rake acceptance:config
|
|
77
|
+
|
|
78
|
+
This will drop an `acceptance_config.yml` file in your working directory.
|
|
79
|
+
You can then run a specific acceptance test like so:
|
|
80
|
+
|
|
81
|
+
ACCEPTANCE_CONFIG=./acceptance_config.yml ruby test/acceptance/version_test.rb
|
|
82
|
+
|
|
83
|
+
That's it!
|
|
84
|
+
|
|
85
|
+
If you're developing an acceptance test and you're unsure why things
|
|
86
|
+
might be failing, you can also view log output for the acceptance tests,
|
|
87
|
+
which can be very verbose but are a great help in finding bugs:
|
|
88
|
+
|
|
89
|
+
ACCEPTANCE_LOGGING=debug ACCEPTANCE_CONFIG=./acceptance_config.yml ruby test/acceptance/version_test.rb
|
data/Rakefile
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'bundler/setup'
|
|
3
|
+
|
|
4
|
+
# Immediately sync all stdout so that tools like buildbot can
|
|
5
|
+
# immediately load in the output.
|
|
6
|
+
$stdout.sync = true
|
|
7
|
+
$stderr.sync = true
|
|
8
|
+
|
|
9
|
+
# Load all the rake tasks from the "tasks" folder. This folder
|
|
10
|
+
# allows us to nicely separate rake tasks into individual files
|
|
11
|
+
# based on their role, which makes development and debugging easier
|
|
12
|
+
# than one monolithic file.
|
|
13
|
+
task_dir = File.expand_path("../tasks", __FILE__)
|
|
14
|
+
Dir["#{task_dir}/**/*.rake"].each do |task_file|
|
|
15
|
+
load task_file
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
task :default => "test:unit"
|
data/bin/vagrant
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# Trap interrupts to quit cleanly. This will be overriden at some point
|
|
4
|
+
# by Vagrant. This is made to catch any interrupts while Vagrant is
|
|
5
|
+
# initializing which have historically resulted in stack traces.
|
|
6
|
+
Signal.trap("INT") { exit 1 }
|
|
7
|
+
|
|
8
|
+
require 'log4r'
|
|
9
|
+
require 'vagrant'
|
|
10
|
+
require 'vagrant/cli'
|
|
11
|
+
require 'vagrant/util/platform'
|
|
12
|
+
|
|
13
|
+
# Create a logger right away
|
|
14
|
+
logger = Log4r::Logger.new("vagrant::bin::vagrant")
|
|
15
|
+
logger.info("`vagrant` invoked: #{ARGV.inspect}")
|
|
16
|
+
|
|
17
|
+
# Stdout/stderr should not buffer output
|
|
18
|
+
$stdout.sync = true
|
|
19
|
+
$stderr.sync = true
|
|
20
|
+
|
|
21
|
+
# These will be the options that are passed to initialze the Vagrant
|
|
22
|
+
# environment.
|
|
23
|
+
opts = {}
|
|
24
|
+
|
|
25
|
+
# Disable color in a few cases:
|
|
26
|
+
#
|
|
27
|
+
# * --no-color is anywhere in our arguments
|
|
28
|
+
# * STDOUT is not a TTY
|
|
29
|
+
# * The terminal doesn't support colors (Windows)
|
|
30
|
+
#
|
|
31
|
+
if ARGV.include?("--no-color")
|
|
32
|
+
# Delete the argument from the list so that it doesn't
|
|
33
|
+
# cause any invalid arguments down the road.
|
|
34
|
+
ARGV.delete("--no-color")
|
|
35
|
+
|
|
36
|
+
opts[:ui_class] = Vagrant::UI::Basic
|
|
37
|
+
elsif !Vagrant::Util::Platform.terminal_supports_colors?
|
|
38
|
+
opts[:ui_class] = Vagrant::UI::Basic
|
|
39
|
+
elsif !$stdout.tty? && !Vagrant::Util::Platform.cygwin?
|
|
40
|
+
opts[:ui_class] = Vagrant::UI::Basic
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Default to colored output
|
|
44
|
+
opts[:ui_class] ||= Vagrant::UI::Colored
|
|
45
|
+
|
|
46
|
+
# This is kind of hacky, and I'd love to find a better way to do this, but
|
|
47
|
+
# if we're accessing the plugin interface, we want to NOT load plugins
|
|
48
|
+
# for this run, because they can actually interfere with the function
|
|
49
|
+
# of the plugin interface.
|
|
50
|
+
ARGV.each do |arg|
|
|
51
|
+
if !arg.start_with?("-")
|
|
52
|
+
ENV["VAGRANT_NO_PLUGINS"] = "1" if arg == "plugin"
|
|
53
|
+
break
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
env = nil
|
|
58
|
+
begin
|
|
59
|
+
# Create the environment, which is the cwd of wherever the
|
|
60
|
+
# `vagrant` command was invoked from
|
|
61
|
+
logger.debug("Creating Vagrant environment")
|
|
62
|
+
env = Vagrant::Environment.new(opts)
|
|
63
|
+
|
|
64
|
+
if !Vagrant.in_installer?
|
|
65
|
+
warned = false
|
|
66
|
+
|
|
67
|
+
# If we're in a bundler environment, we assume it is for plugin
|
|
68
|
+
# development and will let the user know that.
|
|
69
|
+
if defined?(Bundler)
|
|
70
|
+
require 'bundler/shared_helpers'
|
|
71
|
+
if Bundler::SharedHelpers.in_bundle?
|
|
72
|
+
warned = true
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# If we're not in the installer, warn.
|
|
77
|
+
env.ui.warn(I18n.t("vagrant.general.not_in_installer")) if !warned
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
begin
|
|
81
|
+
# Execute the CLI interface, and exit with the proper error code
|
|
82
|
+
exit_status = env.cli(ARGV)
|
|
83
|
+
ensure
|
|
84
|
+
# Unload the environment so cleanup can be done
|
|
85
|
+
env.unload
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Exit with the exit status from our CLI command
|
|
89
|
+
exit(exit_status)
|
|
90
|
+
rescue Vagrant::Errors::VagrantError => e
|
|
91
|
+
logger.error("Vagrant experienced an error! Details:")
|
|
92
|
+
logger.error(e.inspect)
|
|
93
|
+
logger.error(e.message)
|
|
94
|
+
logger.error(e.backtrace.join("\n"))
|
|
95
|
+
|
|
96
|
+
if env
|
|
97
|
+
opts = { :prefix => false }
|
|
98
|
+
env.ui.error e.message, opts if e.message
|
|
99
|
+
else
|
|
100
|
+
$stderr.puts "Vagrant failed to initialize at a very early stage:\n\n"
|
|
101
|
+
$stderr.puts e.message
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
exit e.status_code if e.respond_to?(:status_code)
|
|
105
|
+
exit 999 # An error occurred with no status code defined
|
|
106
|
+
end
|
data/config/default.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Vagrant.configure("2") do |config|
|
|
2
|
+
config.vagrant.host = :detect
|
|
3
|
+
|
|
4
|
+
config.ssh.forward_agent = false
|
|
5
|
+
config.ssh.forward_x11 = false
|
|
6
|
+
config.ssh.guest_port = 22
|
|
7
|
+
config.ssh.keep_alive = true
|
|
8
|
+
config.ssh.max_tries = 100
|
|
9
|
+
config.ssh.timeout = 30
|
|
10
|
+
config.ssh.shell = "bash -l"
|
|
11
|
+
|
|
12
|
+
config.ssh.default.username = "vagrant"
|
|
13
|
+
|
|
14
|
+
config.vm.usable_port_range = (2200..2250)
|
|
15
|
+
config.vm.box_url = nil
|
|
16
|
+
config.vm.base_mac = nil
|
|
17
|
+
config.vm.graceful_halt_retry_count = 60
|
|
18
|
+
config.vm.graceful_halt_retry_interval = 1
|
|
19
|
+
config.vm.guest = :linux
|
|
20
|
+
|
|
21
|
+
# Share SSH locally by default
|
|
22
|
+
config.vm.network :forwarded_port,
|
|
23
|
+
guest: 22,
|
|
24
|
+
host: 2222,
|
|
25
|
+
id: "ssh",
|
|
26
|
+
auto_correct: true
|
|
27
|
+
|
|
28
|
+
# Share the root folder. This can then be overridden by
|
|
29
|
+
# other Vagrantfiles, if they wish.
|
|
30
|
+
config.vm.synced_folder ".", "/vagrant"
|
|
31
|
+
|
|
32
|
+
config.nfs.map_uid = :auto
|
|
33
|
+
config.nfs.map_gid = :auto
|
|
34
|
+
|
|
35
|
+
config.package.name = 'package.box'
|
|
36
|
+
end
|
data/contrib/README.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Vagrant Contrib
|
|
2
|
+
|
|
3
|
+
Miscellaneous contributions which assist people in using Vagrant will
|
|
4
|
+
make their way into this directory. An up-to-date list of short descriptions
|
|
5
|
+
for each item will be kept below.
|
|
6
|
+
|
|
7
|
+
## List of Contrib Items
|
|
8
|
+
|
|
9
|
+
* `emacs` - Contains a file showing how to associate `Vagrantfile` with
|
|
10
|
+
Ruby syntax highlighting.
|
|
11
|
+
* `vim` - Contains a `.vim` file for enabling Ruby syntax highlighting
|
|
12
|
+
for `Vagrantfile`s.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
;;--------------------------------------------------------------------
|
|
2
|
+
;; Teach emacs to syntax highlight Vagrantfile as Ruby.
|
|
3
|
+
;;
|
|
4
|
+
;; Installation: Copy the line below into your emacs configuration,
|
|
5
|
+
;; or drop this file anywhere in your "~/.emacs.d" directory and be
|
|
6
|
+
;; sure to "load" it.
|
|
7
|
+
;;--------------------------------------------------------------------
|
|
8
|
+
(add-to-list 'auto-mode-alist '("Vagrantfile$" . ruby-mode))
|
data/keys/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Insecure Keypair
|
|
2
|
+
|
|
3
|
+
These keys are the "insecure" public/private keypair we offer to
|
|
4
|
+
[base box creators](http://docs.vagrantup.com/v1/docs/base_boxes.html) for use in their base boxes so that
|
|
5
|
+
vagrant installations can automatically SSH into the boxes.
|
|
6
|
+
|
|
7
|
+
If you're working with a team or company or with a custom box and
|
|
8
|
+
you want more secure SSH, you should create your own keypair
|
|
9
|
+
and configure the private key in the Vagrantfile with
|
|
10
|
+
`config.ssh.private_key_path`
|
|
11
|
+
|
|
12
|
+
# Putty
|
|
13
|
+
|
|
14
|
+
If you are using Vagrant on windows, the .ppk file contained here, in the keys directory,
|
|
15
|
+
has been generated from the private key and should be used to connect Putty to any VMs that
|
|
16
|
+
are leveraging the default key pair. See [guide](http://docs.vagrantup.com/v1/docs/getting-started/ssh.html)
|
|
17
|
+
in the documentation for more details on using Putty with Vagrant.
|
data/keys/vagrant
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI
|
|
3
|
+
w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP
|
|
4
|
+
kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2
|
|
5
|
+
hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO
|
|
6
|
+
Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW
|
|
7
|
+
yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd
|
|
8
|
+
ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1
|
|
9
|
+
Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf
|
|
10
|
+
TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK
|
|
11
|
+
iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A
|
|
12
|
+
sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf
|
|
13
|
+
4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP
|
|
14
|
+
cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk
|
|
15
|
+
EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN
|
|
16
|
+
CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX
|
|
17
|
+
3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG
|
|
18
|
+
YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj
|
|
19
|
+
3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+
|
|
20
|
+
dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz
|
|
21
|
+
6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC
|
|
22
|
+
P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF
|
|
23
|
+
llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ
|
|
24
|
+
kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH
|
|
25
|
+
+vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ
|
|
26
|
+
NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s=
|
|
27
|
+
-----END RSA PRIVATE KEY-----
|
data/keys/vagrant.pub
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Action
|
|
3
|
+
# Action builder which provides a nice DSL for building up
|
|
4
|
+
# a middleware sequence for Vagrant actions. This code is based
|
|
5
|
+
# heavily off of `Rack::Builder` and `ActionDispatch::MiddlewareStack`
|
|
6
|
+
# in Rack and Rails, respectively.
|
|
7
|
+
#
|
|
8
|
+
# Usage
|
|
9
|
+
#
|
|
10
|
+
# Building an action sequence is very easy:
|
|
11
|
+
#
|
|
12
|
+
# app = Vagrant::Action::Builder.new.tap do |b|
|
|
13
|
+
# b.use MiddlewareA
|
|
14
|
+
# b.use MiddlewareB
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# Vagrant::Action.run(app)
|
|
18
|
+
#
|
|
19
|
+
class Builder
|
|
20
|
+
# This is the stack of middlewares added. This should NOT be used
|
|
21
|
+
# directly.
|
|
22
|
+
#
|
|
23
|
+
# @return [Array]
|
|
24
|
+
attr_reader :stack
|
|
25
|
+
|
|
26
|
+
# This is a shortcut for a middleware sequence with only one item
|
|
27
|
+
# in it. For a description of the arguments and the documentation, please
|
|
28
|
+
# see {#use} instead.
|
|
29
|
+
#
|
|
30
|
+
# @return [Builder]
|
|
31
|
+
def self.build(middleware, *args, &block)
|
|
32
|
+
new.use(middleware, *args, &block)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def initialize
|
|
36
|
+
@stack = []
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Implement a custom copy that copies the stack variable over so that
|
|
40
|
+
# we don't clobber that.
|
|
41
|
+
def initialize_copy(original)
|
|
42
|
+
super
|
|
43
|
+
|
|
44
|
+
@stack = original.stack.dup
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns a mergeable version of the builder. If `use` is called with
|
|
48
|
+
# the return value of this method, then the stack will merge, instead
|
|
49
|
+
# of being treated as a separate single middleware.
|
|
50
|
+
def flatten
|
|
51
|
+
lambda do |env|
|
|
52
|
+
self.call(env)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Adds a middleware class to the middleware stack. Any additional
|
|
57
|
+
# args and a block, if given, are saved and passed to the initializer
|
|
58
|
+
# of the middleware.
|
|
59
|
+
#
|
|
60
|
+
# @param [Class] middleware The middleware class
|
|
61
|
+
def use(middleware, *args, &block)
|
|
62
|
+
if middleware.kind_of?(Builder)
|
|
63
|
+
# Merge in the other builder's stack into our own
|
|
64
|
+
self.stack.concat(middleware.stack)
|
|
65
|
+
else
|
|
66
|
+
self.stack << [middleware, args, block]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
self
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Inserts a middleware at the given index or directly before the
|
|
73
|
+
# given middleware object.
|
|
74
|
+
def insert(index, middleware, *args, &block)
|
|
75
|
+
index = self.index(index) unless index.is_a?(Integer)
|
|
76
|
+
raise "no such middleware to insert before: #{index.inspect}" unless index
|
|
77
|
+
|
|
78
|
+
if middleware.kind_of?(Builder)
|
|
79
|
+
middleware.stack.reverse.each do |stack_item|
|
|
80
|
+
stack.insert(index, stack_item)
|
|
81
|
+
end
|
|
82
|
+
else
|
|
83
|
+
stack.insert(index, [middleware, args, block])
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
alias_method :insert_before, :insert
|
|
88
|
+
|
|
89
|
+
# Inserts a middleware after the given index or middleware object.
|
|
90
|
+
def insert_after(index, middleware, *args, &block)
|
|
91
|
+
index = self.index(index) unless index.is_a?(Integer)
|
|
92
|
+
raise "no such middleware to insert after: #{index.inspect}" unless index
|
|
93
|
+
insert(index + 1, middleware, *args, &block)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Replaces the given middlware object or index with the new
|
|
97
|
+
# middleware.
|
|
98
|
+
def replace(index, middleware, *args, &block)
|
|
99
|
+
if index.is_a?(Integer)
|
|
100
|
+
delete(index)
|
|
101
|
+
insert(index, middleware, *args, &block)
|
|
102
|
+
else
|
|
103
|
+
insert_before(index, middleware, *args, &block)
|
|
104
|
+
delete(index)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Deletes the given middleware object or index
|
|
109
|
+
def delete(index)
|
|
110
|
+
index = self.index(index) unless index.is_a?(Integer)
|
|
111
|
+
stack.delete_at(index)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Runs the builder stack with the given environment.
|
|
115
|
+
def call(env)
|
|
116
|
+
to_app(env).call(env)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Returns the numeric index for the given middleware object.
|
|
120
|
+
#
|
|
121
|
+
# @param [Object] object The item to find the index for
|
|
122
|
+
# @return [Integer]
|
|
123
|
+
def index(object)
|
|
124
|
+
stack.each_with_index do |item, i|
|
|
125
|
+
return i if item[0] == object
|
|
126
|
+
return i if item[0].respond_to?(:name) && item[0].name == object
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
nil
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Converts the builder stack to a runnable action sequence.
|
|
133
|
+
#
|
|
134
|
+
# @param [Vagrant::Action::Environment] env The action environment
|
|
135
|
+
# @return [Object] A callable object
|
|
136
|
+
def to_app(env)
|
|
137
|
+
app_stack = nil
|
|
138
|
+
|
|
139
|
+
# If we have action hooks, then we apply them
|
|
140
|
+
if env[:action_hooks]
|
|
141
|
+
builder = self.dup
|
|
142
|
+
|
|
143
|
+
# These are the options to pass into hook application.
|
|
144
|
+
options = {}
|
|
145
|
+
|
|
146
|
+
# If we already ran through once and did append/prepends,
|
|
147
|
+
# then don't do it again.
|
|
148
|
+
if env[:action_hooks_already_ran]
|
|
149
|
+
options[:no_prepend_or_append] = true
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Specify that we already ran, so in the future we don't repeat
|
|
153
|
+
# the prepend/append hooks.
|
|
154
|
+
env[:action_hooks_already_ran] = true
|
|
155
|
+
|
|
156
|
+
# Apply all the hooks to the new builder instance
|
|
157
|
+
env[:action_hooks].each do |hook|
|
|
158
|
+
hook.apply(builder, options)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# The stack is now the result of the new builder
|
|
162
|
+
app_stack = builder.stack.dup
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# If we don't have a stack then default to using our own
|
|
166
|
+
app_stack ||= stack.dup
|
|
167
|
+
|
|
168
|
+
# Wrap the middleware stack with the Warden to provide a consistent
|
|
169
|
+
# and predictable behavior upon exceptions.
|
|
170
|
+
Warden.new(app_stack, env)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require "log4r"
|
|
2
|
+
|
|
3
|
+
require "vagrant/util/downloader"
|
|
4
|
+
require "vagrant/util/platform"
|
|
5
|
+
|
|
6
|
+
module Vagrant
|
|
7
|
+
module Action
|
|
8
|
+
module Builtin
|
|
9
|
+
# This middleware will download a remote box and add it to the
|
|
10
|
+
# given box collection.
|
|
11
|
+
class BoxAdd
|
|
12
|
+
def initialize(app, env)
|
|
13
|
+
@app = app
|
|
14
|
+
@logger = Log4r::Logger.new("vagrant::action::builtin::box_add")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def call(env)
|
|
18
|
+
@temp_path = env[:tmp_path].join("box" + Time.now.to_i.to_s)
|
|
19
|
+
@logger.info("Downloading box to: #{@temp_path}")
|
|
20
|
+
|
|
21
|
+
url = env[:box_url]
|
|
22
|
+
if File.file?(url) || url !~ /^[a-z0-9]+:.*$/i
|
|
23
|
+
@logger.info("URL is a file or protocol not found and assuming file.")
|
|
24
|
+
file_path = File.expand_path(url)
|
|
25
|
+
file_path = Util::Platform.cygwin_windows_path(file_path)
|
|
26
|
+
url = "file:#{file_path}"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
downloader_options = {}
|
|
30
|
+
downloader_options[:insecure] = env[:box_download_insecure]
|
|
31
|
+
downloader_options[:ui] = env[:ui]
|
|
32
|
+
|
|
33
|
+
# Download the box to a temporary path. We store the temporary
|
|
34
|
+
# path as an instance variable so that the `#recover` method can
|
|
35
|
+
# access it.
|
|
36
|
+
env[:ui].info(I18n.t("vagrant.actions.box.download.downloading"))
|
|
37
|
+
begin
|
|
38
|
+
downloader = Util::Downloader.new(url, @temp_path, downloader_options)
|
|
39
|
+
downloader.download!
|
|
40
|
+
rescue Errors::DownloaderInterrupted
|
|
41
|
+
# The downloader was interrupted, so just return, because that
|
|
42
|
+
# means we were interrupted as well.
|
|
43
|
+
env[:ui].info(I18n.t("vagrant.actions.box.download.interrupted"))
|
|
44
|
+
return
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Add the box
|
|
48
|
+
env[:ui].info I18n.t("vagrant.actions.box.add.adding", :name => env[:box_name])
|
|
49
|
+
added_box = nil
|
|
50
|
+
begin
|
|
51
|
+
added_box = env[:box_collection].add(
|
|
52
|
+
@temp_path, env[:box_name], env[:box_provider], env[:box_force])
|
|
53
|
+
rescue Vagrant::Errors::BoxUpgradeRequired
|
|
54
|
+
# Upgrade the box
|
|
55
|
+
env[:box_collection].upgrade(env[:box_name])
|
|
56
|
+
|
|
57
|
+
# Try adding it again
|
|
58
|
+
retry
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Call the 'recover' method in all cases to clean up the
|
|
62
|
+
# downloaded temporary file.
|
|
63
|
+
recover(env)
|
|
64
|
+
|
|
65
|
+
# Success, we added a box!
|
|
66
|
+
env[:ui].success(
|
|
67
|
+
I18n.t("vagrant.actions.box.add.added", name: added_box.name, provider: added_box.provider))
|
|
68
|
+
|
|
69
|
+
# Carry on!
|
|
70
|
+
@app.call(env)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def recover(env)
|
|
74
|
+
if @temp_path && File.exist?(@temp_path)
|
|
75
|
+
File.unlink(@temp_path)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|