vagrant 0.8.10 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. data/CHANGELOG.md +77 -1
  2. data/Gemfile +0 -14
  3. data/LICENSE +1 -1
  4. data/bin/vagrant +47 -20
  5. data/config/default.rb +6 -14
  6. data/lib/vagrant.rb +132 -5
  7. data/lib/vagrant/action.rb +45 -123
  8. data/lib/vagrant/action/box/destroy.rb +7 -3
  9. data/lib/vagrant/action/box/download.rb +8 -8
  10. data/lib/vagrant/action/box/package.rb +2 -2
  11. data/lib/vagrant/action/box/unpackage.rb +13 -7
  12. data/lib/vagrant/action/box/verify.rb +5 -5
  13. data/lib/vagrant/action/builder.rb +23 -19
  14. data/lib/vagrant/action/builtin.rb +117 -79
  15. data/lib/vagrant/action/env/set.rb +7 -4
  16. data/lib/vagrant/action/environment.rb +3 -41
  17. data/lib/vagrant/action/general/package.rb +14 -29
  18. data/lib/vagrant/action/general/validate.rb +2 -2
  19. data/lib/vagrant/action/runner.rb +53 -0
  20. data/lib/vagrant/action/vm/boot.rb +9 -9
  21. data/lib/vagrant/action/vm/check_accessible.rb +2 -2
  22. data/lib/vagrant/action/vm/check_box.rb +10 -12
  23. data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
  24. data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
  25. data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
  26. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
  27. data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
  28. data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
  29. data/lib/vagrant/action/vm/customize.rb +19 -9
  30. data/lib/vagrant/action/vm/destroy.rb +4 -4
  31. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
  32. data/lib/vagrant/action/vm/discard_state.rb +4 -4
  33. data/lib/vagrant/action/vm/export.rb +13 -8
  34. data/lib/vagrant/action/vm/forward_ports.rb +55 -102
  35. data/lib/vagrant/action/vm/halt.rb +9 -6
  36. data/lib/vagrant/action/vm/host_name.rb +4 -4
  37. data/lib/vagrant/action/vm/import.rb +19 -10
  38. data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
  39. data/lib/vagrant/action/vm/network.rb +300 -94
  40. data/lib/vagrant/action/vm/nfs.rb +41 -26
  41. data/lib/vagrant/action/vm/package.rb +1 -1
  42. data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
  43. data/lib/vagrant/action/vm/provision.rb +42 -13
  44. data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
  45. data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
  46. data/lib/vagrant/action/vm/resume.rb +4 -4
  47. data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
  48. data/lib/vagrant/action/vm/share_folders.rb +63 -39
  49. data/lib/vagrant/action/vm/suspend.rb +4 -4
  50. data/lib/vagrant/action/warden.rb +13 -6
  51. data/lib/vagrant/box.rb +9 -55
  52. data/lib/vagrant/box_collection.rb +22 -17
  53. data/lib/vagrant/cli.rb +62 -47
  54. data/lib/vagrant/command.rb +18 -20
  55. data/lib/vagrant/command/base.rb +135 -90
  56. data/lib/vagrant/command/box.rb +46 -21
  57. data/lib/vagrant/command/box_add.rb +33 -0
  58. data/lib/vagrant/command/box_list.rb +25 -0
  59. data/lib/vagrant/command/box_remove.rb +23 -0
  60. data/lib/vagrant/command/box_repackage.rb +23 -0
  61. data/lib/vagrant/command/destroy.rb +16 -5
  62. data/lib/vagrant/command/halt.rb +25 -7
  63. data/lib/vagrant/command/init.rb +30 -7
  64. data/lib/vagrant/command/package.rb +49 -18
  65. data/lib/vagrant/command/provision.rb +22 -9
  66. data/lib/vagrant/command/reload.rb +18 -5
  67. data/lib/vagrant/command/resume.rb +18 -5
  68. data/lib/vagrant/command/ssh.rb +69 -31
  69. data/lib/vagrant/command/ssh_config.rb +37 -22
  70. data/lib/vagrant/command/status.rb +22 -20
  71. data/lib/vagrant/command/suspend.rb +18 -5
  72. data/lib/vagrant/command/up.rb +41 -8
  73. data/lib/vagrant/communication.rb +7 -0
  74. data/lib/vagrant/communication/base.rb +56 -0
  75. data/lib/vagrant/communication/ssh.rb +200 -0
  76. data/lib/vagrant/config.rb +29 -103
  77. data/lib/vagrant/config/base.rb +18 -26
  78. data/lib/vagrant/config/container.rb +37 -0
  79. data/lib/vagrant/config/error_recorder.rb +1 -1
  80. data/lib/vagrant/config/loader.rb +125 -0
  81. data/lib/vagrant/config/nfs.rb +1 -3
  82. data/lib/vagrant/config/package.rb +1 -3
  83. data/lib/vagrant/config/ssh.rb +31 -16
  84. data/lib/vagrant/config/top.rb +36 -25
  85. data/lib/vagrant/config/vagrant.rb +2 -5
  86. data/lib/vagrant/config/vm.rb +115 -56
  87. data/lib/vagrant/config/vm/provisioner.rb +16 -20
  88. data/lib/vagrant/config/vm/sub_vm.rb +1 -1
  89. data/lib/vagrant/data_store.rb +23 -15
  90. data/lib/vagrant/downloaders/base.rb +7 -5
  91. data/lib/vagrant/downloaders/file.rb +4 -4
  92. data/lib/vagrant/downloaders/http.rb +4 -5
  93. data/lib/vagrant/driver.rb +7 -0
  94. data/lib/vagrant/driver/virtualbox.rb +121 -0
  95. data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
  96. data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
  97. data/lib/vagrant/driver/virtualbox_base.rb +284 -0
  98. data/lib/vagrant/environment.rb +221 -240
  99. data/lib/vagrant/errors.rb +74 -25
  100. data/lib/vagrant/guest.rb +16 -0
  101. data/lib/vagrant/guest/arch.rb +48 -0
  102. data/lib/vagrant/{systems → guest}/base.rb +30 -18
  103. data/lib/vagrant/guest/debian.rb +61 -0
  104. data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
  105. data/lib/vagrant/guest/gentoo.rb +32 -0
  106. data/lib/vagrant/guest/linux.rb +78 -0
  107. data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
  108. data/lib/vagrant/guest/linux/error.rb +9 -0
  109. data/lib/vagrant/guest/redhat.rb +66 -0
  110. data/lib/vagrant/guest/solaris.rb +114 -0
  111. data/lib/vagrant/{systems → guest}/suse.rb +2 -2
  112. data/lib/vagrant/guest/ubuntu.rb +23 -0
  113. data/lib/vagrant/hosts.rb +23 -6
  114. data/lib/vagrant/hosts/arch.rb +7 -3
  115. data/lib/vagrant/hosts/base.rb +36 -46
  116. data/lib/vagrant/hosts/bsd.rb +53 -16
  117. data/lib/vagrant/hosts/fedora.rb +14 -0
  118. data/lib/vagrant/hosts/freebsd.rb +6 -36
  119. data/lib/vagrant/hosts/linux.rb +45 -20
  120. data/lib/vagrant/hosts/windows.rb +16 -0
  121. data/lib/vagrant/provisioners.rb +10 -7
  122. data/lib/vagrant/provisioners/base.rb +11 -34
  123. data/lib/vagrant/provisioners/chef.rb +30 -26
  124. data/lib/vagrant/provisioners/chef_client.rb +37 -23
  125. data/lib/vagrant/provisioners/chef_solo.rb +61 -16
  126. data/lib/vagrant/provisioners/puppet.rb +70 -38
  127. data/lib/vagrant/provisioners/puppet_server.rb +12 -13
  128. data/lib/vagrant/provisioners/shell.rb +24 -24
  129. data/lib/vagrant/registry.rb +49 -0
  130. data/lib/vagrant/ssh.rb +82 -153
  131. data/lib/vagrant/ui.rb +118 -50
  132. data/lib/vagrant/util/busy.rb +1 -1
  133. data/lib/vagrant/util/file_mode.rb +12 -0
  134. data/lib/vagrant/util/network_ip.rb +28 -0
  135. data/lib/vagrant/util/platform.rb +1 -0
  136. data/lib/vagrant/util/subprocess.rb +227 -0
  137. data/lib/vagrant/version.rb +1 -1
  138. data/lib/vagrant/vm.rb +111 -97
  139. data/tasks/acceptance.rake +3 -3
  140. data/tasks/test.rake +7 -2
  141. data/templates/commands/init/Vagrantfile.erb +11 -4
  142. data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
  143. data/templates/guests/arch/network_dhcp.erb +7 -0
  144. data/templates/guests/arch/network_static.erb +7 -0
  145. data/templates/guests/debian/network_dhcp.erb +6 -0
  146. data/templates/guests/debian/network_static.erb +7 -0
  147. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  148. data/templates/guests/gentoo/network_static.erb +4 -0
  149. data/templates/guests/redhat/network_dhcp.erb +6 -0
  150. data/templates/guests/redhat/network_static.erb +7 -0
  151. data/templates/locales/en.yml +241 -122
  152. data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
  153. data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
  154. data/test/acceptance/base.rb +10 -10
  155. data/test/acceptance/box_test.rb +28 -6
  156. data/test/acceptance/destroy_test.rb +1 -1
  157. data/test/acceptance/halt_test.rb +4 -4
  158. data/test/acceptance/init_test.rb +3 -3
  159. data/test/acceptance/networking/host_only_test.rb +37 -0
  160. data/test/acceptance/networking/port_forward_test.rb +125 -0
  161. data/test/acceptance/package_test.rb +46 -0
  162. data/test/acceptance/provisioning/basic_test.rb +61 -0
  163. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  164. data/test/acceptance/provisioning/shell_test.rb +53 -0
  165. data/test/acceptance/resume_test.rb +1 -1
  166. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  167. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  168. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  169. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  170. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  171. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  172. data/test/acceptance/ssh_test.rb +7 -2
  173. data/test/acceptance/support/config.rb +1 -1
  174. data/test/acceptance/support/isolated_environment.rb +41 -150
  175. data/test/acceptance/support/matchers/match_output.rb +1 -1
  176. data/test/acceptance/support/matchers/succeed.rb +14 -0
  177. data/test/acceptance/support/network_tests.rb +29 -0
  178. data/test/acceptance/support/output.rb +9 -1
  179. data/test/acceptance/support/shared/base_context.rb +16 -9
  180. data/test/acceptance/support/shared/command_examples.rb +4 -4
  181. data/test/acceptance/suspend_test.rb +1 -1
  182. data/test/acceptance/up_basic_test.rb +26 -7
  183. data/test/acceptance/up_with_box_url.rb +1 -1
  184. data/test/acceptance/vagrant_test.rb +1 -1
  185. data/test/acceptance/version_test.rb +0 -5
  186. data/test/support/isolated_environment.rb +46 -0
  187. data/test/{acceptance/support → support}/tempdir.rb +0 -0
  188. data/test/unit/base.rb +21 -0
  189. data/test/unit/support/isolated_environment.rb +39 -0
  190. data/test/unit/support/shared/base_context.rb +30 -0
  191. data/test/unit/vagrant/action/builder_test.rb +126 -177
  192. data/test/unit/vagrant/action/environment_test.rb +10 -21
  193. data/test/unit/vagrant/action/runner_test.rb +65 -0
  194. data/test/unit/vagrant/action/warden_test.rb +64 -97
  195. data/test/unit/vagrant/box_collection_test.rb +44 -33
  196. data/test/unit/vagrant/box_test.rb +25 -65
  197. data/test/unit/vagrant/command/base_test.rb +141 -14
  198. data/test/unit/vagrant/config/base_test.rb +16 -43
  199. data/test/unit/vagrant/config/loader_test.rb +79 -0
  200. data/test/unit/vagrant/config/top_test.rb +69 -0
  201. data/test/unit/vagrant/config/vm_test.rb +62 -47
  202. data/test/unit/vagrant/config_test.rb +16 -151
  203. data/test/unit/vagrant/data_store_test.rb +43 -61
  204. data/test/unit/vagrant/downloaders/base_test.rb +12 -22
  205. data/test/unit/vagrant/downloaders/file_test.rb +58 -31
  206. data/test/unit/vagrant/downloaders/http_test.rb +12 -86
  207. data/test/unit/vagrant/environment_test.rb +107 -536
  208. data/test/unit/vagrant/hosts_test.rb +36 -0
  209. data/test/unit/vagrant/registry_test.rb +56 -0
  210. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  211. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
  212. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  213. data/test/unit/vagrant/util/retryable_test.rb +90 -34
  214. data/test/unit/vagrant_test.rb +27 -0
  215. data/test/{unit → unit_legacy}/locales/en.yml +0 -0
  216. data/test/{unit → unit_legacy}/test_helper.rb +0 -0
  217. data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
  218. data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
  219. data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
  220. data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
  221. data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
  222. data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
  223. data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
  224. data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
  225. data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
  226. data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
  227. data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
  228. data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
  229. data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
  230. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
  231. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
  232. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
  233. data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
  234. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
  235. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
  236. data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
  237. data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
  238. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
  239. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
  240. data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
  241. data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
  242. data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
  243. data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
  244. data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
  245. data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
  246. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
  247. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
  248. data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
  249. data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
  250. data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
  251. data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
  252. data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
  253. data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
  254. data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
  255. data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
  256. data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
  257. data/test/unit_legacy/vagrant/box_test.rb +74 -0
  258. data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
  259. data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
  260. data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
  261. data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
  262. data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
  263. data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
  264. data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
  265. data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
  266. data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
  267. data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
  268. data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
  269. data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
  270. data/test/unit_legacy/vagrant/config_test.rb +148 -0
  271. data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
  272. data/test/unit_legacy/vagrant/environment_test.rb +539 -0
  273. data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
  274. data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
  275. data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
  276. data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
  277. data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
  278. data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
  279. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
  280. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
  281. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
  282. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
  283. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
  284. data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
  285. data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
  286. data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
  287. data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
  288. data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
  289. data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
  290. data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
  291. data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
  292. data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
  293. data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
  294. data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
  295. data/vagrant.gemspec +7 -9
  296. metadata +214 -216
  297. data/keys/vagrant.ppk +0 -26
  298. data/lib/vagrant/action/box.rb +0 -11
  299. data/lib/vagrant/action/env.rb +0 -7
  300. data/lib/vagrant/action/general.rb +0 -8
  301. data/lib/vagrant/action/vm.rb +0 -34
  302. data/lib/vagrant/action/vm/forward_ports_helpers.rb +0 -28
  303. data/lib/vagrant/action/vm/modify.rb +0 -37
  304. data/lib/vagrant/action/vm/nfs_helpers.rb +0 -11
  305. data/lib/vagrant/command/group_base.rb +0 -107
  306. data/lib/vagrant/command/helpers.rb +0 -33
  307. data/lib/vagrant/command/named_base.rb +0 -14
  308. data/lib/vagrant/command/upgrade_to_060.rb +0 -45
  309. data/lib/vagrant/command/version.rb +0 -13
  310. data/lib/vagrant/ssh/session.rb +0 -136
  311. data/lib/vagrant/systems.rb +0 -13
  312. data/lib/vagrant/systems/arch.rb +0 -34
  313. data/lib/vagrant/systems/debian.rb +0 -36
  314. data/lib/vagrant/systems/gentoo.rb +0 -27
  315. data/lib/vagrant/systems/linux.rb +0 -82
  316. data/lib/vagrant/systems/linux/error.rb +0 -9
  317. data/lib/vagrant/systems/redhat.rb +0 -48
  318. data/lib/vagrant/systems/solaris.rb +0 -113
  319. data/lib/vagrant/systems/ubuntu.rb +0 -17
  320. data/templates/network_entry_arch.erb +0 -9
  321. data/templates/network_entry_debian.erb +0 -8
  322. data/templates/network_entry_gentoo.erb +0 -5
  323. data/templates/network_entry_redhat.erb +0 -9
  324. data/test/unit/vagrant/ui_test.rb +0 -29
