vagrant 1.0.7 → 2.4.4

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 (1436) hide show
  1. checksums.yaml +7 -0
  2. data/.copywrite.hcl +15 -0
  3. data/.gitignore +57 -21
  4. data/.vimrc +5 -0
  5. data/CHANGELOG.md +3795 -6
  6. data/Gemfile +10 -1
  7. data/LICENSE +92 -21
  8. data/README.md +32 -67
  9. data/RELEASE.md +11 -0
  10. data/Rakefile +5 -1
  11. data/Vagrantfile +31 -0
  12. data/bin/vagrant +239 -29
  13. data/contrib/README.md +8 -3
  14. data/contrib/bash/completion.sh +190 -0
  15. data/contrib/emacs/vagrant.el +3 -0
  16. data/contrib/st/Ruby.sublime-settings +6 -0
  17. data/contrib/sudoers/linux-fedora +7 -0
  18. data/contrib/sudoers/linux-suse +6 -0
  19. data/contrib/sudoers/linux-ubuntu +8 -0
  20. data/contrib/sudoers/osx +10 -0
  21. data/contrib/zsh/_vagrant +738 -0
  22. data/contrib/zsh/generate_zsh_completion.rb +168 -0
  23. data/ext/vagrant/vagrant_ssl/extconf.rb +24 -0
  24. data/ext/vagrant/vagrant_ssl/vagrant_ssl.c +37 -0
  25. data/ext/vagrant/vagrant_ssl/vagrant_ssl.h +19 -0
  26. data/keys/README.md +15 -9
  27. data/keys/vagrant.key.ed25519 +7 -0
  28. data/keys/vagrant.key.rsa +27 -0
  29. data/keys/vagrant.pub +1 -0
  30. data/keys/vagrant.pub.ed25519 +1 -0
  31. data/keys/vagrant.pub.rsa +1 -0
  32. data/lib/vagrant/action/builder.rb +263 -35
  33. data/lib/vagrant/action/builtin/box_add.rb +638 -0
  34. data/lib/vagrant/action/builtin/box_check_outdated.rb +116 -0
  35. data/lib/vagrant/action/builtin/box_remove.rb +181 -0
  36. data/lib/vagrant/action/builtin/box_update.rb +23 -0
  37. data/lib/vagrant/action/builtin/call.rb +69 -0
  38. data/lib/vagrant/action/builtin/cleanup_disks.rb +59 -0
  39. data/lib/vagrant/action/builtin/cloud_init_setup.rb +125 -0
  40. data/lib/vagrant/action/builtin/cloud_init_wait.rb +35 -0
  41. data/lib/vagrant/action/builtin/config_validate.rb +33 -0
  42. data/lib/vagrant/action/builtin/confirm.rb +51 -0
  43. data/lib/vagrant/action/builtin/delayed.rb +29 -0
  44. data/lib/vagrant/action/builtin/destroy_confirm.rb +24 -0
  45. data/lib/vagrant/action/builtin/disk.rb +55 -0
  46. data/lib/vagrant/action/builtin/env_set.rb +27 -0
  47. data/lib/vagrant/action/builtin/graceful_halt.rb +88 -0
  48. data/lib/vagrant/action/builtin/handle_box.rb +111 -0
  49. data/lib/vagrant/action/builtin/handle_box_url.rb +17 -0
  50. data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +300 -0
  51. data/lib/vagrant/action/builtin/has_provisioner.rb +39 -0
  52. data/lib/vagrant/action/builtin/is_env_set.rb +25 -0
  53. data/lib/vagrant/action/builtin/is_state.rb +35 -0
  54. data/lib/vagrant/action/builtin/lock.rb +60 -0
  55. data/lib/vagrant/action/builtin/message.rb +29 -0
  56. data/lib/vagrant/action/builtin/mixin_provisioners.rb +159 -0
  57. data/lib/vagrant/action/builtin/mixin_synced_folders.rb +267 -0
  58. data/lib/vagrant/action/builtin/prepare_clone.rb +41 -0
  59. data/lib/vagrant/action/builtin/provision.rb +146 -0
  60. data/lib/vagrant/action/builtin/provisioner_cleanup.rb +57 -0
  61. data/lib/vagrant/action/builtin/set_hostname.rb +34 -0
  62. data/lib/vagrant/action/builtin/ssh_exec.rb +47 -0
  63. data/lib/vagrant/action/builtin/ssh_run.rb +88 -0
  64. data/lib/vagrant/action/builtin/synced_folder_cleanup.rb +36 -0
  65. data/lib/vagrant/action/builtin/synced_folders.rb +154 -0
  66. data/lib/vagrant/action/builtin/trigger.rb +40 -0
  67. data/lib/vagrant/action/builtin/wait_for_communicator.rb +82 -0
  68. data/lib/vagrant/action/general/package.rb +176 -29
  69. data/lib/vagrant/action/general/package_setup_files.rb +54 -0
  70. data/lib/vagrant/action/general/package_setup_folders.rb +40 -0
  71. data/lib/vagrant/action/hook.rb +163 -0
  72. data/lib/vagrant/action/primary_runner.rb +18 -0
  73. data/lib/vagrant/action/runner.rb +72 -13
  74. data/lib/vagrant/action/warden.rb +54 -20
  75. data/lib/vagrant/action.rb +74 -49
  76. data/lib/vagrant/alias.rb +59 -0
  77. data/lib/vagrant/batch_action.rb +181 -0
  78. data/lib/vagrant/box.rb +242 -26
  79. data/lib/vagrant/box_collection.rb +540 -35
  80. data/lib/vagrant/box_metadata.rb +275 -0
  81. data/lib/vagrant/bundler.rb +936 -0
  82. data/lib/vagrant/capability_host.rb +180 -0
  83. data/lib/vagrant/cli.rb +75 -29
  84. data/lib/vagrant/config/loader.rb +241 -45
  85. data/lib/vagrant/config/v1/dummy_config.rb +16 -0
  86. data/lib/vagrant/config/v1/loader.rb +108 -0
  87. data/lib/vagrant/config/v1/root.rb +63 -0
  88. data/lib/vagrant/config/v1.rb +12 -0
  89. data/lib/vagrant/config/v2/dummy_config.rb +60 -0
  90. data/lib/vagrant/config/v2/loader.rb +154 -0
  91. data/lib/vagrant/config/v2/root.rb +122 -0
  92. data/lib/vagrant/config/v2/util.rb +24 -0
  93. data/lib/vagrant/config/v2.rb +13 -0
  94. data/lib/vagrant/config/version_base.rb +83 -0
  95. data/lib/vagrant/config.rb +26 -11
  96. data/lib/vagrant/environment.rb +1019 -311
  97. data/lib/vagrant/errors.rb +853 -140
  98. data/lib/vagrant/guest.rb +68 -14
  99. data/lib/vagrant/host.rb +19 -0
  100. data/lib/vagrant/machine.rb +672 -0
  101. data/lib/vagrant/machine_index.rb +527 -0
  102. data/lib/vagrant/machine_state.rb +54 -0
  103. data/lib/vagrant/patches/builder/mkmf.rb +116 -0
  104. data/lib/vagrant/patches/fake_ftp.rb +28 -0
  105. data/lib/vagrant/patches/log4r.rb +54 -0
  106. data/lib/vagrant/patches/net-ssh.rb +76 -0
  107. data/lib/vagrant/patches/rubygems.rb +23 -0
  108. data/lib/vagrant/patches/timeout_error.rb +5 -0
  109. data/lib/vagrant/plugin/manager.rb +406 -0
  110. data/lib/vagrant/plugin/state_file.rb +136 -0
  111. data/lib/vagrant/plugin/v1/command.rb +171 -0
  112. data/lib/vagrant/plugin/v1/communicator.rb +101 -0
  113. data/lib/vagrant/plugin/v1/config.rb +115 -0
  114. data/lib/vagrant/plugin/v1/errors.rb +18 -0
  115. data/lib/vagrant/plugin/v1/guest.rb +95 -0
  116. data/lib/vagrant/plugin/v1/host.rb +69 -0
  117. data/lib/vagrant/plugin/v1/manager.rb +134 -0
  118. data/lib/vagrant/plugin/v1/plugin.rb +231 -0
  119. data/lib/vagrant/plugin/v1/provider.rb +71 -0
  120. data/lib/vagrant/plugin/v1/provisioner.rb +53 -0
  121. data/lib/vagrant/plugin/v1.rb +25 -0
  122. data/lib/vagrant/plugin/v2/command.rb +309 -0
  123. data/lib/vagrant/plugin/v2/communicator.rb +133 -0
  124. data/lib/vagrant/plugin/v2/components.rb +94 -0
  125. data/lib/vagrant/plugin/v2/config.rb +167 -0
  126. data/lib/vagrant/plugin/v2/errors.rb +18 -0
  127. data/lib/vagrant/plugin/v2/guest.rb +26 -0
  128. data/lib/vagrant/plugin/v2/host.rb +22 -0
  129. data/lib/vagrant/plugin/v2/manager.rb +306 -0
  130. data/lib/vagrant/plugin/v2/plugin.rb +296 -0
  131. data/lib/vagrant/plugin/v2/provider.rb +118 -0
  132. data/lib/vagrant/plugin/v2/provisioner.rb +56 -0
  133. data/lib/vagrant/plugin/v2/push.rb +30 -0
  134. data/lib/vagrant/plugin/v2/synced_folder.rb +113 -0
  135. data/lib/vagrant/plugin/v2/trigger.rb +367 -0
  136. data/lib/vagrant/plugin/v2.rb +33 -0
  137. data/lib/vagrant/plugin.rb +7 -77
  138. data/lib/vagrant/registry.rb +79 -18
  139. data/lib/vagrant/shared_helpers.rb +238 -0
  140. data/lib/vagrant/ui.rb +334 -53
  141. data/lib/vagrant/util/ansi_escape_code_remover.rb +4 -1
  142. data/lib/vagrant/util/busy.rb +4 -1
  143. data/lib/vagrant/util/caps.rb +51 -0
  144. data/lib/vagrant/util/checkpoint_client.rb +186 -0
  145. data/lib/vagrant/util/command_deprecation.rb +59 -0
  146. data/lib/vagrant/util/counter.rb +3 -0
  147. data/lib/vagrant/util/credential_scrubber.rb +74 -0
  148. data/lib/vagrant/util/curl_helper.rb +104 -0
  149. data/lib/vagrant/util/deep_merge.rb +23 -0
  150. data/lib/vagrant/util/directory.rb +22 -0
  151. data/lib/vagrant/util/downloader.rb +278 -0
  152. data/lib/vagrant/util/env.rb +56 -0
  153. data/lib/vagrant/util/experimental.rb +79 -0
  154. data/lib/vagrant/util/file_checksum.rb +47 -8
  155. data/lib/vagrant/util/file_mode.rb +3 -0
  156. data/lib/vagrant/util/file_mutex.rb +50 -0
  157. data/lib/vagrant/util/guest_hosts.rb +71 -0
  158. data/lib/vagrant/util/guest_inspection.rb +118 -0
  159. data/lib/vagrant/util/guest_networks.rb +107 -0
  160. data/lib/vagrant/util/hash_with_indifferent_access.rb +3 -0
  161. data/lib/vagrant/util/install_cli_autocomplete.rb +121 -0
  162. data/lib/vagrant/util/io.rb +53 -0
  163. data/lib/vagrant/util/ipv4_interfaces.rb +18 -0
  164. data/lib/vagrant/util/is_port_open.rb +12 -19
  165. data/lib/vagrant/util/keypair.rb +293 -0
  166. data/lib/vagrant/util/line_buffer.rb +63 -0
  167. data/lib/vagrant/util/line_ending_helpers.rb +3 -0
  168. data/lib/vagrant/util/logging_formatter.rb +70 -0
  169. data/lib/vagrant/util/map_command_options.rb +36 -0
  170. data/lib/vagrant/util/mime.rb +95 -0
  171. data/lib/vagrant/util/network_ip.rb +16 -17
  172. data/lib/vagrant/util/numeric.rb +92 -0
  173. data/lib/vagrant/util/platform.rb +695 -26
  174. data/lib/vagrant/util/powershell.rb +316 -0
  175. data/lib/vagrant/util/presence.rb +48 -0
  176. data/lib/vagrant/util/retryable.rb +11 -2
  177. data/lib/vagrant/util/safe_chdir.rb +36 -0
  178. data/lib/vagrant/util/safe_env.rb +17 -0
  179. data/lib/vagrant/util/safe_exec.rb +49 -7
  180. data/lib/vagrant/util/safe_puts.rb +5 -2
  181. data/lib/vagrant/util/scoped_hash_override.rb +47 -0
  182. data/lib/vagrant/util/shell_quote.rb +18 -0
  183. data/lib/vagrant/util/silence_warnings.rb +17 -0
  184. data/lib/vagrant/util/ssh.rb +267 -0
  185. data/lib/vagrant/util/stacked_proc_runner.rb +4 -1
  186. data/lib/vagrant/util/string_block_editor.rb +80 -0
  187. data/lib/vagrant/util/subprocess.rb +199 -81
  188. data/lib/vagrant/util/template_renderer.rb +14 -6
  189. data/lib/vagrant/util/uploader.rb +109 -0
  190. data/lib/vagrant/util/which.rb +56 -0
  191. data/lib/vagrant/util/windows_path.rb +41 -0
  192. data/lib/vagrant/util.rb +51 -0
  193. data/lib/vagrant/vagrantfile.rb +320 -0
  194. data/lib/vagrant/version.rb +5 -1
  195. data/lib/vagrant.rb +327 -144
  196. data/plugins/README.md +11 -0
  197. data/plugins/commands/autocomplete/command/install.rb +52 -0
  198. data/plugins/commands/autocomplete/command/root.rb +69 -0
  199. data/plugins/commands/autocomplete/plugin.rb +21 -0
  200. data/plugins/commands/box/command/add.rb +111 -0
  201. data/plugins/commands/box/command/download_mixins.rb +32 -0
  202. data/plugins/commands/box/command/list.rb +82 -0
  203. data/plugins/commands/box/command/outdated.rb +109 -0
  204. data/plugins/commands/box/command/prune.rb +136 -0
  205. data/plugins/commands/box/command/remove.rb +83 -0
  206. data/plugins/commands/box/command/repackage.rb +46 -0
  207. data/plugins/commands/box/command/root.rb +98 -0
  208. data/plugins/commands/box/command/update.rb +206 -0
  209. data/plugins/commands/box/plugin.rb +18 -0
  210. data/plugins/commands/cap/command.rb +83 -0
  211. data/plugins/commands/cap/plugin.rb +20 -0
  212. data/plugins/commands/cloud/auth/login.rb +90 -0
  213. data/plugins/commands/cloud/auth/logout.rb +37 -0
  214. data/plugins/commands/cloud/auth/middleware/add_authentication.rb +116 -0
  215. data/plugins/commands/cloud/auth/middleware/add_downloader_authentication.rb +68 -0
  216. data/plugins/commands/cloud/auth/plugin.rb +23 -0
  217. data/plugins/commands/cloud/auth/root.rb +77 -0
  218. data/plugins/commands/cloud/auth/whoami.rb +63 -0
  219. data/plugins/commands/cloud/box/create.rb +82 -0
  220. data/plugins/commands/cloud/box/delete.rb +74 -0
  221. data/plugins/commands/cloud/box/plugin.rb +22 -0
  222. data/plugins/commands/cloud/box/root.rb +81 -0
  223. data/plugins/commands/cloud/box/show.rb +133 -0
  224. data/plugins/commands/cloud/box/update.rb +82 -0
  225. data/plugins/commands/cloud/client/client.rb +257 -0
  226. data/plugins/commands/cloud/errors.rb +31 -0
  227. data/plugins/commands/cloud/list.rb +54 -0
  228. data/plugins/commands/cloud/locales/en.yml +197 -0
  229. data/plugins/commands/cloud/plugin.rb +48 -0
  230. data/plugins/commands/cloud/provider/create.rb +105 -0
  231. data/plugins/commands/cloud/provider/delete.rb +109 -0
  232. data/plugins/commands/cloud/provider/plugin.rb +22 -0
  233. data/plugins/commands/cloud/provider/root.rb +81 -0
  234. data/plugins/commands/cloud/provider/update.rb +102 -0
  235. data/plugins/commands/cloud/provider/upload.rb +100 -0
  236. data/plugins/commands/cloud/publish.rb +297 -0
  237. data/plugins/commands/cloud/root.rb +108 -0
  238. data/plugins/commands/cloud/search.rb +102 -0
  239. data/plugins/commands/cloud/util.rb +371 -0
  240. data/plugins/commands/cloud/version/create.rb +77 -0
  241. data/plugins/commands/cloud/version/delete.rb +78 -0
  242. data/plugins/commands/cloud/version/plugin.rb +22 -0
  243. data/plugins/commands/cloud/version/release.rb +78 -0
  244. data/plugins/commands/cloud/version/revoke.rb +79 -0
  245. data/plugins/commands/cloud/version/root.rb +85 -0
  246. data/plugins/commands/cloud/version/update.rb +76 -0
  247. data/plugins/commands/destroy/command.rb +79 -0
  248. data/plugins/commands/destroy/plugin.rb +21 -0
  249. data/plugins/commands/global-status/command.rb +114 -0
  250. data/plugins/commands/global-status/plugin.rb +21 -0
  251. data/plugins/commands/halt/command.rb +42 -0
  252. data/plugins/commands/halt/plugin.rb +21 -0
  253. data/plugins/commands/help/command.rb +19 -0
  254. data/plugins/commands/help/plugin.rb +20 -0
  255. data/plugins/commands/init/command.rb +110 -0
  256. data/plugins/commands/init/plugin.rb +21 -0
  257. data/plugins/commands/list-commands/command.rb +46 -0
  258. data/plugins/commands/list-commands/plugin.rb +21 -0
  259. data/plugins/commands/login/plugin.rb +20 -0
  260. data/plugins/commands/package/command.rb +104 -0
  261. data/plugins/commands/package/plugin.rb +21 -0
  262. data/plugins/commands/plugin/action/expunge_plugins.rb +77 -0
  263. data/plugins/commands/plugin/action/install_gem.rb +80 -0
  264. data/plugins/commands/plugin/action/license_plugin.rb +48 -0
  265. data/plugins/commands/plugin/action/list_plugins.rb +79 -0
  266. data/plugins/commands/plugin/action/plugin_exists_check.rb +28 -0
  267. data/plugins/commands/plugin/action/repair_plugins.rb +67 -0
  268. data/plugins/commands/plugin/action/uninstall_plugin.rb +28 -0
  269. data/plugins/commands/plugin/action/update_gems.rb +52 -0
  270. data/plugins/commands/plugin/action.rb +82 -0
  271. data/plugins/commands/plugin/command/base.rb +22 -0
  272. data/plugins/commands/plugin/command/expunge.rb +95 -0
  273. data/plugins/commands/plugin/command/install.rb +90 -0
  274. data/plugins/commands/plugin/command/license.rb +34 -0
  275. data/plugins/commands/plugin/command/list.rb +34 -0
  276. data/plugins/commands/plugin/command/mixin_install_opts.rb +34 -0
  277. data/plugins/commands/plugin/command/repair.rb +41 -0
  278. data/plugins/commands/plugin/command/root.rb +98 -0
  279. data/plugins/commands/plugin/command/uninstall.rb +38 -0
  280. data/plugins/commands/plugin/command/update.rb +42 -0
  281. data/plugins/commands/plugin/gem_helper.rb +89 -0
  282. data/plugins/commands/plugin/plugin.rb +23 -0
  283. data/plugins/commands/port/command.rb +91 -0
  284. data/plugins/commands/port/locales/en.yml +23 -0
  285. data/plugins/commands/port/plugin.rb +30 -0
  286. data/plugins/commands/powershell/command.rb +132 -0
  287. data/plugins/commands/powershell/errors.rb +29 -0
  288. data/plugins/commands/powershell/plugin.rb +34 -0
  289. data/plugins/commands/powershell/scripts/enable_psremoting.ps1 +63 -0
  290. data/plugins/commands/powershell/scripts/reset_trustedhosts.ps1 +15 -0
  291. data/plugins/commands/provider/command.rb +77 -0
  292. data/plugins/commands/provider/plugin.rb +21 -0
  293. data/plugins/commands/provision/command.rb +41 -0
  294. data/plugins/commands/provision/plugin.rb +21 -0
  295. data/plugins/commands/push/command.rb +78 -0
  296. data/plugins/commands/push/plugin.rb +20 -0
  297. data/plugins/commands/rdp/command.rb +114 -0
  298. data/plugins/commands/rdp/config.rb +29 -0
  299. data/plugins/commands/rdp/errors.rb +21 -0
  300. data/plugins/commands/rdp/plugin.rb +39 -0
  301. data/plugins/commands/reload/command.rb +67 -0
  302. data/plugins/commands/reload/plugin.rb +21 -0
  303. data/plugins/commands/resume/command.rb +46 -0
  304. data/plugins/commands/resume/plugin.rb +20 -0
  305. data/plugins/commands/snapshot/command/delete.rb +50 -0
  306. data/plugins/commands/snapshot/command/list.rb +50 -0
  307. data/plugins/commands/snapshot/command/pop.rb +52 -0
  308. data/plugins/commands/snapshot/command/push.rb +36 -0
  309. data/plugins/commands/snapshot/command/push_shared.rb +58 -0
  310. data/plugins/commands/snapshot/command/restore.rb +67 -0
  311. data/plugins/commands/snapshot/command/root.rb +95 -0
  312. data/plugins/commands/snapshot/command/save.rb +75 -0
  313. data/plugins/commands/snapshot/plugin.rb +18 -0
  314. data/plugins/commands/ssh/command.rb +80 -0
  315. data/plugins/commands/ssh/plugin.rb +20 -0
  316. data/plugins/commands/ssh_config/command.rb +78 -0
  317. data/plugins/commands/ssh_config/plugin.rb +21 -0
  318. data/plugins/commands/status/command.rb +59 -0
  319. data/plugins/commands/status/plugin.rb +21 -0
  320. data/plugins/commands/suspend/command.rb +49 -0
  321. data/plugins/commands/suspend/plugin.rb +21 -0
  322. data/plugins/commands/up/command.rb +194 -0
  323. data/plugins/commands/up/middleware/store_box_metadata.rb +40 -0
  324. data/plugins/commands/up/plugin.rb +25 -0
  325. data/plugins/commands/up/start_mixins.rb +58 -0
  326. data/plugins/commands/upload/command.rb +239 -0
  327. data/plugins/commands/upload/plugin.rb +20 -0
  328. data/plugins/commands/validate/command.rb +107 -0
  329. data/plugins/commands/validate/plugin.rb +20 -0
  330. data/plugins/commands/version/command.rb +60 -0
  331. data/plugins/commands/version/plugin.rb +21 -0
  332. data/plugins/commands/winrm/command.rb +71 -0
  333. data/plugins/commands/winrm/plugin.rb +20 -0
  334. data/plugins/commands/winrm_config/command.rb +129 -0
  335. data/plugins/commands/winrm_config/plugin.rb +20 -0
  336. data/plugins/communicators/ssh/communicator.rb +898 -0
  337. data/plugins/communicators/ssh/plugin.rb +22 -0
  338. data/plugins/communicators/winrm/command_filter.rb +49 -0
  339. data/plugins/communicators/winrm/command_filters/cat.rb +26 -0
  340. data/plugins/communicators/winrm/command_filters/chmod.rb +20 -0
  341. data/plugins/communicators/winrm/command_filters/chown.rb +20 -0
  342. data/plugins/communicators/winrm/command_filters/grep.rb +26 -0
  343. data/plugins/communicators/winrm/command_filters/mkdir.rb +30 -0
  344. data/plugins/communicators/winrm/command_filters/rm.rb +50 -0
  345. data/plugins/communicators/winrm/command_filters/test.rb +68 -0
  346. data/plugins/communicators/winrm/command_filters/uname.rb +30 -0
  347. data/plugins/communicators/winrm/command_filters/which.rb +27 -0
  348. data/plugins/communicators/winrm/communicator.rb +230 -0
  349. data/plugins/communicators/winrm/config.rb +76 -0
  350. data/plugins/communicators/winrm/errors.rb +72 -0
  351. data/plugins/communicators/winrm/helper.rb +91 -0
  352. data/plugins/communicators/winrm/plugin.rb +69 -0
  353. data/plugins/communicators/winrm/shell.rb +267 -0
  354. data/plugins/communicators/winssh/communicator.rb +252 -0
  355. data/plugins/communicators/winssh/config.rb +37 -0
  356. data/plugins/communicators/winssh/plugin.rb +24 -0
  357. data/plugins/guests/alma/cap/flavor.rb +26 -0
  358. data/plugins/guests/alma/guest.rb +13 -0
  359. data/plugins/guests/alma/plugin.rb +23 -0
  360. data/plugins/guests/alpine/cap/change_host_name.rb +85 -0
  361. data/plugins/guests/alpine/cap/configure_networks.rb +67 -0
  362. data/plugins/guests/alpine/cap/halt.rb +24 -0
  363. data/plugins/guests/alpine/cap/nfs_client.rb +17 -0
  364. data/plugins/guests/alpine/cap/rsync.rb +20 -0
  365. data/plugins/guests/alpine/cap/smb.rb +16 -0
  366. data/plugins/guests/alpine/guest.rb +14 -0
  367. data/plugins/guests/alpine/plugin.rb +69 -0
  368. data/plugins/guests/alt/cap/change_host_name.rb +55 -0
  369. data/plugins/guests/alt/cap/configure_networks.rb +132 -0
  370. data/plugins/guests/alt/cap/flavor.rb +66 -0
  371. data/plugins/guests/alt/cap/network_scripts_dir.rb +14 -0
  372. data/plugins/guests/alt/cap/rsync.rb +16 -0
  373. data/plugins/guests/alt/guest.rb +12 -0
  374. data/plugins/guests/alt/plugin.rb +43 -0
  375. data/plugins/guests/amazon/cap/configure_networks.rb +26 -0
  376. data/plugins/guests/amazon/cap/flavor.rb +17 -0
  377. data/plugins/guests/amazon/guest.rb +12 -0
  378. data/plugins/guests/amazon/plugin.rb +28 -0
  379. data/plugins/guests/arch/cap/change_host_name.rb +18 -0
  380. data/plugins/guests/arch/cap/configure_networks.rb +81 -0
  381. data/plugins/guests/arch/cap/nfs.rb +36 -0
  382. data/plugins/guests/arch/cap/rsync.rb +19 -0
  383. data/plugins/guests/arch/cap/smb.rb +20 -0
  384. data/plugins/guests/arch/guest.rb +14 -0
  385. data/plugins/guests/arch/plugin.rb +53 -0
  386. data/plugins/guests/atomic/cap/change_host_name.rb +18 -0
  387. data/plugins/guests/atomic/cap/docker.rb +14 -0
  388. data/plugins/guests/atomic/guest.rb +14 -0
  389. data/plugins/guests/atomic/plugin.rb +28 -0
  390. data/plugins/guests/bsd/cap/file_system.rb +80 -0
  391. data/plugins/guests/bsd/cap/halt.rb +19 -0
  392. data/plugins/guests/bsd/cap/mount_virtualbox_shared_folder.rb +19 -0
  393. data/plugins/guests/bsd/cap/nfs.rb +50 -0
  394. data/plugins/guests/bsd/cap/public_key.rb +69 -0
  395. data/plugins/guests/bsd/guest.rb +12 -0
  396. data/plugins/guests/bsd/plugin.rb +58 -0
  397. data/plugins/guests/centos/cap/flavor.rb +32 -0
  398. data/plugins/guests/centos/guest.rb +14 -0
  399. data/plugins/guests/centos/plugin.rb +23 -0
  400. data/plugins/guests/coreos/cap/change_host_name.rb +41 -0
  401. data/plugins/guests/coreos/cap/configure_networks.rb +138 -0
  402. data/plugins/guests/coreos/cap/docker.rb +14 -0
  403. data/plugins/guests/coreos/guest.rb +14 -0
  404. data/plugins/guests/coreos/plugin.rb +33 -0
  405. data/plugins/guests/darwin/cap/change_host_name.rb +43 -0
  406. data/plugins/guests/darwin/cap/choose_addressable_ip_addr.rb +23 -0
  407. data/plugins/guests/darwin/cap/configure_networks.rb +126 -0
  408. data/plugins/guests/darwin/cap/darwin_version.rb +43 -0
  409. data/plugins/guests/darwin/cap/halt.rb +21 -0
  410. data/plugins/guests/darwin/cap/mount_smb_shared_folder.rb +46 -0
  411. data/plugins/guests/darwin/cap/mount_vmware_shared_folder.rb +135 -0
  412. data/plugins/guests/darwin/cap/rsync.rb +14 -0
  413. data/plugins/guests/darwin/cap/shell_expand_guest_path.rb +30 -0
  414. data/plugins/guests/darwin/cap/verify_vmware_hgfs.rb +15 -0
  415. data/plugins/guests/darwin/guest.rb +18 -0
  416. data/plugins/guests/darwin/plugin.rb +93 -0
  417. data/plugins/guests/debian/cap/change_host_name.rb +110 -0
  418. data/plugins/guests/debian/cap/configure_networks.rb +205 -0
  419. data/plugins/guests/debian/cap/nfs.rb +19 -0
  420. data/plugins/guests/debian/cap/rsync.rb +18 -0
  421. data/plugins/guests/debian/cap/smb.rb +20 -0
  422. data/plugins/guests/debian/guest.rb +13 -0
  423. data/plugins/guests/debian/plugin.rb +43 -0
  424. data/plugins/guests/dragonflybsd/guest.rb +12 -0
  425. data/plugins/guests/dragonflybsd/plugin.rb +18 -0
  426. data/plugins/guests/elementary/guest.rb +13 -0
  427. data/plugins/guests/elementary/plugin.rb +18 -0
  428. data/plugins/guests/esxi/cap/change_host_name.rb +16 -0
  429. data/plugins/guests/esxi/cap/configure_networks.rb +41 -0
  430. data/plugins/guests/esxi/cap/halt.rb +19 -0
  431. data/plugins/guests/esxi/cap/mount_nfs_folder.rb +43 -0
  432. data/plugins/guests/esxi/cap/public_key.rb +68 -0
  433. data/plugins/guests/esxi/guest.rb +14 -0
  434. data/plugins/guests/esxi/plugin.rb +49 -0
  435. data/plugins/guests/fedora/cap/flavor.rb +26 -0
  436. data/plugins/guests/fedora/guest.rb +14 -0
  437. data/plugins/guests/fedora/plugin.rb +23 -0
  438. data/plugins/guests/freebsd/cap/change_host_name.rb +34 -0
  439. data/plugins/guests/freebsd/cap/configure_networks.rb +70 -0
  440. data/plugins/guests/freebsd/cap/mount_virtualbox_shared_folder.rb +79 -0
  441. data/plugins/guests/freebsd/cap/rsync.rb +18 -0
  442. data/plugins/guests/freebsd/cap/shell_expand_guest_path.rb +31 -0
  443. data/plugins/guests/freebsd/guest.rb +17 -0
  444. data/plugins/guests/freebsd/plugin.rb +68 -0
  445. data/plugins/guests/funtoo/cap/configure_networks.rb +50 -0
  446. data/plugins/guests/funtoo/guest.rb +12 -0
  447. data/plugins/guests/funtoo/plugin.rb +23 -0
  448. data/plugins/guests/gentoo/cap/change_host_name.rb +27 -0
  449. data/plugins/guests/gentoo/cap/configure_networks.rb +92 -0
  450. data/plugins/guests/gentoo/guest.rb +12 -0
  451. data/plugins/guests/gentoo/plugin.rb +28 -0
  452. data/plugins/guests/haiku/cap/change_host_name.rb +36 -0
  453. data/plugins/guests/haiku/cap/halt.rb +19 -0
  454. data/plugins/guests/haiku/cap/insert_public_key.rb +24 -0
  455. data/plugins/guests/haiku/cap/remove_public_key.rb +24 -0
  456. data/plugins/guests/haiku/cap/rsync.rb +22 -0
  457. data/plugins/guests/haiku/guest.rb +14 -0
  458. data/plugins/guests/haiku/plugin.rb +53 -0
  459. data/plugins/guests/kali/guest.rb +13 -0
  460. data/plugins/guests/kali/plugin.rb +18 -0
  461. data/plugins/guests/linux/cap/change_host_name.rb +49 -0
  462. data/plugins/guests/linux/cap/choose_addressable_ip_addr.rb +22 -0
  463. data/plugins/guests/linux/cap/file_system.rb +82 -0
  464. data/plugins/guests/linux/cap/halt.rb +27 -0
  465. data/plugins/guests/linux/cap/mount_smb_shared_folder.rb +95 -0
  466. data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +78 -0
  467. data/plugins/guests/linux/cap/network_interfaces.rb +89 -0
  468. data/plugins/guests/linux/cap/nfs.rb +51 -0
  469. data/plugins/guests/linux/cap/persist_mount_shared_folder.rb +77 -0
  470. data/plugins/guests/linux/cap/port.rb +14 -0
  471. data/plugins/guests/linux/cap/public_key.rb +65 -0
  472. data/plugins/guests/linux/cap/read_ip_address.rb +28 -0
  473. data/plugins/guests/linux/cap/reboot.rb +74 -0
  474. data/plugins/guests/linux/cap/rsync.rb +14 -0
  475. data/plugins/guests/linux/cap/shell_expand_guest_path.rb +35 -0
  476. data/plugins/guests/linux/guest.rb +26 -0
  477. data/plugins/guests/linux/plugin.rb +139 -0
  478. data/plugins/guests/mint/guest.rb +13 -0
  479. data/plugins/guests/mint/plugin.rb +18 -0
  480. data/plugins/guests/netbsd/cap/change_host_name.rb +20 -0
  481. data/plugins/guests/netbsd/cap/configure_networks.rb +56 -0
  482. data/plugins/guests/netbsd/cap/rsync.rb +23 -0
  483. data/plugins/guests/netbsd/cap/shell_expand_guest_path.rb +30 -0
  484. data/plugins/guests/netbsd/guest.rb +14 -0
  485. data/plugins/guests/netbsd/plugin.rb +58 -0
  486. data/plugins/guests/nixos/cap/change_host_name.rb +47 -0
  487. data/plugins/guests/nixos/cap/configure_networks.rb +135 -0
  488. data/plugins/guests/nixos/cap/nfs_client.rb +14 -0
  489. data/plugins/guests/nixos/guest.rb +20 -0
  490. data/plugins/guests/nixos/plugin.rb +33 -0
  491. data/plugins/guests/omnios/cap/change_host_name.rb +23 -0
  492. data/plugins/guests/omnios/cap/mount_nfs_folder.rb +24 -0
  493. data/plugins/guests/omnios/cap/rsync.rb +14 -0
  494. data/plugins/guests/omnios/guest.rb +12 -0
  495. data/plugins/guests/omnios/plugin.rb +33 -0
  496. data/plugins/guests/openbsd/cap/change_host_name.rb +35 -0
  497. data/plugins/guests/openbsd/cap/configure_networks.rb +49 -0
  498. data/plugins/guests/openbsd/cap/halt.rb +22 -0
  499. data/plugins/guests/openbsd/cap/rsync.rb +32 -0
  500. data/plugins/guests/openbsd/cap/shell_expand_guest_path.rb +30 -0
  501. data/plugins/guests/openbsd/guest.rb +14 -0
  502. data/plugins/guests/openbsd/plugin.rb +63 -0
  503. data/plugins/guests/openwrt/cap/change_host_name.rb +22 -0
  504. data/plugins/guests/openwrt/cap/halt.rb +19 -0
  505. data/plugins/guests/openwrt/cap/insert_public_key.rb +23 -0
  506. data/plugins/guests/openwrt/cap/remove_public_key.rb +25 -0
  507. data/plugins/guests/openwrt/cap/rsync.rb +38 -0
  508. data/plugins/guests/openwrt/guest.rb +26 -0
  509. data/plugins/guests/openwrt/plugin.rb +64 -0
  510. data/plugins/guests/photon/cap/change_host_name.rb +22 -0
  511. data/plugins/guests/photon/cap/configure_networks.rb +33 -0
  512. data/plugins/guests/photon/cap/docker.rb +14 -0
  513. data/plugins/guests/photon/guest.rb +12 -0
  514. data/plugins/guests/photon/plugin.rb +33 -0
  515. data/plugins/guests/pld/cap/change_host_name.rb +26 -0
  516. data/plugins/guests/pld/cap/flavor.rb +14 -0
  517. data/plugins/guests/pld/cap/network_scripts_dir.rb +14 -0
  518. data/plugins/guests/pld/guest.rb +12 -0
  519. data/plugins/guests/pld/plugin.rb +33 -0
  520. data/plugins/guests/redhat/cap/change_host_name.rb +59 -0
  521. data/plugins/guests/redhat/cap/configure_networks.rb +113 -0
  522. data/plugins/guests/redhat/cap/flavor.rb +32 -0
  523. data/plugins/guests/redhat/cap/network_scripts_dir.rb +18 -0
  524. data/plugins/guests/redhat/cap/nfs_client.rb +33 -0
  525. data/plugins/guests/redhat/cap/rsync.rb +20 -0
  526. data/plugins/guests/redhat/cap/smb.rb +23 -0
  527. data/plugins/guests/redhat/guest.rb +12 -0
  528. data/plugins/guests/redhat/plugin.rb +53 -0
  529. data/plugins/guests/rocky/cap/flavor.rb +26 -0
  530. data/plugins/guests/rocky/guest.rb +13 -0
  531. data/plugins/guests/rocky/plugin.rb +23 -0
  532. data/plugins/guests/slackware/cap/change_host_name.rb +24 -0
  533. data/plugins/guests/slackware/cap/configure_networks.rb +51 -0
  534. data/plugins/guests/slackware/guest.rb +12 -0
  535. data/plugins/guests/slackware/plugin.rb +28 -0
  536. data/plugins/guests/smartos/cap/change_host_name.rb +29 -0
  537. data/plugins/guests/smartos/cap/configure_networks.rb +30 -0
  538. data/plugins/guests/smartos/cap/halt.rb +25 -0
  539. data/plugins/guests/smartos/cap/insert_public_key.rb +31 -0
  540. data/plugins/guests/smartos/cap/mount_nfs.rb +31 -0
  541. data/plugins/guests/smartos/cap/remove_public_key.rb +28 -0
  542. data/plugins/guests/smartos/cap/rsync.rb +36 -0
  543. data/plugins/guests/smartos/config.rb +18 -0
  544. data/plugins/guests/smartos/guest.rb +14 -0
  545. data/plugins/guests/smartos/plugin.rb +74 -0
  546. data/plugins/guests/solaris/cap/change_host_name.rb +20 -0
  547. data/plugins/guests/solaris/cap/configure_networks.rb +28 -0
  548. data/plugins/guests/solaris/cap/file_system.rb +80 -0
  549. data/plugins/guests/solaris/cap/halt.rb +25 -0
  550. data/plugins/guests/solaris/cap/insert_public_key.rb +25 -0
  551. data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +44 -0
  552. data/plugins/guests/solaris/cap/remove_public_key.rb +25 -0
  553. data/plugins/guests/solaris/cap/rsync.rb +36 -0
  554. data/plugins/guests/solaris/config.rb +34 -0
  555. data/plugins/guests/solaris/guest.rb +17 -0
  556. data/plugins/guests/solaris/plugin.rb +88 -0
  557. data/plugins/guests/solaris11/cap/change_host_name.rb +26 -0
  558. data/plugins/guests/solaris11/cap/configure_networks.rb +37 -0
  559. data/plugins/guests/solaris11/config.rb +37 -0
  560. data/plugins/guests/solaris11/guest.rb +22 -0
  561. data/plugins/guests/solaris11/plugin.rb +42 -0
  562. data/plugins/guests/suse/cap/change_host_name.rb +48 -0
  563. data/plugins/guests/suse/cap/configure_networks.rb +53 -0
  564. data/plugins/guests/suse/cap/halt.rb +23 -0
  565. data/plugins/guests/suse/cap/network_scripts_dir.rb +14 -0
  566. data/plugins/guests/suse/cap/nfs_client.rb +18 -0
  567. data/plugins/guests/suse/cap/rsync.rb +18 -0
  568. data/plugins/guests/suse/guest.rb +12 -0
  569. data/plugins/guests/suse/plugin.rb +53 -0
  570. data/plugins/guests/tinycore/cap/change_host_name.rb +16 -0
  571. data/plugins/guests/tinycore/cap/configure_networks.rb +29 -0
  572. data/plugins/guests/tinycore/cap/halt.rb +19 -0
  573. data/plugins/guests/tinycore/cap/mount_nfs.rb +44 -0
  574. data/plugins/guests/tinycore/cap/rsync.rb +20 -0
  575. data/plugins/guests/tinycore/guest.rb +13 -0
  576. data/plugins/guests/tinycore/plugin.rb +43 -0
  577. data/plugins/guests/trisquel/guest.rb +12 -0
  578. data/plugins/guests/trisquel/plugin.rb +18 -0
  579. data/plugins/guests/ubuntu/guest.rb +13 -0
  580. data/plugins/guests/ubuntu/plugin.rb +18 -0
  581. data/plugins/guests/windows/cap/change_host_name.rb +36 -0
  582. data/plugins/guests/windows/cap/choose_addressable_ip_addr.rb +23 -0
  583. data/plugins/guests/windows/cap/configure_networks.rb +83 -0
  584. data/plugins/guests/windows/cap/file_system.rb +68 -0
  585. data/plugins/guests/windows/cap/halt.rb +19 -0
  586. data/plugins/guests/windows/cap/mount_shared_folder.rb +60 -0
  587. data/plugins/guests/windows/cap/public_key.rb +87 -0
  588. data/plugins/guests/windows/cap/reboot.rb +63 -0
  589. data/plugins/guests/windows/cap/rsync.rb +29 -0
  590. data/plugins/guests/windows/config.rb +26 -0
  591. data/plugins/guests/windows/errors.rb +25 -0
  592. data/plugins/guests/windows/guest.rb +13 -0
  593. data/plugins/guests/windows/guest_network.rb +128 -0
  594. data/plugins/guests/windows/plugin.rb +116 -0
  595. data/plugins/guests/windows/scripts/mount_volume.ps1.erb +48 -0
  596. data/plugins/guests/windows/scripts/reboot_detect.ps1 +50 -0
  597. data/plugins/guests/windows/scripts/set_work_network.ps1 +9 -0
  598. data/plugins/guests/windows/scripts/winrs_v3_get_adapters.ps1 +14 -0
  599. data/plugins/hosts/alt/cap/nfs.rb +46 -0
  600. data/plugins/hosts/alt/host.rb +14 -0
  601. data/plugins/hosts/alt/plugin.rb +35 -0
  602. data/plugins/hosts/arch/cap/nfs.rb +22 -0
  603. data/plugins/hosts/arch/host.rb +14 -0
  604. data/plugins/hosts/arch/plugin.rb +35 -0
  605. data/plugins/hosts/bsd/cap/nfs.rb +218 -0
  606. data/plugins/hosts/bsd/cap/path.rb +14 -0
  607. data/plugins/hosts/bsd/cap/ssh.rb +19 -0
  608. data/plugins/hosts/bsd/host.rb +15 -0
  609. data/plugins/hosts/bsd/plugin.rb +63 -0
  610. data/plugins/hosts/darwin/cap/configured_ip_addresses.rb +21 -0
  611. data/plugins/hosts/darwin/cap/fs_iso.rb +52 -0
  612. data/plugins/hosts/darwin/cap/nfs.rb +14 -0
  613. data/plugins/hosts/darwin/cap/path.rb +66 -0
  614. data/plugins/hosts/darwin/cap/provider_install_virtualbox.rb +64 -0
  615. data/plugins/hosts/darwin/cap/rdp.rb +64 -0
  616. data/plugins/hosts/darwin/cap/smb.rb +128 -0
  617. data/plugins/hosts/darwin/cap/version.rb +26 -0
  618. data/plugins/hosts/darwin/host.rb +14 -0
  619. data/plugins/hosts/darwin/plugin.rb +83 -0
  620. data/plugins/hosts/darwin/scripts/install_virtualbox.sh +18 -0
  621. data/plugins/hosts/freebsd/cap/nfs.rb +34 -0
  622. data/plugins/hosts/freebsd/host.rb +15 -0
  623. data/plugins/hosts/freebsd/plugin.rb +34 -0
  624. data/plugins/hosts/gentoo/cap/nfs.rb +42 -0
  625. data/plugins/hosts/gentoo/host.rb +14 -0
  626. data/plugins/hosts/gentoo/plugin.rb +31 -0
  627. data/plugins/hosts/linux/cap/fs_iso.rb +52 -0
  628. data/plugins/hosts/linux/cap/nfs.rb +296 -0
  629. data/plugins/hosts/linux/cap/rdp.rb +59 -0
  630. data/plugins/hosts/linux/cap/ssh.rb +19 -0
  631. data/plugins/hosts/linux/host.rb +15 -0
  632. data/plugins/hosts/linux/plugin.rb +70 -0
  633. data/plugins/hosts/null/host.rb +15 -0
  634. data/plugins/hosts/null/plugin.rb +18 -0
  635. data/plugins/hosts/redhat/cap/nfs.rb +58 -0
  636. data/plugins/hosts/redhat/host.rb +31 -0
  637. data/plugins/hosts/redhat/plugin.rb +30 -0
  638. data/plugins/hosts/slackware/cap/nfs.rb +18 -0
  639. data/plugins/hosts/slackware/host.rb +15 -0
  640. data/plugins/hosts/slackware/plugin.rb +30 -0
  641. data/plugins/hosts/suse/cap/nfs.rb +22 -0
  642. data/plugins/hosts/suse/host.rb +30 -0
  643. data/plugins/hosts/suse/plugin.rb +33 -0
  644. data/plugins/hosts/void/cap/nfs.rb +27 -0
  645. data/plugins/hosts/void/host.rb +23 -0
  646. data/plugins/hosts/void/plugin.rb +33 -0
  647. data/plugins/hosts/windows/cap/configured_ip_addresses.rb +32 -0
  648. data/plugins/hosts/windows/cap/fs_iso.rb +51 -0
  649. data/plugins/hosts/windows/cap/nfs.rb +14 -0
  650. data/plugins/hosts/windows/cap/provider_install_virtualbox.rb +65 -0
  651. data/plugins/hosts/windows/cap/ps.rb +50 -0
  652. data/plugins/hosts/windows/cap/rdp.rb +33 -0
  653. data/plugins/hosts/windows/cap/smb.rb +203 -0
  654. data/plugins/hosts/windows/cap/ssh.rb +29 -0
  655. data/plugins/hosts/windows/host.rb +26 -0
  656. data/plugins/hosts/windows/plugin.rb +83 -0
  657. data/plugins/hosts/windows/scripts/check_credentials.ps1 +37 -0
  658. data/plugins/hosts/windows/scripts/host_info.ps1 +24 -0
  659. data/plugins/hosts/windows/scripts/install_virtualbox.ps1 +40 -0
  660. data/plugins/hosts/windows/scripts/set_share.ps1 +40 -0
  661. data/plugins/hosts/windows/scripts/set_ssh_key_permissions.ps1 +20 -0
  662. data/plugins/hosts/windows/scripts/unset_share.ps1 +13 -0
  663. data/plugins/hosts/windows/scripts/utils/VagrantSSH/VagrantSSH.psm1 +29 -0
  664. data/plugins/kernel_v1/config/nfs.rb +23 -0
  665. data/plugins/kernel_v1/config/package.rb +20 -0
  666. data/plugins/kernel_v1/config/ssh.rb +50 -0
  667. data/plugins/kernel_v1/config/vagrant.rb +34 -0
  668. data/plugins/kernel_v1/config/vm.rb +191 -0
  669. data/plugins/kernel_v1/plugin.rb +47 -0
  670. data/plugins/kernel_v2/config/cloud_init.rb +136 -0
  671. data/plugins/kernel_v2/config/disk.rb +224 -0
  672. data/plugins/kernel_v2/config/package.rb +24 -0
  673. data/plugins/kernel_v2/config/push.rb +155 -0
  674. data/plugins/kernel_v2/config/ssh.rb +93 -0
  675. data/plugins/kernel_v2/config/ssh_connect.rb +194 -0
  676. data/plugins/kernel_v2/config/trigger.rb +214 -0
  677. data/plugins/kernel_v2/config/vagrant.rb +99 -0
  678. data/plugins/kernel_v2/config/vm.rb +1062 -0
  679. data/plugins/kernel_v2/config/vm_provisioner.rb +202 -0
  680. data/plugins/kernel_v2/config/vm_subvm.rb +33 -0
  681. data/plugins/kernel_v2/config/vm_trigger.rb +297 -0
  682. data/plugins/kernel_v2/plugin.rb +71 -0
  683. data/plugins/providers/docker/action/build.rb +99 -0
  684. data/plugins/providers/docker/action/compare_synced_folders.rb +65 -0
  685. data/plugins/providers/docker/action/connect_networks.rb +80 -0
  686. data/plugins/providers/docker/action/create.rb +162 -0
  687. data/plugins/providers/docker/action/destroy.rb +34 -0
  688. data/plugins/providers/docker/action/destroy_build_image.rb +51 -0
  689. data/plugins/providers/docker/action/destroy_network.rb +53 -0
  690. data/plugins/providers/docker/action/forwarded_ports.rb +36 -0
  691. data/plugins/providers/docker/action/has_ssh.rb +21 -0
  692. data/plugins/providers/docker/action/host_machine.rb +75 -0
  693. data/plugins/providers/docker/action/host_machine_build_dir.rb +48 -0
  694. data/plugins/providers/docker/action/host_machine_port_checker.rb +34 -0
  695. data/plugins/providers/docker/action/host_machine_port_warning.rb +40 -0
  696. data/plugins/providers/docker/action/host_machine_required.rb +20 -0
  697. data/plugins/providers/docker/action/host_machine_sync_folders.rb +175 -0
  698. data/plugins/providers/docker/action/host_machine_sync_folders_disable.rb +91 -0
  699. data/plugins/providers/docker/action/init_state.rb +23 -0
  700. data/plugins/providers/docker/action/is_build.rb +19 -0
  701. data/plugins/providers/docker/action/is_host_machine_created.rb +32 -0
  702. data/plugins/providers/docker/action/login.rb +51 -0
  703. data/plugins/providers/docker/action/prepare_forwarded_port_collision_params.rb +64 -0
  704. data/plugins/providers/docker/action/prepare_networks.rb +372 -0
  705. data/plugins/providers/docker/action/prepare_nfs_settings.rb +60 -0
  706. data/plugins/providers/docker/action/prepare_nfs_valid_ids.rb +22 -0
  707. data/plugins/providers/docker/action/prepare_ssh.rb +48 -0
  708. data/plugins/providers/docker/action/pull.rb +30 -0
  709. data/plugins/providers/docker/action/start.rb +24 -0
  710. data/plugins/providers/docker/action/stop.rb +24 -0
  711. data/plugins/providers/docker/action/wait_for_running.rb +70 -0
  712. data/plugins/providers/docker/action.rb +319 -0
  713. data/plugins/providers/docker/cap/has_communicator.rb +14 -0
  714. data/plugins/providers/docker/cap/proxy_machine.rb +15 -0
  715. data/plugins/providers/docker/cap/public_address.rb +26 -0
  716. data/plugins/providers/docker/command/exec.rb +112 -0
  717. data/plugins/providers/docker/command/logs.rb +111 -0
  718. data/plugins/providers/docker/command/run.rb +76 -0
  719. data/plugins/providers/docker/communicator.rb +199 -0
  720. data/plugins/providers/docker/config.rb +362 -0
  721. data/plugins/providers/docker/driver/compose.rb +315 -0
  722. data/plugins/providers/docker/driver.rb +416 -0
  723. data/plugins/providers/docker/errors.rb +108 -0
  724. data/plugins/providers/docker/executor/local.rb +48 -0
  725. data/plugins/providers/docker/executor/vagrant.rb +88 -0
  726. data/plugins/providers/docker/hostmachine/Vagrantfile +3 -0
  727. data/plugins/providers/docker/plugin.rb +89 -0
  728. data/plugins/providers/docker/provider.rb +215 -0
  729. data/plugins/providers/docker/synced_folder.rb +35 -0
  730. data/plugins/providers/hyperv/action/check_access.rb +27 -0
  731. data/plugins/providers/hyperv/action/check_enabled.rb +25 -0
  732. data/plugins/providers/hyperv/action/configure.rb +115 -0
  733. data/plugins/providers/hyperv/action/delete_vm.rb +28 -0
  734. data/plugins/providers/hyperv/action/export.rb +45 -0
  735. data/plugins/providers/hyperv/action/import.rb +86 -0
  736. data/plugins/providers/hyperv/action/is_windows.rb +19 -0
  737. data/plugins/providers/hyperv/action/message_will_not_destroy.rb +20 -0
  738. data/plugins/providers/hyperv/action/net_set_mac.rb +23 -0
  739. data/plugins/providers/hyperv/action/net_set_vlan.rb +23 -0
  740. data/plugins/providers/hyperv/action/package.rb +19 -0
  741. data/plugins/providers/hyperv/action/package_metadata_json.rb +37 -0
  742. data/plugins/providers/hyperv/action/package_setup_files.rb +19 -0
  743. data/plugins/providers/hyperv/action/package_setup_folders.rb +21 -0
  744. data/plugins/providers/hyperv/action/package_vagrantfile.rb +37 -0
  745. data/plugins/providers/hyperv/action/read_guest_ip.rb +45 -0
  746. data/plugins/providers/hyperv/action/read_state.rb +33 -0
  747. data/plugins/providers/hyperv/action/resume_vm.rb +20 -0
  748. data/plugins/providers/hyperv/action/set_name.rb +46 -0
  749. data/plugins/providers/hyperv/action/snapshot_delete.rb +30 -0
  750. data/plugins/providers/hyperv/action/snapshot_restore.rb +26 -0
  751. data/plugins/providers/hyperv/action/snapshot_save.rb +30 -0
  752. data/plugins/providers/hyperv/action/start_instance.rb +20 -0
  753. data/plugins/providers/hyperv/action/stop_instance.rb +20 -0
  754. data/plugins/providers/hyperv/action/suspend_vm.rb +20 -0
  755. data/plugins/providers/hyperv/action/wait_for_ip_address.rb +62 -0
  756. data/plugins/providers/hyperv/action.rb +326 -0
  757. data/plugins/providers/hyperv/cap/cleanup_disks.rb +92 -0
  758. data/plugins/providers/hyperv/cap/configure_disks.rb +248 -0
  759. data/plugins/providers/hyperv/cap/public_address.rb +18 -0
  760. data/plugins/providers/hyperv/cap/snapshot_list.rb +14 -0
  761. data/plugins/providers/hyperv/cap/validate_disk_ext.rb +37 -0
  762. data/plugins/providers/hyperv/config.rb +148 -0
  763. data/plugins/providers/hyperv/driver.rb +368 -0
  764. data/plugins/providers/hyperv/errors.rb +49 -0
  765. data/plugins/providers/hyperv/plugin.rb +74 -0
  766. data/plugins/providers/hyperv/provider.rb +116 -0
  767. data/plugins/providers/hyperv/scripts/add_dvd.ps1 +18 -0
  768. data/plugins/providers/hyperv/scripts/attach_disk_drive.ps1 +31 -0
  769. data/plugins/providers/hyperv/scripts/check_hyperv.ps1 +11 -0
  770. data/plugins/providers/hyperv/scripts/check_hyperv_access.ps1 +17 -0
  771. data/plugins/providers/hyperv/scripts/clone_vhd.ps1 +21 -0
  772. data/plugins/providers/hyperv/scripts/configure_vm.ps1 +130 -0
  773. data/plugins/providers/hyperv/scripts/create_snapshot.ps1 +27 -0
  774. data/plugins/providers/hyperv/scripts/delete_snapshot.ps1 +19 -0
  775. data/plugins/providers/hyperv/scripts/delete_vm.ps1 +22 -0
  776. data/plugins/providers/hyperv/scripts/dismount_vhd.ps1 +16 -0
  777. data/plugins/providers/hyperv/scripts/export_vm.ps1 +32 -0
  778. data/plugins/providers/hyperv/scripts/file_sync.ps1 +123 -0
  779. data/plugins/providers/hyperv/scripts/get_network_config.ps1 +68 -0
  780. data/plugins/providers/hyperv/scripts/get_network_mac.ps1 +35 -0
  781. data/plugins/providers/hyperv/scripts/get_scsi_controller.ps1 +19 -0
  782. data/plugins/providers/hyperv/scripts/get_switches.ps1 +13 -0
  783. data/plugins/providers/hyperv/scripts/get_vhd.ps1 +19 -0
  784. data/plugins/providers/hyperv/scripts/get_vm_status.ps1 +52 -0
  785. data/plugins/providers/hyperv/scripts/has_vmcx_support.ps1 +12 -0
  786. data/plugins/providers/hyperv/scripts/import_vm.ps1 +40 -0
  787. data/plugins/providers/hyperv/scripts/list_hdds.ps1 +20 -0
  788. data/plugins/providers/hyperv/scripts/list_snapshots.ps1 +22 -0
  789. data/plugins/providers/hyperv/scripts/new_vhd.ps1 +34 -0
  790. data/plugins/providers/hyperv/scripts/remove_disk_drive.ps1 +28 -0
  791. data/plugins/providers/hyperv/scripts/remove_dvd.ps1 +21 -0
  792. data/plugins/providers/hyperv/scripts/resize_disk_drive.ps1 +21 -0
  793. data/plugins/providers/hyperv/scripts/restore_snapshot.ps1 +20 -0
  794. data/plugins/providers/hyperv/scripts/resume_vm.ps1 +19 -0
  795. data/plugins/providers/hyperv/scripts/set_enhanced_session_transport_type.ps1 +36 -0
  796. data/plugins/providers/hyperv/scripts/set_name.ps1 +27 -0
  797. data/plugins/providers/hyperv/scripts/set_network_mac.ps1 +21 -0
  798. data/plugins/providers/hyperv/scripts/set_network_vlan.ps1 +19 -0
  799. data/plugins/providers/hyperv/scripts/set_vm_integration_services.ps1 +30 -0
  800. data/plugins/providers/hyperv/scripts/start_vm.ps1 +29 -0
  801. data/plugins/providers/hyperv/scripts/stop_vm.ps1 +20 -0
  802. data/plugins/providers/hyperv/scripts/suspend_vm.ps1 +19 -0
  803. data/plugins/providers/hyperv/scripts/utils/VagrantMessages/VagrantMessages.psm1 +27 -0
  804. data/plugins/providers/hyperv/scripts/utils/VagrantVM/VagrantVM.psm1 +776 -0
  805. data/plugins/providers/virtualbox/action/boot.rb +26 -0
  806. data/plugins/providers/virtualbox/action/check_accessible.rb +26 -0
  807. data/plugins/providers/virtualbox/action/check_created.rb +24 -0
  808. data/plugins/providers/virtualbox/action/check_guest_additions.rb +58 -0
  809. data/plugins/providers/virtualbox/action/check_running.rb +24 -0
  810. data/plugins/providers/virtualbox/action/check_virtualbox.rb +28 -0
  811. data/plugins/providers/virtualbox/action/clean_machine_folder.rb +55 -0
  812. data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +23 -0
  813. data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +34 -0
  814. data/plugins/providers/virtualbox/action/created.rb +23 -0
  815. data/plugins/providers/virtualbox/action/customize.rb +48 -0
  816. data/plugins/providers/virtualbox/action/destroy.rb +22 -0
  817. data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +26 -0
  818. data/plugins/providers/virtualbox/action/discard_state.rb +23 -0
  819. data/plugins/providers/virtualbox/action/export.rb +54 -0
  820. data/plugins/providers/virtualbox/action/forced_halt.rb +28 -0
  821. data/plugins/providers/virtualbox/action/forward_ports.rb +92 -0
  822. data/plugins/providers/virtualbox/action/import.rb +110 -0
  823. data/plugins/providers/virtualbox/action/import_master.rb +83 -0
  824. data/plugins/providers/virtualbox/action/is_paused.rb +23 -0
  825. data/plugins/providers/virtualbox/action/is_running.rb +23 -0
  826. data/plugins/providers/virtualbox/action/is_saved.rb +23 -0
  827. data/plugins/providers/virtualbox/action/match_mac_address.rb +30 -0
  828. data/plugins/providers/virtualbox/action/message_already_running.rb +19 -0
  829. data/plugins/providers/virtualbox/action/message_not_created.rb +19 -0
  830. data/plugins/providers/virtualbox/action/message_not_running.rb +19 -0
  831. data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +20 -0
  832. data/plugins/providers/virtualbox/action/network.rb +638 -0
  833. data/plugins/providers/virtualbox/action/network_fix_ipv6.rb +87 -0
  834. data/plugins/providers/virtualbox/action/package.rb +19 -0
  835. data/plugins/providers/virtualbox/action/package_setup_files.rb +19 -0
  836. data/plugins/providers/virtualbox/action/package_setup_folders.rb +21 -0
  837. data/plugins/providers/virtualbox/action/package_vagrantfile.rb +36 -0
  838. data/plugins/providers/virtualbox/action/prepare_clone_snapshot.rb +69 -0
  839. data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +38 -0
  840. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +162 -0
  841. data/plugins/providers/virtualbox/action/prepare_nfs_valid_ids.rb +20 -0
  842. data/plugins/providers/virtualbox/action/resume.rb +28 -0
  843. data/plugins/providers/virtualbox/action/sane_defaults.rb +92 -0
  844. data/plugins/providers/virtualbox/action/set_default_nic_type.rb +72 -0
  845. data/plugins/providers/virtualbox/action/set_name.rb +58 -0
  846. data/plugins/providers/virtualbox/action/setup_package_files.rb +20 -0
  847. data/plugins/providers/virtualbox/action/snapshot_delete.rb +37 -0
  848. data/plugins/providers/virtualbox/action/snapshot_restore.rb +33 -0
  849. data/plugins/providers/virtualbox/action/snapshot_save.rb +28 -0
  850. data/plugins/providers/virtualbox/action/suspend.rb +23 -0
  851. data/plugins/providers/virtualbox/action.rb +433 -0
  852. data/plugins/providers/virtualbox/cap/cleanup_disks.rb +86 -0
  853. data/plugins/providers/virtualbox/cap/configure_disks.rb +441 -0
  854. data/plugins/providers/virtualbox/cap/mount_options.rb +43 -0
  855. data/plugins/providers/virtualbox/cap/public_address.rb +18 -0
  856. data/plugins/providers/virtualbox/cap/validate_disk_ext.rb +37 -0
  857. data/plugins/providers/virtualbox/cap.rb +40 -0
  858. data/plugins/providers/virtualbox/config.rb +211 -0
  859. data/plugins/providers/virtualbox/driver/base.rb +530 -0
  860. data/plugins/providers/virtualbox/driver/meta.rb +212 -0
  861. data/plugins/providers/virtualbox/driver/version_4_0.rb +574 -0
  862. data/plugins/providers/virtualbox/driver/version_4_1.rb +699 -0
  863. data/plugins/providers/virtualbox/driver/version_4_2.rb +713 -0
  864. data/plugins/providers/virtualbox/driver/version_4_3.rb +757 -0
  865. data/plugins/providers/virtualbox/driver/version_5_0.rb +1022 -0
  866. data/plugins/providers/virtualbox/driver/version_5_1.rb +19 -0
  867. data/plugins/providers/virtualbox/driver/version_5_2.rb +19 -0
  868. data/plugins/providers/virtualbox/driver/version_6_0.rb +105 -0
  869. data/plugins/providers/virtualbox/driver/version_6_1.rb +42 -0
  870. data/plugins/providers/virtualbox/driver/version_7_0.rb +306 -0
  871. data/plugins/providers/virtualbox/driver/version_7_1.rb +19 -0
  872. data/plugins/providers/virtualbox/model/forwarded_port.rb +73 -0
  873. data/plugins/providers/virtualbox/model/storage_controller.rb +138 -0
  874. data/plugins/providers/virtualbox/model/storage_controller_array.rb +101 -0
  875. data/plugins/providers/virtualbox/plugin.rb +120 -0
  876. data/plugins/providers/virtualbox/provider.rb +133 -0
  877. data/plugins/providers/virtualbox/synced_folder.rb +153 -0
  878. data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +40 -0
  879. data/plugins/provisioners/ansible/cap/guest/alpine/ansible_install.rb +47 -0
  880. data/plugins/provisioners/ansible/cap/guest/arch/ansible_install.rb +44 -0
  881. data/plugins/provisioners/ansible/cap/guest/debian/ansible_install.rb +56 -0
  882. data/plugins/provisioners/ansible/cap/guest/facts.rb +27 -0
  883. data/plugins/provisioners/ansible/cap/guest/fedora/ansible_install.rb +43 -0
  884. data/plugins/provisioners/ansible/cap/guest/freebsd/ansible_install.rb +26 -0
  885. data/plugins/provisioners/ansible/cap/guest/pip/pip.rb +49 -0
  886. data/plugins/provisioners/ansible/cap/guest/posix/ansible_installed.rb +28 -0
  887. data/plugins/provisioners/ansible/cap/guest/redhat/ansible_install.rb +75 -0
  888. data/plugins/provisioners/ansible/cap/guest/suse/ansible_install.rb +26 -0
  889. data/plugins/provisioners/ansible/cap/guest/ubuntu/ansible_install.rb +42 -0
  890. data/plugins/provisioners/ansible/config/base.rb +157 -0
  891. data/plugins/provisioners/ansible/config/guest.rb +59 -0
  892. data/plugins/provisioners/ansible/config/host.rb +66 -0
  893. data/plugins/provisioners/ansible/constants.rb +17 -0
  894. data/plugins/provisioners/ansible/errors.rb +43 -0
  895. data/plugins/provisioners/ansible/helpers.rb +20 -0
  896. data/plugins/provisioners/ansible/plugin.rb +88 -0
  897. data/plugins/provisioners/ansible/provisioner/base.rb +405 -0
  898. data/plugins/provisioners/ansible/provisioner/guest.rb +197 -0
  899. data/plugins/provisioners/ansible/provisioner/host.rb +352 -0
  900. data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +24 -0
  901. data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +17 -0
  902. data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +37 -0
  903. data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +37 -0
  904. data/plugins/provisioners/cfengine/cap/suse/cfengine_install.rb +21 -0
  905. data/plugins/provisioners/cfengine/config.rb +127 -0
  906. data/plugins/provisioners/cfengine/plugin.rb +50 -0
  907. data/plugins/provisioners/cfengine/provisioner.rb +142 -0
  908. data/plugins/provisioners/chef/cap/debian/chef_install.rb +22 -0
  909. data/plugins/provisioners/chef/cap/freebsd/chef_install.rb +21 -0
  910. data/plugins/provisioners/chef/cap/freebsd/chef_installed.rb +27 -0
  911. data/plugins/provisioners/chef/cap/linux/chef_installed.rb +27 -0
  912. data/plugins/provisioners/chef/cap/omnios/chef_install.rb +23 -0
  913. data/plugins/provisioners/chef/cap/omnios/chef_installed.rb +28 -0
  914. data/plugins/provisioners/chef/cap/redhat/chef_install.rb +27 -0
  915. data/plugins/provisioners/chef/cap/suse/chef_install.rb +30 -0
  916. data/plugins/provisioners/chef/cap/windows/chef_install.rb +19 -0
  917. data/plugins/provisioners/chef/cap/windows/chef_installed.rb +24 -0
  918. data/plugins/provisioners/chef/command_builder.rb +87 -0
  919. data/plugins/provisioners/chef/config/base.rb +139 -0
  920. data/plugins/provisioners/chef/config/base_runner.rb +131 -0
  921. data/plugins/provisioners/chef/config/chef_apply.rb +53 -0
  922. data/plugins/provisioners/chef/config/chef_client.rb +77 -0
  923. data/plugins/provisioners/chef/config/chef_solo.rb +141 -0
  924. data/plugins/provisioners/chef/config/chef_zero.rb +133 -0
  925. data/plugins/provisioners/chef/installer.rb +51 -0
  926. data/plugins/provisioners/chef/omnibus.rb +40 -0
  927. data/plugins/provisioners/chef/plugin.rb +108 -0
  928. data/plugins/provisioners/chef/provisioner/base.rb +258 -0
  929. data/plugins/provisioners/chef/provisioner/chef_apply.rb +74 -0
  930. data/plugins/provisioners/chef/provisioner/chef_client.rb +179 -0
  931. data/plugins/provisioners/chef/provisioner/chef_solo.rb +244 -0
  932. data/plugins/provisioners/chef/provisioner/chef_zero.rb +123 -0
  933. data/plugins/provisioners/container/client.rb +206 -0
  934. data/plugins/provisioners/container/config.rb +86 -0
  935. data/plugins/provisioners/container/installer.rb +16 -0
  936. data/plugins/provisioners/container/plugin.rb +26 -0
  937. data/plugins/provisioners/container/provisioner.rb +31 -0
  938. data/plugins/provisioners/docker/cap/centos/docker_install.rb +44 -0
  939. data/plugins/provisioners/docker/cap/centos/docker_start_service.rb +27 -0
  940. data/plugins/provisioners/docker/cap/debian/docker_install.rb +21 -0
  941. data/plugins/provisioners/docker/cap/debian/docker_start_service.rb +16 -0
  942. data/plugins/provisioners/docker/cap/fedora/docker_install.rb +30 -0
  943. data/plugins/provisioners/docker/cap/linux/docker_configure_vagrant_user.rb +23 -0
  944. data/plugins/provisioners/docker/cap/linux/docker_daemon_running.rb +16 -0
  945. data/plugins/provisioners/docker/cap/linux/docker_installed.rb +29 -0
  946. data/plugins/provisioners/docker/cap/windows/docker_daemon_running.rb +16 -0
  947. data/plugins/provisioners/docker/client.rb +26 -0
  948. data/plugins/provisioners/docker/config.rb +19 -0
  949. data/plugins/provisioners/docker/installer.rb +37 -0
  950. data/plugins/provisioners/docker/plugin.rb +71 -0
  951. data/plugins/provisioners/docker/provisioner.rb +59 -0
  952. data/plugins/provisioners/file/config.rb +32 -0
  953. data/plugins/provisioners/file/plugin.rb +26 -0
  954. data/plugins/provisioners/file/provisioner.rb +46 -0
  955. data/plugins/provisioners/podman/cap/centos/podman_install.rb +38 -0
  956. data/plugins/provisioners/podman/cap/linux/podman_installed.rb +16 -0
  957. data/plugins/provisioners/podman/cap/redhat/podman_install.rb +29 -0
  958. data/plugins/provisioners/podman/client.rb +15 -0
  959. data/plugins/provisioners/podman/config.rb +31 -0
  960. data/plugins/provisioners/podman/installer.rb +36 -0
  961. data/plugins/provisioners/podman/plugin.rb +41 -0
  962. data/plugins/provisioners/podman/provisioner.rb +55 -0
  963. data/plugins/provisioners/puppet/config/puppet.rb +178 -0
  964. data/plugins/provisioners/puppet/config/puppet_server.rb +84 -0
  965. data/plugins/provisioners/puppet/plugin.rb +36 -0
  966. data/plugins/provisioners/puppet/provisioner/puppet.rb +336 -0
  967. data/plugins/provisioners/puppet/provisioner/puppet_server.rb +114 -0
  968. data/plugins/provisioners/salt/bootstrap_downloader.rb +62 -0
  969. data/plugins/provisioners/salt/config.rb +194 -0
  970. data/plugins/provisioners/salt/errors.rb +18 -0
  971. data/plugins/provisioners/salt/plugin.rb +25 -0
  972. data/plugins/provisioners/salt/provisioner.rb +499 -0
  973. data/plugins/provisioners/shell/config.rb +146 -0
  974. data/plugins/provisioners/shell/plugin.rb +26 -0
  975. data/plugins/provisioners/shell/provisioner.rb +368 -0
  976. data/plugins/pushes/atlas/config.rb +151 -0
  977. data/plugins/pushes/atlas/errors.rb +16 -0
  978. data/plugins/pushes/atlas/locales/en.yml +25 -0
  979. data/plugins/pushes/atlas/plugin.rb +38 -0
  980. data/plugins/pushes/atlas/push.rb +87 -0
  981. data/plugins/pushes/ftp/adapter.rb +147 -0
  982. data/plugins/pushes/ftp/config.rb +133 -0
  983. data/plugins/pushes/ftp/errors.rb +16 -0
  984. data/plugins/pushes/ftp/locales/en.yml +19 -0
  985. data/plugins/pushes/ftp/plugin.rb +36 -0
  986. data/plugins/pushes/ftp/push.rb +137 -0
  987. data/plugins/pushes/heroku/config.rb +77 -0
  988. data/plugins/pushes/heroku/errors.rb +24 -0
  989. data/plugins/pushes/heroku/locales/en.yml +33 -0
  990. data/plugins/pushes/heroku/plugin.rb +36 -0
  991. data/plugins/pushes/heroku/push.rb +147 -0
  992. data/plugins/pushes/local-exec/config.rb +80 -0
  993. data/plugins/pushes/local-exec/errors.rb +16 -0
  994. data/plugins/pushes/local-exec/locales/en.yml +26 -0
  995. data/plugins/pushes/local-exec/plugin.rb +36 -0
  996. data/plugins/pushes/local-exec/push.rb +91 -0
  997. data/plugins/pushes/noop/config.rb +19 -0
  998. data/plugins/pushes/noop/plugin.rb +25 -0
  999. data/plugins/pushes/noop/push.rb +12 -0
  1000. data/plugins/synced_folders/nfs/action_cleanup.rb +32 -0
  1001. data/plugins/synced_folders/nfs/config.rb +35 -0
  1002. data/plugins/synced_folders/nfs/plugin.rb +49 -0
  1003. data/plugins/synced_folders/nfs/synced_folder.rb +171 -0
  1004. data/plugins/synced_folders/rsync/command/rsync.rb +81 -0
  1005. data/plugins/synced_folders/rsync/command/rsync_auto.rb +244 -0
  1006. data/plugins/synced_folders/rsync/default_unix_cap.rb +49 -0
  1007. data/plugins/synced_folders/rsync/helper.rb +296 -0
  1008. data/plugins/synced_folders/rsync/plugin.rb +31 -0
  1009. data/plugins/synced_folders/rsync/synced_folder.rb +62 -0
  1010. data/plugins/synced_folders/smb/cap/default_fstab_modification.rb +14 -0
  1011. data/plugins/synced_folders/smb/cap/mount_options.rb +59 -0
  1012. data/plugins/synced_folders/smb/config.rb +26 -0
  1013. data/plugins/synced_folders/smb/errors.rb +65 -0
  1014. data/plugins/synced_folders/smb/plugin.rb +60 -0
  1015. data/plugins/synced_folders/smb/synced_folder.rb +189 -0
  1016. data/plugins/synced_folders/unix_mount_helpers.rb +122 -0
  1017. data/scripts/install_rvm +19 -0
  1018. data/scripts/setup_tests +49 -0
  1019. data/scripts/sign.sh +29 -0
  1020. data/scripts/website_push_www.sh +43 -0
  1021. data/tasks/acceptance.rake +14 -105
  1022. data/tasks/test.rake +1 -13
  1023. data/templates/commands/init/Vagrantfile.erb +65 -78
  1024. data/templates/commands/init/Vagrantfile.min.erb +12 -0
  1025. data/templates/commands/ssh_config/config.erb +28 -1
  1026. data/templates/commands/winrm_config/config.erb +11 -0
  1027. data/templates/config/messages.erb +14 -0
  1028. data/templates/config/validation_failed.erb +3 -3
  1029. data/templates/guests/alpine/network_dhcp.erb +13 -0
  1030. data/templates/guests/alpine/network_static.erb +7 -0
  1031. data/templates/guests/alt/network_dhcp.erb +7 -0
  1032. data/templates/guests/alt/network_ipv4address.erb +3 -0
  1033. data/templates/guests/alt/network_ipv4route.erb +5 -0
  1034. data/templates/guests/alt/network_static.erb +7 -0
  1035. data/templates/guests/arch/default_network/network_dhcp.erb +4 -0
  1036. data/templates/guests/arch/default_network/network_static.erb +8 -0
  1037. data/templates/guests/arch/default_network/network_static6.erb +8 -0
  1038. data/templates/guests/arch/systemd_networkd/network_dhcp.erb +6 -0
  1039. data/templates/guests/arch/systemd_networkd/network_static.erb +9 -0
  1040. data/templates/guests/arch/systemd_networkd/network_static6.erb +9 -0
  1041. data/templates/guests/coreos/etcd.service.erb +10 -0
  1042. data/templates/guests/debian/network_dhcp.erb +10 -3
  1043. data/templates/guests/debian/network_static.erb +5 -2
  1044. data/templates/guests/debian/network_static6.erb +10 -0
  1045. data/templates/guests/freebsd/network_dhcp.erb +2 -1
  1046. data/templates/guests/freebsd/network_static.erb +4 -1
  1047. data/templates/guests/freebsd/network_static6.erb +6 -0
  1048. data/templates/guests/funtoo/network_dhcp.erb +4 -0
  1049. data/templates/guests/funtoo/network_static.erb +10 -0
  1050. data/templates/guests/funtoo/network_static6.erb +9 -0
  1051. data/templates/guests/gentoo/network_dhcp.erb +1 -1
  1052. data/templates/guests/gentoo/network_static.erb +5 -1
  1053. data/templates/guests/gentoo/network_static6.erb +8 -0
  1054. data/templates/guests/gentoo/network_systemd.erb +16 -0
  1055. data/templates/guests/linux/etc_fstab.erb +6 -0
  1056. data/templates/guests/netbsd/network_dhcp.erb +3 -0
  1057. data/templates/guests/netbsd/network_static.erb +3 -0
  1058. data/templates/guests/nixos/hostname.erb +6 -0
  1059. data/templates/guests/nixos/network.erb +15 -0
  1060. data/templates/guests/openbsd/network_dhcp.erb +1 -0
  1061. data/templates/guests/openbsd/network_static.erb +1 -0
  1062. data/templates/guests/openbsd/network_static6.erb +1 -0
  1063. data/templates/guests/redhat/network_dhcp.erb +2 -1
  1064. data/templates/guests/redhat/network_static.erb +11 -2
  1065. data/templates/guests/redhat/network_static6.erb +12 -0
  1066. data/templates/guests/slackware/network_dhcp.erb +11 -0
  1067. data/templates/guests/slackware/network_static.erb +13 -0
  1068. data/templates/guests/suse/network_dhcp.erb +6 -0
  1069. data/templates/guests/suse/network_static.erb +13 -0
  1070. data/templates/guests/suse/network_static6.erb +16 -0
  1071. data/templates/license/license.html.tmpl +127 -0
  1072. data/templates/license/license.rtf.tmpl +0 -0
  1073. data/templates/license/license.tmpl +92 -0
  1074. data/templates/locales/comm_winrm.yml +85 -0
  1075. data/templates/locales/command_ps.yml +35 -0
  1076. data/templates/locales/command_rdp.yml +28 -0
  1077. data/templates/locales/en.yml +2689 -299
  1078. data/templates/locales/guest_windows.yml +26 -0
  1079. data/templates/locales/providers_docker.yml +321 -0
  1080. data/templates/locales/providers_hyperv.yml +111 -0
  1081. data/templates/locales/synced_folder_smb.yml +98 -0
  1082. data/templates/networking/network_manager/network_manager_device.erb +41 -0
  1083. data/templates/nfs/exports_bsd.erb +5 -0
  1084. data/templates/nfs/exports_darwin.erb +7 -0
  1085. data/templates/nfs/exports_linux.erb +5 -3
  1086. data/templates/provisioners/chef_client/client.erb +11 -2
  1087. data/templates/provisioners/chef_solo/solo.erb +32 -5
  1088. data/templates/provisioners/chef_zero/zero.erb +45 -0
  1089. data/templates/rgloader.rb +12 -0
  1090. data/vagrant-spec.config.example.rb +13 -0
  1091. data/vagrant.gemspec +63 -19
  1092. data/version.txt +1 -0
  1093. metadata +1443 -477
  1094. data/config/default.rb +0 -30
  1095. data/lib/vagrant/action/box/destroy.rb +0 -25
  1096. data/lib/vagrant/action/box/download.rb +0 -84
  1097. data/lib/vagrant/action/box/package.rb +0 -19
  1098. data/lib/vagrant/action/box/unpackage.rb +0 -61
  1099. data/lib/vagrant/action/box/verify.rb +0 -23
  1100. data/lib/vagrant/action/builtin.rb +0 -171
  1101. data/lib/vagrant/action/env/set.rb +0 -21
  1102. data/lib/vagrant/action/environment.rb +0 -12
  1103. data/lib/vagrant/action/general/check_virtualbox.rb +0 -28
  1104. data/lib/vagrant/action/general/validate.rb +0 -18
  1105. data/lib/vagrant/action/vm/boot.rb +0 -53
  1106. data/lib/vagrant/action/vm/check_accessible.rb +0 -23
  1107. data/lib/vagrant/action/vm/check_box.rb +0 -33
  1108. data/lib/vagrant/action/vm/check_guest_additions.rb +0 -38
  1109. data/lib/vagrant/action/vm/check_port_collisions.rb +0 -89
  1110. data/lib/vagrant/action/vm/clean_machine_folder.rb +0 -43
  1111. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +0 -18
  1112. data/lib/vagrant/action/vm/clear_network_interfaces.rb +0 -31
  1113. data/lib/vagrant/action/vm/clear_shared_folders.rb +0 -18
  1114. data/lib/vagrant/action/vm/customize.rb +0 -36
  1115. data/lib/vagrant/action/vm/default_name.rb +0 -22
  1116. data/lib/vagrant/action/vm/destroy.rb +0 -19
  1117. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +0 -20
  1118. data/lib/vagrant/action/vm/discard_state.rb +0 -22
  1119. data/lib/vagrant/action/vm/export.rb +0 -57
  1120. data/lib/vagrant/action/vm/forward_ports.rb +0 -92
  1121. data/lib/vagrant/action/vm/halt.rb +0 -32
  1122. data/lib/vagrant/action/vm/host_name.rb +0 -21
  1123. data/lib/vagrant/action/vm/import.rb +0 -48
  1124. data/lib/vagrant/action/vm/match_mac_address.rb +0 -21
  1125. data/lib/vagrant/action/vm/network.rb +0 -403
  1126. data/lib/vagrant/action/vm/nfs.rb +0 -196
  1127. data/lib/vagrant/action/vm/package.rb +0 -23
  1128. data/lib/vagrant/action/vm/package_vagrantfile.rb +0 -36
  1129. data/lib/vagrant/action/vm/provision.rb +0 -61
  1130. data/lib/vagrant/action/vm/provisioner_cleanup.rb +0 -26
  1131. data/lib/vagrant/action/vm/prune_nfs_exports.rb +0 -20
  1132. data/lib/vagrant/action/vm/resume.rb +0 -20
  1133. data/lib/vagrant/action/vm/sane_defaults.rb +0 -78
  1134. data/lib/vagrant/action/vm/setup_package_files.rb +0 -54
  1135. data/lib/vagrant/action/vm/share_folders.rb +0 -114
  1136. data/lib/vagrant/action/vm/suspend.rb +0 -20
  1137. data/lib/vagrant/command/base.rb +0 -167
  1138. data/lib/vagrant/command/box.rb +0 -58
  1139. data/lib/vagrant/command/box_add.rb +0 -37
  1140. data/lib/vagrant/command/box_list.rb +0 -28
  1141. data/lib/vagrant/command/box_remove.rb +0 -27
  1142. data/lib/vagrant/command/box_repackage.rb +0 -27
  1143. data/lib/vagrant/command/destroy.rb +0 -64
  1144. data/lib/vagrant/command/gem.rb +0 -39
  1145. data/lib/vagrant/command/halt.rb +0 -39
  1146. data/lib/vagrant/command/init.rb +0 -40
  1147. data/lib/vagrant/command/package.rb +0 -75
  1148. data/lib/vagrant/command/provision.rb +0 -40
  1149. data/lib/vagrant/command/reload.rb +0 -39
  1150. data/lib/vagrant/command/resume.rb +0 -33
  1151. data/lib/vagrant/command/ssh.rb +0 -90
  1152. data/lib/vagrant/command/ssh_config.rb +0 -51
  1153. data/lib/vagrant/command/start_mixins.rb +0 -26
  1154. data/lib/vagrant/command/status.rb +0 -36
  1155. data/lib/vagrant/command/suspend.rb +0 -33
  1156. data/lib/vagrant/command/up.rb +0 -40
  1157. data/lib/vagrant/command.rb +0 -24
  1158. data/lib/vagrant/communication/base.rb +0 -56
  1159. data/lib/vagrant/communication/ssh.rb +0 -230
  1160. data/lib/vagrant/communication.rb +0 -7
  1161. data/lib/vagrant/config/base.rb +0 -82
  1162. data/lib/vagrant/config/container.rb +0 -37
  1163. data/lib/vagrant/config/error_recorder.rb +0 -19
  1164. data/lib/vagrant/config/nfs.rb +0 -8
  1165. data/lib/vagrant/config/package.rb +0 -7
  1166. data/lib/vagrant/config/ssh.rb +0 -27
  1167. data/lib/vagrant/config/top.rb +0 -72
  1168. data/lib/vagrant/config/vagrant.rb +0 -14
  1169. data/lib/vagrant/config/vm/provisioner.rb +0 -52
  1170. data/lib/vagrant/config/vm/sub_vm.rb +0 -17
  1171. data/lib/vagrant/config/vm.rb +0 -168
  1172. data/lib/vagrant/data_store.rb +0 -92
  1173. data/lib/vagrant/downloaders/base.rb +0 -25
  1174. data/lib/vagrant/downloaders/file.rb +0 -22
  1175. data/lib/vagrant/downloaders/http.rb +0 -97
  1176. data/lib/vagrant/downloaders.rb +0 -7
  1177. data/lib/vagrant/driver/virtualbox.rb +0 -134
  1178. data/lib/vagrant/driver/virtualbox_4_0.rb +0 -459
  1179. data/lib/vagrant/driver/virtualbox_4_1.rb +0 -459
  1180. data/lib/vagrant/driver/virtualbox_4_2.rb +0 -606
  1181. data/lib/vagrant/driver/virtualbox_base.rb +0 -326
  1182. data/lib/vagrant/driver.rb +0 -8
  1183. data/lib/vagrant/guest/arch.rb +0 -56
  1184. data/lib/vagrant/guest/base.rb +0 -99
  1185. data/lib/vagrant/guest/debian.rb +0 -64
  1186. data/lib/vagrant/guest/fedora.rb +0 -66
  1187. data/lib/vagrant/guest/freebsd.rb +0 -86
  1188. data/lib/vagrant/guest/gentoo.rb +0 -46
  1189. data/lib/vagrant/guest/linux/config.rb +0 -19
  1190. data/lib/vagrant/guest/linux/error.rb +0 -9
  1191. data/lib/vagrant/guest/linux.rb +0 -118
  1192. data/lib/vagrant/guest/openbsd.rb +0 -20
  1193. data/lib/vagrant/guest/redhat.rb +0 -67
  1194. data/lib/vagrant/guest/solaris.rb +0 -118
  1195. data/lib/vagrant/guest/suse.rb +0 -17
  1196. data/lib/vagrant/guest/ubuntu.rb +0 -23
  1197. data/lib/vagrant/hosts/arch.rb +0 -55
  1198. data/lib/vagrant/hosts/base.rb +0 -66
  1199. data/lib/vagrant/hosts/bsd.rb +0 -97
  1200. data/lib/vagrant/hosts/fedora.rb +0 -47
  1201. data/lib/vagrant/hosts/freebsd.rb +0 -41
  1202. data/lib/vagrant/hosts/gentoo.rb +0 -20
  1203. data/lib/vagrant/hosts/linux.rb +0 -94
  1204. data/lib/vagrant/hosts/opensuse.rb +0 -30
  1205. data/lib/vagrant/hosts/windows.rb +0 -16
  1206. data/lib/vagrant/hosts.rb +0 -37
  1207. data/lib/vagrant/provisioners/base.rb +0 -44
  1208. data/lib/vagrant/provisioners/chef.rb +0 -168
  1209. data/lib/vagrant/provisioners/chef_client.rb +0 -132
  1210. data/lib/vagrant/provisioners/chef_solo.rb +0 -234
  1211. data/lib/vagrant/provisioners/puppet.rb +0 -176
  1212. data/lib/vagrant/provisioners/puppet_server.rb +0 -78
  1213. data/lib/vagrant/provisioners/shell.rb +0 -103
  1214. data/lib/vagrant/provisioners.rb +0 -12
  1215. data/lib/vagrant/ssh.rb +0 -126
  1216. data/lib/vagrant/test_helpers.rb +0 -154
  1217. data/lib/vagrant/vm.rb +0 -195
  1218. data/templates/guests/arch/network_dhcp.erb +0 -7
  1219. data/templates/guests/arch/network_static.erb +0 -7
  1220. data/templates/guests/fedora/network_dhcp.erb +0 -6
  1221. data/templates/guests/fedora/network_static.erb +0 -13
  1222. data/templates/nfs/exports.erb +0 -5
  1223. data/templates/nfs/exports_freebsd.erb +0 -5
  1224. data/test/acceptance/base.rb +0 -48
  1225. data/test/acceptance/box_test.rb +0 -99
  1226. data/test/acceptance/destroy_test.rb +0 -37
  1227. data/test/acceptance/halt_test.rb +0 -72
  1228. data/test/acceptance/init_test.rb +0 -33
  1229. data/test/acceptance/networking/host_only_test.rb +0 -37
  1230. data/test/acceptance/networking/port_forward_test.rb +0 -125
  1231. data/test/acceptance/package_test.rb +0 -46
  1232. data/test/acceptance/provisioning/basic_test.rb +0 -61
  1233. data/test/acceptance/provisioning/chef_solo_test.rb +0 -37
  1234. data/test/acceptance/provisioning/shell_test.rb +0 -53
  1235. data/test/acceptance/resume_test.rb +0 -17
  1236. data/test/acceptance/shared_folders_test.rb +0 -84
  1237. data/test/acceptance/skeletons/chef_solo_basic/README.md +0 -3
  1238. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +0 -5
  1239. data/test/acceptance/skeletons/chef_solo_json/README.md +0 -3
  1240. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +0 -6
  1241. data/test/acceptance/skeletons/provisioner_multi/README.md +0 -3
  1242. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +0 -5
  1243. data/test/acceptance/ssh_test.rb +0 -46
  1244. data/test/acceptance/support/config.rb +0 -42
  1245. data/test/acceptance/support/isolated_environment.rb +0 -117
  1246. data/test/acceptance/support/matchers/have_color.rb +0 -9
  1247. data/test/acceptance/support/matchers/match_output.rb +0 -14
  1248. data/test/acceptance/support/matchers/succeed.rb +0 -14
  1249. data/test/acceptance/support/network_tests.rb +0 -29
  1250. data/test/acceptance/support/output.rb +0 -95
  1251. data/test/acceptance/support/shared/base_context.rb +0 -72
  1252. data/test/acceptance/support/shared/command_examples.rb +0 -33
  1253. data/test/acceptance/support/virtualbox.rb +0 -36
  1254. data/test/acceptance/suspend_test.rb +0 -56
  1255. data/test/acceptance/up_basic_test.rb +0 -33
  1256. data/test/acceptance/up_with_box_url.rb +0 -40
  1257. data/test/acceptance/vagrant_test.rb +0 -47
  1258. data/test/acceptance/version_test.rb +0 -15
  1259. data/test/buildbot/README.md +0 -72
  1260. data/test/buildbot/buildbot_config/config/__init__.py +0 -0
  1261. data/test/buildbot/buildbot_config/config/loader.py +0 -24
  1262. data/test/buildbot/buildbot_config/config/master.py +0 -24
  1263. data/test/buildbot/buildbot_config/config/slave.py +0 -22
  1264. data/test/buildbot/buildbot_config/master/__init__.py +0 -6
  1265. data/test/buildbot/buildbot_config/master/builders.py +0 -78
  1266. data/test/buildbot/buildbot_config/master/buildsteps.py +0 -100
  1267. data/test/buildbot/buildbot_config/master/change_sources.py +0 -8
  1268. data/test/buildbot/buildbot_config/master/schedulers.py +0 -32
  1269. data/test/buildbot/buildbot_config/master/slaves.py +0 -60
  1270. data/test/buildbot/buildbot_config/master/status.py +0 -52
  1271. data/test/buildbot/master/Makefile.sample +0 -28
  1272. data/test/buildbot/master/buildbot.tac +0 -36
  1273. data/test/buildbot/master/master.cfg +0 -67
  1274. data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
  1275. data/test/buildbot/master/public_html/default.css +0 -545
  1276. data/test/buildbot/master/public_html/favicon.ico +0 -0
  1277. data/test/buildbot/master/public_html/robots.txt +0 -10
  1278. data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +0 -356
  1279. data/test/buildbot/master/public_html/static/css/prettify.css +0 -97
  1280. data/test/buildbot/master/public_html/static/css/syntax.css +0 -60
  1281. data/test/buildbot/master/public_html/static/css/vagrant.base.css +0 -205
  1282. data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
  1283. data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
  1284. data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
  1285. data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
  1286. data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
  1287. data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
  1288. data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
  1289. data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
  1290. data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
  1291. data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
  1292. data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
  1293. data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
  1294. data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
  1295. data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
  1296. data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +0 -80
  1297. data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +0 -4
  1298. data/test/buildbot/master/templates/authfail.html +0 -9
  1299. data/test/buildbot/master/templates/build.html +0 -205
  1300. data/test/buildbot/master/templates/builder.html +0 -118
  1301. data/test/buildbot/master/templates/builders.html +0 -33
  1302. data/test/buildbot/master/templates/buildslave.html +0 -72
  1303. data/test/buildbot/master/templates/buildslaves.html +0 -70
  1304. data/test/buildbot/master/templates/change.html +0 -15
  1305. data/test/buildbot/master/templates/layouts/base.html +0 -58
  1306. data/test/buildbot/master/templates/macros/box.html +0 -37
  1307. data/test/buildbot/master/templates/macros/build_line.html +0 -50
  1308. data/test/buildbot/master/templates/macros/change.html +0 -81
  1309. data/test/buildbot/master/templates/macros/forms.html +0 -300
  1310. data/test/buildbot/master/templates/root.html +0 -42
  1311. data/test/buildbot/master/templates/waterfall.html +0 -53
  1312. data/test/buildbot/requirements.txt +0 -4
  1313. data/test/buildbot/scripts/deploy.sh +0 -38
  1314. data/test/buildbot/scripts/setup.sh +0 -107
  1315. data/test/buildbot/slave/buildbot.tac +0 -43
  1316. data/test/buildbot/slave/info/admin +0 -1
  1317. data/test/buildbot/slave/info/host +0 -1
  1318. data/test/buildbot/tests/__init__.py +0 -0
  1319. data/test/buildbot/tests/master/__init__.py +0 -0
  1320. data/test/buildbot/tests/master/test_slaves.py +0 -41
  1321. data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
  1322. data/test/config/acceptance_boxes.yml +0 -7
  1323. data/test/support/isolated_environment.rb +0 -46
  1324. data/test/support/tempdir.rb +0 -34
  1325. data/test/unit/base.rb +0 -21
  1326. data/test/unit/support/isolated_environment.rb +0 -47
  1327. data/test/unit/support/shared/base_context.rb +0 -30
  1328. data/test/unit/vagrant/action/builder_test.rb +0 -156
  1329. data/test/unit/vagrant/action/environment_test.rb +0 -16
  1330. data/test/unit/vagrant/action/runner_test.rb +0 -65
  1331. data/test/unit/vagrant/action/warden_test.rb +0 -92
  1332. data/test/unit/vagrant/box_collection_test.rb +0 -56
  1333. data/test/unit/vagrant/box_test.rb +0 -34
  1334. data/test/unit/vagrant/command/base_test.rb +0 -150
  1335. data/test/unit/vagrant/config/base_test.rb +0 -48
  1336. data/test/unit/vagrant/config/loader_test.rb +0 -79
  1337. data/test/unit/vagrant/config/ssh_test.rb +0 -17
  1338. data/test/unit/vagrant/config/top_test.rb +0 -69
  1339. data/test/unit/vagrant/config/vm_test.rb +0 -71
  1340. data/test/unit/vagrant/config_test.rb +0 -27
  1341. data/test/unit/vagrant/data_store_test.rb +0 -79
  1342. data/test/unit/vagrant/downloaders/base_test.rb +0 -18
  1343. data/test/unit/vagrant/downloaders/file_test.rb +0 -75
  1344. data/test/unit/vagrant/downloaders/http_test.rb +0 -19
  1345. data/test/unit/vagrant/environment_test.rb +0 -220
  1346. data/test/unit/vagrant/hosts_test.rb +0 -36
  1347. data/test/unit/vagrant/registry_test.rb +0 -74
  1348. data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +0 -16
  1349. data/test/unit/vagrant/util/file_checksum_test.rb +0 -23
  1350. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +0 -38
  1351. data/test/unit/vagrant/util/is_port_open_test.rb +0 -53
  1352. data/test/unit/vagrant/util/line_endings_helper_test.rb +0 -16
  1353. data/test/unit/vagrant/util/network_ip_test.rb +0 -17
  1354. data/test/unit/vagrant/util/retryable_test.rb +0 -106
  1355. data/test/unit/vagrant_test.rb +0 -27
  1356. data/test/unit_legacy/locales/en.yml +0 -8
  1357. data/test/unit_legacy/test_helper.rb +0 -32
  1358. data/test/unit_legacy/vagrant/action/box/destroy_test.rb +0 -18
  1359. data/test/unit_legacy/vagrant/action/box/download_test.rb +0 -125
  1360. data/test/unit_legacy/vagrant/action/box/package_test.rb +0 -25
  1361. data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +0 -84
  1362. data/test/unit_legacy/vagrant/action/box/verify_test.rb +0 -30
  1363. data/test/unit_legacy/vagrant/action/env/set_test.rb +0 -24
  1364. data/test/unit_legacy/vagrant/action/general/package_test.rb +0 -268
  1365. data/test/unit_legacy/vagrant/action/general/validate_test.rb +0 -31
  1366. data/test/unit_legacy/vagrant/action/vm/boot_test.rb +0 -66
  1367. data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +0 -61
  1368. data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +0 -61
  1369. data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +0 -9
  1370. data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +0 -84
  1371. data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -52
  1372. data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +0 -22
  1373. data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +0 -40
  1374. data/test/unit_legacy/vagrant/action/vm/customize_test.rb +0 -37
  1375. data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +0 -25
  1376. data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -49
  1377. data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +0 -45
  1378. data/test/unit_legacy/vagrant/action/vm/export_test.rb +0 -107
  1379. data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +0 -77
  1380. data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +0 -197
  1381. data/test/unit_legacy/vagrant/action/vm/halt_test.rb +0 -79
  1382. data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +0 -36
  1383. data/test/unit_legacy/vagrant/action/vm/import_test.rb +0 -66
  1384. data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +0 -40
  1385. data/test/unit_legacy/vagrant/action/vm/modify_test.rb +0 -38
  1386. data/test/unit_legacy/vagrant/action/vm/network_test.rb +0 -286
  1387. data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +0 -26
  1388. data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +0 -260
  1389. data/test/unit_legacy/vagrant/action/vm/package_test.rb +0 -25
  1390. data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +0 -46
  1391. data/test/unit_legacy/vagrant/action/vm/provision_test.rb +0 -65
  1392. data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +0 -56
  1393. data/test/unit_legacy/vagrant/action/vm/resume_test.rb +0 -35
  1394. data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +0 -144
  1395. data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +0 -35
  1396. data/test/unit_legacy/vagrant/action_test.rb +0 -89
  1397. data/test/unit_legacy/vagrant/box_collection_test.rb +0 -45
  1398. data/test/unit_legacy/vagrant/box_test.rb +0 -74
  1399. data/test/unit_legacy/vagrant/cli_test.rb +0 -35
  1400. data/test/unit_legacy/vagrant/command/base_test.rb +0 -23
  1401. data/test/unit_legacy/vagrant/command/group_base_test.rb +0 -15
  1402. data/test/unit_legacy/vagrant/command/helpers_test.rb +0 -88
  1403. data/test/unit_legacy/vagrant/command/init_test.rb +0 -10
  1404. data/test/unit_legacy/vagrant/command/package_test.rb +0 -27
  1405. data/test/unit_legacy/vagrant/config/base_test.rb +0 -52
  1406. data/test/unit_legacy/vagrant/config/error_recorder_test.rb +0 -18
  1407. data/test/unit_legacy/vagrant/config/ssh_test.rb +0 -12
  1408. data/test/unit_legacy/vagrant/config/vagrant_test.rb +0 -35
  1409. data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +0 -92
  1410. data/test/unit_legacy/vagrant/config/vm_test.rb +0 -47
  1411. data/test/unit_legacy/vagrant/config_test.rb +0 -148
  1412. data/test/unit_legacy/vagrant/downloaders/http_test.rb +0 -93
  1413. data/test/unit_legacy/vagrant/environment_test.rb +0 -539
  1414. data/test/unit_legacy/vagrant/errors_test.rb +0 -42
  1415. data/test/unit_legacy/vagrant/hosts/base_test.rb +0 -46
  1416. data/test/unit_legacy/vagrant/hosts/bsd_test.rb +0 -53
  1417. data/test/unit_legacy/vagrant/hosts/linux_test.rb +0 -54
  1418. data/test/unit_legacy/vagrant/plugin_test.rb +0 -9
  1419. data/test/unit_legacy/vagrant/provisioners/base_test.rb +0 -63
  1420. data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +0 -190
  1421. data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +0 -115
  1422. data/test/unit_legacy/vagrant/provisioners/chef_test.rb +0 -209
  1423. data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +0 -68
  1424. data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +0 -182
  1425. data/test/unit_legacy/vagrant/provisioners/shell_test.rb +0 -79
  1426. data/test/unit_legacy/vagrant/ssh/session_test.rb +0 -40
  1427. data/test/unit_legacy/vagrant/ssh_test.rb +0 -304
  1428. data/test/unit_legacy/vagrant/systems/base_test.rb +0 -18
  1429. data/test/unit_legacy/vagrant/systems/linux_test.rb +0 -104
  1430. data/test/unit_legacy/vagrant/util/busy_test.rb +0 -106
  1431. data/test/unit_legacy/vagrant/util/counter_test.rb +0 -29
  1432. data/test/unit_legacy/vagrant/util/platform_test.rb +0 -18
  1433. data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +0 -43
  1434. data/test/unit_legacy/vagrant/util/template_renderer_test.rb +0 -145
  1435. data/test/unit_legacy/vagrant/vm_test.rb +0 -300
  1436. /data/{test/buildbot/buildbot_config/__init__.py → .gitmodules} +0 -0
