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,28 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module VagrantPlugins
|
|
6
|
+
module CommandPlugin
|
|
7
|
+
module Command
|
|
8
|
+
class List < Base
|
|
9
|
+
def execute
|
|
10
|
+
opts = OptionParser.new do |o|
|
|
11
|
+
o.banner = "Usage: vagrant plugin list [-h]"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Parse the options
|
|
15
|
+
argv = parse_options(opts)
|
|
16
|
+
return if !argv
|
|
17
|
+
raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length > 0
|
|
18
|
+
|
|
19
|
+
# List the installed plugins
|
|
20
|
+
action(Action.action_list)
|
|
21
|
+
|
|
22
|
+
# Success, exit status 0
|
|
23
|
+
0
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandPlugin
|
|
5
|
+
module Command
|
|
6
|
+
class Root < Vagrant.plugin("2", :command)
|
|
7
|
+
def initialize(argv, env)
|
|
8
|
+
super
|
|
9
|
+
|
|
10
|
+
@main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
|
|
11
|
+
|
|
12
|
+
@subcommands = Vagrant::Registry.new
|
|
13
|
+
@subcommands.register(:install) do
|
|
14
|
+
require_relative "install"
|
|
15
|
+
Install
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
@subcommands.register(:license) do
|
|
19
|
+
require_relative "license"
|
|
20
|
+
License
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
@subcommands.register(:list) do
|
|
24
|
+
require_relative "list"
|
|
25
|
+
List
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
@subcommands.register(:uninstall) do
|
|
29
|
+
require_relative "uninstall"
|
|
30
|
+
Uninstall
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def execute
|
|
35
|
+
if @main_args.include?("-h") || @main_args.include?("--help")
|
|
36
|
+
# Print the help for all the sub-commands.
|
|
37
|
+
return help
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# If we reached this far then we must have a subcommand. If not,
|
|
41
|
+
# then we also just print the help and exit.
|
|
42
|
+
command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
|
|
43
|
+
return help if !command_class || !@sub_command
|
|
44
|
+
@logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
|
|
45
|
+
|
|
46
|
+
# Initialize and execute the command class
|
|
47
|
+
command_class.new(@sub_args, @env).execute
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Prints the help out for this command
|
|
51
|
+
def help
|
|
52
|
+
opts = OptionParser.new do |o|
|
|
53
|
+
o.banner = "Usage: vagrant plugin <command> [<args>]"
|
|
54
|
+
o.separator ""
|
|
55
|
+
o.separator "Available subcommands:"
|
|
56
|
+
|
|
57
|
+
# Add the available subcommands as separators in order to print them
|
|
58
|
+
# out as well.
|
|
59
|
+
keys = []
|
|
60
|
+
@subcommands.each { |key, value| keys << key.to_s }
|
|
61
|
+
|
|
62
|
+
keys.sort.each do |key|
|
|
63
|
+
o.separator " #{key}"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
o.separator ""
|
|
67
|
+
o.separator "For help on any individual command run `vagrant plugin COMMAND -h`"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
@env.ui.info(opts.help, :prefix => false)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module VagrantPlugins
|
|
6
|
+
module CommandPlugin
|
|
7
|
+
module Command
|
|
8
|
+
class Uninstall < Base
|
|
9
|
+
def execute
|
|
10
|
+
opts = OptionParser.new do |o|
|
|
11
|
+
o.banner = "Usage: vagrant plugin uninstall <name> [-h]"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Parse the options
|
|
15
|
+
argv = parse_options(opts)
|
|
16
|
+
return if !argv
|
|
17
|
+
raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length < 1
|
|
18
|
+
|
|
19
|
+
# Uninstall the gem
|
|
20
|
+
action(Action.action_uninstall, :plugin_name => argv[0])
|
|
21
|
+
|
|
22
|
+
# Success, exit status 0
|
|
23
|
+
0
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "rubygems/config_file"
|
|
3
|
+
require "rubygems/gem_runner"
|
|
4
|
+
|
|
5
|
+
require "log4r"
|
|
6
|
+
|
|
7
|
+
module VagrantPlugins
|
|
8
|
+
module CommandPlugin
|
|
9
|
+
# This class provides methods to help with calling out to the
|
|
10
|
+
# `gem` command but using the RubyGems API.
|
|
11
|
+
class GemHelper
|
|
12
|
+
def initialize(gem_home)
|
|
13
|
+
@gem_home = gem_home.to_s
|
|
14
|
+
@logger = Log4r::Logger.new("vagrant::plugins::plugincommand::gemhelper")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# This will yield the given block with the proper ENV setup so
|
|
18
|
+
# that RubyGems only sees the gems in the Vagrant-managed gem
|
|
19
|
+
# path.
|
|
20
|
+
def with_environment
|
|
21
|
+
old_gem_home = ENV["GEM_HOME"]
|
|
22
|
+
old_gem_path = ENV["GEM_PATH"]
|
|
23
|
+
ENV["GEM_HOME"] = @gem_home
|
|
24
|
+
ENV["GEM_PATH"] = @gem_home
|
|
25
|
+
@logger.debug("Set GEM_* to: #{ENV["GEM_HOME"]}")
|
|
26
|
+
|
|
27
|
+
# Clear paths so that it reads the new GEM_HOME setting
|
|
28
|
+
Gem.paths = ENV
|
|
29
|
+
|
|
30
|
+
# Set a custom configuration to avoid loading ~/.gemrc loads and
|
|
31
|
+
# /etc/gemrc and so on.
|
|
32
|
+
old_config = Gem.configuration
|
|
33
|
+
Gem.configuration = NilGemConfig.new
|
|
34
|
+
|
|
35
|
+
# Clear the sources so that installation uses custom sources
|
|
36
|
+
old_sources = Gem.sources
|
|
37
|
+
Gem.sources = Gem.default_sources
|
|
38
|
+
Gem.sources << "http://gems.hashicorp.com"
|
|
39
|
+
|
|
40
|
+
# Use a silent UI so that we have no output
|
|
41
|
+
Gem::DefaultUserInteraction.use_ui(Gem::SilentUI.new) do
|
|
42
|
+
return yield
|
|
43
|
+
end
|
|
44
|
+
ensure
|
|
45
|
+
# Restore the old GEM_* settings
|
|
46
|
+
ENV["GEM_HOME"] = old_gem_home
|
|
47
|
+
ENV["GEM_PATH"] = old_gem_path
|
|
48
|
+
|
|
49
|
+
# Reset everything
|
|
50
|
+
Gem.configuration = old_config
|
|
51
|
+
Gem.paths = ENV
|
|
52
|
+
Gem.sources = old_sources.to_a
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# This is pretty hacky but it is a custom implementatin of
|
|
56
|
+
# Gem::ConfigFile so that we don't load any gemrc files.
|
|
57
|
+
class NilGemConfig < Gem::ConfigFile
|
|
58
|
+
def initialize
|
|
59
|
+
# We _can not_ `super` here because that can really mess up
|
|
60
|
+
# some other configuration state. We need to just set everything
|
|
61
|
+
# directly.
|
|
62
|
+
|
|
63
|
+
@api_keys = {}
|
|
64
|
+
@args = []
|
|
65
|
+
@backtrace = false
|
|
66
|
+
@bulk_threshold = 1000
|
|
67
|
+
@hash = {}
|
|
68
|
+
@update_sources = true
|
|
69
|
+
@verbose = true
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandPlugin
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "plugin command"
|
|
7
|
+
description <<-DESC
|
|
8
|
+
This command helps manage and install plugins within the
|
|
9
|
+
Vagrant environment.
|
|
10
|
+
DESC
|
|
11
|
+
|
|
12
|
+
command("plugin") do
|
|
13
|
+
require File.expand_path("../command/root", __FILE__)
|
|
14
|
+
Command::Root
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
autoload :Action, File.expand_path("../action", __FILE__)
|
|
19
|
+
autoload :GemHelper, File.expand_path("../gem_helper", __FILE__)
|
|
20
|
+
autoload :StateFile, File.expand_path("../state_file", __FILE__)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandPlugin
|
|
5
|
+
# This is a helper to deal with the plugin state file that Vagrant
|
|
6
|
+
# uses to track what plugins are installed and activated and such.
|
|
7
|
+
class StateFile
|
|
8
|
+
def initialize(path)
|
|
9
|
+
@path = path
|
|
10
|
+
|
|
11
|
+
@data = {}
|
|
12
|
+
@data = JSON.parse(@path.read) if @path.exist?
|
|
13
|
+
@data["installed"] ||= []
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Add a plugin that is installed to the state file.
|
|
17
|
+
#
|
|
18
|
+
# @param [String] name The name of the plugin
|
|
19
|
+
def add_plugin(name)
|
|
20
|
+
if !@data["installed"].include?(name)
|
|
21
|
+
@data["installed"] << name
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
save!
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# This returns a list of installed plugins according to the state
|
|
28
|
+
# file. Note that this may _not_ directly match over to actually
|
|
29
|
+
# installed gems.
|
|
30
|
+
#
|
|
31
|
+
# @return [Array<String>]
|
|
32
|
+
def installed_plugins
|
|
33
|
+
@data["installed"]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Remove a plugin that is installed from the state file.
|
|
37
|
+
#
|
|
38
|
+
# @param [String] name The name of the plugin.
|
|
39
|
+
def remove_plugin(name)
|
|
40
|
+
@data["installed"].delete(name)
|
|
41
|
+
save!
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# This saves the state back into the state file.
|
|
45
|
+
def save!
|
|
46
|
+
# Scrub some fields
|
|
47
|
+
@data["installed"].sort!
|
|
48
|
+
@data["installed"].uniq!
|
|
49
|
+
|
|
50
|
+
# Save
|
|
51
|
+
@path.open("w+") do |f|
|
|
52
|
+
f.write(JSON.dump(@data))
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandProvision
|
|
5
|
+
class Command < Vagrant.plugin("2", :command)
|
|
6
|
+
def execute
|
|
7
|
+
options = {}
|
|
8
|
+
options[:provision_types] = nil
|
|
9
|
+
|
|
10
|
+
opts = OptionParser.new do |o|
|
|
11
|
+
o.banner = "Usage: vagrant provision [vm-name] [--provision-with x,y,z]"
|
|
12
|
+
|
|
13
|
+
o.on("--provision-with x,y,z", Array,
|
|
14
|
+
"Enable only certain provisioners, by type.") do |list|
|
|
15
|
+
options[:provision_types] = list.map { |type| type.to_sym }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Parse the options
|
|
20
|
+
argv = parse_options(opts)
|
|
21
|
+
return if !argv
|
|
22
|
+
|
|
23
|
+
# Go over each VM and provision!
|
|
24
|
+
@logger.debug("'provision' each target VM...")
|
|
25
|
+
with_target_vms(argv) do |machine|
|
|
26
|
+
machine.action(:provision, options)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Success, exit status 0
|
|
30
|
+
0
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandProvision
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "provision command"
|
|
7
|
+
description <<-DESC
|
|
8
|
+
The `provision` command provisions your virtual machine based on the
|
|
9
|
+
configuration of the Vagrantfile.
|
|
10
|
+
DESC
|
|
11
|
+
|
|
12
|
+
command("provision") do
|
|
13
|
+
require File.expand_path("../command", __FILE__)
|
|
14
|
+
Command
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
require "vagrant"
|
|
4
|
+
|
|
5
|
+
require Vagrant.source_root.join("plugins/commands/up/start_mixins")
|
|
6
|
+
|
|
7
|
+
module VagrantPlugins
|
|
8
|
+
module CommandReload
|
|
9
|
+
class Command < Vagrant.plugin("2", :command)
|
|
10
|
+
# We assume that the `up` plugin exists and that we'll have access
|
|
11
|
+
# to this.
|
|
12
|
+
include VagrantPlugins::CommandUp::StartMixins
|
|
13
|
+
|
|
14
|
+
def execute
|
|
15
|
+
options = {}
|
|
16
|
+
|
|
17
|
+
opts = OptionParser.new do |o|
|
|
18
|
+
o.banner = "Usage: vagrant reload [vm-name]"
|
|
19
|
+
o.separator ""
|
|
20
|
+
build_start_options(o, options)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Parse the options
|
|
24
|
+
argv = parse_options(opts)
|
|
25
|
+
return if !argv
|
|
26
|
+
|
|
27
|
+
@logger.debug("'reload' each target VM...")
|
|
28
|
+
with_target_vms(argv) do |machine|
|
|
29
|
+
machine.action(:reload, options)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Success, exit status 0
|
|
33
|
+
0
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandReload
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "reload command"
|
|
7
|
+
description <<-DESC
|
|
8
|
+
The `reload` command will halt, reconfigure your machine based on
|
|
9
|
+
the Vagrantfile, and bring it back up.
|
|
10
|
+
DESC
|
|
11
|
+
|
|
12
|
+
command("reload") do
|
|
13
|
+
require File.expand_path("../command", __FILE__)
|
|
14
|
+
Command
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandResume
|
|
5
|
+
class Command < Vagrant.plugin("2", :command)
|
|
6
|
+
def execute
|
|
7
|
+
opts = OptionParser.new do |o|
|
|
8
|
+
o.banner = "Usage: vagrant resume [vm-name]"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Parse the options
|
|
12
|
+
argv = parse_options(opts)
|
|
13
|
+
return if !argv
|
|
14
|
+
|
|
15
|
+
@logger.debug("'resume' each target VM...")
|
|
16
|
+
with_target_vms(argv) do |machine|
|
|
17
|
+
machine.action(:resume)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Success, exit status 0
|
|
21
|
+
0
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandResume
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "resume command"
|
|
7
|
+
description <<-DESC
|
|
8
|
+
The `resume` command resumes a suspend virtual machine.
|
|
9
|
+
DESC
|
|
10
|
+
|
|
11
|
+
command("resume") do
|
|
12
|
+
require File.expand_path("../command", __FILE__)
|
|
13
|
+
Command
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandSSH
|
|
5
|
+
class Command < Vagrant.plugin("2", :command)
|
|
6
|
+
def execute
|
|
7
|
+
options = {}
|
|
8
|
+
|
|
9
|
+
opts = OptionParser.new do |o|
|
|
10
|
+
o.banner = "Usage: vagrant ssh [vm-name] [-c command] [-- extra ssh args]"
|
|
11
|
+
|
|
12
|
+
o.separator ""
|
|
13
|
+
|
|
14
|
+
o.on("-c", "--command COMMAND", "Execute an SSH command directly.") do |c|
|
|
15
|
+
options[:command] = c
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
o.on("-p", "--plain", "Plain mode, leaves authentication up to user.") do |p|
|
|
19
|
+
options[:plain_mode] = p
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Parse out the extra args to send to SSH, which is everything
|
|
24
|
+
# after the "--"
|
|
25
|
+
split_index = @argv.index("--")
|
|
26
|
+
if split_index
|
|
27
|
+
options[:ssh_args] = @argv.drop(split_index + 1)
|
|
28
|
+
@argv = @argv.take(split_index)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Parse the options and return if we don't have any target.
|
|
32
|
+
argv = parse_options(opts)
|
|
33
|
+
return if !argv
|
|
34
|
+
|
|
35
|
+
# Execute the actual SSH
|
|
36
|
+
with_target_vms(argv, :single_target => true) do |vm|
|
|
37
|
+
if options[:command]
|
|
38
|
+
@logger.debug("Executing single command on remote machine: #{options[:command]}")
|
|
39
|
+
env = vm.action(:ssh_run, :ssh_run_command => options[:command])
|
|
40
|
+
|
|
41
|
+
# Exit with the exit status of the command or a 0 if we didn't
|
|
42
|
+
# get one.
|
|
43
|
+
exit_status = env[:ssh_run_exit_status] || 0
|
|
44
|
+
return exit_status
|
|
45
|
+
else
|
|
46
|
+
opts = {
|
|
47
|
+
:plain_mode => options[:plain_mode],
|
|
48
|
+
:extra_args => options[:ssh_args]
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@logger.debug("Invoking `ssh` action on machine")
|
|
52
|
+
vm.action(:ssh, :ssh_opts => opts)
|
|
53
|
+
|
|
54
|
+
# We should never reach this point, since the point of `ssh`
|
|
55
|
+
# is to exec into the proper SSH shell, but we'll just return
|
|
56
|
+
# an exit status of 0 anyways.
|
|
57
|
+
return 0
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandSSH
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "ssh command"
|
|
7
|
+
description <<-DESC
|
|
8
|
+
The `ssh` command allows you to SSH in to your running virtual machine.
|
|
9
|
+
DESC
|
|
10
|
+
|
|
11
|
+
command("ssh") do
|
|
12
|
+
require File.expand_path("../command", __FILE__)
|
|
13
|
+
Command
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
require "vagrant/util/safe_puts"
|
|
4
|
+
|
|
5
|
+
module VagrantPlugins
|
|
6
|
+
module CommandSSHConfig
|
|
7
|
+
class Command < Vagrant.plugin("2", :command)
|
|
8
|
+
include Vagrant::Util::SafePuts
|
|
9
|
+
|
|
10
|
+
def execute
|
|
11
|
+
options = {}
|
|
12
|
+
|
|
13
|
+
opts = OptionParser.new do |o|
|
|
14
|
+
o.banner = "Usage: vagrant ssh-config [vm-name] [--host name]"
|
|
15
|
+
o.separator ""
|
|
16
|
+
|
|
17
|
+
o.on("--host COMMAND", "Name the host for the config..") do |h|
|
|
18
|
+
options[:host] = h
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
argv = parse_options(opts)
|
|
23
|
+
return if !argv
|
|
24
|
+
|
|
25
|
+
with_target_vms(argv, :single_target => true) do |machine|
|
|
26
|
+
ssh_info = machine.ssh_info
|
|
27
|
+
raise Vagrant::Errors::SSHNotReady if ssh_info.nil?
|
|
28
|
+
|
|
29
|
+
variables = {
|
|
30
|
+
:host_key => options[:host] || machine.name || "vagrant",
|
|
31
|
+
:ssh_host => ssh_info[:host],
|
|
32
|
+
:ssh_port => ssh_info[:port],
|
|
33
|
+
:ssh_user => ssh_info[:username],
|
|
34
|
+
:private_key_path => ssh_info[:private_key_path],
|
|
35
|
+
:forward_agent => ssh_info[:forward_agent],
|
|
36
|
+
:forward_x11 => ssh_info[:forward_x11]
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
# Render the template and output directly to STDOUT
|
|
40
|
+
template = "commands/ssh_config/config"
|
|
41
|
+
safe_puts(Vagrant::Util::TemplateRenderer.render(template, variables))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Success, exit status 0
|
|
45
|
+
0
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandSSHConfig
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "ssh-config command"
|
|
7
|
+
description <<-DESC
|
|
8
|
+
The `ssh-config` command dumps an OpenSSH compatible configuration
|
|
9
|
+
that can be used to quickly SSH into your virtual machine.
|
|
10
|
+
DESC
|
|
11
|
+
|
|
12
|
+
command("ssh-config") do
|
|
13
|
+
require File.expand_path("../command", __FILE__)
|
|
14
|
+
Command
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandStatus
|
|
5
|
+
class Command < Vagrant.plugin("2", :command)
|
|
6
|
+
def execute
|
|
7
|
+
opts = OptionParser.new do |o|
|
|
8
|
+
o.banner = "Usage: vagrant status [machine-name]"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Parse the options
|
|
12
|
+
argv = parse_options(opts)
|
|
13
|
+
return if !argv
|
|
14
|
+
|
|
15
|
+
state = nil
|
|
16
|
+
results = []
|
|
17
|
+
with_target_vms(argv) do |machine|
|
|
18
|
+
state = machine.state if !state
|
|
19
|
+
results << "#{machine.name.to_s.ljust(25)}#{machine.state.short_description} (#{machine.provider_name})"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
message = nil
|
|
23
|
+
if results.length == 1
|
|
24
|
+
message = state.long_description
|
|
25
|
+
else
|
|
26
|
+
message = I18n.t("vagrant.commands.status.listing")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
@env.ui.info(I18n.t("vagrant.commands.status.output",
|
|
30
|
+
:states => results.join("\n"),
|
|
31
|
+
:message => message),
|
|
32
|
+
:prefix => false)
|
|
33
|
+
|
|
34
|
+
# Success, exit status 0
|
|
35
|
+
0
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandStatus
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "status command"
|
|
7
|
+
description <<-DESC
|
|
8
|
+
The `status` command shows what the running state (running/saved/..)
|
|
9
|
+
is of all your virtual machines in this environment.
|
|
10
|
+
DESC
|
|
11
|
+
|
|
12
|
+
command("status") do
|
|
13
|
+
require File.expand_path("../command", __FILE__)
|
|
14
|
+
Command
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module CommandSuspend
|
|
5
|
+
class Command < Vagrant.plugin("2", :command)
|
|
6
|
+
def execute
|
|
7
|
+
opts = OptionParser.new do |o|
|
|
8
|
+
o.banner = "Usage: vagrant suspend [vm-name]"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Parse the options
|
|
12
|
+
argv = parse_options(opts)
|
|
13
|
+
return if !argv
|
|
14
|
+
|
|
15
|
+
@logger.debug("'suspend' each target VM...")
|
|
16
|
+
with_target_vms(argv) do |vm|
|
|
17
|
+
vm.action(:suspend)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Success, exit status 0
|
|
21
|
+
0
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|