@@ -2,5 +2,5 @@ module Vagrant
2
2
  # This will always be up to date with the current version of Vagrant,
3
3
  # since it is used to generate the gemspec and is also the source of
4
4
  # the version for `vagrant -v`
5
- VERSION = "0.8.10"
5
+ VERSION = "0.9.0"
6
6
  end
@@ -1,100 +1,98 @@
1
+ require 'log4r'
2
+
1
3
  module Vagrant
2
4
  class VM
3
5
  include Vagrant::Util
4
6
 
7
+ attr_reader :uuid
5
8
  attr_reader :env
6
9
  attr_reader :name
7
10
  attr_reader :vm
8
-
9
- class << self
10
- # Finds a virtual machine by a given UUID and either returns
11
- # a Vagrant::VM object or returns nil.
12
- def find(uuid, env=nil, name=nil)
13
- vm = VirtualBox::VM.find(uuid)
14
- new(:vm => vm, :env => env, :name => name)
11
+ attr_reader :box
12
+ attr_reader :config
13
+ attr_reader :driver
14
+
15
+ def initialize(name, env, config, opts=nil)
16
+ @logger = Log4r::Logger.new("vagrant::vm")
17
+
18
+ @name = name
19
+ @vm = nil
20
+ @env = env
21
+ @config = config
22
+ @box = env.boxes.find(config.vm.box)
23
+
24
+ opts ||= {}
25
+ if opts[:base]
26
+ # The name is the ID we use.
27
+ @uuid = name
28
+ else
29
+ # Load the UUID if its saved.
30
+ active = env.local_data[:active] || {}
31
+ @uuid = active[@name.to_s]
15
32
  end