@@ -1,7 +1,15 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require 'thread'
5
+
1
6
  require 'childprocess'
2
7
  require 'log4r'
3
8
 
9
+ require 'vagrant/util/io'
4
10
  require 'vagrant/util/platform'
11
+ require 'vagrant/util/safe_chdir'
12
+ require 'vagrant/util/which'
5
13
 
6
14
  module Vagrant
7
15
  module Util
@@ -12,9 +20,6 @@ module Vagrant
12
20
  # from the subprocess in real time, by simply passing a block to
13
21
  # the execute method.
14
22
  class Subprocess
15
- # The chunk size for reading from subprocess IO.
16
- READ_CHUNK_SIZE = 4096
17
-
18
23
  # Convenience method for executing a method.
19
24
  def self.execute(*command, &block)
20
25
  new(*command).execute(&block)
@@ -22,26 +27,123 @@ module Vagrant
22
27
 
23
28
  def initialize(*command)
24
29
  @options = command.last.is_a?(Hash) ? command.pop : {}
25
- @command = command
30
+ @command = command.dup
31
+ @command[0] = Which.which(@command[0]) if !File.file?(@command[0])
32
+ if !@command[0]
33
+ raise Errors::CommandUnavailableWindows, file: command[0] if Platform.windows?
34
+ raise Errors::CommandUnavailable, file: command[0]
35
+ end
36
+
26
37
  @logger = Log4r::Logger.new("vagrant::util::subprocess")
