vagrant-fixed-ssh 1.0.7

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 (413) hide show
  1. data/.gitignore +46 -0
  2. data/.yardopts +1 -0
  3. data/CHANGELOG.md +723 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +22 -0
  6. data/README.md +121 -0
  7. data/Rakefile +18 -0
  8. data/bin/vagrant +60 -0
  9. data/config/default.rb +30 -0
  10. data/contrib/README.md +12 -0
  11. data/contrib/emacs/vagrant.el +8 -0
  12. data/contrib/vim/vagrantfile.vim +9 -0
  13. data/keys/README.md +17 -0
  14. data/keys/vagrant +27 -0
  15. data/keys/vagrant.pub +1 -0
  16. data/lib/vagrant.rb +197 -0
  17. data/lib/vagrant/action.rb +63 -0
  18. data/lib/vagrant/action/box/destroy.rb +25 -0
  19. data/lib/vagrant/action/box/download.rb +84 -0
  20. data/lib/vagrant/action/box/package.rb +19 -0
  21. data/lib/vagrant/action/box/unpackage.rb +61 -0
  22. data/lib/vagrant/action/box/verify.rb +23 -0
  23. data/lib/vagrant/action/builder.rb +128 -0
  24. data/lib/vagrant/action/builtin.rb +171 -0
  25. data/lib/vagrant/action/env/set.rb +21 -0
  26. data/lib/vagrant/action/environment.rb +12 -0
  27. data/lib/vagrant/action/general/check_virtualbox.rb +28 -0
  28. data/lib/vagrant/action/general/package.rb +101 -0
  29. data/lib/vagrant/action/general/validate.rb +18 -0
  30. data/lib/vagrant/action/runner.rb +53 -0
  31. data/lib/vagrant/action/vm/boot.rb +53 -0
  32. data/lib/vagrant/action/vm/check_accessible.rb +23 -0
  33. data/lib/vagrant/action/vm/check_box.rb +33 -0
  34. data/lib/vagrant/action/vm/check_guest_additions.rb +38 -0
  35. data/lib/vagrant/action/vm/check_port_collisions.rb +89 -0
  36. data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
  37. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +18 -0
  38. data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
  39. data/lib/vagrant/action/vm/clear_shared_folders.rb +18 -0
  40. data/lib/vagrant/action/vm/customize.rb +36 -0
  41. data/lib/vagrant/action/vm/default_name.rb +22 -0
  42. data/lib/vagrant/action/vm/destroy.rb +19 -0
  43. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +20 -0
  44. data/lib/vagrant/action/vm/discard_state.rb +22 -0
  45. data/lib/vagrant/action/vm/export.rb +57 -0
  46. data/lib/vagrant/action/vm/forward_ports.rb +92 -0
  47. data/lib/vagrant/action/vm/halt.rb +32 -0
  48. data/lib/vagrant/action/vm/host_name.rb +21 -0
  49. data/lib/vagrant/action/vm/import.rb +48 -0
  50. data/lib/vagrant/action/vm/match_mac_address.rb +21 -0
  51. data/lib/vagrant/action/vm/network.rb +403 -0
  52. data/lib/vagrant/action/vm/nfs.rb +196 -0
  53. data/lib/vagrant/action/vm/package.rb +23 -0
  54. data/lib/vagrant/action/vm/package_vagrantfile.rb +36 -0
  55. data/lib/vagrant/action/vm/provision.rb +61 -0
  56. data/lib/vagrant/action/vm/provisioner_cleanup.rb +26 -0
  57. data/lib/vagrant/action/vm/prune_nfs_exports.rb +20 -0
  58. data/lib/vagrant/action/vm/resume.rb +20 -0
  59. data/lib/vagrant/action/vm/sane_defaults.rb +78 -0
  60. data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
  61. data/lib/vagrant/action/vm/share_folders.rb +114 -0
  62. data/lib/vagrant/action/vm/suspend.rb +20 -0
  63. data/lib/vagrant/action/warden.rb +92 -0
  64. data/lib/vagrant/box.rb +44 -0
  65. data/lib/vagrant/box_collection.rb +58 -0
  66. data/lib/vagrant/cli.rb +76 -0
  67. data/lib/vagrant/command.rb +24 -0
  68. data/lib/vagrant/command/base.rb +167 -0
  69. data/lib/vagrant/command/box.rb +58 -0
  70. data/lib/vagrant/command/box_add.rb +37 -0
  71. data/lib/vagrant/command/box_list.rb +28 -0
  72. data/lib/vagrant/command/box_remove.rb +27 -0
  73. data/lib/vagrant/command/box_repackage.rb +27 -0
  74. data/lib/vagrant/command/destroy.rb +64 -0
  75. data/lib/vagrant/command/gem.rb +39 -0
  76. data/lib/vagrant/command/halt.rb +39 -0
  77. data/lib/vagrant/command/init.rb +40 -0
  78. data/lib/vagrant/command/package.rb +75 -0
  79. data/lib/vagrant/command/provision.rb +40 -0
  80. data/lib/vagrant/command/reload.rb +39 -0
  81. data/lib/vagrant/command/resume.rb +33 -0
  82. data/lib/vagrant/command/ssh.rb +90 -0
  83. data/lib/vagrant/command/ssh_config.rb +51 -0
  84. data/lib/vagrant/command/start_mixins.rb +26 -0
  85. data/lib/vagrant/command/status.rb +36 -0
  86. data/lib/vagrant/command/suspend.rb +33 -0
  87. data/lib/vagrant/command/up.rb +40 -0
  88. data/lib/vagrant/communication.rb +7 -0
  89. data/lib/vagrant/communication/base.rb +56 -0
  90. data/lib/vagrant/communication/ssh.rb +230 -0
  91. data/lib/vagrant/config.rb +49 -0
  92. data/lib/vagrant/config/base.rb +82 -0
  93. data/lib/vagrant/config/container.rb +37 -0
  94. data/lib/vagrant/config/error_recorder.rb +19 -0
  95. data/lib/vagrant/config/loader.rb +127 -0
  96. data/lib/vagrant/config/nfs.rb +8 -0
  97. data/lib/vagrant/config/package.rb +7 -0
  98. data/lib/vagrant/config/ssh.rb +27 -0
  99. data/lib/vagrant/config/top.rb +72 -0
  100. data/lib/vagrant/config/vagrant.rb +14 -0
  101. data/lib/vagrant/config/vm.rb +168 -0
  102. data/lib/vagrant/config/vm/provisioner.rb +52 -0
  103. data/lib/vagrant/config/vm/sub_vm.rb +17 -0
  104. data/lib/vagrant/data_store.rb +92 -0
  105. data/lib/vagrant/downloaders.rb +7 -0
  106. data/lib/vagrant/downloaders/base.rb +25 -0
  107. data/lib/vagrant/downloaders/file.rb +22 -0
  108. data/lib/vagrant/downloaders/http.rb +97 -0
  109. data/lib/vagrant/driver.rb +8 -0
  110. data/lib/vagrant/driver/virtualbox.rb +134 -0
  111. data/lib/vagrant/driver/virtualbox_4_0.rb +459 -0
  112. data/lib/vagrant/driver/virtualbox_4_1.rb +459 -0
  113. data/lib/vagrant/driver/virtualbox_4_2.rb +606 -0
  114. data/lib/vagrant/driver/virtualbox_base.rb +326 -0
  115. data/lib/vagrant/environment.rb +522 -0
  116. data/lib/vagrant/errors.rb +445 -0
  117. data/lib/vagrant/guest.rb +18 -0
  118. data/lib/vagrant/guest/arch.rb +56 -0
  119. data/lib/vagrant/guest/base.rb +99 -0
  120. data/lib/vagrant/guest/debian.rb +64 -0
  121. data/lib/vagrant/guest/fedora.rb +66 -0
  122. data/lib/vagrant/guest/freebsd.rb +86 -0
  123. data/lib/vagrant/guest/gentoo.rb +46 -0
  124. data/lib/vagrant/guest/linux.rb +118 -0
  125. data/lib/vagrant/guest/linux/config.rb +19 -0
  126. data/lib/vagrant/guest/linux/error.rb +9 -0
  127. data/lib/vagrant/guest/openbsd.rb +20 -0
  128. data/lib/vagrant/guest/redhat.rb +67 -0
  129. data/lib/vagrant/guest/solaris.rb +118 -0
  130. data/lib/vagrant/guest/suse.rb +17 -0
  131. data/lib/vagrant/guest/ubuntu.rb +23 -0
  132. data/lib/vagrant/hosts.rb +37 -0
  133. data/lib/vagrant/hosts/arch.rb +55 -0
  134. data/lib/vagrant/hosts/base.rb +66 -0
  135. data/lib/vagrant/hosts/bsd.rb +97 -0
  136. data/lib/vagrant/hosts/fedora.rb +47 -0
  137. data/lib/vagrant/hosts/freebsd.rb +41 -0
  138. data/lib/vagrant/hosts/gentoo.rb +20 -0
  139. data/lib/vagrant/hosts/linux.rb +94 -0
  140. data/lib/vagrant/hosts/opensuse.rb +30 -0
  141. data/lib/vagrant/hosts/windows.rb +16 -0
  142. data/lib/vagrant/plugin.rb +81 -0
  143. data/lib/vagrant/provisioners.rb +12 -0
  144. data/lib/vagrant/provisioners/base.rb +44 -0
  145. data/lib/vagrant/provisioners/chef.rb +168 -0
  146. data/lib/vagrant/provisioners/chef_client.rb +132 -0
  147. data/lib/vagrant/provisioners/chef_solo.rb +234 -0
  148. data/lib/vagrant/provisioners/puppet.rb +176 -0
  149. data/lib/vagrant/provisioners/puppet_server.rb +78 -0
  150. data/lib/vagrant/provisioners/shell.rb +103 -0
  151. data/lib/vagrant/registry.rb +52 -0
  152. data/lib/vagrant/ssh.rb +126 -0
  153. data/lib/vagrant/test_helpers.rb +154 -0
  154. data/lib/vagrant/ui.rb +168 -0
  155. data/lib/vagrant/util.rb +12 -0
  156. data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
  157. data/lib/vagrant/util/busy.rb +59 -0
  158. data/lib/vagrant/util/counter.rb +24 -0
  159. data/lib/vagrant/util/file_checksum.rb +38 -0
  160. data/lib/vagrant/util/file_mode.rb +12 -0
  161. data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
  162. data/lib/vagrant/util/is_port_open.rb +38 -0
  163. data/lib/vagrant/util/line_ending_helpers.rb +14 -0
  164. data/lib/vagrant/util/network_ip.rb +28 -0
  165. data/lib/vagrant/util/platform.rb +68 -0
  166. data/lib/vagrant/util/retryable.rb +25 -0
  167. data/lib/vagrant/util/safe_exec.rb +36 -0
  168. data/lib/vagrant/util/safe_puts.rb +31 -0
  169. data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
  170. data/lib/vagrant/util/subprocess.rb +247 -0
  171. data/lib/vagrant/util/template_renderer.rb +83 -0
  172. data/lib/vagrant/version.rb +6 -0
  173. data/lib/vagrant/vm.rb +195 -0
  174. data/tasks/acceptance.rake +113 -0
  175. data/tasks/bundler.rake +3 -0
  176. data/tasks/test.rake +20 -0
  177. data/templates/commands/init/Vagrantfile.erb +99 -0
  178. data/templates/commands/ssh_config/config.erb +15 -0
  179. data/templates/config/validation_failed.erb +7 -0
  180. data/templates/guests/arch/network_dhcp.erb +7 -0
  181. data/templates/guests/arch/network_static.erb +7 -0
  182. data/templates/guests/debian/network_dhcp.erb +6 -0
  183. data/templates/guests/debian/network_static.erb +7 -0
  184. data/templates/guests/fedora/network_dhcp.erb +6 -0
  185. data/templates/guests/fedora/network_static.erb +13 -0
  186. data/templates/guests/freebsd/network_dhcp.erb +3 -0
  187. data/templates/guests/freebsd/network_static.erb +3 -0
  188. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  189. data/templates/guests/gentoo/network_static.erb +4 -0
  190. data/templates/guests/redhat/network_dhcp.erb +6 -0
  191. data/templates/guests/redhat/network_static.erb +7 -0
  192. data/templates/locales/en.yml +759 -0
  193. data/templates/nfs/exports.erb +5 -0
  194. data/templates/nfs/exports_freebsd.erb +5 -0
  195. data/templates/nfs/exports_linux.erb +5 -0
  196. data/templates/package_Vagrantfile.erb +11 -0
  197. data/templates/provisioners/chef_client/client.erb +32 -0
  198. data/templates/provisioners/chef_solo/solo.erb +25 -0
  199. data/test/acceptance/base.rb +48 -0
  200. data/test/acceptance/box_test.rb +99 -0
  201. data/test/acceptance/destroy_test.rb +37 -0
  202. data/test/acceptance/halt_test.rb +72 -0
  203. data/test/acceptance/init_test.rb +33 -0
  204. data/test/acceptance/networking/host_only_test.rb +37 -0
  205. data/test/acceptance/networking/port_forward_test.rb +125 -0
  206. data/test/acceptance/package_test.rb +46 -0
  207. data/test/acceptance/provisioning/basic_test.rb +61 -0
  208. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  209. data/test/acceptance/provisioning/shell_test.rb +53 -0
  210. data/test/acceptance/resume_test.rb +17 -0
  211. data/test/acceptance/shared_folders_test.rb +84 -0
  212. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  213. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  214. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  215. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  216. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  217. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  218. data/test/acceptance/ssh_test.rb +46 -0
  219. data/test/acceptance/support/config.rb +42 -0
  220. data/test/acceptance/support/isolated_environment.rb +117 -0
  221. data/test/acceptance/support/matchers/have_color.rb +9 -0
  222. data/test/acceptance/support/matchers/match_output.rb +14 -0
  223. data/test/acceptance/support/matchers/succeed.rb +14 -0
  224. data/test/acceptance/support/network_tests.rb +29 -0
  225. data/test/acceptance/support/output.rb +95 -0
  226. data/test/acceptance/support/shared/base_context.rb +72 -0
  227. data/test/acceptance/support/shared/command_examples.rb +33 -0
  228. data/test/acceptance/support/virtualbox.rb +36 -0
  229. data/test/acceptance/suspend_test.rb +56 -0
  230. data/test/acceptance/up_basic_test.rb +33 -0
  231. data/test/acceptance/up_with_box_url.rb +40 -0
  232. data/test/acceptance/vagrant_test.rb +47 -0
  233. data/test/acceptance/version_test.rb +15 -0
  234. data/test/buildbot/README.md +72 -0
  235. data/test/buildbot/buildbot_config/__init__.py +0 -0
  236. data/test/buildbot/buildbot_config/config/__init__.py +0 -0
  237. data/test/buildbot/buildbot_config/config/loader.py +24 -0
  238. data/test/buildbot/buildbot_config/config/master.py +24 -0
  239. data/test/buildbot/buildbot_config/config/slave.py +22 -0
  240. data/test/buildbot/buildbot_config/master/__init__.py +6 -0
  241. data/test/buildbot/buildbot_config/master/builders.py +78 -0
  242. data/test/buildbot/buildbot_config/master/buildsteps.py +100 -0
  243. data/test/buildbot/buildbot_config/master/change_sources.py +8 -0
  244. data/test/buildbot/buildbot_config/master/schedulers.py +32 -0
  245. data/test/buildbot/buildbot_config/master/slaves.py +60 -0
  246. data/test/buildbot/buildbot_config/master/status.py +52 -0
  247. data/test/buildbot/master/Makefile.sample +28 -0
  248. data/test/buildbot/master/buildbot.tac +36 -0
  249. data/test/buildbot/master/master.cfg +67 -0
  250. data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
  251. data/test/buildbot/master/public_html/default.css +545 -0
  252. data/test/buildbot/master/public_html/favicon.ico +0 -0
  253. data/test/buildbot/master/public_html/robots.txt +10 -0
  254. data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +356 -0
  255. data/test/buildbot/master/public_html/static/css/prettify.css +97 -0
  256. data/test/buildbot/master/public_html/static/css/syntax.css +60 -0
  257. data/test/buildbot/master/public_html/static/css/vagrant.base.css +205 -0
  258. data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
  259. data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
  260. data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
  261. data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
  262. data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
  263. data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
  264. data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
  265. data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
  266. data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
  267. data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
  268. data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
  269. data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
  270. data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
  271. data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
  272. data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +80 -0
  273. data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +4 -0
  274. data/test/buildbot/master/templates/authfail.html +9 -0
  275. data/test/buildbot/master/templates/build.html +205 -0
  276. data/test/buildbot/master/templates/builder.html +118 -0
  277. data/test/buildbot/master/templates/builders.html +33 -0
  278. data/test/buildbot/master/templates/buildslave.html +72 -0
  279. data/test/buildbot/master/templates/buildslaves.html +70 -0
  280. data/test/buildbot/master/templates/change.html +15 -0
  281. data/test/buildbot/master/templates/layouts/base.html +58 -0
  282. data/test/buildbot/master/templates/macros/box.html +37 -0
  283. data/test/buildbot/master/templates/macros/build_line.html +50 -0
  284. data/test/buildbot/master/templates/macros/change.html +81 -0
  285. data/test/buildbot/master/templates/macros/forms.html +300 -0
  286. data/test/buildbot/master/templates/root.html +42 -0
  287. data/test/buildbot/master/templates/waterfall.html +53 -0
  288. data/test/buildbot/requirements.txt +4 -0
  289. data/test/buildbot/scripts/deploy.sh +38 -0
  290. data/test/buildbot/scripts/setup.sh +107 -0
  291. data/test/buildbot/slave/buildbot.tac +43 -0
  292. data/test/buildbot/slave/info/admin +1 -0
  293. data/test/buildbot/slave/info/host +1 -0
  294. data/test/buildbot/tests/__init__.py +0 -0
  295. data/test/buildbot/tests/master/__init__.py +0 -0
  296. data/test/buildbot/tests/master/test_slaves.py +41 -0
  297. data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
  298. data/test/config/acceptance_boxes.yml +7 -0
  299. data/test/support/isolated_environment.rb +46 -0
  300. data/test/support/tempdir.rb +34 -0
  301. data/test/unit/base.rb +21 -0
  302. data/test/unit/support/isolated_environment.rb +47 -0
  303. data/test/unit/support/shared/base_context.rb +30 -0
  304. data/test/unit/vagrant/action/builder_test.rb +156 -0
  305. data/test/unit/vagrant/action/environment_test.rb +16 -0
  306. data/test/unit/vagrant/action/runner_test.rb +65 -0
  307. data/test/unit/vagrant/action/warden_test.rb +92 -0
  308. data/test/unit/vagrant/box_collection_test.rb +56 -0
  309. data/test/unit/vagrant/box_test.rb +34 -0
  310. data/test/unit/vagrant/command/base_test.rb +150 -0
  311. data/test/unit/vagrant/config/base_test.rb +48 -0
  312. data/test/unit/vagrant/config/loader_test.rb +79 -0
  313. data/test/unit/vagrant/config/ssh_test.rb +17 -0
  314. data/test/unit/vagrant/config/top_test.rb +69 -0
  315. data/test/unit/vagrant/config/vm_test.rb +71 -0
  316. data/test/unit/vagrant/config_test.rb +27 -0
  317. data/test/unit/vagrant/data_store_test.rb +79 -0
  318. data/test/unit/vagrant/downloaders/base_test.rb +18 -0
  319. data/test/unit/vagrant/downloaders/file_test.rb +75 -0
  320. data/test/unit/vagrant/downloaders/http_test.rb +19 -0
  321. data/test/unit/vagrant/environment_test.rb +220 -0
  322. data/test/unit/vagrant/hosts_test.rb +36 -0
  323. data/test/unit/vagrant/registry_test.rb +74 -0
  324. data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
  325. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  326. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
  327. data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
  328. data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
  329. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  330. data/test/unit/vagrant/util/retryable_test.rb +106 -0
  331. data/test/unit/vagrant_test.rb +27 -0
  332. data/test/unit_legacy/locales/en.yml +8 -0
  333. data/test/unit_legacy/test_helper.rb +32 -0
  334. data/test/unit_legacy/vagrant/action/box/destroy_test.rb +18 -0
  335. data/test/unit_legacy/vagrant/action/box/download_test.rb +125 -0
  336. data/test/unit_legacy/vagrant/action/box/package_test.rb +25 -0
  337. data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +84 -0
  338. data/test/unit_legacy/vagrant/action/box/verify_test.rb +30 -0
  339. data/test/unit_legacy/vagrant/action/env/set_test.rb +24 -0
  340. data/test/unit_legacy/vagrant/action/general/package_test.rb +268 -0
  341. data/test/unit_legacy/vagrant/action/general/validate_test.rb +31 -0
  342. data/test/unit_legacy/vagrant/action/vm/boot_test.rb +66 -0
  343. data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +61 -0
  344. data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +61 -0
  345. data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +9 -0
  346. data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
  347. data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +52 -0
  348. data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
  349. data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +40 -0
  350. data/test/unit_legacy/vagrant/action/vm/customize_test.rb +37 -0
  351. data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +25 -0
  352. data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
  353. data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +45 -0
  354. data/test/unit_legacy/vagrant/action/vm/export_test.rb +107 -0
  355. data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +77 -0
  356. data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +197 -0
  357. data/test/unit_legacy/vagrant/action/vm/halt_test.rb +79 -0
  358. data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +36 -0
  359. data/test/unit_legacy/vagrant/action/vm/import_test.rb +66 -0
  360. data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +40 -0
  361. data/test/unit_legacy/vagrant/action/vm/modify_test.rb +38 -0
  362. data/test/unit_legacy/vagrant/action/vm/network_test.rb +286 -0
  363. data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +26 -0
  364. data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +260 -0
  365. data/test/unit_legacy/vagrant/action/vm/package_test.rb +25 -0
  366. data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
  367. data/test/unit_legacy/vagrant/action/vm/provision_test.rb +65 -0
  368. data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +56 -0
  369. data/test/unit_legacy/vagrant/action/vm/resume_test.rb +35 -0
  370. data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +144 -0
  371. data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +35 -0
  372. data/test/unit_legacy/vagrant/action_test.rb +89 -0
  373. data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
  374. data/test/unit_legacy/vagrant/box_test.rb +74 -0
  375. data/test/unit_legacy/vagrant/cli_test.rb +35 -0
  376. data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
  377. data/test/unit_legacy/vagrant/command/group_base_test.rb +15 -0
  378. data/test/unit_legacy/vagrant/command/helpers_test.rb +88 -0
  379. data/test/unit_legacy/vagrant/command/init_test.rb +10 -0
  380. data/test/unit_legacy/vagrant/command/package_test.rb +27 -0
  381. data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
  382. data/test/unit_legacy/vagrant/config/error_recorder_test.rb +18 -0
  383. data/test/unit_legacy/vagrant/config/ssh_test.rb +12 -0
  384. data/test/unit_legacy/vagrant/config/vagrant_test.rb +35 -0
  385. data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +92 -0
  386. data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
  387. data/test/unit_legacy/vagrant/config_test.rb +148 -0
  388. data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
  389. data/test/unit_legacy/vagrant/environment_test.rb +539 -0
  390. data/test/unit_legacy/vagrant/errors_test.rb +42 -0
  391. data/test/unit_legacy/vagrant/hosts/base_test.rb +46 -0
  392. data/test/unit_legacy/vagrant/hosts/bsd_test.rb +53 -0
  393. data/test/unit_legacy/vagrant/hosts/linux_test.rb +54 -0
  394. data/test/unit_legacy/vagrant/plugin_test.rb +9 -0
  395. data/test/unit_legacy/vagrant/provisioners/base_test.rb +63 -0
  396. data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +190 -0
  397. data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +115 -0
  398. data/test/unit_legacy/vagrant/provisioners/chef_test.rb +209 -0
  399. data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +68 -0
  400. data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +182 -0
  401. data/test/unit_legacy/vagrant/provisioners/shell_test.rb +79 -0
  402. data/test/unit_legacy/vagrant/ssh/session_test.rb +40 -0
  403. data/test/unit_legacy/vagrant/ssh_test.rb +304 -0
  404. data/test/unit_legacy/vagrant/systems/base_test.rb +18 -0
  405. data/test/unit_legacy/vagrant/systems/linux_test.rb +104 -0
  406. data/test/unit_legacy/vagrant/util/busy_test.rb +106 -0
  407. data/test/unit_legacy/vagrant/util/counter_test.rb +29 -0
  408. data/test/unit_legacy/vagrant/util/platform_test.rb +18 -0
  409. data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +43 -0
  410. data/test/unit_legacy/vagrant/util/template_renderer_test.rb +145 -0
  411. data/test/unit_legacy/vagrant/vm_test.rb +300 -0
  412. data/vagrant-fixed-ssh.gemspec +70 -0
  413. metadata +712 -0