16
- end
17
-
18
- def initialize(opts=nil)
19
- defaults = {
20
- :vm => nil,
21
- :env => nil,
22
- :name => nil
23
- }
24
33
 
25
- opts = defaults.merge(opts || {})
34
+ # Reload ourselves to get the state
35
+ reload!
26
36
 
27
- @vm = opts[:vm]
28
- @name = opts[:name]
29
-
30
- if !opts[:env].nil?
31
- # We have an environment, so we create a new child environment
32
- # specifically for this VM. This step will load any custom
33
- # config and such.
34
- @env = Vagrant::Environment.new({
35
- :cwd => opts[:env].cwd,
36
- :parent => opts[:env],
37
- :vm => self
38
- }).load!
39
-
40
- # Load the associated system.
41
- load_system!
42
- end
43
-
44
- @loaded_system_distro = false
37
+ # Load the associated guest.
38
+ load_guest!
39
+ @loaded_guest_distro = false
45
40
  end
46
41
 
47
- # Loads the system associated with the VM. The system class is
42
+ # Loads the guest associated with the VM. The guest class is
48
43
  # responsible for OS-specific functionality. More information
49
- # can be found by reading the documentation on {Vagrant::Systems::Base}.
44
+ # can be found by reading the documentation on {Vagrant::Guest::Base}.
50
45
  #
51
46
  # **This method should never be called manually.**
52
- def load_system!(system=nil)
53
- system ||= env.config.vm.system
54
- env.logger.info("vm: #{name}") { "Loading system: #{system}" }
55
-
56
- if system.is_a?(Class)
57
- raise Errors::VMSystemError, :_key => :invalid_class, :system => system.to_s if !(system <= Systems::Base)
58
- @system = system.new(self)
59
- elsif system.is_a?(Symbol)
60
- # Hard-coded internal systems
61
- mapping = {
62
- :debian => Systems::Debian,
63
- :ubuntu => Systems::Ubuntu,
64
- :freebsd => Systems::FreeBSD,
65
- :gentoo => Systems::Gentoo,
66
- :redhat => Systems::Redhat,
67
- :suse => Systems::Suse,
68
- :linux => Systems::Linux,
69
- :solaris => Systems::Solaris,
70
- :arch => Systems::Arch
71
- }
72
-
73
- raise Errors::VMSystemError, :_key => :unknown_type, :system => system.to_s if !mapping.has_key?(system)
74
- @system = mapping[system].new(self)
47
+ def load_guest!(guest=nil)
48
+ guest ||= config.vm.guest
49
+ @logger.info("Loading guest: #{guest}")
50
+
51
+ if guest.is_a?(Class)
52
+ raise Errors::VMGuestError, :_key => :invalid_class, :system => guest.to_s if !(guest <= Systems::Base)
53
+ @guest = guest.new(self)
54
+ elsif guest.is_a?(Symbol)
55
+ guest_klass = Vagrant.guests.get(guest)
56
+ raise Errors::VMGuestError, :_key => :unknown_type, :system => guest.to_s if !guest_klass
57
+ @guest = guest_klass.new(self)
75
58
  else
76
- raise Errors::VMSystemError, :unspecified
59
+ raise Errors::VMGuestError, :unspecified
77
60
  end
78
61
  end
79
62
 
80
- # Returns the system for this VM, loading the distro of the system if
63
+ # Returns a channel object to communicate with the virtual
64
+ # machine.
65
+ def channel
66
+ @channel ||= Communication::SSH.new(self)
67
+ end
68
+
69
+ # Returns the guest for this VM, loading the distro of the system if
81
70
  # we can.
82
- def system
83
- if !@loaded_system_distro && created? && vm.running?
84
- # Load the system distro for the first time
85
- result = @system.distro_dispatch
86
- load_system!(result)
87
- @loaded_system_distro = true
71
+ def guest
72
+ if !@loaded_guest_distro && state == :running
73
+ # Load the guest distro for the first time
74
+ result = @guest.distro_dispatch
75
+ load_guest!(result)
76
+ @loaded_guest_distro = true
88
77
  end
89
78
 
90
- @system
79
+ @guest
91
80
  end
92
81
 
93
- # Access the {Vagrant::SSH} object associated with this VM.
94
- # On the initial call, this will initialize the object. On
95
- # subsequent calls it will reuse the existing object.
82
+ # Access the {Vagrant::SSH} object associated with this VM, which
83
+ # is used to get SSH credentials with the virtual machine.
96
84
  def ssh
97
- @ssh ||= SSH.new(env)
85
+ @ssh ||= SSH.new(self)
86
+ end
87
+
88
+ # Returns the state of the VM as a symbol.
89
+ #
90
+ # @return [Symbol]
91
+ def state
92
+ return :not_created if !@uuid
93
+ state = @driver.read_state
94
+ return :not_created if !state
95
+ return state
98
96
  end