27
38
  end
28
39
 
40
+ # @return [TrueClass, FalseClass] subprocess is currently running
41
+ def running?
42
+ !!(@process && @process.alive?)
43
+ end
44
+
45
+ # Stop the subprocess if running
46
+ #
47
+ # @return [TrueClass] FalseClass] true if process was running and stopped
48
+ def stop
49
+ if @process && @process.alive?
50
+ @process.stop
51
+ true
52
+ else
53
+ false
54
+ end
55
+ end
56
+
57
+ # Start the process
58
+ #
59
+ # @return [Result]
29
60
  def execute
30
61
  # Get the timeout, if we have one
31
62
  timeout = @options[:timeout]
63
+
64
+ # Get the working directory
32
65
  workdir = @options[:workdir] || Dir.pwd
33
66
 
67
+ # Get what we're interested in being notified about
68
+ notify = @options[:notify] || []
69
+ notify = [notify] if !notify.is_a?(Array)
70
+ if notify.empty? && block_given?
71
+ # If a block is given, subscribers must be given, otherwise the
72
+ # block is never called. This is usually NOT what you want, so this
73
+ # is an error.
74
+ message = "A list of notify subscriptions must be given if a block is given"
75
+ raise ArgumentError, message
76
+ end
77
+
78
+ # Let's get some more useful booleans that we access a lot so
79
+ # we're not constantly calling an `include` check
80
+ notify_table = {}
81
+ notify_table[:stderr] = notify.include?(:stderr)
82
+ notify_table[:stdout] = notify.include?(:stdout)
83
+ notify_stdin = notify.include?(:stdin)
84
+
34
85
  # Build the ChildProcess
