tnargav 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +31 -0
- data/.gitsetup.yml +5 -0
- data/.travis.yml +7 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +1067 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/README.md +89 -0
- data/Rakefile +18 -0
- data/bin/vagrant +106 -0
- data/config/default.rb +36 -0
- data/contrib/README.md +12 -0
- data/contrib/bash/completion.sh +3 -0
- data/contrib/emacs/vagrant.el +8 -0
- data/contrib/vim/vagrantfile.vim +9 -0
- data/keys/README.md +17 -0
- data/keys/vagrant +27 -0
- data/keys/vagrant.pub +1 -0
- data/lib/vagrant/action/builder.rb +174 -0
- data/lib/vagrant/action/builtin/box_add.rb +81 -0
- data/lib/vagrant/action/builtin/call.rb +67 -0
- data/lib/vagrant/action/builtin/config_validate.rb +30 -0
- data/lib/vagrant/action/builtin/confirm.rb +38 -0
- data/lib/vagrant/action/builtin/destroy_confirm.rb +21 -0
- data/lib/vagrant/action/builtin/env_set.rb +24 -0
- data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
- data/lib/vagrant/action/builtin/handle_box_url.rb +77 -0
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +134 -0
- data/lib/vagrant/action/builtin/lock.rb +57 -0
- data/lib/vagrant/action/builtin/nfs.rb +118 -0
- data/lib/vagrant/action/builtin/provision.rb +70 -0
- data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
- data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
- data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
- data/lib/vagrant/action/general/package.rb +103 -0
- data/lib/vagrant/action/hook.rb +107 -0
- data/lib/vagrant/action/runner.rb +69 -0
- data/lib/vagrant/action/warden.rb +103 -0
- data/lib/vagrant/action.rb +43 -0
- data/lib/vagrant/batch_action.rb +113 -0
- data/lib/vagrant/box.rb +97 -0
- data/lib/vagrant/box_collection.rb +375 -0
- data/lib/vagrant/cli.rb +82 -0
- data/lib/vagrant/config/loader.rb +222 -0
- data/lib/vagrant/config/v1/dummy_config.rb +13 -0
- data/lib/vagrant/config/v1/loader.rb +105 -0
- data/lib/vagrant/config/v1/root.rb +60 -0
- data/lib/vagrant/config/v1.rb +9 -0
- data/lib/vagrant/config/v2/dummy_config.rb +13 -0
- data/lib/vagrant/config/v2/loader.rb +141 -0
- data/lib/vagrant/config/v2/root.rb +105 -0
- data/lib/vagrant/config/v2/util.rb +21 -0
- data/lib/vagrant/config/v2.rb +9 -0
- data/lib/vagrant/config/version_base.rb +80 -0
- data/lib/vagrant/config.rb +61 -0
- data/lib/vagrant/environment.rb +843 -0
- data/lib/vagrant/errors.rb +570 -0
- data/lib/vagrant/guest.rb +163 -0
- data/lib/vagrant/hosts.rb +28 -0
- data/lib/vagrant/machine.rb +325 -0
- data/lib/vagrant/machine_state.rb +45 -0
- data/lib/vagrant/plugin/v1/command.rb +169 -0
- data/lib/vagrant/plugin/v1/communicator.rb +98 -0
- data/lib/vagrant/plugin/v1/config.rb +112 -0
- data/lib/vagrant/plugin/v1/errors.rb +15 -0
- data/lib/vagrant/plugin/v1/guest.rb +92 -0
- data/lib/vagrant/plugin/v1/host.rb +66 -0
- data/lib/vagrant/plugin/v1/manager.rb +131 -0
- data/lib/vagrant/plugin/v1/plugin.rb +229 -0
- data/lib/vagrant/plugin/v1/provider.rb +68 -0
- data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
- data/lib/vagrant/plugin/v1.rb +19 -0
- data/lib/vagrant/plugin/v2/command.rb +234 -0
- data/lib/vagrant/plugin/v2/communicator.rb +98 -0
- data/lib/vagrant/plugin/v2/components.rb +47 -0
- data/lib/vagrant/plugin/v2/config.rb +136 -0
- data/lib/vagrant/plugin/v2/errors.rb +15 -0
- data/lib/vagrant/plugin/v2/guest.rb +78 -0
- data/lib/vagrant/plugin/v2/host.rb +66 -0
- data/lib/vagrant/plugin/v2/manager.rb +173 -0
- data/lib/vagrant/plugin/v2/plugin.rb +226 -0
- data/lib/vagrant/plugin/v2/provider.rb +69 -0
- data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
- data/lib/vagrant/plugin/v2.rb +22 -0
- data/lib/vagrant/plugin.rb +6 -0
- data/lib/vagrant/registry.rb +78 -0
- data/lib/vagrant/ui.rb +215 -0
- data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/counter.rb +24 -0
- data/lib/vagrant/util/downloader.rb +146 -0
- data/lib/vagrant/util/file_checksum.rb +38 -0
- data/lib/vagrant/util/file_mode.rb +12 -0
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/is_port_open.rb +38 -0
- data/lib/vagrant/util/line_ending_helpers.rb +14 -0
- data/lib/vagrant/util/network_ip.rb +28 -0
- data/lib/vagrant/util/platform.rb +58 -0
- data/lib/vagrant/util/retryable.rb +31 -0
- data/lib/vagrant/util/safe_chdir.rb +33 -0
- data/lib/vagrant/util/safe_exec.rb +36 -0
- data/lib/vagrant/util/safe_puts.rb +31 -0
- data/lib/vagrant/util/scoped_hash_override.rb +45 -0
- data/lib/vagrant/util/ssh.rb +150 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/string_block_editor.rb +77 -0
- data/lib/vagrant/util/subprocess.rb +273 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/util/which.rb +43 -0
- data/lib/vagrant/util.rb +12 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant.rb +258 -0
- data/plugins/README.md +5 -0
- data/plugins/commands/box/command/add.rb +51 -0
- data/plugins/commands/box/command/list.rb +41 -0
- data/plugins/commands/box/command/remove.rb +37 -0
- data/plugins/commands/box/command/repackage.rb +43 -0
- data/plugins/commands/box/command/root.rb +75 -0
- data/plugins/commands/box/plugin.rb +15 -0
- data/plugins/commands/destroy/command.rb +31 -0
- data/plugins/commands/destroy/plugin.rb +18 -0
- data/plugins/commands/halt/command.rb +33 -0
- data/plugins/commands/halt/plugin.rb +18 -0
- data/plugins/commands/init/command.rb +40 -0
- data/plugins/commands/init/plugin.rb +18 -0
- data/plugins/commands/package/command.rb +83 -0
- data/plugins/commands/package/plugin.rb +18 -0
- data/plugins/commands/plugin/action/bundler_check.rb +25 -0
- data/plugins/commands/plugin/action/install_gem.rb +81 -0
- data/plugins/commands/plugin/action/license_plugin.rb +54 -0
- data/plugins/commands/plugin/action/list_plugins.rb +54 -0
- data/plugins/commands/plugin/action/prune_gems.rb +149 -0
- data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
- data/plugins/commands/plugin/action.rb +52 -0
- data/plugins/commands/plugin/command/base.rb +22 -0
- data/plugins/commands/plugin/command/install.rb +58 -0
- data/plugins/commands/plugin/command/license.rb +31 -0
- data/plugins/commands/plugin/command/list.rb +28 -0
- data/plugins/commands/plugin/command/root.rb +75 -0
- data/plugins/commands/plugin/command/uninstall.rb +28 -0
- data/plugins/commands/plugin/gem_helper.rb +74 -0
- data/plugins/commands/plugin/plugin.rb +22 -0
- data/plugins/commands/plugin/state_file.rb +57 -0
- data/plugins/commands/provision/command.rb +34 -0
- data/plugins/commands/provision/plugin.rb +18 -0
- data/plugins/commands/reload/command.rb +37 -0
- data/plugins/commands/reload/plugin.rb +18 -0
- data/plugins/commands/resume/command.rb +25 -0
- data/plugins/commands/resume/plugin.rb +17 -0
- data/plugins/commands/ssh/command.rb +63 -0
- data/plugins/commands/ssh/plugin.rb +17 -0
- data/plugins/commands/ssh_config/command.rb +49 -0
- data/plugins/commands/ssh_config/plugin.rb +18 -0
- data/plugins/commands/status/command.rb +39 -0
- data/plugins/commands/status/plugin.rb +18 -0
- data/plugins/commands/suspend/command.rb +25 -0
- data/plugins/commands/suspend/plugin.rb +18 -0
- data/plugins/commands/up/command.rb +57 -0
- data/plugins/commands/up/plugin.rb +17 -0
- data/plugins/commands/up/start_mixins.rb +26 -0
- data/plugins/communicators/ssh/communicator.rb +342 -0
- data/plugins/communicators/ssh/plugin.rb +19 -0
- data/plugins/guests/arch/cap/change_host_name.rb +18 -0
- data/plugins/guests/arch/cap/configure_networks.rb +23 -0
- data/plugins/guests/arch/guest.rb +11 -0
- data/plugins/guests/arch/plugin.rb +25 -0
- data/plugins/guests/debian/cap/change_host_name.rb +18 -0
- data/plugins/guests/debian/cap/configure_networks.rb +61 -0
- data/plugins/guests/debian/guest.rb +9 -0
- data/plugins/guests/debian/plugin.rb +25 -0
- data/plugins/guests/fedora/cap/configure_networks.rb +59 -0
- data/plugins/guests/fedora/cap/network_scripts_dir.rb +15 -0
- data/plugins/guests/fedora/guest.rb +11 -0
- data/plugins/guests/fedora/plugin.rb +25 -0
- data/plugins/guests/freebsd/cap/change_host_name.rb +14 -0
- data/plugins/guests/freebsd/cap/configure_networks.rb +39 -0
- data/plugins/guests/freebsd/cap/halt.rb +16 -0
- data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +14 -0
- data/plugins/guests/freebsd/guest.rb +14 -0
- data/plugins/guests/freebsd/plugin.rb +35 -0
- data/plugins/guests/gentoo/cap/change_host_name.rb +17 -0
- data/plugins/guests/gentoo/cap/configure_networks.rb +43 -0
- data/plugins/guests/gentoo/guest.rb +9 -0
- data/plugins/guests/gentoo/plugin.rb +25 -0
- data/plugins/guests/linux/cap/halt.rb +16 -0
- data/plugins/guests/linux/cap/mount_nfs.rb +30 -0
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +40 -0
- data/plugins/guests/linux/cap/read_ip_address.rb +17 -0
- data/plugins/guests/linux/cap/shell_expand_guest_path.rb +26 -0
- data/plugins/guests/linux/guest.rb +11 -0
- data/plugins/guests/linux/plugin.rb +40 -0
- data/plugins/guests/openbsd/cap/halt.rb +16 -0
- data/plugins/guests/openbsd/guest.rb +11 -0
- data/plugins/guests/openbsd/plugin.rb +20 -0
- data/plugins/guests/pld/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/pld/guest.rb +11 -0
- data/plugins/guests/pld/plugin.rb +20 -0
- data/plugins/guests/redhat/cap/change_host_name.rb +18 -0
- data/plugins/guests/redhat/cap/configure_networks.rb +60 -0
- data/plugins/guests/redhat/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/redhat/guest.rb +11 -0
- data/plugins/guests/redhat/plugin.rb +30 -0
- data/plugins/guests/solaris/cap/change_host_name.rb +17 -0
- data/plugins/guests/solaris/cap/configure_networks.rb +25 -0
- data/plugins/guests/solaris/cap/halt.rb +21 -0
- data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +28 -0
- data/plugins/guests/solaris/config.rb +18 -0
- data/plugins/guests/solaris/guest.rb +14 -0
- data/plugins/guests/solaris/plugin.rb +40 -0
- data/plugins/guests/suse/cap/change_host_name.rb +18 -0
- data/plugins/guests/suse/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/suse/guest.rb +11 -0
- data/plugins/guests/suse/plugin.rb +25 -0
- data/plugins/guests/ubuntu/cap/change_host_name.rb +23 -0
- data/plugins/guests/ubuntu/guest.rb +32 -0
- data/plugins/guests/ubuntu/plugin.rb +20 -0
- data/plugins/hosts/arch/host.rb +68 -0
- data/plugins/hosts/arch/plugin.rb +15 -0
- data/plugins/hosts/bsd/host.rb +102 -0
- data/plugins/hosts/bsd/plugin.rb +15 -0
- data/plugins/hosts/fedora/host.rb +51 -0
- data/plugins/hosts/fedora/plugin.rb +15 -0
- data/plugins/hosts/freebsd/host.rb +43 -0
- data/plugins/hosts/freebsd/plugin.rb +15 -0
- data/plugins/hosts/gentoo/host.rb +24 -0
- data/plugins/hosts/gentoo/plugin.rb +15 -0
- data/plugins/hosts/linux/host.rb +95 -0
- data/plugins/hosts/linux/plugin.rb +15 -0
- data/plugins/hosts/opensuse/host.rb +34 -0
- data/plugins/hosts/opensuse/plugin.rb +15 -0
- data/plugins/hosts/windows/host.rb +17 -0
- data/plugins/hosts/windows/plugin.rb +15 -0
- data/plugins/kernel_v1/config/nfs.rb +20 -0
- data/plugins/kernel_v1/config/package.rb +17 -0
- data/plugins/kernel_v1/config/ssh.rb +46 -0
- data/plugins/kernel_v1/config/vagrant.rb +31 -0
- data/plugins/kernel_v1/config/vm.rb +184 -0
- data/plugins/kernel_v1/plugin.rb +44 -0
- data/plugins/kernel_v2/config/nfs.rb +14 -0
- data/plugins/kernel_v2/config/package.rb +13 -0
- data/plugins/kernel_v2/config/ssh.rb +76 -0
- data/plugins/kernel_v2/config/ssh_connect.rb +40 -0
- data/plugins/kernel_v2/config/vagrant.rb +13 -0
- data/plugins/kernel_v2/config/vm.rb +416 -0
- data/plugins/kernel_v2/config/vm_provisioner.rb +55 -0
- data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
- data/plugins/kernel_v2/plugin.rb +44 -0
- data/plugins/providers/virtualbox/action/boot.rb +49 -0
- data/plugins/providers/virtualbox/action/check_accessible.rb +23 -0
- data/plugins/providers/virtualbox/action/check_created.rb +21 -0
- data/plugins/providers/virtualbox/action/check_guest_additions.rb +45 -0
- data/plugins/providers/virtualbox/action/check_running.rb +21 -0
- data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
- data/plugins/providers/virtualbox/action/clean_machine_folder.rb +43 -0
- data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +18 -0
- data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +31 -0
- data/plugins/providers/virtualbox/action/clear_shared_folders.rb +17 -0
- data/plugins/providers/virtualbox/action/created.rb +20 -0
- data/plugins/providers/virtualbox/action/customize.rb +36 -0
- data/plugins/providers/virtualbox/action/destroy.rb +19 -0
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
- data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
- data/plugins/providers/virtualbox/action/export.rb +57 -0
- data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
- data/plugins/providers/virtualbox/action/forward_ports.rb +87 -0
- data/plugins/providers/virtualbox/action/import.rb +51 -0
- data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
- data/plugins/providers/virtualbox/action/is_running.rb +20 -0
- data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
- data/plugins/providers/virtualbox/action/match_mac_address.rb +21 -0
- data/plugins/providers/virtualbox/action/message_already_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
- data/plugins/providers/virtualbox/action/network.rb +410 -0
- data/plugins/providers/virtualbox/action/package.rb +20 -0
- data/plugins/providers/virtualbox/action/package_vagrantfile.rb +33 -0
- data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +64 -0
- data/plugins/providers/virtualbox/action/prune_nfs_exports.rb +20 -0
- data/plugins/providers/virtualbox/action/resume.rb +25 -0
- data/plugins/providers/virtualbox/action/sane_defaults.rb +91 -0
- data/plugins/providers/virtualbox/action/set_name.rb +40 -0
- data/plugins/providers/virtualbox/action/setup_package_files.rb +51 -0
- data/plugins/providers/virtualbox/action/share_folders.rb +128 -0
- data/plugins/providers/virtualbox/action/suspend.rb +20 -0
- data/plugins/providers/virtualbox/action.rb +311 -0
- data/plugins/providers/virtualbox/config.rb +86 -0
- data/plugins/providers/virtualbox/driver/base.rb +360 -0
- data/plugins/providers/virtualbox/driver/meta.rb +142 -0
- data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_2.rb +482 -0
- data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
- data/plugins/providers/virtualbox/plugin.rb +42 -0
- data/plugins/providers/virtualbox/provider.rb +92 -0
- data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
- data/plugins/provisioners/ansible/config.rb +72 -0
- data/plugins/provisioners/ansible/plugin.rb +23 -0
- data/plugins/provisioners/ansible/provisioner.rb +45 -0
- data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +19 -0
- data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +14 -0
- data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +34 -0
- data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +24 -0
- data/plugins/provisioners/cfengine/config.rb +120 -0
- data/plugins/provisioners/cfengine/plugin.rb +42 -0
- data/plugins/provisioners/cfengine/provisioner.rb +136 -0
- data/plugins/provisioners/chef/config/base.rb +85 -0
- data/plugins/provisioners/chef/config/chef_client.rb +57 -0
- data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
- data/plugins/provisioners/chef/plugin.rb +33 -0
- data/plugins/provisioners/chef/provisioner/base.rb +93 -0
- data/plugins/provisioners/chef/provisioner/chef_client.rb +107 -0
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +192 -0
- data/plugins/provisioners/puppet/config/puppet.rb +70 -0
- data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
- data/plugins/provisioners/puppet/plugin.rb +33 -0
- data/plugins/provisioners/puppet/provisioner/puppet.rb +117 -0
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
- data/plugins/provisioners/shell/config.rb +56 -0
- data/plugins/provisioners/shell/plugin.rb +23 -0
- data/plugins/provisioners/shell/provisioner.rb +86 -0
- data/tasks/acceptance.rake +113 -0
- data/tasks/bundler.rake +3 -0
- data/tasks/test.rake +20 -0
- data/templates/commands/init/Vagrantfile.erb +111 -0
- data/templates/commands/ssh_config/config.erb +16 -0
- data/templates/config/messages.erb +14 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/guests/arch/network_dhcp.erb +4 -0
- data/templates/guests/arch/network_static.erb +6 -0
- data/templates/guests/debian/network_dhcp.erb +11 -0
- data/templates/guests/debian/network_static.erb +7 -0
- data/templates/guests/fedora/network_dhcp.erb +6 -0
- data/templates/guests/fedora/network_static.erb +13 -0
- data/templates/guests/freebsd/network_dhcp.erb +3 -0
- data/templates/guests/freebsd/network_static.erb +3 -0
- data/templates/guests/gentoo/network_dhcp.erb +4 -0
- data/templates/guests/gentoo/network_static.erb +4 -0
- data/templates/guests/redhat/network_dhcp.erb +6 -0
- data/templates/guests/redhat/network_static.erb +8 -0
- data/templates/locales/en.yml +1126 -0
- data/templates/nfs/exports.erb +5 -0
- data/templates/nfs/exports_freebsd.erb +5 -0
- data/templates/nfs/exports_linux.erb +5 -0
- data/templates/package_Vagrantfile.erb +11 -0
- data/templates/provisioners/chef_client/client.erb +32 -0
- data/templates/provisioners/chef_solo/solo.erb +25 -0
- data/templates/rgloader.rb +9 -0
- data/test/acceptance/base.rb +48 -0
- data/test/acceptance/box_test.rb +99 -0
- data/test/acceptance/destroy_test.rb +37 -0
- data/test/acceptance/halt_test.rb +72 -0
- data/test/acceptance/init_test.rb +33 -0
- data/test/acceptance/networking/host_only_test.rb +37 -0
- data/test/acceptance/networking/port_forward_test.rb +125 -0
- data/test/acceptance/package_test.rb +46 -0
- data/test/acceptance/provisioning/basic_test.rb +61 -0
- data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
- data/test/acceptance/provisioning/shell_test.rb +53 -0
- data/test/acceptance/resume_test.rb +17 -0
- data/test/acceptance/shared_folders_test.rb +84 -0
- data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
- data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
- data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/ssh_test.rb +46 -0
- data/test/acceptance/support/config.rb +42 -0
- data/test/acceptance/support/isolated_environment.rb +118 -0
- data/test/acceptance/support/matchers/have_color.rb +9 -0
- data/test/acceptance/support/matchers/match_output.rb +14 -0
- data/test/acceptance/support/matchers/succeed.rb +14 -0
- data/test/acceptance/support/network_tests.rb +29 -0
- data/test/acceptance/support/output.rb +95 -0
- data/test/acceptance/support/shared/base_context.rb +72 -0
- data/test/acceptance/support/shared/command_examples.rb +33 -0
- data/test/acceptance/support/virtualbox.rb +36 -0
- data/test/acceptance/suspend_test.rb +56 -0
- data/test/acceptance/up_basic_test.rb +33 -0
- data/test/acceptance/up_with_box_url.rb +40 -0
- data/test/acceptance/vagrant_test.rb +47 -0
- data/test/acceptance/version_test.rb +15 -0
- data/test/config/acceptance_boxes.yml +7 -0
- data/test/support/isolated_environment.rb +46 -0
- data/test/support/tempdir.rb +43 -0
- data/test/unit/base.rb +27 -0
- data/test/unit/support/dummy_provider.rb +16 -0
- data/test/unit/support/isolated_environment.rb +179 -0
- data/test/unit/support/shared/base_context.rb +104 -0
- data/test/unit/vagrant/action/builder_test.rb +242 -0
- data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
- data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
- data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
- data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
- data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
- data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
- data/test/unit/vagrant/action/hook_test.rb +120 -0
- data/test/unit/vagrant/action/runner_test.rb +71 -0
- data/test/unit/vagrant/action/warden_test.rb +92 -0
- data/test/unit/vagrant/batch_action_test.rb +36 -0
- data/test/unit/vagrant/box_collection_test.rb +237 -0
- data/test/unit/vagrant/box_test.rb +122 -0
- data/test/unit/vagrant/cli_test.rb +27 -0
- data/test/unit/vagrant/config/loader_test.rb +184 -0
- data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
- data/test/unit/vagrant/config/v1/root_test.rb +40 -0
- data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
- data/test/unit/vagrant/config/v2/root_test.rb +97 -0
- data/test/unit/vagrant/config/v2/util_test.rb +21 -0
- data/test/unit/vagrant/config_test.rb +66 -0
- data/test/unit/vagrant/environment_test.rb +721 -0
- data/test/unit/vagrant/guest_test.rb +166 -0
- data/test/unit/vagrant/hosts_test.rb +37 -0
- data/test/unit/vagrant/machine_state_test.rb +26 -0
- data/test/unit/vagrant/machine_test.rb +384 -0
- data/test/unit/vagrant/plugin/v1/command_test.rb +143 -0
- data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
- data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
- data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
- data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
- data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
- data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
- data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
- data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v2/manager_test.rb +174 -0
- data/test/unit/vagrant/plugin/v2/plugin_test.rb +305 -0
- data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
- data/test/unit/vagrant/registry_test.rb +128 -0
- data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
- data/test/unit/vagrant/util/downloader_test.rb +57 -0
- data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
- data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
- data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
- data/test/unit/vagrant/util/network_ip_test.rb +17 -0
- data/test/unit/vagrant/util/retryable_test.rb +106 -0
- data/test/unit/vagrant/util/safe_chdir_test.rb +43 -0
- data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
- data/test/unit/vagrant/util/ssh_test.rb +30 -0
- data/test/unit/vagrant/util/string_block_editor_test.rb +106 -0
- data/test/unit/vagrant/util/which_test.rb +43 -0
- data/test/unit/vagrant_test.rb +56 -0
- data/tnargav.gemspec +69 -0
- data/vagrant.gemspec +69 -0
- metadata +730 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Plugin
|
|
3
|
+
module V2
|
|
4
|
+
# This is the container class for the components of a single plugin.
|
|
5
|
+
# This allows us to separate the plugin class which defines the
|
|
6
|
+
# components, and the actual container of those components. This
|
|
7
|
+
# removes a bit of state overhead from the plugin class itself.
|
|
8
|
+
class Components
|
|
9
|
+
# This contains all the action hooks.
|
|
10
|
+
#
|
|
11
|
+
# @return [Hash<Symbol, Array>]
|
|
12
|
+
attr_reader :action_hooks
|
|
13
|
+
|
|
14
|
+
# This contains all the configuration plugins by scope.
|
|
15
|
+
#
|
|
16
|
+
# @return [Hash<Symbol, Registry>]
|
|
17
|
+
attr_reader :configs
|
|
18
|
+
|
|
19
|
+
# This contains all the guests and their parents.
|
|
20
|
+
#
|
|
21
|
+
# @return [Registry<Symbol, Array<Class, Symbol>>]
|
|
22
|
+
attr_reader :guests
|
|
23
|
+
|
|
24
|
+
# This contains all the registered guest capabilities.
|
|
25
|
+
#
|
|
26
|
+
# @return [Hash<Symbol, Registry>]
|
|
27
|
+
attr_reader :guest_capabilities
|
|
28
|
+
|
|
29
|
+
# This contains all the provider plugins by name, and returns
|
|
30
|
+
# the provider class and options.
|
|
31
|
+
#
|
|
32
|
+
# @return [Hash<Symbol, Registry>]
|
|
33
|
+
attr_reader :providers
|
|
34
|
+
|
|
35
|
+
def initialize
|
|
36
|
+
# The action hooks hash defaults to []
|
|
37
|
+
@action_hooks = Hash.new { |h, k| h[k] = [] }
|
|
38
|
+
|
|
39
|
+
@configs = Hash.new { |h, k| h[k] = Registry.new }
|
|
40
|
+
@guests = Registry.new
|
|
41
|
+
@guest_capabilities = Hash.new { |h, k| h[k] = Registry.new }
|
|
42
|
+
@providers = Registry.new
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
require "set"
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
module Plugin
|
|
5
|
+
module V2
|
|
6
|
+
# This is the base class for a configuration key defined for
|
|
7
|
+
# V2. Any configuration key plugins for V2 should inherit from this
|
|
8
|
+
# class.
|
|
9
|
+
class Config
|
|
10
|
+
# This constant represents an unset value. This is useful so it is
|
|
11
|
+
# possible to know the difference between a configuration value that
|
|
12
|
+
# was never set, and a value that is nil (explicitly). Best practice
|
|
13
|
+
# is to initialize all variables to this value, then the {#merge}
|
|
14
|
+
# method below will "just work" in many cases.
|
|
15
|
+
UNSET_VALUE = Object.new
|
|
16
|
+
|
|
17
|
+
# This is called as a last-minute hook that allows the configuration
|
|
18
|
+
# object to finalize itself before it will be put into use. This is
|
|
19
|
+
# a useful place to do some defaults in the case the user didn't
|
|
20
|
+
# configure something or so on.
|
|
21
|
+
#
|
|
22
|
+
# An example of where this sort of thing is used or has been used:
|
|
23
|
+
# the "vm" configuration key uses this to make sure that at least
|
|
24
|
+
# one sub-VM has been defined: the default VM.
|
|
25
|
+
#
|
|
26
|
+
# The configuration object is expected to mutate itself.
|
|
27
|
+
def finalize!
|
|
28
|
+
# Default implementation is to do nothing.
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Merge another configuration object into this one. This assumes that
|
|
32
|
+
# the other object is the same class as this one. This should not
|
|
33
|
+
# mutate this object, but instead should return a new, merged object.
|
|
34
|
+
#
|
|
35
|
+
# The default implementation will simply iterate over the instance
|
|
36
|
+
# variables and merge them together, with this object overriding
|
|
37
|
+
# any conflicting instance variables of the older object. Instance
|
|
38
|
+
# variables starting with "__" (double underscores) will be ignored.
|
|
39
|
+
# This lets you set some sort of instance-specific state on your
|
|
40
|
+
# configuration keys without them being merged together later.
|
|
41
|
+
#
|
|
42
|
+
# @param [Object] other The other configuration object to merge from,
|
|
43
|
+
# this must be the same type of object as this one.
|
|
44
|
+
# @return [Object] The merged object.
|
|
45
|
+
def merge(other)
|
|
46
|
+
result = self.class.new
|
|
47
|
+
|
|
48
|
+
# Set all of our instance variables on the new class
|
|
49
|
+
[self, other].each do |obj|
|
|
50
|
+
obj.instance_variables.each do |key|
|
|
51
|
+
# Ignore keys that start with a double underscore. This allows
|
|
52
|
+
# configuration classes to still hold around internal state
|
|
53
|
+
# that isn't propagated.
|
|
54
|
+
if !key.to_s.start_with?("@__")
|
|
55
|
+
# Don't set the value if it is the unset value, either.
|
|
56
|
+
value = obj.instance_variable_get(key)
|
|
57
|
+
result.instance_variable_set(key, value) if value != UNSET_VALUE
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Persist through the set of invalid methods
|
|
63
|
+
this_invalid = @__invalid_methods || Set.new
|
|
64
|
+
other_invalid = other.instance_variable_get(:"@__invalid_methods") || Set.new
|
|
65
|
+
result.instance_variable_set(:"@__invalid_methods", this_invalid + other_invalid)
|
|
66
|
+
|
|
67
|
+
result
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Capture all bad configuration calls and save them for an error
|
|
71
|
+
# message later during validation.
|
|
72
|
+
def method_missing(name, *args, &block)
|
|
73
|
+
name = name.to_s
|
|
74
|
+
name = name[0...-1] if name.end_with?("=")
|
|
75
|
+
|
|
76
|
+
@__invalid_methods ||= Set.new
|
|
77
|
+
@__invalid_methods.add(name)
|
|
78
|
+
|
|
79
|
+
# Return the dummy object so that anything else works
|
|
80
|
+
::Vagrant::Config::V2::DummyConfig.new
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Allows setting options from a hash. By default this simply calls
|
|
84
|
+
# the `#{key}=` method on the config class with the value, which is
|
|
85
|
+
# the expected behavior most of the time.
|
|
86
|
+
#
|
|
87
|
+
# This is expected to mutate itself.
|
|
88
|
+
#
|
|
89
|
+
# @param [Hash] options A hash of options to set on this configuration
|
|
90
|
+
# key.
|
|
91
|
+
def set_options(options)
|
|
92
|
+
options.each do |key, value|
|
|
93
|
+
send("#{key}=", value)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Converts this configuration object to JSON.
|
|
98
|
+
def to_json(*a)
|
|
99
|
+
instance_variables_hash.to_json(*a)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# A default to_s implementation.
|
|
103
|
+
def to_s
|
|
104
|
+
self.class.to_s
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Returns the instance variables as a hash of key-value pairs.
|
|
108
|
+
def instance_variables_hash
|
|
109
|
+
instance_variables.inject({}) do |acc, iv|
|
|
110
|
+
acc[iv.to_s[1..-1]] = instance_variable_get(iv)
|
|
111
|
+
acc
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Called after the configuration is finalized and loaded to validate
|
|
116
|
+
# this object.
|
|
117
|
+
#
|
|
118
|
+
# @param [Machine] machine Access to the machine that is being
|
|
119
|
+
# validated.
|
|
120
|
+
# @return [Hash]
|
|
121
|
+
def validate(machine)
|
|
122
|
+
return { self.to_s => _detected_errors }
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# This returns any automatically detected errors.
|
|
126
|
+
#
|
|
127
|
+
# @return [Array<String>]
|
|
128
|
+
def _detected_errors
|
|
129
|
+
return [] if !@__invalid_methods || @__invalid_methods.empty?
|
|
130
|
+
return [I18n.t("vagrant.config.common.bad_field",
|
|
131
|
+
:fields => @__invalid_methods.to_a.sort.join(", "))]
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -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,78 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Plugin
|
|
3
|
+
module V2
|
|
4
|
+
# A base class for a guest OS. A guest OS is responsible for detecting
|
|
5
|
+
# that the guest operating system running within the machine. The guest
|
|
6
|
+
# can then be extended with various "guest capabilities" which are their
|
|
7
|
+
# own form of plugin.
|
|
8
|
+
#
|
|
9
|
+
# The guest class itself is only responsible for detecting itself,
|
|
10
|
+
# and may provide helpers for the capabilties.
|
|
11
|
+
class Guest
|
|
12
|
+
# This method is called when the machine is booted and has communication
|
|
13
|
+
# capabilities in order to detect whether this guest operating system
|
|
14
|
+
# is running within the machine.
|
|
15
|
+
#
|
|
16
|
+
# @return [Boolean]
|
|
17
|
+
def guest?(machine)
|
|
18
|
+
false
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Halt the machine. This method should gracefully shut down the
|
|
22
|
+
# operating system. This method will cause `vagrant halt` and associated
|
|
23
|
+
# commands to _block_, meaning that if the machine doesn't halt
|
|
24
|
+
# in a reasonable amount of time, this method should just return.
|
|
25
|
+
#
|
|
26
|
+
# If when this method returns, the machine's state isn't "powered_off,"
|
|
27
|
+
# Vagrant will proceed to forcefully shut the machine down.
|
|
28
|
+
def halt
|
|
29
|
+
raise BaseError, :_key => :unsupported_halt
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Mounts a shared folder.
|
|
33
|
+
#
|
|
34
|
+
# This method should create, mount, and properly set permissions
|
|
35
|
+
# on the shared folder. This method should also properly
|
|
36
|
+
# adhere to any configuration values such as `shared_folder_uid`
|
|
37
|
+
# on `config.vm`.
|
|
38
|
+
#
|
|
39
|
+
# @param [String] name The name of the shared folder.
|
|
40
|
+
# @param [String] guestpath The path on the machine which the user
|
|
41
|
+
# wants the folder mounted.
|
|
42
|
+
# @param [Hash] options Additional options for the shared folder
|
|
43
|
+
# which can be honored.
|
|
44
|
+
def mount_shared_folder(name, guestpath, options)
|
|
45
|
+
raise BaseError, :_key => :unsupported_shared_folder
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Mounts a shared folder via NFS. This assumes that the exports
|
|
49
|
+
# via the host are already done.
|
|
50
|
+
def mount_nfs(ip, folders)
|
|
51
|
+
raise BaseError, :_key => :unsupported_nfs
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Configures the given list of networks on the virtual machine.
|
|
55
|
+
#
|
|
56
|
+
# The networks parameter will be an array of hashes where the hashes
|
|
57
|
+
# represent the configuration of a network interface. The structure
|
|
58
|
+
# of the hash will be roughly the following:
|
|
59
|
+
#
|
|
60
|
+
# {
|
|
61
|
+
# :type => :static,
|
|
62
|
+
# :ip => "192.168.33.10",
|
|
63
|
+
# :netmask => "255.255.255.0",
|
|
64
|
+
# :interface => 1
|
|
65
|
+
# }
|
|
66
|
+
#
|
|
67
|
+
def configure_networks(networks)
|
|
68
|
+
raise BaseError, :_key => :unsupported_configure_networks
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Called to change the hostname of the virtual machine.
|
|
72
|
+
def change_host_name(name)
|
|
73
|
+
raise BaseError, :_key => :unsupported_host_name
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
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,173 @@
|
|
|
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.components.guests)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# This returns all the registered guest capabilities.
|
|
76
|
+
#
|
|
77
|
+
# @return [Hash]
|
|
78
|
+
def guest_capabilities
|
|
79
|
+
results = Hash.new { |h, k| h[k] = Registry.new }
|
|
80
|
+
|
|
81
|
+
@registered.each do |plugin|
|
|
82
|
+
plugin.components.guest_capabilities.each do |guest, caps|
|
|
83
|
+
results[guest].merge!(caps)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
results
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# This returns all registered host classes.
|
|
91
|
+
#
|
|
92
|
+
# @return [Hash]
|
|
93
|
+
def hosts
|
|
94
|
+
Registry.new.tap do |result|
|
|
95
|
+
@registered.each do |plugin|
|
|
96
|
+
result.merge!(plugin.host)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# This returns all registered providers.
|
|
102
|
+
#
|
|
103
|
+
# @return [Hash]
|
|
104
|
+
def providers
|
|
105
|
+
Registry.new.tap do |result|
|
|
106
|
+
@registered.each do |plugin|
|
|
107
|
+
result.merge!(plugin.components.providers)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# This returns all the config classes for the various providers.
|
|
113
|
+
#
|
|
114
|
+
# @return [Hash]
|
|
115
|
+
def provider_configs
|
|
116
|
+
Registry.new.tap do |result|
|
|
117
|
+
@registered.each do |plugin|
|
|
118
|
+
result.merge!(plugin.components.configs[:provider])
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# This returns all the config classes for the various provisioners.
|
|
124
|
+
#
|
|
125
|
+
# @return [Registry]
|
|
126
|
+
def provisioner_configs
|
|
127
|
+
Registry.new.tap do |result|
|
|
128
|
+
@registered.each do |plugin|
|
|
129
|
+
result.merge!(plugin.components.configs[:provisioner])
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# This returns all registered provisioners.
|
|
135
|
+
#
|
|
136
|
+
# @return [Hash]
|
|
137
|
+
def provisioners
|
|
138
|
+
Registry.new.tap do |result|
|
|
139
|
+
@registered.each do |plugin|
|
|
140
|
+
result.merge!(plugin.provisioner)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# This registers a plugin. This should _NEVER_ be called by the public
|
|
146
|
+
# and should only be called from within Vagrant. Vagrant will
|
|
147
|
+
# automatically register V2 plugins when a name is set on the
|
|
148
|
+
# plugin.
|
|
149
|
+
def register(plugin)
|
|
150
|
+
if !@registered.include?(plugin)
|
|
151
|
+
@logger.info("Registered plugin: #{plugin.name}")
|
|
152
|
+
@registered << plugin
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# This clears out all the registered plugins. This is only used by
|
|
157
|
+
# unit tests and should not be called directly.
|
|
158
|
+
def reset!
|
|
159
|
+
@registered.clear
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# This unregisters a plugin so that its components will no longer
|
|
163
|
+
# be used. Note that this should only be used for testing purposes.
|
|
164
|
+
def unregister(plugin)
|
|
165
|
+
if @registered.include?(plugin)
|
|
166
|
+
@logger.info("Unregistered: #{plugin.name}")
|
|
167
|
+
@registered.delete(plugin)
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|