99
97
 
100
98
  # Returns a boolean true if the VM has been created, otherwise
@@ -102,19 +100,17 @@ module Vagrant
102
100
  #
103
101
  # @return [Boolean]
104
102
  def created?
105
- !vm.nil?
103
+ state != :not_created
106
104
  end
107
105
 
108
106
  # Sets the currently active VM for this VM. If the VM is a valid,
109
107
  # created virtual machine, then it will also update the local data
110
108
  # to persist the VM. Otherwise, it will remove itself from the
111
109
  # local data (if it exists).
112
- def vm=(value)
113
- @vm = value
110
+ def uuid=(value)
114
111
  env.local_data[:active] ||= {}
115
-
116
- if value && value.uuid
117
- env.local_data[:active][name.to_s] = value.uuid
112
+ if value
113
+ env.local_data[:active][name.to_s] = value
118
114
  else
119
115
  env.local_data[:active].delete(name.to_s)
120
116
  end
@@ -122,60 +118,78 @@ module Vagrant
122
118
  # Commit the local data so that the next time vagrant is initialized,
123
119
  # it realizes the VM exists
124
120
  env.local_data.commit
125
- end
126
121
 
127
- def uuid
128
- vm ? vm.uuid : nil
122
+ # Store the uuid and reload the instance
123
+ @uuid = value
124
+ reload!
129
125
  end
130
126
 
131
127
  def reload!
132
- @vm = VirtualBox::VM.find(@vm.uuid)
128
+ begin
129
+ @driver = Driver::VirtualBox.new(@uuid)
130
+ rescue Driver::VirtualBox::VMNotFound
131
+ # Clear the UUID since this VM doesn't exist. Note that this calls
132
+ # back into `reload!` but shouldn't ever result in infinite
133
+ # recursion since `@uuid` will be nil.
134
+ self.uuid = nil
135
+ end
133
136
  end
134
137
 
135
138
  def package(options=nil)
136
- env.actions.run(:package, { "validate" => false }.merge(options || {}))
139
+ run_action(:package, { "validate" => false }.merge(options || {}))
137
140
  end
138
141
 
139
142
  def up(options=nil)
140
- env.actions.run(:up, options)
143
+ run_action(:up, options)
141
144
  end
142
145
 
143
146
  def start(options=nil)
144
- raise Errors::VMInaccessible if !@vm.accessible?
145
- return if @vm.running?
146
- return resume if @vm.saved?
147
+ return if state == :running
148
+ return resume if state == :saved
147
149
 
148
- env.actions.run(:start, options)
150
+ run_action(:start, options)
149
151
  end
150
152
 
151
153
  def halt(options=nil)
152
- env.actions.run(:halt, options)
154
+ run_action(:halt, options)
153
155
  end
154
156
 
155
157
  def reload
156
- env.actions.run(:reload)
158
+ run_action(:reload)
157
159
  end
158
160
 
159
161
  def provision
160
- env.actions.run(:provision)
162
+ run_action(:provision)
161
163
  end
162
164
 
163
165
  def destroy
164
- env.actions.run(:destroy)
166
+ run_action(:destroy)
165
167
  end
166
168
 
167
169
  def suspend
168
- env.actions.run(:suspend)
170
+ run_action(:suspend)
169
171
  end
170
172
 
171
173
  def resume
172
- env.actions.run(:resume)
174
+ run_action(:resume)
173
175
  end
174
176
 
175
- def saved?
176
- @vm.saved?
177
+ def ui
178
+ return @_ui if defined?(@_ui)
179
+ @_ui = @env.ui.dup
180
+ @_ui.resource = @name
181
+ @_ui
177
182
  end
178
183
 
179
- def powered_off?; @vm.powered_off? end
184
+ protected
185
+
186
+ def run_action(name, options=nil)
187
+ options = {
188
+ :vm => self,
189
+ :ui => ui
190
+ }.merge(options || {})
191
+
192
+ env.action_runner.run(name, options)
193
+ end
180
194
  end
181
195
  end
@@ -12,7 +12,7 @@ namespace :acceptance do
12
12
  desc "Downloads the boxes required for running the acceptance tests."
13
13
  task :boxes, :directory do |t, args|
14
14
  # Create the directory where the boxes will be downloaded
15
- box_dir = Pathname.new(args[:directory] || File.expand_path("../../test/tmp/boxes", __FILE__))
15
+ box_dir = Pathname.new(args[:directory] || File.expand_path("../../boxes", __FILE__))
16
16
  box_dir.mkpath
17
17
  puts "Boxes will be placed in: #{box_dir}"
18
18
 
@@ -73,10 +73,10 @@ namespace :acceptance do
73
73
  desc "Generates the configuration for acceptance tests from current source."
74
74
  task :config, :box_dir do |t, args|
75
75
  require File.expand_path("../../lib/vagrant/version", __FILE__)
76
- require File.expand_path('../../test/acceptance/support/tempdir', __FILE__)
76
+ require File.expand_path('../../test/support/tempdir', __FILE__)
77
77
 
78
78
  # Get the directory for the boxes
79
- box_dir = Pathname.new(args[:box_dir] || File.expand_path("../../test/tmp/boxes", __FILE__))
79
+ box_dir = Pathname.new(args[:box_dir] || File.expand_path("../../boxes", __FILE__))
80
80
 
81
81
  # Generate the binstubs for the Vagrant binary
82
82
  tempdir = Tempdir.new
@@ -2,12 +2,17 @@ require 'rake/testtask'
2
2
  require 'rspec/core/rake_task'
3
3
 
4
4
  namespace :test do
5
- Rake::TestTask.new do |t|
5
+ RSpec::Core::RakeTask.new do |t|
6
6
  t.name = "unit"
7
- t.libs << "test/unit"
8
7
  t.pattern = "test/unit/**/*_test.rb"
9
8
  end
10
9
 
10
+ Rake::TestTask.new do |t|
11
+ t.name = "unit_old"
12
+ t.libs << "test/unit_legacy"
13
+ t.pattern = "test/unit_legacy/**/*_test.rb"
14
+ end
15
+
11
16
  RSpec::Core::RakeTask.new do |t|
12
17
  t.name = "acceptance"
13
18
  t.pattern = "test/acceptance/**/*_test.rb"
@@ -16,13 +16,20 @@ Vagrant::Config.run do |config|
16
16
  # Boot with a GUI so you can see the screen. (Default is headless)
17
17
  # config.vm.boot_mode = :gui
18
18
 
19
- # Assign this VM to a host only network IP, allowing you to access it
20
- # via the IP.
21
- # config.vm.network "33.33.33.10"
19
+ # Assign this VM to a host-only network IP, allowing you to access it
20
+ # via the IP. Host-only networks can talk to the host machine as well as
21
+ # any other machines on the same network, but cannot be accessed (through this
22
+ # network interface) by any external networks.
23
+ # config.vm.network :hostonly, "33.33.33.10"
24
+
25
+ # Assign this VM to a bridged network, allowing you to connect directly to a
26
+ # network using the host's network device. This makes the VM appear as another
27
+ # physical device on your network.
28
+ # config.vm.network :bridged
22
29
 
23
30
  # Forward a port from the guest to the host, which allows for outside
24
31
  # computers to access the VM, whereas host only networking does not.
25
- # config.vm.forward_port "http", 80, 8080
32
+ # config.vm.forward_port 80, 8080
26
33
 