35
86
  @logger.info("Starting process: #{@command.inspect}")
36
- process = ChildProcess.build(*@command)
87
+ @process = process = ChildProcess.build(*@command)
37
88
 
38
89
  # Create the pipes so we can read the output in real time as
39
90
  # we execute the command.
40
- stdout, stdout_writer = IO.pipe
41
- stderr, stderr_writer = IO.pipe
91
+ stdout, stdout_writer = ::IO.pipe
92
+ stderr, stderr_writer = ::IO.pipe
42
93
  process.io.stdout = stdout_writer
43
94
  process.io.stderr = stderr_writer
44
95
  process.duplex = true
96
+ process.leader = true if @options[:detach]
97
+ process.detach = true if @options[:detach]
98
+
99
+ # Special installer-related things
100
+ if Vagrant.in_installer?
101
+ installer_dir = Vagrant.installer_embedded_dir.to_s.downcase
102
+
103
+ # If we're in an installer on Mac and we're executing a command
104
+ # in the installer context, then force DYLD_LIBRARY_PATH to look
105
+ # at our libs first.
106
+ if Platform.darwin?
107
+ if @command[0].downcase.include?(installer_dir)
108
+ @logger.info("Command in the installer. Specifying DYLD_LIBRARY_PATH...")
109
+ process.environment["DYLD_LIBRARY_PATH"] =
110
+ "#{installer_dir}/lib:#{ENV["DYLD_LIBRARY_PATH"]}"
111
+ else
112
+ @logger.debug("Command not in installer, not touching env vars.")
113
+ end
114
+
115
+ if File.setuid?(@command[0]) || File.setgid?(@command[0])
116
+ @logger.info("Command is setuid/setgid, clearing DYLD_LIBRARY_PATH")
117
+ process.environment["DYLD_LIBRARY_PATH"] = ""
118
+ end
119
+ end
120
+
121
+ # If the command that is being run is not inside the installer, reset
122
+ # the original environment - this is required for shelling out to
123
+ # other subprocesses that depend on environment variables (like Ruby
124
+ # and $GEM_PATH for example)
125
+ internal = [installer_dir, Vagrant.user_data_path.to_s.downcase].
126
+ any? { |path| @command[0].downcase.include?(path) }
127
+ if !internal
128
+ @logger.info("Command not in installer, restoring original environment...")
129
+ jailbreak(process.environment)
130
+ end
131
+
132
+ # If running within an AppImage and calling external executable. When
133
+ # executable is external set the LD_LIBRARY_PATH to host values.
134
+ if ENV["VAGRANT_APPIMAGE"]
135
+ embed_path = Pathname.new(Vagrant.installer_embedded_dir).expand_path.to_s
136
+ exec_path = Pathname.new(@command[0]).expand_path.to_s
137
+ if !exec_path.start_with?(embed_path) && ENV["VAGRANT_APPIMAGE_HOST_LD_LIBRARY_PATH"]
138
+ @logger.info("Detected AppImage environment and request to external binary. Updating library path.")
139
+ @logger.debug("Setting LD_LIBRARY_PATH to #{ENV["VAGRANT_APPIMAGE_HOST_LD_LIBRARY_PATH"]}")
140
+ process.environment["LD_LIBRARY_PATH"] = ENV["VAGRANT_APPIMAGE_HOST_LD_LIBRARY_PATH"].to_s
141
+ end
142
+ end
143
+ else
144
+ @logger.info("Vagrant not running in installer, restoring original environment...")
145
+ jailbreak(process.environment)
146
+ end
45
147
 
