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
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require "vagrant/util/stacked_proc_runner"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Kernel_V2
|
|
5
|
+
# Represents a single sub-VM in a multi-VM environment.
|
|
6
|
+
class VagrantConfigSubVM
|
|
7
|
+
include Vagrant::Util::StackedProcRunner
|
|
8
|
+
|
|
9
|
+
# Returns an array of the configuration procs in [version, proc]
|
|
10
|
+
# format.
|
|
11
|
+
#
|
|
12
|
+
# @return [Array]
|
|
13
|
+
attr_reader :config_procs
|
|
14
|
+
|
|
15
|
+
attr_reader :options
|
|
16
|
+
|
|
17
|
+
def initialize
|
|
18
|
+
@config_procs = []
|
|
19
|
+
@options = {}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def initialize_copy(other)
|
|
23
|
+
super
|
|
24
|
+
|
|
25
|
+
@config_procs = other.config_procs.clone
|
|
26
|
+
@options = other.options.clone
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Kernel_V2
|
|
5
|
+
# This is the "kernel" of Vagrant and contains the configuration classes
|
|
6
|
+
# that make up the core of Vagrant for V2.
|
|
7
|
+
class Plugin < Vagrant.plugin("2")
|
|
8
|
+
name "kernel"
|
|
9
|
+
description <<-DESC
|
|
10
|
+
The kernel of Vagrant. This plugin contains required items for even
|
|
11
|
+
basic functionality of Vagrant version 2.
|
|
12
|
+
DESC
|
|
13
|
+
|
|
14
|
+
# Core configuration keys provided by the kernel. Note that unlike
|
|
15
|
+
# "kernel_v1", none of these configuration classes are upgradable.
|
|
16
|
+
# This is by design, since we can't be sure if they're upgradable
|
|
17
|
+
# until another version is available.
|
|
18
|
+
config("ssh") do
|
|
19
|
+
require File.expand_path("../config/ssh", __FILE__)
|
|
20
|
+
SSHConfig
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
config("nfs") do
|
|
24
|
+
require File.expand_path("../config/nfs", __FILE__)
|
|
25
|
+
NFSConfig
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
config("package") do
|
|
29
|
+
require File.expand_path("../config/package", __FILE__)
|
|
30
|
+
PackageConfig
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
config("vagrant") do
|
|
34
|
+
require File.expand_path("../config/vagrant", __FILE__)
|
|
35
|
+
VagrantConfig
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
config("vm") do
|
|
39
|
+
require File.expand_path("../config/vm", __FILE__)
|
|
40
|
+
VMConfig
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class Boot
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
@env = env
|
|
11
|
+
|
|
12
|
+
boot_mode = @env[:machine].provider_config.gui ? "gui" : "headless"
|
|
13
|
+
|
|
14
|
+
# Start up the VM and wait for it to boot.
|
|
15
|
+
env[:ui].info I18n.t("vagrant.actions.vm.boot.booting")
|
|
16
|
+
env[:machine].provider.driver.start(boot_mode)
|
|
17
|
+
raise Vagrant::Errors::VMFailedToBoot if !wait_for_boot
|
|
18
|
+
|
|
19
|
+
@app.call(env)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def wait_for_boot
|
|
23
|
+
@env[:ui].info I18n.t("vagrant.actions.vm.boot.waiting")
|
|
24
|
+
|
|
25
|
+
@env[:machine].config.ssh.max_tries.to_i.times do |i|
|
|
26
|
+
if @env[:machine].communicate.ready?
|
|
27
|
+
@env[:ui].info I18n.t("vagrant.actions.vm.boot.ready")
|
|
28
|
+
return true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Return true so that the vm_failed_to_boot error doesn't
|
|
32
|
+
# get shown
|
|
33
|
+
return true if @env[:interrupted]
|
|
34
|
+
|
|
35
|
+
# If the VM is not starting or running, something went wrong
|
|
36
|
+
# and we need to show a useful error.
|
|
37
|
+
state = @env[:machine].provider.state.id
|
|
38
|
+
raise Vagrant::Errors::VMFailedToRun if state != :starting && state != :running
|
|
39
|
+
|
|
40
|
+
sleep 2 if !@env["vagrant.test"]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
@env[:ui].error I18n.t("vagrant.actions.vm.boot.failed")
|
|
44
|
+
false
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class CheckAccessible
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
if env[:machine].state.id == :inaccessible
|
|
11
|
+
# The VM we are attempting to manipulate is inaccessible. This
|
|
12
|
+
# is a very bad situation and can only be fixed by the user. It
|
|
13
|
+
# also prohibits us from actually doing anything with the virtual
|
|
14
|
+
# machine, so we raise an error.
|
|
15
|
+
raise Vagrant::Errors::VMInaccessible
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
@app.call(env)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
# This middleware checks that the VM is created, and raises an exception
|
|
5
|
+
# if it is not, notifying the user that creation is required.
|
|
6
|
+
class CheckCreated
|
|
7
|
+
def initialize(app, env)
|
|
8
|
+
@app = app
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def call(env)
|
|
12
|
+
if env[:machine].state.id == :not_created
|
|
13
|
+
raise Vagrant::Errors::VMNotCreatedError
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
@app.call(env)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class CheckGuestAdditions
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
# Use the raw interface for now, while the virtualbox gem
|
|
11
|
+
# doesn't support guest properties (due to cross platform issues)
|
|
12
|
+
version = env[:machine].provider.driver.read_guest_additions_version
|
|
13
|
+
if !version
|
|
14
|
+
env[:ui].warn I18n.t("vagrant.actions.vm.check_guest_additions.not_detected")
|
|
15
|
+
else
|
|
16
|
+
# Read the versions
|
|
17
|
+
versions = [version, env[:machine].provider.driver.version]
|
|
18
|
+
|
|
19
|
+
# Strip of any -OSE or _OSE and read only the first two parts
|
|
20
|
+
# of the version such as "4.2" in "4.2.0"
|
|
21
|
+
versions.map! do |v|
|
|
22
|
+
v = v.gsub(/[-_]ose/i, '')
|
|
23
|
+
match = /^(\d+\.\d+)\.(\d+)/.match(v)
|
|
24
|
+
v = match[1] if match
|
|
25
|
+
v
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
guest_version = versions[0]
|
|
29
|
+
vb_version = versions[1]
|
|
30
|
+
|
|
31
|
+
if guest_version != vb_version
|
|
32
|
+
env[:ui].warn(I18n.t("vagrant.actions.vm.check_guest_additions.version_mismatch",
|
|
33
|
+
:guest_version => version,
|
|
34
|
+
:virtualbox_version => vb_version))
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Continue
|
|
39
|
+
@app.call(env)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
# This middleware checks that the VM is running, and raises an exception
|
|
5
|
+
# if it is not, notifying the user that the VM must be running.
|
|
6
|
+
class CheckRunning
|
|
7
|
+
def initialize(app, env)
|
|
8
|
+
@app = app
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def call(env)
|
|
12
|
+
if env[:machine].state.id != :running
|
|
13
|
+
raise Vagrant::Errors::VMNotRunningError
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
@app.call(env)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
# Checks that VirtualBox is installed and ready to be used.
|
|
5
|
+
class CheckVirtualbox
|
|
6
|
+
def initialize(app, env)
|
|
7
|
+
@app = app
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call(env)
|
|
11
|
+
# This verifies that VirtualBox is installed and the driver is
|
|
12
|
+
# ready to function. If not, then an exception will be raised
|
|
13
|
+
# which will break us out of execution of the middleware sequence.
|
|
14
|
+
Driver::Meta.new.verify!
|
|
15
|
+
|
|
16
|
+
# Carry on.
|
|
17
|
+
@app.call(env)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require "fileutils"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module ProviderVirtualBox
|
|
5
|
+
module Action
|
|
6
|
+
# Cleans up the VirtualBox machine folder for any ".xml-prev"
|
|
7
|
+
# files which VirtualBox may have left over. This is a bug in
|
|
8
|
+
# VirtualBox. As soon as this is fixed, this middleware can and
|
|
9
|
+
# will be removed.
|
|
10
|
+
class CleanMachineFolder
|
|
11
|
+
def initialize(app, env)
|
|
12
|
+
@app = app
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def call(env)
|
|
16
|
+
clean_machine_folder(env[:machine].provider.driver.read_machine_folder)
|
|
17
|
+
@app.call(env)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def clean_machine_folder(machine_folder)
|
|
21
|
+
folder = File.join(machine_folder, "*")
|
|
22
|
+
|
|
23
|
+
# Small safeguard against potentially unwanted rm-rf, since the default
|
|
24
|
+
# machine folder will typically always be greater than 10 characters long.
|
|
25
|
+
# For users with it < 10, out of luck?
|
|
26
|
+
return if folder.length < 10
|
|
27
|
+
|
|
28
|
+
Dir[folder].each do |f|
|
|
29
|
+
next unless File.directory?(f)
|
|
30
|
+
|
|
31
|
+
keep = Dir["#{f}/**/*"].find do |d|
|
|
32
|
+
# Find a file that doesn't have ".xml-prev" as the suffix,
|
|
33
|
+
# which signals that we want to keep this folder
|
|
34
|
+
File.file?(d) && !(File.basename(d) =~ /\.vbox-prev$/)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
FileUtils.rm_rf(f) if !keep
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class ClearForwardedPorts
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
env[:ui].info I18n.t("vagrant.actions.vm.clear_forward_ports.deleting")
|
|
11
|
+
env[:machine].provider.driver.clear_forwarded_ports
|
|
12
|
+
|
|
13
|
+
@app.call(env)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class ClearNetworkInterfaces
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
# Create the adapters array to make all adapters nothing.
|
|
11
|
+
# We do adapters 2 to 8 because that is every built-in adapter
|
|
12
|
+
# excluding the NAT adapter on port 1 which Vagrant always
|
|
13
|
+
# expects to exist.
|
|
14
|
+
adapters = []
|
|
15
|
+
2.upto(8).each do |i|
|
|
16
|
+
adapters << {
|
|
17
|
+
:adapter => i,
|
|
18
|
+
:type => :none
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# "Enable" all the adapters we setup.
|
|
23
|
+
env[:ui].info I18n.t("vagrant.actions.vm.clear_network_interfaces.deleting")
|
|
24
|
+
env[:machine].provider.driver.enable_adapters(adapters)
|
|
25
|
+
|
|
26
|
+
@app.call(env)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class ClearSharedFolders
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
env[:machine].provider.driver.clear_shared_folders
|
|
11
|
+
|
|
12
|
+
@app.call(env)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class Created
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
# Set the result to be true if the machine is created.
|
|
11
|
+
env[:result] = env[:machine].state.id != :not_created
|
|
12
|
+
|
|
13
|
+
# Call the next if we have one (but we shouldn't, since this
|
|
14
|
+
# middleware is built to run with the Call-type middlewares)
|
|
15
|
+
@app.call(env)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class Customize
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
customizations = env[:machine].provider_config.customizations
|
|
11
|
+
if !customizations.empty?
|
|
12
|
+
env[:ui].info I18n.t("vagrant.actions.vm.customize.running")
|
|
13
|
+
|
|
14
|
+
# Execute each customization command.
|
|
15
|
+
customizations.each do |command|
|
|
16
|
+
processed_command = command.collect do |arg|
|
|
17
|
+
arg = env[:machine].id if arg == :id
|
|
18
|
+
arg.to_s
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
result = env[:machine].provider.driver.execute_command(processed_command)
|
|
22
|
+
if result.exit_code != 0
|
|
23
|
+
raise Vagrant::Errors::VMCustomizationFailed, {
|
|
24
|
+
:command => processed_command.inspect,
|
|
25
|
+
:error => result.stderr
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
@app.call(env)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class Destroy
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
env[:ui].info I18n.t("vagrant.actions.vm.destroy.destroying")
|
|
11
|
+
env[:machine].provider.driver.delete
|
|
12
|
+
env[:machine].id = nil
|
|
13
|
+
|
|
14
|
+
@app.call(env)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class DestroyUnusedNetworkInterfaces
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
env[:machine].provider.driver.delete_unused_host_only_networks
|
|
11
|
+
@app.call(env)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class DiscardState
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
if env[:machine].provider.state.id == :saved
|
|
11
|
+
env[:ui].info I18n.t("vagrant.actions.vm.discard_state.discarding")
|
|
12
|
+
env[:machine].provider.driver.discard_saved_state
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
@app.call(env)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require "fileutils"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module ProviderVirtualBox
|
|
5
|
+
module Action
|
|
6
|
+
class Export
|
|
7
|
+
attr_reader :temp_dir
|
|
8
|
+
|
|
9
|
+
def initialize(app, env)
|
|
10
|
+
@app = app
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def call(env)
|
|
14
|
+
@env = env
|
|
15
|
+
|
|
16
|
+
raise Vagrant::Errors::VMPowerOffToPackage if \
|
|
17
|
+
@env[:machine].provider.state.id != :poweroff
|
|
18
|
+
|
|
19
|
+
setup_temp_dir
|
|
20
|
+
export
|
|
21
|
+
|
|
22
|
+
@app.call(env)
|
|
23
|
+
|
|
24
|
+
recover(env) # called to cleanup temp directory
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def recover(env)
|
|
28
|
+
if temp_dir && File.exist?(temp_dir)
|
|
29
|
+
FileUtils.rm_rf(temp_dir)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def setup_temp_dir
|
|
34
|
+
@env[:ui].info I18n.t("vagrant.actions.vm.export.create_dir")
|
|
35
|
+
@temp_dir = @env["export.temp_dir"] = @env[:tmp_path].join(Time.now.to_i.to_s)
|
|
36
|
+
FileUtils.mkpath(@env["export.temp_dir"])
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def export
|
|
40
|
+
@env[:ui].info I18n.t("vagrant.actions.vm.export.exporting")
|
|
41
|
+
@env[:machine].provider.driver.export(ovf_path) do |progress|
|
|
42
|
+
@env[:ui].clear_line
|
|
43
|
+
@env[:ui].report_progress(progress.percent, 100, false)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Clear the line a final time so the next data can appear
|
|
47
|
+
# alone on the line.
|
|
48
|
+
@env[:ui].clear_line
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def ovf_path
|
|
52
|
+
File.join(@env["export.temp_dir"], "box.ovf")
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class ForcedHalt
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
current_state = env[:machine].state.id
|
|
11
|
+
if current_state == :running || current_state == :gurumeditation
|
|
12
|
+
env[:ui].info I18n.t("vagrant.actions.vm.halt.force")
|
|
13
|
+
env[:machine].provider.driver.halt
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Sleep for a second to verify that the VM properly
|
|
17
|
+
# cleans itself up. Silly VirtualBox.
|
|
18
|
+
sleep 1 if !env["vagrant.test"]
|
|
19
|
+
|
|
20
|
+
@app.call(env)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module ProviderVirtualBox
|
|
3
|
+
module Action
|
|
4
|
+
class ForwardPorts
|
|
5
|
+
include Util::CompileForwardedPorts
|
|
6
|
+
|
|
7
|
+
def initialize(app, env)
|
|
8
|
+
@app = app
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
#--------------------------------------------------------------
|
|
12
|
+
# Execution
|
|
13
|
+
#--------------------------------------------------------------
|
|
14
|
+
def call(env)
|
|
15
|
+
@env = env
|
|
16
|
+
|
|
17
|
+
# Get the ports we're forwarding
|
|
18
|
+
env[:forwarded_ports] ||= compile_forwarded_ports(env[:machine].config)
|
|
19
|
+
|
|
20
|
+
# Warn if we're port forwarding to any privileged ports...
|
|
21
|
+
env[:forwarded_ports].each do |fp|
|
|
22
|
+
if fp.host_port <= 1024
|
|
23
|
+
env[:ui].warn I18n.t("vagrant.actions.vm.forward_ports.privileged_ports")
|
|
24
|
+
break
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
env[:ui].info I18n.t("vagrant.actions.vm.forward_ports.forwarding")
|
|
29
|
+
forward_ports
|
|
30
|
+
|
|
31
|
+
@app.call(env)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def forward_ports
|
|
35
|
+
ports = []
|
|
36
|
+
|
|
37
|
+
interfaces = @env[:machine].provider.driver.read_network_interfaces
|
|
38
|
+
|
|
39
|
+
@env[:forwarded_ports].each do |fp|
|
|
40
|
+
message_attributes = {
|
|
41
|
+
:adapter => fp.adapter,
|
|
42
|
+
:guest_port => fp.guest_port,
|
|
43
|
+
:host_port => fp.host_port
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# Assuming the only reason to establish port forwarding is
|
|
47
|
+
# because the VM is using Virtualbox NAT networking. Host-only
|
|
48
|
+
# bridged networking don't require port-forwarding and establishing
|
|
49
|
+
# forwarded ports on these attachment types has uncertain behaviour.
|
|
50
|
+
@env[:ui].info(I18n.t("vagrant.actions.vm.forward_ports.forwarding_entry",
|
|
51
|
+
message_attributes))
|
|
52
|
+
|
|
53
|
+
# Verify we have the network interface to attach to
|
|
54
|
+
if !interfaces[fp.adapter]
|
|
55
|
+
raise Vagrant::Errors::ForwardPortAdapterNotFound,
|
|
56
|
+
:adapter => fp.adapter.to_s,
|
|
57
|
+
:guest => fp.guest_port.to_s,
|
|
58
|
+
:host => fp.host_port.to_s
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Port forwarding requires the network interface to be a NAT interface,
|
|
62
|
+
# so verify that that is the case.
|
|
63
|
+
if interfaces[fp.adapter][:type] != :nat
|
|
64
|
+
@env[:ui].info(I18n.t("vagrant.actions.vm.forward_ports.non_nat",
|
|
65
|
+
message_attributes))
|
|
66
|
+
next
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Add the options to the ports array to send to the driver later
|
|
70
|
+
ports << {
|
|
71
|
+
:adapter => fp.adapter,
|
|
72
|
+
:guestport => fp.guest_port,
|
|
73
|
+
:hostport => fp.host_port,
|
|
74
|
+
:name => fp.id,
|
|
75
|
+
:protocol => fp.protocol
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
if !ports.empty?
|
|
80
|
+
# We only need to forward ports if there are any to forward
|
|
81
|
+
@env[:machine].provider.driver.forward_ports(ports)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|