27
34
  # Share an additional folder to the guest VM. The first argument is
28
35
  # an identifier, the second is the path on the guest to mount the
@@ -0,0 +1,7 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ interface=eth<%= options[:interface] %>
4
+ address=
5
+ netmask=
6
+ gateway=
7
+ #VAGRANT-END
@@ -0,0 +1,7 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ interface=eth<%= options[:interface] %>
4
+ address=<%= options[:ip]%>
5
+ netmask=<%= options[:netmask] %>
6
+ gateway=
7
+ #VAGRANT-END
@@ -0,0 +1,6 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ auto eth<%= options[:interface] %>
4
+ iface eth<%= options[:interface] %> inet dhcp
5
+ post-up route del default dev $IFACE
6
+ #VAGRANT-END
@@ -0,0 +1,7 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ auto eth<%= options[:interface] %>
4
+ iface eth<%= options[:interface] %> inet static
5
+ address <%= options[:ip] %>
6
+ netmask <%= options[:netmask] %>
7
+ #VAGRANT-END
@@ -0,0 +1,4 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ config_eth<%= options[:interface] %>="dhcp"
4
+ #VAGRANT-END
@@ -0,0 +1,4 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ config_eth<%= options[:interface] %>=("<%= options[:ip] %> netmask <%= options[:netmask] %>")
4
+ #VAGRANT-END
@@ -0,0 +1,6 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ BOOTPROTO=dhcp
4
+ ONBOOT=yes
5
+ DEVICE=eth<%= options[:interface] %>
6
+ #VAGRANT-END
@@ -0,0 +1,7 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ BOOTPROTO=static
4
+ IPADDR=<%= options[:ip] %>
5
+ NETMASK=<%= options[:netmask] %>
6
+ DEVICE=eth<%= options[:interface] %>
7
+ #VAGRANT-END
@@ -1,7 +1,6 @@
1
1
  en:
2
2
  vagrant:
3
3
  general:
4
- creating_home_dir: "Creating home directory since it doesn't exist: %{directory}"
5
4
  moving_home_dir: "Moving old Vagrant home directory to new location: %{directory}"
6
5
  home_dir_migration_failed: |-
7
6
  Both an old and new Vagrant home directory exist. Only the new one will
@@ -27,12 +26,21 @@ en:
27
26
  puppetd_not_detected: |-
28
27
  The `puppetd` binary was not found on the VM is required for Puppet Server provisioning.
29
28
  Please verify that Puppet is installed and that the binary is available on the PATH.
30
- cli_missing_env: This command requires that a Vagrant environment be properly passed in as the last parameter.
29
+ cli_invalid_options: |-
30
+ An invalid option was specified. The help for this command
31
+ is available below.
32
+
33
+ %{help}
31
34
  config_validation: |-
32
35
  There was a problem with the configuration of Vagrant. The error message(s)
33
36
  are printed below:
34
37
 
35
38
  %{messages}
39
+ deprecation: |-
40
+ You are using a feature that has been removed in this version. Explanation:
41
+
42
+ %{message}
43
+ Note that this error message will not appear in the next version of Vagrant.
36
44
  dotfile_is_directory: |-
37
45
  The local file Vagrant uses to store data ".vagrant" already exists
38
46
  and is a directory! If you are in your home directory, then please run
@@ -44,10 +52,49 @@ en:
44
52
  may run at any given time to avoid problems with VirtualBox inconsistencies
45
53
  occurring. Please wait for the other instance of Vagrant to end and then
46
54
  try again.
47
- interrupted: "Vagrant exited after cleanup due to external interrupt."
48
- multi_vm_required: "A multi-vm environment is required for name specification to this command."
49
- multi_vm_target_required: "`vagrant %{command}` requires a specific VM name to target in a multi-VM environment."
50
- no_env: "No Vagrant environment detected. Run `vagrant init` to set one up."
55
+ guest:
56
+ invalid_class: |-
57
+ The specified guest class does not inherit from `Vagrant::Guest::Base`.
58
+ The specified guest class must inherit from this class.
59
+
60
+ The specified guest class was: %{guest}
61
+ unknown_type: |-
62
+ The specified guest type is unknown: %{guest}. Please change this
63
+ to a proper value.
64
+ unspecified: |-
65
+ A VM guest type must be specified! This is done via the `config.vm.guest`
66
+ configuration value. Please read the documentation online for more information.
67
+ home_dir_not_accessible: |-
68
+ The home directory you specified is not accessible. The home
69
+ directory that Vagrant uses must be both readable and writable.
70
+
71
+ You specified: %{home_path}
72
+ interrupted: |-
73
+ Vagrant exited after cleanup due to external interrupt.
74
+ multi_vm_required: |-
75
+ A multi-vm environment is required for name specification to this command.
76
+ multi_vm_target_required: |-
77
+ This command requires a specific VM name to target in a multi-VM environment.
78
+ no_env: |-
79
+ A Vagrant environment is required to run this command. Run `vagrant init`
80
+ to set one up.
81
+ port_collision_resume: |-
82
+ This VM cannot be resumed, because the forwarded ports would collide with
83
+ another running virtual machine. Normally, Vagrant will attempt to fix this
84
+ for you but VirtualBox only allows forwarded ports to change if the VM is
85
+ powered off. Therefore, please reload your VM or halt the other running
86
+ VMs to continue.
87
+ scp_unavailable: |-
88
+ SSH server on the guest doesn't support SCP. Please install the necessary
89
+ software to enable SCP on your guest operating system.
90
+ shared_folder_create_failed: |-
91
+ Failed to create the following shared folder on the host system. This is
92
+ usually because Vagrant does not have sufficient permissions to create
93
+ the folder.
94
+
95
+ %{path}
96
+
97
+ Please create the folder manually or specify another path to share.
51
98
  ssh_authentication_failed: |-
52
99
  SSH authentication failed! This is typically caused by the public/private
53
100
  keypair for the SSH user not being properly set on the guest VM. Please
@@ -58,10 +105,6 @@ en:
58
105
  Vagrant assumes that this means the command failed!
59
106
 
60
107
  %{command}
61
-
62
- The output of the command prior to failing is outputted below:
63
-
64
- %{output}
65
108
  ssh_connection_refused: |-
66
109
  SSH connection was refused! This usually happens if the VM failed to
67
110
  boot properly. Some steps to try to fix this: First, try reloading your
@@ -77,80 +120,66 @@ en:
77
120
 
78
121
  %{key_path}
79
122
  ssh_port_not_detected: |-
80
- Vagrant couldn't determine the SSH port for your VM! This is a rare,
81
- exceptional event, and a bug should be filed. Please try recreating your
82
- VM (vagrant destroy, then vagrant up). Sorry!
83
- ssh_unavailable: "`ssh` binary could not be found. Is an SSH client installed?"
84
- ssh_unavailable_windows: |-
85
- `vagrant ssh` isn't available on the Windows platform. The
86
- vagrant.ppk file for use with Putty is available at:
87
-
88
- %{key_path}.ppk
123
+ Vagrant couldn't determine the SSH port for your VM! Vagrant attempts to
124
+ automatically find a forwarded port that matches your `config.ssh.guest_port`
125
+ (default: 22) value and uses this for SSH. Alternatively, if `config.ssh.port`
126
+ is set, it will use this.
89
127
 
90
- To use this create a new Putty session for `vagrant@localhost`
91
- on port `%{ssh_port}`, in the Connection>SSH>Auth
92
- configuration section navigate to the vagrant.ppk file,
93
- select it, save the session for later use, and connect.
128
+ However, in this case Vagrant was unable to find a forwarded port that matches
129
+ the guest port and `config.ssh.port` is not set!
94
130
 
