vagrant 0.8.10 → 0.9.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.
- data/CHANGELOG.md +77 -1
- data/Gemfile +0 -14
- data/LICENSE +1 -1
- data/bin/vagrant +47 -20
- data/config/default.rb +6 -14
- data/lib/vagrant.rb +132 -5
- data/lib/vagrant/action.rb +45 -123
- data/lib/vagrant/action/box/destroy.rb +7 -3
- data/lib/vagrant/action/box/download.rb +8 -8
- data/lib/vagrant/action/box/package.rb +2 -2
- data/lib/vagrant/action/box/unpackage.rb +13 -7
- data/lib/vagrant/action/box/verify.rb +5 -5
- data/lib/vagrant/action/builder.rb +23 -19
- data/lib/vagrant/action/builtin.rb +117 -79
- data/lib/vagrant/action/env/set.rb +7 -4
- data/lib/vagrant/action/environment.rb +3 -41
- data/lib/vagrant/action/general/package.rb +14 -29
- data/lib/vagrant/action/general/validate.rb +2 -2
- data/lib/vagrant/action/runner.rb +53 -0
- data/lib/vagrant/action/vm/boot.rb +9 -9
- data/lib/vagrant/action/vm/check_accessible.rb +2 -2
- data/lib/vagrant/action/vm/check_box.rb +10 -12
- data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
- data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
- data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
- data/lib/vagrant/action/vm/customize.rb +19 -9
- data/lib/vagrant/action/vm/destroy.rb +4 -4
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
- data/lib/vagrant/action/vm/discard_state.rb +4 -4
- data/lib/vagrant/action/vm/export.rb +13 -8
- data/lib/vagrant/action/vm/forward_ports.rb +55 -102
- data/lib/vagrant/action/vm/halt.rb +9 -6
- data/lib/vagrant/action/vm/host_name.rb +4 -4
- data/lib/vagrant/action/vm/import.rb +19 -10
- data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
- data/lib/vagrant/action/vm/network.rb +300 -94
- data/lib/vagrant/action/vm/nfs.rb +41 -26
- data/lib/vagrant/action/vm/package.rb +1 -1
- data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
- data/lib/vagrant/action/vm/provision.rb +42 -13
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
- data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
- data/lib/vagrant/action/vm/resume.rb +4 -4
- data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
- data/lib/vagrant/action/vm/share_folders.rb +63 -39
- data/lib/vagrant/action/vm/suspend.rb +4 -4
- data/lib/vagrant/action/warden.rb +13 -6
- data/lib/vagrant/box.rb +9 -55
- data/lib/vagrant/box_collection.rb +22 -17
- data/lib/vagrant/cli.rb +62 -47
- data/lib/vagrant/command.rb +18 -20
- data/lib/vagrant/command/base.rb +135 -90
- data/lib/vagrant/command/box.rb +46 -21
- data/lib/vagrant/command/box_add.rb +33 -0
- data/lib/vagrant/command/box_list.rb +25 -0
- data/lib/vagrant/command/box_remove.rb +23 -0
- data/lib/vagrant/command/box_repackage.rb +23 -0
- data/lib/vagrant/command/destroy.rb +16 -5
- data/lib/vagrant/command/halt.rb +25 -7
- data/lib/vagrant/command/init.rb +30 -7
- data/lib/vagrant/command/package.rb +49 -18
- data/lib/vagrant/command/provision.rb +22 -9
- data/lib/vagrant/command/reload.rb +18 -5
- data/lib/vagrant/command/resume.rb +18 -5
- data/lib/vagrant/command/ssh.rb +69 -31
- data/lib/vagrant/command/ssh_config.rb +37 -22
- data/lib/vagrant/command/status.rb +22 -20
- data/lib/vagrant/command/suspend.rb +18 -5
- data/lib/vagrant/command/up.rb +41 -8
- data/lib/vagrant/communication.rb +7 -0
- data/lib/vagrant/communication/base.rb +56 -0
- data/lib/vagrant/communication/ssh.rb +200 -0
- data/lib/vagrant/config.rb +29 -103
- data/lib/vagrant/config/base.rb +18 -26
- data/lib/vagrant/config/container.rb +37 -0
- data/lib/vagrant/config/error_recorder.rb +1 -1
- data/lib/vagrant/config/loader.rb +125 -0
- data/lib/vagrant/config/nfs.rb +1 -3
- data/lib/vagrant/config/package.rb +1 -3
- data/lib/vagrant/config/ssh.rb +31 -16
- data/lib/vagrant/config/top.rb +36 -25
- data/lib/vagrant/config/vagrant.rb +2 -5
- data/lib/vagrant/config/vm.rb +115 -56
- data/lib/vagrant/config/vm/provisioner.rb +16 -20
- data/lib/vagrant/config/vm/sub_vm.rb +1 -1
- data/lib/vagrant/data_store.rb +23 -15
- data/lib/vagrant/downloaders/base.rb +7 -5
- data/lib/vagrant/downloaders/file.rb +4 -4
- data/lib/vagrant/downloaders/http.rb +4 -5
- data/lib/vagrant/driver.rb +7 -0
- data/lib/vagrant/driver/virtualbox.rb +121 -0
- data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
- data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
- data/lib/vagrant/driver/virtualbox_base.rb +284 -0
- data/lib/vagrant/environment.rb +221 -240
- data/lib/vagrant/errors.rb +74 -25
- data/lib/vagrant/guest.rb +16 -0
- data/lib/vagrant/guest/arch.rb +48 -0
- data/lib/vagrant/{systems → guest}/base.rb +30 -18
- data/lib/vagrant/guest/debian.rb +61 -0
- data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
- data/lib/vagrant/guest/gentoo.rb +32 -0
- data/lib/vagrant/guest/linux.rb +78 -0
- data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
- data/lib/vagrant/guest/linux/error.rb +9 -0
- data/lib/vagrant/guest/redhat.rb +66 -0
- data/lib/vagrant/guest/solaris.rb +114 -0
- data/lib/vagrant/{systems → guest}/suse.rb +2 -2
- data/lib/vagrant/guest/ubuntu.rb +23 -0
- data/lib/vagrant/hosts.rb +23 -6
- data/lib/vagrant/hosts/arch.rb +7 -3
- data/lib/vagrant/hosts/base.rb +36 -46
- data/lib/vagrant/hosts/bsd.rb +53 -16
- data/lib/vagrant/hosts/fedora.rb +14 -0
- data/lib/vagrant/hosts/freebsd.rb +6 -36
- data/lib/vagrant/hosts/linux.rb +45 -20
- data/lib/vagrant/hosts/windows.rb +16 -0
- data/lib/vagrant/provisioners.rb +10 -7
- data/lib/vagrant/provisioners/base.rb +11 -34
- data/lib/vagrant/provisioners/chef.rb +30 -26
- data/lib/vagrant/provisioners/chef_client.rb +37 -23
- data/lib/vagrant/provisioners/chef_solo.rb +61 -16
- data/lib/vagrant/provisioners/puppet.rb +70 -38
- data/lib/vagrant/provisioners/puppet_server.rb +12 -13
- data/lib/vagrant/provisioners/shell.rb +24 -24
- data/lib/vagrant/registry.rb +49 -0
- data/lib/vagrant/ssh.rb +82 -153
- data/lib/vagrant/ui.rb +118 -50
- data/lib/vagrant/util/busy.rb +1 -1
- data/lib/vagrant/util/file_mode.rb +12 -0
- data/lib/vagrant/util/network_ip.rb +28 -0
- data/lib/vagrant/util/platform.rb +1 -0
- data/lib/vagrant/util/subprocess.rb +227 -0
- data/lib/vagrant/version.rb +1 -1
- data/lib/vagrant/vm.rb +111 -97
- data/tasks/acceptance.rake +3 -3
- data/tasks/test.rake +7 -2
- data/templates/commands/init/Vagrantfile.erb +11 -4
- data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
- data/templates/guests/arch/network_dhcp.erb +7 -0
- data/templates/guests/arch/network_static.erb +7 -0
- data/templates/guests/debian/network_dhcp.erb +6 -0
- data/templates/guests/debian/network_static.erb +7 -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 +7 -0
- data/templates/locales/en.yml +241 -122
- data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
- data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
- data/test/acceptance/base.rb +10 -10
- data/test/acceptance/box_test.rb +28 -6
- data/test/acceptance/destroy_test.rb +1 -1
- data/test/acceptance/halt_test.rb +4 -4
- data/test/acceptance/init_test.rb +3 -3
- 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 +1 -1
- 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 +7 -2
- data/test/acceptance/support/config.rb +1 -1
- data/test/acceptance/support/isolated_environment.rb +41 -150
- data/test/acceptance/support/matchers/match_output.rb +1 -1
- data/test/acceptance/support/matchers/succeed.rb +14 -0
- data/test/acceptance/support/network_tests.rb +29 -0
- data/test/acceptance/support/output.rb +9 -1
- data/test/acceptance/support/shared/base_context.rb +16 -9
- data/test/acceptance/support/shared/command_examples.rb +4 -4
- data/test/acceptance/suspend_test.rb +1 -1
- data/test/acceptance/up_basic_test.rb +26 -7
- data/test/acceptance/up_with_box_url.rb +1 -1
- data/test/acceptance/vagrant_test.rb +1 -1
- data/test/acceptance/version_test.rb +0 -5
- data/test/support/isolated_environment.rb +46 -0
- data/test/{acceptance/support → support}/tempdir.rb +0 -0
- data/test/unit/base.rb +21 -0
- data/test/unit/support/isolated_environment.rb +39 -0
- data/test/unit/support/shared/base_context.rb +30 -0
- data/test/unit/vagrant/action/builder_test.rb +126 -177
- data/test/unit/vagrant/action/environment_test.rb +10 -21
- data/test/unit/vagrant/action/runner_test.rb +65 -0
- data/test/unit/vagrant/action/warden_test.rb +64 -97
- data/test/unit/vagrant/box_collection_test.rb +44 -33
- data/test/unit/vagrant/box_test.rb +25 -65
- data/test/unit/vagrant/command/base_test.rb +141 -14
- data/test/unit/vagrant/config/base_test.rb +16 -43
- data/test/unit/vagrant/config/loader_test.rb +79 -0
- data/test/unit/vagrant/config/top_test.rb +69 -0
- data/test/unit/vagrant/config/vm_test.rb +62 -47
- data/test/unit/vagrant/config_test.rb +16 -151
- data/test/unit/vagrant/data_store_test.rb +43 -61
- data/test/unit/vagrant/downloaders/base_test.rb +12 -22
- data/test/unit/vagrant/downloaders/file_test.rb +58 -31
- data/test/unit/vagrant/downloaders/http_test.rb +12 -86
- data/test/unit/vagrant/environment_test.rb +107 -536
- data/test/unit/vagrant/hosts_test.rb +36 -0
- data/test/unit/vagrant/registry_test.rb +56 -0
- data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
- data/test/unit/vagrant/util/network_ip_test.rb +17 -0
- data/test/unit/vagrant/util/retryable_test.rb +90 -34
- data/test/unit/vagrant_test.rb +27 -0
- data/test/{unit → unit_legacy}/locales/en.yml +0 -0
- data/test/{unit → unit_legacy}/test_helper.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
- data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
- data/test/unit_legacy/vagrant/box_test.rb +74 -0
- data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
- data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
- data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
- data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
- data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
- data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
- data/test/unit_legacy/vagrant/config_test.rb +148 -0
- data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
- data/test/unit_legacy/vagrant/environment_test.rb +539 -0
- data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
- data/vagrant.gemspec +7 -9
- metadata +214 -216
- data/keys/vagrant.ppk +0 -26
- data/lib/vagrant/action/box.rb +0 -11
- data/lib/vagrant/action/env.rb +0 -7
- data/lib/vagrant/action/general.rb +0 -8
- data/lib/vagrant/action/vm.rb +0 -34
- data/lib/vagrant/action/vm/forward_ports_helpers.rb +0 -28
- data/lib/vagrant/action/vm/modify.rb +0 -37
- data/lib/vagrant/action/vm/nfs_helpers.rb +0 -11
- data/lib/vagrant/command/group_base.rb +0 -107
- data/lib/vagrant/command/helpers.rb +0 -33
- data/lib/vagrant/command/named_base.rb +0 -14
- data/lib/vagrant/command/upgrade_to_060.rb +0 -45
- data/lib/vagrant/command/version.rb +0 -13
- data/lib/vagrant/ssh/session.rb +0 -136
- data/lib/vagrant/systems.rb +0 -13
- data/lib/vagrant/systems/arch.rb +0 -34
- data/lib/vagrant/systems/debian.rb +0 -36
- data/lib/vagrant/systems/gentoo.rb +0 -27
- data/lib/vagrant/systems/linux.rb +0 -82
- data/lib/vagrant/systems/linux/error.rb +0 -9
- data/lib/vagrant/systems/redhat.rb +0 -48
- data/lib/vagrant/systems/solaris.rb +0 -113
- data/lib/vagrant/systems/ubuntu.rb +0 -17
- data/templates/network_entry_arch.erb +0 -9
- data/templates/network_entry_debian.erb +0 -8
- data/templates/network_entry_gentoo.erb +0 -5
- data/templates/network_entry_redhat.erb +0 -9
- data/test/unit/vagrant/ui_test.rb +0 -29
data/lib/vagrant/errors.rb
CHANGED
@@ -118,14 +118,19 @@ module Vagrant
|
|
118
118
|
error_key(:does_not_exist, "vagrant.actions.vm.check_box")
|
119
119
|
end
|
120
120
|
|
121
|
+
class BoxUnpackageFailure < VagrantError
|
122
|
+
status_code(57)
|
123
|
+
error_key(:untar_failure, "vagrant.actions.box.unpackage")
|
124
|
+
end
|
125
|
+
|
121
126
|
class BoxVerificationFailed < VagrantError
|
122
127
|
status_code(15)
|
123
128
|
error_key(:failed, "vagrant.actions.box.verify")
|
124
129
|
end
|
125
130
|
|
126
|
-
class
|
131
|
+
class CLIInvalidOptions < VagrantError
|
127
132
|
status_code(1)
|
128
|
-
error_key(:
|
133
|
+
error_key(:cli_invalid_options)
|
129
134
|
end
|
130
135
|
|
131
136
|
class ConfigValidationFailed < VagrantError
|
@@ -133,6 +138,11 @@ module Vagrant
|
|
133
138
|
error_key(:config_validation)
|
134
139
|
end
|
135
140
|
|
141
|
+
class DeprecationError < VagrantError
|
142
|
+
status_code(60)
|
143
|
+
error_key(:deprecation)
|
144
|
+
end
|
145
|
+
|
136
146
|
class DotfileIsDirectory < VagrantError
|
137
147
|
status_code(46)
|
138
148
|
error_key(:dotfile_is_directory)
|
@@ -163,6 +173,11 @@ module Vagrant
|
|
163
173
|
error_key(:home_dir_migration_failed)
|
164
174
|
end
|
165
175
|
|
176
|
+
class HomeDirectoryNotAccessible < VagrantError
|
177
|
+
status_code(55)
|
178
|
+
error_key(:home_dir_not_accessible)
|
179
|
+
end
|
180
|
+
|
166
181
|
class ForwardPortAutolistEmpty < VagrantError
|
167
182
|
status_code(27)
|
168
183
|
error_key(:auto_empty, "vagrant.actions.vm.forward_ports")
|
@@ -173,6 +188,11 @@ module Vagrant
|
|
173
188
|
error_key(:collision_error, "vagrant.actions.vm.forward_ports")
|
174
189
|
end
|
175
190
|
|
191
|
+
class ForwardPortCollisionResume < VagrantError
|
192
|
+
status_code(62)
|
193
|
+
error_key(:port_collision_resume)
|
194
|
+
end
|
195
|
+
|
176
196
|
class MultiVMEnvironmentRequired < VagrantError
|
177
197
|
status_code(5)
|
178
198
|
error_key(:multi_vm_required)
|
@@ -183,21 +203,29 @@ module Vagrant
|
|
183
203
|
error_key(:multi_vm_target_required)
|
184
204
|
end
|
185
205
|
|
206
|
+
class NetworkAdapterCollision < VagrantError
|
207
|
+
status_code(65)
|
208
|
+
error_key(:adapter_collision, "vagrant.actions.vm.network")
|
209
|
+
end
|
210
|
+
|
186
211
|
class NetworkCollision < VagrantError
|
187
212
|
status_code(29)
|
188
|
-
error_key(:collides, "vagrant.actions.vm.
|
213
|
+
error_key(:collides, "vagrant.actions.vm.host_only_network")
|
189
214
|
end
|
190
215
|
|
191
|
-
class
|
192
|
-
status_code(
|
193
|
-
error_key(:
|
216
|
+
class NetworkNoAdapters < VagrantError
|
217
|
+
status_code(64)
|
218
|
+
error_key(:no_adapters, "vagrant.actions.vm.network")
|
194
219
|
end
|
195
220
|
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
221
|
+
class NetworkDHCPAlreadyAttached < VagrantError
|
222
|
+
status_code(68)
|
223
|
+
error_key(:dhcp_already_attached, "vagrant.actions.vm.network")
|
224
|
+
end
|
225
|
+
|
226
|
+
class NetworkNotFound < VagrantError
|
227
|
+
status_code(30)
|
228
|
+
error_key(:not_found, "vagrant.actions.vm.host_only_network")
|
201
229
|
end
|
202
230
|
|
203
231
|
class NFSHostRequired < VagrantError
|
@@ -240,6 +268,16 @@ module Vagrant
|
|
240
268
|
error_key(:dotfile_error, "vagrant.actions.vm.persist")
|
241
269
|
end
|
242
270
|
|
271
|
+
class SCPUnavailable < VagrantError
|
272
|
+
status_code(56)
|
273
|
+
error_key(:scp_unavailable)
|
274
|
+
end
|
275
|
+
|
276
|
+
class SharedFolderCreateFailed < VagrantError
|
277
|
+
status_code(66)
|
278
|
+
error_key(:shared_folder_create_failed)
|
279
|
+
end
|
280
|
+
|
243
281
|
class SSHAuthenticationFailed < VagrantError
|
244
282
|
status_code(11)
|
245
283
|
error_key(:ssh_authentication_failed)
|
@@ -275,11 +313,21 @@ module Vagrant
|
|
275
313
|
error_key(:interrupted)
|
276
314
|
end
|
277
315
|
|
316
|
+
class VagrantfileExistsError < VagrantError
|
317
|
+
status_code(58)
|
318
|
+
error_key(:vagrantfile_exists)
|
319
|
+
end
|
320
|
+
|
278
321
|
class VagrantfileSyntaxError < VagrantError
|
279
322
|
status_code(41)
|
280
323
|
error_key(:vagrantfile_syntax_error)
|
281
324
|
end
|
282
325
|
|
326
|
+
class VBoxManageError < VagrantError
|
327
|
+
status_code(59)
|
328
|
+
error_key(:vboxmanage_error)
|
329
|
+
end
|
330
|
+
|
283
331
|
class VirtualBoxInvalidVersion < VagrantError
|
284
332
|
status_code(17)
|
285
333
|
error_key(:virtualbox_invalid_version)
|
@@ -290,25 +338,26 @@ module Vagrant
|
|
290
338
|
error_key(:virtualbox_not_detected)
|
291
339
|
end
|
292
340
|
|
293
|
-
# Note that this is a subclass of VirtualBoxNotDetected, so developers
|
294
|
-
# who script Vagrant or use it as a library in any way can rescue from
|
295
|
-
# "VirtualBoxNotDetected" and catch both errors, which represent the
|
296
|
-
# same thing. This subclass simply has a specialized error message.
|
297
|
-
class VirtualBoxNotDetected_Win64 < VirtualBoxNotDetected
|
298
|
-
status_code(48)
|
299
|
-
error_key(:virtualbox_not_detected_win64)
|
300
|
-
end
|
301
|
-
|
302
341
|
class VMBaseMacNotSpecified < VagrantError
|
303
342
|
status_code(47)
|
304
343
|
error_key(:no_base_mac, "vagrant.actions.vm.match_mac")
|
305
344
|
end
|
306
345
|
|
346
|
+
class VMCustomizationFailed < VagrantError
|
347
|
+
status_code(61)
|
348
|
+
error_key(:failure, "vagrant.actions.vm.customize")
|
349
|
+
end
|
350
|
+
|
307
351
|
class VMFailedToBoot < VagrantError
|
308
352
|
status_code(21)
|
309
353
|
error_key(:failed_to_boot, "vagrant.actions.vm.boot")
|
310
354
|
end
|
311
355
|
|
356
|
+
class VMGuestError < VagrantError
|
357
|
+
status_code(39)
|
358
|
+
error_namespace("vagrant.errors.guest")
|
359
|
+
end
|
360
|
+
|
312
361
|
class VMImportFailure < VagrantError
|
313
362
|
status_code(28)
|
314
363
|
error_key(:failure, "vagrant.actions.vm.import")
|
@@ -319,6 +368,11 @@ module Vagrant
|
|
319
368
|
error_key(:vm_inaccessible)
|
320
369
|
end
|
321
370
|
|
371
|
+
class VMNoMatchError < VagrantError
|
372
|
+
status_code(63)
|
373
|
+
error_key(:vm_no_match)
|
374
|
+
end
|
375
|
+
|
322
376
|
class VMNotCreatedError < VagrantError
|
323
377
|
status_code(6)
|
324
378
|
error_key(:vm_creation_required)
|
@@ -338,10 +392,5 @@ module Vagrant
|
|
338
392
|
status_code(24)
|
339
393
|
error_key(:power_off, "vagrant.actions.vm.export")
|
340
394
|
end
|
341
|
-
|
342
|
-
class VMSystemError < VagrantError
|
343
|
-
status_code(39)
|
344
|
-
error_namespace("vagrant.errors.system")
|
345
|
-
end
|
346
395
|
end
|
347
396
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Guest
|
3
|
+
autoload :Base, 'vagrant/guest/base'
|
4
|
+
|
5
|
+
# Specific guests
|
6
|
+
autoload :Arch, 'vagrant/guest/arch'
|
7
|
+
autoload :Debian, 'vagrant/guest/debian'
|
8
|
+
autoload :FreeBSD, 'vagrant/guest/freebsd'
|
9
|
+
autoload :Gentoo, 'vagrant/guest/gentoo'
|
10
|
+
autoload :Linux, 'vagrant/guest/linux'
|
11
|
+
autoload :Redhat, 'vagrant/guest/redhat'
|
12
|
+
autoload :Solaris, 'vagrant/guest/solaris'
|
13
|
+
autoload :Suse, 'vagrant/guest/suse'
|
14
|
+
autoload :Ubuntu, 'vagrant/guest/ubuntu'
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'set'
|
2
|
+
require 'tempfile'
|
3
|
+
|
4
|
+
module Vagrant
|
5
|
+
module Guest
|
6
|
+
class Arch < Linux
|
7
|
+
def change_host_name(name)
|
8
|
+
# Only do this if the hostname is not already set
|
9
|
+
if !vm.channel.test("sudo hostname | grep '#{name}'")
|
10
|
+
vm.channel.sudo("sed -i 's/\\(HOSTNAME=\\).*/\\1#{name}/' /etc/rc.conf")
|
11
|
+
vm.channel.sudo("hostname #{name}")
|
12
|
+
vm.channel.sudo("sed -i 's@^\\(127[.]0[.]0[.]1[[:space:]]\\+\\)@\\1#{name} @' /etc/hosts")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def configure_networks(networks)
|
17
|
+
# Remove previous Vagrant-managed network interfaces
|
18
|
+
vm.channel.sudo("sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/rc.conf > /tmp/vagrant-network-interfaces")
|
19
|
+
vm.channel.sudo("cat /tmp/vagrant-network-interfaces > /etc/rc.conf")
|
20
|
+
|
21
|
+
# Configure the network interfaces
|
22
|
+
interfaces = Set.new
|
23
|
+
entries = []
|
24
|
+
networks.each do |network|
|
25
|
+
interfaces.add(network[:interface])
|
26
|
+
entries << TemplateRenderer.render("guests/arch/network_#{network[:type]}",
|
27
|
+
:options => network)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Perform the careful dance necessary to reconfigure
|
31
|
+
# the network interfaces
|
32
|
+
temp = Tempfile.new("vagrant")
|
33
|
+
temp.write(entries.join("\n"))
|
34
|
+
temp.close
|
35
|
+
|
36
|
+
vm.channel.upload(temp.path, "/tmp/vagrant-network-entry")
|
37
|
+
|
38
|
+
# Reconfigure the network interfaces
|
39
|
+
vm.channel.sudo("cat /tmp/vagrant-network-entry >> /etc/rc.conf")
|
40
|
+
vm.channel.sudo("/etc/rc.d/network restart")
|
41
|
+
|
42
|
+
interfaces.each do |interface|
|
43
|
+
vm.channel.sudo("dhcpcd -k eth#{interface} && dhcpcd eth#{interface} && sleep 3")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Vagrant
|
2
|
-
module
|
2
|
+
module Guest
|
3
3
|
# The base class for a "system." A system represents an installed
|
4
4
|
# operating system on a given box. There are some portions of
|
5
5
|
# Vagrant which are fairly OS-specific (such as mounting shared
|
@@ -16,7 +16,7 @@ module Vagrant
|
|
16
16
|
# changes will be noted on release notes.**
|
17
17
|
class Base
|
18
18
|
class BaseError < Errors::VagrantError
|
19
|
-
error_namespace("vagrant.
|
19
|
+
error_namespace("vagrant.guest.base")
|
20
20
|
end
|
21
21
|
|
22
22
|
include Vagrant::Util
|
@@ -47,38 +47,50 @@ module Vagrant
|
|
47
47
|
#
|
48
48
|
# If when this method returns, the machine's state isn't "powered_off,"
|
49
49
|
# Vagrant will proceed to forcefully shut the machine down.
|
50
|
-
def halt
|
50
|
+
def halt
|
51
|
+
raise BaseError, :_key => :unsupported_halt
|
52
|
+
end
|
51
53
|
|
52
|
-
# Mounts a shared folder.
|
53
|
-
#
|
54
|
+
# Mounts a shared folder.
|
55
|
+
#
|
54
56
|
# This method should create, mount, and properly set permissions
|
55
57
|
# on the shared folder. This method should also properly
|
56
58
|
# adhere to any configuration values such as `shared_folder_uid`
|
57
59
|
# on `config.vm`.
|
58
60
|
#
|
59
|
-
# @param [Object] ssh The Net::SSH session.
|
60
61
|
# @param [String] name The name of the shared folder.
|
61
62
|
# @param [String] guestpath The path on the machine which the user
|
62
63
|
# wants the folder mounted.
|
63
|
-
|
64
|
+
# @param [Hash] options Additional options for the shared folder
|
65
|
+
# which can be honored.
|
66
|
+
def mount_shared_folder(name, guestpath, options)
|
67
|
+
raise BaseError, :_key => :unsupported_shared_folder
|
68
|
+
end
|
64
69
|
|
65
70
|
# Mounts a shared folder via NFS. This assumes that the exports
|
66
71
|
# via the host are already done.
|
67
|
-
def mount_nfs(ip, folders)
|
68
|
-
|
69
|
-
# Prepares the system for host only networks. This is called
|
70
|
-
# once prior to any `enable_host_only_network` calls.
|
71
|
-
def prepare_host_only_network(net_options=nil)
|
72
|
-
raise BaseError, :_key => :unsupported_host_only
|
72
|
+
def mount_nfs(ip, folders)
|
73
|
+
raise BaseError, :_key => :unsupported_nfs
|
73
74
|
end
|
74
75
|
|
75
|
-
#
|
76
|
-
# method should configure and bring up the interface for the
|
77
|
-
# given options.
|
76
|
+
# Configures the given list of networks on the virtual machine.
|
78
77
|
#
|
79
|
-
#
|
80
|
-
|
78
|
+
# The networks parameter will be an array of hashes where the hashes
|
79
|
+
# represent the configuration of a network interface. The structure
|
80
|
+
# of the hash will be roughly the following:
|
81
|
+
#
|
82
|
+
# {
|
83
|
+
# :type => :static,
|
84
|
+
# :ip => "33.33.33.10",
|
85
|
+
# :netmask => "255.255.255.0",
|
86
|
+
# :interface => 1
|
87
|
+
# }
|
88
|
+
#
|
89
|
+
def configure_networks(networks)
|
90
|
+
raise BaseError, :_key => :unsupported_configure_networks
|
91
|
+
end
|
81
92
|
|
93
|
+
# Called to change the hostname of the virtual machine.
|
82
94
|
def change_host_name(name)
|
83
95
|
raise BaseError, :_key => :unsupported_host_name
|
84
96
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'set'
|
2
|
+
require 'tempfile'
|
3
|
+
|
4
|
+
require 'vagrant/util/template_renderer'
|
5
|
+
|
6
|
+
module Vagrant
|
7
|
+
module Guest
|
8
|
+
class Debian < Linux
|
9
|
+
# Make the TemplateRenderer top-level
|
10
|
+
include Vagrant::Util
|
11
|
+
|
12
|
+
def configure_networks(networks)
|
13
|
+
# First, remove any previous network modifications
|
14
|
+
# from the interface file.
|
15
|
+
vm.channel.sudo("sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces")
|
16
|
+
vm.channel.sudo("su -c 'cat /tmp/vagrant-network-interfaces > /etc/network/interfaces'")
|
17
|
+
|
18
|
+
# Accumulate the configurations to add to the interfaces file as
|
19
|
+
# well as what interfaces we're actually configuring since we use that
|
20
|
+
# later.
|
21
|
+
interfaces = Set.new
|
22
|
+
entries = []
|
23
|
+
networks.each do |network|
|
24
|
+
interfaces.add(network[:interface])
|
25
|
+
entries << TemplateRenderer.render("guests/debian/network_#{network[:type]}",
|
26
|
+
:options => network)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Perform the careful dance necessary to reconfigure
|
30
|
+
# the network interfaces
|
31
|
+
temp = Tempfile.new("vagrant")
|
32
|
+
temp.write(entries.join("\n"))
|
33
|
+
temp.close
|
34
|
+
|
35
|
+
vm.channel.upload(temp.path, "/tmp/vagrant-network-entry")
|
36
|
+
|
37
|
+
# Bring down all the interfaces we're reconfiguring. By bringing down
|
38
|
+
# each specifically, we avoid reconfiguring eth0 (the NAT interface) so
|
39
|
+
# SSH never dies.
|
40
|
+
interfaces.each do |interface|
|
41
|
+
vm.channel.sudo("/sbin/ifdown eth#{interface} 2> /dev/null")
|
42
|
+
end
|
43
|
+
|
44
|
+
vm.channel.sudo("cat /tmp/vagrant-network-entry >> /etc/network/interfaces")
|
45
|
+
|
46
|
+
# Bring back up each network interface, reconfigured
|
47
|
+
interfaces.each do |interface|
|
48
|
+
vm.channel.sudo("/sbin/ifup eth#{interface}")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def change_host_name(name)
|
53
|
+
if !vm.channel.test?("hostname --fqdn | grep '^#{name}$' || hostname --short | grep '^#{name}$'")
|
54
|
+
vm.channel.sudo("sed -r -i 's/^(127[.]0[.]1[.]1[[:space:]]+).*$/\\1#{name} #{name.split('.')[0]}/' /etc/hosts")
|
55
|
+
vm.channel.sudo("sed -i 's/.*$/#{name.split('.')[0]}/' /etc/hostname")
|
56
|
+
vm.channel.sudo("hostname -F /etc/hostname")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Vagrant
|
2
|
-
module
|
2
|
+
module Guest
|
3
3
|
# A general Vagrant system implementation for "freebsd".
|
4
4
|
#
|
5
5
|
# Contributed by Kenneth Vestergaard <kvs@binarysolutions.dk>
|
@@ -9,8 +9,6 @@ module Vagrant
|
|
9
9
|
# generally, Vagrant tries to make almost every aspect of its execution
|
10
10
|
# configurable, and this assists that goal.
|
11
11
|
class FreeBSDConfig < Vagrant::Config::Base
|
12
|
-
configures :freebsd
|
13
|
-
|
14
12
|
attr_accessor :halt_timeout
|
15
13
|
attr_accessor :halt_check_interval
|
16
14
|
|
@@ -22,24 +20,21 @@ module Vagrant
|
|
22
20
|
|
23
21
|
# Here for whenever it may be used.
|
24
22
|
class FreeBSDError < Errors::VagrantError
|
25
|
-
error_namespace("vagrant.
|
23
|
+
error_namespace("vagrant.guest.freebsd")
|
26
24
|
end
|
27
25
|
|
28
26
|
def halt
|
29
|
-
vm.
|
30
|
-
vm.ssh.execute do |ssh|
|
31
|
-
ssh.exec!("sudo shutdown -p now")
|
32
|
-
end
|
27
|
+
vm.channel.sudo("shutdown -p now")
|
33
28
|
|
34
29
|
# Wait until the VM's state is actually powered off. If this doesn't
|
35
30
|
# occur within a reasonable amount of time (15 seconds by default),
|
36
31
|
# then simply return and allow Vagrant to kill the machine.
|
37
32
|
count = 0
|
38
|
-
while vm.
|
33
|
+
while vm.state != :poweroff
|
39
34
|
count += 1
|
40
35
|
|
41
|
-
return if count >= vm.
|
42
|
-
sleep vm.
|
36
|
+
return if count >= vm.config.freebsd.halt_timeout
|
37
|
+
sleep vm.config.freebsd.halt_check_interval
|
43
38
|
end
|
44
39
|
end
|
45
40
|
|
@@ -48,15 +43,13 @@ module Vagrant
|
|
48
43
|
# ssh.exec!("sudo mkdir -p #{guestpath}")
|
49
44
|
# # Using a custom mount method here; could use improvement.
|
50
45
|
# ssh.exec!("sudo mount -t vboxfs v-root #{guestpath}")
|
51
|
-
# ssh.exec!("sudo chown #{vm.
|
46
|
+
# ssh.exec!("sudo chown #{vm.config.ssh.username} #{guestpath}")
|
52
47
|
# end
|
53
48
|
|
54
49
|
def mount_nfs(ip, folders)
|
55
50
|
folders.each do |name, opts|
|
56
|
-
vm.
|
57
|
-
|
58
|
-
ssh.exec!("sudo mount #{ip}:#{opts[:hostpath]} #{opts[:guestpath]}")
|
59
|
-
end
|
51
|
+
vm.channel.sudo("mkdir -p #{opts[:guestpath]}")
|
52
|
+
vm.channel.sudo("mount #{ip}:#{opts[:hostpath]} #{opts[:guestpath]}")
|
60
53
|
end
|
61
54
|
end
|
62
55
|
|
@@ -65,13 +58,13 @@ module Vagrant
|
|
65
58
|
# interface file.
|
66
59
|
vm.ssh.execute do |ssh|
|
67
60
|
# Clear out any previous entries
|
68
|
-
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/rc.conf > /tmp/rc.conf")
|
61
|
+
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN-HOSTONLY/,/^#VAGRANT-END-HOSTONLY/ d' /etc/rc.conf > /tmp/rc.conf")
|
69
62
|
ssh.exec!("sudo mv /tmp/rc.conf /etc/rc.conf")
|
70
63
|
end
|
71
64
|
end
|
72
65
|
|
73
66
|
def enable_host_only_network(net_options)
|
74
|
-
entry = "#VAGRANT-BEGIN\nifconfig_em#{net_options[:adapter]}=\"inet #{net_options[:ip]} netmask #{net_options[:netmask]}\"\n#VAGRANT-END\n"
|
67
|
+
entry = "#VAGRANT-BEGIN-HOSTONLY\nifconfig_em#{net_options[:adapter]}=\"inet #{net_options[:ip]} netmask #{net_options[:netmask]}\"\n#VAGRANT-END-HOSTONLY\n"
|
75
68
|
vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
|
76
69
|
|
77
70
|
vm.ssh.execute do |ssh|
|