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,28 @@
1
+ require 'optparse'
2
+
3
+ require_relative "base"
4
+
5
+ module VagrantPlugins
6
+ module CommandPlugin
7
+ module Command
8
+ class List < Base
9
+ def execute
10
+ opts = OptionParser.new do |o|
11
+ o.banner = "Usage: vagrant plugin list [-h]"
12
+ end
13
+
14
+ # Parse the options
15
+ argv = parse_options(opts)
16
+ return if !argv
17
+ raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length > 0
18
+
19
+ # List the installed plugins
20
+ action(Action.action_list)
21
+
22
+ # Success, exit status 0
23
+ 0
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,75 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module CommandPlugin
5
+ module Command
6
+ class Root < Vagrant.plugin("2", :command)
7
+ def initialize(argv, env)
8
+ super
9
+
10
+ @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
11
+
12
+ @subcommands = Vagrant::Registry.new
13
+ @subcommands.register(:install) do
14
+ require_relative "install"
15
+ Install
16
+ end
17
+
18
+ @subcommands.register(:license) do
19
+ require_relative "license"
20
+ License
21
+ end
22
+
23
+ @subcommands.register(:list) do
24
+ require_relative "list"
25
+ List
26
+ end
27
+
28
+ @subcommands.register(:uninstall) do
29
+ require_relative "uninstall"
30
+ Uninstall
31
+ end
32
+ end
33
+
34
+ def execute
35
+ if @main_args.include?("-h") || @main_args.include?("--help")
36
+ # Print the help for all the sub-commands.
37
+ return help
38
+ end
39
+
40
+ # If we reached this far then we must have a subcommand. If not,
41
+ # then we also just print the help and exit.
42
+ command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
43
+ return help if !command_class || !@sub_command
44
+ @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
45
+
46
+ # Initialize and execute the command class
47
+ command_class.new(@sub_args, @env).execute
48
+ end
49
+
50
+ # Prints the help out for this command
51
+ def help
52
+ opts = OptionParser.new do |o|
53
+ o.banner = "Usage: vagrant plugin <command> [<args>]"
54
+ o.separator ""
55
+ o.separator "Available subcommands:"
56
+
57
+ # Add the available subcommands as separators in order to print them
58
+ # out as well.
59
+ keys = []
60
+ @subcommands.each { |key, value| keys << key.to_s }
61
+
62
+ keys.sort.each do |key|
63
+ o.separator " #{key}"
64
+ end
65
+
66
+ o.separator ""
67
+ o.separator "For help on any individual command run `vagrant plugin COMMAND -h`"
68
+ end
69
+
70
+ @env.ui.info(opts.help, :prefix => false)
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,28 @@
1
+ require 'optparse'
2
+
3
+ require_relative "base"
4
+
5
+ module VagrantPlugins
6
+ module CommandPlugin
7
+ module Command
8
+ class Uninstall < Base
9
+ def execute
10
+ opts = OptionParser.new do |o|
11
+ o.banner = "Usage: vagrant plugin uninstall <name> [-h]"
12
+ end
13
+
14
+ # Parse the options
15
+ argv = parse_options(opts)
16
+ return if !argv
17
+ raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length < 1
18
+
19
+ # Uninstall the gem
20
+ action(Action.action_uninstall, :plugin_name => argv[0])
21
+
22
+ # Success, exit status 0
23
+ 0
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,74 @@
1
+ require "rubygems"
2
+ require "rubygems/config_file"
3
+ require "rubygems/gem_runner"
4
+
5
+ require "log4r"
6
+
7
+ module VagrantPlugins
8
+ module CommandPlugin
9
+ # This class provides methods to help with calling out to the
10
+ # `gem` command but using the RubyGems API.
11
+ class GemHelper
12
+ def initialize(gem_home)
13
+ @gem_home = gem_home.to_s
14
+ @logger = Log4r::Logger.new("vagrant::plugins::plugincommand::gemhelper")
15
+ end
16
+
17
+ # This will yield the given block with the proper ENV setup so
18
+ # that RubyGems only sees the gems in the Vagrant-managed gem
19
+ # path.
20
+ def with_environment
21
+ old_gem_home = ENV["GEM_HOME"]
22
+ old_gem_path = ENV["GEM_PATH"]
23
+ ENV["GEM_HOME"] = @gem_home
24
+ ENV["GEM_PATH"] = @gem_home
25
+ @logger.debug("Set GEM_* to: #{ENV["GEM_HOME"]}")
26
+
27
+ # Clear paths so that it reads the new GEM_HOME setting
28
+ Gem.paths = ENV
29
+
30
+ # Set a custom configuration to avoid loading ~/.gemrc loads and
31
+ # /etc/gemrc and so on.
32
+ old_config = Gem.configuration
33
+ Gem.configuration = NilGemConfig.new
34
+
35
+ # Clear the sources so that installation uses custom sources
36
+ old_sources = Gem.sources
37
+ Gem.sources = Gem.default_sources
38
+ Gem.sources << "http://gems.hashicorp.com"
39
+
40
+ # Use a silent UI so that we have no output
41
+ Gem::DefaultUserInteraction.use_ui(Gem::SilentUI.new) do
42
+ return yield
43
+ end
44
+ ensure
45
+ # Restore the old GEM_* settings
46
+ ENV["GEM_HOME"] = old_gem_home
47
+ ENV["GEM_PATH"] = old_gem_path
48
+
49
+ # Reset everything
50
+ Gem.configuration = old_config
51
+ Gem.paths = ENV
52
+ Gem.sources = old_sources.to_a
53
+ end
54
+
55
+ # This is pretty hacky but it is a custom implementatin of
56
+ # Gem::ConfigFile so that we don't load any gemrc files.
57
+ class NilGemConfig < Gem::ConfigFile
58
+ def initialize
59
+ # We _can not_ `super` here because that can really mess up
60
+ # some other configuration state. We need to just set everything
61
+ # directly.
62
+
63
+ @api_keys = {}
64
+ @args = []
65
+ @backtrace = false
66
+ @bulk_threshold = 1000
67
+ @hash = {}
68
+ @update_sources = true
69
+ @verbose = true
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,22 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module CommandPlugin
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "plugin command"
7
+ description <<-DESC
8
+ This command helps manage and install plugins within the
9
+ Vagrant environment.
10
+ DESC
11
+
12
+ command("plugin") do
13
+ require File.expand_path("../command/root", __FILE__)
14
+ Command::Root
15
+ end
16
+ end
17
+
18
+ autoload :Action, File.expand_path("../action", __FILE__)
19
+ autoload :GemHelper, File.expand_path("../gem_helper", __FILE__)
20
+ autoload :StateFile, File.expand_path("../state_file", __FILE__)
21
+ end
22
+ end
@@ -0,0 +1,57 @@
1
+ require "json"
2
+
3
+ module VagrantPlugins
4
+ module CommandPlugin
5
+ # This is a helper to deal with the plugin state file that Vagrant
6
+ # uses to track what plugins are installed and activated and such.
7
+ class StateFile
8
+ def initialize(path)
9
+ @path = path
10
+
11
+ @data = {}
12
+ @data = JSON.parse(@path.read) if @path.exist?
13
+ @data["installed"] ||= []
14
+ end
15
+
16
+ # Add a plugin that is installed to the state file.
17
+ #
18
+ # @param [String] name The name of the plugin
19
+ def add_plugin(name)
20
+ if !@data["installed"].include?(name)
21
+ @data["installed"] << name
22
+ end
23
+
24
+ save!
25
+ end
26
+
27
+ # This returns a list of installed plugins according to the state
28
+ # file. Note that this may _not_ directly match over to actually
29
+ # installed gems.
30
+ #
31
+ # @return [Array<String>]
32
+ def installed_plugins
33
+ @data["installed"]
34
+ end
35
+
36
+ # Remove a plugin that is installed from the state file.
37
+ #
38
+ # @param [String] name The name of the plugin.
39
+ def remove_plugin(name)
40
+ @data["installed"].delete(name)
41
+ save!
42
+ end
43
+
44
+ # This saves the state back into the state file.
45
+ def save!
46
+ # Scrub some fields
47
+ @data["installed"].sort!
48
+ @data["installed"].uniq!
49
+
50
+ # Save
51
+ @path.open("w+") do |f|
52
+ f.write(JSON.dump(@data))
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,34 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module CommandProvision
5
+ class Command < Vagrant.plugin("2", :command)
6
+ def execute
7
+ options = {}
8
+ options[:provision_types] = nil
9
+
10
+ opts = OptionParser.new do |o|
11
+ o.banner = "Usage: vagrant provision [vm-name] [--provision-with x,y,z]"
12
+
13
+ o.on("--provision-with x,y,z", Array,
14
+ "Enable only certain provisioners, by type.") do |list|
15
+ options[:provision_types] = list.map { |type| type.to_sym }
16
+ end
17
+ end
18
+
19
+ # Parse the options
20
+ argv = parse_options(opts)
21
+ return if !argv
22
+
23
+ # Go over each VM and provision!
24
+ @logger.debug("'provision' each target VM...")
25
+ with_target_vms(argv) do |machine|
26
+ machine.action(:provision, options)
27
+ end
28
+
29
+ # Success, exit status 0
30
+ 0
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,18 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module CommandProvision
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "provision command"
7
+ description <<-DESC
8
+ The `provision` command provisions your virtual machine based on the
9
+ configuration of the Vagrantfile.
10
+ DESC
11
+
12
+ command("provision") do
13
+ require File.expand_path("../command", __FILE__)
14
+ Command
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,37 @@
1
+ require 'optparse'
2
+
3
+ require "vagrant"
4
+
5
+ require Vagrant.source_root.join("plugins/commands/up/start_mixins")
6
+
7
+ module VagrantPlugins
8
+ module CommandReload
9
+ class Command < Vagrant.plugin("2", :command)
10
+ # We assume that the `up` plugin exists and that we'll have access
11
+ # to this.
12
+ include VagrantPlugins::CommandUp::StartMixins
13
+
14
+ def execute
15
+ options = {}
16
+
17
+ opts = OptionParser.new do |o|
18
+ o.banner = "Usage: vagrant reload [vm-name]"
19
+ o.separator ""
20
+ build_start_options(o, options)
21
+ end
22
+
23
+ # Parse the options
24
+ argv = parse_options(opts)
25
+ return if !argv
26
+
27
+ @logger.debug("'reload' each target VM...")
28
+ with_target_vms(argv) do |machine|
29
+ machine.action(:reload, options)
30
+ end
31
+
32
+ # Success, exit status 0
33
+ 0
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,18 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module CommandReload
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "reload command"
7
+ description <<-DESC
8
+ The `reload` command will halt, reconfigure your machine based on
9
+ the Vagrantfile, and bring it back up.
10
+ DESC
11
+
12
+ command("reload") do
13
+ require File.expand_path("../command", __FILE__)
14
+ Command
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,25 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module CommandResume
5
+ class Command < Vagrant.plugin("2", :command)
6
+ def execute
7
+ opts = OptionParser.new do |o|
8
+ o.banner = "Usage: vagrant resume [vm-name]"
9
+ end
10
+
11
+ # Parse the options
12
+ argv = parse_options(opts)
13
+ return if !argv
14
+
15
+ @logger.debug("'resume' each target VM...")
16
+ with_target_vms(argv) do |machine|
17
+ machine.action(:resume)
18
+ end
19
+
20
+ # Success, exit status 0
21
+ 0
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module CommandResume
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "resume command"
7
+ description <<-DESC
8
+ The `resume` command resumes a suspend virtual machine.
9
+ DESC
10
+
11
+ command("resume") do
12
+ require File.expand_path("../command", __FILE__)
13
+ Command
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,63 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module CommandSSH
5
+ class Command < Vagrant.plugin("2", :command)
6
+ def execute
7
+ options = {}
8
+
9
+ opts = OptionParser.new do |o|
10
+ o.banner = "Usage: vagrant ssh [vm-name] [-c command] [-- extra ssh args]"
11
+
12
+ o.separator ""
13
+
14
+ o.on("-c", "--command COMMAND", "Execute an SSH command directly.") do |c|
15
+ options[:command] = c
16
+ end
17
+
18
+ o.on("-p", "--plain", "Plain mode, leaves authentication up to user.") do |p|
19
+ options[:plain_mode] = p
20
+ end
21
+ end
22
+
23
+ # Parse out the extra args to send to SSH, which is everything
24
+ # after the "--"
25
+ split_index = @argv.index("--")
26
+ if split_index
27
+ options[:ssh_args] = @argv.drop(split_index + 1)
28
+ @argv = @argv.take(split_index)
29
+ end
30
+
31
+ # Parse the options and return if we don't have any target.
32
+ argv = parse_options(opts)
33
+ return if !argv
34
+
35
+ # Execute the actual SSH
36
+ with_target_vms(argv, :single_target => true) do |vm|
37
+ if options[:command]
38
+ @logger.debug("Executing single command on remote machine: #{options[:command]}")
39
+ env = vm.action(:ssh_run, :ssh_run_command => options[:command])
40
+
41
+ # Exit with the exit status of the command or a 0 if we didn't
42
+ # get one.
43
+ exit_status = env[:ssh_run_exit_status] || 0
44
+ return exit_status
45
+ else
46
+ opts = {
47
+ :plain_mode => options[:plain_mode],
48
+ :extra_args => options[:ssh_args]
49
+ }
50
+
51
+ @logger.debug("Invoking `ssh` action on machine")
52
+ vm.action(:ssh, :ssh_opts => opts)
53
+
54
+ # We should never reach this point, since the point of `ssh`
55
+ # is to exec into the proper SSH shell, but we'll just return
56
+ # an exit status of 0 anyways.
57
+ return 0
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,17 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module CommandSSH
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "ssh command"
7
+ description <<-DESC
8
+ The `ssh` command allows you to SSH in to your running virtual machine.
9
+ DESC
10
+
11
+ command("ssh") do
12
+ require File.expand_path("../command", __FILE__)
13
+ Command
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,49 @@
1
+ require 'optparse'
2
+
3
+ require "vagrant/util/safe_puts"
4
+
5
+ module VagrantPlugins
6
+ module CommandSSHConfig
7
+ class Command < Vagrant.plugin("2", :command)
8
+ include Vagrant::Util::SafePuts
9
+
10
+ def execute
11
+ options = {}
12
+
13
+ opts = OptionParser.new do |o|
14
+ o.banner = "Usage: vagrant ssh-config [vm-name] [--host name]"
15
+ o.separator ""
16
+
17
+ o.on("--host COMMAND", "Name the host for the config..") do |h|
18
+ options[:host] = h
19
+ end
20
+ end
21
+
22
+ argv = parse_options(opts)
23
+ return if !argv
24
+
25
+ with_target_vms(argv, :single_target => true) do |machine|
26
+ ssh_info = machine.ssh_info
27
+ raise Vagrant::Errors::SSHNotReady if ssh_info.nil?
28
+
29
+ variables = {
30
+ :host_key => options[:host] || machine.name || "vagrant",
31
+ :ssh_host => ssh_info[:host],
32
+ :ssh_port => ssh_info[:port],
33
+ :ssh_user => ssh_info[:username],
34
+ :private_key_path => ssh_info[:private_key_path],
35
+ :forward_agent => ssh_info[:forward_agent],
36
+ :forward_x11 => ssh_info[:forward_x11]
37
+ }
38
+
39
+ # Render the template and output directly to STDOUT
40
+ template = "commands/ssh_config/config"
41
+ safe_puts(Vagrant::Util::TemplateRenderer.render(template, variables))
42
+ end
43
+
44
+ # Success, exit status 0
45
+ 0
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,18 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module CommandSSHConfig
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "ssh-config command"
7
+ description <<-DESC
8
+ The `ssh-config` command dumps an OpenSSH compatible configuration
9
+ that can be used to quickly SSH into your virtual machine.
10
+ DESC
11
+
12
+ command("ssh-config") do
13
+ require File.expand_path("../command", __FILE__)
14
+ Command
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,39 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module CommandStatus
5
+ class Command < Vagrant.plugin("2", :command)
6
+ def execute
7
+ opts = OptionParser.new do |o|
8
+ o.banner = "Usage: vagrant status [machine-name]"
9
+ end
10
+
11
+ # Parse the options
12
+ argv = parse_options(opts)
13
+ return if !argv
14
+
15
+ state = nil
16
+ results = []
17
+ with_target_vms(argv) do |machine|
18
+ state = machine.state if !state
19
+ results << "#{machine.name.to_s.ljust(25)}#{machine.state.short_description} (#{machine.provider_name})"
20
+ end
21
+
22
+ message = nil
23
+ if results.length == 1
24
+ message = state.long_description
25
+ else
26
+ message = I18n.t("vagrant.commands.status.listing")
27
+ end
28
+
29
+ @env.ui.info(I18n.t("vagrant.commands.status.output",
30
+ :states => results.join("\n"),
31
+ :message => message),
32
+ :prefix => false)
33
+
34
+ # Success, exit status 0
35
+ 0
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,18 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module CommandStatus
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "status command"
7
+ description <<-DESC
8
+ The `status` command shows what the running state (running/saved/..)
9
+ is of all your virtual machines in this environment.
10
+ DESC
11
+
12
+ command("status") do
13
+ require File.expand_path("../command", __FILE__)
14
+ Command
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,25 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module CommandSuspend
5
+ class Command < Vagrant.plugin("2", :command)
6
+ def execute
7
+ opts = OptionParser.new do |o|
8
+ o.banner = "Usage: vagrant suspend [vm-name]"
9
+ end
10
+
11
+ # Parse the options
12
+ argv = parse_options(opts)
13
+ return if !argv
14
+
15
+ @logger.debug("'suspend' each target VM...")
16
+ with_target_vms(argv) do |vm|
17
+ vm.action(:suspend)
18
+ end
19
+
20
+ # Success, exit status 0
21
+ 0
22
+ end
23
+ end
24
+ end
25
+ end