95
- For a more detailed guide please consult:
96
-
97
- http://vagrantup.com/docs/getting-started/setup/windows.html
98
-
99
- system:
100
- invalid_class: |-
101
- The specified system does not inherit from `Vagrant::Systems::Base`. The
102
- specified system class must inherit from this class.
103
-
104
- The specified system class was: %{system}
105
- unknown_type: |-
106
- The specified system type is unknown: %{system}. Please change this
107
- to a proper value.
108
- unspecified: |-
109
- A VM system type must be specified! This is done via the `config.vm.system`
110
- configuration value. Please read the documentation online for more information.
131
+ Please make sure that you have a forwarded port that goes to the configured
132
+ guest port value, or specify an explicit SSH port with `config.ssh.port`.
133
+ ssh_unavailable: "`ssh` binary could not be found. Is an SSH client installed?"
134
+ ssh_unavailable_windows: |-
135
+ `vagrant ssh` isn't available on the Windows platform. You are still able
136
+ to SSH into the virtual machine if you get a Windows SSH client (such as
137
+ PuTTY). The authentication information is shown below:
138
+
139
+ Host: %{host}
140
+ Port: %{port}
141
+ Username: %{username}
142
+ Private key: %{key_path}
143
+ vagrantfile_exists: |-
144
+ `Vagrantfile` already exists in this directory. Remove it before
145
+ running `vagrant init`.
111
146
  vagrantfile_syntax_error: |-
112
147
  There is a syntax error in the following Vagrantfile. The syntax error
113
148
  message is reproduced below for convenience:
114
149
 
115
150
  %{file}
116
- virtualbox_invalid_version: |-
117
- Vagrant has detected that you have VirtualBox version %{version} installed!
118
- Vagrant requires that you use at least VirtualBox version 4.1. Please install
119
- a more recent version of VirtualBox to continue.
151
+ vboxmanage_error: |-
152
+ There was an error executing the following command with VBoxManage:
153
+
154
+ %{command}
120
155
 
121
- Early versions of Vagrant support earlier versions of VirtualBox. Specifically,
122
- the 0.7.x series supports VirtualBox 4.0.x and the 0.6.x series supports VirtualBox
123
- 3.2.x. Please use the version you need.
156
+ For more information on the failure, enable detailed logging with
157
+ VAGRANT_LOG.
158
+ virtualbox_invalid_version: |-
159
+ Vagrant has detected that you have a version of VirtualBox installed
160
+ that is not supported. Please install one of the supported versions
161
+ listed below to use Vagrant:
124
162
 
125
- Any newer versions may not be supported yet. Please check the mailing list
126
- for any announcements of newer versions.
163
+ %{supported_versions}
127
164
  virtualbox_not_detected: |-
128
165
  Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed.
129
- If VirtualBox is installed, it may be an incorrect version. Vagrant currently
130
- requires VirtualBox 4.1.x. Please install the proper version to continue.
131
-
132
- If you have an older or newer version of VirtualBox, please make sure you're
133
- using the proper version of Vagrant. Ask the mailing list if you have questions.
134
- virtualbox_not_detected_win64: |-
135
- Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed
136
- with version 4.0.0 or higher.
137
-
138
- Additionally, it appears you're on 64-bit Windows. If this is the case, and
139
- VirtualBox is properly installed with the correct version, then please make
140
- sure you're running Vagrant via JRuby on a 64-bit Java runtime. For more
141
- information on how to set this up and how to verify it is properly setup,
142
- please view the guide online at:
143
-
144
- http://vagrantup.com/docs/getting-started/setup/windows_x64.html
145
-
146
- vm_creation_required: "VM must be created before running this command. Run `vagrant up` first."
166
+ Vagrant uses the `VBoxManage` binary that ships with VirtualBox, and requires
167
+ this to be available on the PATH. If VirtualBox is installed, please find the
168
+ `VBoxManage` binary and add it to the PATH environmental variable.
169
+ vm_creation_required: |-
170
+ VM must be created before running this command. Run `vagrant up` first.
147
171
  vm_inaccessible: |-
148
172
  Your VM has become "inaccessible." Unfortunately, this is a critical error
149
173
  with VirtualBox that Vagrant can not cleanly recover from. Please open VirtualBox
150
174
  and clear out your inaccessible virtual machines or find a way to fix
151
175
  them.
152
- vm_not_found: "A VM by the name of %{name} was not found."
153
- vm_not_running: "VM must be running to open SSH connection."
176
+ vm_no_match: |-
177
+ No virtual machines matched the regular expression given.
178
+ vm_not_found: |-
179
+ A VM by the name of %{name} was not found.
180
+ vm_not_running: |-
181
+ VM must be running to open SSH connection. Run `vagrant up`
182
+ to start the virtual machine.
154
183
 
155
184
  #-------------------------------------------------------------------------------
156
185
  # Translations for config validation errors
@@ -167,17 +196,22 @@ en:
167
196
  private_key_missing: "`private_key_path` file must exist: %{path}"
168
197
  vm:
169
198
  base_mac_invalid: "Base MAC address for eth0/NAT must be set. Contact box maintainer for more information."
170
- boot_mode_invalid: "Boot mode must be one of: vrdp or gui"
199
+ boot_mode_invalid: "Boot mode must be one of: headless or gui"
171
200
  box_missing: "A box must be specified."
172
201
  box_not_found: "The box '%{name}' could not be found."
173
- network_ip_invalid: "The host only network IP '%{ip}' is invalid."
202
+ network_invalid: |-
203
+ The network type '%{type}' is not valid. Please use
204
+ 'hostonly' or 'bridged'.
205
+ network_ip_required: |-
206
+ Host only networks require an IP as an argument.
207
+ network_ip_invalid: |-
208
+ The host only network IP '%{ip}' is invalid.
174
209
  network_ip_ends_one: |-
175
210
  The host only network IP '%{ip}' must not end in a 1, as this
176
211
  is reserved for the host machine.
177
212
  shared_folder_hostpath_missing: "Shared folder host path for '%{name}' doesn't exist: %{path}"
178
213
  shared_folder_nfs_owner_group: |-
179
214
  Shared folder '%{name}': NFS does not support the owner/group settings.
180
- provisioner_chef_server_changed: "The provisioner 'chef_server' is now 'chef_client'"
181
215
  provisioner_not_found: "The provisioner '%{shortcut}' doesn't exist."
182
216
  provisioner_invalid_class: "The provisioner '%{shortcut}' must inherit from `Vagrant::Provisioners::Base`."
183
217
 
@@ -190,6 +224,12 @@ en:
190
224
  vm_not_running: "VM is not currently running. Please bring it up to run this command."
191
225
  box:
192
226
  no_installed_boxes: "There are no installed boxes! Use `vagrant box add` to add some."
227
+ init:
228
+ success: |-
229
+ A `Vagrantfile` has been placed in this directory. You are now
230
+ ready to `vagrant up` your first virtual environment! Please read
231
+ the comments in the Vagrantfile as well as documentation on
232
+ `vagrantup.com` for more information on using Vagrant.
193
233
  status:
194
234
  aborted: |-
195
235
  The VM is in an aborted state. This means that it was abruptly
@@ -210,13 +250,15 @@ en:
210
250
  not_created: |-
211
251
  The environment has not yet been created. Run `vagrant up` to
212
252
  create the environment.
