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
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2010-2013 Mitchell Hashimoto
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,89 @@
1
+ # Vagrant
2
+
3
+ * Website: [http://www.vagrantup.com](http://www.vagrantup.com)
4
+ * Source: [https://github.com/mitchellh/vagrant](https://github.com/mitchellh/vagrant)
5
+ * IRC: `#vagrant` on Freenode
6
+ * Mailing list: [Google Groups](http://groups.google.com/group/vagrant-up)
7
+
8
+ Vagrant is a tool for building and distributing development environments.
9
+
10
+ Vagrant provides the framework and configuration format to create and
11
+ manage complete portable development environments. These development
12
+ environments can live on your computer or in the cloud, and are portable
13
+ between Windows, Mac OS X, and Linux.
14
+
15
+ ## Quick Start
16
+
17
+ First, make sure your development machine has [VirtualBox](http://www.virtualbox.org)
18
+ installed. After this, [download and install the appropriate Vagrant package for your OS](http://downloads.vagrantup.com). If you're not on Mac OS X or Windows, you'll need
19
+ to add `/opt/vagrant/bin` to your `PATH`. After this, you're ready to go!
20
+
21
+ To build your first virtual environment:
22
+
23
+ vagrant init precise32 http://files.vagrantup.com/precise32.box
24
+ vagrant up
25
+
26
+ Note: The above `vagrant up` command will also trigger Vagrant to download the
27
+ `precise32` box via the specified URL. Vagrant only does this if it detects that
28
+ the box doesn't already exist on your system.
29
+
30
+ ## Getting Started Guide
31
+
32
+ To learn how to build a fully functional rails development environment, view the
33
+ [getting started guide](http://docs.vagrantup.com/v2/getting-started/index.html).
34
+
35
+ ## Installing the Gem from Git
36
+
37
+ If you want the bleeding edge version of Vagrant, we try to keep master pretty stable
38
+ and you're welcome to give it a shot. The following is an example showing how to do this:
39
+
40
+ rake install
41
+
42
+ ## Contributing to Vagrant
43
+
44
+ ### Dependencies and Unit Tests
45
+
46
+ To hack on vagrant, you'll need [bundler](http://github.com/carlhuda/bundler) which can
47
+ be installed with a simple `gem install bundler`. Afterwords, do the following:
48
+
49
+ bundle install
50
+ rake
51
+
52
+ This will run the unit test suite, which should come back all green! Then you're good to go!
53
+
54
+ If you want to run Vagrant without having to install the gem, you may use `bundle exec`,
55
+ like so:
56
+
57
+ bundle exec bin/vagrant help
58
+
59
+ ### Acceptance Tests
60
+
61
+ Vagrant also comes with an acceptance test suite which runs the system
62
+ end-to-end, without mocking out any dependencies. Note that this test
63
+ suite is **extremely slow**, with the test suite taking hours on even
64
+ a decent system. A CI will be setup in due time to run these tests
65
+ automatically. However, it is still useful to know how to run these
66
+ tests since it is often useful to run a single test if you're working
67
+ on a specific feature.
68
+
69
+ The acceptance tests have absolutely _zero_ dependence on the Vagrant
70
+ source. Instead, an external configuration file must be used to give
71
+ the acceptance tests some parameters (such as what Vagrant version is
72
+ running, where the Vagrant `vagrant` binary is, etc.). If you want to
73
+ run acceptance tests against source, or just want to see an example of
74
+ this file, you can generate it automatically for the source code:
75
+
76
+ rake acceptance:config
77
+
78
+ This will drop an `acceptance_config.yml` file in your working directory.
79
+ You can then run a specific acceptance test like so:
80
+
81
+ ACCEPTANCE_CONFIG=./acceptance_config.yml ruby test/acceptance/version_test.rb
82
+
83
+ That's it!
84
+
85
+ If you're developing an acceptance test and you're unsure why things
86
+ might be failing, you can also view log output for the acceptance tests,
87
+ which can be very verbose but are a great help in finding bugs:
88
+
89
+ ACCEPTANCE_LOGGING=debug ACCEPTANCE_CONFIG=./acceptance_config.yml ruby test/acceptance/version_test.rb
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ # Immediately sync all stdout so that tools like buildbot can
5
+ # immediately load in the output.
6
+ $stdout.sync = true
7
+ $stderr.sync = true
8
+
9
+ # Load all the rake tasks from the "tasks" folder. This folder
10
+ # allows us to nicely separate rake tasks into individual files
11
+ # based on their role, which makes development and debugging easier
12
+ # than one monolithic file.
13
+ task_dir = File.expand_path("../tasks", __FILE__)
14
+ Dir["#{task_dir}/**/*.rake"].each do |task_file|
15
+ load task_file
16
+ end
17
+
18
+ task :default => "test:unit"
data/bin/vagrant ADDED
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Trap interrupts to quit cleanly. This will be overriden at some point
4
+ # by Vagrant. This is made to catch any interrupts while Vagrant is
5
+ # initializing which have historically resulted in stack traces.
6
+ Signal.trap("INT") { exit 1 }
7
+
8
+ require 'log4r'
9
+ require 'vagrant'
10
+ require 'vagrant/cli'
11
+ require 'vagrant/util/platform'
12
+
13
+ # Create a logger right away
14
+ logger = Log4r::Logger.new("vagrant::bin::vagrant")
15
+ logger.info("`vagrant` invoked: #{ARGV.inspect}")
16
+
17
+ # Stdout/stderr should not buffer output
18
+ $stdout.sync = true
19
+ $stderr.sync = true
20
+
21
+ # These will be the options that are passed to initialze the Vagrant
22
+ # environment.
23
+ opts = {}
24
+
25
+ # Disable color in a few cases:
26
+ #
27
+ # * --no-color is anywhere in our arguments
28
+ # * STDOUT is not a TTY
29
+ # * The terminal doesn't support colors (Windows)
30
+ #
31
+ if ARGV.include?("--no-color")
32
+ # Delete the argument from the list so that it doesn't
33
+ # cause any invalid arguments down the road.
34
+ ARGV.delete("--no-color")
35
+
36
+ opts[:ui_class] = Vagrant::UI::Basic
37
+ elsif !Vagrant::Util::Platform.terminal_supports_colors?
38
+ opts[:ui_class] = Vagrant::UI::Basic
39
+ elsif !$stdout.tty? && !Vagrant::Util::Platform.cygwin?
40
+ opts[:ui_class] = Vagrant::UI::Basic
41
+ end
42
+
43
+ # Default to colored output
44
+ opts[:ui_class] ||= Vagrant::UI::Colored
45
+
46
+ # This is kind of hacky, and I'd love to find a better way to do this, but
47
+ # if we're accessing the plugin interface, we want to NOT load plugins
48
+ # for this run, because they can actually interfere with the function
49
+ # of the plugin interface.
50
+ ARGV.each do |arg|
51
+ if !arg.start_with?("-")
52
+ ENV["VAGRANT_NO_PLUGINS"] = "1" if arg == "plugin"
53
+ break
54
+ end
55
+ end
56
+
57
+ env = nil
58
+ begin
59
+ # Create the environment, which is the cwd of wherever the
60
+ # `vagrant` command was invoked from
61
+ logger.debug("Creating Vagrant environment")
62
+ env = Vagrant::Environment.new(opts)
63
+
64
+ if !Vagrant.in_installer?
65
+ warned = false
66
+
67
+ # If we're in a bundler environment, we assume it is for plugin
68
+ # development and will let the user know that.
69
+ if defined?(Bundler)
70
+ require 'bundler/shared_helpers'
71
+ if Bundler::SharedHelpers.in_bundle?
72
+ warned = true
73
+ end
74
+ end
75
+
76
+ # If we're not in the installer, warn.
77
+ env.ui.warn(I18n.t("vagrant.general.not_in_installer")) if !warned
78
+ end
79
+
80
+ begin
81
+ # Execute the CLI interface, and exit with the proper error code
82
+ exit_status = env.cli(ARGV)
83
+ ensure
84
+ # Unload the environment so cleanup can be done
85
+ env.unload
86
+ end
87
+
88
+ # Exit with the exit status from our CLI command
89
+ exit(exit_status)
90
+ rescue Vagrant::Errors::VagrantError => e
91
+ logger.error("Vagrant experienced an error! Details:")
92
+ logger.error(e.inspect)
93
+ logger.error(e.message)
94
+ logger.error(e.backtrace.join("\n"))
95
+
96
+ if env
97
+ opts = { :prefix => false }
98
+ env.ui.error e.message, opts if e.message
99
+ else
100
+ $stderr.puts "Vagrant failed to initialize at a very early stage:\n\n"
101
+ $stderr.puts e.message
102
+ end
103
+
104
+ exit e.status_code if e.respond_to?(:status_code)
105
+ exit 999 # An error occurred with no status code defined
106
+ end
data/config/default.rb ADDED
@@ -0,0 +1,36 @@
1
+ Vagrant.configure("2") do |config|
2
+ config.vagrant.host = :detect
3
+
4
+ config.ssh.forward_agent = false
5
+ config.ssh.forward_x11 = false
6
+ config.ssh.guest_port = 22
7
+ config.ssh.keep_alive = true
8
+ config.ssh.max_tries = 100
9
+ config.ssh.timeout = 30
10
+ config.ssh.shell = "bash -l"
11
+
12
+ config.ssh.default.username = "vagrant"
13
+
14
+ config.vm.usable_port_range = (2200..2250)
15
+ config.vm.box_url = nil
16
+ config.vm.base_mac = nil
17
+ config.vm.graceful_halt_retry_count = 60
18
+ config.vm.graceful_halt_retry_interval = 1
19
+ config.vm.guest = :linux
20
+
21
+ # Share SSH locally by default
22
+ config.vm.network :forwarded_port,
23
+ guest: 22,
24
+ host: 2222,
25
+ id: "ssh",
26
+ auto_correct: true
27
+
28
+ # Share the root folder. This can then be overridden by
29
+ # other Vagrantfiles, if they wish.
30
+ config.vm.synced_folder ".", "/vagrant"
31
+
32
+ config.nfs.map_uid = :auto
33
+ config.nfs.map_gid = :auto
34
+
35
+ config.package.name = 'package.box'
36
+ end
data/contrib/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # Vagrant Contrib
2
+
3
+ Miscellaneous contributions which assist people in using Vagrant will
4
+ make their way into this directory. An up-to-date list of short descriptions
5
+ for each item will be kept below.
6
+
7
+ ## List of Contrib Items
8
+
9
+ * `emacs` - Contains a file showing how to associate `Vagrantfile` with
10
+ Ruby syntax highlighting.
11
+ * `vim` - Contains a `.vim` file for enabling Ruby syntax highlighting
12
+ for `Vagrantfile`s.
@@ -0,0 +1,3 @@
1
+ # Autocompletion for Vagrant just put this line in your ~/.profile or link this file into it like:
2
+ # source /path/to/vagrant/contrib/bash/completion.sh
3
+ complete -W "$(echo `vagrant --help | awk '/^ /{print $1}'`;)" vagrant
@@ -0,0 +1,8 @@
1
+ ;;--------------------------------------------------------------------
2
+ ;; Teach emacs to syntax highlight Vagrantfile as Ruby.
3
+ ;;
4
+ ;; Installation: Copy the line below into your emacs configuration,
5
+ ;; or drop this file anywhere in your "~/.emacs.d" directory and be
6
+ ;; sure to "load" it.
7
+ ;;--------------------------------------------------------------------
8
+ (add-to-list 'auto-mode-alist '("Vagrantfile$" . ruby-mode))
@@ -0,0 +1,9 @@
1
+ " Teach vim to syntax highlight Vagrantfile as ruby
2
+ "
3
+ " Install: $HOME/.vim/plugin/vagrant.vim
4
+ " Author: Brandon Philips <brandon@ifup.org>
5
+
6
+ augroup vagrant
7
+ au!
8
+ au BufRead,BufNewFile Vagrantfile set filetype=ruby
9
+ augroup END
data/keys/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # Insecure Keypair
2
+
3
+ These keys are the "insecure" public/private keypair we offer to
4
+ [base box creators](http://docs.vagrantup.com/v1/docs/base_boxes.html) for use in their base boxes so that
5
+ vagrant installations can automatically SSH into the boxes.
6
+
7
+ If you're working with a team or company or with a custom box and
8
+ you want more secure SSH, you should create your own keypair
9
+ and configure the private key in the Vagrantfile with
10
+ `config.ssh.private_key_path`
11
+
12
+ # Putty
13
+
14
+ If you are using Vagrant on windows, the .ppk file contained here, in the keys directory,
15
+ has been generated from the private key and should be used to connect Putty to any VMs that
16
+ are leveraging the default key pair. See [guide](http://docs.vagrantup.com/v1/docs/getting-started/ssh.html)
17
+ in the documentation for more details on using Putty with Vagrant.
data/keys/vagrant ADDED
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI
3
+ w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP
4
+ kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2
5
+ hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO
6
+ Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW
7
+ yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd
8
+ ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1
9
+ Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf
10
+ TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK
11
+ iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A
12
+ sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf
13
+ 4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP
14
+ cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk
15
+ EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN
16
+ CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX
17
+ 3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG
18
+ YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj
19
+ 3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+
20
+ dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz
21
+ 6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC
22
+ P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF
23
+ llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ
24
+ kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH
25
+ +vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ
26
+ NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s=
27
+ -----END RSA PRIVATE KEY-----
data/keys/vagrant.pub ADDED
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
@@ -0,0 +1,174 @@
1
+ module Vagrant
2
+ module Action
3
+ # Action builder which provides a nice DSL for building up
4
+ # a middleware sequence for Vagrant actions. This code is based
5
+ # heavily off of `Rack::Builder` and `ActionDispatch::MiddlewareStack`
6
+ # in Rack and Rails, respectively.
7
+ #
8
+ # Usage
9
+ #
10
+ # Building an action sequence is very easy:
11
+ #
12
+ # app = Vagrant::Action::Builder.new.tap do |b|
13
+ # b.use MiddlewareA
14
+ # b.use MiddlewareB
15
+ # end
16
+ #
17
+ # Vagrant::Action.run(app)
18
+ #
19
+ class Builder
20
+ # This is the stack of middlewares added. This should NOT be used
21
+ # directly.
22
+ #
23
+ # @return [Array]
24
+ attr_reader :stack
25
+
26
+ # This is a shortcut for a middleware sequence with only one item
27
+ # in it. For a description of the arguments and the documentation, please
28
+ # see {#use} instead.
29
+ #
30
+ # @return [Builder]
31
+ def self.build(middleware, *args, &block)
32
+ new.use(middleware, *args, &block)
33
+ end
34
+
35
+ def initialize
36
+ @stack = []
37
+ end
38
+
39
+ # Implement a custom copy that copies the stack variable over so that
40
+ # we don't clobber that.
41
+ def initialize_copy(original)
42
+ super
43
+
44
+ @stack = original.stack.dup
45
+ end
46
+
47
+ # Returns a mergeable version of the builder. If `use` is called with
48
+ # the return value of this method, then the stack will merge, instead
49
+ # of being treated as a separate single middleware.
50
+ def flatten
51
+ lambda do |env|
52
+ self.call(env)
53
+ end
54
+ end
55
+
56
+ # Adds a middleware class to the middleware stack. Any additional
57
+ # args and a block, if given, are saved and passed to the initializer
58
+ # of the middleware.
59
+ #
60
+ # @param [Class] middleware The middleware class
61
+ def use(middleware, *args, &block)
62
+ if middleware.kind_of?(Builder)
63
+ # Merge in the other builder's stack into our own
64
+ self.stack.concat(middleware.stack)
65
+ else
66
+ self.stack << [middleware, args, block]
67
+ end
68
+
69
+ self
70
+ end
71
+
72
+ # Inserts a middleware at the given index or directly before the
73
+ # given middleware object.
74
+ def insert(index, middleware, *args, &block)
75
+ index = self.index(index) unless index.is_a?(Integer)
76
+ raise "no such middleware to insert before: #{index.inspect}" unless index
77
+
78
+ if middleware.kind_of?(Builder)
79
+ middleware.stack.reverse.each do |stack_item|
80
+ stack.insert(index, stack_item)
81
+ end
82
+ else
83
+ stack.insert(index, [middleware, args, block])
84
+ end
85
+ end
86
+
87
+ alias_method :insert_before, :insert
88
+
89
+ # Inserts a middleware after the given index or middleware object.
90
+ def insert_after(index, middleware, *args, &block)
91
+ index = self.index(index) unless index.is_a?(Integer)
92
+ raise "no such middleware to insert after: #{index.inspect}" unless index
93
+ insert(index + 1, middleware, *args, &block)
94
+ end
95
+
96
+ # Replaces the given middlware object or index with the new
97
+ # middleware.
98
+ def replace(index, middleware, *args, &block)
99
+ if index.is_a?(Integer)
100
+ delete(index)
101
+ insert(index, middleware, *args, &block)
102
+ else
103
+ insert_before(index, middleware, *args, &block)
104
+ delete(index)
105
+ end
106
+ end
107
+
108
+ # Deletes the given middleware object or index
109
+ def delete(index)
110
+ index = self.index(index) unless index.is_a?(Integer)
111
+ stack.delete_at(index)
112
+ end
113
+
114
+ # Runs the builder stack with the given environment.
115
+ def call(env)
116
+ to_app(env).call(env)
117
+ end
118
+
119
+ # Returns the numeric index for the given middleware object.
120
+ #
121
+ # @param [Object] object The item to find the index for
122
+ # @return [Integer]
123
+ def index(object)
124
+ stack.each_with_index do |item, i|
125
+ return i if item[0] == object
126
+ return i if item[0].respond_to?(:name) && item[0].name == object
127
+ end
128
+
129
+ nil
130
+ end
131
+
132
+ # Converts the builder stack to a runnable action sequence.
133
+ #
134
+ # @param [Vagrant::Action::Environment] env The action environment
135
+ # @return [Object] A callable object
136
+ def to_app(env)
137
+ app_stack = nil
138
+
139
+ # If we have action hooks, then we apply them
140
+ if env[:action_hooks]
141
+ builder = self.dup
142
+
143
+ # These are the options to pass into hook application.
144
+ options = {}
145
+
146
+ # If we already ran through once and did append/prepends,
147
+ # then don't do it again.
148
+ if env[:action_hooks_already_ran]
149
+ options[:no_prepend_or_append] = true
150
+ end
151
+
152
+ # Specify that we already ran, so in the future we don't repeat
153
+ # the prepend/append hooks.
154
+ env[:action_hooks_already_ran] = true
155
+
156
+ # Apply all the hooks to the new builder instance
157
+ env[:action_hooks].each do |hook|
158
+ hook.apply(builder, options)
159
+ end
160
+
161
+ # The stack is now the result of the new builder
162
+ app_stack = builder.stack.dup
163
+ end
164
+
165
+ # If we don't have a stack then default to using our own
166
+ app_stack ||= stack.dup
167
+
168
+ # Wrap the middleware stack with the Warden to provide a consistent
169
+ # and predictable behavior upon exceptions.
170
+ Warden.new(app_stack, env)
171
+ end
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,81 @@
1
+ require "log4r"
2
+
3
+ require "vagrant/util/downloader"
4
+ require "vagrant/util/platform"
5
+
6
+ module Vagrant
7
+ module Action
8
+ module Builtin
9
+ # This middleware will download a remote box and add it to the
10
+ # given box collection.
11
+ class BoxAdd
12
+ def initialize(app, env)
13
+ @app = app
14
+ @logger = Log4r::Logger.new("vagrant::action::builtin::box_add")
15
+ end
16
+
17
+ def call(env)
18
+ @temp_path = env[:tmp_path].join("box" + Time.now.to_i.to_s)
19
+ @logger.info("Downloading box to: #{@temp_path}")
20
+
21
+ url = env[:box_url]
22
+ if File.file?(url) || url !~ /^[a-z0-9]+:.*$/i
23
+ @logger.info("URL is a file or protocol not found and assuming file.")
24
+ file_path = File.expand_path(url)
25
+ file_path = Util::Platform.cygwin_windows_path(file_path)
26
+ url = "file:#{file_path}"
27
+ end
28
+
29
+ downloader_options = {}
30
+ downloader_options[:insecure] = env[:box_download_insecure]
31
+ downloader_options[:ui] = env[:ui]
32
+
33
+ # Download the box to a temporary path. We store the temporary
34
+ # path as an instance variable so that the `#recover` method can
35
+ # access it.
36
+ env[:ui].info(I18n.t("vagrant.actions.box.download.downloading"))
37
+ begin
38
+ downloader = Util::Downloader.new(url, @temp_path, downloader_options)
39
+ downloader.download!
40
+ rescue Errors::DownloaderInterrupted
41
+ # The downloader was interrupted, so just return, because that
42
+ # means we were interrupted as well.
43
+ env[:ui].info(I18n.t("vagrant.actions.box.download.interrupted"))
44
+ return
45
+ end
46
+
47
+ # Add the box
48
+ env[:ui].info I18n.t("vagrant.actions.box.add.adding", :name => env[:box_name])
49
+ added_box = nil
50
+ begin
51
+ added_box = env[:box_collection].add(
52
+ @temp_path, env[:box_name], env[:box_provider], env[:box_force])
53
+ rescue Vagrant::Errors::BoxUpgradeRequired
54
+ # Upgrade the box
55
+ env[:box_collection].upgrade(env[:box_name])
56
+
57
+ # Try adding it again
58
+ retry
59
+ end
60
+
61
+ # Call the 'recover' method in all cases to clean up the
62
+ # downloaded temporary file.
63
+ recover(env)
64
+
65
+ # Success, we added a box!
66
+ env[:ui].success(
67
+ I18n.t("vagrant.actions.box.add.added", name: added_box.name, provider: added_box.provider))
68
+
69
+ # Carry on!
70
+ @app.call(env)
71
+ end
72
+
73
+ def recover(env)
74
+ if @temp_path && File.exist?(@temp_path)
75
+ File.unlink(@temp_path)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end