tnargav 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. data/.gitignore +31 -0
  2. data/.gitsetup.yml +5 -0
  3. data/.travis.yml +7 -0
  4. data/.yardopts +1 -0
  5. data/CHANGELOG.md +1067 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +21 -0
  8. data/README.md +89 -0
  9. data/Rakefile +18 -0
  10. data/bin/vagrant +106 -0
  11. data/config/default.rb +36 -0
  12. data/contrib/README.md +12 -0
  13. data/contrib/bash/completion.sh +3 -0
  14. data/contrib/emacs/vagrant.el +8 -0
  15. data/contrib/vim/vagrantfile.vim +9 -0
  16. data/keys/README.md +17 -0
  17. data/keys/vagrant +27 -0
  18. data/keys/vagrant.pub +1 -0
  19. data/lib/vagrant/action/builder.rb +174 -0
  20. data/lib/vagrant/action/builtin/box_add.rb +81 -0
  21. data/lib/vagrant/action/builtin/call.rb +67 -0
  22. data/lib/vagrant/action/builtin/config_validate.rb +30 -0
  23. data/lib/vagrant/action/builtin/confirm.rb +38 -0
  24. data/lib/vagrant/action/builtin/destroy_confirm.rb +21 -0
  25. data/lib/vagrant/action/builtin/env_set.rb +24 -0
  26. data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
  27. data/lib/vagrant/action/builtin/handle_box_url.rb +77 -0
  28. data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +134 -0
  29. data/lib/vagrant/action/builtin/lock.rb +57 -0
  30. data/lib/vagrant/action/builtin/nfs.rb +118 -0
  31. data/lib/vagrant/action/builtin/provision.rb +70 -0
  32. data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
  33. data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
  34. data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
  35. data/lib/vagrant/action/general/package.rb +103 -0
  36. data/lib/vagrant/action/hook.rb +107 -0
  37. data/lib/vagrant/action/runner.rb +69 -0
  38. data/lib/vagrant/action/warden.rb +103 -0
  39. data/lib/vagrant/action.rb +43 -0
  40. data/lib/vagrant/batch_action.rb +113 -0
  41. data/lib/vagrant/box.rb +97 -0
  42. data/lib/vagrant/box_collection.rb +375 -0
  43. data/lib/vagrant/cli.rb +82 -0
  44. data/lib/vagrant/config/loader.rb +222 -0
  45. data/lib/vagrant/config/v1/dummy_config.rb +13 -0
  46. data/lib/vagrant/config/v1/loader.rb +105 -0
  47. data/lib/vagrant/config/v1/root.rb +60 -0
  48. data/lib/vagrant/config/v1.rb +9 -0
  49. data/lib/vagrant/config/v2/dummy_config.rb +13 -0
  50. data/lib/vagrant/config/v2/loader.rb +141 -0
  51. data/lib/vagrant/config/v2/root.rb +105 -0
  52. data/lib/vagrant/config/v2/util.rb +21 -0
  53. data/lib/vagrant/config/v2.rb +9 -0
  54. data/lib/vagrant/config/version_base.rb +80 -0
  55. data/lib/vagrant/config.rb +61 -0
  56. data/lib/vagrant/environment.rb +843 -0
  57. data/lib/vagrant/errors.rb +570 -0
  58. data/lib/vagrant/guest.rb +163 -0
  59. data/lib/vagrant/hosts.rb +28 -0
  60. data/lib/vagrant/machine.rb +325 -0
  61. data/lib/vagrant/machine_state.rb +45 -0
  62. data/lib/vagrant/plugin/v1/command.rb +169 -0
  63. data/lib/vagrant/plugin/v1/communicator.rb +98 -0
  64. data/lib/vagrant/plugin/v1/config.rb +112 -0
  65. data/lib/vagrant/plugin/v1/errors.rb +15 -0
  66. data/lib/vagrant/plugin/v1/guest.rb +92 -0
  67. data/lib/vagrant/plugin/v1/host.rb +66 -0
  68. data/lib/vagrant/plugin/v1/manager.rb +131 -0
  69. data/lib/vagrant/plugin/v1/plugin.rb +229 -0
  70. data/lib/vagrant/plugin/v1/provider.rb +68 -0
  71. data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
  72. data/lib/vagrant/plugin/v1.rb +19 -0
  73. data/lib/vagrant/plugin/v2/command.rb +234 -0
  74. data/lib/vagrant/plugin/v2/communicator.rb +98 -0
  75. data/lib/vagrant/plugin/v2/components.rb +47 -0
  76. data/lib/vagrant/plugin/v2/config.rb +136 -0
  77. data/lib/vagrant/plugin/v2/errors.rb +15 -0
  78. data/lib/vagrant/plugin/v2/guest.rb +78 -0
  79. data/lib/vagrant/plugin/v2/host.rb +66 -0
  80. data/lib/vagrant/plugin/v2/manager.rb +173 -0
  81. data/lib/vagrant/plugin/v2/plugin.rb +226 -0
  82. data/lib/vagrant/plugin/v2/provider.rb +69 -0
  83. data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
  84. data/lib/vagrant/plugin/v2.rb +22 -0
  85. data/lib/vagrant/plugin.rb +6 -0
  86. data/lib/vagrant/registry.rb +78 -0
  87. data/lib/vagrant/ui.rb +215 -0
  88. data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
  89. data/lib/vagrant/util/busy.rb +59 -0
  90. data/lib/vagrant/util/counter.rb +24 -0
  91. data/lib/vagrant/util/downloader.rb +146 -0
  92. data/lib/vagrant/util/file_checksum.rb +38 -0
  93. data/lib/vagrant/util/file_mode.rb +12 -0
  94. data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
  95. data/lib/vagrant/util/is_port_open.rb +38 -0
  96. data/lib/vagrant/util/line_ending_helpers.rb +14 -0
  97. data/lib/vagrant/util/network_ip.rb +28 -0
  98. data/lib/vagrant/util/platform.rb +58 -0
  99. data/lib/vagrant/util/retryable.rb +31 -0
  100. data/lib/vagrant/util/safe_chdir.rb +33 -0
  101. data/lib/vagrant/util/safe_exec.rb +36 -0
  102. data/lib/vagrant/util/safe_puts.rb +31 -0
  103. data/lib/vagrant/util/scoped_hash_override.rb +45 -0
  104. data/lib/vagrant/util/ssh.rb +150 -0
  105. data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
  106. data/lib/vagrant/util/string_block_editor.rb +77 -0
  107. data/lib/vagrant/util/subprocess.rb +273 -0
  108. data/lib/vagrant/util/template_renderer.rb +83 -0
  109. data/lib/vagrant/util/which.rb +43 -0
  110. data/lib/vagrant/util.rb +12 -0
  111. data/lib/vagrant/version.rb +6 -0
  112. data/lib/vagrant.rb +258 -0
  113. data/plugins/README.md +5 -0
  114. data/plugins/commands/box/command/add.rb +51 -0
  115. data/plugins/commands/box/command/list.rb +41 -0
  116. data/plugins/commands/box/command/remove.rb +37 -0
  117. data/plugins/commands/box/command/repackage.rb +43 -0
  118. data/plugins/commands/box/command/root.rb +75 -0
  119. data/plugins/commands/box/plugin.rb +15 -0
  120. data/plugins/commands/destroy/command.rb +31 -0
  121. data/plugins/commands/destroy/plugin.rb +18 -0
  122. data/plugins/commands/halt/command.rb +33 -0
  123. data/plugins/commands/halt/plugin.rb +18 -0
  124. data/plugins/commands/init/command.rb +40 -0
  125. data/plugins/commands/init/plugin.rb +18 -0
  126. data/plugins/commands/package/command.rb +83 -0
  127. data/plugins/commands/package/plugin.rb +18 -0
  128. data/plugins/commands/plugin/action/bundler_check.rb +25 -0
  129. data/plugins/commands/plugin/action/install_gem.rb +81 -0
  130. data/plugins/commands/plugin/action/license_plugin.rb +54 -0
  131. data/plugins/commands/plugin/action/list_plugins.rb +54 -0
  132. data/plugins/commands/plugin/action/prune_gems.rb +149 -0
  133. data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
  134. data/plugins/commands/plugin/action.rb +52 -0
  135. data/plugins/commands/plugin/command/base.rb +22 -0
  136. data/plugins/commands/plugin/command/install.rb +58 -0
  137. data/plugins/commands/plugin/command/license.rb +31 -0
  138. data/plugins/commands/plugin/command/list.rb +28 -0
  139. data/plugins/commands/plugin/command/root.rb +75 -0
  140. data/plugins/commands/plugin/command/uninstall.rb +28 -0
  141. data/plugins/commands/plugin/gem_helper.rb +74 -0
  142. data/plugins/commands/plugin/plugin.rb +22 -0
  143. data/plugins/commands/plugin/state_file.rb +57 -0
  144. data/plugins/commands/provision/command.rb +34 -0
  145. data/plugins/commands/provision/plugin.rb +18 -0
  146. data/plugins/commands/reload/command.rb +37 -0
  147. data/plugins/commands/reload/plugin.rb +18 -0
  148. data/plugins/commands/resume/command.rb +25 -0
  149. data/plugins/commands/resume/plugin.rb +17 -0
  150. data/plugins/commands/ssh/command.rb +63 -0
  151. data/plugins/commands/ssh/plugin.rb +17 -0
  152. data/plugins/commands/ssh_config/command.rb +49 -0
  153. data/plugins/commands/ssh_config/plugin.rb +18 -0
  154. data/plugins/commands/status/command.rb +39 -0
  155. data/plugins/commands/status/plugin.rb +18 -0
  156. data/plugins/commands/suspend/command.rb +25 -0
  157. data/plugins/commands/suspend/plugin.rb +18 -0
  158. data/plugins/commands/up/command.rb +57 -0
  159. data/plugins/commands/up/plugin.rb +17 -0
  160. data/plugins/commands/up/start_mixins.rb +26 -0
  161. data/plugins/communicators/ssh/communicator.rb +342 -0
  162. data/plugins/communicators/ssh/plugin.rb +19 -0
  163. data/plugins/guests/arch/cap/change_host_name.rb +18 -0
  164. data/plugins/guests/arch/cap/configure_networks.rb +23 -0
  165. data/plugins/guests/arch/guest.rb +11 -0
  166. data/plugins/guests/arch/plugin.rb +25 -0
  167. data/plugins/guests/debian/cap/change_host_name.rb +18 -0
  168. data/plugins/guests/debian/cap/configure_networks.rb +61 -0
  169. data/plugins/guests/debian/guest.rb +9 -0
  170. data/plugins/guests/debian/plugin.rb +25 -0
  171. data/plugins/guests/fedora/cap/configure_networks.rb +59 -0
  172. data/plugins/guests/fedora/cap/network_scripts_dir.rb +15 -0
  173. data/plugins/guests/fedora/guest.rb +11 -0
  174. data/plugins/guests/fedora/plugin.rb +25 -0
  175. data/plugins/guests/freebsd/cap/change_host_name.rb +14 -0
  176. data/plugins/guests/freebsd/cap/configure_networks.rb +39 -0
  177. data/plugins/guests/freebsd/cap/halt.rb +16 -0
  178. data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +14 -0
  179. data/plugins/guests/freebsd/guest.rb +14 -0
  180. data/plugins/guests/freebsd/plugin.rb +35 -0
  181. data/plugins/guests/gentoo/cap/change_host_name.rb +17 -0
  182. data/plugins/guests/gentoo/cap/configure_networks.rb +43 -0
  183. data/plugins/guests/gentoo/guest.rb +9 -0
  184. data/plugins/guests/gentoo/plugin.rb +25 -0
  185. data/plugins/guests/linux/cap/halt.rb +16 -0
  186. data/plugins/guests/linux/cap/mount_nfs.rb +30 -0
  187. data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +40 -0
  188. data/plugins/guests/linux/cap/read_ip_address.rb +17 -0
  189. data/plugins/guests/linux/cap/shell_expand_guest_path.rb +26 -0
  190. data/plugins/guests/linux/guest.rb +11 -0
  191. data/plugins/guests/linux/plugin.rb +40 -0
  192. data/plugins/guests/openbsd/cap/halt.rb +16 -0
  193. data/plugins/guests/openbsd/guest.rb +11 -0
  194. data/plugins/guests/openbsd/plugin.rb +20 -0
  195. data/plugins/guests/pld/cap/network_scripts_dir.rb +11 -0
  196. data/plugins/guests/pld/guest.rb +11 -0
  197. data/plugins/guests/pld/plugin.rb +20 -0
  198. data/plugins/guests/redhat/cap/change_host_name.rb +18 -0
  199. data/plugins/guests/redhat/cap/configure_networks.rb +60 -0
  200. data/plugins/guests/redhat/cap/network_scripts_dir.rb +11 -0
  201. data/plugins/guests/redhat/guest.rb +11 -0
  202. data/plugins/guests/redhat/plugin.rb +30 -0
  203. data/plugins/guests/solaris/cap/change_host_name.rb +17 -0
  204. data/plugins/guests/solaris/cap/configure_networks.rb +25 -0
  205. data/plugins/guests/solaris/cap/halt.rb +21 -0
  206. data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +28 -0
  207. data/plugins/guests/solaris/config.rb +18 -0
  208. data/plugins/guests/solaris/guest.rb +14 -0
  209. data/plugins/guests/solaris/plugin.rb +40 -0
  210. data/plugins/guests/suse/cap/change_host_name.rb +18 -0
  211. data/plugins/guests/suse/cap/network_scripts_dir.rb +11 -0
  212. data/plugins/guests/suse/guest.rb +11 -0
  213. data/plugins/guests/suse/plugin.rb +25 -0
  214. data/plugins/guests/ubuntu/cap/change_host_name.rb +23 -0
  215. data/plugins/guests/ubuntu/guest.rb +32 -0
  216. data/plugins/guests/ubuntu/plugin.rb +20 -0
  217. data/plugins/hosts/arch/host.rb +68 -0
  218. data/plugins/hosts/arch/plugin.rb +15 -0
  219. data/plugins/hosts/bsd/host.rb +102 -0
  220. data/plugins/hosts/bsd/plugin.rb +15 -0
  221. data/plugins/hosts/fedora/host.rb +51 -0
  222. data/plugins/hosts/fedora/plugin.rb +15 -0
  223. data/plugins/hosts/freebsd/host.rb +43 -0
  224. data/plugins/hosts/freebsd/plugin.rb +15 -0
  225. data/plugins/hosts/gentoo/host.rb +24 -0
  226. data/plugins/hosts/gentoo/plugin.rb +15 -0
  227. data/plugins/hosts/linux/host.rb +95 -0
  228. data/plugins/hosts/linux/plugin.rb +15 -0
  229. data/plugins/hosts/opensuse/host.rb +34 -0
  230. data/plugins/hosts/opensuse/plugin.rb +15 -0
  231. data/plugins/hosts/windows/host.rb +17 -0
  232. data/plugins/hosts/windows/plugin.rb +15 -0
  233. data/plugins/kernel_v1/config/nfs.rb +20 -0
  234. data/plugins/kernel_v1/config/package.rb +17 -0
  235. data/plugins/kernel_v1/config/ssh.rb +46 -0
  236. data/plugins/kernel_v1/config/vagrant.rb +31 -0
  237. data/plugins/kernel_v1/config/vm.rb +184 -0
  238. data/plugins/kernel_v1/plugin.rb +44 -0
  239. data/plugins/kernel_v2/config/nfs.rb +14 -0
  240. data/plugins/kernel_v2/config/package.rb +13 -0
  241. data/plugins/kernel_v2/config/ssh.rb +76 -0
  242. data/plugins/kernel_v2/config/ssh_connect.rb +40 -0
  243. data/plugins/kernel_v2/config/vagrant.rb +13 -0
  244. data/plugins/kernel_v2/config/vm.rb +416 -0
  245. data/plugins/kernel_v2/config/vm_provisioner.rb +55 -0
  246. data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
  247. data/plugins/kernel_v2/plugin.rb +44 -0
  248. data/plugins/providers/virtualbox/action/boot.rb +49 -0
  249. data/plugins/providers/virtualbox/action/check_accessible.rb +23 -0
  250. data/plugins/providers/virtualbox/action/check_created.rb +21 -0
  251. data/plugins/providers/virtualbox/action/check_guest_additions.rb +45 -0
  252. data/plugins/providers/virtualbox/action/check_running.rb +21 -0
  253. data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
  254. data/plugins/providers/virtualbox/action/clean_machine_folder.rb +43 -0
  255. data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +18 -0
  256. data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +31 -0
  257. data/plugins/providers/virtualbox/action/clear_shared_folders.rb +17 -0
  258. data/plugins/providers/virtualbox/action/created.rb +20 -0
  259. data/plugins/providers/virtualbox/action/customize.rb +36 -0
  260. data/plugins/providers/virtualbox/action/destroy.rb +19 -0
  261. data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
  262. data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
  263. data/plugins/providers/virtualbox/action/export.rb +57 -0
  264. data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
  265. data/plugins/providers/virtualbox/action/forward_ports.rb +87 -0
  266. data/plugins/providers/virtualbox/action/import.rb +51 -0
  267. data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
  268. data/plugins/providers/virtualbox/action/is_running.rb +20 -0
  269. data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
  270. data/plugins/providers/virtualbox/action/match_mac_address.rb +21 -0
  271. data/plugins/providers/virtualbox/action/message_already_running.rb +16 -0
  272. data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
  273. data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
  274. data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
  275. data/plugins/providers/virtualbox/action/network.rb +410 -0
  276. data/plugins/providers/virtualbox/action/package.rb +20 -0
  277. data/plugins/providers/virtualbox/action/package_vagrantfile.rb +33 -0
  278. data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
  279. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +64 -0
  280. data/plugins/providers/virtualbox/action/prune_nfs_exports.rb +20 -0
  281. data/plugins/providers/virtualbox/action/resume.rb +25 -0
  282. data/plugins/providers/virtualbox/action/sane_defaults.rb +91 -0
  283. data/plugins/providers/virtualbox/action/set_name.rb +40 -0
  284. data/plugins/providers/virtualbox/action/setup_package_files.rb +51 -0
  285. data/plugins/providers/virtualbox/action/share_folders.rb +128 -0
  286. data/plugins/providers/virtualbox/action/suspend.rb +20 -0
  287. data/plugins/providers/virtualbox/action.rb +311 -0
  288. data/plugins/providers/virtualbox/config.rb +86 -0
  289. data/plugins/providers/virtualbox/driver/base.rb +360 -0
  290. data/plugins/providers/virtualbox/driver/meta.rb +142 -0
  291. data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
  292. data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
  293. data/plugins/providers/virtualbox/driver/version_4_2.rb +482 -0
  294. data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
  295. data/plugins/providers/virtualbox/plugin.rb +42 -0
  296. data/plugins/providers/virtualbox/provider.rb +92 -0
  297. data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
  298. data/plugins/provisioners/ansible/config.rb +72 -0
  299. data/plugins/provisioners/ansible/plugin.rb +23 -0
  300. data/plugins/provisioners/ansible/provisioner.rb +45 -0
  301. data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +19 -0
  302. data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +14 -0
  303. data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +34 -0
  304. data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +24 -0
  305. data/plugins/provisioners/cfengine/config.rb +120 -0
  306. data/plugins/provisioners/cfengine/plugin.rb +42 -0
  307. data/plugins/provisioners/cfengine/provisioner.rb +136 -0
  308. data/plugins/provisioners/chef/config/base.rb +85 -0
  309. data/plugins/provisioners/chef/config/chef_client.rb +57 -0
  310. data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
  311. data/plugins/provisioners/chef/plugin.rb +33 -0
  312. data/plugins/provisioners/chef/provisioner/base.rb +93 -0
  313. data/plugins/provisioners/chef/provisioner/chef_client.rb +107 -0
  314. data/plugins/provisioners/chef/provisioner/chef_solo.rb +192 -0
  315. data/plugins/provisioners/puppet/config/puppet.rb +70 -0
  316. data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
  317. data/plugins/provisioners/puppet/plugin.rb +33 -0
  318. data/plugins/provisioners/puppet/provisioner/puppet.rb +117 -0
  319. data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
  320. data/plugins/provisioners/shell/config.rb +56 -0
  321. data/plugins/provisioners/shell/plugin.rb +23 -0
  322. data/plugins/provisioners/shell/provisioner.rb +86 -0
  323. data/tasks/acceptance.rake +113 -0
  324. data/tasks/bundler.rake +3 -0
  325. data/tasks/test.rake +20 -0
  326. data/templates/commands/init/Vagrantfile.erb +111 -0
  327. data/templates/commands/ssh_config/config.erb +16 -0
  328. data/templates/config/messages.erb +14 -0
  329. data/templates/config/validation_failed.erb +7 -0
  330. data/templates/guests/arch/network_dhcp.erb +4 -0
  331. data/templates/guests/arch/network_static.erb +6 -0
  332. data/templates/guests/debian/network_dhcp.erb +11 -0
  333. data/templates/guests/debian/network_static.erb +7 -0
  334. data/templates/guests/fedora/network_dhcp.erb +6 -0
  335. data/templates/guests/fedora/network_static.erb +13 -0
  336. data/templates/guests/freebsd/network_dhcp.erb +3 -0
  337. data/templates/guests/freebsd/network_static.erb +3 -0
  338. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  339. data/templates/guests/gentoo/network_static.erb +4 -0
  340. data/templates/guests/redhat/network_dhcp.erb +6 -0
  341. data/templates/guests/redhat/network_static.erb +8 -0
  342. data/templates/locales/en.yml +1126 -0
  343. data/templates/nfs/exports.erb +5 -0
  344. data/templates/nfs/exports_freebsd.erb +5 -0
  345. data/templates/nfs/exports_linux.erb +5 -0
  346. data/templates/package_Vagrantfile.erb +11 -0
  347. data/templates/provisioners/chef_client/client.erb +32 -0
  348. data/templates/provisioners/chef_solo/solo.erb +25 -0
  349. data/templates/rgloader.rb +9 -0
  350. data/test/acceptance/base.rb +48 -0
  351. data/test/acceptance/box_test.rb +99 -0
  352. data/test/acceptance/destroy_test.rb +37 -0
  353. data/test/acceptance/halt_test.rb +72 -0
  354. data/test/acceptance/init_test.rb +33 -0
  355. data/test/acceptance/networking/host_only_test.rb +37 -0
  356. data/test/acceptance/networking/port_forward_test.rb +125 -0
  357. data/test/acceptance/package_test.rb +46 -0
  358. data/test/acceptance/provisioning/basic_test.rb +61 -0
  359. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  360. data/test/acceptance/provisioning/shell_test.rb +53 -0
  361. data/test/acceptance/resume_test.rb +17 -0
  362. data/test/acceptance/shared_folders_test.rb +84 -0
  363. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  364. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  365. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  366. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  367. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  368. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  369. data/test/acceptance/ssh_test.rb +46 -0
  370. data/test/acceptance/support/config.rb +42 -0
  371. data/test/acceptance/support/isolated_environment.rb +118 -0
  372. data/test/acceptance/support/matchers/have_color.rb +9 -0
  373. data/test/acceptance/support/matchers/match_output.rb +14 -0
  374. data/test/acceptance/support/matchers/succeed.rb +14 -0
  375. data/test/acceptance/support/network_tests.rb +29 -0
  376. data/test/acceptance/support/output.rb +95 -0
  377. data/test/acceptance/support/shared/base_context.rb +72 -0
  378. data/test/acceptance/support/shared/command_examples.rb +33 -0
  379. data/test/acceptance/support/virtualbox.rb +36 -0
  380. data/test/acceptance/suspend_test.rb +56 -0
  381. data/test/acceptance/up_basic_test.rb +33 -0
  382. data/test/acceptance/up_with_box_url.rb +40 -0
  383. data/test/acceptance/vagrant_test.rb +47 -0
  384. data/test/acceptance/version_test.rb +15 -0
  385. data/test/config/acceptance_boxes.yml +7 -0
  386. data/test/support/isolated_environment.rb +46 -0
  387. data/test/support/tempdir.rb +43 -0
  388. data/test/unit/base.rb +27 -0
  389. data/test/unit/support/dummy_provider.rb +16 -0
  390. data/test/unit/support/isolated_environment.rb +179 -0
  391. data/test/unit/support/shared/base_context.rb +104 -0
  392. data/test/unit/vagrant/action/builder_test.rb +242 -0
  393. data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
  394. data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
  395. data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
  396. data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
  397. data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
  398. data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
  399. data/test/unit/vagrant/action/hook_test.rb +120 -0
  400. data/test/unit/vagrant/action/runner_test.rb +71 -0
  401. data/test/unit/vagrant/action/warden_test.rb +92 -0
  402. data/test/unit/vagrant/batch_action_test.rb +36 -0
  403. data/test/unit/vagrant/box_collection_test.rb +237 -0
  404. data/test/unit/vagrant/box_test.rb +122 -0
  405. data/test/unit/vagrant/cli_test.rb +27 -0
  406. data/test/unit/vagrant/config/loader_test.rb +184 -0
  407. data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
  408. data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
  409. data/test/unit/vagrant/config/v1/root_test.rb +40 -0
  410. data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
  411. data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
  412. data/test/unit/vagrant/config/v2/root_test.rb +97 -0
  413. data/test/unit/vagrant/config/v2/util_test.rb +21 -0
  414. data/test/unit/vagrant/config_test.rb +66 -0
  415. data/test/unit/vagrant/environment_test.rb +721 -0
  416. data/test/unit/vagrant/guest_test.rb +166 -0
  417. data/test/unit/vagrant/hosts_test.rb +37 -0
  418. data/test/unit/vagrant/machine_state_test.rb +26 -0
  419. data/test/unit/vagrant/machine_test.rb +384 -0
  420. data/test/unit/vagrant/plugin/v1/command_test.rb +143 -0
  421. data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
  422. data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
  423. data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
  424. data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
  425. data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
  426. data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
  427. data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
  428. data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
  429. data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
  430. data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
  431. data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
  432. data/test/unit/vagrant/plugin/v2/manager_test.rb +174 -0
  433. data/test/unit/vagrant/plugin/v2/plugin_test.rb +305 -0
  434. data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
  435. data/test/unit/vagrant/registry_test.rb +128 -0
  436. data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
  437. data/test/unit/vagrant/util/downloader_test.rb +57 -0
  438. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  439. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
  440. data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
  441. data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
  442. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  443. data/test/unit/vagrant/util/retryable_test.rb +106 -0
  444. data/test/unit/vagrant/util/safe_chdir_test.rb +43 -0
  445. data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
  446. data/test/unit/vagrant/util/ssh_test.rb +30 -0
  447. data/test/unit/vagrant/util/string_block_editor_test.rb +106 -0
  448. data/test/unit/vagrant/util/which_test.rb +43 -0
  449. data/test/unit/vagrant_test.rb +56 -0
  450. data/tnargav.gemspec +69 -0
  451. data/vagrant.gemspec +69 -0
  452. metadata +730 -0