213
- powered_off: The VM is powered off. To restart the VM, simply run `vagrant up`
253
+ poweroff: |-
254
+ The VM is powered off. To restart the VM, simply run `vagrant up`
214
255
  running: |-
215
256
  The VM is running. To stop this VM, you can run `vagrant halt` to
216
257
  shut it down forcefully, or you can run `vagrant suspend` to simply
217
258
  suspend the virtual machine. In either case, to restart it again,
218
259
  simply run `vagrant up`.
219
- saved: To resume this VM, simply run `vagrant up`.
260
+ saved: |-
261
+ To resume this VM, simply run `vagrant up`.
220
262
  stuck: |-
221
263
  The VM is "stuck!" This is a very rare state which means that
222
264
  VirtualBox is unable to recover the current state of the VM.
@@ -228,18 +270,6 @@ en:
228
270
  VM, run `vagrant status NAME`.
229
271
  up:
230
272
  vm_created: "VM already created. Booting if it's not already running..."
231
- upgrade_to_060:
232
- already_done: "Environment appears to already be upgraded to 0.6.0. Doing nothing!"
233
- ask: "Are you sure you want to execute this command?"
234
- backing_up: "Backing up previous .vagrant file..."
235
- complete: "Environment upgraded to 0.6.0 successfully."
236
- info: |-
237
- This command will upgrade the current environment from a pre-0.6.0
238
- environment to a 0.6.x compatible environment. Running this command
239
- multiple times should be okay. This command will make a backup file
240
- prior to making any changes. Therefore, if anything goes wrong, then
241
- restore that file to ".vagrant" in the same directory as the Vagrantfile.
242
- quit: "Not executing this command by user request. Quitting..."
243
273
  version:
244
274
  output: "Vagrant version %{version}"
245
275
 
@@ -259,6 +289,15 @@ en:
259
289
  failed_to_boot: |-
260
290
  Failed to connect to VM via SSH. Please verify the VM successfully booted
261
291
  by looking at the VirtualBox GUI.
292
+ bridged_networking:
293
+ available: |-
294
+ Available bridged network interfaces:
295
+ bridging: |-
296
+ Bridging adapter #%{adapter} to '%{bridge}'
297
+ enabling: |-
298
+ Enabling bridged network...
299
+ preparing: |-
300
+ Preparing bridged networking...
262
301
  check_box:
263
302
  not_found: Box %{name} was not found. Fetching box from specified URL...
264
303
  not_specified: |-
@@ -290,9 +329,21 @@ en:
290
329
  VirtualBox Version: %{virtualbox_version}
291
330
  clear_forward_ports:
292
331
  deleting: Clearing any previously set forwarded ports...
332
+ clear_network_interfaces:
333
+ deleting: Clearing any previously set network interfaces...
293
334
  clear_shared_folders:
294
335
  deleting: Cleaning previously set shared folders...
295
336
  customize:
337
+ failure: |-
338
+ A customization command failed:
339
+
340
+ %{command}
341
+
342
+ The following error was experienced:
343
+
344
+ %{error}
345
+
346
+ Please fix this customization and try again.
296
347
  running: Running any VM customizations...
297
348
  destroy:
298
349
  destroying: Destroying VM and associated drives...
@@ -313,24 +364,25 @@ en:
313
364
  auto-correction range are all also used.
314
365
 
315
366
  VM: %{vm_name}
316
- Forwarded port: %{name} (%{guest_port} => %{host_port})
367
+ Forwarded port: %{guest_port} => %{host_port}
317
368
  collision_error: |-
318
369
  Vagrant cannot forward the specified ports on this VM, since they
319
370
  would collide with another VirtualBox virtual machine's forwarded
320
- ports! The '%{name}' forwarded port (%{host_port}) is already in use on the host
371
+ ports! The forwarded port to %{host_port} is already in use on the host
321
372
  machine.
322
373
 
323
374
  To fix this, modify your current projects Vagrantfile to use another
324
375
  port. Example, where '1234' would be replaced by a unique host port:
325
376
 
326
- config.vm.forward_port("%{name}", %{guest_port}, 1234)
377
+ config.vm.forward_port %{guest_port}, 1234
327
378
 
328
- fixed_collision: Fixed port collision '%{name}'. Now on port %{new_port}.
379
+ fixed_collision: |-
380
+ Fixed port collision for %{guest_port} => %{host_port}. Now on port %{new_port}.
329
381
  forwarding: Forwarding ports...
330
- forwarding_entry: "-- %{name}: %{guest_port} => %{host_port} (adapter %{adapter})"
382
+ forwarding_entry: |-
383
+ -- %{guest_port} => %{host_port} (adapter %{adapter})
331
384
  non_nat: |-
332
- VirtualBox adapter #%{adapter} not configured as "NAT"
333
- Skipping port forwarding '%{name}'.
385
+ VirtualBox adapter #%{adapter} not configured as "NAT". Skipping: '%{name}'.
334
386
  privileged_ports: |-
335
387
  You are trying to forward to privileged ports (ports <= 1024). Most
