vagrantup 1.0.7 → 1.1.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +91 -0
- data/LICENSE +2 -2
- data/README.md +11 -13
- data/bin/vagrant +29 -5
- data/config/default.rb +14 -9
- data/contrib/bash/completion.sh +3 -0
- data/keys/README.md +3 -3
- data/lib/vagrant.rb +156 -102
- data/lib/vagrant/action.rb +26 -47
- data/lib/vagrant/action/builder.rb +49 -23
- data/lib/vagrant/action/builtin/box_add.rb +85 -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/env_set.rb +24 -0
- data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
- data/lib/vagrant/action/builtin/handle_box_url.rb +43 -0
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +117 -0
- data/lib/vagrant/action/builtin/lock.rb +57 -0
- data/lib/vagrant/action/builtin/nfs.rb +117 -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 +19 -18
- data/lib/vagrant/action/hook.rb +103 -0
- data/lib/vagrant/action/runner.rb +21 -5
- data/lib/vagrant/action/warden.rb +20 -9
- data/lib/vagrant/box.rb +75 -26
- data/lib/vagrant/box_collection.rb +301 -35
- data/lib/vagrant/cli.rb +20 -14
- data/lib/vagrant/config.rb +23 -9
- data/lib/vagrant/config/loader.rb +131 -36
- data/lib/vagrant/config/v1.rb +9 -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/v2.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/version_base.rb +80 -0
- data/lib/vagrant/downloaders/base.rb +0 -3
- data/lib/vagrant/downloaders/file.rb +10 -4
- data/lib/vagrant/downloaders/http.rb +29 -10
- data/lib/vagrant/environment.rb +447 -240
- data/lib/vagrant/errors.rb +138 -97
- data/lib/vagrant/hosts.rb +3 -12
- data/lib/vagrant/machine.rb +325 -0
- data/lib/vagrant/machine_state.rb +45 -0
- data/lib/vagrant/plugin.rb +3 -78
- data/lib/vagrant/plugin/v1.rb +19 -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/v2.rb +22 -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 +29 -0
- data/lib/vagrant/plugin/v2/config.rb +101 -0
- data/lib/vagrant/plugin/v2/errors.rb +15 -0
- data/lib/vagrant/plugin/v2/guest.rb +92 -0
- data/lib/vagrant/plugin/v2/host.rb +66 -0
- data/lib/vagrant/plugin/v2/manager.rb +158 -0
- data/lib/vagrant/plugin/v2/plugin.rb +217 -0
- data/lib/vagrant/plugin/v2/provider.rb +69 -0
- data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
- data/lib/vagrant/registry.rb +43 -17
- data/lib/vagrant/ssh.rb +15 -9
- data/lib/vagrant/ui.rb +7 -5
- data/lib/vagrant/util/is_port_open.rb +1 -1
- data/lib/vagrant/util/platform.rb +19 -0
- data/lib/vagrant/util/retryable.rb +8 -2
- data/lib/vagrant/util/safe_exec.rb +2 -2
- data/lib/vagrant/util/scoped_hash_override.rb +45 -0
- data/lib/vagrant/util/ssh.rb +126 -0
- data/lib/vagrant/util/string_block_editor.rb +75 -0
- data/lib/vagrant/util/subprocess.rb +33 -10
- data/lib/vagrant/util/which.rb +43 -0
- data/lib/vagrant/version.rb +1 -1
- data/plugins/README.md +5 -0
- data/plugins/commands/box/command/add.rb +46 -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/{lib/vagrant/command/init.rb → plugins/commands/init/command.rb} +4 -4
- 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.rb +52 -0
- data/plugins/commands/plugin/action/bundler_check.rb +25 -0
- data/plugins/commands/plugin/action/install_gem.rb +70 -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/command/base.rb +22 -0
- data/plugins/commands/plugin/command/install.rb +39 -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/{lib/vagrant/command/ssh.rb → plugins/commands/ssh/command.rb} +17 -41
- data/plugins/commands/ssh/plugin.rb +17 -0
- data/{lib/vagrant/command/ssh_config.rb → plugins/commands/ssh_config/command.rb} +14 -16
- 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 +45 -0
- data/plugins/commands/up/plugin.rb +17 -0
- data/{lib/vagrant/command → plugins/commands/up}/start_mixins.rb +6 -6
- data/{lib/vagrant/communication/ssh.rb → plugins/communicators/ssh/communicator.rb} +139 -52
- data/plugins/communicators/ssh/plugin.rb +19 -0
- data/plugins/guests/arch/guest.rb +41 -0
- data/plugins/guests/arch/plugin.rb +15 -0
- data/{lib/vagrant/guest/debian.rb → plugins/guests/debian/guest.rb} +21 -13
- data/plugins/guests/debian/plugin.rb +15 -0
- data/{lib/vagrant/guest/fedora.rb → plugins/guests/fedora/guest.rb} +19 -14
- data/plugins/guests/fedora/plugin.rb +15 -0
- data/plugins/guests/freebsd/config.rb +13 -0
- data/plugins/guests/freebsd/guest.rb +70 -0
- data/plugins/guests/freebsd/plugin.rb +20 -0
- data/plugins/guests/gentoo/guest.rb +51 -0
- data/plugins/guests/gentoo/plugin.rb +15 -0
- data/plugins/guests/linux/config.rb +13 -0
- data/{lib/vagrant/guest/linux.rb → plugins/guests/linux/guest.rb} +35 -34
- data/plugins/guests/linux/plugin.rb +20 -0
- data/plugins/guests/openbsd/guest.rb +13 -0
- data/plugins/guests/openbsd/plugin.rb +15 -0
- data/{lib/vagrant/guest/redhat.rb → plugins/guests/redhat/guest.rb} +22 -15
- data/plugins/guests/redhat/plugin.rb +15 -0
- data/plugins/guests/solaris/config.rb +18 -0
- data/plugins/guests/solaris/guest.rb +73 -0
- data/plugins/guests/solaris/plugin.rb +20 -0
- data/plugins/guests/suse/guest.rb +24 -0
- data/plugins/guests/suse/plugin.rb +15 -0
- data/plugins/guests/ubuntu/guest.rb +44 -0
- data/plugins/guests/ubuntu/plugin.rb +15 -0
- data/{lib/vagrant/hosts/arch.rb → plugins/hosts/arch/host.rb} +18 -5
- data/plugins/hosts/arch/plugin.rb +15 -0
- data/{lib/vagrant/hosts/bsd.rb → plugins/hosts/bsd/host.rb} +16 -11
- data/plugins/hosts/bsd/plugin.rb +15 -0
- data/{lib/vagrant/hosts/fedora.rb → plugins/hosts/fedora/host.rb} +8 -4
- data/plugins/hosts/fedora/plugin.rb +15 -0
- data/{lib/vagrant/hosts/freebsd.rb → plugins/hosts/freebsd/host.rb} +10 -8
- data/plugins/hosts/freebsd/plugin.rb +15 -0
- data/{lib/vagrant/hosts/gentoo.rb → plugins/hosts/gentoo/host.rb} +7 -3
- data/plugins/hosts/gentoo/plugin.rb +15 -0
- data/{lib/vagrant/hosts/linux.rb → plugins/hosts/linux/host.rb} +12 -11
- data/plugins/hosts/linux/plugin.rb +15 -0
- data/{lib/vagrant/hosts/opensuse.rb → plugins/hosts/opensuse/host.rb} +8 -4
- data/plugins/hosts/opensuse/plugin.rb +15 -0
- data/{lib/vagrant/hosts/windows.rb → plugins/hosts/windows/host.rb} +5 -4
- 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 +10 -0
- data/plugins/kernel_v2/config/package.rb +9 -0
- data/plugins/kernel_v2/config/ssh.rb +35 -0
- data/plugins/kernel_v2/config/vagrant.rb +9 -0
- data/plugins/kernel_v2/config/vm.rb +314 -0
- data/plugins/kernel_v2/config/vm_provisioner.rb +40 -0
- data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
- data/plugins/kernel_v2/plugin.rb +44 -0
- data/plugins/providers/virtualbox/action.rb +308 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/boot.rb +12 -16
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/check_accessible.rb +5 -5
- data/plugins/providers/virtualbox/action/check_created.rb +21 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/check_guest_additions.rb +18 -11
- data/plugins/providers/virtualbox/action/check_running.rb +21 -0
- data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clean_machine_folder.rb +5 -5
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_forwarded_ports.rb +4 -4
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_network_interfaces.rb +4 -4
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_shared_folders.rb +4 -5
- data/plugins/providers/virtualbox/action/created.rb +20 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/customize.rb +7 -7
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/destroy.rb +5 -5
- data/plugins/providers/virtualbox/action/destroy_confirm.rb +17 -0
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
- data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/export.rb +7 -7
- data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/forward_ports.rb +29 -42
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/import.rb +15 -12
- 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/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/match_mac_address.rb +5 -5
- 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 +366 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/package.rb +4 -7
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/package_vagrantfile.rb +5 -8
- data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +51 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/prune_nfs_exports.rb +5 -5
- data/plugins/providers/virtualbox/action/resume.rb +25 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/sane_defaults.rb +41 -32
- data/plugins/providers/virtualbox/action/set_name.rb +40 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/setup_package_files.rb +5 -8
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/share_folders.rb +24 -25
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/suspend.rb +5 -5
- data/plugins/providers/virtualbox/config.rb +82 -0
- data/plugins/providers/virtualbox/driver/base.rb +344 -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 +475 -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/chef/config/base.rb +65 -0
- data/plugins/provisioners/chef/config/chef_client.rb +39 -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 +91 -0
- data/plugins/provisioners/chef/provisioner/chef_client.rb +103 -0
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +182 -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 +110 -0
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
- data/plugins/provisioners/shell/config.rb +46 -0
- data/plugins/provisioners/shell/plugin.rb +23 -0
- data/plugins/provisioners/shell/provisioner.rb +66 -0
- data/templates/commands/init/Vagrantfile.erb +33 -21
- data/templates/commands/ssh_config/config.erb +1 -0
- data/templates/config/messages.erb +14 -0
- data/templates/config/validation_failed.erb +3 -3
- data/templates/guests/arch/network_dhcp.erb +4 -7
- data/templates/guests/arch/network_static.erb +6 -7
- data/templates/guests/debian/network_dhcp.erb +5 -0
- data/templates/locales/en.yml +336 -100
- data/templates/rgloader.rb +9 -0
- data/test/acceptance/support/isolated_environment.rb +3 -2
- data/test/support/tempdir.rb +13 -4
- data/test/unit/base.rb +6 -0
- data/test/unit/support/dummy_provider.rb +16 -0
- data/test/unit/support/isolated_environment.rb +132 -0
- data/test/unit/support/shared/base_context.rb +74 -0
- data/test/unit/vagrant/action/builder_test.rb +88 -48
- 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 +101 -0
- data/test/unit/vagrant/action/runner_test.rb +15 -9
- data/test/unit/vagrant/box_collection_test.rb +219 -38
- data/test/unit/vagrant/box_test.rb +94 -19
- data/test/unit/vagrant/cli_test.rb +27 -0
- data/test/unit/vagrant/config/loader_test.rb +154 -49
- 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 +40 -1
- data/test/unit/vagrant/downloaders/base_test.rb +0 -4
- data/test/unit/vagrant/downloaders/file_test.rb +21 -9
- data/test/unit/vagrant/downloaders/http_test.rb +4 -0
- data/test/unit/vagrant/environment_test.rb +414 -63
- data/test/unit/vagrant/hosts_test.rb +10 -9
- data/test/unit/vagrant/machine_state_test.rb +26 -0
- data/test/unit/vagrant/machine_test.rb +418 -0
- data/test/unit/vagrant/{command/base_test.rb → plugin/v1/command_test.rb} +2 -9
- 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 +157 -0
- data/test/unit/vagrant/plugin/v2/plugin_test.rb +287 -0
- data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
- data/test/unit/vagrant/registry_test.rb +59 -5
- 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 +98 -0
- data/test/unit/vagrant/util/which_test.rb +43 -0
- data/test/unit/vagrant_test.rb +42 -13
- data/vagrant.gemspec +6 -7
- data/vagrant.gemspecbak +6 -7
- metadata +273 -358
- data/lib/vagrant/action/box/destroy.rb +0 -25
- data/lib/vagrant/action/box/download.rb +0 -84
- data/lib/vagrant/action/box/package.rb +0 -19
- data/lib/vagrant/action/box/unpackage.rb +0 -61
- data/lib/vagrant/action/box/verify.rb +0 -23
- data/lib/vagrant/action/builtin.rb +0 -171
- data/lib/vagrant/action/env/set.rb +0 -21
- data/lib/vagrant/action/environment.rb +0 -12
- data/lib/vagrant/action/general/check_virtualbox.rb +0 -28
- data/lib/vagrant/action/general/validate.rb +0 -18
- data/lib/vagrant/action/vm/check_box.rb +0 -33
- data/lib/vagrant/action/vm/check_port_collisions.rb +0 -89
- data/lib/vagrant/action/vm/default_name.rb +0 -22
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +0 -20
- data/lib/vagrant/action/vm/discard_state.rb +0 -22
- data/lib/vagrant/action/vm/halt.rb +0 -32
- data/lib/vagrant/action/vm/host_name.rb +0 -21
- data/lib/vagrant/action/vm/network.rb +0 -403
- data/lib/vagrant/action/vm/nfs.rb +0 -196
- data/lib/vagrant/action/vm/provision.rb +0 -61
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +0 -26
- data/lib/vagrant/action/vm/resume.rb +0 -20
- data/lib/vagrant/command.rb +0 -24
- data/lib/vagrant/command/base.rb +0 -167
- data/lib/vagrant/command/box.rb +0 -58
- data/lib/vagrant/command/box_add.rb +0 -37
- data/lib/vagrant/command/box_list.rb +0 -28
- data/lib/vagrant/command/box_remove.rb +0 -27
- data/lib/vagrant/command/box_repackage.rb +0 -27
- data/lib/vagrant/command/destroy.rb +0 -64
- data/lib/vagrant/command/gem.rb +0 -39
- data/lib/vagrant/command/halt.rb +0 -39
- data/lib/vagrant/command/package.rb +0 -75
- data/lib/vagrant/command/provision.rb +0 -40
- data/lib/vagrant/command/reload.rb +0 -39
- data/lib/vagrant/command/resume.rb +0 -33
- data/lib/vagrant/command/status.rb +0 -36
- data/lib/vagrant/command/suspend.rb +0 -33
- data/lib/vagrant/command/up.rb +0 -40
- data/lib/vagrant/communication.rb +0 -7
- data/lib/vagrant/communication/base.rb +0 -56
- data/lib/vagrant/config/base.rb +0 -82
- data/lib/vagrant/config/error_recorder.rb +0 -19
- data/lib/vagrant/config/nfs.rb +0 -8
- data/lib/vagrant/config/package.rb +0 -7
- data/lib/vagrant/config/ssh.rb +0 -27
- data/lib/vagrant/config/top.rb +0 -72
- data/lib/vagrant/config/vagrant.rb +0 -14
- data/lib/vagrant/config/vm.rb +0 -168
- data/lib/vagrant/config/vm/provisioner.rb +0 -52
- data/lib/vagrant/config/vm/sub_vm.rb +0 -17
- data/lib/vagrant/data_store.rb +0 -92
- data/lib/vagrant/driver.rb +0 -8
- data/lib/vagrant/driver/virtualbox.rb +0 -134
- data/lib/vagrant/driver/virtualbox_4_0.rb +0 -459
- data/lib/vagrant/driver/virtualbox_4_1.rb +0 -459
- data/lib/vagrant/driver/virtualbox_4_2.rb +0 -606
- data/lib/vagrant/driver/virtualbox_base.rb +0 -326
- data/lib/vagrant/guest.rb +0 -18
- data/lib/vagrant/guest/arch.rb +0 -56
- data/lib/vagrant/guest/base.rb +0 -99
- data/lib/vagrant/guest/freebsd.rb +0 -86
- data/lib/vagrant/guest/gentoo.rb +0 -46
- data/lib/vagrant/guest/linux/config.rb +0 -19
- data/lib/vagrant/guest/linux/error.rb +0 -9
- data/lib/vagrant/guest/openbsd.rb +0 -20
- data/lib/vagrant/guest/solaris.rb +0 -118
- data/lib/vagrant/guest/suse.rb +0 -17
- data/lib/vagrant/guest/ubuntu.rb +0 -23
- data/lib/vagrant/hosts/base.rb +0 -66
- data/lib/vagrant/provisioners.rb +0 -12
- data/lib/vagrant/provisioners/base.rb +0 -44
- data/lib/vagrant/provisioners/chef.rb +0 -168
- data/lib/vagrant/provisioners/chef_client.rb +0 -132
- data/lib/vagrant/provisioners/chef_solo.rb +0 -234
- data/lib/vagrant/provisioners/puppet.rb +0 -176
- data/lib/vagrant/provisioners/puppet_server.rb +0 -78
- data/lib/vagrant/provisioners/shell.rb +0 -103
- data/lib/vagrant/vm.rb +0 -195
- data/test/buildbot/README.md +0 -72
- data/test/buildbot/buildbot_config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/loader.py +0 -24
- data/test/buildbot/buildbot_config/config/master.py +0 -24
- data/test/buildbot/buildbot_config/config/slave.py +0 -22
- data/test/buildbot/buildbot_config/master/__init__.py +0 -6
- data/test/buildbot/buildbot_config/master/builders.py +0 -78
- data/test/buildbot/buildbot_config/master/buildsteps.py +0 -100
- data/test/buildbot/buildbot_config/master/change_sources.py +0 -8
- data/test/buildbot/buildbot_config/master/schedulers.py +0 -32
- data/test/buildbot/buildbot_config/master/slaves.py +0 -60
- data/test/buildbot/buildbot_config/master/status.py +0 -52
- data/test/buildbot/master/Makefile.sample +0 -28
- data/test/buildbot/master/buildbot.tac +0 -36
- data/test/buildbot/master/master.cfg +0 -67
- data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
- data/test/buildbot/master/public_html/default.css +0 -545
- data/test/buildbot/master/public_html/favicon.ico +0 -0
- data/test/buildbot/master/public_html/robots.txt +0 -10
- data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +0 -356
- data/test/buildbot/master/public_html/static/css/prettify.css +0 -97
- data/test/buildbot/master/public_html/static/css/syntax.css +0 -60
- data/test/buildbot/master/public_html/static/css/vagrant.base.css +0 -205
- data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
- data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
- data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +0 -80
- data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +0 -4
- data/test/buildbot/master/templates/authfail.html +0 -9
- data/test/buildbot/master/templates/build.html +0 -205
- data/test/buildbot/master/templates/builder.html +0 -118
- data/test/buildbot/master/templates/builders.html +0 -33
- data/test/buildbot/master/templates/buildslave.html +0 -72
- data/test/buildbot/master/templates/buildslaves.html +0 -70
- data/test/buildbot/master/templates/change.html +0 -15
- data/test/buildbot/master/templates/layouts/base.html +0 -58
- data/test/buildbot/master/templates/macros/box.html +0 -37
- data/test/buildbot/master/templates/macros/build_line.html +0 -50
- data/test/buildbot/master/templates/macros/change.html +0 -81
- data/test/buildbot/master/templates/macros/forms.html +0 -300
- data/test/buildbot/master/templates/root.html +0 -42
- data/test/buildbot/master/templates/waterfall.html +0 -53
- data/test/buildbot/requirements.txt +0 -4
- data/test/buildbot/scripts/deploy.sh +0 -38
- data/test/buildbot/scripts/setup.sh +0 -107
- data/test/buildbot/slave/buildbot.tac +0 -43
- data/test/buildbot/slave/info/admin +0 -1
- data/test/buildbot/slave/info/host +0 -1
- data/test/buildbot/tests/__init__.py +0 -0
- data/test/buildbot/tests/master/__init__.py +0 -0
- data/test/buildbot/tests/master/test_slaves.py +0 -41
- data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
- data/test/unit/vagrant/action/environment_test.rb +0 -16
- data/test/unit/vagrant/config/base_test.rb +0 -48
- data/test/unit/vagrant/config/ssh_test.rb +0 -17
- data/test/unit/vagrant/config/top_test.rb +0 -69
- data/test/unit/vagrant/config/vm_test.rb +0 -71
- data/test/unit/vagrant/data_store_test.rb +0 -79
- data/test/unit_legacy/locales/en.yml +0 -8
- data/test/unit_legacy/test_helper.rb +0 -32
- data/test/unit_legacy/vagrant/action/box/destroy_test.rb +0 -18
- data/test/unit_legacy/vagrant/action/box/download_test.rb +0 -125
- data/test/unit_legacy/vagrant/action/box/package_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +0 -84
- data/test/unit_legacy/vagrant/action/box/verify_test.rb +0 -30
- data/test/unit_legacy/vagrant/action/env/set_test.rb +0 -24
- data/test/unit_legacy/vagrant/action/general/package_test.rb +0 -268
- data/test/unit_legacy/vagrant/action/general/validate_test.rb +0 -31
- data/test/unit_legacy/vagrant/action/vm/boot_test.rb +0 -66
- data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +0 -61
- data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +0 -61
- data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +0 -9
- data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +0 -84
- data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -52
- data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +0 -22
- data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +0 -40
- data/test/unit_legacy/vagrant/action/vm/customize_test.rb +0 -37
- data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -49
- data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +0 -45
- data/test/unit_legacy/vagrant/action/vm/export_test.rb +0 -107
- data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +0 -77
- data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +0 -197
- data/test/unit_legacy/vagrant/action/vm/halt_test.rb +0 -79
- data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +0 -36
- data/test/unit_legacy/vagrant/action/vm/import_test.rb +0 -66
- data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +0 -40
- data/test/unit_legacy/vagrant/action/vm/modify_test.rb +0 -38
- data/test/unit_legacy/vagrant/action/vm/network_test.rb +0 -286
- data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +0 -26
- data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +0 -260
- data/test/unit_legacy/vagrant/action/vm/package_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +0 -46
- data/test/unit_legacy/vagrant/action/vm/provision_test.rb +0 -65
- data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +0 -56
- data/test/unit_legacy/vagrant/action/vm/resume_test.rb +0 -35
- data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +0 -144
- data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +0 -35
- data/test/unit_legacy/vagrant/action_test.rb +0 -89
- data/test/unit_legacy/vagrant/box_collection_test.rb +0 -45
- data/test/unit_legacy/vagrant/box_test.rb +0 -74
- data/test/unit_legacy/vagrant/cli_test.rb +0 -35
- data/test/unit_legacy/vagrant/command/base_test.rb +0 -23
- data/test/unit_legacy/vagrant/command/group_base_test.rb +0 -15
- data/test/unit_legacy/vagrant/command/helpers_test.rb +0 -88
- data/test/unit_legacy/vagrant/command/init_test.rb +0 -10
- data/test/unit_legacy/vagrant/command/package_test.rb +0 -27
- data/test/unit_legacy/vagrant/config/base_test.rb +0 -52
- data/test/unit_legacy/vagrant/config/error_recorder_test.rb +0 -18
- data/test/unit_legacy/vagrant/config/ssh_test.rb +0 -12
- data/test/unit_legacy/vagrant/config/vagrant_test.rb +0 -35
- data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +0 -92
- data/test/unit_legacy/vagrant/config/vm_test.rb +0 -47
- data/test/unit_legacy/vagrant/config_test.rb +0 -148
- data/test/unit_legacy/vagrant/downloaders/http_test.rb +0 -93
- data/test/unit_legacy/vagrant/environment_test.rb +0 -539
- data/test/unit_legacy/vagrant/errors_test.rb +0 -42
- data/test/unit_legacy/vagrant/hosts/base_test.rb +0 -46
- data/test/unit_legacy/vagrant/hosts/bsd_test.rb +0 -53
- data/test/unit_legacy/vagrant/hosts/linux_test.rb +0 -54
- data/test/unit_legacy/vagrant/plugin_test.rb +0 -9
- data/test/unit_legacy/vagrant/provisioners/base_test.rb +0 -63
- data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +0 -190
- data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +0 -115
- data/test/unit_legacy/vagrant/provisioners/chef_test.rb +0 -209
- data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +0 -68
- data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +0 -182
- data/test/unit_legacy/vagrant/provisioners/shell_test.rb +0 -79
- data/test/unit_legacy/vagrant/ssh/session_test.rb +0 -40
- data/test/unit_legacy/vagrant/ssh_test.rb +0 -304
- data/test/unit_legacy/vagrant/systems/base_test.rb +0 -18
- data/test/unit_legacy/vagrant/systems/linux_test.rb +0 -104
- data/test/unit_legacy/vagrant/util/busy_test.rb +0 -106
- data/test/unit_legacy/vagrant/util/counter_test.rb +0 -29
- data/test/unit_legacy/vagrant/util/platform_test.rb +0 -18
- data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +0 -43
- data/test/unit_legacy/vagrant/util/template_renderer_test.rb +0 -145
- data/test/unit_legacy/vagrant/vm_test.rb +0 -300
- data/vagrant-1.1.4.gem +0 -0
- data/vagrantup-0.1.0.gem +0 -0
- data/vagrantup-0.1.1.gem +0 -0
- data/vagrantup-0.1.2.gem +0 -0
- data/vagrantup-0.1.3.gem +0 -0
- data/vagrantup-0.1.4.gem +0 -0
- data/vagrantup-0.2.0.gem +0 -0
- data/vagrantup-0.3.0.gem +0 -0
- data/vagrantup-0.3.1.gem +0 -0
- data/vagrantup-0.3.2.gem +0 -0
- data/vagrantup-0.3.3.gem +0 -0
- data/vagrantup-0.3.4.gem +0 -0
- data/vagrantup-0.4.0.gem +0 -0
- data/vagrantup-0.4.1.gem +0 -0
- data/vagrantup-0.4.3.dev.gem +0 -0
- data/vagrantup-0.5.0.gem +0 -0
- data/vagrantup-0.5.1.gem +0 -0
- data/vagrantup-0.5.2.gem +0 -0
- data/vagrantup-0.5.3.gem +0 -0
- data/vagrantup-0.5.4.gem +0 -0
- data/vagrantup-0.6.0.gem +0 -0
- data/vagrantup-0.6.1.gem +0 -0
- data/vagrantup-0.6.2.gem +0 -0
- data/vagrantup-0.6.3.gem +0 -0
- data/vagrantup-0.6.4.gem +0 -0
- data/vagrantup-0.6.5.gem +0 -0
- data/vagrantup-0.6.6.gem +0 -0
- data/vagrantup-0.6.7.gem +0 -0
- data/vagrantup-0.6.8.gem +0 -0
- data/vagrantup-0.6.9.gem +0 -0
- data/vagrantup-0.7.0.gem +0 -0
- data/vagrantup-0.7.1.gem +0 -0
- data/vagrantup-0.7.2.gem +0 -0
- data/vagrantup-0.7.3.gem +0 -0
- data/vagrantup-0.7.4.gem +0 -0
- data/vagrantup-0.7.5.gem +0 -0
- data/vagrantup-0.7.6.gem +0 -0
- data/vagrantup-0.7.7.gem +0 -0
- data/vagrantup-0.7.8.gem +0 -0
- data/vagrantup-0.8.0.gem +0 -0
- data/vagrantup-0.8.1.gem +0 -0
- data/vagrantup-0.8.10.gem +0 -0
- data/vagrantup-0.8.2.gem +0 -0
- data/vagrantup-0.8.3.gem +0 -0
- data/vagrantup-0.8.4.gem +0 -0
- data/vagrantup-0.8.5.gem +0 -0
- data/vagrantup-0.8.6.gem +0 -0
- data/vagrantup-0.8.7.gem +0 -0
- data/vagrantup-0.8.8.gem +0 -0
- data/vagrantup-0.8.9.gem +0 -0
- data/vagrantup-0.9.0.gem +0 -0
- data/vagrantup-0.9.1.gem +0 -0
- data/vagrantup-0.9.2.gem +0 -0
- data/vagrantup-0.9.3.gem +0 -0
- data/vagrantup-0.9.4.gem +0 -0
- data/vagrantup-0.9.5.gem +0 -0
- data/vagrantup-0.9.6.gem +0 -0
- data/vagrantup-0.9.7.gem +0 -0
- data/vagrantup-0.9.99.1.gem +0 -0
- data/vagrantup-0.9.99.2.gem +0 -0
- data/vagrantup-1.0.0.gem +0 -0
- data/vagrantup-1.0.1.gem +0 -0
- data/vagrantup-1.0.2.gem +0 -0
- data/vagrantup-1.0.3.gem +0 -0
- data/vagrantup-1.0.4.gem +0 -0
- data/vagrantup-1.0.5.gem +0 -0
- data/vagrantup-1.0.6.gem +0 -0
- data/vagrantup-1.1.4.gem +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Plugin
|
|
3
|
+
module V2
|
|
4
|
+
# This is the base class for a provider for the V2 API. A provider
|
|
5
|
+
# is responsible for creating compute resources to match the needs
|
|
6
|
+
# of a Vagrant-configured system.
|
|
7
|
+
class Provider
|
|
8
|
+
# Initialize the provider to represent the given machine.
|
|
9
|
+
#
|
|
10
|
+
# @param [Vagrant::Machine] machine The machine that this provider
|
|
11
|
+
# is responsible for.
|
|
12
|
+
def initialize(machine)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# This should return an action callable for the given name.
|
|
16
|
+
#
|
|
17
|
+
# @param [Symbol] name Name of the action.
|
|
18
|
+
# @return [Object] A callable action sequence object, whether it
|
|
19
|
+
# is a proc, object, etc.
|
|
20
|
+
def action(name)
|
|
21
|
+
nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# This method is called if the underying machine ID changes. Providers
|
|
25
|
+
# can use this method to load in new data for the actual backing
|
|
26
|
+
# machine or to realize that the machine is now gone (the ID can
|
|
27
|
+
# become `nil`). No parameters are given, since the underlying machine
|
|
28
|
+
# is simply the machine instance given to this object. And no
|
|
29
|
+
# return value is necessary.
|
|
30
|
+
def machine_id_changed
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# This should return a hash of information that explains how to
|
|
34
|
+
# SSH into the machine. If the machine is not at a point where
|
|
35
|
+
# SSH is even possible, then `nil` should be returned.
|
|
36
|
+
#
|
|
37
|
+
# The general structure of this returned hash should be the
|
|
38
|
+
# following:
|
|
39
|
+
#
|
|
40
|
+
# {
|
|
41
|
+
# :host => "1.2.3.4",
|
|
42
|
+
# :port => "22",
|
|
43
|
+
# :username => "mitchellh",
|
|
44
|
+
# :private_key_path => "/path/to/my/key"
|
|
45
|
+
# }
|
|
46
|
+
#
|
|
47
|
+
# **Note:** Vagrant only supports private key based authentication,
|
|
48
|
+
# mainly for the reason that there is no easy way to exec into an
|
|
49
|
+
# `ssh` prompt with a password, whereas we can pass a private key
|
|
50
|
+
# via commandline.
|
|
51
|
+
#
|
|
52
|
+
# @return [Hash] SSH information. For the structure of this hash
|
|
53
|
+
# read the accompanying documentation for this method.
|
|
54
|
+
def ssh_info
|
|
55
|
+
nil
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# This should return the state of the machine within this provider.
|
|
59
|
+
# The state must be an instance of {MachineState}. Please read the
|
|
60
|
+
# documentation of that class for more information.
|
|
61
|
+
#
|
|
62
|
+
# @return [MachineState]
|
|
63
|
+
def state
|
|
64
|
+
nil
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Plugin
|
|
3
|
+
module V2
|
|
4
|
+
# This is the base class for a provisioner for the V2 API. A provisioner
|
|
5
|
+
# is primarily responsible for installing software on a Vagrant guest.
|
|
6
|
+
class Provisioner
|
|
7
|
+
attr_reader :machine
|
|
8
|
+
attr_reader :config
|
|
9
|
+
|
|
10
|
+
# Initializes the provisioner with the machine that it will be
|
|
11
|
+
# provisioning along with the provisioner configuration (if there
|
|
12
|
+
# is any).
|
|
13
|
+
#
|
|
14
|
+
# The provisioner should _not_ do anything at this point except
|
|
15
|
+
# initialize internal state.
|
|
16
|
+
#
|
|
17
|
+
# @param [Machine] machine The machine that this will be provisioning.
|
|
18
|
+
# @param [Object] config Provisioner configuration, if one was set.
|
|
19
|
+
def initialize(machine, config)
|
|
20
|
+
@machine = machine
|
|
21
|
+
@config = config
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Called with the root configuration of the machine so the provisioner
|
|
25
|
+
# can add some configuration on top of the machine.
|
|
26
|
+
#
|
|
27
|
+
# During this step, and this step only, the provisioner should modify
|
|
28
|
+
# the root machine configuration to add any additional features it
|
|
29
|
+
# may need. Examples include sharing folders, networking, and so on.
|
|
30
|
+
# This step is guaranteed to be called before any of those steps are
|
|
31
|
+
# done so the provisioner may do that.
|
|
32
|
+
#
|
|
33
|
+
# No return value is expected.
|
|
34
|
+
def configure(root_config)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# This is the method called when the actual provisioning should be
|
|
38
|
+
# done. The communicator is guaranteed to be ready at this point,
|
|
39
|
+
# and any shared folders or networks are already setup.
|
|
40
|
+
#
|
|
41
|
+
# No return value is expected.
|
|
42
|
+
def provision
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/vagrant/registry.rb
CHANGED
|
@@ -2,43 +2,62 @@ module Vagrant
|
|
|
2
2
|
# Register components in a single location that can be queried.
|
|
3
3
|
#
|
|
4
4
|
# This allows certain components (such as guest systems, configuration
|
|
5
|
-
# pieces, etc.) to be registered and queried.
|
|
5
|
+
# pieces, etc.) to be registered and queried, lazily.
|
|
6
6
|
class Registry
|
|
7
7
|
def initialize
|
|
8
|
-
@
|
|
8
|
+
@items = {}
|
|
9
9
|
@results_cache = {}
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
# Register a
|
|
12
|
+
# Register a key with a lazy-loaded value.
|
|
13
13
|
#
|
|
14
|
-
#
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# overwritten.
|
|
19
|
-
def register(key, value=nil, &block)
|
|
20
|
-
block = lambda { value } if value
|
|
21
|
-
@actions[key] = block
|
|
14
|
+
# If a key with the given name already exists, it is overwritten.
|
|
15
|
+
def register(key, &block)
|
|
16
|
+
raise ArgumentError, "block required" if !block_given?
|
|
17
|
+
@items[key] = block
|
|
22
18
|
end
|
|
23
19
|
|
|
24
|
-
# Get
|
|
20
|
+
# Get a value by the given key.
|
|
25
21
|
#
|
|
26
|
-
# This will evaluate the block given to `register` and return the
|
|
27
|
-
#
|
|
22
|
+
# This will evaluate the block given to `register` and return the
|
|
23
|
+
# resulting value.
|
|
28
24
|
def get(key)
|
|
29
|
-
return nil if !@
|
|
25
|
+
return nil if !@items.has_key?(key)
|
|
30
26
|
return @results_cache[key] if @results_cache.has_key?(key)
|
|
31
|
-
@results_cache[key] = @
|
|
27
|
+
@results_cache[key] = @items[key].call
|
|
32
28
|
end
|
|
33
29
|
alias :[] :get
|
|
34
30
|
|
|
31
|
+
# Checks if the given key is registered with the registry.
|
|
32
|
+
#
|
|
33
|
+
# @return [Boolean]
|
|
34
|
+
def has_key?(key)
|
|
35
|
+
@items.has_key?(key)
|
|
36
|
+
end
|
|
37
|
+
|
|
35
38
|
# Iterate over the keyspace.
|
|
36
39
|
def each(&block)
|
|
37
|
-
@
|
|
40
|
+
@items.each do |key, _|
|
|
38
41
|
yield key, get(key)
|
|
39
42
|
end
|
|
40
43
|
end
|
|
41
44
|
|
|
45
|
+
# Merge one registry with another and return a completely new
|
|
46
|
+
# registry. Note that the result cache is completely busted, so
|
|
47
|
+
# any gets on the new registry will result in a cache miss.
|
|
48
|
+
def merge(other)
|
|
49
|
+
self.class.new.tap do |result|
|
|
50
|
+
result.merge!(self)
|
|
51
|
+
result.merge!(other)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Like #{merge} but merges into self.
|
|
56
|
+
def merge!(other)
|
|
57
|
+
@items.merge!(other.__internal_state[:items])
|
|
58
|
+
self
|
|
59
|
+
end
|
|
60
|
+
|
|
42
61
|
# Converts this registry to a hash
|
|
43
62
|
def to_hash
|
|
44
63
|
result = {}
|
|
@@ -48,5 +67,12 @@ module Vagrant
|
|
|
48
67
|
|
|
49
68
|
result
|
|
50
69
|
end
|
|
70
|
+
|
|
71
|
+
def __internal_state
|
|
72
|
+
{
|
|
73
|
+
:items => @items,
|
|
74
|
+
:results_cache => @results_cache
|
|
75
|
+
}
|
|
76
|
+
end
|
|
51
77
|
end
|
|
52
78
|
end
|
data/lib/vagrant/ssh.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'log4r'
|
|
2
2
|
|
|
3
|
+
require 'vagrant/util/file_util'
|
|
3
4
|
require 'vagrant/util/file_mode'
|
|
4
5
|
require 'vagrant/util/platform'
|
|
5
6
|
require 'vagrant/util/safe_exec'
|
|
@@ -55,15 +56,18 @@ module Vagrant
|
|
|
55
56
|
# Get the SSH information and cache it here
|
|
56
57
|
ssh_info = info
|
|
57
58
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
# Ensure the platform supports ssh. On Windows there are several programs which
|
|
60
|
+
# include ssh, notably git, mingw and cygwin, but make sure ssh is in the path!
|
|
61
|
+
if !Util::FileUtil.which("ssh")
|
|
62
|
+
if Util::Platform.windows?
|
|
63
|
+
raise Errors::SSHUnavailableWindows, :host => ssh_info[:host],
|
|
64
|
+
:port => ssh_info[:port],
|
|
65
|
+
:username => ssh_info[:username],
|
|
66
|
+
:key_path => ssh_info[:private_key_path]
|
|
67
|
+
end
|
|
68
|
+
raise Errors::SSHUnavailable
|
|
63
69
|
end
|
|
64
70
|
|
|
65
|
-
raise Errors::SSHUnavailable if !Kernel.system("which ssh > /dev/null 2>&1")
|
|
66
|
-
|
|
67
71
|
# If plain mode is enabled then we don't do any authentication (we don't
|
|
68
72
|
# set a user or an identity file)
|
|
69
73
|
plain_mode = opts[:plain_mode]
|
|
@@ -76,10 +80,11 @@ module Vagrant
|
|
|
76
80
|
|
|
77
81
|
# Command line options
|
|
78
82
|
command_options = ["-p", options[:port].to_s, "-o", "UserKnownHostsFile=/dev/null",
|
|
79
|
-
"-o", "StrictHostKeyChecking=no", "-o", "LogLevel=
|
|
83
|
+
"-o", "StrictHostKeyChecking=no", "-o", "LogLevel=QUIET"]
|
|
80
84
|
|
|
81
85
|
# Solaris/OpenSolaris/Illumos uses SunSSH which doesn't support the IdentitiesOnly option
|
|
82
|
-
|
|
86
|
+
# (Also don't use it in plain mode, it'll skip user agents.)
|
|
87
|
+
command_options += ["-o", "IdentitiesOnly=yes"] if !(Util::Platform.solaris? || plain_mode)
|
|
83
88
|
|
|
84
89
|
command_options += ["-i", options[:private_key_path]] if !plain_mode
|
|
85
90
|
command_options += ["-o", "ForwardAgent=yes"] if ssh_info[:forward_agent]
|
|
@@ -113,6 +118,7 @@ module Vagrant
|
|
|
113
118
|
@logger.info("Attempting to correct key permissions to 0600")
|
|
114
119
|
File.chmod(0600, key_path)
|
|
115
120
|
|
|
121
|
+
stat = File.stat(key_path)
|
|
116
122
|
if Util::FileMode.from_octal(stat.mode) != "600"
|
|
117
123
|
raise Errors::SSHKeyBadPermissions, :key_path => key_path
|
|
118
124
|
end
|
data/lib/vagrant/ui.rb
CHANGED
|
@@ -14,7 +14,7 @@ module Vagrant
|
|
|
14
14
|
class Interface
|
|
15
15
|
attr_accessor :resource
|
|
16
16
|
|
|
17
|
-
def initialize(resource)
|
|
17
|
+
def initialize(resource=nil)
|
|
18
18
|
@logger = Log4r::Logger.new("vagrant::ui::interface")
|
|
19
19
|
@resource = resource
|
|
20
20
|
end
|
|
@@ -73,8 +73,11 @@ module Vagrant
|
|
|
73
73
|
# Output the data
|
|
74
74
|
say(:info, message, opts)
|
|
75
75
|
|
|
76
|
-
# Get the results and chomp off the newline
|
|
77
|
-
|
|
76
|
+
# Get the results and chomp off the newline. We do a logical OR
|
|
77
|
+
# here because `gets` can return a nil, for example in the case
|
|
78
|
+
# that ctrl-D is pressed on the input.
|
|
79
|
+
input = $stdin.gets || ""
|
|
80
|
+
input.chomp
|
|
78
81
|
end
|
|
79
82
|
|
|
80
83
|
# This is used to output progress reports to the UI.
|
|
@@ -96,7 +99,6 @@ module Vagrant
|
|
|
96
99
|
def clear_line
|
|
97
100
|
reset = "\r"
|
|
98
101
|
reset += "\e[0K" unless Util::Platform.windows?
|
|
99
|
-
reset
|
|
100
102
|
|
|
101
103
|
info(reset, :new_line => false)
|
|
102
104
|
end
|
|
@@ -123,7 +125,7 @@ module Vagrant
|
|
|
123
125
|
# This is called by `say` to format the message for output.
|
|
124
126
|
def format_message(type, message, opts=nil)
|
|
125
127
|
opts ||= {}
|
|
126
|
-
message = "[#{@resource}] #{message}" if opts[:prefix]
|
|
128
|
+
message = "[#{@resource}] #{message}" if @resource && opts[:prefix]
|
|
127
129
|
message
|
|
128
130
|
end
|
|
129
131
|
end
|
|
@@ -29,7 +29,7 @@ module Vagrant
|
|
|
29
29
|
# to connect.
|
|
30
30
|
return true
|
|
31
31
|
end
|
|
32
|
-
rescue Timeout::Error, Errno::ECONNREFUSED, Errno::EHOSTUNREACH
|
|
32
|
+
rescue Timeout::Error, Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ENETUNREACH
|
|
33
33
|
# Any of the above exceptions signal that the port is closed.
|
|
34
34
|
return false
|
|
35
35
|
end
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
require 'rbconfig'
|
|
2
2
|
require 'tempfile'
|
|
3
3
|
|
|
4
|
+
require "vagrant/util/subprocess"
|
|
5
|
+
|
|
4
6
|
module Vagrant
|
|
5
7
|
module Util
|
|
6
8
|
# This class just contains some platform checking code.
|
|
@@ -14,6 +16,10 @@ module Vagrant
|
|
|
14
16
|
platform.include?("darwin9")
|
|
15
17
|
end
|
|
16
18
|
|
|
19
|
+
def cygwin?
|
|
20
|
+
platform.include?("cygwin")
|
|
21
|
+
end
|
|
22
|
+
|
|
17
23
|
[:darwin, :bsd, :freebsd, :linux, :solaris].each do |type|
|
|
18
24
|
define_method("#{type}?") do
|
|
19
25
|
platform.include?(type.to_s)
|
|
@@ -44,6 +50,19 @@ module Vagrant
|
|
|
44
50
|
!bit64?
|
|
45
51
|
end
|
|
46
52
|
|
|
53
|
+
# This takes as input a path as a string and converts it into
|
|
54
|
+
# a platform-friendly version of the path. This is most important
|
|
55
|
+
# when using the path in shell environments with Cygwin.
|
|
56
|
+
#
|
|
57
|
+
# @param [String] path
|
|
58
|
+
# @return [String]
|
|
59
|
+
def platform_path(path)
|
|
60
|
+
return path if !cygwin?
|
|
61
|
+
|
|
62
|
+
process = Subprocess.execute("cygpath", "-u", path.to_s)
|
|
63
|
+
process.stdout.chomp
|
|
64
|
+
end
|
|
65
|
+
|
|
47
66
|
# Returns a boolean noting whether the terminal supports color.
|
|
48
67
|
# output.
|
|
49
68
|
def terminal_supports_colors?
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require "log4r"
|
|
2
|
+
|
|
1
3
|
module Vagrant
|
|
2
4
|
module Util
|
|
3
5
|
module Retryable
|
|
@@ -8,12 +10,16 @@ module Vagrant
|
|
|
8
10
|
# This code is adapted slightly from the following blog post:
|
|
9
11
|
# http://blog.codefront.net/2008/01/14/retrying-code-blocks-in-ruby-on-exceptions-whatever/
|
|
10
12
|
def retryable(opts=nil)
|
|
11
|
-
|
|
13
|
+
logger = nil
|
|
14
|
+
opts = { :tries => 1, :on => Exception }.merge(opts || {})
|
|
12
15
|
|
|
13
16
|
begin
|
|
14
17
|
return yield
|
|
15
|
-
rescue *opts[:on]
|
|
18
|
+
rescue *opts[:on] => e
|
|
16
19
|
if (opts[:tries] -= 1) > 0
|
|
20
|
+
logger = Log4r::Logger.new("vagrant::util::retryable")
|
|
21
|
+
logger.info("Retryable exception raised: #{e.inspect}")
|
|
22
|
+
|
|
17
23
|
sleep opts[:sleep].to_f if opts[:sleep]
|
|
18
24
|
retry
|
|
19
25
|
end
|
|
@@ -6,8 +6,8 @@ module Vagrant
|
|
|
6
6
|
# This issue causes `exec` to fail if there is more than one system
|
|
7
7
|
# thread. In that case, `safe_exec` automatically falls back to
|
|
8
8
|
# forking.
|
|
9
|
-
|
|
10
|
-
def
|
|
9
|
+
class SafeExec
|
|
10
|
+
def self.exec(command, *args)
|
|
11
11
|
# Create a list of things to rescue from. Since this is OS
|
|
12
12
|
# specific, we need to do some defined? checks here to make
|
|
13
13
|
# sure they exist.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Util
|
|
3
|
+
# This allows for hash options to be overridden by a scope key
|
|
4
|
+
# prefix. An example speaks best here. Imagine the following hash:
|
|
5
|
+
#
|
|
6
|
+
# original = {
|
|
7
|
+
# :id => "foo",
|
|
8
|
+
# :mitchellh__id => "bar",
|
|
9
|
+
# :mitchellh__other => "foo"
|
|
10
|
+
# }
|
|
11
|
+
#
|
|
12
|
+
# scoped = scoped_hash_override(original, "mitchellh")
|
|
13
|
+
#
|
|
14
|
+
# scoped == {
|
|
15
|
+
# :id => "bar",
|
|
16
|
+
# :other => "foo"
|
|
17
|
+
# }
|
|
18
|
+
#
|
|
19
|
+
module ScopedHashOverride
|
|
20
|
+
def scoped_hash_override(original, scope)
|
|
21
|
+
# Convert the scope to a string in case a symbol was given since
|
|
22
|
+
# we use string comparisons for everything.
|
|
23
|
+
scope = scope.to_s
|
|
24
|
+
|
|
25
|
+
# Shallow copy the hash for the result
|
|
26
|
+
result = original.dup
|
|
27
|
+
|
|
28
|
+
original.each do |key, value|
|
|
29
|
+
parts = key.to_s.split("__", 2)
|
|
30
|
+
|
|
31
|
+
# If we don't have the proper parts, then bail
|
|
32
|
+
next if parts.length != 2
|
|
33
|
+
|
|
34
|
+
# If this is our scope, then override
|
|
35
|
+
if parts[0] == scope
|
|
36
|
+
result[parts[1].to_sym] = value
|
|
37
|
+
result.delete(key)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
result
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require "log4r"
|
|
2
|
+
|
|
3
|
+
require "vagrant/util/file_mode"
|
|
4
|
+
require "vagrant/util/platform"
|
|
5
|
+
require "vagrant/util/safe_exec"
|
|
6
|
+
require "vagrant/util/which"
|
|
7
|
+
|
|
8
|
+
module Vagrant
|
|
9
|
+
module Util
|
|
10
|
+
# This is a class that has helpers on it for dealing with SSH. These
|
|
11
|
+
# helpers don't depend on any part of Vagrant except what is given
|
|
12
|
+
# via the parameters.
|
|
13
|
+
class SSH
|
|
14
|
+
LOGGER = Log4r::Logger.new("vagrant::util::ssh")
|
|
15
|
+
|
|
16
|
+
# Checks that the permissions for a private key are valid, and fixes
|
|
17
|
+
# them if possible. SSH requires that permissions on the private key
|
|
18
|
+
# are 0600 on POSIX based systems. This will make a best effort to
|
|
19
|
+
# fix these permissions if they are not properly set.
|
|
20
|
+
#
|
|
21
|
+
# @param [Pathname] key_path The path to the private key.
|
|
22
|
+
def self.check_key_permissions(key_path)
|
|
23
|
+
# Don't do anything if we're on Windows, since Windows doesn't worry
|
|
24
|
+
# about key permissions.
|
|
25
|
+
return if Platform.windows?
|
|
26
|
+
|
|
27
|
+
LOGGER.debug("Checking key permissions: #{key_path}")
|
|
28
|
+
stat = key_path.stat
|
|
29
|
+
|
|
30
|
+
if stat.owned? && FileMode.from_octal(stat.mode) != "600"
|
|
31
|
+
LOGGER.info("Attempting to correct key permissions to 0600")
|
|
32
|
+
key_path.chmod(0600)
|
|
33
|
+
|
|
34
|
+
# Re-stat the file to get the new mode, and verify it worked
|
|
35
|
+
stat = key_path.stat
|
|
36
|
+
if FileMode.from_octal(stat.mode) != "600"
|
|
37
|
+
raise Errors::SSHKeyBadPermissions, :key_path => key_path
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
rescue Errno::EPERM
|
|
41
|
+
# This shouldn't happen since we verify we own the file, but
|
|
42
|
+
# it is possible in theory, so we raise an error.
|
|
43
|
+
raise Errors::SSHKeyBadPermissions, :key_path => key_path
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Halts the running of this process and replaces it with a full-fledged
|
|
47
|
+
# SSH shell into a remote machine.
|
|
48
|
+
#
|
|
49
|
+
# Note: This method NEVER returns. The process ends after this.
|
|
50
|
+
#
|
|
51
|
+
# @param [Hash] ssh_info This is the SSH information. For the keys
|
|
52
|
+
# required please see the documentation of {Machine#ssh_info}.
|
|
53
|
+
# @param [Hash] opts These are additional options that are supported
|
|
54
|
+
# by exec.
|
|
55
|
+
def self.exec(ssh_info, opts={})
|
|
56
|
+
# Ensure the platform supports ssh. On Windows there are several programs which
|
|
57
|
+
# include ssh, notably git, mingw and cygwin, but make sure ssh is in the path!
|
|
58
|
+
if !Which.which("ssh")
|
|
59
|
+
if Platform.windows?
|
|
60
|
+
raise Errors::SSHUnavailableWindows,
|
|
61
|
+
:host => ssh_info[:host],
|
|
62
|
+
:port => ssh_info[:port],
|
|
63
|
+
:username => ssh_info[:username],
|
|
64
|
+
:key_path => ssh_info[:private_key_path]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
raise Errors::SSHUnavailable
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# If plain mode is enabled then we don't do any authentication (we don't
|
|
71
|
+
# set a user or an identity file)
|
|
72
|
+
plain_mode = opts[:plain_mode]
|
|
73
|
+
|
|
74
|
+
options = {}
|
|
75
|
+
options[:host] = ssh_info[:host]
|
|
76
|
+
options[:port] = ssh_info[:port]
|
|
77
|
+
options[:username] = ssh_info[:username]
|
|
78
|
+
options[:private_key_path] = ssh_info[:private_key_path]
|
|
79
|
+
|
|
80
|
+
# Command line options
|
|
81
|
+
command_options = [
|
|
82
|
+
"-p", options[:port].to_s,
|
|
83
|
+
"-o", "LogLevel=FATAL",
|
|
84
|
+
"-o", "StrictHostKeyChecking=no",
|
|
85
|
+
"-o", "UserKnownHostsFile=/dev/null"]
|
|
86
|
+
|
|
87
|
+
# Solaris/OpenSolaris/Illumos uses SunSSH which doesn't support the
|
|
88
|
+
# IdentitiesOnly option. Also, we don't enable it in plain mode so
|
|
89
|
+
# that SSH properly searches our identities and tries to do it itself.
|
|
90
|
+
if !Platform.solaris? && !plain_mode
|
|
91
|
+
command_options += ["-o", "IdentitiesOnly=yes"]
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# If we're not in plain mode, attach the private key path.
|
|
95
|
+
command_options += ["-i", options[:private_key_path].to_s] if !plain_mode
|
|
96
|
+
|
|
97
|
+
if ssh_info[:forward_x11]
|
|
98
|
+
# Both are required so that no warnings are shown regarding X11
|
|
99
|
+
command_options += [
|
|
100
|
+
"-o", "ForwardX11=yes",
|
|
101
|
+
"-o", "ForwardX11Trusted=yes"]
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Configurables -- extra_args should always be last due to the way the
|
|
105
|
+
# ssh args parser works. e.g. if the user wants to use the -t option,
|
|
106
|
+
# any shell command(s) she'd like to run on the remote server would
|
|
107
|
+
# have to be the last part of the 'ssh' command:
|
|
108
|
+
#
|
|
109
|
+
# $ ssh localhost -t -p 2222 "cd mydirectory; bash"
|
|
110
|
+
#
|
|
111
|
+
# Without having extra_args be last, the user loses this ability
|
|
112
|
+
command_options += ["-o", "ForwardAgent=yes"] if ssh_info[:forward_agent]
|
|
113
|
+
command_options.concat(opts[:extra_args]) if opts[:extra_args]
|
|
114
|
+
|
|
115
|
+
# Build up the host string for connecting
|
|
116
|
+
host_string = options[:host]
|
|
117
|
+
host_string = "#{options[:username]}@#{host_string}" if !plain_mode
|
|
118
|
+
command_options.unshift(host_string)
|
|
119
|
+
|
|
120
|
+
# Invoke SSH with all our options
|
|
121
|
+
LOGGER.info("Invoking SSH: #{command_options.inspect}")
|
|
122
|
+
SafeExec.exec("ssh", *command_options)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|