46
148
  # Set the environment on the process if we must
47
149
  if @options[:env]
@@ -52,13 +154,19 @@ module Vagrant
52
154
 
53
155
  # Start the process
54
156
  begin
55
- Dir.chdir(workdir) do
157
+ SafeChdir.safe_chdir(workdir) do
56
158
  process.start
57
159
  end
58
- rescue ChildProcess::LaunchError
160
+ rescue ChildProcess::LaunchError => ex
59
161
  # Raise our own version of the error so that users of the class
60
162
  # don't need to be aware of ChildProcess
61
- raise LaunchError
163
+ raise LaunchError.new(ex.message)
164
+ end
165
+
166
+ # If running with the detach option, no need to capture IO or
167
+ # ensure program exists.
168
+ if @options[:detach]
169
+ return
62
170
  end
63
171
 
64
172
  # Make sure the stdin does not buffer
@@ -73,33 +181,37 @@ module Vagrant
73
181
  end
74
182
 
75
183
  # Create a dictionary to store all the output we see.
76
- io_data = { :stdout => "", :stderr => "" }
184
+ io_data = { stdout: "", stderr: "" }
77
185
 
78
186
  # Record the start time for timeout purposes
79
187
  start_time = Time.now.to_i
80
188
 
189
+ open_readers = [stdout, stderr]
190
+ open_writers = notify_stdin ? [process.io.stdin] : []
81
191
  @logger.debug("Selecting on IO")
