tnargav 1.3.5 → 1.3.6
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/lib/vagrant/action.rb +45 -0
- data/lib/vagrant/action/builder.rb +174 -0
- data/lib/vagrant/action/builtin/box_add.rb +92 -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 +39 -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 +82 -0
- data/lib/vagrant/action/builtin/handle_box_url.rb +86 -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/mixin_provisioners.rb +43 -0
- data/lib/vagrant/action/builtin/nfs.rb +128 -0
- data/lib/vagrant/action/builtin/provision.rb +79 -0
- data/lib/vagrant/action/builtin/provisioner_cleanup.rb +35 -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/builtin/wait_for_communicator.rb +84 -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 +104 -0
- data/lib/vagrant/batch_action.rb +113 -0
- data/lib/vagrant/box.rb +97 -0
- data/lib/vagrant/box_collection.rb +393 -0
- data/lib/vagrant/cli.rb +74 -0
- data/lib/vagrant/config.rb +61 -0
- data/lib/vagrant/config/loader.rb +222 -0
- 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 +111 -0
- data/lib/vagrant/config/v2/util.rb +21 -0
- data/lib/vagrant/config/version_base.rb +80 -0
- data/lib/vagrant/environment.rb +819 -0
- data/lib/vagrant/errors.rb +614 -0
- data/lib/vagrant/guest.rb +172 -0
- data/lib/vagrant/hosts.rb +28 -0
- data/lib/vagrant/machine.rb +319 -0
- data/lib/vagrant/machine_state.rb +45 -0
- data/lib/vagrant/plugin.rb +6 -0
- 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 +237 -0
- data/lib/vagrant/plugin/v2/communicator.rb +119 -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 +23 -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 +53 -0
- data/lib/vagrant/registry.rb +78 -0
- data/lib/vagrant/ui.rb +215 -0
- data/lib/vagrant/util.rb +12 -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 +151 -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 +101 -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 +155 -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 +294 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/util/which.rb +43 -0
- data/lib/vagrant/version.rb +6 -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 +57 -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 +36 -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/help/command.rb +12 -0
- data/plugins/commands/help/plugin.rb +17 -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.rb +63 -0
- data/plugins/commands/plugin/action/bundler_check.rb +25 -0
- data/plugins/commands/plugin/action/install_gem.rb +106 -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/plugin_exists_check.rb +26 -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 +41 -0
- data/plugins/commands/plugin/command/license.rb +31 -0
- data/plugins/commands/plugin/command/list.rb +28 -0
- data/plugins/commands/plugin/command/mixin_install_opts.rb +30 -0
- data/plugins/commands/plugin/command/root.rb +80 -0
- data/plugins/commands/plugin/command/uninstall.rb +28 -0
- data/plugins/commands/plugin/command/update.rb +41 -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 +41 -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 +44 -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 +67 -0
- data/plugins/commands/up/plugin.rb +17 -0
- data/plugins/commands/up/start_mixins.rb +37 -0
- data/plugins/communicators/ssh/communicator.rb +400 -0
- data/plugins/communicators/ssh/plugin.rb +19 -0
- data/plugins/guests/arch/cap/change_host_name.rb +17 -0
- data/plugins/guests/arch/cap/configure_networks.rb +30 -0
- data/plugins/guests/arch/guest.rb +11 -0
- data/plugins/guests/arch/plugin.rb +25 -0
- data/plugins/guests/coreos/cap/change_host_name.rb +15 -0
- data/plugins/guests/coreos/cap/configure_networks.rb +72 -0
- data/plugins/guests/coreos/guest.rb +9 -0
- data/plugins/guests/coreos/plugin.rb +25 -0
- data/plugins/guests/darwin/cap/change_host_name.rb +14 -0
- data/plugins/guests/darwin/cap/configure_networks.rb +52 -0
- data/plugins/guests/darwin/cap/halt.rb +16 -0
- data/plugins/guests/darwin/cap/mount_nfs_folder.rb +25 -0
- data/plugins/guests/darwin/cap/mount_vmware_shared_folder.rb +36 -0
- data/plugins/guests/darwin/cap/shell_expand_guest_path.rb +26 -0
- data/plugins/guests/darwin/cap/verify_vmware_hgfs.rb +12 -0
- data/plugins/guests/darwin/guest.rb +15 -0
- data/plugins/guests/darwin/plugin.rb +50 -0
- data/plugins/guests/debian/cap/change_host_name.rb +19 -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 +38 -0
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +59 -0
- data/plugins/guests/linux/cap/read_ip_address.rb +17 -0
- data/plugins/guests/linux/cap/shell_expand_guest_path.rb +29 -0
- data/plugins/guests/linux/guest.rb +11 -0
- data/plugins/guests/linux/plugin.rb +40 -0
- data/plugins/guests/omnios/cap/change_host_name.rb +17 -0
- data/plugins/guests/omnios/guest.rb +11 -0
- data/plugins/guests/omnios/plugin.rb +20 -0
- data/plugins/guests/openbsd/cap/change_host_name.rb +14 -0
- data/plugins/guests/openbsd/cap/configure_networks.rb +40 -0
- data/plugins/guests/openbsd/cap/halt.rb +16 -0
- data/plugins/guests/openbsd/cap/mount_nfs_folder.rb +14 -0
- data/plugins/guests/openbsd/guest.rb +11 -0
- data/plugins/guests/openbsd/plugin.rb +35 -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 +22 -0
- data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +31 -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/solaris11/cap/change_host_name.rb +25 -0
- data/plugins/guests/solaris11/cap/configure_networks.rb +32 -0
- data/plugins/guests/solaris11/cap/halt.rb +26 -0
- data/plugins/guests/solaris11/cap/mount_virtualbox_shared_folder.rb +35 -0
- data/plugins/guests/solaris11/config.rb +22 -0
- data/plugins/guests/solaris11/guest.rb +15 -0
- data/plugins/guests/solaris11/plugin.rb +44 -0
- data/plugins/guests/suse/cap/change_host_name.rb +18 -0
- data/plugins/guests/suse/cap/configure_networks.rb +60 -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 +30 -0
- data/plugins/guests/ubuntu/cap/change_host_name.rb +24 -0
- data/plugins/guests/ubuntu/cap/mount_nfs.rb +19 -0
- data/plugins/guests/ubuntu/cap/mount_virtualbox_shared_folder.rb +14 -0
- data/plugins/guests/ubuntu/guest.rb +13 -0
- data/plugins/guests/ubuntu/plugin.rb +30 -0
- data/plugins/hosts/arch/host.rb +45 -0
- data/plugins/hosts/arch/plugin.rb +15 -0
- data/plugins/hosts/bsd/host.rb +178 -0
- data/plugins/hosts/bsd/plugin.rb +15 -0
- data/plugins/hosts/fedora/host.rb +57 -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 +26 -0
- data/plugins/hosts/gentoo/plugin.rb +15 -0
- data/plugins/hosts/linux/host.rb +128 -0
- data/plugins/hosts/linux/plugin.rb +15 -0
- data/plugins/hosts/opensuse/host.rb +36 -0
- data/plugins/hosts/opensuse/plugin.rb +15 -0
- data/plugins/hosts/slackware/host.rb +26 -0
- data/plugins/hosts/slackware/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 +187 -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 +68 -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 +486 -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.rb +324 -0
- data/plugins/providers/virtualbox/action/boot.rb +23 -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 +43 -0
- data/plugins/providers/virtualbox/action/destroy.rb +19 -0
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +23 -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 +89 -0
- data/plugins/providers/virtualbox/action/import.rb +54 -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 +424 -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 +69 -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 +52 -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/config.rb +123 -0
- data/plugins/providers/virtualbox/driver/base.rb +374 -0
- data/plugins/providers/virtualbox/driver/meta.rb +148 -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 +499 -0
- data/plugins/providers/virtualbox/model/forwarded_port.rb +70 -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 +35 -0
- data/plugins/provisioners/ansible/config.rb +89 -0
- data/plugins/provisioners/ansible/plugin.rb +23 -0
- data/plugins/provisioners/ansible/provisioner.rb +100 -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 +126 -0
- data/plugins/provisioners/cfengine/plugin.rb +42 -0
- data/plugins/provisioners/cfengine/provisioner.rb +135 -0
- data/plugins/provisioners/chef/config/base.rb +116 -0
- data/plugins/provisioners/chef/config/chef_client.rb +66 -0
- data/plugins/provisioners/chef/config/chef_solo.rb +94 -0
- data/plugins/provisioners/chef/plugin.rb +33 -0
- data/plugins/provisioners/chef/provisioner/base.rb +113 -0
- data/plugins/provisioners/chef/provisioner/chef_client.rb +126 -0
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +195 -0
- data/plugins/provisioners/file/config.rb +29 -0
- data/plugins/provisioners/file/plugin.rb +23 -0
- data/plugins/provisioners/file/provisioner.rb +16 -0
- data/plugins/provisioners/puppet/config/puppet.rb +93 -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 +146 -0
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +74 -0
- data/plugins/provisioners/salt/bootstrap-salt.sh +6 -0
- data/plugins/provisioners/salt/config.rb +105 -0
- data/plugins/provisioners/salt/errors.rb +11 -0
- data/plugins/provisioners/salt/plugin.rb +22 -0
- data/plugins/provisioners/salt/provisioner.rb +249 -0
- data/plugins/provisioners/shell/config.rb +65 -0
- data/plugins/provisioners/shell/plugin.rb +23 -0
- data/plugins/provisioners/shell/provisioner.rb +98 -0
- data/templates/commands/init/Vagrantfile.erb +118 -0
- data/templates/commands/ssh_config/config.erb +20 -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 +5 -0
- data/templates/guests/coreos/etcd.service.erb +10 -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 +12 -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/openbsd/network_dhcp.erb +1 -0
- data/templates/guests/openbsd/network_static.erb +1 -0
- data/templates/guests/redhat/network_dhcp.erb +6 -0
- data/templates/guests/redhat/network_static.erb +8 -0
- data/templates/guests/suse/network_dhcp.erb +6 -0
- data/templates/guests/suse/network_static.erb +10 -0
- data/templates/locales/en.yml +1248 -0
- data/templates/nfs/exports.erb +5 -0
- data/templates/nfs/exports_freebsd.erb +5 -0
- data/templates/nfs/exports_linux.erb +7 -0
- data/templates/provisioners/chef_client/client.erb +41 -0
- data/templates/provisioners/chef_solo/solo.erb +45 -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 +60 -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 +28 -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 +115 -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 +746 -0
- data/test/unit/vagrant/guest_test.rb +179 -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 +74 -0
- data/tnargav.gemspec +1 -1
- metadata +477 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'vagrant/action/builder'
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
module Action
|
|
5
|
+
autoload :Runner, 'vagrant/action/runner'
|
|
6
|
+
autoload :Warden, 'vagrant/action/warden'
|
|
7
|
+
|
|
8
|
+
# Builtin contains middleware classes that are shipped with Vagrant-core
|
|
9
|
+
# and are thus available to all plugins as a "standard library" of sorts.
|
|
10
|
+
module Builtin
|
|
11
|
+
autoload :BoxAdd, "vagrant/action/builtin/box_add"
|
|
12
|
+
autoload :Call, "vagrant/action/builtin/call"
|
|
13
|
+
autoload :Confirm, "vagrant/action/builtin/confirm"
|
|
14
|
+
autoload :ConfigValidate, "vagrant/action/builtin/config_validate"
|
|
15
|
+
autoload :DestroyConfirm, "vagrant/action/builtin/destroy_confirm"
|
|
16
|
+
autoload :EnvSet, "vagrant/action/builtin/env_set"
|
|
17
|
+
autoload :GracefulHalt, "vagrant/action/builtin/graceful_halt"
|
|
18
|
+
autoload :HandleBoxUrl, "vagrant/action/builtin/handle_box_url"
|
|
19
|
+
autoload :HandleForwardedPortCollisions, "vagrant/action/builtin/handle_forwarded_port_collisions"
|
|
20
|
+
autoload :Lock, "vagrant/action/builtin/lock"
|
|
21
|
+
autoload :NFS, "vagrant/action/builtin/nfs"
|
|
22
|
+
autoload :Provision, "vagrant/action/builtin/provision"
|
|
23
|
+
autoload :ProvisionerCleanup, "vagrant/action/builtin/provisioner_cleanup"
|
|
24
|
+
autoload :SetHostname, "vagrant/action/builtin/set_hostname"
|
|
25
|
+
autoload :SSHExec, "vagrant/action/builtin/ssh_exec"
|
|
26
|
+
autoload :SSHRun, "vagrant/action/builtin/ssh_run"
|
|
27
|
+
autoload :WaitForCommunicator, "vagrant/action/builtin/wait_for_communicator"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
module General
|
|
31
|
+
autoload :Package, 'vagrant/action/general/package'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# This is the action that will add a box from a URL. This middleware
|
|
35
|
+
# sequence is built-in to Vagrant. Plugins can hook into this like any
|
|
36
|
+
# other middleware sequence. This is particularly useful for provider
|
|
37
|
+
# plugins, which can hook in to do things like verification of boxes
|
|
38
|
+
# that are downloaded.
|
|
39
|
+
def self.action_box_add
|
|
40
|
+
Builder.new.tap do |b|
|
|
41
|
+
b.use Builtin::BoxAdd
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Action
|
|
3
|
+
# Action builder which provides a nice DSL for building up
|
|
4
|
+
# a middleware sequence for Vagrant actions. This code is based
|
|
5
|
+
# heavily off of `Rack::Builder` and `ActionDispatch::MiddlewareStack`
|
|
6
|
+
# in Rack and Rails, respectively.
|
|
7
|
+
#
|
|
8
|
+
# Usage
|
|
9
|
+
#
|
|
10
|
+
# Building an action sequence is very easy:
|
|
11
|
+
#
|
|
12
|
+
# app = Vagrant::Action::Builder.new.tap do |b|
|
|
13
|
+
# b.use MiddlewareA
|
|
14
|
+
# b.use MiddlewareB
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# Vagrant::Action.run(app)
|
|
18
|
+
#
|
|
19
|
+
class Builder
|
|
20
|
+
# This is the stack of middlewares added. This should NOT be used
|
|
21
|
+
# directly.
|
|
22
|
+
#
|
|
23
|
+
# @return [Array]
|
|
24
|
+
attr_reader :stack
|
|
25
|
+
|
|
26
|
+
# This is a shortcut for a middleware sequence with only one item
|
|
27
|
+
# in it. For a description of the arguments and the documentation, please
|
|
28
|
+
# see {#use} instead.
|
|
29
|
+
#
|
|
30
|
+
# @return [Builder]
|
|
31
|
+
def self.build(middleware, *args, &block)
|
|
32
|
+
new.use(middleware, *args, &block)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def initialize
|
|
36
|
+
@stack = []
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Implement a custom copy that copies the stack variable over so that
|
|
40
|
+
# we don't clobber that.
|
|
41
|
+
def initialize_copy(original)
|
|
42
|
+
super
|
|
43
|
+
|
|
44
|
+
@stack = original.stack.dup
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns a mergeable version of the builder. If `use` is called with
|
|
48
|
+
# the return value of this method, then the stack will merge, instead
|
|
49
|
+
# of being treated as a separate single middleware.
|
|
50
|
+
def flatten
|
|
51
|
+
lambda do |env|
|
|
52
|
+
self.call(env)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Adds a middleware class to the middleware stack. Any additional
|
|
57
|
+
# args and a block, if given, are saved and passed to the initializer
|
|
58
|
+
# of the middleware.
|
|
59
|
+
#
|
|
60
|
+
# @param [Class] middleware The middleware class
|
|
61
|
+
def use(middleware, *args, &block)
|
|
62
|
+
if middleware.kind_of?(Builder)
|
|
63
|
+
# Merge in the other builder's stack into our own
|
|
64
|
+
self.stack.concat(middleware.stack)
|
|
65
|
+
else
|
|
66
|
+
self.stack << [middleware, args, block]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
self
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Inserts a middleware at the given index or directly before the
|
|
73
|
+
# given middleware object.
|
|
74
|
+
def insert(index, middleware, *args, &block)
|
|
75
|
+
index = self.index(index) unless index.is_a?(Integer)
|
|
76
|
+
raise "no such middleware to insert before: #{index.inspect}" unless index
|
|
77
|
+
|
|
78
|
+
if middleware.kind_of?(Builder)
|
|
79
|
+
middleware.stack.reverse.each do |stack_item|
|
|
80
|
+
stack.insert(index, stack_item)
|
|
81
|
+
end
|
|
82
|
+
else
|
|
83
|
+
stack.insert(index, [middleware, args, block])
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
alias_method :insert_before, :insert
|
|
88
|
+
|
|
89
|
+
# Inserts a middleware after the given index or middleware object.
|
|
90
|
+
def insert_after(index, middleware, *args, &block)
|
|
91
|
+
index = self.index(index) unless index.is_a?(Integer)
|
|
92
|
+
raise "no such middleware to insert after: #{index.inspect}" unless index
|
|
93
|
+
insert(index + 1, middleware, *args, &block)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Replaces the given middlware object or index with the new
|
|
97
|
+
# middleware.
|
|
98
|
+
def replace(index, middleware, *args, &block)
|
|
99
|
+
if index.is_a?(Integer)
|
|
100
|
+
delete(index)
|
|
101
|
+
insert(index, middleware, *args, &block)
|
|
102
|
+
else
|
|
103
|
+
insert_before(index, middleware, *args, &block)
|
|
104
|
+
delete(index)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Deletes the given middleware object or index
|
|
109
|
+
def delete(index)
|
|
110
|
+
index = self.index(index) unless index.is_a?(Integer)
|
|
111
|
+
stack.delete_at(index)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Runs the builder stack with the given environment.
|
|
115
|
+
def call(env)
|
|
116
|
+
to_app(env).call(env)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Returns the numeric index for the given middleware object.
|
|
120
|
+
#
|
|
121
|
+
# @param [Object] object The item to find the index for
|
|
122
|
+
# @return [Integer]
|
|
123
|
+
def index(object)
|
|
124
|
+
stack.each_with_index do |item, i|
|
|
125
|
+
return i if item[0] == object
|
|
126
|
+
return i if item[0].respond_to?(:name) && item[0].name == object
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
nil
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Converts the builder stack to a runnable action sequence.
|
|
133
|
+
#
|
|
134
|
+
# @param [Hash] env The action environment hash
|
|
135
|
+
# @return [Object] A callable object
|
|
136
|
+
def to_app(env)
|
|
137
|
+
app_stack = nil
|
|
138
|
+
|
|
139
|
+
# If we have action hooks, then we apply them
|
|
140
|
+
if env[:action_hooks]
|
|
141
|
+
builder = self.dup
|
|
142
|
+
|
|
143
|
+
# These are the options to pass into hook application.
|
|
144
|
+
options = {}
|
|
145
|
+
|
|
146
|
+
# If we already ran through once and did append/prepends,
|
|
147
|
+
# then don't do it again.
|
|
148
|
+
if env[:action_hooks_already_ran]
|
|
149
|
+
options[:no_prepend_or_append] = true
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Specify that we already ran, so in the future we don't repeat
|
|
153
|
+
# the prepend/append hooks.
|
|
154
|
+
env[:action_hooks_already_ran] = true
|
|
155
|
+
|
|
156
|
+
# Apply all the hooks to the new builder instance
|
|
157
|
+
env[:action_hooks].each do |hook|
|
|
158
|
+
hook.apply(builder, options)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# The stack is now the result of the new builder
|
|
162
|
+
app_stack = builder.stack.dup
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# If we don't have a stack then default to using our own
|
|
166
|
+
app_stack ||= stack.dup
|
|
167
|
+
|
|
168
|
+
# Wrap the middleware stack with the Warden to provide a consistent
|
|
169
|
+
# and predictable behavior upon exceptions.
|
|
170
|
+
Warden.new(app_stack, env)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require "log4r"
|
|
2
|
+
|
|
3
|
+
require "vagrant/util/downloader"
|
|
4
|
+
require "vagrant/util/platform"
|
|
5
|
+
|
|
6
|
+
module Vagrant
|
|
7
|
+
module Action
|
|
8
|
+
module Builtin
|
|
9
|
+
# This middleware will download a remote box and add it to the
|
|
10
|
+
# given box collection.
|
|
11
|
+
class BoxAdd
|
|
12
|
+
def initialize(app, env)
|
|
13
|
+
@app = app
|
|
14
|
+
@logger = Log4r::Logger.new("vagrant::action::builtin::box_add")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def call(env)
|
|
18
|
+
@temp_path = env[:tmp_path].join("box" + Time.now.to_i.to_s)
|
|
19
|
+
@logger.info("Downloading box to: #{@temp_path}")
|
|
20
|
+
|
|
21
|
+
url = env[:box_url]
|
|
22
|
+
if File.file?(url) || url !~ /^[a-z0-9]+:.*$/i
|
|
23
|
+
@logger.info("URL is a file or protocol not found and assuming file.")
|
|
24
|
+
file_path = File.expand_path(url)
|
|
25
|
+
file_path = Util::Platform.cygwin_windows_path(file_path)
|
|
26
|
+
url = "file:#{file_path}"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
downloader_options = {}
|
|
30
|
+
downloader_options[:insecure] = env[:box_download_insecure]
|
|
31
|
+
downloader_options[:ui] = env[:ui]
|
|
32
|
+
|
|
33
|
+
# Download the box to a temporary path. We store the temporary
|
|
34
|
+
# path as an instance variable so that the `#recover` method can
|
|
35
|
+
# access it.
|
|
36
|
+
env[:ui].info(I18n.t("vagrant.actions.box.download.downloading"))
|
|
37
|
+
begin
|
|
38
|
+
downloader = Util::Downloader.new(url, @temp_path, downloader_options)
|
|
39
|
+
downloader.download!
|
|
40
|
+
rescue Errors::DownloaderInterrupted
|
|
41
|
+
# The downloader was interrupted, so just return, because that
|
|
42
|
+
# means we were interrupted as well.
|
|
43
|
+
env[:ui].info(I18n.t("vagrant.actions.box.download.interrupted"))
|
|
44
|
+
return
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
box_formats = env[:box_provider]
|
|
48
|
+
if box_formats
|
|
49
|
+
# Determine the formats a box can support and allow the box to
|
|
50
|
+
# be any of those formats.
|
|
51
|
+
provider_plugin = Vagrant.plugin("2").manager.providers[env[:box_provider]]
|
|
52
|
+
if provider_plugin
|
|
53
|
+
box_formats = provider_plugin[1][:box_format]
|
|
54
|
+
box_formats ||= env[:box_provider]
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Add the box
|
|
59
|
+
env[:ui].info I18n.t("vagrant.actions.box.add.adding", :name => env[:box_name])
|
|
60
|
+
added_box = nil
|
|
61
|
+
begin
|
|
62
|
+
added_box = env[:box_collection].add(
|
|
63
|
+
@temp_path, env[:box_name], box_formats, env[:box_force])
|
|
64
|
+
rescue Vagrant::Errors::BoxUpgradeRequired
|
|
65
|
+
# Upgrade the box
|
|
66
|
+
env[:box_collection].upgrade(env[:box_name])
|
|
67
|
+
|
|
68
|
+
# Try adding it again
|
|
69
|
+
retry
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Call the 'recover' method in all cases to clean up the
|
|
73
|
+
# downloaded temporary file.
|
|
74
|
+
recover(env)
|
|
75
|
+
|
|
76
|
+
# Success, we added a box!
|
|
77
|
+
env[:ui].success(
|
|
78
|
+
I18n.t("vagrant.actions.box.add.added", name: added_box.name, provider: added_box.provider))
|
|
79
|
+
|
|
80
|
+
# Carry on!
|
|
81
|
+
@app.call(env)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def recover(env)
|
|
85
|
+
if @temp_path && File.exist?(@temp_path)
|
|
86
|
+
File.unlink(@temp_path)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Action
|
|
3
|
+
module Builtin
|
|
4
|
+
# This middleware class allows a sort of "conditional" run within
|
|
5
|
+
# a single middlware sequence. It takes another middleware runnable,
|
|
6
|
+
# runs it with the same environment, then yields the resulting env to a block,
|
|
7
|
+
# allowing that block to determine the next course of action in the
|
|
8
|
+
# middleware sequence.
|
|
9
|
+
#
|
|
10
|
+
# The first argument to this middleware sequence is anywhere middleware
|
|
11
|
+
# runnable, whether it be a class, lambda, or something else that
|
|
12
|
+
# responds to `call`. This middleware runnable is run with the same
|
|
13
|
+
# environment as this class.
|
|
14
|
+
#
|
|
15
|
+
# After running, {Call} takes the environment and yields it to a block
|
|
16
|
+
# given to initialize the class, along with an instance of {Builder}.
|
|
17
|
+
# The result is used to build up a new sequence on the given builder.
|
|
18
|
+
# This builder is then run.
|
|
19
|
+
class Call
|
|
20
|
+
# For documentation, read the description of the {Call} class.
|
|
21
|
+
#
|
|
22
|
+
# @param [Object] callable A valid middleware runnable object. This
|
|
23
|
+
# can be a class, a lambda, or an object that responds to `call`.
|
|
24
|
+
# @yield [result, builder] This block is expected to build on `builder`
|
|
25
|
+
# which is the next middleware sequence that will be run.
|
|
26
|
+
def initialize(app, env, callable, *callable_args, &block)
|
|
27
|
+
raise ArgumentError, "A block must be given to Call" if !block
|
|
28
|
+
|
|
29
|
+
@app = app
|
|
30
|
+
@callable = callable
|
|
31
|
+
@callable_args = callable_args
|
|
32
|
+
@block = block
|
|
33
|
+
@child_app = nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def call(env)
|
|
37
|
+
runner = Runner.new
|
|
38
|
+
|
|
39
|
+
# Build the callable that we'll run
|
|
40
|
+
callable = Builder.build(@callable, *@callable_args)
|
|
41
|
+
|
|
42
|
+
# Run our callable with our environment
|
|
43
|
+
new_env = runner.run(callable, env)
|
|
44
|
+
|
|
45
|
+
# Build our new builder based on the result
|
|
46
|
+
builder = Builder.new
|
|
47
|
+
@block.call(new_env, builder)
|
|
48
|
+
|
|
49
|
+
# Run the result with our new environment
|
|
50
|
+
@child_app = builder.to_app(new_env)
|
|
51
|
+
final_env = runner.run(@child_app, new_env)
|
|
52
|
+
|
|
53
|
+
# Merge the environment into our original environment
|
|
54
|
+
env.merge!(final_env)
|
|
55
|
+
|
|
56
|
+
# Call the next step using our final environment
|
|
57
|
+
@app.call(env)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def recover(env)
|
|
61
|
+
# Call back into our compiled application and recover it.
|
|
62
|
+
@child_app.recover(env) if @child_app
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require "vagrant/util/template_renderer"
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
module Action
|
|
5
|
+
module Builtin
|
|
6
|
+
# This class validates the configuration and raises an exception
|
|
7
|
+
# if there are any validation errors.
|
|
8
|
+
class ConfigValidate
|
|
9
|
+
def initialize(app, env)
|
|
10
|
+
@app = app
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def call(env)
|
|
14
|
+
if !env.has_key?(:config_validate) || env[:config_validate]
|
|
15
|
+
errors = env[:machine].config.validate(env[:machine])
|
|
16
|
+
|
|
17
|
+
if errors && !errors.empty?
|
|
18
|
+
raise Errors::ConfigInvalid,
|
|
19
|
+
:errors => Util::TemplateRenderer.render(
|
|
20
|
+
"config/validation_failed",
|
|
21
|
+
:errors => errors)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
@app.call(env)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Action
|
|
3
|
+
module Builtin
|
|
4
|
+
# This class asks the user to confirm some sort of question with
|
|
5
|
+
# a "Y/N" question. The only parameter is the text to ask the user.
|
|
6
|
+
# The result is placed in `env[:result]` so that it can be used
|
|
7
|
+
# with the {Call} class.
|
|
8
|
+
class Confirm
|
|
9
|
+
# For documentation, read the description of the {Confirm} class.
|
|
10
|
+
#
|
|
11
|
+
# @param [String] message The message to ask the user.
|
|
12
|
+
# @param [Symbol] force_key The key that if present and true in
|
|
13
|
+
# the environment hash will skip the confirmation question.
|
|
14
|
+
def initialize(app, env, message, force_key=nil)
|
|
15
|
+
@app = app
|
|
16
|
+
@message = message
|
|
17
|
+
@force_key = force_key
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def call(env)
|
|
21
|
+
choice = nil
|
|
22
|
+
|
|
23
|
+
# If we have a force key set and we're forcing, then set
|
|
24
|
+
# the result to "Y"
|
|
25
|
+
choice = "Y" if @force_key && env[@force_key]
|
|
26
|
+
|
|
27
|
+
# If we haven't chosen yes, then ask the user via TTY
|
|
28
|
+
choice = env[:ui].ask(@message) if !choice
|
|
29
|
+
|
|
30
|
+
# The result is only true if the user said "Y"
|
|
31
|
+
env[:result] = choice && choice.upcase == "Y"
|
|
32
|
+
env["#{@force_key}_result".to_sym] = env[:result]
|
|
33
|
+
|
|
34
|
+
@app.call(env)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|