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,15 @@
|
|
|
1
|
+
# This file contains all the errors that the V2 plugin interface
|
|
2
|
+
# may throw.
|
|
3
|
+
|
|
4
|
+
module Vagrant
|
|
5
|
+
module Plugin
|
|
6
|
+
module V2
|
|
7
|
+
# Exceptions that can be thrown within the plugin interface all
|
|
8
|
+
# inherit from this parent exception.
|
|
9
|
+
class Error < StandardError; end
|
|
10
|
+
|
|
11
|
+
# This is thrown when a command name given is invalid.
|
|
12
|
+
class InvalidCommandName < Error; end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Plugin
|
|
3
|
+
module V2
|
|
4
|
+
# The base class for a guest. A guest represents an installed system
|
|
5
|
+
# within a machine that Vagrant manages. There are some portions of
|
|
6
|
+
# Vagrant which are OS-specific such as mountaing shared folders and
|
|
7
|
+
# halting the machine, and this abstraction allows the implementation
|
|
8
|
+
# for these to be seperate from the core of Vagrant.
|
|
9
|
+
class Guest
|
|
10
|
+
class BaseError < Errors::VagrantError
|
|
11
|
+
error_namespace("vagrant.guest.base")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
include Vagrant::Util
|
|
15
|
+
|
|
16
|
+
# The VM which this system is tied to.
|
|
17
|
+
attr_reader :vm
|
|
18
|
+
|
|
19
|
+
# Initializes the system. Any subclasses MUST make sure this
|
|
20
|
+
# method is called on the parent. Therefore, if a subclass overrides
|
|
21
|
+
# `initialize`, then you must call `super`.
|
|
22
|
+
def initialize(vm)
|
|
23
|
+
@vm = vm
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# This method is automatically called when the system is available (when
|
|
27
|
+
# Vagrant can successfully SSH into the machine) to give the system a chance
|
|
28
|
+
# to determine the distro and return a distro-specific system.
|
|
29
|
+
#
|
|
30
|
+
# If this method returns nil, then this instance is assumed to be
|
|
31
|
+
# the most specific guest implementation.
|
|
32
|
+
def distro_dispatch
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Halt the machine. This method should gracefully shut down the
|
|
36
|
+
# operating system. This method will cause `vagrant halt` and associated
|
|
37
|
+
# commands to _block_, meaning that if the machine doesn't halt
|
|
38
|
+
# in a reasonable amount of time, this method should just return.
|
|
39
|
+
#
|
|
40
|
+
# If when this method returns, the machine's state isn't "powered_off,"
|
|
41
|
+
# Vagrant will proceed to forcefully shut the machine down.
|
|
42
|
+
def halt
|
|
43
|
+
raise BaseError, :_key => :unsupported_halt
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Mounts a shared folder.
|
|
47
|
+
#
|
|
48
|
+
# This method should create, mount, and properly set permissions
|
|
49
|
+
# on the shared folder. This method should also properly
|
|
50
|
+
# adhere to any configuration values such as `shared_folder_uid`
|
|
51
|
+
# on `config.vm`.
|
|
52
|
+
#
|
|
53
|
+
# @param [String] name The name of the shared folder.
|
|
54
|
+
# @param [String] guestpath The path on the machine which the user
|
|
55
|
+
# wants the folder mounted.
|
|
56
|
+
# @param [Hash] options Additional options for the shared folder
|
|
57
|
+
# which can be honored.
|
|
58
|
+
def mount_shared_folder(name, guestpath, options)
|
|
59
|
+
raise BaseError, :_key => :unsupported_shared_folder
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Mounts a shared folder via NFS. This assumes that the exports
|
|
63
|
+
# via the host are already done.
|
|
64
|
+
def mount_nfs(ip, folders)
|
|
65
|
+
raise BaseError, :_key => :unsupported_nfs
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Configures the given list of networks on the virtual machine.
|
|
69
|
+
#
|
|
70
|
+
# The networks parameter will be an array of hashes where the hashes
|
|
71
|
+
# represent the configuration of a network interface. The structure
|
|
72
|
+
# of the hash will be roughly the following:
|
|
73
|
+
#
|
|
74
|
+
# {
|
|
75
|
+
# :type => :static,
|
|
76
|
+
# :ip => "192.168.33.10",
|
|
77
|
+
# :netmask => "255.255.255.0",
|
|
78
|
+
# :interface => 1
|
|
79
|
+
# }
|
|
80
|
+
#
|
|
81
|
+
def configure_networks(networks)
|
|
82
|
+
raise BaseError, :_key => :unsupported_configure_networks
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Called to change the hostname of the virtual machine.
|
|
86
|
+
def change_host_name(name)
|
|
87
|
+
raise BaseError, :_key => :unsupported_host_name
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Plugin
|
|
3
|
+
module V2
|
|
4
|
+
# Base class for a host in Vagrant. A host class contains functionality
|
|
5
|
+
# that is specific to a specific OS that is running Vagrant. This
|
|
6
|
+
# abstraction is done becauase there is some host-specific logic that
|
|
7
|
+
# Vagrant must do in some cases.
|
|
8
|
+
class Host
|
|
9
|
+
# This returns true/false depending on if the current running system
|
|
10
|
+
# matches the host class.
|
|
11
|
+
#
|
|
12
|
+
# @return [Boolean]
|
|
13
|
+
def self.match?
|
|
14
|
+
nil
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The precedence of the host when checking for matches. This is to
|
|
18
|
+
# allow certain host such as generic OS's ("Linux", "BSD", etc.)
|
|
19
|
+
# to be specified last.
|
|
20
|
+
#
|
|
21
|
+
# The hosts with the higher numbers will be checked first.
|
|
22
|
+
#
|
|
23
|
+
# If you're implementing a basic host, you can probably ignore this.
|
|
24
|
+
def self.precedence
|
|
25
|
+
5
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Initializes a new host class.
|
|
29
|
+
#
|
|
30
|
+
# The only required parameter is a UI object so that the host
|
|
31
|
+
# objects have some way to communicate with the outside world.
|
|
32
|
+
#
|
|
33
|
+
# @param [UI] ui UI for the hosts to output to.
|
|
34
|
+
def initialize(ui)
|
|
35
|
+
@ui = ui
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Returns true of false denoting whether or not this host supports
|
|
39
|
+
# NFS shared folder setup. This method ideally should verify that
|
|
40
|
+
# NFS is installed.
|
|
41
|
+
#
|
|
42
|
+
# @return [Boolean]
|
|
43
|
+
def nfs?
|
|
44
|
+
false
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Exports the given hash of folders via NFS.
|
|
48
|
+
#
|
|
49
|
+
# @param [String] id A unique ID that is guaranteed to be unique to
|
|
50
|
+
# match these sets of folders.
|
|
51
|
+
# @param [String] ip IP of the guest machine.
|
|
52
|
+
# @param [Hash] folders Shared folders to sync.
|
|
53
|
+
def nfs_export(id, ip, folders)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Prunes any NFS exports made by Vagrant which aren't in the set
|
|
57
|
+
# of valid ids given.
|
|
58
|
+
#
|
|
59
|
+
# @param [Array<String>] valid_ids Valid IDs that should not be
|
|
60
|
+
# pruned.
|
|
61
|
+
def nfs_prune(valid_ids)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
require "log4r"
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
module Plugin
|
|
5
|
+
module V2
|
|
6
|
+
# This class maintains a list of all the registered plugins as well
|
|
7
|
+
# as provides methods that allow querying all registered components of
|
|
8
|
+
# those plugins as a single unit.
|
|
9
|
+
class Manager
|
|
10
|
+
attr_reader :registered
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
@logger = Log4r::Logger.new("vagrant::plugin::v2::manager")
|
|
14
|
+
@registered = []
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# This returns all the action hooks.
|
|
18
|
+
#
|
|
19
|
+
# @return [Array]
|
|
20
|
+
def action_hooks(hook_name)
|
|
21
|
+
result = []
|
|
22
|
+
|
|
23
|
+
@registered.each do |plugin|
|
|
24
|
+
result += plugin.components.action_hooks[Plugin::ALL_ACTIONS]
|
|
25
|
+
result += plugin.components.action_hooks[hook_name]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
result
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# This returns all the registered commands.
|
|
32
|
+
#
|
|
33
|
+
# @return [Hash]
|
|
34
|
+
def commands
|
|
35
|
+
Registry.new.tap do |result|
|
|
36
|
+
@registered.each do |plugin|
|
|
37
|
+
result.merge!(plugin.command)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# This returns all the registered communicators.
|
|
43
|
+
#
|
|
44
|
+
# @return [Hash]
|
|
45
|
+
def communicators
|
|
46
|
+
Registry.new.tap do |result|
|
|
47
|
+
@registered.each do |plugin|
|
|
48
|
+
result.merge!(plugin.communicator)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# This returns all the registered configuration classes.
|
|
54
|
+
#
|
|
55
|
+
# @return [Hash]
|
|
56
|
+
def config
|
|
57
|
+
Registry.new.tap do |result|
|
|
58
|
+
@registered.each do |plugin|
|
|
59
|
+
result.merge!(plugin.components.configs[:top])
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# This returns all the registered guests.
|
|
65
|
+
#
|
|
66
|
+
# @return [Hash]
|
|
67
|
+
def guests
|
|
68
|
+
Registry.new.tap do |result|
|
|
69
|
+
@registered.each do |plugin|
|
|
70
|
+
result.merge!(plugin.guest)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# This returns all registered host classes.
|
|
76
|
+
#
|
|
77
|
+
# @return [Hash]
|
|
78
|
+
def hosts
|
|
79
|
+
Registry.new.tap do |result|
|
|
80
|
+
@registered.each do |plugin|
|
|
81
|
+
result.merge!(plugin.host)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# This returns all registered providers.
|
|
87
|
+
#
|
|
88
|
+
# @return [Hash]
|
|
89
|
+
def providers
|
|
90
|
+
Registry.new.tap do |result|
|
|
91
|
+
@registered.each do |plugin|
|
|
92
|
+
result.merge!(plugin.provider)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# This returns all the config classes for the various providers.
|
|
98
|
+
#
|
|
99
|
+
# @return [Hash]
|
|
100
|
+
def provider_configs
|
|
101
|
+
Registry.new.tap do |result|
|
|
102
|
+
@registered.each do |plugin|
|
|
103
|
+
result.merge!(plugin.components.configs[:provider])
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# This returns all the config classes for the various provisioners.
|
|
109
|
+
#
|
|
110
|
+
# @return [Registry]
|
|
111
|
+
def provisioner_configs
|
|
112
|
+
Registry.new.tap do |result|
|
|
113
|
+
@registered.each do |plugin|
|
|
114
|
+
result.merge!(plugin.components.configs[:provisioner])
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# This returns all registered provisioners.
|
|
120
|
+
#
|
|
121
|
+
# @return [Hash]
|
|
122
|
+
def provisioners
|
|
123
|
+
Registry.new.tap do |result|
|
|
124
|
+
@registered.each do |plugin|
|
|
125
|
+
result.merge!(plugin.provisioner)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# This registers a plugin. This should _NEVER_ be called by the public
|
|
131
|
+
# and should only be called from within Vagrant. Vagrant will
|
|
132
|
+
# automatically register V2 plugins when a name is set on the
|
|
133
|
+
# plugin.
|
|
134
|
+
def register(plugin)
|
|
135
|
+
if !@registered.include?(plugin)
|
|
136
|
+
@logger.info("Registered plugin: #{plugin.name}")
|
|
137
|
+
@registered << plugin
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# This clears out all the registered plugins. This is only used by
|
|
142
|
+
# unit tests and should not be called directly.
|
|
143
|
+
def reset!
|
|
144
|
+
@registered.clear
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# This unregisters a plugin so that its components will no longer
|
|
148
|
+
# be used. Note that this should only be used for testing purposes.
|
|
149
|
+
def unregister(plugin)
|
|
150
|
+
if @registered.include?(plugin)
|
|
151
|
+
@logger.info("Unregistered: #{plugin.name}")
|
|
152
|
+
@registered.delete(plugin)
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
require "set"
|
|
2
|
+
|
|
3
|
+
require "log4r"
|
|
4
|
+
|
|
5
|
+
require "vagrant/plugin/v2/components"
|
|
6
|
+
|
|
7
|
+
module Vagrant
|
|
8
|
+
module Plugin
|
|
9
|
+
module V2
|
|
10
|
+
# This is the superclass for all V2 plugins.
|
|
11
|
+
class Plugin
|
|
12
|
+
# Special marker that can be used for action hooks that matches
|
|
13
|
+
# all action sequences.
|
|
14
|
+
ALL_ACTIONS = :__all_actions__
|
|
15
|
+
|
|
16
|
+
# The logger for this class.
|
|
17
|
+
LOGGER = Log4r::Logger.new("vagrant::plugin::v2::plugin")
|
|
18
|
+
|
|
19
|
+
# Set the root class up to be ourself, so that we can reference this
|
|
20
|
+
# from within methods which are probably in subclasses.
|
|
21
|
+
ROOT_CLASS = self
|
|
22
|
+
|
|
23
|
+
# This returns the manager for all V2 plugins.
|
|
24
|
+
#
|
|
25
|
+
# @return [V2::Manager]
|
|
26
|
+
def self.manager
|
|
27
|
+
@manager ||= Manager.new
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Returns the {Components} for this plugin.
|
|
31
|
+
#
|
|
32
|
+
# @return [Components]
|
|
33
|
+
def self.components
|
|
34
|
+
@components ||= Components.new
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Set the name of the plugin. The moment that this is called, the
|
|
38
|
+
# plugin will be registered and available. Before this is called, a
|
|
39
|
+
# plugin does not exist. The name must be unique among all installed
|
|
40
|
+
# plugins.
|
|
41
|
+
#
|
|
42
|
+
# @param [String] name Name of the plugin.
|
|
43
|
+
# @return [String] The name of the plugin.
|
|
44
|
+
def self.name(name=UNSET_VALUE)
|
|
45
|
+
# Get or set the value first, so we have a name for logging when
|
|
46
|
+
# we register.
|
|
47
|
+
result = get_or_set(:name, name)
|
|
48
|
+
|
|
49
|
+
# The plugin should be registered if we're setting a real name on it
|
|
50
|
+
Plugin.manager.register(self) if name != UNSET_VALUE
|
|
51
|
+
|
|
52
|
+
# Return the result
|
|
53
|
+
result
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Sets a human-friendly descrition of the plugin.
|
|
57
|
+
#
|
|
58
|
+
# @param [String] value Description of the plugin.
|
|
59
|
+
# @return [String] Description of the plugin.
|
|
60
|
+
def self.description(value=UNSET_VALUE)
|
|
61
|
+
get_or_set(:description, value)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Registers a callback to be called when a specific action sequence
|
|
65
|
+
# is run. This allows plugin authors to hook into things like VM
|
|
66
|
+
# bootup, VM provisioning, etc.
|
|
67
|
+
#
|
|
68
|
+
# @param [String] name Name of the action.
|
|
69
|
+
# @param [Symbol] hook_name The location to hook. If this isn't
|
|
70
|
+
# set, every middleware action is hooked.
|
|
71
|
+
# @return [Array] List of the hooks for the given action.
|
|
72
|
+
def self.action_hook(name, hook_name=nil, &block)
|
|
73
|
+
# The name is currently not used but we want it for the future.
|
|
74
|
+
|
|
75
|
+
hook_name ||= ALL_ACTIONS
|
|
76
|
+
components.action_hooks[hook_name] << block
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Defines additional command line commands available by key. The key
|
|
80
|
+
# becomes the subcommand, so if you register a command "foo" then
|
|
81
|
+
# "vagrant foo" becomes available.
|
|
82
|
+
#
|
|
83
|
+
# @param [String] name Subcommand key.
|
|
84
|
+
def self.command(name=UNSET_VALUE, &block)
|
|
85
|
+
data[:command] ||= Registry.new
|
|
86
|
+
|
|
87
|
+
if name != UNSET_VALUE
|
|
88
|
+
# Validate the name of the command
|
|
89
|
+
if name.to_s !~ /^[-a-z0-9]+$/i
|
|
90
|
+
raise InvalidCommandName, "Commands can only contain letters, numbers, and hyphens"
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Register a new command class only if a name was given.
|
|
94
|
+
data[:command].register(name.to_sym, &block)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Return the registry
|
|
98
|
+
data[:command]
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Defines additional communicators to be available. Communicators
|
|
102
|
+
# should be returned by a block passed to this method. This is done
|
|
103
|
+
# to ensure that the class is lazy loaded, so if your class inherits
|
|
104
|
+
# from or uses any Vagrant internals specific to Vagrant 1.0, then
|
|
105
|
+
# the plugin can still be defined without breaking anything in future
|
|
106
|
+
# versions of Vagrant.
|
|
107
|
+
#
|
|
108
|
+
# @param [String] name Communicator name.
|
|
109
|
+
def self.communicator(name=UNSET_VALUE, &block)
|
|
110
|
+
data[:communicator] ||= Registry.new
|
|
111
|
+
|
|
112
|
+
# Register a new communicator class only if a name was given.
|
|
113
|
+
data[:communicator].register(name.to_sym, &block) if name != UNSET_VALUE
|
|
114
|
+
|
|
115
|
+
# Return the registry
|
|
116
|
+
data[:communicator]
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Defines additional configuration keys to be available in the
|
|
120
|
+
# Vagrantfile. The configuration class should be returned by a
|
|
121
|
+
# block passed to this method. This is done to ensure that the class
|
|
122
|
+
# is lazy loaded, so if your class inherits from any classes that
|
|
123
|
+
# are specific to Vagrant 1.0, then the plugin can still be defined
|
|
124
|
+
# without breaking anything in future versions of Vagrant.
|
|
125
|
+
#
|
|
126
|
+
# @param [String] name Configuration key.
|
|
127
|
+
# XXX: Document options hash
|
|
128
|
+
def self.config(name, scope=nil, &block)
|
|
129
|
+
scope ||= :top
|
|
130
|
+
components.configs[scope].register(name.to_sym, &block)
|
|
131
|
+
nil
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Defines an additionally available guest implementation with
|
|
135
|
+
# the given key.
|
|
136
|
+
#
|
|
137
|
+
# @param [String] name Name of the guest.
|
|
138
|
+
def self.guest(name=UNSET_VALUE, &block)
|
|
139
|
+
data[:guests] ||= Registry.new
|
|
140
|
+
|
|
141
|
+
# Register a new guest class only if a name was given
|
|
142
|
+
data[:guests].register(name.to_sym, &block) if name != UNSET_VALUE
|
|
143
|
+
|
|
144
|
+
# Return the registry
|
|
145
|
+
data[:guests]
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Defines an additionally available host implementation with
|
|
149
|
+
# the given key.
|
|
150
|
+
#
|
|
151
|
+
# @param [String] name Name of the host.
|
|
152
|
+
def self.host(name=UNSET_VALUE, &block)
|
|
153
|
+
data[:hosts] ||= Registry.new
|
|
154
|
+
|
|
155
|
+
# Register a new host class only if a name was given
|
|
156
|
+
data[:hosts].register(name.to_sym, &block) if name != UNSET_VALUE
|
|
157
|
+
|
|
158
|
+
# Return the registry
|
|
159
|
+
data[:hosts]
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# Registers additional providers to be available.
|
|
163
|
+
#
|
|
164
|
+
# @param [Symbol] name Name of the provider.
|
|
165
|
+
def self.provider(name=UNSET_VALUE, &block)
|
|
166
|
+
data[:providers] ||= Registry.new
|
|
167
|
+
|
|
168
|
+
# Register a new provider class only if a name was given
|
|
169
|
+
data[:providers].register(name.to_sym, &block) if name != UNSET_VALUE
|
|
170
|
+
|
|
171
|
+
# Return the registry
|
|
172
|
+
data[:providers]
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# Registers additional provisioners to be available.
|
|
176
|
+
#
|
|
177
|
+
# @param [String] name Name of the provisioner.
|
|
178
|
+
def self.provisioner(name=UNSET_VALUE, &block)
|
|
179
|
+
data[:provisioners] ||= Registry.new
|
|
180
|
+
|
|
181
|
+
# Register a new provisioner class only if a name was given
|
|
182
|
+
data[:provisioners].register(name.to_sym, &block) if name != UNSET_VALUE
|
|
183
|
+
|
|
184
|
+
# Return the registry
|
|
185
|
+
data[:provisioners]
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Returns the internal data associated with this plugin. This
|
|
189
|
+
# should NOT be called by the general public.
|
|
190
|
+
#
|
|
191
|
+
# @return [Hash]
|
|
192
|
+
def self.data
|
|
193
|
+
@data ||= {}
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
protected
|
|
197
|
+
|
|
198
|
+
# Sentinel value denoting that a value has not been set.
|
|
199
|
+
UNSET_VALUE = Object.new
|
|
200
|
+
|
|
201
|
+
# Helper method that will set a value if a value is given, or otherwise
|
|
202
|
+
# return the already set value.
|
|
203
|
+
#
|
|
204
|
+
# @param [Symbol] key Key for the data
|
|
205
|
+
# @param [Object] value Value to store.
|
|
206
|
+
# @return [Object] Stored value.
|
|
207
|
+
def self.get_or_set(key, value=UNSET_VALUE)
|
|
208
|
+
# If no value is to be set, then return the value we have already set
|
|
209
|
+
return data[key] if value.eql?(UNSET_VALUE)
|
|
210
|
+
|
|
211
|
+
# Otherwise set the value
|
|
212
|
+
data[key] = value
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|