82
192
  while true
83
- results = IO.select([stdout, stderr], [process.io.stdin], nil, timeout || 5)
84
- readers, writers = results
193
+ results = ::IO.select(open_readers, open_writers, nil, 0.1)
194
+ results ||= []
195
+ readers = results[0]
196
+ writers = results[1]
85
197
 
86
198
  # Check if we have exceeded our timeout
87
199
  raise TimeoutExceeded, process.pid if timeout && (Time.now.to_i - start_time) > timeout
88
200
 
89
201
  # Check the readers to see if they're ready
90
- if !readers.empty?
202
+ if readers && !readers.empty?
91
203
  readers.each do |r|
92
204
  # Read from the IO object
93
- data = read_io(r)
205
+ data = IO.read_until_block(r)
94
206
 
95
207
  # We don't need to do anything if the data is empty
96
208
  next if data.empty?
97
209
 
98
210
  io_name = r == stdout ? :stdout : :stderr
99
- @logger.debug("#{io_name}: #{data}")
211
+ @logger.trace("#{io_name}: #{data.chomp}")
100
212
 
101
213
  io_data[io_name] += data
102
- yield io_name, data if block_given?
214
+ yield io_name, data if block_given? && notify_table[io_name]
103
215
  end
104
216
  end
105
217
 