@@ -0,0 +1,51 @@
1
+ require "pathname"
2
+
3
+ require "vagrant"
4
+
5
+ require Vagrant.source_root.join("plugins/hosts/linux/host")
6
+
7
+ module VagrantPlugins
8
+ module HostFedora
9
+ class Host < VagrantPlugins::HostLinux::Host
10
+ def self.match?
11
+ release_file = Pathname.new("/etc/redhat-release")
12
+
13
+ if release_file.exist?
14
+ release_file.open("r") do |f|
15
+ return true if f.gets =~ /^Fedora/
16
+ end
17
+ end
18
+
19
+ false
20
+ end
21
+
22
+ # Normal, mid-range precedence.
23
+ def self.precedence
24
+ 5
25
+ end
26
+
27
+ def initialize(*args)
28
+ super
29
+
30
+ @nfs_server_binary = "/etc/init.d/nfs"
31
+
32
+ # On Fedora 16+, systemd replaced init.d, so we have to use the
33
+ # proper NFS binary. This checks to see if we need to do that.
34
+ release_file = Pathname.new("/etc/redhat-release")
35
+ begin
36
+ release_file.open("r") do |f|
37
+ version_number = /Fedora release ([0-9]+)/.match(f.gets)[1].to_i
38
+ if version_number >= 16
39
+ # "service nfs-server" will redirect properly to systemctl
40
+ # when "service nfs-server restart" is called.
41
+ @nfs_server_binary = "/usr/sbin/service nfs-server"
42
+ end
43
+ end
44
+ rescue Errno::ENOENT
45
+ # File doesn't exist, not a big deal, assume we're on a
46
+ # lower version.
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,15 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module HostFedora
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "Fedora host"
7
+ description "Fedora host support."
8
+
9
+ host("fedora") do
10
+ require File.expand_path("../host", __FILE__)
11
+ Host
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,43 @@
1
+ require "vagrant"
2
+ require 'vagrant/util/platform'
3
+
4
+ require Vagrant.source_root.join("plugins/hosts/bsd/host")
5
+
6
+ module VagrantPlugins
7
+ module HostFreeBSD
8
+ class Host < VagrantPlugins::HostBSD::Host
9
+ class FreeBSDHostError < Vagrant::Errors::VagrantError
10
+ error_namespace("vagrant.hosts.freebsd")
11
+ end
12
+
13
+ include Vagrant::Util
14
+ include Vagrant::Util::Retryable
15
+
16
+ def self.match?
17
+ Vagrant::Util::Platform.freebsd?
18
+ end
19
+
20
+ # Normal, mid-range precedence.
21
+ def self.precedence
22
+ 5
23
+ end
24
+
25
+ def nfs_export(id, ip, folders)
26
+ folders.each do |folder_name, folder_values|
27
+ if folder_values[:hostpath] =~ /\s+/
28
+ raise FreeBSDHostError, :_key => :nfs_whitespace
29
+ end
30
+ end
31
+
32
+ super
33
+ end
34
+
35
+ def initialize(*args)
36
+ super
37
+
38
+ @nfs_restart_command = "sudo /etc/rc.d/mountd onereload"
39
+ @nfs_exports_template = "nfs/exports_freebsd"
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,15 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module HostFreeBSD
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "FreeBSD host"
7
+ description "FreeBSD host support."
8
+
9
+ host("freebsd") do
10
+ require File.expand_path("../host", __FILE__)
11
+ Host
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ require "vagrant"
2
+
3
+ require Vagrant.source_root.join("plugins/hosts/linux/host")
4
+
5
+ module VagrantPlugins
6
+ module HostGentoo
7
+ class Host < VagrantPlugins::HostLinux::Host
8
+ def self.match?
9
+ return File.exists?("/etc/gentoo-release")
10
+ end
11
+
12
+ # Normal, mid-range precedence.
13
+ def self.precedence
14
+ 5
15
+ end
16
+
17
+ def initialize(*args)
18
+ super
19
+
20
+ @nfs_server_binary = "/etc/init.d/nfs"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module HostGentoo
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "Gentoo host"
7
+ description "Gentoo host support."
8
+
9
+ host("gentoo") do
10
+ require File.expand_path("../host", __FILE__)
11
+ Host
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,95 @@
1
+ require 'log4r'
2
+
3
+ require "vagrant"
4
+ require 'vagrant/util/platform'
5
+
6
+ module VagrantPlugins
7
+ module HostLinux
8
+ # Represents a Linux based host, such as Ubuntu.
9
+ class Host < Vagrant.plugin("2", :host)
10
+ include Vagrant::Util
11
+ include Vagrant::Util::Retryable
12
+
13
+ def self.match?
14
+ Vagrant::Util::Platform.linux?
15
+ end
16
+
17
+ def self.precedence
18
+ # Set a lower precedence because this is a generic OS. We
19
+ # want specific distros to match first.
20
+ 2
21
+ end
22
+
23
+ def initialize(*args)
24
+ super
25
+
26
+ @logger = Log4r::Logger.new("vagrant::hosts::linux")
27
+ @nfs_server_binary = "/etc/init.d/nfs-kernel-server"
28
+ end
29
+
30
+ def nfs?
31
+ retryable(:tries => 10, :on => TypeError) do
32
+ # Check procfs to see if NFSd is a supported filesystem
33
+ system("cat /proc/filesystems | grep nfsd > /dev/null 2>&1")
34
+ end
35
+ end
36
+
37
+ def nfs_export(id, ip, folders)
38
+ output = TemplateRenderer.render('nfs/exports_linux',
39
+ :uuid => id,
40
+ :ip => ip,
41
+ :folders => folders)
42
+
43
+ @ui.info I18n.t("vagrant.hosts.linux.nfs_export")
44
+ sleep 0.5
45
+
46
+ nfs_cleanup(id)
47
+
48
+ output.split("\n").each do |line|
49
+ # This should only ask for administrative permission once, even
50
+ # though its executed in multiple subshells.
51
+ system(%Q[sudo su root -c "echo '#{line}' >> /etc/exports"])
52
+ end
53
+
54
+ # We run restart here instead of "update" just in case nfsd
55
+ # is not starting
56
+ system("sudo #{@nfs_server_binary} restart")
57
+ end
58
+
59
+ def nfs_prune(valid_ids)
60
+ return if !File.exist?("/etc/exports")
61
+
62
+ @logger.info("Pruning invalid NFS entries...")
63
+
64
+ output = false
65
+
66
+ File.read("/etc/exports").lines.each do |line|
67
+ if id = line[/^# VAGRANT-BEGIN: (.+?)$/, 1]
68
+ if valid_ids.include?(id)
69
+ @logger.debug("Valid ID: #{id}")
70
+ else
71
+ if !output
72
+ # We want to warn the user but we only want to output once
73
+ @ui.info I18n.t("vagrant.hosts.linux.nfs_prune")
74
+ output = true
75
+ end
76
+
77
+ @logger.info("Invalid ID, pruning: #{id}")
78
+ nfs_cleanup(id)
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+ protected
85
+
86
+ def nfs_cleanup(id)
87
+ return if !File.exist?("/etc/exports")
88
+
89
+ # Use sed to just strip out the block of code which was inserted
90
+ # by Vagrant
91
+ system("sudo sed -e '/^# VAGRANT-BEGIN: #{id}/,/^# VAGRANT-END: #{id}/ d' -ibak /etc/exports")
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,15 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module HostLinux
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "Linux host"
7
+ description "Linux host support."
8
+
9
+ host("linux") do
10
+ require File.expand_path("../host", __FILE__)
11
+ Host
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,34 @@
1
+ require "pathname"
2
+
3
+ require "vagrant"
4
+
5
+ require Vagrant.source_root.join("plugins/hosts/linux/host")
6
+
7
+ module VagrantPlugins
8
+ module HostOpenSUSE
9
+ class Host < VagrantPlugins::HostLinux::Host
10
+ def self.match?
11
+ release_file = Pathname.new("/etc/SuSE-release")
12
+
13
+ if release_file.exist?
14
+ release_file.open("r") do |f|
15
+ return true if f.gets =~ /^openSUSE/
16
+ end
17
+ end
18
+
19
+ false
20
+ end
21
+
22
+ # Normal, mid-range precedence.
23
+ def self.precedence
24
+ 5
25
+ end
26
+
27
+ def initialize(*args)
28
+ super
29
+
30
+ @nfs_server_binary = "/etc/init.d/nfsserver"
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,15 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module HostOpenSUSE
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "OpenSUSE host"
7
+ description "OpenSUSE host support."
8
+
9
+ host("opensuse") do
10
+ require File.expand_path("../host", __FILE__)
11
+ Host
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ require "vagrant"
2
+ require 'vagrant/util/platform'
3
+
4
+ module VagrantPlugins
5
+ module HostWindows
6
+ class Host < Vagrant.plugin("2", :host)
7
+ def self.match?
8
+ Vagrant::Util::Platform.windows?
9
+ end
10
+
11
+ # Windows does not support NFS
12
+ def nfs?
13
+ false
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module HostWindows
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "Windows host"
7
+ description "Windows host support."
8
+
9
+ host("windows") do
10
+ require File.expand_path("../host", __FILE__)
11
+ Host
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module Kernel_V1
5
+ class NFSConfig < Vagrant.plugin("1", :config)
6
+ attr_accessor :map_uid
7
+ attr_accessor :map_gid
8
+
9
+ def initialize
10
+ @map_uid = UNSET_VALUE
11
+ @map_gid = UNSET_VALUE
12
+ end
13
+
14
+ def upgrade(new)
15
+ new.nfs.map_uid = @map_uid if @map_uid != UNSET_VALUE
16
+ new.nfs.map_gid = @map_gid if @map_gid != UNSET_VALUE
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module Kernel_V1
5
+ class PackageConfig < Vagrant.plugin("1", :config)
6
+ attr_accessor :name
7
+
8
+ def initialize
9
+ @name = UNSET_VALUE
10
+ end
11
+
12
+ def upgrade(new)
13
+ new.package.name = @name if @name != UNSET_VALUE
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,46 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module Kernel_V1
5
+ class SSHConfig < Vagrant.plugin("1", :config)
6
+ attr_accessor :username
7
+ attr_accessor :password
8
+ attr_accessor :host
9
+ attr_accessor :port
10
+ attr_accessor :guest_port
11
+ attr_accessor :max_tries
12
+ attr_accessor :timeout
13
+ attr_accessor :private_key_path
14
+ attr_accessor :forward_agent
15
+ attr_accessor :forward_x11
16
+ attr_accessor :shell
17
+
18
+ def initialize
19
+ @username = UNSET_VALUE
20
+ @password = UNSET_VALUE
21
+ @host = UNSET_VALUE
22
+ @port = UNSET_VALUE
23
+ @guest_port = UNSET_VALUE
24
+ @max_tries = UNSET_VALUE
25
+ @timeout = UNSET_VALUE
26
+ @private_key_path = UNSET_VALUE
27
+ @forward_agent = UNSET_VALUE
28
+ @forward_x11 = UNSET_VALUE
29
+ @shell = UNSET_VALUE
30
+ end
31
+
32
+ def upgrade(new)
33
+ new.ssh.username = @username if @username != UNSET_VALUE
34
+ new.ssh.host = @host if @host != UNSET_VALUE
35
+ new.ssh.port = @port if @port != UNSET_VALUE
36
+ new.ssh.guest_port = @guest_port if @guest_port != UNSET_VALUE
37
+ new.ssh.max_tries = @max_tries if @max_tries != UNSET_VALUE
38
+ new.ssh.timeout = @timeout if @timeout != UNSET_VALUE
39
+ new.ssh.private_key_path = @private_key_path if @private_key_path != UNSET_VALUE
40
+ new.ssh.forward_agent = @forward_agent if @forward_agent != UNSET_VALUE
41
+ new.ssh.forward_x11 = @forward_x11 if @forward_x11 != UNSET_VALUE
42
+ new.ssh.shell = @shell if @shell != UNSET_VALUE
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,31 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module Kernel_V1
5
+ class VagrantConfig < Vagrant.plugin("1", :config)
6
+ attr_accessor :dotfile_name
7
+ attr_accessor :host
8
+
9
+ def initialize
10
+ @dotfile_name = UNSET_VALUE
11
+ @host = UNSET_VALUE
12
+ end
13
+
14
+ def finalize!
15
+ @dotfile_name = nil if @dotfile_name == UNSET_VALUE
16
+ @host = nil if @host == UNSET_VALUE
17
+ end
18
+
19
+ def upgrade(new)
20
+ new.vagrant.host = @host if @host.nil?
21
+
22
+ warnings = []
23
+ if @dotfile_name
24
+ warnings << "`config.vm.dotfile_name` has no effect anymore."
25
+ end
26
+
27
+ [warnings, []]
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,184 @@
1
+ module VagrantPlugins
2
+ module Kernel_V1
3
+ # This is the Version 1.0.x Vagrant VM configuration. This is
4
+ # _outdated_ and exists purely to be upgraded over to the new V2
5
+ # format.
6
+ class VMConfig < Vagrant.plugin("1", :config)
7
+ DEFAULT_VM_NAME = :default
8
+
9
+ attr_accessor :name
10
+ attr_accessor :auto_port_range
11
+ attr_accessor :base_mac
12
+ attr_accessor :boot_mode
13
+ attr_accessor :box
14
+ attr_accessor :box_url
15
+ attr_accessor :guest
16
+ attr_accessor :host_name
17
+ attr_reader :customizations
18
+ attr_reader :networks
19
+ attr_reader :provisioners
20
+ attr_reader :shared_folders
21
+
22
+ def initialize
23
+ @shared_folders = {}
24
+ @networks = []
25
+ @provisioners = []
26
+ @customizations = []
27
+ @define_calls = []
28
+ end
29
+
30
+ def forward_port(guestport, hostport, options=nil)
31
+ options ||= {}
32
+
33
+ # Build up the network options for V2
34
+ network_options = {}
35
+ network_options[:virtualbox__adapter] = options[:adapter]
36
+ network_options[:virtualbox__protocol] = options[:protocol]
37
+
38
+ # Just append the forwarded port to the networks
39
+ @networks << [:forwarded_port, [guestport, hostport, network_options]]
40
+ end
41
+
42
+ def share_folder(name, guestpath, hostpath, opts=nil)
43
+ @shared_folders[name] = {
44
+ :guestpath => guestpath.to_s,
45
+ :hostpath => hostpath.to_s,
46
+ :create => false,
47
+ :owner => nil,
48
+ :group => nil,
49
+ :nfs => false,
50
+ :transient => false,
51
+ :extra => nil
52
+ }.merge(opts || {})
53
+ end
54
+
55
+ def network(type, *args)
56
+ if type == :hostonly
57
+ @networks << [:private_network, args]
58
+ elsif type == :bridged
59
+ @networks << [:public_network, args]
60
+ else
61
+ @networks << [:unknown, type]
62
+ end
63
+ end
64
+
65
+ def provision(name, options=nil, &block)
66
+ @provisioners << [name, options, block]
67
+ end
68
+
69
+ # This argument is nil only because the old style was deprecated and
70
+ # we didn't want to break Vagrantfiles. This was never removed and
71
+ # since we've moved onto V2 configuration, we might as well keep this
72
+ # around forever.
73
+ def customize(command=nil)
74
+ @customizations << command if command
75
+ end
76
+
77
+ def define(name, options=nil, &block)
78
+ # Force the V1 config on these calls
79
+ options ||= {}
80
+ options[:config_version] = "1"
81
+
82
+ @define_calls << [name, options, block]
83
+ end
84
+
85
+ def finalize!
86
+ # If we haven't defined a single VM, then we need to define a
87
+ # default VM which just inherits the rest of the configuration.
88
+ define(DEFAULT_VM_NAME) if defined_vm_keys.empty?
89
+ end
90
+
91
+ # Upgrade to a V2 configuration
92
+ def upgrade(new)
93
+ warnings = []
94
+
95
+ new.vm.base_mac = self.base_mac if self.base_mac
96
+ new.vm.box = self.box if self.box
97
+ new.vm.box_url = self.box_url if self.box_url
98
+ new.vm.guest = self.guest if self.guest
99
+ new.vm.hostname = self.host_name if self.host_name
100
+ new.vm.usable_port_range = self.auto_port_range if self.auto_port_range
101
+
102
+ if self.boot_mode
103
+ new.vm.provider :virtualbox do |vb|
104
+ # Enable the GUI if the boot mode is GUI.
105
+ vb.gui = (self.boot_mode.to_s == "gui")
106
+ end
107
+ end
108
+
109
+ # If we have VM customizations, then we enable them on the
110
+ # VirtualBox provider on the new VM.
111
+ if !self.customizations.empty?
112
+ warnings << "`config.vm.customize` calls are VirtualBox-specific. If you're\n" +
113
+ "using any other provider, you'll have to use config.vm.provider in a\n" +
114
+ "v2 configuration block."
115
+
116
+ new.vm.provider :virtualbox do |vb|
117
+ self.customizations.each do |customization|
118
+ vb.customize(customization)
119
+ end
120
+ end
121
+ end
122
+
123
+ # Re-define all networks.
124
+ self.networks.each do |type, args|
125
+ if type == :unknown
126
+ warnings << "Unknown network type '#{args}' will be ignored."
127
+ next
128
+ end
129
+
130
+ options = {}
131
+ options = args.pop.dup if args.last.is_a?(Hash)
132
+
133
+ # Determine the extra options we need to set for each type
134
+ if type == :forwarded_port
135
+ options[:guest] = args[0]
136
+ options[:host] = args[1]
137
+ elsif type == :private_network
138
+ options[:ip] = args[0]
139
+ end
140
+
141
+ new.vm.network(type, options)
142
+ end
143
+
144
+ # Provisioners
145
+ self.provisioners.each do |name, options, block|
146
+ new.vm.provision(name, options, &block)
147
+ end
148
+
149
+ # Shared folders
150
+ self.shared_folders.each do |name, sf|
151
+ options = sf.dup
152
+ options[:id] = name
153
+ guestpath = options.delete(:guestpath)
154
+ hostpath = options.delete(:hostpath)
155
+
156
+ # This was the name of the old default /vagrant shared folder.
157
+ # We warn the use that this changed, but also silently change
158
+ # it to try to make things work properly.
159
+ if options[:id] == "v-root"
160
+ warnings << "The 'v-root' shared folders have been renamed to 'vagrant-root'.\n" +
161
+ "Assuming you meant 'vagrant-root'..."
162
+
163
+ options[:id] = "vagrant-root"
164
+ end
165
+
166
+ new.vm.synced_folder(hostpath, guestpath, options)
167
+ end
168
+
169
+ # Defined sub-VMs
170
+ @define_calls.each do |name, options, block|
171
+ new.vm.define(name, options, &block)
172
+ end
173
+
174
+ # If name is used, warn that it has no effect anymore
175
+ if @name
176
+ warnings << "`config.vm.name` has no effect anymore. Names are derived\n" +
177
+ "directly from any `config.vm.define` calls."
178
+ end
179
+
180
+ [warnings, []]
181
+ end
182
+ end
183
+ end
184
+ end