@@ -0,0 +1,47 @@
1
+ require 'pathname'
2
+
3
+ module Vagrant
4
+ module Hosts
5
+ class Fedora < Linux
6
+ def self.match?
7
+ release_file = Pathname.new("/etc/redhat-release")
8
+
9
+ if release_file.exist?
10
+ release_file.open("r") do |f|
11
+ return true if f.gets =~ /^Fedora/
12
+ end
13
+ end
14
+
15
+ false
16
+ end
17
+
18
+ # Normal, mid-range precedence.
19
+ def self.precedence
20
+ 5
21
+ end
22
+
23
+ def initialize(*args)
24
+ super
25
+
26
+ @nfs_server_binary = "/etc/init.d/nfs"
27
+
28
+ # On Fedora 16+, systemd replaced init.d, so we have to use the
29
+ # proper NFS binary. This checks to see if we need to do that.
30
+ release_file = Pathname.new("/etc/redhat-release")
31
+ begin
32
+ release_file.open("r") do |f|
33
+ version_number = /Fedora release ([0-9]+)/.match(f.gets)[1].to_i
34
+ if version_number >= 16
35
+ # "service nfs-server" will redirect properly to systemctl
36
+ # when "service nfs-server restart" is called.
37
+ @nfs_server_binary = "/usr/sbin/service nfs-server"
38
+ end
39
+ end
40
+ rescue Errno::ENOENT
41
+ # File doesn't exist, not a big deal, assume we're on a
42
+ # lower version.
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,41 @@
1
+ require 'vagrant/util/platform'
2
+
3
+ module Vagrant
4
+ module Hosts
5
+ # Represents a FreeBSD host
6
+ class FreeBSD < BSD
7
+ class FreeBSDHostError < Errors::VagrantError
8
+ error_namespace("vagrant.hosts.freebsd")
9
+ end
10
+
11
+ include Util
12
+ include Util::Retryable
13
+
14
+ def self.match?
15
+ Util::Platform.freebsd?
16
+ end
17
+
18
+ # Normal, mid-range precedence.
19
+ def self.precedence
20
+ 5
21
+ end
22
+
23
+ def nfs_export(id, ip, folders)
24
+ folders.each do |folder_name, folder_values|
25
+ if folder_values[:hostpath] =~ /\s+/
26
+ raise FreeBSDHostError, :_key => :nfs_whitespace
27
+ end
28
+ end
29
+
30
+ super
31
+ end
32
+
33
+ def initialize(*args)
34
+ super
35
+
36
+ @nfs_restart_command = "sudo /etc/rc.d/mountd onereload"
37
+ @nfs_exports_template = "nfs/exports_freebsd"
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,20 @@
1
+ module Vagrant
2
+ module Hosts
3
+ class Gentoo < Linux
4
+ def self.match?
5
+ return File.exists?("/etc/gentoo-release")
6
+ end
7
+
8
+ # Normal, mid-range precedence.
9
+ def self.precedence
10
+ 5
11
+ end
12
+
13
+ def initialize(*args)
14
+ super
15
+
16
+ @nfs_server_binary = "/etc/init.d/nfs"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,94 @@
1
+ require 'log4r'
2
+
3
+ require 'vagrant/util/platform'
4
+
5
+ module Vagrant
6
+ module Hosts
7
+ # Represents a Linux based host, such as Ubuntu.
8
+ class Linux < Base
9
+ include Util
10
+ include Util::Retryable
11
+
12
+ def self.match?
13
+ Util::Platform.linux?
14
+ end
15
+
16
+ def self.precedence
17
+ # Set a lower precedence because this is a generic OS. We
18
+ # want specific distros to match first.
19
+ 2
20
+ end
21
+
22
+ def initialize(*args)
23
+ super
24
+
25
+ @logger = Log4r::Logger.new("vagrant::hosts::linux")
26
+ @nfs_server_binary = "/etc/init.d/nfs-kernel-server"
27
+ end
28
+
29
+ def nfs?
30
+ retryable(:tries => 10, :on => TypeError) do
31
+ # Check procfs to see if NFSd is a supported filesystem
32
+ system("cat /proc/filesystems | grep nfsd > /dev/null 2>&1")
33
+ end
34
+ end
35
+
36
+ def nfs_export(id, ip, folders)
37
+ output = TemplateRenderer.render('nfs/exports_linux',
38
+ :uuid => id,
39
+ :ip => ip,
40
+ :folders => folders)
41
+
42
+ @ui.info I18n.t("vagrant.hosts.linux.nfs_export")
43
+ sleep 0.5
44
+
45
+ nfs_cleanup(id)
46
+
47
+ output.split("\n").each do |line|
48
+ # This should only ask for administrative permission once, even
49
+ # though its executed in multiple subshells.
50
+ system(%Q[sudo su root -c "echo '#{line}' >> /etc/exports"])
51
+ end
52
+
53
+ # We run restart here instead of "update" just in case nfsd
54
+ # is not starting
55
+ system("sudo #{@nfs_server_binary} restart")
56
+ end
57
+
58
+ def nfs_prune(valid_ids)
59
+ return if !File.exist?("/etc/exports")
60
+
61
+ @logger.info("Pruning invalid NFS entries...")
62
+
63
+ output = false
64
+
65
+ File.read("/etc/exports").lines.each do |line|
66
+ if line =~ /^# VAGRANT-BEGIN: (.+?)$/
67
+ if valid_ids.include?($1.to_s)
68
+ @logger.debug("Valid ID: #{$1.to_s}")
69
+ else
70
+ if !output
71
+ # We want to warn the user but we only want to output once
72
+ @ui.info I18n.t("vagrant.hosts.linux.nfs_prune")
73
+ output = true
74
+ end
75
+
76
+ @logger.info("Invalid ID, pruning: #{$1.to_s}")
77
+ nfs_cleanup($1.to_s)
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ protected
84
+
85
+ def nfs_cleanup(id)
86
+ return if !File.exist?("/etc/exports")
87
+
88
+ # Use sed to just strip out the block of code which was inserted
89
+ # by Vagrant
90
+ system("sudo sed -e '/^# VAGRANT-BEGIN: #{id}/,/^# VAGRANT-END: #{id}/ d' -ibak /etc/exports")
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,30 @@
1
+ require 'pathname'
2
+
3
+ module Vagrant
4
+ module Hosts
5
+ class OpenSUSE < Linux
6
+ def self.match?
7
+ release_file = Pathname.new("/etc/SuSE-release")
8
+
9
+ if release_file.exist?
10
+ release_file.open("r") do |f|
11
+ return true if f.gets =~ /^openSUSE/
12
+ end
13
+ end
14
+
15
+ false
16
+ end
17
+
18
+ # Normal, mid-range precedence.
19
+ def self.precedence
20
+ 5
21
+ end
22
+
23
+ def initialize(*args)
24
+ super
25
+
26
+ @nfs_server_binary = "/etc/init.d/nfsserver"
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,16 @@
1
+ require 'vagrant/util/platform'
2
+
3
+ module Vagrant
4
+ module Hosts
5
+ class Windows < Base
6
+ def self.match?
7
+ Util::Platform.windows?
8
+ end
9
+
10
+ # Windows does not support NFS
11
+ def nfs?
12
+ false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,81 @@
1
+ require "rubygems"
2
+
3
+ require "log4r"
4
+
5
+ module Vagrant
6
+ # Represents a single plugin and also manages loading plugins from
7
+ # RubyGems. If a plugin has a `vagrant_init.rb` file somewhere on its
8
+ # load path, then this class will find it and load it. For logging purposes
9
+ # (for debugging), the list of loaded plugins is stored in the {plugins}
10
+ # array.
11
+ class Plugin
12
+ # The array of gem specifications that were loaded as plugins.
13
+ @@plugins = []
14
+
15
+ # Loads all the plugins for Vagrant. Plugins are currently
16
+ # gems which have a "vagrant_init.rb" somewhere on their
17
+ # load path. This file is loaded to kick off the load sequence
18
+ # for that plugin.
19
+ def self.load!
20
+ logger = Log4r::Logger.new("vagrant::plugin")
21
+ logger.info("Searching and loading any available plugins...")
22
+
23
+ # Our version is used for checking dependencies
24
+ our_version = Gem::Version.create(Vagrant::VERSION)
25
+
26
+ # RubyGems 1.8.0 deprecated `source_index`. Gem::Specification is the
27
+ # new replacement. For now, we support both, but special-case 1.8.x
28
+ # so that we avoid deprecation messages.
29
+ index = Gem::VERSION >= "1.8.0" ? Gem::Specification : Gem.source_index
30
+
31
+ # Stupid hack since Rails 2.3.x overrides Gem.source_index with their
32
+ # own incomplete replacement which causes issues.
33
+ index = [index.installed_source_index, index.vendor_source_index] if defined?(Rails::VendorGemSourceIndex) && index.is_a?(Rails::VendorGemSourceIndex)
34
+
35
+ # Look for a vagrant_init.rb in all the gems, but only the
36
+ # latest version of the gems.
37
+ [index].flatten.each do |source|
38
+ # In 1.6.0, added the option of including prerelease gems, which is
39
+ # useful for developers.
40
+ specs = Gem::VERSION >= "1.6.0" ? source.latest_specs(true) : source.latest_specs
41
+
42
+ specs.each do |spec|
43
+ if @@plugins.include?(spec)
44
+ logger.debug("Plugin already loaded, not loading again: #{spec.name}")
45
+ next
46
+ end
47
+
48
+ # If this gem depends on Vagrant, verify this is a valid release of
49
+ # Vagrant for this gem to load into.
50
+ vagrant_dep = spec.dependencies.find { |d| d.name == "vagrant" }
51
+ if vagrant_dep && !vagrant_dep.requirement.satisfied_by?(our_version)
52
+ logger.debug("Plugin Vagrant dependency mismatch: #{spec.name} (#{spec.version})")
53
+ next
54
+ end
55
+
56
+ # Find a vagrant_init.rb to verify if this is a plugin
57
+ file = nil
58
+ if Gem::VERSION >= "1.8.0"
59
+ file = spec.matches_for_glob("**/vagrant_init.rb").first
60
+ else
61
+ file = Gem.searcher.matching_files(spec, "vagrant_init.rb").first
62
+ end
63
+
64
+ next if !file
65
+
66
+ logger.info("Loading plugin: #{spec.name} (#{spec.version})")
67
+ @@plugins << spec
68
+ load file
69
+ end
70
+
71
+ logger.info("Loaded #{@@plugins.length} plugins.")
72
+ end
73
+ end
74
+
75
+ # Returns the array of plugins which are currently loaded by
76
+ # Vagrant.
77
+ #
78
+ # @return [Array]
79
+ def self.plugins; @@plugins; end
80
+ end
81
+ end
@@ -0,0 +1,12 @@
1
+ # These aren't autoloaded because they have to register things such
2
+ # as configuration classes right away with Vagrant.
3
+ module Vagrant
4
+ module Provisioners
5
+ autoload :Base, 'vagrant/provisioners/base'
6
+ autoload :ChefSolo, 'vagrant/provisioners/chef_solo'
7
+ autoload :ChefClient, 'vagrant/provisioners/chef_client'
8
+ autoload :Puppet, 'vagrant/provisioners/puppet'
9
+ autoload :PuppetServer, 'vagrant/provisioners/puppet_server'
10
+ autoload :Shell, 'vagrant/provisioners/shell'
11
+ end
12
+ end
@@ -0,0 +1,44 @@
1
+ module Vagrant
2
+ module Provisioners
3
+ # The base class for a "provisioner." A provisioner is responsible for
4
+ # provisioning a Vagrant system.
5
+ #
6
+ # This has been abstracted out so it is easy to provide support for
7
+ # multiple solutions.
8
+ class Base
9
+ include Vagrant::Util
10
+
11
+ # The environment which provisioner is running in. This is the
12
+ # action environment, not a Vagrant::Environment.
13
+ attr_reader :env
14
+
15
+ # The configuration for this provisioner. This will be an instance of
16
+ # the `Config` class which is part of the provisioner.
17
+ attr_reader :config
18
+
19
+ def initialize(env, config)
20
+ @env = env
21
+ @config = config
22
+ end
23
+
24
+ # This method is expected to return a class that is used for configuration
25
+ # for the provisioner.
26
+ def self.config_class; end
27
+
28
+ # This is the method called to "prepare" the provisioner. This is called
29
+ # before any actions are run by the action runner (see {Vagrant::Actions::Runner}).
30
+ # This can be used to setup shared folders, forward ports, etc. Whatever is
31
+ # necessary on a "meta" level.
32
+ def prepare; end
33
+
34
+ # This is the method called to provision the system. This method
35
+ # is expected to do whatever necessary to provision the system (create files,
36
+ # SSH, etc.)
37
+ def provision!; end
38
+
39
+ # This is the method called to when the system is being destroyed
40
+ # and allows the provisioners to engage in any cleanup tasks necessary.
41
+ def cleanup; end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,168 @@
1
+ require 'tempfile'
2
+
3
+ module Vagrant
4
+ module Provisioners
5
+ # This class is a base class where the common functionality shared between
6
+ # chef-solo and chef-client provisioning are stored. This is **not an actual
7
+ # provisioner**. Instead, {ChefSolo} or {ChefServer} should be used.
8
+ class Chef < Base
9
+ include Util::Counter
10
+
11
+ def initialize(env, config)
12
+ super
13
+
14
+ config.provisioning_path ||= "/tmp/vagrant-chef-#{get_and_update_counter(:provisioning_path)}"
15
+ end
16
+
17
+ def prepare
18
+ raise ChefError, :invalid_provisioner
19
+ end
20
+
21
+ def verify_binary(binary)
22
+ # Checks for the existence of chef binary and error if it
23
+ # doesn't exist.
24
+ env[:vm].channel.sudo("which #{binary}",
25
+ :error_class => ChefError,
26
+ :error_key => :chef_not_detected,
27
+ :binary => binary)
28
+ end
29
+
30
+ # Returns the path to the Chef binary, taking into account the
31
+ # `binary_path` configuration option.
32
+ def chef_binary_path(binary)
33
+ return binary if !config.binary_path
34
+ return File.join(config.binary_path, binary)
35
+ end
36
+
37
+ def chown_provisioning_folder
38
+ env[:vm].channel.sudo("mkdir -p #{config.provisioning_path}")
39
+ env[:vm].channel.sudo("chown #{env[:vm].config.ssh.username} #{config.provisioning_path}")
40
+ end
41
+
42
+ def setup_config(template, filename, template_vars)
43
+ config_file = TemplateRenderer.render(template, {
44
+ :log_level => config.log_level.to_sym,
45
+ :http_proxy => config.http_proxy,
46
+ :http_proxy_user => config.http_proxy_user,
47
+ :http_proxy_pass => config.http_proxy_pass,
48
+ :https_proxy => config.https_proxy,
49
+ :https_proxy_user => config.https_proxy_user,
50
+ :https_proxy_pass => config.https_proxy_pass,
51
+ :no_proxy => config.no_proxy
52
+ }.merge(template_vars))
53
+
54
+ # Create a temporary file to store the data so we
55
+ # can upload it
56
+ temp = Tempfile.new("vagrant")
57
+ temp.write(config_file)
58
+ temp.close
59
+
60
+ remote_file = File.join(config.provisioning_path, filename)
61
+ env[:vm].channel.sudo("rm #{remote_file}", :error_check => false)
62
+ env[:vm].channel.upload(temp.path, remote_file)
63
+ end
64
+
65
+ def setup_json
66
+ env[:ui].info I18n.t("vagrant.provisioners.chef.json")
67
+
68
+ # Set up our configuration that is passed to the attributes by default
69
+ data = { :config => env[:global_config].to_hash }
70
+
71
+ # Add our default share directory if it exists
72
+ default_share = env[:vm].config.vm.shared_folders["v-root"]
73
+ data[:directory] = default_share[:guestpath] if default_share
74
+
75
+ # And wrap it under the "vagrant" namespace
76
+ data = { :vagrant => data }
77
+
78
+ # Merge with the "extra data" which isn't put under the
79
+ # vagrant namespace by default
80
+ data.merge!(config.merged_json)
81
+
82
+ json = data.to_json
83
+
84
+ # Create a temporary file to store the data so we
85
+ # can upload it
86
+ temp = Tempfile.new("vagrant")
87
+ temp.write(json)
88
+ temp.close
89
+
90
+ env[:vm].channel.upload(temp.path, File.join(config.provisioning_path, "dna.json"))
91
+ end
92
+ end
93
+
94
+ class Chef < Base
95
+ class ChefError < Errors::VagrantError
96
+ error_namespace("vagrant.provisioners.chef")
97
+ end
98
+ end
99
+
100
+ class Chef < Base
101
+ # This is the configuration which is available through `config.chef`
102
+ class Config < Vagrant::Config::Base
103
+ # Shared config
104
+ attr_accessor :node_name
105
+ attr_accessor :provisioning_path
106
+ attr_accessor :log_level
107
+ attr_accessor :json
108
+ attr_accessor :http_proxy
109
+ attr_accessor :http_proxy_user
110
+ attr_accessor :http_proxy_pass
111
+ attr_accessor :https_proxy
112
+ attr_accessor :https_proxy_user
113
+ attr_accessor :https_proxy_pass
114
+ attr_accessor :no_proxy
115
+ attr_accessor :binary_path
116
+ attr_accessor :binary_env
117
+ attr_accessor :attempts
118
+ attr_writer :run_list
119
+
120
+ # Provide defaults in such a way that they won't override the instance
121
+ # variable. This is so merging continues to work properly.
122
+ def attempts; @attempts || 1; end
123
+ def json; @json ||= {}; end
124
+ def log_level; @log_level || :info; end
125
+
126
+ # This returns the json that is merged with the defaults and the
127
+ # user set data.
128
+ def merged_json
129
+ original = { :instance_role => "vagrant" }
130
+ original[:run_list] = @run_list if @run_list
131
+ original.merge(json || {})
132
+ end
133
+
134
+ # Returns the run list, but also sets it up to be empty if it
135
+ # hasn't been defined already.
136
+ def run_list
137
+ @run_list ||= []
138
+ end
139
+
140
+ # Adds a recipe to the run list
141
+ def add_recipe(name)
142
+ name = "recipe[#{name}]" unless name =~ /^recipe\[(.+?)\]$/
143
+ run_list << name
144
+ end
145
+
146
+ # Adds a role to the run list
147
+ def add_role(name)
148
+ name = "role[#{name}]" unless name =~ /^role\[(.+?)\]$/
149
+ run_list << name
150
+ end
151
+
152
+ def validate(env, errors)
153
+ super
154
+
155
+ errors.add(I18n.t("vagrant.config.chef.vagrant_as_json_key")) if json.has_key?(:vagrant)
156
+ end
157
+
158
+ def instance_variables_hash
159
+ # Overridden so that the 'json' key could be removed, since its just
160
+ # merged into the config anyways
161
+ result = super
162
+ result.delete("json")
163
+ result
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end