@@ -109,8 +221,14 @@ module Vagrant
109
221
  break if process.exited?
110
222
 
111
223
  # Check the writers to see if they're ready, and notify any listeners
112
- if !writers.empty?
113
- yield :stdin, process.io.stdin if block_given?
224
+ if writers && !writers.empty? && block_given?
225
+ yield :stdin, process.io.stdin
226
+
227
+ # if the callback closed stdin, we should remove it, because
228
+ # IO.select() will throw if called with a closed io.
229
+ if process.io.stdin.closed?
230
+ open_writers = []
231
+ end
114
232
  end
115
233
  end
116
234
 
@@ -132,16 +250,16 @@ module Vagrant
132
250
  # process exited.
133
251
  [stdout, stderr].each do |io|
134
252
  # Read the extra data, ignoring if there isn't any
135
- extra_data = read_io(io)
253
+ extra_data = IO.read_until_block(io)
136
254
  next if extra_data == ""
137
255
 
138
256
  # Log it out and accumulate
139
- @logger.debug(extra_data)
140
257
  io_name = io == stdout ? :stdout : :stderr
141
258
  io_data[io_name] += extra_data
259
+ @logger.trace("#{io_name}: #{extra_data.chomp}")
142
260
 
143
261
  # Yield to any listeners any remaining data
