vagrantup 1.0.7 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +91 -0
- data/LICENSE +2 -2
- data/README.md +11 -13
- data/bin/vagrant +29 -5
- data/config/default.rb +14 -9
- data/contrib/bash/completion.sh +3 -0
- data/keys/README.md +3 -3
- data/lib/vagrant.rb +156 -102
- data/lib/vagrant/action.rb +26 -47
- data/lib/vagrant/action/builder.rb +49 -23
- data/lib/vagrant/action/builtin/box_add.rb +85 -0
- data/lib/vagrant/action/builtin/call.rb +67 -0
- data/lib/vagrant/action/builtin/config_validate.rb +30 -0
- data/lib/vagrant/action/builtin/confirm.rb +38 -0
- data/lib/vagrant/action/builtin/env_set.rb +24 -0
- data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
- data/lib/vagrant/action/builtin/handle_box_url.rb +43 -0
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +117 -0
- data/lib/vagrant/action/builtin/lock.rb +57 -0
- data/lib/vagrant/action/builtin/nfs.rb +117 -0
- data/lib/vagrant/action/builtin/provision.rb +70 -0
- data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
- data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
- data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
- data/lib/vagrant/action/general/package.rb +19 -18
- data/lib/vagrant/action/hook.rb +103 -0
- data/lib/vagrant/action/runner.rb +21 -5
- data/lib/vagrant/action/warden.rb +20 -9
- data/lib/vagrant/box.rb +75 -26
- data/lib/vagrant/box_collection.rb +301 -35
- data/lib/vagrant/cli.rb +20 -14
- data/lib/vagrant/config.rb +23 -9
- data/lib/vagrant/config/loader.rb +131 -36
- data/lib/vagrant/config/v1.rb +9 -0
- data/lib/vagrant/config/v1/dummy_config.rb +13 -0
- data/lib/vagrant/config/v1/loader.rb +105 -0
- data/lib/vagrant/config/v1/root.rb +60 -0
- data/lib/vagrant/config/v2.rb +9 -0
- data/lib/vagrant/config/v2/dummy_config.rb +13 -0
- data/lib/vagrant/config/v2/loader.rb +141 -0
- data/lib/vagrant/config/v2/root.rb +105 -0
- data/lib/vagrant/config/v2/util.rb +21 -0
- data/lib/vagrant/config/version_base.rb +80 -0
- data/lib/vagrant/downloaders/base.rb +0 -3
- data/lib/vagrant/downloaders/file.rb +10 -4
- data/lib/vagrant/downloaders/http.rb +29 -10
- data/lib/vagrant/environment.rb +447 -240
- data/lib/vagrant/errors.rb +138 -97
- data/lib/vagrant/hosts.rb +3 -12
- data/lib/vagrant/machine.rb +325 -0
- data/lib/vagrant/machine_state.rb +45 -0
- data/lib/vagrant/plugin.rb +3 -78
- data/lib/vagrant/plugin/v1.rb +19 -0
- data/lib/vagrant/plugin/v1/command.rb +169 -0
- data/lib/vagrant/plugin/v1/communicator.rb +98 -0
- data/lib/vagrant/plugin/v1/config.rb +112 -0
- data/lib/vagrant/plugin/v1/errors.rb +15 -0
- data/lib/vagrant/plugin/v1/guest.rb +92 -0
- data/lib/vagrant/plugin/v1/host.rb +66 -0
- data/lib/vagrant/plugin/v1/manager.rb +131 -0
- data/lib/vagrant/plugin/v1/plugin.rb +229 -0
- data/lib/vagrant/plugin/v1/provider.rb +68 -0
- data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
- data/lib/vagrant/plugin/v2.rb +22 -0
- data/lib/vagrant/plugin/v2/command.rb +234 -0
- data/lib/vagrant/plugin/v2/communicator.rb +98 -0
- data/lib/vagrant/plugin/v2/components.rb +29 -0
- data/lib/vagrant/plugin/v2/config.rb +101 -0
- data/lib/vagrant/plugin/v2/errors.rb +15 -0
- data/lib/vagrant/plugin/v2/guest.rb +92 -0
- data/lib/vagrant/plugin/v2/host.rb +66 -0
- data/lib/vagrant/plugin/v2/manager.rb +158 -0
- data/lib/vagrant/plugin/v2/plugin.rb +217 -0
- data/lib/vagrant/plugin/v2/provider.rb +69 -0
- data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
- data/lib/vagrant/registry.rb +43 -17
- data/lib/vagrant/ssh.rb +15 -9
- data/lib/vagrant/ui.rb +7 -5
- data/lib/vagrant/util/is_port_open.rb +1 -1
- data/lib/vagrant/util/platform.rb +19 -0
- data/lib/vagrant/util/retryable.rb +8 -2
- data/lib/vagrant/util/safe_exec.rb +2 -2
- data/lib/vagrant/util/scoped_hash_override.rb +45 -0
- data/lib/vagrant/util/ssh.rb +126 -0
- data/lib/vagrant/util/string_block_editor.rb +75 -0
- data/lib/vagrant/util/subprocess.rb +33 -10
- data/lib/vagrant/util/which.rb +43 -0
- data/lib/vagrant/version.rb +1 -1
- data/plugins/README.md +5 -0
- data/plugins/commands/box/command/add.rb +46 -0
- data/plugins/commands/box/command/list.rb +41 -0
- data/plugins/commands/box/command/remove.rb +37 -0
- data/plugins/commands/box/command/repackage.rb +43 -0
- data/plugins/commands/box/command/root.rb +75 -0
- data/plugins/commands/box/plugin.rb +15 -0
- data/plugins/commands/destroy/command.rb +31 -0
- data/plugins/commands/destroy/plugin.rb +18 -0
- data/plugins/commands/halt/command.rb +33 -0
- data/plugins/commands/halt/plugin.rb +18 -0
- data/{lib/vagrant/command/init.rb → plugins/commands/init/command.rb} +4 -4
- data/plugins/commands/init/plugin.rb +18 -0
- data/plugins/commands/package/command.rb +83 -0
- data/plugins/commands/package/plugin.rb +18 -0
- data/plugins/commands/plugin/action.rb +52 -0
- data/plugins/commands/plugin/action/bundler_check.rb +25 -0
- data/plugins/commands/plugin/action/install_gem.rb +70 -0
- data/plugins/commands/plugin/action/license_plugin.rb +54 -0
- data/plugins/commands/plugin/action/list_plugins.rb +54 -0
- data/plugins/commands/plugin/action/prune_gems.rb +149 -0
- data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
- data/plugins/commands/plugin/command/base.rb +22 -0
- data/plugins/commands/plugin/command/install.rb +39 -0
- data/plugins/commands/plugin/command/license.rb +31 -0
- data/plugins/commands/plugin/command/list.rb +28 -0
- data/plugins/commands/plugin/command/root.rb +75 -0
- data/plugins/commands/plugin/command/uninstall.rb +28 -0
- data/plugins/commands/plugin/gem_helper.rb +74 -0
- data/plugins/commands/plugin/plugin.rb +22 -0
- data/plugins/commands/plugin/state_file.rb +57 -0
- data/plugins/commands/provision/command.rb +34 -0
- data/plugins/commands/provision/plugin.rb +18 -0
- data/plugins/commands/reload/command.rb +37 -0
- data/plugins/commands/reload/plugin.rb +18 -0
- data/plugins/commands/resume/command.rb +25 -0
- data/plugins/commands/resume/plugin.rb +17 -0
- data/{lib/vagrant/command/ssh.rb → plugins/commands/ssh/command.rb} +17 -41
- data/plugins/commands/ssh/plugin.rb +17 -0
- data/{lib/vagrant/command/ssh_config.rb → plugins/commands/ssh_config/command.rb} +14 -16
- data/plugins/commands/ssh_config/plugin.rb +18 -0
- data/plugins/commands/status/command.rb +39 -0
- data/plugins/commands/status/plugin.rb +18 -0
- data/plugins/commands/suspend/command.rb +25 -0
- data/plugins/commands/suspend/plugin.rb +18 -0
- data/plugins/commands/up/command.rb +45 -0
- data/plugins/commands/up/plugin.rb +17 -0
- data/{lib/vagrant/command → plugins/commands/up}/start_mixins.rb +6 -6
- data/{lib/vagrant/communication/ssh.rb → plugins/communicators/ssh/communicator.rb} +139 -52
- data/plugins/communicators/ssh/plugin.rb +19 -0
- data/plugins/guests/arch/guest.rb +41 -0
- data/plugins/guests/arch/plugin.rb +15 -0
- data/{lib/vagrant/guest/debian.rb → plugins/guests/debian/guest.rb} +21 -13
- data/plugins/guests/debian/plugin.rb +15 -0
- data/{lib/vagrant/guest/fedora.rb → plugins/guests/fedora/guest.rb} +19 -14
- data/plugins/guests/fedora/plugin.rb +15 -0
- data/plugins/guests/freebsd/config.rb +13 -0
- data/plugins/guests/freebsd/guest.rb +70 -0
- data/plugins/guests/freebsd/plugin.rb +20 -0
- data/plugins/guests/gentoo/guest.rb +51 -0
- data/plugins/guests/gentoo/plugin.rb +15 -0
- data/plugins/guests/linux/config.rb +13 -0
- data/{lib/vagrant/guest/linux.rb → plugins/guests/linux/guest.rb} +35 -34
- data/plugins/guests/linux/plugin.rb +20 -0
- data/plugins/guests/openbsd/guest.rb +13 -0
- data/plugins/guests/openbsd/plugin.rb +15 -0
- data/{lib/vagrant/guest/redhat.rb → plugins/guests/redhat/guest.rb} +22 -15
- data/plugins/guests/redhat/plugin.rb +15 -0
- data/plugins/guests/solaris/config.rb +18 -0
- data/plugins/guests/solaris/guest.rb +73 -0
- data/plugins/guests/solaris/plugin.rb +20 -0
- data/plugins/guests/suse/guest.rb +24 -0
- data/plugins/guests/suse/plugin.rb +15 -0
- data/plugins/guests/ubuntu/guest.rb +44 -0
- data/plugins/guests/ubuntu/plugin.rb +15 -0
- data/{lib/vagrant/hosts/arch.rb → plugins/hosts/arch/host.rb} +18 -5
- data/plugins/hosts/arch/plugin.rb +15 -0
- data/{lib/vagrant/hosts/bsd.rb → plugins/hosts/bsd/host.rb} +16 -11
- data/plugins/hosts/bsd/plugin.rb +15 -0
- data/{lib/vagrant/hosts/fedora.rb → plugins/hosts/fedora/host.rb} +8 -4
- data/plugins/hosts/fedora/plugin.rb +15 -0
- data/{lib/vagrant/hosts/freebsd.rb → plugins/hosts/freebsd/host.rb} +10 -8
- data/plugins/hosts/freebsd/plugin.rb +15 -0
- data/{lib/vagrant/hosts/gentoo.rb → plugins/hosts/gentoo/host.rb} +7 -3
- data/plugins/hosts/gentoo/plugin.rb +15 -0
- data/{lib/vagrant/hosts/linux.rb → plugins/hosts/linux/host.rb} +12 -11
- data/plugins/hosts/linux/plugin.rb +15 -0
- data/{lib/vagrant/hosts/opensuse.rb → plugins/hosts/opensuse/host.rb} +8 -4
- data/plugins/hosts/opensuse/plugin.rb +15 -0
- data/{lib/vagrant/hosts/windows.rb → plugins/hosts/windows/host.rb} +5 -4
- data/plugins/hosts/windows/plugin.rb +15 -0
- data/plugins/kernel_v1/config/nfs.rb +20 -0
- data/plugins/kernel_v1/config/package.rb +17 -0
- data/plugins/kernel_v1/config/ssh.rb +46 -0
- data/plugins/kernel_v1/config/vagrant.rb +31 -0
- data/plugins/kernel_v1/config/vm.rb +184 -0
- data/plugins/kernel_v1/plugin.rb +44 -0
- data/plugins/kernel_v2/config/nfs.rb +10 -0
- data/plugins/kernel_v2/config/package.rb +9 -0
- data/plugins/kernel_v2/config/ssh.rb +35 -0
- data/plugins/kernel_v2/config/vagrant.rb +9 -0
- data/plugins/kernel_v2/config/vm.rb +314 -0
- data/plugins/kernel_v2/config/vm_provisioner.rb +40 -0
- data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
- data/plugins/kernel_v2/plugin.rb +44 -0
- data/plugins/providers/virtualbox/action.rb +308 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/boot.rb +12 -16
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/check_accessible.rb +5 -5
- data/plugins/providers/virtualbox/action/check_created.rb +21 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/check_guest_additions.rb +18 -11
- data/plugins/providers/virtualbox/action/check_running.rb +21 -0
- data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clean_machine_folder.rb +5 -5
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_forwarded_ports.rb +4 -4
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_network_interfaces.rb +4 -4
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_shared_folders.rb +4 -5
- data/plugins/providers/virtualbox/action/created.rb +20 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/customize.rb +7 -7
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/destroy.rb +5 -5
- data/plugins/providers/virtualbox/action/destroy_confirm.rb +17 -0
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
- data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/export.rb +7 -7
- data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/forward_ports.rb +29 -42
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/import.rb +15 -12
- data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
- data/plugins/providers/virtualbox/action/is_running.rb +20 -0
- data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/match_mac_address.rb +5 -5
- data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
- data/plugins/providers/virtualbox/action/network.rb +366 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/package.rb +4 -7
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/package_vagrantfile.rb +5 -8
- data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +51 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/prune_nfs_exports.rb +5 -5
- data/plugins/providers/virtualbox/action/resume.rb +25 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/sane_defaults.rb +41 -32
- data/plugins/providers/virtualbox/action/set_name.rb +40 -0
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/setup_package_files.rb +5 -8
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/share_folders.rb +24 -25
- data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/suspend.rb +5 -5
- data/plugins/providers/virtualbox/config.rb +82 -0
- data/plugins/providers/virtualbox/driver/base.rb +344 -0
- data/plugins/providers/virtualbox/driver/meta.rb +142 -0
- data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_2.rb +475 -0
- data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
- data/plugins/providers/virtualbox/plugin.rb +42 -0
- data/plugins/providers/virtualbox/provider.rb +92 -0
- data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
- data/plugins/provisioners/chef/config/base.rb +65 -0
- data/plugins/provisioners/chef/config/chef_client.rb +39 -0
- data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
- data/plugins/provisioners/chef/plugin.rb +33 -0
- data/plugins/provisioners/chef/provisioner/base.rb +91 -0
- data/plugins/provisioners/chef/provisioner/chef_client.rb +103 -0
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +182 -0
- data/plugins/provisioners/puppet/config/puppet.rb +70 -0
- data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
- data/plugins/provisioners/puppet/plugin.rb +33 -0
- data/plugins/provisioners/puppet/provisioner/puppet.rb +110 -0
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
- data/plugins/provisioners/shell/config.rb +46 -0
- data/plugins/provisioners/shell/plugin.rb +23 -0
- data/plugins/provisioners/shell/provisioner.rb +66 -0
- data/templates/commands/init/Vagrantfile.erb +33 -21
- data/templates/commands/ssh_config/config.erb +1 -0
- data/templates/config/messages.erb +14 -0
- data/templates/config/validation_failed.erb +3 -3
- data/templates/guests/arch/network_dhcp.erb +4 -7
- data/templates/guests/arch/network_static.erb +6 -7
- data/templates/guests/debian/network_dhcp.erb +5 -0
- data/templates/locales/en.yml +336 -100
- data/templates/rgloader.rb +9 -0
- data/test/acceptance/support/isolated_environment.rb +3 -2
- data/test/support/tempdir.rb +13 -4
- data/test/unit/base.rb +6 -0
- data/test/unit/support/dummy_provider.rb +16 -0
- data/test/unit/support/isolated_environment.rb +132 -0
- data/test/unit/support/shared/base_context.rb +74 -0
- data/test/unit/vagrant/action/builder_test.rb +88 -48
- data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
- data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
- data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
- data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
- data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
- data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
- data/test/unit/vagrant/action/hook_test.rb +101 -0
- data/test/unit/vagrant/action/runner_test.rb +15 -9
- data/test/unit/vagrant/box_collection_test.rb +219 -38
- data/test/unit/vagrant/box_test.rb +94 -19
- data/test/unit/vagrant/cli_test.rb +27 -0
- data/test/unit/vagrant/config/loader_test.rb +154 -49
- data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
- data/test/unit/vagrant/config/v1/root_test.rb +40 -0
- data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
- data/test/unit/vagrant/config/v2/root_test.rb +97 -0
- data/test/unit/vagrant/config/v2/util_test.rb +21 -0
- data/test/unit/vagrant/config_test.rb +40 -1
- data/test/unit/vagrant/downloaders/base_test.rb +0 -4
- data/test/unit/vagrant/downloaders/file_test.rb +21 -9
- data/test/unit/vagrant/downloaders/http_test.rb +4 -0
- data/test/unit/vagrant/environment_test.rb +414 -63
- data/test/unit/vagrant/hosts_test.rb +10 -9
- data/test/unit/vagrant/machine_state_test.rb +26 -0
- data/test/unit/vagrant/machine_test.rb +418 -0
- data/test/unit/vagrant/{command/base_test.rb → plugin/v1/command_test.rb} +2 -9
- data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
- data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
- data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
- data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
- data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
- data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
- data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
- data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v2/manager_test.rb +157 -0
- data/test/unit/vagrant/plugin/v2/plugin_test.rb +287 -0
- data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
- data/test/unit/vagrant/registry_test.rb +59 -5
- data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
- data/test/unit/vagrant/util/ssh_test.rb +30 -0
- data/test/unit/vagrant/util/string_block_editor_test.rb +98 -0
- data/test/unit/vagrant/util/which_test.rb +43 -0
- data/test/unit/vagrant_test.rb +42 -13
- data/vagrant.gemspec +6 -7
- data/vagrant.gemspecbak +6 -7
- metadata +273 -358
- data/lib/vagrant/action/box/destroy.rb +0 -25
- data/lib/vagrant/action/box/download.rb +0 -84
- data/lib/vagrant/action/box/package.rb +0 -19
- data/lib/vagrant/action/box/unpackage.rb +0 -61
- data/lib/vagrant/action/box/verify.rb +0 -23
- data/lib/vagrant/action/builtin.rb +0 -171
- data/lib/vagrant/action/env/set.rb +0 -21
- data/lib/vagrant/action/environment.rb +0 -12
- data/lib/vagrant/action/general/check_virtualbox.rb +0 -28
- data/lib/vagrant/action/general/validate.rb +0 -18
- data/lib/vagrant/action/vm/check_box.rb +0 -33
- data/lib/vagrant/action/vm/check_port_collisions.rb +0 -89
- data/lib/vagrant/action/vm/default_name.rb +0 -22
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +0 -20
- data/lib/vagrant/action/vm/discard_state.rb +0 -22
- data/lib/vagrant/action/vm/halt.rb +0 -32
- data/lib/vagrant/action/vm/host_name.rb +0 -21
- data/lib/vagrant/action/vm/network.rb +0 -403
- data/lib/vagrant/action/vm/nfs.rb +0 -196
- data/lib/vagrant/action/vm/provision.rb +0 -61
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +0 -26
- data/lib/vagrant/action/vm/resume.rb +0 -20
- data/lib/vagrant/command.rb +0 -24
- data/lib/vagrant/command/base.rb +0 -167
- data/lib/vagrant/command/box.rb +0 -58
- data/lib/vagrant/command/box_add.rb +0 -37
- data/lib/vagrant/command/box_list.rb +0 -28
- data/lib/vagrant/command/box_remove.rb +0 -27
- data/lib/vagrant/command/box_repackage.rb +0 -27
- data/lib/vagrant/command/destroy.rb +0 -64
- data/lib/vagrant/command/gem.rb +0 -39
- data/lib/vagrant/command/halt.rb +0 -39
- data/lib/vagrant/command/package.rb +0 -75
- data/lib/vagrant/command/provision.rb +0 -40
- data/lib/vagrant/command/reload.rb +0 -39
- data/lib/vagrant/command/resume.rb +0 -33
- data/lib/vagrant/command/status.rb +0 -36
- data/lib/vagrant/command/suspend.rb +0 -33
- data/lib/vagrant/command/up.rb +0 -40
- data/lib/vagrant/communication.rb +0 -7
- data/lib/vagrant/communication/base.rb +0 -56
- data/lib/vagrant/config/base.rb +0 -82
- data/lib/vagrant/config/error_recorder.rb +0 -19
- data/lib/vagrant/config/nfs.rb +0 -8
- data/lib/vagrant/config/package.rb +0 -7
- data/lib/vagrant/config/ssh.rb +0 -27
- data/lib/vagrant/config/top.rb +0 -72
- data/lib/vagrant/config/vagrant.rb +0 -14
- data/lib/vagrant/config/vm.rb +0 -168
- data/lib/vagrant/config/vm/provisioner.rb +0 -52
- data/lib/vagrant/config/vm/sub_vm.rb +0 -17
- data/lib/vagrant/data_store.rb +0 -92
- data/lib/vagrant/driver.rb +0 -8
- data/lib/vagrant/driver/virtualbox.rb +0 -134
- data/lib/vagrant/driver/virtualbox_4_0.rb +0 -459
- data/lib/vagrant/driver/virtualbox_4_1.rb +0 -459
- data/lib/vagrant/driver/virtualbox_4_2.rb +0 -606
- data/lib/vagrant/driver/virtualbox_base.rb +0 -326
- data/lib/vagrant/guest.rb +0 -18
- data/lib/vagrant/guest/arch.rb +0 -56
- data/lib/vagrant/guest/base.rb +0 -99
- data/lib/vagrant/guest/freebsd.rb +0 -86
- data/lib/vagrant/guest/gentoo.rb +0 -46
- data/lib/vagrant/guest/linux/config.rb +0 -19
- data/lib/vagrant/guest/linux/error.rb +0 -9
- data/lib/vagrant/guest/openbsd.rb +0 -20
- data/lib/vagrant/guest/solaris.rb +0 -118
- data/lib/vagrant/guest/suse.rb +0 -17
- data/lib/vagrant/guest/ubuntu.rb +0 -23
- data/lib/vagrant/hosts/base.rb +0 -66
- data/lib/vagrant/provisioners.rb +0 -12
- data/lib/vagrant/provisioners/base.rb +0 -44
- data/lib/vagrant/provisioners/chef.rb +0 -168
- data/lib/vagrant/provisioners/chef_client.rb +0 -132
- data/lib/vagrant/provisioners/chef_solo.rb +0 -234
- data/lib/vagrant/provisioners/puppet.rb +0 -176
- data/lib/vagrant/provisioners/puppet_server.rb +0 -78
- data/lib/vagrant/provisioners/shell.rb +0 -103
- data/lib/vagrant/vm.rb +0 -195
- data/test/buildbot/README.md +0 -72
- data/test/buildbot/buildbot_config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/loader.py +0 -24
- data/test/buildbot/buildbot_config/config/master.py +0 -24
- data/test/buildbot/buildbot_config/config/slave.py +0 -22
- data/test/buildbot/buildbot_config/master/__init__.py +0 -6
- data/test/buildbot/buildbot_config/master/builders.py +0 -78
- data/test/buildbot/buildbot_config/master/buildsteps.py +0 -100
- data/test/buildbot/buildbot_config/master/change_sources.py +0 -8
- data/test/buildbot/buildbot_config/master/schedulers.py +0 -32
- data/test/buildbot/buildbot_config/master/slaves.py +0 -60
- data/test/buildbot/buildbot_config/master/status.py +0 -52
- data/test/buildbot/master/Makefile.sample +0 -28
- data/test/buildbot/master/buildbot.tac +0 -36
- data/test/buildbot/master/master.cfg +0 -67
- data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
- data/test/buildbot/master/public_html/default.css +0 -545
- data/test/buildbot/master/public_html/favicon.ico +0 -0
- data/test/buildbot/master/public_html/robots.txt +0 -10
- data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +0 -356
- data/test/buildbot/master/public_html/static/css/prettify.css +0 -97
- data/test/buildbot/master/public_html/static/css/syntax.css +0 -60
- data/test/buildbot/master/public_html/static/css/vagrant.base.css +0 -205
- data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
- data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
- data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +0 -80
- data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +0 -4
- data/test/buildbot/master/templates/authfail.html +0 -9
- data/test/buildbot/master/templates/build.html +0 -205
- data/test/buildbot/master/templates/builder.html +0 -118
- data/test/buildbot/master/templates/builders.html +0 -33
- data/test/buildbot/master/templates/buildslave.html +0 -72
- data/test/buildbot/master/templates/buildslaves.html +0 -70
- data/test/buildbot/master/templates/change.html +0 -15
- data/test/buildbot/master/templates/layouts/base.html +0 -58
- data/test/buildbot/master/templates/macros/box.html +0 -37
- data/test/buildbot/master/templates/macros/build_line.html +0 -50
- data/test/buildbot/master/templates/macros/change.html +0 -81
- data/test/buildbot/master/templates/macros/forms.html +0 -300
- data/test/buildbot/master/templates/root.html +0 -42
- data/test/buildbot/master/templates/waterfall.html +0 -53
- data/test/buildbot/requirements.txt +0 -4
- data/test/buildbot/scripts/deploy.sh +0 -38
- data/test/buildbot/scripts/setup.sh +0 -107
- data/test/buildbot/slave/buildbot.tac +0 -43
- data/test/buildbot/slave/info/admin +0 -1
- data/test/buildbot/slave/info/host +0 -1
- data/test/buildbot/tests/__init__.py +0 -0
- data/test/buildbot/tests/master/__init__.py +0 -0
- data/test/buildbot/tests/master/test_slaves.py +0 -41
- data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
- data/test/unit/vagrant/action/environment_test.rb +0 -16
- data/test/unit/vagrant/config/base_test.rb +0 -48
- data/test/unit/vagrant/config/ssh_test.rb +0 -17
- data/test/unit/vagrant/config/top_test.rb +0 -69
- data/test/unit/vagrant/config/vm_test.rb +0 -71
- data/test/unit/vagrant/data_store_test.rb +0 -79
- data/test/unit_legacy/locales/en.yml +0 -8
- data/test/unit_legacy/test_helper.rb +0 -32
- data/test/unit_legacy/vagrant/action/box/destroy_test.rb +0 -18
- data/test/unit_legacy/vagrant/action/box/download_test.rb +0 -125
- data/test/unit_legacy/vagrant/action/box/package_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +0 -84
- data/test/unit_legacy/vagrant/action/box/verify_test.rb +0 -30
- data/test/unit_legacy/vagrant/action/env/set_test.rb +0 -24
- data/test/unit_legacy/vagrant/action/general/package_test.rb +0 -268
- data/test/unit_legacy/vagrant/action/general/validate_test.rb +0 -31
- data/test/unit_legacy/vagrant/action/vm/boot_test.rb +0 -66
- data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +0 -61
- data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +0 -61
- data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +0 -9
- data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +0 -84
- data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -52
- data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +0 -22
- data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +0 -40
- data/test/unit_legacy/vagrant/action/vm/customize_test.rb +0 -37
- data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -49
- data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +0 -45
- data/test/unit_legacy/vagrant/action/vm/export_test.rb +0 -107
- data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +0 -77
- data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +0 -197
- data/test/unit_legacy/vagrant/action/vm/halt_test.rb +0 -79
- data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +0 -36
- data/test/unit_legacy/vagrant/action/vm/import_test.rb +0 -66
- data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +0 -40
- data/test/unit_legacy/vagrant/action/vm/modify_test.rb +0 -38
- data/test/unit_legacy/vagrant/action/vm/network_test.rb +0 -286
- data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +0 -26
- data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +0 -260
- data/test/unit_legacy/vagrant/action/vm/package_test.rb +0 -25
- data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +0 -46
- data/test/unit_legacy/vagrant/action/vm/provision_test.rb +0 -65
- data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +0 -56
- data/test/unit_legacy/vagrant/action/vm/resume_test.rb +0 -35
- data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +0 -144
- data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +0 -35
- data/test/unit_legacy/vagrant/action_test.rb +0 -89
- data/test/unit_legacy/vagrant/box_collection_test.rb +0 -45
- data/test/unit_legacy/vagrant/box_test.rb +0 -74
- data/test/unit_legacy/vagrant/cli_test.rb +0 -35
- data/test/unit_legacy/vagrant/command/base_test.rb +0 -23
- data/test/unit_legacy/vagrant/command/group_base_test.rb +0 -15
- data/test/unit_legacy/vagrant/command/helpers_test.rb +0 -88
- data/test/unit_legacy/vagrant/command/init_test.rb +0 -10
- data/test/unit_legacy/vagrant/command/package_test.rb +0 -27
- data/test/unit_legacy/vagrant/config/base_test.rb +0 -52
- data/test/unit_legacy/vagrant/config/error_recorder_test.rb +0 -18
- data/test/unit_legacy/vagrant/config/ssh_test.rb +0 -12
- data/test/unit_legacy/vagrant/config/vagrant_test.rb +0 -35
- data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +0 -92
- data/test/unit_legacy/vagrant/config/vm_test.rb +0 -47
- data/test/unit_legacy/vagrant/config_test.rb +0 -148
- data/test/unit_legacy/vagrant/downloaders/http_test.rb +0 -93
- data/test/unit_legacy/vagrant/environment_test.rb +0 -539
- data/test/unit_legacy/vagrant/errors_test.rb +0 -42
- data/test/unit_legacy/vagrant/hosts/base_test.rb +0 -46
- data/test/unit_legacy/vagrant/hosts/bsd_test.rb +0 -53
- data/test/unit_legacy/vagrant/hosts/linux_test.rb +0 -54
- data/test/unit_legacy/vagrant/plugin_test.rb +0 -9
- data/test/unit_legacy/vagrant/provisioners/base_test.rb +0 -63
- data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +0 -190
- data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +0 -115
- data/test/unit_legacy/vagrant/provisioners/chef_test.rb +0 -209
- data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +0 -68
- data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +0 -182
- data/test/unit_legacy/vagrant/provisioners/shell_test.rb +0 -79
- data/test/unit_legacy/vagrant/ssh/session_test.rb +0 -40
- data/test/unit_legacy/vagrant/ssh_test.rb +0 -304
- data/test/unit_legacy/vagrant/systems/base_test.rb +0 -18
- data/test/unit_legacy/vagrant/systems/linux_test.rb +0 -104
- data/test/unit_legacy/vagrant/util/busy_test.rb +0 -106
- data/test/unit_legacy/vagrant/util/counter_test.rb +0 -29
- data/test/unit_legacy/vagrant/util/platform_test.rb +0 -18
- data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +0 -43
- data/test/unit_legacy/vagrant/util/template_renderer_test.rb +0 -145
- data/test/unit_legacy/vagrant/vm_test.rb +0 -300
- data/vagrant-1.1.4.gem +0 -0
- data/vagrantup-0.1.0.gem +0 -0
- data/vagrantup-0.1.1.gem +0 -0
- data/vagrantup-0.1.2.gem +0 -0
- data/vagrantup-0.1.3.gem +0 -0
- data/vagrantup-0.1.4.gem +0 -0
- data/vagrantup-0.2.0.gem +0 -0
- data/vagrantup-0.3.0.gem +0 -0
- data/vagrantup-0.3.1.gem +0 -0
- data/vagrantup-0.3.2.gem +0 -0
- data/vagrantup-0.3.3.gem +0 -0
- data/vagrantup-0.3.4.gem +0 -0
- data/vagrantup-0.4.0.gem +0 -0
- data/vagrantup-0.4.1.gem +0 -0
- data/vagrantup-0.4.3.dev.gem +0 -0
- data/vagrantup-0.5.0.gem +0 -0
- data/vagrantup-0.5.1.gem +0 -0
- data/vagrantup-0.5.2.gem +0 -0
- data/vagrantup-0.5.3.gem +0 -0
- data/vagrantup-0.5.4.gem +0 -0
- data/vagrantup-0.6.0.gem +0 -0
- data/vagrantup-0.6.1.gem +0 -0
- data/vagrantup-0.6.2.gem +0 -0
- data/vagrantup-0.6.3.gem +0 -0
- data/vagrantup-0.6.4.gem +0 -0
- data/vagrantup-0.6.5.gem +0 -0
- data/vagrantup-0.6.6.gem +0 -0
- data/vagrantup-0.6.7.gem +0 -0
- data/vagrantup-0.6.8.gem +0 -0
- data/vagrantup-0.6.9.gem +0 -0
- data/vagrantup-0.7.0.gem +0 -0
- data/vagrantup-0.7.1.gem +0 -0
- data/vagrantup-0.7.2.gem +0 -0
- data/vagrantup-0.7.3.gem +0 -0
- data/vagrantup-0.7.4.gem +0 -0
- data/vagrantup-0.7.5.gem +0 -0
- data/vagrantup-0.7.6.gem +0 -0
- data/vagrantup-0.7.7.gem +0 -0
- data/vagrantup-0.7.8.gem +0 -0
- data/vagrantup-0.8.0.gem +0 -0
- data/vagrantup-0.8.1.gem +0 -0
- data/vagrantup-0.8.10.gem +0 -0
- data/vagrantup-0.8.2.gem +0 -0
- data/vagrantup-0.8.3.gem +0 -0
- data/vagrantup-0.8.4.gem +0 -0
- data/vagrantup-0.8.5.gem +0 -0
- data/vagrantup-0.8.6.gem +0 -0
- data/vagrantup-0.8.7.gem +0 -0
- data/vagrantup-0.8.8.gem +0 -0
- data/vagrantup-0.8.9.gem +0 -0
- data/vagrantup-0.9.0.gem +0 -0
- data/vagrantup-0.9.1.gem +0 -0
- data/vagrantup-0.9.2.gem +0 -0
- data/vagrantup-0.9.3.gem +0 -0
- data/vagrantup-0.9.4.gem +0 -0
- data/vagrantup-0.9.5.gem +0 -0
- data/vagrantup-0.9.6.gem +0 -0
- data/vagrantup-0.9.7.gem +0 -0
- data/vagrantup-0.9.99.1.gem +0 -0
- data/vagrantup-0.9.99.2.gem +0 -0
- data/vagrantup-1.0.0.gem +0 -0
- data/vagrantup-1.0.1.gem +0 -0
- data/vagrantup-1.0.2.gem +0 -0
- data/vagrantup-1.0.3.gem +0 -0
- data/vagrantup-1.0.4.gem +0 -0
- data/vagrantup-1.0.5.gem +0 -0
- data/vagrantup-1.0.6.gem +0 -0
- data/vagrantup-1.1.4.gem +0 -0
|
@@ -12,15 +12,21 @@ module Vagrant
|
|
|
12
12
|
# set later always overrides those set earlier; this is how
|
|
13
13
|
# configuration "scoping" is implemented.
|
|
14
14
|
class Loader
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
# Initializes a configuration loader.
|
|
16
|
+
#
|
|
17
|
+
# @param [Registry] versions A registry of the available versions and
|
|
18
|
+
# their associated loaders.
|
|
19
|
+
# @param [Array] version_order An array of the order of the versions
|
|
20
|
+
# in the registry. This is used to determine if upgrades are
|
|
21
|
+
# necessary. Additionally, the last version in this order is always
|
|
22
|
+
# considered the "current" version.
|
|
23
|
+
def initialize(versions, version_order)
|
|
24
|
+
@logger = Log4r::Logger.new("vagrant::config::loader")
|
|
25
|
+
@config_cache = {}
|
|
26
|
+
@proc_cache = {}
|
|
27
|
+
@sources = {}
|
|
28
|
+
@versions = versions
|
|
29
|
+
@version_order = version_order
|
|
24
30
|
end
|
|
25
31
|
|
|
26
32
|
# Set the configuration data for the given name.
|
|
@@ -35,7 +41,7 @@ module Vagrant
|
|
|
35
41
|
# `set` multiple times with the same name will override any previously
|
|
36
42
|
# set values. In this way, the last set data for a given name wins.
|
|
37
43
|
def set(name, sources)
|
|
38
|
-
@logger.
|
|
44
|
+
@logger.info("Set #{name.inspect} = #{sources.inspect}")
|
|
39
45
|
|
|
40
46
|
# Sources should be an array
|
|
41
47
|
sources = [sources] if !sources.kind_of?(Array)
|
|
@@ -59,40 +65,98 @@ module Vagrant
|
|
|
59
65
|
@sources[name] = procs
|
|
60
66
|
end
|
|
61
67
|
|
|
62
|
-
# This loads the
|
|
68
|
+
# This loads the configuration sources in the given order and returns
|
|
63
69
|
# an actual configuration object that is ready to be used.
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
#
|
|
71
|
+
# @param [Array<Symbol>] order The order of configuration to load.
|
|
72
|
+
# @return [Object] The configuration object. This is different for
|
|
73
|
+
# each configuration version.
|
|
74
|
+
def load(order)
|
|
75
|
+
@logger.info("Loading configuration in order: #{order.inspect}")
|
|
66
76
|
|
|
67
|
-
unknown_sources = @sources.keys -
|
|
77
|
+
unknown_sources = @sources.keys - order
|
|
68
78
|
if !unknown_sources.empty?
|
|
69
79
|
# TODO: Raise exception here perhaps.
|
|
70
80
|
@logger.error("Unknown config sources: #{unknown_sources.inspect}")
|
|
71
81
|
end
|
|
72
82
|
|
|
73
|
-
#
|
|
74
|
-
|
|
83
|
+
# Get the current version config class to use
|
|
84
|
+
current_version = @version_order.last
|
|
85
|
+
current_config_klass = @versions.get(current_version)
|
|
86
|
+
|
|
87
|
+
# This will hold our result
|
|
88
|
+
result = current_config_klass.init
|
|
75
89
|
|
|
76
|
-
|
|
90
|
+
# Keep track of the warnings and errors that may come from
|
|
91
|
+
# upgrading the Vagrantfiles
|
|
92
|
+
warnings = []
|
|
93
|
+
errors = []
|
|
94
|
+
|
|
95
|
+
order.each do |key|
|
|
77
96
|
next if !@sources.has_key?(key)
|
|
78
97
|
|
|
79
|
-
@sources[key].each do |proc|
|
|
98
|
+
@sources[key].each do |version, proc|
|
|
80
99
|
if !@config_cache.has_key?(proc)
|
|
81
100
|
@logger.debug("Loading from: #{key} (evaluating)")
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
101
|
+
|
|
102
|
+
# Get the proper version loader for this version and load
|
|
103
|
+
version_loader = @versions.get(version)
|
|
104
|
+
version_config = version_loader.load(proc)
|
|
105
|
+
|
|
106
|
+
# Store the errors/warnings associated with loading this
|
|
107
|
+
# configuration. We'll store these for later.
|
|
108
|
+
version_warnings = []
|
|
109
|
+
version_errors = []
|
|
110
|
+
|
|
111
|
+
# If this version is not the current version, then we need
|
|
112
|
+
# to upgrade to the latest version.
|
|
113
|
+
if version != current_version
|
|
114
|
+
@logger.debug("Upgrading config from version #{version} to #{current_version}")
|
|
115
|
+
version_index = @version_order.index(version)
|
|
116
|
+
current_index = @version_order.index(current_version)
|
|
117
|
+
|
|
118
|
+
(version_index + 1).upto(current_index) do |index|
|
|
119
|
+
next_version = @version_order[index]
|
|
120
|
+
@logger.debug("Upgrading config to version #{next_version}")
|
|
121
|
+
|
|
122
|
+
# Get the loader of this version and ask it to upgrade
|
|
123
|
+
loader = @versions.get(next_version)
|
|
124
|
+
upgrade_result = loader.upgrade(version_config)
|
|
125
|
+
|
|
126
|
+
this_warnings = upgrade_result[1]
|
|
127
|
+
this_errors = upgrade_result[2]
|
|
128
|
+
@logger.debug("Upgraded to version #{next_version} with " +
|
|
129
|
+
"#{this_warnings.length} warnings and " +
|
|
130
|
+
"#{this_errors.length} errors")
|
|
131
|
+
|
|
132
|
+
# Append loading this to the version warnings and errors
|
|
133
|
+
version_warnings += this_warnings
|
|
134
|
+
version_errors += this_errors
|
|
135
|
+
|
|
136
|
+
# Store the new upgraded version
|
|
137
|
+
version_config = upgrade_result[0]
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Cache the loaded configuration along with any warnings
|
|
142
|
+
# or errors so that they can be retrieved later.
|
|
143
|
+
@config_cache[proc] = [version_config, version_warnings, version_errors]
|
|
85
144
|
else
|
|
86
145
|
@logger.debug("Loading from: #{key} (cache)")
|
|
87
146
|
end
|
|
88
147
|
|
|
89
|
-
# Merge
|
|
90
|
-
|
|
148
|
+
# Merge the configurations
|
|
149
|
+
cache_data = @config_cache[proc]
|
|
150
|
+
result = current_config_klass.merge(result, cache_data[0])
|
|
151
|
+
|
|
152
|
+
# Append the total warnings/errors
|
|
153
|
+
warnings += cache_data[1]
|
|
154
|
+
errors += cache_data[2]
|
|
91
155
|
end
|
|
92
156
|
end
|
|
93
157
|
|
|
94
|
-
@logger.debug("Configuration loaded successfully")
|
|
95
|
-
result
|
|
158
|
+
@logger.debug("Configuration loaded successfully, finalizing and returning")
|
|
159
|
+
[current_config_klass.finalize(result), warnings, errors]
|
|
96
160
|
end
|
|
97
161
|
|
|
98
162
|
protected
|
|
@@ -102,25 +166,56 @@ module Vagrant
|
|
|
102
166
|
# the configuration object and are expected to mutate this
|
|
103
167
|
# configuration object.
|
|
104
168
|
def procs_for_source(source)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
169
|
+
# Convert all pathnames to strings so we just have their path
|
|
170
|
+
source = source.to_s if source.is_a?(Pathname)
|
|
171
|
+
|
|
172
|
+
if source.is_a?(Array)
|
|
173
|
+
# An array must be formatted as [version, proc], so verify
|
|
174
|
+
# that and then return it
|
|
175
|
+
raise ArgumentError, "String source must have format [version, proc]" if source.length != 2
|
|
176
|
+
|
|
177
|
+
# Return it as an array since we're expected to return an array
|
|
178
|
+
# of [version, proc] pairs, but an array source only has one.
|
|
179
|
+
return [source]
|
|
180
|
+
elsif source.is_a?(String)
|
|
181
|
+
# Strings are considered paths, so load them
|
|
182
|
+
return procs_for_path(source)
|
|
183
|
+
else
|
|
184
|
+
raise ArgumentError, "Unknown configuration source: #{source.inspect}"
|
|
185
|
+
end
|
|
186
|
+
end
|
|
109
187
|
|
|
110
|
-
|
|
111
|
-
|
|
188
|
+
# This returns an array of `Proc` objects for the given path source.
|
|
189
|
+
#
|
|
190
|
+
# @param [String] path Path to the file which contains the proper
|
|
191
|
+
# `Vagrant.configure` calls.
|
|
192
|
+
# @return [Array<Proc>]
|
|
193
|
+
def procs_for_path(path)
|
|
194
|
+
@logger.debug("Load procs for pathname: #{path}")
|
|
112
195
|
|
|
196
|
+
return Config.capture_configures do
|
|
113
197
|
begin
|
|
114
|
-
|
|
115
|
-
Kernel.load source
|
|
116
|
-
end
|
|
198
|
+
Kernel.load path
|
|
117
199
|
rescue SyntaxError => e
|
|
118
200
|
# Report syntax errors in a nice way.
|
|
119
201
|
raise Errors::VagrantfileSyntaxError, :file => e.message
|
|
202
|
+
rescue SystemExit
|
|
203
|
+
# Continue raising that exception...
|
|
204
|
+
raise
|
|
205
|
+
rescue Vagrant::Errors::VagrantError
|
|
206
|
+
# Continue raising known Vagrant errors since they already
|
|
207
|
+
# contain well worded error messages and context.
|
|
208
|
+
raise
|
|
209
|
+
rescue Exception => e
|
|
210
|
+
@logger.error("Vagrantfile load error: #{e.message}")
|
|
211
|
+
@logger.error(e.backtrace.join("\n"))
|
|
212
|
+
|
|
213
|
+
# Report the generic exception
|
|
214
|
+
raise Errors::VagrantfileLoadError,
|
|
215
|
+
:path => path,
|
|
216
|
+
:message => e.message
|
|
120
217
|
end
|
|
121
218
|
end
|
|
122
|
-
|
|
123
|
-
raise Exception, "Unknown configuration source: #{source.inspect}"
|
|
124
219
|
end
|
|
125
220
|
end
|
|
126
221
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Config
|
|
3
|
+
module V1
|
|
4
|
+
# This is a configuration object that can have anything done
|
|
5
|
+
# to it. Anything, and it just appears to keep working.
|
|
6
|
+
class DummyConfig
|
|
7
|
+
def method_missing(name, *args, &block)
|
|
8
|
+
DummyConfig.new
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
require "vagrant/config/v1/root"
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
module Config
|
|
5
|
+
module V1
|
|
6
|
+
# This is the loader that handles configuration loading for V1
|
|
7
|
+
# configurations.
|
|
8
|
+
class Loader < VersionBase
|
|
9
|
+
# Returns a bare empty configuration object.
|
|
10
|
+
#
|
|
11
|
+
# @return [V1::Root]
|
|
12
|
+
def self.init
|
|
13
|
+
new_root_object
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Finalizes the configuration by making sure there is at least
|
|
17
|
+
# one VM defined in it.
|
|
18
|
+
def self.finalize(config)
|
|
19
|
+
# Call the `#finalize` method on each of the configuration keys.
|
|
20
|
+
# They're expected to modify themselves in our case.
|
|
21
|
+
config.finalize!
|
|
22
|
+
|
|
23
|
+
# Return the object
|
|
24
|
+
config
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Loads the configuration for the given proc and returns a configuration
|
|
28
|
+
# object.
|
|
29
|
+
#
|
|
30
|
+
# @param [Proc] config_proc
|
|
31
|
+
# @return [Object]
|
|
32
|
+
def self.load(config_proc)
|
|
33
|
+
# Create a root configuration object
|
|
34
|
+
root = new_root_object
|
|
35
|
+
|
|
36
|
+
# Call the proc with the root
|
|
37
|
+
config_proc.call(root)
|
|
38
|
+
|
|
39
|
+
# Return the root object, which doubles as the configuration object
|
|
40
|
+
# we actually use for accessing as well.
|
|
41
|
+
root
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Merges two configuration objects.
|
|
45
|
+
#
|
|
46
|
+
# @param [V1::Root] old The older root config.
|
|
47
|
+
# @param [V1::Root] new The newer root config.
|
|
48
|
+
# @return [V1::Root]
|
|
49
|
+
def self.merge(old, new)
|
|
50
|
+
# Grab the internal states, we use these heavily throughout the process
|
|
51
|
+
old_state = old.__internal_state
|
|
52
|
+
new_state = new.__internal_state
|
|
53
|
+
|
|
54
|
+
# The config map for the new object is the old one merged with the
|
|
55
|
+
# new one.
|
|
56
|
+
config_map = old_state["config_map"].merge(new_state["config_map"])
|
|
57
|
+
|
|
58
|
+
# Merge the keys.
|
|
59
|
+
old_keys = old_state["keys"]
|
|
60
|
+
new_keys = new_state["keys"]
|
|
61
|
+
keys = {}
|
|
62
|
+
old_keys.each do |key, old_value|
|
|
63
|
+
if new_keys.has_key?(key)
|
|
64
|
+
# We need to do a merge, which we expect to be available
|
|
65
|
+
# on the config class itself.
|
|
66
|
+
keys[key] = old_value.merge(new_keys[key])
|
|
67
|
+
else
|
|
68
|
+
# We just take the old value, but dup it so that we can modify.
|
|
69
|
+
keys[key] = old_value.dup
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
new_keys.each do |key, new_value|
|
|
74
|
+
# Add in the keys that the new class has that we haven't merged.
|
|
75
|
+
if !keys.has_key?(key)
|
|
76
|
+
keys[key] = new_value.dup
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Return the final root object
|
|
81
|
+
V1::Root.new(config_map, keys)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
protected
|
|
85
|
+
|
|
86
|
+
def self.new_root_object
|
|
87
|
+
# Get all the registered configuration objects and use them. If
|
|
88
|
+
# we're currently on version 1, then we load all the config objects,
|
|
89
|
+
# otherwise we load only the upgrade safe ones, since we're
|
|
90
|
+
# obviously being loaded for an upgrade.
|
|
91
|
+
config_map = nil
|
|
92
|
+
plugin_manager = Vagrant.plugin("1").manager
|
|
93
|
+
if Config::CURRENT_VERSION == "1"
|
|
94
|
+
config_map = plugin_manager.config
|
|
95
|
+
else
|
|
96
|
+
config_map = plugin_manager.config_upgrade_safe
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Create the configuration root object
|
|
100
|
+
V1::Root.new(config_map)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require "set"
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
module Config
|
|
5
|
+
module V1
|
|
6
|
+
# This is the root configuration class. An instance of this is what
|
|
7
|
+
# is passed into version 1 Vagrant configuration blocks.
|
|
8
|
+
class Root
|
|
9
|
+
# Initializes a root object that maps the given keys to specific
|
|
10
|
+
# configuration classes.
|
|
11
|
+
#
|
|
12
|
+
# @param [Hash] config_map Map of key to config class.
|
|
13
|
+
def initialize(config_map, keys=nil)
|
|
14
|
+
@keys = keys || {}
|
|
15
|
+
@config_map = config_map
|
|
16
|
+
@missing_key_calls = Set.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# We use method_missing as a way to get the configuration that is
|
|
20
|
+
# used for Vagrant and load the proper configuration classes for
|
|
21
|
+
# each.
|
|
22
|
+
def method_missing(name, *args)
|
|
23
|
+
return @keys[name] if @keys.has_key?(name)
|
|
24
|
+
|
|
25
|
+
config_klass = @config_map[name.to_sym]
|
|
26
|
+
if config_klass
|
|
27
|
+
# Instantiate the class and return the instance
|
|
28
|
+
@keys[name] = config_klass.new
|
|
29
|
+
return @keys[name]
|
|
30
|
+
else
|
|
31
|
+
# Record access to a missing key as an error
|
|
32
|
+
@missing_key_calls.add(name.to_s)
|
|
33
|
+
return DummyConfig.new
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Called to finalize this object just prior to it being used by
|
|
38
|
+
# the Vagrant system. The "!" signifies that this is expected to
|
|
39
|
+
# mutate itself.
|
|
40
|
+
def finalize!
|
|
41
|
+
@keys.each do |_key, instance|
|
|
42
|
+
instance.finalize!
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Returns the internal state of the root object. This is used
|
|
47
|
+
# by outside classes when merging, and shouldn't be called directly.
|
|
48
|
+
# Note the strange method name is to attempt to avoid any name
|
|
49
|
+
# clashes with potential configuration keys.
|
|
50
|
+
def __internal_state
|
|
51
|
+
{
|
|
52
|
+
"config_map" => @config_map,
|
|
53
|
+
"keys" => @keys,
|
|
54
|
+
"missing_key_calls" => @missing_key_calls
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
module Config
|
|
3
|
+
module V2
|
|
4
|
+
# This is a configuration object that can have anything done
|
|
5
|
+
# to it. Anything, and it just appears to keep working.
|
|
6
|
+
class DummyConfig
|
|
7
|
+
def method_missing(name, *args, &block)
|
|
8
|
+
DummyConfig.new
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
require "vagrant/config/v2/root"
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
module Config
|
|
5
|
+
module V2
|
|
6
|
+
# This is the loader that handles configuration loading for V2
|
|
7
|
+
# configurations.
|
|
8
|
+
class Loader < VersionBase
|
|
9
|
+
# Returns a bare empty configuration object.
|
|
10
|
+
#
|
|
11
|
+
# @return [V2::Root]
|
|
12
|
+
def self.init
|
|
13
|
+
new_root_object
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Finalizes the configuration by making sure there is at least
|
|
17
|
+
# one VM defined in it.
|
|
18
|
+
def self.finalize(config)
|
|
19
|
+
# Call the `#finalize` method on each of the configuration keys.
|
|
20
|
+
# They're expected to modify themselves in our case.
|
|
21
|
+
config.finalize!
|
|
22
|
+
|
|
23
|
+
# Return the object
|
|
24
|
+
config
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Loads the configuration for the given proc and returns a configuration
|
|
28
|
+
# object.
|
|
29
|
+
#
|
|
30
|
+
# @param [Proc] config_proc
|
|
31
|
+
# @return [Object]
|
|
32
|
+
def self.load(config_proc)
|
|
33
|
+
# Create a root configuration object
|
|
34
|
+
root = new_root_object
|
|
35
|
+
|
|
36
|
+
# Call the proc with the root
|
|
37
|
+
config_proc.call(root)
|
|
38
|
+
|
|
39
|
+
# Return the root object, which doubles as the configuration object
|
|
40
|
+
# we actually use for accessing as well.
|
|
41
|
+
root
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Merges two configuration objects.
|
|
45
|
+
#
|
|
46
|
+
# @param [V2::Root] old The older root config.
|
|
47
|
+
# @param [V2::Root] new The newer root config.
|
|
48
|
+
# @return [V2::Root]
|
|
49
|
+
def self.merge(old, new)
|
|
50
|
+
# Grab the internal states, we use these heavily throughout the process
|
|
51
|
+
old_state = old.__internal_state
|
|
52
|
+
new_state = new.__internal_state
|
|
53
|
+
|
|
54
|
+
# The config map for the new object is the old one merged with the
|
|
55
|
+
# new one.
|
|
56
|
+
config_map = old_state["config_map"].merge(new_state["config_map"])
|
|
57
|
+
|
|
58
|
+
# Merge the keys.
|
|
59
|
+
old_keys = old_state["keys"]
|
|
60
|
+
new_keys = new_state["keys"]
|
|
61
|
+
keys = {}
|
|
62
|
+
old_keys.each do |key, old_value|
|
|
63
|
+
if new_keys.has_key?(key)
|
|
64
|
+
# We need to do a merge, which we expect to be available
|
|
65
|
+
# on the config class itself.
|
|
66
|
+
keys[key] = old_value.merge(new_keys[key])
|
|
67
|
+
else
|
|
68
|
+
# We just take the old value, but dup it so that we can modify.
|
|
69
|
+
keys[key] = old_value.dup
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
new_keys.each do |key, new_value|
|
|
74
|
+
# Add in the keys that the new class has that we haven't merged.
|
|
75
|
+
if !keys.has_key?(key)
|
|
76
|
+
keys[key] = new_value.dup
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Merge the missing keys
|
|
81
|
+
new_missing_key_calls =
|
|
82
|
+
old_state["missing_key_calls"] + new_state["missing_key_calls"]
|
|
83
|
+
|
|
84
|
+
# Return the final root object
|
|
85
|
+
V2::Root.new(config_map).tap do |result|
|
|
86
|
+
result.__set_internal_state({
|
|
87
|
+
"config_map" => config_map,
|
|
88
|
+
"keys" => keys,
|
|
89
|
+
"missing_key_calls" => new_missing_key_calls
|
|
90
|
+
})
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Upgrade a V1 configuration to a V2 configuration. We do this by
|
|
95
|
+
# creating a V2 configuration, and calling "upgrade" on each of the
|
|
96
|
+
# V1 configurations, expecting them to set the right settings on the
|
|
97
|
+
# new root.
|
|
98
|
+
#
|
|
99
|
+
# @param [V1::Root] old
|
|
100
|
+
# @return [Array] A 3-tuple result.
|
|
101
|
+
def self.upgrade(old)
|
|
102
|
+
# Get a new root
|
|
103
|
+
root = new_root_object
|
|
104
|
+
|
|
105
|
+
# Store the warnings/errors
|
|
106
|
+
warnings = []
|
|
107
|
+
errors = []
|
|
108
|
+
|
|
109
|
+
# Go through the old keys and upgrade them if they can be
|
|
110
|
+
old.__internal_state["keys"].each do |_, old_value|
|
|
111
|
+
if old_value.respond_to?(:upgrade)
|
|
112
|
+
result = old_value.upgrade(root)
|
|
113
|
+
|
|
114
|
+
# Sanity check to guard against random return values
|
|
115
|
+
if result.is_a?(Array)
|
|
116
|
+
warnings += result[0]
|
|
117
|
+
errors += result[1]
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
old.__internal_state["missing_key_calls"].to_a.sort.each do |key|
|
|
123
|
+
warnings << I18n.t("vagrant.config.loader.bad_v1_key", :key => key)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
[root, warnings, errors]
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
protected
|
|
130
|
+
|
|
131
|
+
def self.new_root_object
|
|
132
|
+
# Get all the registered plugins for V2
|
|
133
|
+
config_map = Vagrant.plugin("2").manager.config
|
|
134
|
+
|
|
135
|
+
# Create the configuration root object
|
|
136
|
+
V2::Root.new(config_map)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|