336
388
  operating systems restrict this to only privileged process (typically
@@ -338,7 +390,10 @@ en:
338
390
  the port forwarding doesn't work. If any problems occur, please try a
339
391
  port higher than 1024.
340
392
  halt:
341
- force: Forcing shutdown of VM...
393
+ force: |-
394
+ Forcing shutdown of VM...
395
+ graceful: |-
396
+ Attempting graceful shutdown of VM...
342
397
  host_name:
343
398
  setting: "Setting host name..."
344
399
  import:
@@ -354,6 +409,28 @@ en:
354
409
  MAC address is typically up to the box and box maintiner. Please contact
355
410
  the relevant person to solve this issue.
356
411
  network:
412
+ adapter_collision: |-
413
+ More than one network have been assigned to the same adapter. Please
414
+ make sure your networks you've configured in your Vagrantfile do not
415
+ overlap.
416
+ configuring: |-
417
+ Configuring and enabling network interfaces...
418
+ dhcp_already_attached: |-
419
+ A host only network interface you're attempting to configure via DHCP
420
+ already has a conflicting host only adapter with DHCP enabled. The
421
+ DHCP on this adapter is incompatible with the DHCP settings. Two
422
+ host only network interfaces are not allowed to overlap, and each
423
+ host only network interface can have only one DHCP server. Please
424
+ reconfigure your host only network or remove the virtual machine
425
+ using the other host only network.
426
+ no_adapters: |-
427
+ No available adapters on the virtual machine were found to accomodate
428
+ for all configured networks. VirtualBox virtual machines have 8
429
+ network interfaces available usually, so please lower the number of
430
+ networks to below 8.
431
+ preparing: |-
432
+ Preparing network interfaces based on configuration...
433
+ host_only_network:
357
434
  collides: |-
358
435
  The specified host network collides with a non-hostonly network!
359
436
  This will cause your specified IP to be inaccessible. Please change
@@ -367,19 +444,15 @@ en:
367
444
  host only network for you. Alternatively, please create the
368
445
  specified network manually.
369
446
  preparing: "Preparing host only network..."
370
- windows_not_implemented: |-
371
- Host only networking is currently broken on Windows due to a bug
372
- in jruby-win32ole. When the bug is fixed, a patch release for Vagrant
373
- will be released to remove this error. Until then, please just use
374
- forwarded ports.
375
447
  nfs:
376
448
  host_required: |-
377
449
  A host class is required for NFS shared folders. By default, these
378
450
  are auto-detected, but can be overridden with `config.vagrant.host`.
379
- There is currently not host class loaded.
451
+ There is currently no host class loaded.
380
452
  no_host_network: |-
381
- NFS shared folders requires that host only networking is enabled.
382
- Please enable host only networking via `config.vm.network`.
453
+ NFS shared folders requires that host only networking is enabled
454
+ with a static IP. Please enable host only network and assign a
455
+ static IP via `config.vm.network`.
383
456
  not_supported: |-
384
457
  The host class is reporting that NFS is not supported by this host,
385
458
  or `nfsd` may not be installed. Please verify that `nfsd` is installed
@@ -425,6 +498,10 @@ en:
425
498
  A box already exists under the name of '%{name}'. This may or may
426
499
  not be the same box you are trying to add. Please use another name
427
500
  or remove the previous box then try to add it again.
501
+ untar_failure: |-
502
+ Failed to untar the box file. This is usually because you're
503
+ attempting to add a box that isn't a valid box file. Please
504
+ double check that the box file is properly packaged.
428
505
  verify:
429
506
  verifying: "Verifying box..."
430
507
  failed: |-
@@ -464,12 +541,15 @@ en:
464
541
 
465
542
  hosts:
466
543
  bsd:
467
- nfs_export:
468
- prepare: "Preparing to edit /etc/exports. Administrator privileges will be required..."
544
+ nfs_export: |-
545
+ Preparing to edit /etc/exports. Administrator privileges will be required...
546
+ nfs_prune: |-
547
+ Pruning invalid NFS exports. Administrator privileges will be required...
469
548
  linux:
470
- nfs_export:
471
- prepare: "Preparing to edit /etc/exports. Administrator privileges will be required..."
472
-
549
+ nfs_export: |-
550
+ Preparing to edit /etc/exports. Administrator privileges will be required...
551
+ nfs_prune: |-
552
+ Pruning invalid NFS exports. Administrator privileges will be required...
473
553
  arch:
474
554
  nfs_export:
475
555
  prepare: "Preparing to edit /etc/exports. Administrator privileges will be required..."
@@ -481,8 +561,20 @@ en:
481
561
  upload_validation_key: "Uploading chef client validation key..."
482
562
  upload_encrypted_data_bag_secret_key: "Uploading chef encrypted data bag secret key..."
483
563
  running_client: "Running chef-client..."
564
+ running_client_again: "Running chef-client again (failed to converge)..."
484
565
  running_solo: "Running chef-solo..."
485
- invalid_provisioner: "Vagrant::Provisioners::Chef is not a valid provisioner! Use ChefSolo or ChefClient instead."
566
+ running_solo_again: "Running chef-solo again (failed to converge)..."
567
+ invalid_provisioner: |-
568
+ Vagrant::Provisioners::Chef is not a valid provisioner! Use
569
+ ChefSolo or ChefClient instead.
570
+ missing_shared_folders: |-
571
+ Shared folders that Chef requires are missing on the virtual machine.
572
+ This is usually due to configuration changing after already booting the
573
+ machine. The fix is to run a `vagrant reload` so that the proper shared
574
+ folders will prepared and mounted on the VM.
575
+ no_convergence: |-
576
+ Chef never successfully completed! Any errors should be visible in the
577
+ output above. Please fix your recipes so that they properly complete.
486
578
  not_detected: |-
487
579
  The `%{binary}` binary appears to not be in the PATH of the guest. This
488
580
  could be because the PATH is not properly setup or perhaps chef is not
@@ -507,8 +599,17 @@ en:
507
599
  installed on this guest. Puppet provisioning can not continue without
508
600
  Puppet properly installed.
509
601
  running_puppet: "Running Puppet with %{manifest}..."
510
- manifest_missing: "The Puppet %{manifest} manifest is missing. You cannot configure this box."
602
+ manifest_missing: |-
603
+ The configured Puppet manifest is missing. Please specify a path to an
604
+ existing manifest:
605
+
606
+ %{manifest}
511
607
  manifests_path_missing: "The manifests path specified for Puppet does not exist: %{path}"
608
+ missing_shared_folders: |-
609
+ Shared folders that Puppet requires are missing on the virtual machine.
610
+ This is usually due to configuration changing after already booting the
611
+ machine. The fix is to run a `vagrant reload` so that the proper shared
612
+ folders will prepared and mounted on the VM.
512
613
  module_path_missing: "The configured module path doesn't exist: %{path}"
513
614
 
514
615
  puppet_server:
@@ -526,22 +627,46 @@ en:
526
627
  path_invalid: "`path` for shell provisioner does not exist on the host system: %{path}"
527
628
  upload_path_not_set: "`upload_path` must be set for the shell provisioner."
528
629
 
529
- systems:
630
+ guest:
530
631
  base:
531
- unsupported_host_only: |-
532
- Host only networking is very distro-specific. Vagrant has support for many
533
- distros built-in: Debian, Ubuntu, Gentoo, and RedHat. The distro of your VM
534
- couldn't be detected, or isn't supported for host only networking.
632
+ unsupported_configure_networks: |-
633
+ Networking features require support that is dependent on the operating
634
+ system running within the guest virtual machine. Vagrant has built-in support
635
+ for many operating systems: Debian, Ubuntu, Gentoo, and RedHat. The distro
636
+ of your VM couldn't be detected or doesn't support networking features.
535
637
 
536
638
  Most of the time this is simply due to the fact that no one has contributed
537
- back the SSH commands necessary to set this up. Please report a bug and this
538
- will be fixed for your distro.
639
+ back the logic necessary to set this up. Please report a bug as well as the
640
+ box you're using.
539
641
  unsupported_host_name: |-
540
642
  Setting host name is currently only supported on Debian, Ubuntu and RedHat.
541
643
  If you'd like your guest OS to be supported, please open a ticket on the
542
644
  project.
645
+ unsupported_nfs: |-
646
+ Vagrant doesn't support mounting NFS shared folders for your specific
647
+ guest operating system yet, or possibly couldn't properly detect the
648
+ operating system on the VM.
649
+
650
+ Most of the time this is simply due to the fact that no one has contributed
651
+ back the logic necessary to set this up. Please report a bug as well as the
652
+ box you're using.
653
+ unsupported_halt: |-
654
+ Vagrant doesn't support graceful shutdowns for your specific
655
+ guest operating system yet, or possibly couldn't properly detect the
656
+ operating system on the VM.
657
+
658
+ Most of the time this is simply due to the fact that no one has contributed
659
+ back the logic necessary to set this up. Please report a bug as well as the
660
+ box you're using.
661
+ unsupported_shared_folder: |-
662
+ Vagrant doesn't support mounting shared folders for your specific
663
+ guest operating system yet, or possibly couldn't properly detect the
664
+ operating system on the VM.
665
+
666
+ Most of the time this is simply due to the fact that no one has contributed
667
+ back the logic necessary to set this up. Please report a bug as well as the
668
+ box you're using.
543
669
  linux:
544
- attempting_halt: "Attempting graceful shutdown of linux..."
545
670
  mount_fail: "Failed to mount shared folders. `vboxsf` was not available."
546
671
  mount_nfs_fail: |-
547
672
  Mounting NFS shared folders failed. This is most often caused by the NFS
@@ -549,9 +674,3 @@ en:
549
674
  that the NFS client software is properly installed, and consult any resources
550
675
  specific to the linux distro you're using for more information on how to
551
676
  do this.
552
-
553
- solaris:
554
- attempting_halt: "Attempting graceful shutdown of solaris..."
555
-
556
- freebsd:
557
- attempting_halt: "Attempting graceful shutdown of FreeBSD..."