144
- yield io_name, extra_data if block_given?
262
+ yield io_name, extra_data if block_given? && notify_table[io_name]
145
263
  end
146
264
 
147
265
  if RUBY_PLATFORM == "java"
@@ -153,69 +271,15 @@ module Vagrant
153
271
 
154
272
  # Return an exit status container
155
273
  return Result.new(process.exit_code, io_data[:stdout], io_data[:stderr])
274
+ ensure
275
+ if process && process.alive? && !@options[:detach]
276
+ # Make sure no matter what happens, the process exits
277
+ process.stop(2)
278
+ end
156
279
  end
157
280
 
158
281
  protected
159
282
 
160
- # Reads data from an IO object while it can, returning the data it reads.
161
- # When it encounters a case when it can't read anymore, it returns the
162
- # data.
163
- #
164
- # @return [String]
165
- def read_io(io)
166
- data = ""
167
-
168
- while true
169
- begin
170
- if Platform.windows?
171
- # Windows doesn't support non-blocking reads on
172
- # file descriptors or pipes so we have to get
173
- # a bit more creative.
174
-
175
- # Check if data is actually ready on this IO device.
176
- # We have to do this since `readpartial` will actually block
177
- # until data is available, which can cause blocking forever
178
- # in some cases.
179
- results = IO.select([io], nil, nil, 1)
180
- break if !results || results[0].empty?
181
-
182
- # Read!
183
- data << io.readpartial(READ_CHUNK_SIZE)
184
- else
185
- # Do a simple non-blocking read on the IO object
186
- data << io.read_nonblock(READ_CHUNK_SIZE)
187
- end
188
- rescue Exception => e
189
- # The catch-all rescue here is to support multiple Ruby versions,
190
- # since we use some Ruby 1.9 specific exceptions.
191
-
192
- breakable = false
193
- if e.is_a?(EOFError)
194
- # An `EOFError` means this IO object is done!
195
- breakable = true
196
- elsif defined?(IO::WaitReadable) && e.is_a?(IO::WaitReadable)
197
- # IO::WaitReadable is only available on Ruby 1.9+
198
-
199
- # An IO::WaitReadable means there may be more IO but this
200
- # IO object is not ready to be read from yet. No problem,
201
- # we read as much as we can, so we break.
202
- breakable = true
203
- elsif e.is_a?(Errno::EAGAIN)
204
- # Otherwise, we just look for the EAGAIN error which should be
205
- # all that IO::WaitReadable does in Ruby 1.9.
206
- breakable = true
207
- end
208
-
209
- # Break out if we're supposed to. Otherwise re-raise the error
210
- # because it is a real problem.
211
- break if breakable
212
- raise
213
- end
214
- end
215
-
216
- data
217
- end
218
-
219
283
  # An error which raises when a process fails to start
220
284
  class LaunchError < StandardError; end
221
285
 
@@ -242,6 +306,60 @@ module Vagrant
242
306
  @stderr = stderr
243
307
  end
244
308
  end
309
+
310
+ private
311
+
312
+ # This is, quite possibly, the saddest function in all of Vagrant.
313
+ #
314
+ # If a user is running Vagrant via Bundler (but not via the official
315
+ # installer), we want to reset to the "original" environment so that when
316
+ # shelling out to other Ruby processes (specifically), the original
317
+ # environment is restored. This is super important for things like
318
+ # rbenv and chruby, who rely on environment variables to locate gems, but
319
+ # Bundler stomps on those environment variables like an angry T-Rex after
320
+ # watching Jurassic Park 2 and realizing they replaced you with CGI.
321
+ #
322
+ # If a user is running in Vagrant via the official installer, BUT trying
323
+ # to execute a subprocess *outside* of the installer, we want to reset to
324
+ # the "original" environment. In this case, the Vagrant installer actually
325
+ # knows what the original environment was and replaces it completely.
326
+ #
327
+ # Finally, we reset any Bundler-specific environment variables, since the
328
+ # subprocess being called could, itself, be Bundler. And Bundler does not
329
+ # behave very nicely in these circumstances.
330
+ #
331
+ # This function was added in Vagrant 1.7.3, but there is a failsafe
332
+ # because the author doesn't trust himself that this functionality won't
333
+ # break existing assumptions, so users can specify
334
+ # `VAGRANT_SKIP_SUBPROCESS_JAILBREAK` and none of the above will happen.
335
+ #
336
+ # This function modifies the given hash in place!
337
+ #
338
+ # @return [nil]
339
+ def jailbreak(env = {})
340
+ return if ENV.key?("VAGRANT_SKIP_SUBPROCESS_JAILBREAK")
341
+
342
+ if defined?(::Bundler) && defined?(::Bundler::ORIGINAL_ENV)
343
+ env.replace(::Bundler::ORIGINAL_ENV)
344
+ end
345
+ env.merge!(Vagrant.original_env)
346
+
347
+ # Bundler does this, so I guess we should as well, since I think it
348
+ # other subprocesses that use Bundler will reload it
349
+ env["MANPATH"] = ENV["BUNDLE_ORIG_MANPATH"]
350
+
351
+ # Replace all current environment BUNDLE_ variables to nil
352
+ ENV.each do |k,_|
353
+ env[k] = nil if k[0,7] == "BUNDLE_"
354
+ end
355
+
356
+ # If RUBYOPT was set, unset it with Bundler
357
+ if ENV.key?("RUBYOPT")
358
+ env["RUBYOPT"] = ENV["RUBYOPT"].sub("-rbundler/setup", "")
359
+ end
360
+
361
+ nil
362
+ end
245
363
  end
246
364
  end
247
365
  end
@@ -1,5 +1,10 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
1
4
  require 'ostruct'
2
- require 'erubis'
5
+ require "pathname"
6
+
7
+ require 'erubi'
3
8
 
4
9
  module Vagrant
5
10
  module Util
@@ -38,19 +43,22 @@ module Vagrant
38
43
  def initialize(template, data = {})
39
44
  super()
40
45
 
46
+ @template_root = data.delete(:template_root)
47
+ @template_root ||= Vagrant.source_root.join("templates")
48
+ @template_root = Pathname.new(@template_root)
49
+
41
50
  data[:template] = template
42
51
  data.each do |key, value|
43
52
  send("#{key}=", value)
44
53
  end
45
54
  end
46
55
 
47
- # Renders the template using the class intance as the binding. Because the
56
+ # Renders the template using the class instance as the binding. Because the
48
57
  # renderer inherits from `OpenStruct`, additional view variables can be
49
58
  # added like normal accessors.
50
59
  #
51
60
  # @return [String]
52
61
  def render
53
- # TODO: Seems like a pretty dirty way to do this. Perhaps refactor this
54
62
  old_template = template
55
63
  result = nil
56
64
  File.open(full_template_path, 'r') do |f|
@@ -68,15 +76,15 @@ module Vagrant
68
76
  #
69
77
  # @return [String]
70
78
  def render_string
71
- Erubis::Eruby.new(template, :trim => true).result(binding)
79
+ binding.eval(Erubi::Engine.new(template, trim: true).src)
72
80
  end
73
81
 
74
- # Returns the full path to the template, taking into accoun the gem directory
82
+ # Returns the full path to the template, taking into account the gem directory
75
83
  # and adding the `.erb` extension to the end.
76
84
  #
77
85
  # @return [String]
78
86
  def full_template_path
79
- Vagrant.source_root.join('templates', "#{template}.erb").to_s.squeeze("/")
87
+ @template_root.join("#{template}.erb").to_s.squeeze("/")
80
88
  end
81
89
  end
82
90
  end
@@ -0,0 +1,109 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "uri"
5
+
6
+ require "log4r"
7
+ require "vagrant/util/busy"
8
+ require "vagrant/util/platform"
9
+ require "vagrant/util/subprocess"
10
+ require "vagrant/util/curl_helper"
11
+
12
+ module Vagrant
13
+ module Util
14
+ # This class uploads files using various protocols by subprocessing
15
+ # to cURL. cURL is a much more capable and complete download tool than
16
+ # a hand-rolled Ruby library, so we defer to its expertise.
17
+ class Uploader
18
+
19
+ # @param [String] destination Valid URL to upload file to
20
+ # @param [String] file Location of file to upload on disk
21
+ # @param [Hash] options
22
+ # @option options [Vagrant::UI] :ui UI interface for output
23
+ # @option options [String, Symbol] :method Request method for upload
24
+ def initialize(destination, file, options=nil)
25
+ options ||= {}
26
+ @logger = Log4r::Logger.new("vagrant::util::uploader")
27
+ @destination = destination.to_s
28
+ @file = file.to_s
29
+ @ui = options[:ui]
30
+ @request_method = options[:method]
31
+
32
+ if !@request_method
33
+ @request_method = "PUT"
34
+ end
35
+ @request_method = @request_method.to_s.upcase
36
+ end
37
+
38
+ def upload!
39
+ data_proc = Vagrant::Util::CurlHelper.capture_output_proc(@logger, @ui)
40
+
41
+ @logger.info("Uploader starting upload: ")
42
+ @logger.info(" -- Source: #{@file}")
43
+ @logger.info(" -- Destination: #{@destination}")
44
+
45
+ options = build_options
46
+ subprocess_options = {notify: :stderr}
47
+
48
+ begin
49
+ execute_curl(options, subprocess_options, &data_proc)
50
+ rescue Errors::UploaderError => e
51
+ raise
52
+ ensure
53
+ @ui.clear_line if @ui
54
+ end
55
+ end
56
+
57
+ protected
58
+
59
+ def build_options
60
+ options = [@destination, "--request", @request_method, "--upload-file", @file, "--fail"]
61
+ return options
62
+ end
63
+
64
+ def execute_curl(options, subprocess_options, &data_proc)
65
+ options = options.dup
66
+ options << subprocess_options
67
+
68
+ # Create the callback that is called if we are interrupted
69
+ interrupted = false
70
+ int_callback = Proc.new do
71
+ @logger.info("Uploader interrupted!")
72
+ interrupted = true
73
+ end
74
+
75
+ # Execute!
76
+ result = Busy.busy(int_callback) do
77
+ Subprocess.execute("curl", *options, &data_proc)
78
+ end
79
+
80
+ # If the upload was interrupted, then raise a specific error
81
+ raise Errors::UploaderInterrupted if interrupted
82
+
83
+ # If it didn't exit successfully, we need to parse the data and
84
+ # show an error message.
85
+ if result.exit_code != 0
86
+ @logger.warn("Uploader exit code: #{result.exit_code}")
87
+ check = result.stderr.match(/\n*curl:\s+\((?<code>\d+)\)\s*(?<error>.*)$/)
88
+ if !check
89
+ err_msg = result.stderr
90
+ else
91
+ err_msg = check[:error]
92
+ end
93
+
94
+ raise Errors::UploaderError,
95
+ exit_code: result.exit_code,
96
+ message: err_msg
97
+ end
98
+
99
+ if @ui
100
+ @ui.clear_line
101
+ # Windows doesn't clear properly for some reason, so we just
102
+ # output one more newline.
103
+ @ui.detail("") if Platform.windows?
104
+ end
105
+ result
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,56 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "vagrant/util/platform"
5
+
6
+ module Vagrant
7
+ module Util
8
+ class Which
9
+ # Cross-platform way of finding an executable in the PATH.
10
+ #
11
+ # which('ruby') #=> /usr/bin/ruby
12
+ #
13
+ # This code is adapted from the following post by mislav:
14
+ # http://stackoverflow.com/questions/2108727/which-in-ruby-checking-if-program-exists-in-path-from-ruby
15
+ #
16
+ # @param [String] cmd The command to search for in the PATH.
17
+ # @param [Hash] opts Optional flags
18
+ # @option [Boolean] :original_path Search within original path if available
19
+ # @return [String] The full path to the executable or `nil` if not found.
20
+ def self.which(cmd, **opts)
21
+ exts = nil
22
+
23
+ if !Platform.windows? || ENV['PATHEXT'].nil?
24
+ # If the PATHEXT variable is empty, we're on *nix and need to find
25
+ # the exact filename
26
+ exts = ['']
27
+ elsif File.extname(cmd).length != 0
28
+ # On Windows: if filename contains an extension, we must match that
29
+ # exact filename
30
+ exts = ['']
31
+ else
32
+ # On Windows: otherwise try to match all possible executable file
33
+ # extensions (.EXE .COM .BAT etc.)
34
+ exts = ENV['PATHEXT'].split(';')
35
+ end
36
+
37
+ if opts[:original_path]
38
+ search_path = ENV.fetch('VAGRANT_OLD_ENV_PATH', ENV['PATH'])
39
+ else
40
+ search_path = ENV['PATH']
41
+ end
42
+
43
+ SilenceWarnings.silence! do
44
+ search_path.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').split(File::PATH_SEPARATOR).each do |path|
45
+ exts.each do |ext|
46
+ exe = "#{path}#{File::SEPARATOR}#{cmd}#{ext}"
47
+ return exe if File.executable? exe
48
+ end
49
+ end
50
+ end
51
+
52
+ return nil
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,41 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "fiddle/import"
5
+
6
+ module Vagrant
7
+ module Util
8
+ module WindowsPath
9
+ module API
10
+ extend Fiddle::Importer
11
+ dlload 'kernel32.dll'
12
+ extern("int GetLongPathNameA(char*, char*, int)", :stdcall)
13
+ end
14
+
15
+ # Converts a Windows shortname to a long name. This only works
16
+ # for ASCII paths currently and doesn't use the wide character
17
+ # support.
18
+ def self.longname(name)
19
+ # We loop over the API call in case we didn't allocate enough
20
+ # buffer space. In general it is usually enough.
21
+ bufferlen = 250
22
+ buffer = nil
23
+ while true
24
+ buffer = ' ' * bufferlen
25
+ len = API.GetLongPathNameA(name.to_s, buffer, buffer.size)
26
+ if bufferlen < len
27
+ # If the length returned is larger than our buffer length,
28
+ # it is the API telling us it needs more space. Allocate it
29
+ # and retry.
30
+ bufferlen = len
31
+ continue
32
+ end
33
+
34
+ break
35
+ end
36
+
37
+ return buffer.rstrip.chomp("\0")
38
+ end
39
+ end
40
+ end
41
+ end