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,5 @@
|
|
|
1
|
+
# VAGRANT-BEGIN: <%= uuid %>
|
|
2
|
+
<% folders.each do |name, opts| %>
|
|
3
|
+
"<%= opts[:hostpath] %>" <%= ip %>(rw,no_subtree_check,all_squash<% if opts[:map_uid] %>,anonuid=<%= opts[:map_uid] %><% end %><% if opts[:map_gid] %>,anongid=<%= opts[:map_gid] %><% end %>,fsid=<%= opts[:uuid] %>)
|
|
4
|
+
<% end %>
|
|
5
|
+
# VAGRANT-END: <%= uuid %>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Vagrant::Config.run do |config|
|
|
2
|
+
# This Vagrantfile is auto-generated by `vagrant package` to contain
|
|
3
|
+
# the MAC address of the box. Custom configuration should be placed in
|
|
4
|
+
# the actual `Vagrantfile` in this box.
|
|
5
|
+
config.vm.base_mac = "<%= base_mac %>"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# Load include vagrant file if it exists after the auto-generated
|
|
9
|
+
# so it can override any of the settings
|
|
10
|
+
include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)
|
|
11
|
+
load include_vagrantfile if File.exist?(include_vagrantfile)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
log_level <%= log_level.inspect %>
|
|
2
|
+
log_location STDOUT
|
|
3
|
+
<% if node_name %>
|
|
4
|
+
node_name "<%= node_name %>"
|
|
5
|
+
<% end %>
|
|
6
|
+
ssl_verify_mode :verify_none
|
|
7
|
+
chef_server_url "<%= chef_server_url %>"
|
|
8
|
+
|
|
9
|
+
validation_client_name "<%= validation_client_name %>"
|
|
10
|
+
validation_key "<%= validation_key %>"
|
|
11
|
+
client_key "<%= client_key %>"
|
|
12
|
+
|
|
13
|
+
encrypted_data_bag_secret "<%= encrypted_data_bag_secret %>"
|
|
14
|
+
|
|
15
|
+
<% unless environment.nil? %>
|
|
16
|
+
environment "<%= environment %>"
|
|
17
|
+
<% end %>
|
|
18
|
+
|
|
19
|
+
file_cache_path "<%= file_cache_path %>"
|
|
20
|
+
file_backup_path "<%= file_backup_path %>"
|
|
21
|
+
|
|
22
|
+
http_proxy <%= http_proxy.inspect %>
|
|
23
|
+
http_proxy_user <%= http_proxy_user.inspect %>
|
|
24
|
+
http_proxy_pass <%= http_proxy_pass.inspect %>
|
|
25
|
+
https_proxy <%= https_proxy.inspect %>
|
|
26
|
+
https_proxy_user <%= https_proxy_user.inspect %>
|
|
27
|
+
https_proxy_pass <%= https_proxy_pass.inspect %>
|
|
28
|
+
no_proxy <%= no_proxy.inspect %>
|
|
29
|
+
|
|
30
|
+
pid_file "/var/run/chef/chef-client.pid"
|
|
31
|
+
|
|
32
|
+
Mixlib::Log::Formatter.show_time = true
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<% if node_name %>
|
|
2
|
+
node_name "<%= node_name %>"
|
|
3
|
+
<% end %>
|
|
4
|
+
file_cache_path "<%= provisioning_path %>"
|
|
5
|
+
cookbook_path <%= cookbooks_path.inspect %>
|
|
6
|
+
role_path <%= roles_path.inspect %>
|
|
7
|
+
log_level <%= log_level.inspect %>
|
|
8
|
+
|
|
9
|
+
encrypted_data_bag_secret "<%= encrypted_data_bag_secret %>"
|
|
10
|
+
|
|
11
|
+
<% if data_bags_path -%>
|
|
12
|
+
data_bag_path <%= data_bags_path.inspect %>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<% if recipe_url -%>
|
|
16
|
+
recipe_url "<%= recipe_url %>"
|
|
17
|
+
<% end -%>
|
|
18
|
+
|
|
19
|
+
http_proxy <%= http_proxy.inspect %>
|
|
20
|
+
http_proxy_user <%= http_proxy_user.inspect %>
|
|
21
|
+
http_proxy_pass <%= http_proxy_pass.inspect %>
|
|
22
|
+
https_proxy <%= https_proxy.inspect %>
|
|
23
|
+
https_proxy_user <%= https_proxy_user.inspect %>
|
|
24
|
+
https_proxy_pass <%= https_proxy_pass.inspect %>
|
|
25
|
+
no_proxy <%= no_proxy.inspect %>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# This file loads the proper rgloader/loader.rb file that comes packaged
|
|
2
|
+
# with Vagrant so that encoded files can properly run with Vagrant.
|
|
3
|
+
|
|
4
|
+
if ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]
|
|
5
|
+
require File.expand_path(
|
|
6
|
+
"rgloader/loader", ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"])
|
|
7
|
+
else
|
|
8
|
+
raise "Encoded files can't be read outside of the Vagrant installer."
|
|
9
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "rspec/autorun"
|
|
3
|
+
|
|
4
|
+
require "log4r"
|
|
5
|
+
|
|
6
|
+
# Add the test directory to the load path
|
|
7
|
+
$:.unshift File.expand_path("../../", __FILE__)
|
|
8
|
+
|
|
9
|
+
# Load in the supporting files for our tests
|
|
10
|
+
require "acceptance/support/shared/base_context"
|
|
11
|
+
require "acceptance/support/config"
|
|
12
|
+
require "acceptance/support/virtualbox"
|
|
13
|
+
require "acceptance/support/matchers/match_output"
|
|
14
|
+
require "acceptance/support/matchers/succeed"
|
|
15
|
+
|
|
16
|
+
# Do not buffer output
|
|
17
|
+
$stdout.sync = true
|
|
18
|
+
$stderr.sync = true
|
|
19
|
+
|
|
20
|
+
# If VirtualBox is currently running, fail.
|
|
21
|
+
if Acceptance::VirtualBox.find_vboxsvc
|
|
22
|
+
$stderr.puts "VirtualBox must be closed and remain closed for the duration of the tests."
|
|
23
|
+
abort
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Enable logging if requested
|
|
27
|
+
if ENV["ACCEPTANCE_LOG"]
|
|
28
|
+
logger = Log4r::Logger.new("test")
|
|
29
|
+
logger.outputters = Log4r::Outputter.stdout
|
|
30
|
+
logger.level = Log4r.const_get(ENV["ACCEPTANCE_LOG"].upcase)
|
|
31
|
+
logger = nil
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Parse the command line options and load the global configuration.
|
|
35
|
+
if !ENV.has_key?("ACCEPTANCE_CONFIG")
|
|
36
|
+
$stderr.puts "A configuration file must be passed into the acceptance test."
|
|
37
|
+
abort
|
|
38
|
+
elsif !File.file?(ENV["ACCEPTANCE_CONFIG"])
|
|
39
|
+
$stderr.puts "The configuration file must exist."
|
|
40
|
+
abort
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
$acceptance_options = Acceptance::Config.new(ENV["ACCEPTANCE_CONFIG"])
|
|
44
|
+
|
|
45
|
+
# Configure RSpec
|
|
46
|
+
RSpec.configure do |c|
|
|
47
|
+
c.expect_with :rspec, :stdlib
|
|
48
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe "vagrant box" do
|
|
4
|
+
include_context "acceptance"
|
|
5
|
+
|
|
6
|
+
it "has no boxes by default" do
|
|
7
|
+
result = execute("vagrant", "box", "list")
|
|
8
|
+
result.stdout.should match_output(:no_boxes)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "can add a box from a file" do
|
|
12
|
+
require_box("default")
|
|
13
|
+
|
|
14
|
+
# Add the box, which we expect to succeed
|
|
15
|
+
result = execute("vagrant", "box", "add", "foo", box_path("default"))
|
|
16
|
+
result.should succeed
|
|
17
|
+
|
|
18
|
+
# Verify that the box now shows up in the list of available boxes
|
|
19
|
+
result = execute("vagrant", "box", "list")
|
|
20
|
+
result.stdout.should match_output(:box_installed, "foo")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "errors if attempting to add a box with the same name" do
|
|
24
|
+
require_box("default")
|
|
25
|
+
|
|
26
|
+
# Add the box, which we expect to succeed
|
|
27
|
+
assert_execute("vagrant", "box", "add", "foo", box_path("default"))
|
|
28
|
+
|
|
29
|
+
# Adding it again should not succeed
|
|
30
|
+
result = execute("vagrant", "box", "add", "foo", box_path("default"))
|
|
31
|
+
result.should_not succeed
|
|
32
|
+
result.stderr.should match_output(:box_already_exists, "foo")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "overwrites a box when adding with `--force`" do
|
|
36
|
+
require_box("default")
|
|
37
|
+
|
|
38
|
+
# Add the box, which we expect to succeed
|
|
39
|
+
assert_execute("vagrant", "box", "add", "foo", box_path("default"))
|
|
40
|
+
|
|
41
|
+
# Adding it again should not succeed
|
|
42
|
+
assert_execute("vagrant", "box", "add", "foo", box_path("default"), "--force")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "gives an error if the file doesn't exist" do
|
|
46
|
+
result = execute("vagrant", "box", "add", "foo", "/tmp/nope/nope/nope/nonono.box")
|
|
47
|
+
result.should_not succeed
|
|
48
|
+
result.stderr.should match_output(:box_path_doesnt_exist)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "gives an error if the file is not a valid box" do
|
|
52
|
+
invalid = environment.workdir.join("nope.txt")
|
|
53
|
+
invalid.open("w+") do |f|
|
|
54
|
+
f.write("INVALID!")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
result = execute("vagrant", "box", "add", "foo", invalid.to_s)
|
|
58
|
+
result.should_not succeed
|
|
59
|
+
result.stderr.should match_output(:box_invalid)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "can add a box from an HTTP server" do
|
|
63
|
+
pending("Need to setup HTTP server functionality")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "can remove a box" do
|
|
67
|
+
require_box("default")
|
|
68
|
+
|
|
69
|
+
# Add the box, remove the box, then verify that the box no longer
|
|
70
|
+
# shows up in the list of available boxes.
|
|
71
|
+
execute("vagrant", "box", "add", "foo", box_path("default"))
|
|
72
|
+
execute("vagrant", "box", "remove", "foo")
|
|
73
|
+
result = execute("vagrant", "box", "list")
|
|
74
|
+
result.should succeed
|
|
75
|
+
result.stdout.should match_output(:no_boxes)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "can repackage a box" do
|
|
79
|
+
require_box("default")
|
|
80
|
+
|
|
81
|
+
original_size = File.size(box_path("default"))
|
|
82
|
+
logger.debug("Original package size: #{original_size}")
|
|
83
|
+
|
|
84
|
+
# Add the box, repackage it, and verify that a package.box is
|
|
85
|
+
# dumped of relatively similar size.
|
|
86
|
+
execute("vagrant", "box", "add", "foo", box_path("default"))
|
|
87
|
+
execute("vagrant", "box", "repackage", "foo")
|
|
88
|
+
|
|
89
|
+
# By default, repackage should dump into package.box into the CWD
|
|
90
|
+
repackaged_file = environment.workdir.join("package.box")
|
|
91
|
+
repackaged_file.file?.should be, "package.box should exist in cwd of environment"
|
|
92
|
+
|
|
93
|
+
# Compare the sizes
|
|
94
|
+
repackaged_size = repackaged_file.size
|
|
95
|
+
logger.debug("Repackaged size: #{repackaged_size}")
|
|
96
|
+
size_diff = (repackaged_size - original_size).abs
|
|
97
|
+
size_diff.should be < 1000, "Sizes should be very similar"
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
|
2
|
+
require "acceptance/support/shared/command_examples"
|
|
3
|
+
|
|
4
|
+
describe "vagrant destroy" do
|
|
5
|
+
include_context "acceptance"
|
|
6
|
+
it_behaves_like "a command that requires a Vagrantfile", ["vagrant", "destroy"]
|
|
7
|
+
|
|
8
|
+
it "succeeds and ignores if the VM is not created" do
|
|
9
|
+
require_box("default")
|
|
10
|
+
|
|
11
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
12
|
+
assert_execute("vagrant", "init")
|
|
13
|
+
|
|
14
|
+
result = assert_execute("vagrant", "destroy")
|
|
15
|
+
result.stdout.should match_output(:vm_not_created_warning)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "is able to destroy a running virtual machine" do
|
|
19
|
+
require_box("default")
|
|
20
|
+
|
|
21
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
22
|
+
assert_execute("vagrant", "init")
|
|
23
|
+
assert_execute("vagrant", "up")
|
|
24
|
+
|
|
25
|
+
# Destroy the VM and assert that it worked properly (seemingly)
|
|
26
|
+
result = assert_execute("vagrant", "destroy")
|
|
27
|
+
result.stdout.should match_output(:vm_destroyed)
|
|
28
|
+
|
|
29
|
+
# Assert that the VM no longer is created
|
|
30
|
+
result = assert_execute("vagrant", "status")
|
|
31
|
+
result.stdout.should match_output(:status, "default", "not created")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# TODO:
|
|
35
|
+
# it is able to destroy a halted virtual machine
|
|
36
|
+
# it is able to destroy a suspended virtual machine
|
|
37
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
|
2
|
+
require "acceptance/support/shared/command_examples"
|
|
3
|
+
|
|
4
|
+
describe "vagrant halt" do
|
|
5
|
+
include_context "acceptance"
|
|
6
|
+
it_behaves_like "a command that requires a Vagrantfile", ["vagrant", "halt"]
|
|
7
|
+
|
|
8
|
+
it "succeeds and ignores if the VM is not created" do
|
|
9
|
+
require_box("default")
|
|
10
|
+
|
|
11
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
12
|
+
assert_execute("vagrant", "init")
|
|
13
|
+
|
|
14
|
+
result = assert_execute("vagrant", "halt")
|
|
15
|
+
result.stdout.should match_output(:vm_not_created_warning)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "is able to halt a running virtual machine" do
|
|
19
|
+
require_box("default")
|
|
20
|
+
|
|
21
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
22
|
+
assert_execute("vagrant", "init")
|
|
23
|
+
assert_execute("vagrant", "up")
|
|
24
|
+
|
|
25
|
+
# Halt the VM and assert that it worked properly (seemingly)
|
|
26
|
+
result = assert_execute("vagrant", "halt")
|
|
27
|
+
result.stdout.should match_output(:vm_halt_graceful)
|
|
28
|
+
|
|
29
|
+
# Assert that the VM is no longer running
|
|
30
|
+
result = assert_execute("vagrant", "status")
|
|
31
|
+
result.stdout.should match_output(:status, "default", "poweroff")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "is able to force halt a running virtual machine" do
|
|
35
|
+
require_box("default")
|
|
36
|
+
|
|
37
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
38
|
+
assert_execute("vagrant", "init")
|
|
39
|
+
assert_execute("vagrant", "up")
|
|
40
|
+
|
|
41
|
+
# Halt the VM and assert that it worked properly (seemingly)
|
|
42
|
+
result = assert_execute("vagrant", "halt", "--force")
|
|
43
|
+
result.stdout.should match_output(:vm_halt_force)
|
|
44
|
+
|
|
45
|
+
# Assert that the VM is no longer running
|
|
46
|
+
result = assert_execute("vagrant", "status")
|
|
47
|
+
result.stdout.should match_output(:status, "default", "poweroff")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "is able to come back up after the machine has been halted" do
|
|
51
|
+
require_box("default")
|
|
52
|
+
|
|
53
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
54
|
+
assert_execute("vagrant", "init")
|
|
55
|
+
assert_execute("vagrant", "up")
|
|
56
|
+
assert_execute("vagrant", "halt")
|
|
57
|
+
|
|
58
|
+
# Assert that the VM is no longer running
|
|
59
|
+
result = assert_execute("vagrant", "status")
|
|
60
|
+
result.stdout.should match_output(:status, "default", "poweroff")
|
|
61
|
+
|
|
62
|
+
assert_execute("vagrant", "up")
|
|
63
|
+
|
|
64
|
+
# Assert that the VM is once again running
|
|
65
|
+
result = assert_execute("vagrant", "status")
|
|
66
|
+
result.stdout.should match_output(:status, "default", "running")
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# TODO:
|
|
70
|
+
# halt behavior on suspend machine
|
|
71
|
+
# halt behavior if machine is already powered off
|
|
72
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe "vagrant init" do
|
|
4
|
+
include_context "acceptance"
|
|
5
|
+
|
|
6
|
+
it "creates a Vagrantfile in the working directory" do
|
|
7
|
+
vagrantfile = environment.workdir.join("Vagrantfile")
|
|
8
|
+
vagrantfile.exist?.should_not be, "Vagrantfile shouldn't exist initially"
|
|
9
|
+
|
|
10
|
+
result = execute("vagrant", "init")
|
|
11
|
+
result.should succeed
|
|
12
|
+
vagrantfile.exist?.should be, "Vagrantfile should exist"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "creates a Vagrantfile with the box set to the given argument" do
|
|
16
|
+
vagrantfile = environment.workdir.join("Vagrantfile")
|
|
17
|
+
|
|
18
|
+
result = execute("vagrant", "init", "foo")
|
|
19
|
+
result.should succeed
|
|
20
|
+
vagrantfile.read.should match(/config.vm.box = "foo"$/)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "creates a Vagrantfile with the box URL set to the given argument" do
|
|
24
|
+
vagrantfile = environment.workdir.join("Vagrantfile")
|
|
25
|
+
|
|
26
|
+
result = execute("vagrant", "init", "foo", "bar")
|
|
27
|
+
result.should succeed
|
|
28
|
+
|
|
29
|
+
contents = vagrantfile.read
|
|
30
|
+
contents.should match(/config.vm.box = "foo"$/)
|
|
31
|
+
contents.should match(/config.vm.box_url = "bar"$/)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require File.expand_path("../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
require "net/http"
|
|
4
|
+
require "uri"
|
|
5
|
+
|
|
6
|
+
require "acceptance/support/network_tests"
|
|
7
|
+
require "acceptance/support/shared/command_examples"
|
|
8
|
+
require "support/tempdir"
|
|
9
|
+
|
|
10
|
+
describe "vagrant host only networking" do
|
|
11
|
+
include Acceptance::NetworkTests
|
|
12
|
+
|
|
13
|
+
include_context "acceptance"
|
|
14
|
+
|
|
15
|
+
def initialize_environment(env=nil)
|
|
16
|
+
require_box("default")
|
|
17
|
+
|
|
18
|
+
env ||= environment
|
|
19
|
+
env.execute("vagrant", "box", "add", "base", box_path("default")).should succeed
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "creates a network with a static IP" do
|
|
23
|
+
initialize_environment
|
|
24
|
+
|
|
25
|
+
environment.workdir.join("Vagrantfile").open("w+") do |f|
|
|
26
|
+
f.puts(<<VFILE)
|
|
27
|
+
Vagrant::Config.run do |config|
|
|
28
|
+
config.vm.box = "base"
|
|
29
|
+
config.vm.network :hostonly, "192.168.33.10"
|
|
30
|
+
end
|
|
31
|
+
VFILE
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
assert_execute("vagrant", "up")
|
|
35
|
+
assert_host_to_vm_network("http://192.168.33.10:8000/", 8000)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
require File.expand_path("../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
require "net/http"
|
|
4
|
+
require "uri"
|
|
5
|
+
|
|
6
|
+
require "acceptance/support/network_tests"
|
|
7
|
+
require "acceptance/support/shared/command_examples"
|
|
8
|
+
require "support/tempdir"
|
|
9
|
+
|
|
10
|
+
describe "vagrant port forwarding" do
|
|
11
|
+
include Acceptance::NetworkTests
|
|
12
|
+
|
|
13
|
+
include_context "acceptance"
|
|
14
|
+
|
|
15
|
+
def initialize_environment(env=nil)
|
|
16
|
+
require_box("default")
|
|
17
|
+
|
|
18
|
+
env ||= environment
|
|
19
|
+
env.execute("vagrant", "box", "add", "base", box_path("default")).should succeed
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "forwards ports properly" do
|
|
23
|
+
initialize_environment
|
|
24
|
+
|
|
25
|
+
guest_port = 3000
|
|
26
|
+
host_port = 5000
|
|
27
|
+
|
|
28
|
+
environment.workdir.join("Vagrantfile").open("w+") do |f|
|
|
29
|
+
f.puts(<<VFILE)
|
|
30
|
+
Vagrant::Config.run do |config|
|
|
31
|
+
config.vm.box = "base"
|
|
32
|
+
config.vm.forward_port #{guest_port}, #{host_port}
|
|
33
|
+
end
|
|
34
|
+
VFILE
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
assert_execute("vagrant", "up")
|
|
38
|
+
assert_host_to_vm_network("http://localhost:#{host_port}/", guest_port)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "properly overrides port forwarding from the same port" do
|
|
42
|
+
initialize_environment
|
|
43
|
+
|
|
44
|
+
guest_port = 3000
|
|
45
|
+
host_port = 5000
|
|
46
|
+
|
|
47
|
+
environment.workdir.join("Vagrantfile").open("w+") do |f|
|
|
48
|
+
f.puts(<<VFILE)
|
|
49
|
+
Vagrant::Config.run do |config|
|
|
50
|
+
config.vm.box = "base"
|
|
51
|
+
config.vm.forward_port #{guest_port}, #{host_port - 1}
|
|
52
|
+
config.vm.forward_port #{guest_port}, #{host_port}
|
|
53
|
+
end
|
|
54
|
+
VFILE
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
assert_execute("vagrant", "up")
|
|
58
|
+
assert_host_to_vm_network("http://localhost:#{host_port}/", guest_port)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "detects and corrects port collisions" do
|
|
62
|
+
# The two environments need to share a VBOX_USER_HOME so that the
|
|
63
|
+
# VM's go into the same place.
|
|
64
|
+
env_vars = { "VBOX_USER_HOME" => Tempdir.new("vagrant").to_s }
|
|
65
|
+
environment = new_environment(env_vars)
|
|
66
|
+
environment2 = new_environment(env_vars)
|
|
67
|
+
|
|
68
|
+
# For this test we create two isolated environments and `vagrant up`
|
|
69
|
+
# in each. SSH would collide, so this verifies that it won't!
|
|
70
|
+
begin
|
|
71
|
+
initialize_environment(environment)
|
|
72
|
+
initialize_environment(environment2)
|
|
73
|
+
|
|
74
|
+
# Build both environments up.
|
|
75
|
+
environment.execute("vagrant", "init").should succeed
|
|
76
|
+
environment.execute("vagrant", "up").should succeed
|
|
77
|
+
environment2.execute("vagrant", "init").should succeed
|
|
78
|
+
environment2.execute("vagrant", "up").should succeed
|
|
79
|
+
|
|
80
|
+
# Touch files in both environments
|
|
81
|
+
environment.execute("vagrant", "ssh", "-c", "touch /vagrant/foo").should succeed
|
|
82
|
+
environment2.execute("vagrant", "ssh", "-c", "touch /vagrant/bar").should succeed
|
|
83
|
+
|
|
84
|
+
# Verify that the files exist in each folder, properly
|
|
85
|
+
environment.workdir.join("foo").exist?.should be
|
|
86
|
+
environment2.workdir.join("bar").exist?.should be
|
|
87
|
+
ensure
|
|
88
|
+
environment.close
|
|
89
|
+
environment2.close
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "refuses to resume if there is a port collision" do
|
|
94
|
+
# The two environments need to share a VBOX_USER_HOME so that the
|
|
95
|
+
# VM's go into the same place.
|
|
96
|
+
env_vars = { "VBOX_USER_HOME" => Tempdir.new("vagrant").path }
|
|
97
|
+
environment = new_environment(env_vars)
|
|
98
|
+
environment2 = new_environment(env_vars)
|
|
99
|
+
|
|
100
|
+
# For this test we `vagrant up` one environment, suspend it,
|
|
101
|
+
# `vagrant up` another environment, and then come back to the first
|
|
102
|
+
# and try to resume. SSH would collide so it should error.
|
|
103
|
+
begin
|
|
104
|
+
# Bring up the first environment and suspend it
|
|
105
|
+
initialize_environment(environment)
|
|
106
|
+
environment.execute("vagrant", "init").should succeed
|
|
107
|
+
environment.execute("vagrant", "up").should succeed
|
|
108
|
+
environment.execute("vagrant", "suspend").should succeed
|
|
109
|
+
|
|
110
|
+
# Bring up the second environment
|
|
111
|
+
initialize_environment(environment2)
|
|
112
|
+
environment2.execute("vagrant", "init").should succeed
|
|
113
|
+
environment2.execute("vagrant", "up").should succeed
|
|
114
|
+
|
|
115
|
+
# Attempt to bring up the first environment again, but it should
|
|
116
|
+
# result in an error.
|
|
117
|
+
result = environment.execute("vagrant", "up")
|
|
118
|
+
result.should_not succeed
|
|
119
|
+
result.stderr.should match_output(:resume_port_collision)
|
|
120
|
+
ensure
|
|
121
|
+
environment.close
|
|
122
|
+
environment2.close
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
|
2
|
+
require "acceptance/support/shared/command_examples"
|
|
3
|
+
|
|
4
|
+
describe "vagrant package" do
|
|
5
|
+
include_context "acceptance"
|
|
6
|
+
|
|
7
|
+
# This creates an initial environment that is ready for a "vagrant up"
|
|
8
|
+
def initialize_valid_environment
|
|
9
|
+
require_box("default")
|
|
10
|
+
|
|
11
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
12
|
+
assert_execute("vagrant", "init")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "can package a running virtual machine" do
|
|
16
|
+
initialize_valid_environment
|
|
17
|
+
|
|
18
|
+
assert_execute("vagrant", "up")
|
|
19
|
+
assert_execute("vagrant", "package")
|
|
20
|
+
environment.workdir.join("package.box").should be_file
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "can package a `base` VM directly from VirtualBox" do
|
|
24
|
+
initialize_valid_environment
|
|
25
|
+
|
|
26
|
+
# Use a custom Vagrantfile that sets the VM name to `foo`
|
|
27
|
+
environment.workdir.join("Vagrantfile").open("w+") do |f|
|
|
28
|
+
f.write(<<-vf)
|
|
29
|
+
Vagrant::Config.run do |config|
|
|
30
|
+
config.vm.box = "base"
|
|
31
|
+
config.vm.customize ["modifyvm", :id, "--name", "foo"]
|
|
32
|
+
end
|
|
33
|
+
vf
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Bring up the VM
|
|
37
|
+
assert_execute("vagrant", "up")
|
|
38
|
+
|
|
39
|
+
# Remove the Vagrantfile so it doesn't use that
|
|
40
|
+
environment.workdir.join("Vagrantfile").unlink
|
|
41
|
+
|
|
42
|
+
# Now package the base VM
|
|
43
|
+
assert_execute("vagrant", "package", "--base", "foo")
|
|
44
|
+
environment.workdir.join("package.box").should be_file
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require File.expand_path("../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe "vagrant provisioning basics" do
|
|
4
|
+
include_context "acceptance"
|
|
5
|
+
|
|
6
|
+
it "doesn't provision with `--no-provision` set" do
|
|
7
|
+
require_box("default")
|
|
8
|
+
|
|
9
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
10
|
+
|
|
11
|
+
environment.workdir.join("Vagrantfile").open("w+") do |f|
|
|
12
|
+
f.write(<<-vf)
|
|
13
|
+
Vagrant::Config.run do |config|
|
|
14
|
+
config.vm.box = "base"
|
|
15
|
+
config.vm.provision :shell, :inline => "echo success > /vagrant/results"
|
|
16
|
+
end
|
|
17
|
+
vf
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Bring the VM up without enabling provisioning
|
|
21
|
+
assert_execute("vagrant", "up", "--no-provision")
|
|
22
|
+
|
|
23
|
+
# Verify the file that the script creates does NOT exist
|
|
24
|
+
result_file = environment.workdir.join("results")
|
|
25
|
+
result_file.exist?.should_not be
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "can provision with multiple provisioners" do
|
|
29
|
+
# Skeleton for multiple provisioners
|
|
30
|
+
environment.skeleton!("provisioner_multi")
|
|
31
|
+
|
|
32
|
+
# Setup the basic environment
|
|
33
|
+
require_box("default")
|
|
34
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
35
|
+
|
|
36
|
+
# Bring up the VM
|
|
37
|
+
assert_execute("vagrant", "up")
|
|
38
|
+
|
|
39
|
+
# Verify the file the shell provisioner made is there, but not the
|
|
40
|
+
# Chef one.
|
|
41
|
+
environment.workdir.join("shell").exist?.should be
|
|
42
|
+
environment.workdir.join("chef_solo").exist?.should be
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "only uses the provisioners specified with `--provision-with`" do
|
|
46
|
+
# Skeleton for multiple provisioners
|
|
47
|
+
environment.skeleton!("provisioner_multi")
|
|
48
|
+
|
|
49
|
+
# Setup the basic environment
|
|
50
|
+
require_box("default")
|
|
51
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
|
52
|
+
|
|
53
|
+
# Bring up the VM, only using the shell provisioner
|
|
54
|
+
assert_execute("vagrant", "up", "--provision-with", "shell")
|
|
55
|
+
|
|
56
|
+
# Verify the file the shell provisioner made is there, but not the
|
|
57
|
+
# Chef one.
|
|
58
|
+
environment.workdir.join("shell").exist?.should be
|
|
59
|
+
environment.workdir.join("chef_solo").exist?.should_not be
|
|
60
|
+
end
|
|
61
|
+
end
|