vagrant 1.5.0 → 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 (1101) hide show
  1. checksums.yaml +5 -5
  2. data/.copywrite.hcl +15 -0
  3. data/.gitignore +79 -14
  4. data/.gitmodules +0 -0
  5. data/.vimrc +5 -0
  6. data/.yardopts +1 -0
  7. data/CHANGELOG.md +4512 -0
  8. data/Gemfile +10 -2
  9. data/LICENSE +92 -0
  10. data/README.md +55 -3
  11. data/RELEASE.md +11 -0
  12. data/Rakefile +22 -1
  13. data/Vagrantfile +31 -0
  14. data/bin/vagrant +268 -2
  15. data/contrib/README.md +17 -0
  16. data/contrib/bash/completion.sh +190 -0
  17. data/contrib/emacs/vagrant.el +11 -0
  18. data/contrib/st/Ruby.sublime-settings +6 -0
  19. data/contrib/sudoers/linux-fedora +7 -0
  20. data/contrib/sudoers/linux-suse +6 -0
  21. data/contrib/sudoers/linux-ubuntu +8 -0
  22. data/contrib/sudoers/osx +10 -0
  23. data/contrib/vim/vagrantfile.vim +9 -0
  24. data/contrib/zsh/_vagrant +738 -0
  25. data/contrib/zsh/generate_zsh_completion.rb +168 -0
  26. data/ext/vagrant/vagrant_ssl/extconf.rb +24 -0
  27. data/ext/vagrant/vagrant_ssl/vagrant_ssl.c +37 -0
  28. data/ext/vagrant/vagrant_ssl/vagrant_ssl.h +19 -0
  29. data/keys/README.md +23 -0
  30. data/keys/vagrant +27 -0
  31. data/keys/vagrant.key.ed25519 +7 -0
  32. data/keys/vagrant.key.rsa +27 -0
  33. data/keys/vagrant.pub +2 -0
  34. data/keys/vagrant.pub.ed25519 +1 -0
  35. data/keys/vagrant.pub.rsa +1 -0
  36. data/lib/vagrant/action/builder.rb +356 -0
  37. data/lib/vagrant/action/builtin/box_add.rb +638 -0
  38. data/lib/vagrant/action/builtin/box_check_outdated.rb +116 -0
  39. data/lib/vagrant/action/builtin/box_remove.rb +181 -0
  40. data/lib/vagrant/action/builtin/box_update.rb +23 -0
  41. data/lib/vagrant/action/builtin/call.rb +69 -0
  42. data/lib/vagrant/action/builtin/cleanup_disks.rb +59 -0
  43. data/lib/vagrant/action/builtin/cloud_init_setup.rb +125 -0
  44. data/lib/vagrant/action/builtin/cloud_init_wait.rb +35 -0
  45. data/lib/vagrant/action/builtin/config_validate.rb +33 -0
  46. data/lib/vagrant/action/builtin/confirm.rb +51 -0
  47. data/lib/vagrant/action/builtin/delayed.rb +29 -0
  48. data/lib/vagrant/action/builtin/destroy_confirm.rb +24 -0
  49. data/lib/vagrant/action/builtin/disk.rb +55 -0
  50. data/lib/vagrant/action/builtin/env_set.rb +27 -0
  51. data/lib/vagrant/action/builtin/graceful_halt.rb +88 -0
  52. data/lib/vagrant/action/builtin/handle_box.rb +111 -0
  53. data/lib/vagrant/action/builtin/handle_box_url.rb +17 -0
  54. data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +300 -0
  55. data/lib/vagrant/action/builtin/has_provisioner.rb +39 -0
  56. data/lib/vagrant/action/builtin/is_env_set.rb +25 -0
  57. data/lib/vagrant/action/builtin/is_state.rb +35 -0
  58. data/lib/vagrant/action/builtin/lock.rb +60 -0
  59. data/lib/vagrant/action/builtin/message.rb +29 -0
  60. data/lib/vagrant/action/builtin/mixin_provisioners.rb +159 -0
  61. data/lib/vagrant/action/builtin/mixin_synced_folders.rb +267 -0
  62. data/lib/vagrant/action/builtin/prepare_clone.rb +41 -0
  63. data/lib/vagrant/action/builtin/provision.rb +146 -0
  64. data/lib/vagrant/action/builtin/provisioner_cleanup.rb +57 -0
  65. data/lib/vagrant/action/builtin/set_hostname.rb +34 -0
  66. data/lib/vagrant/action/builtin/ssh_exec.rb +47 -0
  67. data/lib/vagrant/action/builtin/ssh_run.rb +88 -0
  68. data/lib/vagrant/action/builtin/synced_folder_cleanup.rb +36 -0
  69. data/lib/vagrant/action/builtin/synced_folders.rb +154 -0
  70. data/lib/vagrant/action/builtin/trigger.rb +40 -0
  71. data/lib/vagrant/action/builtin/wait_for_communicator.rb +82 -0
  72. data/lib/vagrant/action/general/package.rb +248 -0
  73. data/lib/vagrant/action/general/package_setup_files.rb +54 -0
  74. data/lib/vagrant/action/general/package_setup_folders.rb +40 -0
  75. data/lib/vagrant/action/hook.rb +163 -0
  76. data/lib/vagrant/action/primary_runner.rb +18 -0
  77. data/lib/vagrant/action/runner.rb +112 -0
  78. data/lib/vagrant/action/warden.rb +126 -0
  79. data/lib/vagrant/action.rb +88 -0
  80. data/lib/vagrant/alias.rb +59 -0
  81. data/lib/vagrant/batch_action.rb +181 -0
  82. data/lib/vagrant/box.rb +260 -0
  83. data/lib/vagrant/box_collection.rb +563 -0
  84. data/lib/vagrant/box_metadata.rb +275 -0
  85. data/lib/vagrant/bundler.rb +936 -0
  86. data/lib/vagrant/capability_host.rb +180 -0
  87. data/lib/vagrant/cli.rb +122 -0
  88. data/lib/vagrant/config/loader.rb +323 -0
  89. data/lib/vagrant/config/v1/dummy_config.rb +16 -0
  90. data/lib/vagrant/config/v1/loader.rb +108 -0
  91. data/lib/vagrant/config/v1/root.rb +63 -0
  92. data/lib/vagrant/config/v1.rb +12 -0
  93. data/lib/vagrant/config/v2/dummy_config.rb +60 -0
  94. data/lib/vagrant/config/v2/loader.rb +154 -0
  95. data/lib/vagrant/config/v2/root.rb +122 -0
  96. data/lib/vagrant/config/v2/util.rb +24 -0
  97. data/lib/vagrant/config/v2.rb +13 -0
  98. data/lib/vagrant/config/version_base.rb +83 -0
  99. data/lib/vagrant/config.rb +64 -0
  100. data/lib/vagrant/environment.rb +1230 -0
  101. data/lib/vagrant/errors.rb +1158 -0
  102. data/lib/vagrant/guest.rb +72 -0
  103. data/lib/vagrant/host.rb +19 -0
  104. data/lib/vagrant/machine.rb +672 -0
  105. data/lib/vagrant/machine_index.rb +527 -0
  106. data/lib/vagrant/machine_state.rb +54 -0
  107. data/lib/vagrant/patches/builder/mkmf.rb +116 -0
  108. data/lib/vagrant/patches/fake_ftp.rb +28 -0
  109. data/lib/vagrant/patches/log4r.rb +54 -0
  110. data/lib/vagrant/patches/net-ssh.rb +76 -0
  111. data/lib/vagrant/patches/rubygems.rb +23 -0
  112. data/lib/vagrant/patches/timeout_error.rb +5 -0
  113. data/lib/vagrant/plugin/manager.rb +406 -0
  114. data/lib/vagrant/plugin/state_file.rb +136 -0
  115. data/lib/vagrant/plugin/v1/command.rb +171 -0
  116. data/lib/vagrant/plugin/v1/communicator.rb +101 -0
  117. data/lib/vagrant/plugin/v1/config.rb +115 -0
  118. data/lib/vagrant/plugin/v1/errors.rb +18 -0
  119. data/lib/vagrant/plugin/v1/guest.rb +95 -0
  120. data/lib/vagrant/plugin/v1/host.rb +69 -0
  121. data/lib/vagrant/plugin/v1/manager.rb +134 -0
  122. data/lib/vagrant/plugin/v1/plugin.rb +231 -0
  123. data/lib/vagrant/plugin/v1/provider.rb +71 -0
  124. data/lib/vagrant/plugin/v1/provisioner.rb +53 -0
  125. data/lib/vagrant/plugin/v1.rb +25 -0
  126. data/lib/vagrant/plugin/v2/command.rb +309 -0
  127. data/lib/vagrant/plugin/v2/communicator.rb +133 -0
  128. data/lib/vagrant/plugin/v2/components.rb +94 -0
  129. data/lib/vagrant/plugin/v2/config.rb +167 -0
  130. data/lib/vagrant/plugin/v2/errors.rb +18 -0
  131. data/lib/vagrant/plugin/v2/guest.rb +26 -0
  132. data/lib/vagrant/plugin/v2/host.rb +22 -0
  133. data/lib/vagrant/plugin/v2/manager.rb +306 -0
  134. data/lib/vagrant/plugin/v2/plugin.rb +296 -0
  135. data/lib/vagrant/plugin/v2/provider.rb +118 -0
  136. data/lib/vagrant/plugin/v2/provisioner.rb +56 -0
  137. data/lib/vagrant/plugin/v2/push.rb +30 -0
  138. data/lib/vagrant/plugin/v2/synced_folder.rb +113 -0
  139. data/lib/vagrant/plugin/v2/trigger.rb +367 -0
  140. data/lib/vagrant/plugin/v2.rb +33 -0
  141. data/lib/vagrant/plugin.rb +11 -0
  142. data/lib/vagrant/registry.rb +113 -0
  143. data/lib/vagrant/shared_helpers.rb +238 -0
  144. data/lib/vagrant/ui.rb +449 -0
  145. data/lib/vagrant/util/ansi_escape_code_remover.rb +37 -0
  146. data/lib/vagrant/util/busy.rb +62 -0
  147. data/lib/vagrant/util/caps.rb +51 -0
  148. data/lib/vagrant/util/checkpoint_client.rb +186 -0
  149. data/lib/vagrant/util/command_deprecation.rb +59 -0
  150. data/lib/vagrant/util/counter.rb +27 -0
  151. data/lib/vagrant/util/credential_scrubber.rb +74 -0
  152. data/lib/vagrant/util/curl_helper.rb +104 -0
  153. data/lib/vagrant/util/deep_merge.rb +23 -0
  154. data/lib/vagrant/util/directory.rb +22 -0
  155. data/lib/vagrant/util/downloader.rb +278 -0
  156. data/lib/vagrant/util/env.rb +56 -0
  157. data/lib/vagrant/util/experimental.rb +79 -0
  158. data/lib/vagrant/util/file_checksum.rb +77 -0
  159. data/lib/vagrant/util/file_mode.rb +15 -0
  160. data/lib/vagrant/util/file_mutex.rb +50 -0
  161. data/lib/vagrant/util/guest_hosts.rb +71 -0
  162. data/lib/vagrant/util/guest_inspection.rb +118 -0
  163. data/lib/vagrant/util/guest_networks.rb +107 -0
  164. data/lib/vagrant/util/hash_with_indifferent_access.rb +66 -0
  165. data/lib/vagrant/util/install_cli_autocomplete.rb +121 -0
  166. data/lib/vagrant/util/io.rb +53 -0
  167. data/lib/vagrant/util/ipv4_interfaces.rb +18 -0
  168. data/lib/vagrant/util/is_port_open.rb +31 -0
  169. data/lib/vagrant/util/keypair.rb +293 -0
  170. data/lib/vagrant/util/line_buffer.rb +63 -0
  171. data/lib/vagrant/util/line_ending_helpers.rb +17 -0
  172. data/lib/vagrant/util/logging_formatter.rb +70 -0
  173. data/lib/vagrant/util/map_command_options.rb +36 -0
  174. data/lib/vagrant/util/mime.rb +95 -0
  175. data/lib/vagrant/util/network_ip.rb +27 -0
  176. data/lib/vagrant/util/numeric.rb +92 -0
  177. data/lib/vagrant/util/platform.rb +737 -0
  178. data/lib/vagrant/util/powershell.rb +316 -0
  179. data/lib/vagrant/util/presence.rb +48 -0
  180. data/lib/vagrant/util/retryable.rb +34 -0
  181. data/lib/vagrant/util/safe_chdir.rb +36 -0
  182. data/lib/vagrant/util/safe_env.rb +17 -0
  183. data/lib/vagrant/util/safe_exec.rb +78 -0
  184. data/lib/vagrant/util/safe_puts.rb +34 -0
  185. data/lib/vagrant/util/scoped_hash_override.rb +47 -0
  186. data/lib/vagrant/util/shell_quote.rb +18 -0
  187. data/lib/vagrant/util/silence_warnings.rb +17 -0
  188. data/lib/vagrant/util/ssh.rb +267 -0
  189. data/lib/vagrant/util/stacked_proc_runner.rb +38 -0
  190. data/lib/vagrant/util/string_block_editor.rb +80 -0
  191. data/lib/vagrant/util/subprocess.rb +365 -0
  192. data/lib/vagrant/util/template_renderer.rb +91 -0
  193. data/lib/vagrant/util/uploader.rb +109 -0
  194. data/lib/vagrant/util/which.rb +56 -0
  195. data/lib/vagrant/util/windows_path.rb +41 -0
  196. data/lib/vagrant/util.rb +63 -0
  197. data/lib/vagrant/vagrantfile.rb +320 -0
  198. data/lib/vagrant/version.rb +10 -0
  199. data/lib/vagrant.rb +380 -0
  200. data/plugins/README.md +11 -0
  201. data/plugins/commands/autocomplete/command/install.rb +52 -0
  202. data/plugins/commands/autocomplete/command/root.rb +69 -0
  203. data/plugins/commands/autocomplete/plugin.rb +21 -0
  204. data/plugins/commands/box/command/add.rb +111 -0
  205. data/plugins/commands/box/command/download_mixins.rb +32 -0
  206. data/plugins/commands/box/command/list.rb +82 -0
  207. data/plugins/commands/box/command/outdated.rb +109 -0
  208. data/plugins/commands/box/command/prune.rb +136 -0
  209. data/plugins/commands/box/command/remove.rb +83 -0
  210. data/plugins/commands/box/command/repackage.rb +46 -0
  211. data/plugins/commands/box/command/root.rb +98 -0
  212. data/plugins/commands/box/command/update.rb +206 -0
  213. data/plugins/commands/box/plugin.rb +18 -0
  214. data/plugins/commands/cap/command.rb +83 -0
  215. data/plugins/commands/cap/plugin.rb +20 -0
  216. data/plugins/commands/cloud/auth/login.rb +90 -0
  217. data/plugins/commands/cloud/auth/logout.rb +37 -0
  218. data/plugins/commands/cloud/auth/middleware/add_authentication.rb +116 -0
  219. data/plugins/commands/cloud/auth/middleware/add_downloader_authentication.rb +68 -0
  220. data/plugins/commands/cloud/auth/plugin.rb +23 -0
  221. data/plugins/commands/cloud/auth/root.rb +77 -0
  222. data/plugins/commands/cloud/auth/whoami.rb +63 -0
  223. data/plugins/commands/cloud/box/create.rb +82 -0
  224. data/plugins/commands/cloud/box/delete.rb +74 -0
  225. data/plugins/commands/cloud/box/plugin.rb +22 -0
  226. data/plugins/commands/cloud/box/root.rb +81 -0
  227. data/plugins/commands/cloud/box/show.rb +133 -0
  228. data/plugins/commands/cloud/box/update.rb +82 -0
  229. data/plugins/commands/cloud/client/client.rb +257 -0
  230. data/plugins/commands/cloud/errors.rb +31 -0
  231. data/plugins/commands/cloud/list.rb +54 -0
  232. data/plugins/commands/cloud/locales/en.yml +197 -0
  233. data/plugins/commands/cloud/plugin.rb +48 -0
  234. data/plugins/commands/cloud/provider/create.rb +105 -0
  235. data/plugins/commands/cloud/provider/delete.rb +109 -0
  236. data/plugins/commands/cloud/provider/plugin.rb +22 -0
  237. data/plugins/commands/cloud/provider/root.rb +81 -0
  238. data/plugins/commands/cloud/provider/update.rb +102 -0
  239. data/plugins/commands/cloud/provider/upload.rb +100 -0
  240. data/plugins/commands/cloud/publish.rb +297 -0
  241. data/plugins/commands/cloud/root.rb +108 -0
  242. data/plugins/commands/cloud/search.rb +102 -0
  243. data/plugins/commands/cloud/util.rb +371 -0
  244. data/plugins/commands/cloud/version/create.rb +77 -0
  245. data/plugins/commands/cloud/version/delete.rb +78 -0
  246. data/plugins/commands/cloud/version/plugin.rb +22 -0
  247. data/plugins/commands/cloud/version/release.rb +78 -0
  248. data/plugins/commands/cloud/version/revoke.rb +79 -0
  249. data/plugins/commands/cloud/version/root.rb +85 -0
  250. data/plugins/commands/cloud/version/update.rb +76 -0
  251. data/plugins/commands/destroy/command.rb +79 -0
  252. data/plugins/commands/destroy/plugin.rb +21 -0
  253. data/plugins/commands/global-status/command.rb +114 -0
  254. data/plugins/commands/global-status/plugin.rb +21 -0
  255. data/plugins/commands/halt/command.rb +42 -0
  256. data/plugins/commands/halt/plugin.rb +21 -0
  257. data/plugins/commands/help/command.rb +19 -0
  258. data/plugins/commands/help/plugin.rb +20 -0
  259. data/plugins/commands/init/command.rb +110 -0
  260. data/plugins/commands/init/plugin.rb +21 -0
  261. data/plugins/commands/list-commands/command.rb +46 -0
  262. data/plugins/commands/list-commands/plugin.rb +21 -0
  263. data/plugins/commands/login/plugin.rb +20 -0
  264. data/plugins/commands/package/command.rb +104 -0
  265. data/plugins/commands/package/plugin.rb +21 -0
  266. data/plugins/commands/plugin/action/expunge_plugins.rb +77 -0
  267. data/plugins/commands/plugin/action/install_gem.rb +80 -0
  268. data/plugins/commands/plugin/action/license_plugin.rb +48 -0
  269. data/plugins/commands/plugin/action/list_plugins.rb +79 -0
  270. data/plugins/commands/plugin/action/plugin_exists_check.rb +28 -0
  271. data/plugins/commands/plugin/action/repair_plugins.rb +67 -0
  272. data/plugins/commands/plugin/action/uninstall_plugin.rb +28 -0
  273. data/plugins/commands/plugin/action/update_gems.rb +52 -0
  274. data/plugins/commands/plugin/action.rb +82 -0
  275. data/plugins/commands/plugin/command/base.rb +22 -0
  276. data/plugins/commands/plugin/command/expunge.rb +95 -0
  277. data/plugins/commands/plugin/command/install.rb +90 -0
  278. data/plugins/commands/plugin/command/license.rb +34 -0
  279. data/plugins/commands/plugin/command/list.rb +34 -0
  280. data/plugins/commands/plugin/command/mixin_install_opts.rb +34 -0
  281. data/plugins/commands/plugin/command/repair.rb +41 -0
  282. data/plugins/commands/plugin/command/root.rb +98 -0
  283. data/plugins/commands/plugin/command/uninstall.rb +38 -0
  284. data/plugins/commands/plugin/command/update.rb +42 -0
  285. data/plugins/commands/plugin/gem_helper.rb +89 -0
  286. data/plugins/commands/plugin/plugin.rb +23 -0
  287. data/plugins/commands/port/command.rb +91 -0
  288. data/plugins/commands/port/locales/en.yml +23 -0
  289. data/plugins/commands/port/plugin.rb +30 -0
  290. data/plugins/commands/powershell/command.rb +132 -0
  291. data/plugins/commands/powershell/errors.rb +29 -0
  292. data/plugins/commands/powershell/plugin.rb +34 -0
  293. data/plugins/commands/powershell/scripts/enable_psremoting.ps1 +63 -0
  294. data/plugins/commands/powershell/scripts/reset_trustedhosts.ps1 +15 -0
  295. data/plugins/commands/provider/command.rb +77 -0
  296. data/plugins/commands/provider/plugin.rb +21 -0
  297. data/plugins/commands/provision/command.rb +41 -0
  298. data/plugins/commands/provision/plugin.rb +21 -0
  299. data/plugins/commands/push/command.rb +78 -0
  300. data/plugins/commands/push/plugin.rb +20 -0
  301. data/plugins/commands/rdp/command.rb +114 -0
  302. data/plugins/commands/rdp/config.rb +29 -0
  303. data/plugins/commands/rdp/errors.rb +21 -0
  304. data/plugins/commands/rdp/plugin.rb +39 -0
  305. data/plugins/commands/reload/command.rb +67 -0
  306. data/plugins/commands/reload/plugin.rb +21 -0
  307. data/plugins/commands/resume/command.rb +46 -0
  308. data/plugins/commands/resume/plugin.rb +20 -0
  309. data/plugins/commands/snapshot/command/delete.rb +50 -0
  310. data/plugins/commands/snapshot/command/list.rb +50 -0
  311. data/plugins/commands/snapshot/command/pop.rb +52 -0
  312. data/plugins/commands/snapshot/command/push.rb +36 -0
  313. data/plugins/commands/snapshot/command/push_shared.rb +58 -0
  314. data/plugins/commands/snapshot/command/restore.rb +67 -0
  315. data/plugins/commands/snapshot/command/root.rb +95 -0
  316. data/plugins/commands/snapshot/command/save.rb +75 -0
  317. data/plugins/commands/snapshot/plugin.rb +18 -0
  318. data/plugins/commands/ssh/command.rb +80 -0
  319. data/plugins/commands/ssh/plugin.rb +20 -0
  320. data/plugins/commands/ssh_config/command.rb +78 -0
  321. data/plugins/commands/ssh_config/plugin.rb +21 -0
  322. data/plugins/commands/status/command.rb +59 -0
  323. data/plugins/commands/status/plugin.rb +21 -0
  324. data/plugins/commands/suspend/command.rb +49 -0
  325. data/plugins/commands/suspend/plugin.rb +21 -0
  326. data/plugins/commands/up/command.rb +194 -0
  327. data/plugins/commands/up/middleware/store_box_metadata.rb +40 -0
  328. data/plugins/commands/up/plugin.rb +25 -0
  329. data/plugins/commands/up/start_mixins.rb +58 -0
  330. data/plugins/commands/upload/command.rb +239 -0
  331. data/plugins/commands/upload/plugin.rb +20 -0
  332. data/plugins/commands/validate/command.rb +107 -0
  333. data/plugins/commands/validate/plugin.rb +20 -0
  334. data/plugins/commands/version/command.rb +60 -0
  335. data/plugins/commands/version/plugin.rb +21 -0
  336. data/plugins/commands/winrm/command.rb +71 -0
  337. data/plugins/commands/winrm/plugin.rb +20 -0
  338. data/plugins/commands/winrm_config/command.rb +129 -0
  339. data/plugins/commands/winrm_config/plugin.rb +20 -0
  340. data/plugins/communicators/ssh/communicator.rb +898 -0
  341. data/plugins/communicators/ssh/plugin.rb +22 -0
  342. data/plugins/communicators/winrm/command_filter.rb +49 -0
  343. data/plugins/communicators/winrm/command_filters/cat.rb +26 -0
  344. data/plugins/communicators/winrm/command_filters/chmod.rb +20 -0
  345. data/plugins/communicators/winrm/command_filters/chown.rb +20 -0
  346. data/plugins/communicators/winrm/command_filters/grep.rb +26 -0
  347. data/plugins/communicators/winrm/command_filters/mkdir.rb +30 -0
  348. data/plugins/communicators/winrm/command_filters/rm.rb +50 -0
  349. data/plugins/communicators/winrm/command_filters/test.rb +68 -0
  350. data/plugins/communicators/winrm/command_filters/uname.rb +30 -0
  351. data/plugins/communicators/winrm/command_filters/which.rb +27 -0
  352. data/plugins/communicators/winrm/communicator.rb +230 -0
  353. data/plugins/communicators/winrm/config.rb +76 -0
  354. data/plugins/communicators/winrm/errors.rb +72 -0
  355. data/plugins/communicators/winrm/helper.rb +91 -0
  356. data/plugins/communicators/winrm/plugin.rb +69 -0
  357. data/plugins/communicators/winrm/shell.rb +267 -0
  358. data/plugins/communicators/winssh/communicator.rb +252 -0
  359. data/plugins/communicators/winssh/config.rb +37 -0
  360. data/plugins/communicators/winssh/plugin.rb +24 -0
  361. data/plugins/guests/alma/cap/flavor.rb +26 -0
  362. data/plugins/guests/alma/guest.rb +13 -0
  363. data/plugins/guests/alma/plugin.rb +23 -0
  364. data/plugins/guests/alpine/cap/change_host_name.rb +85 -0
  365. data/plugins/guests/alpine/cap/configure_networks.rb +67 -0
  366. data/plugins/guests/alpine/cap/halt.rb +24 -0
  367. data/plugins/guests/alpine/cap/nfs_client.rb +17 -0
  368. data/plugins/guests/alpine/cap/rsync.rb +20 -0
  369. data/plugins/guests/alpine/cap/smb.rb +16 -0
  370. data/plugins/guests/alpine/guest.rb +14 -0
  371. data/plugins/guests/alpine/plugin.rb +69 -0
  372. data/plugins/guests/alt/cap/change_host_name.rb +55 -0
  373. data/plugins/guests/alt/cap/configure_networks.rb +132 -0
  374. data/plugins/guests/alt/cap/flavor.rb +66 -0
  375. data/plugins/guests/alt/cap/network_scripts_dir.rb +14 -0
  376. data/plugins/guests/alt/cap/rsync.rb +16 -0
  377. data/plugins/guests/alt/guest.rb +12 -0
  378. data/plugins/guests/alt/plugin.rb +43 -0
  379. data/plugins/guests/amazon/cap/configure_networks.rb +26 -0
  380. data/plugins/guests/amazon/cap/flavor.rb +17 -0
  381. data/plugins/guests/amazon/guest.rb +12 -0
  382. data/plugins/guests/amazon/plugin.rb +28 -0
  383. data/plugins/guests/arch/cap/change_host_name.rb +18 -0
  384. data/plugins/guests/arch/cap/configure_networks.rb +81 -0
  385. data/plugins/guests/arch/cap/nfs.rb +36 -0
  386. data/plugins/guests/arch/cap/rsync.rb +19 -0
  387. data/plugins/guests/arch/cap/smb.rb +20 -0
  388. data/plugins/guests/arch/guest.rb +14 -0
  389. data/plugins/guests/arch/plugin.rb +53 -0
  390. data/plugins/guests/atomic/cap/change_host_name.rb +18 -0
  391. data/plugins/guests/atomic/cap/docker.rb +14 -0
  392. data/plugins/guests/atomic/guest.rb +14 -0
  393. data/plugins/guests/atomic/plugin.rb +28 -0
  394. data/plugins/guests/bsd/cap/file_system.rb +80 -0
  395. data/plugins/guests/bsd/cap/halt.rb +19 -0
  396. data/plugins/guests/bsd/cap/mount_virtualbox_shared_folder.rb +19 -0
  397. data/plugins/guests/bsd/cap/nfs.rb +50 -0
  398. data/plugins/guests/bsd/cap/public_key.rb +69 -0
  399. data/plugins/guests/bsd/guest.rb +12 -0
  400. data/plugins/guests/bsd/plugin.rb +58 -0
  401. data/plugins/guests/centos/cap/flavor.rb +32 -0
  402. data/plugins/guests/centos/guest.rb +14 -0
  403. data/plugins/guests/centos/plugin.rb +23 -0
  404. data/plugins/guests/coreos/cap/change_host_name.rb +41 -0
  405. data/plugins/guests/coreos/cap/configure_networks.rb +138 -0
  406. data/plugins/guests/coreos/cap/docker.rb +14 -0
  407. data/plugins/guests/coreos/guest.rb +14 -0
  408. data/plugins/guests/coreos/plugin.rb +33 -0
  409. data/plugins/guests/darwin/cap/change_host_name.rb +43 -0
  410. data/plugins/guests/darwin/cap/choose_addressable_ip_addr.rb +23 -0
  411. data/plugins/guests/darwin/cap/configure_networks.rb +126 -0
  412. data/plugins/guests/darwin/cap/darwin_version.rb +43 -0
  413. data/plugins/guests/darwin/cap/halt.rb +21 -0
  414. data/plugins/guests/darwin/cap/mount_smb_shared_folder.rb +46 -0
  415. data/plugins/guests/darwin/cap/mount_vmware_shared_folder.rb +135 -0
  416. data/plugins/guests/darwin/cap/rsync.rb +14 -0
  417. data/plugins/guests/darwin/cap/shell_expand_guest_path.rb +30 -0
  418. data/plugins/guests/darwin/cap/verify_vmware_hgfs.rb +15 -0
  419. data/plugins/guests/darwin/guest.rb +18 -0
  420. data/plugins/guests/darwin/plugin.rb +93 -0
  421. data/plugins/guests/debian/cap/change_host_name.rb +110 -0
  422. data/plugins/guests/debian/cap/configure_networks.rb +205 -0
  423. data/plugins/guests/debian/cap/nfs.rb +19 -0
  424. data/plugins/guests/debian/cap/rsync.rb +18 -0
  425. data/plugins/guests/debian/cap/smb.rb +20 -0
  426. data/plugins/guests/debian/guest.rb +13 -0
  427. data/plugins/guests/debian/plugin.rb +43 -0
  428. data/plugins/guests/dragonflybsd/guest.rb +12 -0
  429. data/plugins/guests/dragonflybsd/plugin.rb +18 -0
  430. data/plugins/guests/elementary/guest.rb +13 -0
  431. data/plugins/guests/elementary/plugin.rb +18 -0
  432. data/plugins/guests/esxi/cap/change_host_name.rb +16 -0
  433. data/plugins/guests/esxi/cap/configure_networks.rb +41 -0
  434. data/plugins/guests/esxi/cap/halt.rb +19 -0
  435. data/plugins/guests/esxi/cap/mount_nfs_folder.rb +43 -0
  436. data/plugins/guests/esxi/cap/public_key.rb +68 -0
  437. data/plugins/guests/esxi/guest.rb +14 -0
  438. data/plugins/guests/esxi/plugin.rb +49 -0
  439. data/plugins/guests/fedora/cap/flavor.rb +26 -0
  440. data/plugins/guests/fedora/guest.rb +14 -0
  441. data/plugins/guests/fedora/plugin.rb +23 -0
  442. data/plugins/guests/freebsd/cap/change_host_name.rb +34 -0
  443. data/plugins/guests/freebsd/cap/configure_networks.rb +70 -0
  444. data/plugins/guests/freebsd/cap/mount_virtualbox_shared_folder.rb +79 -0
  445. data/plugins/guests/freebsd/cap/rsync.rb +18 -0
  446. data/plugins/guests/freebsd/cap/shell_expand_guest_path.rb +31 -0
  447. data/plugins/guests/freebsd/guest.rb +17 -0
  448. data/plugins/guests/freebsd/plugin.rb +68 -0
  449. data/plugins/guests/funtoo/cap/configure_networks.rb +50 -0
  450. data/plugins/guests/funtoo/guest.rb +12 -0
  451. data/plugins/guests/funtoo/plugin.rb +23 -0
  452. data/plugins/guests/gentoo/cap/change_host_name.rb +27 -0
  453. data/plugins/guests/gentoo/cap/configure_networks.rb +92 -0
  454. data/plugins/guests/gentoo/guest.rb +12 -0
  455. data/plugins/guests/gentoo/plugin.rb +28 -0
  456. data/plugins/guests/haiku/cap/change_host_name.rb +36 -0
  457. data/plugins/guests/haiku/cap/halt.rb +19 -0
  458. data/plugins/guests/haiku/cap/insert_public_key.rb +24 -0
  459. data/plugins/guests/haiku/cap/remove_public_key.rb +24 -0
  460. data/plugins/guests/haiku/cap/rsync.rb +22 -0
  461. data/plugins/guests/haiku/guest.rb +14 -0
  462. data/plugins/guests/haiku/plugin.rb +53 -0
  463. data/plugins/guests/kali/guest.rb +13 -0
  464. data/plugins/guests/kali/plugin.rb +18 -0
  465. data/plugins/guests/linux/cap/change_host_name.rb +49 -0
  466. data/plugins/guests/linux/cap/choose_addressable_ip_addr.rb +22 -0
  467. data/plugins/guests/linux/cap/file_system.rb +82 -0
  468. data/plugins/guests/linux/cap/halt.rb +27 -0
  469. data/plugins/guests/linux/cap/mount_smb_shared_folder.rb +95 -0
  470. data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +78 -0
  471. data/plugins/guests/linux/cap/network_interfaces.rb +89 -0
  472. data/plugins/guests/linux/cap/nfs.rb +51 -0
  473. data/plugins/guests/linux/cap/persist_mount_shared_folder.rb +77 -0
  474. data/plugins/guests/linux/cap/port.rb +14 -0
  475. data/plugins/guests/linux/cap/public_key.rb +65 -0
  476. data/plugins/guests/linux/cap/read_ip_address.rb +28 -0
  477. data/plugins/guests/linux/cap/reboot.rb +74 -0
  478. data/plugins/guests/linux/cap/rsync.rb +14 -0
  479. data/plugins/guests/linux/cap/shell_expand_guest_path.rb +35 -0
  480. data/plugins/guests/linux/guest.rb +26 -0
  481. data/plugins/guests/linux/plugin.rb +139 -0
  482. data/plugins/guests/mint/guest.rb +13 -0
  483. data/plugins/guests/mint/plugin.rb +18 -0
  484. data/plugins/guests/netbsd/cap/change_host_name.rb +20 -0
  485. data/plugins/guests/netbsd/cap/configure_networks.rb +56 -0
  486. data/plugins/guests/netbsd/cap/rsync.rb +23 -0
  487. data/plugins/guests/netbsd/cap/shell_expand_guest_path.rb +30 -0
  488. data/plugins/guests/netbsd/guest.rb +14 -0
  489. data/plugins/guests/netbsd/plugin.rb +58 -0
  490. data/plugins/guests/nixos/cap/change_host_name.rb +47 -0
  491. data/plugins/guests/nixos/cap/configure_networks.rb +135 -0
  492. data/plugins/guests/nixos/cap/nfs_client.rb +14 -0
  493. data/plugins/guests/nixos/guest.rb +20 -0
  494. data/plugins/guests/nixos/plugin.rb +33 -0
  495. data/plugins/guests/omnios/cap/change_host_name.rb +23 -0
  496. data/plugins/guests/omnios/cap/mount_nfs_folder.rb +24 -0
  497. data/plugins/guests/omnios/cap/rsync.rb +14 -0
  498. data/plugins/guests/omnios/guest.rb +12 -0
  499. data/plugins/guests/omnios/plugin.rb +33 -0
  500. data/plugins/guests/openbsd/cap/change_host_name.rb +35 -0
  501. data/plugins/guests/openbsd/cap/configure_networks.rb +49 -0
  502. data/plugins/guests/openbsd/cap/halt.rb +22 -0
  503. data/plugins/guests/openbsd/cap/rsync.rb +32 -0
  504. data/plugins/guests/openbsd/cap/shell_expand_guest_path.rb +30 -0
  505. data/plugins/guests/openbsd/guest.rb +14 -0
  506. data/plugins/guests/openbsd/plugin.rb +63 -0
  507. data/plugins/guests/openwrt/cap/change_host_name.rb +22 -0
  508. data/plugins/guests/openwrt/cap/halt.rb +19 -0
  509. data/plugins/guests/openwrt/cap/insert_public_key.rb +23 -0
  510. data/plugins/guests/openwrt/cap/remove_public_key.rb +25 -0
  511. data/plugins/guests/openwrt/cap/rsync.rb +38 -0
  512. data/plugins/guests/openwrt/guest.rb +26 -0
  513. data/plugins/guests/openwrt/plugin.rb +64 -0
  514. data/plugins/guests/photon/cap/change_host_name.rb +22 -0
  515. data/plugins/guests/photon/cap/configure_networks.rb +33 -0
  516. data/plugins/guests/photon/cap/docker.rb +14 -0
  517. data/plugins/guests/photon/guest.rb +12 -0
  518. data/plugins/guests/photon/plugin.rb +33 -0
  519. data/plugins/guests/pld/cap/change_host_name.rb +26 -0
  520. data/plugins/guests/pld/cap/flavor.rb +14 -0
  521. data/plugins/guests/pld/cap/network_scripts_dir.rb +14 -0
  522. data/plugins/guests/pld/guest.rb +12 -0
  523. data/plugins/guests/pld/plugin.rb +33 -0
  524. data/plugins/guests/redhat/cap/change_host_name.rb +59 -0
  525. data/plugins/guests/redhat/cap/configure_networks.rb +113 -0
  526. data/plugins/guests/redhat/cap/flavor.rb +32 -0
  527. data/plugins/guests/redhat/cap/network_scripts_dir.rb +18 -0
  528. data/plugins/guests/redhat/cap/nfs_client.rb +33 -0
  529. data/plugins/guests/redhat/cap/rsync.rb +20 -0
  530. data/plugins/guests/redhat/cap/smb.rb +23 -0
  531. data/plugins/guests/redhat/guest.rb +12 -0
  532. data/plugins/guests/redhat/plugin.rb +53 -0
  533. data/plugins/guests/rocky/cap/flavor.rb +26 -0
  534. data/plugins/guests/rocky/guest.rb +13 -0
  535. data/plugins/guests/rocky/plugin.rb +23 -0
  536. data/plugins/guests/slackware/cap/change_host_name.rb +24 -0
  537. data/plugins/guests/slackware/cap/configure_networks.rb +51 -0
  538. data/plugins/guests/slackware/guest.rb +12 -0
  539. data/plugins/guests/slackware/plugin.rb +28 -0
  540. data/plugins/guests/smartos/cap/change_host_name.rb +29 -0
  541. data/plugins/guests/smartos/cap/configure_networks.rb +30 -0
  542. data/plugins/guests/smartos/cap/halt.rb +25 -0
  543. data/plugins/guests/smartos/cap/insert_public_key.rb +31 -0
  544. data/plugins/guests/smartos/cap/mount_nfs.rb +31 -0
  545. data/plugins/guests/smartos/cap/remove_public_key.rb +28 -0
  546. data/plugins/guests/smartos/cap/rsync.rb +36 -0
  547. data/plugins/guests/smartos/config.rb +18 -0
  548. data/plugins/guests/smartos/guest.rb +14 -0
  549. data/plugins/guests/smartos/plugin.rb +74 -0
  550. data/plugins/guests/solaris/cap/change_host_name.rb +20 -0
  551. data/plugins/guests/solaris/cap/configure_networks.rb +28 -0
  552. data/plugins/guests/solaris/cap/file_system.rb +80 -0
  553. data/plugins/guests/solaris/cap/halt.rb +25 -0
  554. data/plugins/guests/solaris/cap/insert_public_key.rb +25 -0
  555. data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +44 -0
  556. data/plugins/guests/solaris/cap/remove_public_key.rb +25 -0
  557. data/plugins/guests/solaris/cap/rsync.rb +36 -0
  558. data/plugins/guests/solaris/config.rb +34 -0
  559. data/plugins/guests/solaris/guest.rb +17 -0
  560. data/plugins/guests/solaris/plugin.rb +88 -0
  561. data/plugins/guests/solaris11/cap/change_host_name.rb +26 -0
  562. data/plugins/guests/solaris11/cap/configure_networks.rb +37 -0
  563. data/plugins/guests/solaris11/config.rb +37 -0
  564. data/plugins/guests/solaris11/guest.rb +22 -0
  565. data/plugins/guests/solaris11/plugin.rb +42 -0
  566. data/plugins/guests/suse/cap/change_host_name.rb +48 -0
  567. data/plugins/guests/suse/cap/configure_networks.rb +53 -0
  568. data/plugins/guests/suse/cap/halt.rb +23 -0
  569. data/plugins/guests/suse/cap/network_scripts_dir.rb +14 -0
  570. data/plugins/guests/suse/cap/nfs_client.rb +18 -0
  571. data/plugins/guests/suse/cap/rsync.rb +18 -0
  572. data/plugins/guests/suse/guest.rb +12 -0
  573. data/plugins/guests/suse/plugin.rb +53 -0
  574. data/plugins/guests/tinycore/cap/change_host_name.rb +16 -0
  575. data/plugins/guests/tinycore/cap/configure_networks.rb +29 -0
  576. data/plugins/guests/tinycore/cap/halt.rb +19 -0
  577. data/plugins/guests/tinycore/cap/mount_nfs.rb +44 -0
  578. data/plugins/guests/tinycore/cap/rsync.rb +20 -0
  579. data/plugins/guests/tinycore/guest.rb +13 -0
  580. data/plugins/guests/tinycore/plugin.rb +43 -0
  581. data/plugins/guests/trisquel/guest.rb +12 -0
  582. data/plugins/guests/trisquel/plugin.rb +18 -0
  583. data/plugins/guests/ubuntu/guest.rb +13 -0
  584. data/plugins/guests/ubuntu/plugin.rb +18 -0
  585. data/plugins/guests/windows/cap/change_host_name.rb +36 -0
  586. data/plugins/guests/windows/cap/choose_addressable_ip_addr.rb +23 -0
  587. data/plugins/guests/windows/cap/configure_networks.rb +83 -0
  588. data/plugins/guests/windows/cap/file_system.rb +68 -0
  589. data/plugins/guests/windows/cap/halt.rb +19 -0
  590. data/plugins/guests/windows/cap/mount_shared_folder.rb +60 -0
  591. data/plugins/guests/windows/cap/public_key.rb +87 -0
  592. data/plugins/guests/windows/cap/reboot.rb +63 -0
  593. data/plugins/guests/windows/cap/rsync.rb +29 -0
  594. data/plugins/guests/windows/config.rb +26 -0
  595. data/plugins/guests/windows/errors.rb +25 -0
  596. data/plugins/guests/windows/guest.rb +13 -0
  597. data/plugins/guests/windows/guest_network.rb +128 -0
  598. data/plugins/guests/windows/plugin.rb +116 -0
  599. data/plugins/guests/windows/scripts/mount_volume.ps1.erb +48 -0
  600. data/plugins/guests/windows/scripts/reboot_detect.ps1 +50 -0
  601. data/plugins/guests/windows/scripts/set_work_network.ps1 +9 -0
  602. data/plugins/guests/windows/scripts/winrs_v3_get_adapters.ps1 +14 -0
  603. data/plugins/hosts/alt/cap/nfs.rb +46 -0
  604. data/plugins/hosts/alt/host.rb +14 -0
  605. data/plugins/hosts/alt/plugin.rb +35 -0
  606. data/plugins/hosts/arch/cap/nfs.rb +22 -0
  607. data/plugins/hosts/arch/host.rb +14 -0
  608. data/plugins/hosts/arch/plugin.rb +35 -0
  609. data/plugins/hosts/bsd/cap/nfs.rb +218 -0
  610. data/plugins/hosts/bsd/cap/path.rb +14 -0
  611. data/plugins/hosts/bsd/cap/ssh.rb +19 -0
  612. data/plugins/hosts/bsd/host.rb +15 -0
  613. data/plugins/hosts/bsd/plugin.rb +63 -0
  614. data/plugins/hosts/darwin/cap/configured_ip_addresses.rb +21 -0
  615. data/plugins/hosts/darwin/cap/fs_iso.rb +52 -0
  616. data/plugins/hosts/darwin/cap/nfs.rb +14 -0
  617. data/plugins/hosts/darwin/cap/path.rb +66 -0
  618. data/plugins/hosts/darwin/cap/provider_install_virtualbox.rb +64 -0
  619. data/plugins/hosts/darwin/cap/rdp.rb +64 -0
  620. data/plugins/hosts/darwin/cap/smb.rb +128 -0
  621. data/plugins/hosts/darwin/cap/version.rb +26 -0
  622. data/plugins/hosts/darwin/host.rb +14 -0
  623. data/plugins/hosts/darwin/plugin.rb +83 -0
  624. data/plugins/hosts/darwin/scripts/install_virtualbox.sh +18 -0
  625. data/plugins/hosts/freebsd/cap/nfs.rb +34 -0
  626. data/plugins/hosts/freebsd/host.rb +15 -0
  627. data/plugins/hosts/freebsd/plugin.rb +34 -0
  628. data/plugins/hosts/gentoo/cap/nfs.rb +42 -0
  629. data/plugins/hosts/gentoo/host.rb +14 -0
  630. data/plugins/hosts/gentoo/plugin.rb +31 -0
  631. data/plugins/hosts/linux/cap/fs_iso.rb +52 -0
  632. data/plugins/hosts/linux/cap/nfs.rb +296 -0
  633. data/plugins/hosts/linux/cap/rdp.rb +59 -0
  634. data/plugins/hosts/linux/cap/ssh.rb +19 -0
  635. data/plugins/hosts/linux/host.rb +15 -0
  636. data/plugins/hosts/linux/plugin.rb +70 -0
  637. data/plugins/hosts/null/host.rb +15 -0
  638. data/plugins/hosts/null/plugin.rb +18 -0
  639. data/plugins/hosts/redhat/cap/nfs.rb +58 -0
  640. data/plugins/hosts/redhat/host.rb +31 -0
  641. data/plugins/hosts/redhat/plugin.rb +30 -0
  642. data/plugins/hosts/slackware/cap/nfs.rb +18 -0
  643. data/plugins/hosts/slackware/host.rb +15 -0
  644. data/plugins/hosts/slackware/plugin.rb +30 -0
  645. data/plugins/hosts/suse/cap/nfs.rb +22 -0
  646. data/plugins/hosts/suse/host.rb +30 -0
  647. data/plugins/hosts/suse/plugin.rb +33 -0
  648. data/plugins/hosts/void/cap/nfs.rb +27 -0
  649. data/plugins/hosts/void/host.rb +23 -0
  650. data/plugins/hosts/void/plugin.rb +33 -0
  651. data/plugins/hosts/windows/cap/configured_ip_addresses.rb +32 -0
  652. data/plugins/hosts/windows/cap/fs_iso.rb +51 -0
  653. data/plugins/hosts/windows/cap/nfs.rb +14 -0
  654. data/plugins/hosts/windows/cap/provider_install_virtualbox.rb +65 -0
  655. data/plugins/hosts/windows/cap/ps.rb +50 -0
  656. data/plugins/hosts/windows/cap/rdp.rb +33 -0
  657. data/plugins/hosts/windows/cap/smb.rb +203 -0
  658. data/plugins/hosts/windows/cap/ssh.rb +29 -0
  659. data/plugins/hosts/windows/host.rb +26 -0
  660. data/plugins/hosts/windows/plugin.rb +83 -0
  661. data/plugins/hosts/windows/scripts/check_credentials.ps1 +37 -0
  662. data/plugins/hosts/windows/scripts/host_info.ps1 +24 -0
  663. data/plugins/hosts/windows/scripts/install_virtualbox.ps1 +40 -0
  664. data/plugins/hosts/windows/scripts/set_share.ps1 +40 -0
  665. data/plugins/hosts/windows/scripts/set_ssh_key_permissions.ps1 +20 -0
  666. data/plugins/hosts/windows/scripts/unset_share.ps1 +13 -0
  667. data/plugins/hosts/windows/scripts/utils/VagrantSSH/VagrantSSH.psm1 +29 -0
  668. data/plugins/kernel_v1/config/nfs.rb +23 -0
  669. data/plugins/kernel_v1/config/package.rb +20 -0
  670. data/plugins/kernel_v1/config/ssh.rb +50 -0
  671. data/plugins/kernel_v1/config/vagrant.rb +34 -0
  672. data/plugins/kernel_v1/config/vm.rb +191 -0
  673. data/plugins/kernel_v1/plugin.rb +47 -0
  674. data/plugins/kernel_v2/config/cloud_init.rb +136 -0
  675. data/plugins/kernel_v2/config/disk.rb +224 -0
  676. data/plugins/kernel_v2/config/package.rb +24 -0
  677. data/plugins/kernel_v2/config/push.rb +155 -0
  678. data/plugins/kernel_v2/config/ssh.rb +93 -0
  679. data/plugins/kernel_v2/config/ssh_connect.rb +194 -0
  680. data/plugins/kernel_v2/config/trigger.rb +214 -0
  681. data/plugins/kernel_v2/config/vagrant.rb +99 -0
  682. data/plugins/kernel_v2/config/vm.rb +1062 -0
  683. data/plugins/kernel_v2/config/vm_provisioner.rb +202 -0
  684. data/plugins/kernel_v2/config/vm_subvm.rb +33 -0
  685. data/plugins/kernel_v2/config/vm_trigger.rb +297 -0
  686. data/plugins/kernel_v2/plugin.rb +71 -0
  687. data/plugins/providers/docker/action/build.rb +99 -0
  688. data/plugins/providers/docker/action/compare_synced_folders.rb +65 -0
  689. data/plugins/providers/docker/action/connect_networks.rb +80 -0
  690. data/plugins/providers/docker/action/create.rb +162 -0
  691. data/plugins/providers/docker/action/destroy.rb +34 -0
  692. data/plugins/providers/docker/action/destroy_build_image.rb +51 -0
  693. data/plugins/providers/docker/action/destroy_network.rb +53 -0
  694. data/plugins/providers/docker/action/forwarded_ports.rb +36 -0
  695. data/plugins/providers/docker/action/has_ssh.rb +21 -0
  696. data/plugins/providers/docker/action/host_machine.rb +75 -0
  697. data/plugins/providers/docker/action/host_machine_build_dir.rb +48 -0
  698. data/plugins/providers/docker/action/host_machine_port_checker.rb +34 -0
  699. data/plugins/providers/docker/action/host_machine_port_warning.rb +40 -0
  700. data/plugins/providers/docker/action/host_machine_required.rb +20 -0
  701. data/plugins/providers/docker/action/host_machine_sync_folders.rb +175 -0
  702. data/plugins/providers/docker/action/host_machine_sync_folders_disable.rb +91 -0
  703. data/plugins/providers/docker/action/init_state.rb +23 -0
  704. data/plugins/providers/docker/action/is_build.rb +19 -0
  705. data/plugins/providers/docker/action/is_host_machine_created.rb +32 -0
  706. data/plugins/providers/docker/action/login.rb +51 -0
  707. data/plugins/providers/docker/action/prepare_forwarded_port_collision_params.rb +64 -0
  708. data/plugins/providers/docker/action/prepare_networks.rb +372 -0
  709. data/plugins/providers/docker/action/prepare_nfs_settings.rb +60 -0
  710. data/plugins/providers/docker/action/prepare_nfs_valid_ids.rb +22 -0
  711. data/plugins/providers/docker/action/prepare_ssh.rb +48 -0
  712. data/plugins/providers/docker/action/pull.rb +30 -0
  713. data/plugins/providers/docker/action/start.rb +24 -0
  714. data/plugins/providers/docker/action/stop.rb +24 -0
  715. data/plugins/providers/docker/action/wait_for_running.rb +70 -0
  716. data/plugins/providers/docker/action.rb +319 -0
  717. data/plugins/providers/docker/cap/has_communicator.rb +14 -0
  718. data/plugins/providers/docker/cap/proxy_machine.rb +15 -0
  719. data/plugins/providers/docker/cap/public_address.rb +26 -0
  720. data/plugins/providers/docker/command/exec.rb +112 -0
  721. data/plugins/providers/docker/command/logs.rb +111 -0
  722. data/plugins/providers/docker/command/run.rb +76 -0
  723. data/plugins/providers/docker/communicator.rb +199 -0
  724. data/plugins/providers/docker/config.rb +362 -0
  725. data/plugins/providers/docker/driver/compose.rb +315 -0
  726. data/plugins/providers/docker/driver.rb +416 -0
  727. data/plugins/providers/docker/errors.rb +108 -0
  728. data/plugins/providers/docker/executor/local.rb +48 -0
  729. data/plugins/providers/docker/executor/vagrant.rb +88 -0
  730. data/plugins/providers/docker/hostmachine/Vagrantfile +3 -0
  731. data/plugins/providers/docker/plugin.rb +89 -0
  732. data/plugins/providers/docker/provider.rb +215 -0
  733. data/plugins/providers/docker/synced_folder.rb +35 -0
  734. data/plugins/providers/hyperv/action/check_access.rb +27 -0
  735. data/plugins/providers/hyperv/action/check_enabled.rb +25 -0
  736. data/plugins/providers/hyperv/action/configure.rb +115 -0
  737. data/plugins/providers/hyperv/action/delete_vm.rb +28 -0
  738. data/plugins/providers/hyperv/action/export.rb +45 -0
  739. data/plugins/providers/hyperv/action/import.rb +86 -0
  740. data/plugins/providers/hyperv/action/is_windows.rb +19 -0
  741. data/plugins/providers/hyperv/action/message_will_not_destroy.rb +20 -0
  742. data/plugins/providers/hyperv/action/net_set_mac.rb +23 -0
  743. data/plugins/providers/hyperv/action/net_set_vlan.rb +23 -0
  744. data/plugins/providers/hyperv/action/package.rb +19 -0
  745. data/plugins/providers/hyperv/action/package_metadata_json.rb +37 -0
  746. data/plugins/providers/hyperv/action/package_setup_files.rb +19 -0
  747. data/plugins/providers/hyperv/action/package_setup_folders.rb +21 -0
  748. data/plugins/providers/hyperv/action/package_vagrantfile.rb +37 -0
  749. data/plugins/providers/hyperv/action/read_guest_ip.rb +45 -0
  750. data/plugins/providers/hyperv/action/read_state.rb +33 -0
  751. data/plugins/providers/hyperv/action/resume_vm.rb +20 -0
  752. data/plugins/providers/hyperv/action/set_name.rb +46 -0
  753. data/plugins/providers/hyperv/action/snapshot_delete.rb +30 -0
  754. data/plugins/providers/hyperv/action/snapshot_restore.rb +26 -0
  755. data/plugins/providers/hyperv/action/snapshot_save.rb +30 -0
  756. data/plugins/providers/hyperv/action/start_instance.rb +20 -0
  757. data/plugins/providers/hyperv/action/stop_instance.rb +20 -0
  758. data/plugins/providers/hyperv/action/suspend_vm.rb +20 -0
  759. data/plugins/providers/hyperv/action/wait_for_ip_address.rb +62 -0
  760. data/plugins/providers/hyperv/action.rb +326 -0
  761. data/plugins/providers/hyperv/cap/cleanup_disks.rb +92 -0
  762. data/plugins/providers/hyperv/cap/configure_disks.rb +248 -0
  763. data/plugins/providers/hyperv/cap/public_address.rb +18 -0
  764. data/plugins/providers/hyperv/cap/snapshot_list.rb +14 -0
  765. data/plugins/providers/hyperv/cap/validate_disk_ext.rb +37 -0
  766. data/plugins/providers/hyperv/config.rb +148 -0
  767. data/plugins/providers/hyperv/driver.rb +368 -0
  768. data/plugins/providers/hyperv/errors.rb +49 -0
  769. data/plugins/providers/hyperv/plugin.rb +74 -0
  770. data/plugins/providers/hyperv/provider.rb +116 -0
  771. data/plugins/providers/hyperv/scripts/add_dvd.ps1 +18 -0
  772. data/plugins/providers/hyperv/scripts/attach_disk_drive.ps1 +31 -0
  773. data/plugins/providers/hyperv/scripts/check_hyperv.ps1 +11 -0
  774. data/plugins/providers/hyperv/scripts/check_hyperv_access.ps1 +17 -0
  775. data/plugins/providers/hyperv/scripts/clone_vhd.ps1 +21 -0
  776. data/plugins/providers/hyperv/scripts/configure_vm.ps1 +130 -0
  777. data/plugins/providers/hyperv/scripts/create_snapshot.ps1 +27 -0
  778. data/plugins/providers/hyperv/scripts/delete_snapshot.ps1 +19 -0
  779. data/plugins/providers/hyperv/scripts/delete_vm.ps1 +22 -0
  780. data/plugins/providers/hyperv/scripts/dismount_vhd.ps1 +16 -0
  781. data/plugins/providers/hyperv/scripts/export_vm.ps1 +32 -0
  782. data/plugins/providers/hyperv/scripts/file_sync.ps1 +123 -0
  783. data/plugins/providers/hyperv/scripts/get_network_config.ps1 +68 -0
  784. data/plugins/providers/hyperv/scripts/get_network_mac.ps1 +35 -0
  785. data/plugins/providers/hyperv/scripts/get_scsi_controller.ps1 +19 -0
  786. data/plugins/providers/hyperv/scripts/get_switches.ps1 +13 -0
  787. data/plugins/providers/hyperv/scripts/get_vhd.ps1 +19 -0
  788. data/plugins/providers/hyperv/scripts/get_vm_status.ps1 +52 -0
  789. data/plugins/providers/hyperv/scripts/has_vmcx_support.ps1 +12 -0
  790. data/plugins/providers/hyperv/scripts/import_vm.ps1 +40 -0
  791. data/plugins/providers/hyperv/scripts/list_hdds.ps1 +20 -0
  792. data/plugins/providers/hyperv/scripts/list_snapshots.ps1 +22 -0
  793. data/plugins/providers/hyperv/scripts/new_vhd.ps1 +34 -0
  794. data/plugins/providers/hyperv/scripts/remove_disk_drive.ps1 +28 -0
  795. data/plugins/providers/hyperv/scripts/remove_dvd.ps1 +21 -0
  796. data/plugins/providers/hyperv/scripts/resize_disk_drive.ps1 +21 -0
  797. data/plugins/providers/hyperv/scripts/restore_snapshot.ps1 +20 -0
  798. data/plugins/providers/hyperv/scripts/resume_vm.ps1 +19 -0
  799. data/plugins/providers/hyperv/scripts/set_enhanced_session_transport_type.ps1 +36 -0
  800. data/plugins/providers/hyperv/scripts/set_name.ps1 +27 -0
  801. data/plugins/providers/hyperv/scripts/set_network_mac.ps1 +21 -0
  802. data/plugins/providers/hyperv/scripts/set_network_vlan.ps1 +19 -0
  803. data/plugins/providers/hyperv/scripts/set_vm_integration_services.ps1 +30 -0
  804. data/plugins/providers/hyperv/scripts/start_vm.ps1 +29 -0
  805. data/plugins/providers/hyperv/scripts/stop_vm.ps1 +20 -0
  806. data/plugins/providers/hyperv/scripts/suspend_vm.ps1 +19 -0
  807. data/plugins/providers/hyperv/scripts/utils/VagrantMessages/VagrantMessages.psm1 +27 -0
  808. data/plugins/providers/hyperv/scripts/utils/VagrantVM/VagrantVM.psm1 +776 -0
  809. data/plugins/providers/virtualbox/action/boot.rb +26 -0
  810. data/plugins/providers/virtualbox/action/check_accessible.rb +26 -0
  811. data/plugins/providers/virtualbox/action/check_created.rb +24 -0
  812. data/plugins/providers/virtualbox/action/check_guest_additions.rb +58 -0
  813. data/plugins/providers/virtualbox/action/check_running.rb +24 -0
  814. data/plugins/providers/virtualbox/action/check_virtualbox.rb +28 -0
  815. data/plugins/providers/virtualbox/action/clean_machine_folder.rb +55 -0
  816. data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +23 -0
  817. data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +34 -0
  818. data/plugins/providers/virtualbox/action/created.rb +23 -0
  819. data/plugins/providers/virtualbox/action/customize.rb +48 -0
  820. data/plugins/providers/virtualbox/action/destroy.rb +22 -0
  821. data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +26 -0
  822. data/plugins/providers/virtualbox/action/discard_state.rb +23 -0
  823. data/plugins/providers/virtualbox/action/export.rb +54 -0
  824. data/plugins/providers/virtualbox/action/forced_halt.rb +28 -0
  825. data/plugins/providers/virtualbox/action/forward_ports.rb +92 -0
  826. data/plugins/providers/virtualbox/action/import.rb +110 -0
  827. data/plugins/providers/virtualbox/action/import_master.rb +83 -0
  828. data/plugins/providers/virtualbox/action/is_paused.rb +23 -0
  829. data/plugins/providers/virtualbox/action/is_running.rb +23 -0
  830. data/plugins/providers/virtualbox/action/is_saved.rb +23 -0
  831. data/plugins/providers/virtualbox/action/match_mac_address.rb +30 -0
  832. data/plugins/providers/virtualbox/action/message_already_running.rb +19 -0
  833. data/plugins/providers/virtualbox/action/message_not_created.rb +19 -0
  834. data/plugins/providers/virtualbox/action/message_not_running.rb +19 -0
  835. data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +20 -0
  836. data/plugins/providers/virtualbox/action/network.rb +638 -0
  837. data/plugins/providers/virtualbox/action/network_fix_ipv6.rb +87 -0
  838. data/plugins/providers/virtualbox/action/package.rb +19 -0
  839. data/plugins/providers/virtualbox/action/package_setup_files.rb +19 -0
  840. data/plugins/providers/virtualbox/action/package_setup_folders.rb +21 -0
  841. data/plugins/providers/virtualbox/action/package_vagrantfile.rb +36 -0
  842. data/plugins/providers/virtualbox/action/prepare_clone_snapshot.rb +69 -0
  843. data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +38 -0
  844. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +162 -0
  845. data/plugins/providers/virtualbox/action/prepare_nfs_valid_ids.rb +20 -0
  846. data/plugins/providers/virtualbox/action/resume.rb +28 -0
  847. data/plugins/providers/virtualbox/action/sane_defaults.rb +92 -0
  848. data/plugins/providers/virtualbox/action/set_default_nic_type.rb +72 -0
  849. data/plugins/providers/virtualbox/action/set_name.rb +58 -0
  850. data/plugins/providers/virtualbox/action/setup_package_files.rb +20 -0
  851. data/plugins/providers/virtualbox/action/snapshot_delete.rb +37 -0
  852. data/plugins/providers/virtualbox/action/snapshot_restore.rb +33 -0
  853. data/plugins/providers/virtualbox/action/snapshot_save.rb +28 -0
  854. data/plugins/providers/virtualbox/action/suspend.rb +23 -0
  855. data/plugins/providers/virtualbox/action.rb +433 -0
  856. data/plugins/providers/virtualbox/cap/cleanup_disks.rb +86 -0
  857. data/plugins/providers/virtualbox/cap/configure_disks.rb +441 -0
  858. data/plugins/providers/virtualbox/cap/mount_options.rb +43 -0
  859. data/plugins/providers/virtualbox/cap/public_address.rb +18 -0
  860. data/plugins/providers/virtualbox/cap/validate_disk_ext.rb +37 -0
  861. data/plugins/providers/virtualbox/cap.rb +40 -0
  862. data/plugins/providers/virtualbox/config.rb +211 -0
  863. data/plugins/providers/virtualbox/driver/base.rb +530 -0
  864. data/plugins/providers/virtualbox/driver/meta.rb +212 -0
  865. data/plugins/providers/virtualbox/driver/version_4_0.rb +574 -0
  866. data/plugins/providers/virtualbox/driver/version_4_1.rb +699 -0
  867. data/plugins/providers/virtualbox/driver/version_4_2.rb +713 -0
  868. data/plugins/providers/virtualbox/driver/version_4_3.rb +757 -0
  869. data/plugins/providers/virtualbox/driver/version_5_0.rb +1022 -0
  870. data/plugins/providers/virtualbox/driver/version_5_1.rb +19 -0
  871. data/plugins/providers/virtualbox/driver/version_5_2.rb +19 -0
  872. data/plugins/providers/virtualbox/driver/version_6_0.rb +105 -0
  873. data/plugins/providers/virtualbox/driver/version_6_1.rb +42 -0
  874. data/plugins/providers/virtualbox/driver/version_7_0.rb +306 -0
  875. data/plugins/providers/virtualbox/driver/version_7_1.rb +19 -0
  876. data/plugins/providers/virtualbox/model/forwarded_port.rb +73 -0
  877. data/plugins/providers/virtualbox/model/storage_controller.rb +138 -0
  878. data/plugins/providers/virtualbox/model/storage_controller_array.rb +101 -0
  879. data/plugins/providers/virtualbox/plugin.rb +120 -0
  880. data/plugins/providers/virtualbox/provider.rb +133 -0
  881. data/plugins/providers/virtualbox/synced_folder.rb +153 -0
  882. data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +40 -0
  883. data/plugins/provisioners/ansible/cap/guest/alpine/ansible_install.rb +47 -0
  884. data/plugins/provisioners/ansible/cap/guest/arch/ansible_install.rb +44 -0
  885. data/plugins/provisioners/ansible/cap/guest/debian/ansible_install.rb +56 -0
  886. data/plugins/provisioners/ansible/cap/guest/facts.rb +27 -0
  887. data/plugins/provisioners/ansible/cap/guest/fedora/ansible_install.rb +43 -0
  888. data/plugins/provisioners/ansible/cap/guest/freebsd/ansible_install.rb +26 -0
  889. data/plugins/provisioners/ansible/cap/guest/pip/pip.rb +49 -0
  890. data/plugins/provisioners/ansible/cap/guest/posix/ansible_installed.rb +28 -0
  891. data/plugins/provisioners/ansible/cap/guest/redhat/ansible_install.rb +75 -0
  892. data/plugins/provisioners/ansible/cap/guest/suse/ansible_install.rb +26 -0
  893. data/plugins/provisioners/ansible/cap/guest/ubuntu/ansible_install.rb +42 -0
  894. data/plugins/provisioners/ansible/config/base.rb +157 -0
  895. data/plugins/provisioners/ansible/config/guest.rb +59 -0
  896. data/plugins/provisioners/ansible/config/host.rb +66 -0
  897. data/plugins/provisioners/ansible/constants.rb +17 -0
  898. data/plugins/provisioners/ansible/errors.rb +43 -0
  899. data/plugins/provisioners/ansible/helpers.rb +20 -0
  900. data/plugins/provisioners/ansible/plugin.rb +88 -0
  901. data/plugins/provisioners/ansible/provisioner/base.rb +405 -0
  902. data/plugins/provisioners/ansible/provisioner/guest.rb +197 -0
  903. data/plugins/provisioners/ansible/provisioner/host.rb +352 -0
  904. data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +24 -0
  905. data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +17 -0
  906. data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +37 -0
  907. data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +37 -0
  908. data/plugins/provisioners/cfengine/cap/suse/cfengine_install.rb +21 -0
  909. data/plugins/provisioners/cfengine/config.rb +127 -0
  910. data/plugins/provisioners/cfengine/plugin.rb +50 -0
  911. data/plugins/provisioners/cfengine/provisioner.rb +142 -0
  912. data/plugins/provisioners/chef/cap/debian/chef_install.rb +22 -0
  913. data/plugins/provisioners/chef/cap/freebsd/chef_install.rb +21 -0
  914. data/plugins/provisioners/chef/cap/freebsd/chef_installed.rb +27 -0
  915. data/plugins/provisioners/chef/cap/linux/chef_installed.rb +27 -0
  916. data/plugins/provisioners/chef/cap/omnios/chef_install.rb +23 -0
  917. data/plugins/provisioners/chef/cap/omnios/chef_installed.rb +28 -0
  918. data/plugins/provisioners/chef/cap/redhat/chef_install.rb +27 -0
  919. data/plugins/provisioners/chef/cap/suse/chef_install.rb +30 -0
  920. data/plugins/provisioners/chef/cap/windows/chef_install.rb +19 -0
  921. data/plugins/provisioners/chef/cap/windows/chef_installed.rb +24 -0
  922. data/plugins/provisioners/chef/command_builder.rb +87 -0
  923. data/plugins/provisioners/chef/config/base.rb +139 -0
  924. data/plugins/provisioners/chef/config/base_runner.rb +131 -0
  925. data/plugins/provisioners/chef/config/chef_apply.rb +53 -0
  926. data/plugins/provisioners/chef/config/chef_client.rb +77 -0
  927. data/plugins/provisioners/chef/config/chef_solo.rb +141 -0
  928. data/plugins/provisioners/chef/config/chef_zero.rb +133 -0
  929. data/plugins/provisioners/chef/installer.rb +51 -0
  930. data/plugins/provisioners/chef/omnibus.rb +40 -0
  931. data/plugins/provisioners/chef/plugin.rb +108 -0
  932. data/plugins/provisioners/chef/provisioner/base.rb +258 -0
  933. data/plugins/provisioners/chef/provisioner/chef_apply.rb +74 -0
  934. data/plugins/provisioners/chef/provisioner/chef_client.rb +179 -0
  935. data/plugins/provisioners/chef/provisioner/chef_solo.rb +244 -0
  936. data/plugins/provisioners/chef/provisioner/chef_zero.rb +123 -0
  937. data/plugins/provisioners/container/client.rb +206 -0
  938. data/plugins/provisioners/container/config.rb +86 -0
  939. data/plugins/provisioners/container/installer.rb +16 -0
  940. data/plugins/provisioners/container/plugin.rb +26 -0
  941. data/plugins/provisioners/container/provisioner.rb +31 -0
  942. data/plugins/provisioners/docker/cap/centos/docker_install.rb +44 -0
  943. data/plugins/provisioners/docker/cap/centos/docker_start_service.rb +27 -0
  944. data/plugins/provisioners/docker/cap/debian/docker_install.rb +21 -0
  945. data/plugins/provisioners/docker/cap/debian/docker_start_service.rb +16 -0
  946. data/plugins/provisioners/docker/cap/fedora/docker_install.rb +30 -0
  947. data/plugins/provisioners/docker/cap/linux/docker_configure_vagrant_user.rb +23 -0
  948. data/plugins/provisioners/docker/cap/linux/docker_daemon_running.rb +16 -0
  949. data/plugins/provisioners/docker/cap/linux/docker_installed.rb +29 -0
  950. data/plugins/provisioners/docker/cap/windows/docker_daemon_running.rb +16 -0
  951. data/plugins/provisioners/docker/client.rb +26 -0
  952. data/plugins/provisioners/docker/config.rb +19 -0
  953. data/plugins/provisioners/docker/installer.rb +37 -0
  954. data/plugins/provisioners/docker/plugin.rb +71 -0
  955. data/plugins/provisioners/docker/provisioner.rb +59 -0
  956. data/plugins/provisioners/file/config.rb +32 -0
  957. data/plugins/provisioners/file/plugin.rb +26 -0
  958. data/plugins/provisioners/file/provisioner.rb +46 -0
  959. data/plugins/provisioners/podman/cap/centos/podman_install.rb +38 -0
  960. data/plugins/provisioners/podman/cap/linux/podman_installed.rb +16 -0
  961. data/plugins/provisioners/podman/cap/redhat/podman_install.rb +29 -0
  962. data/plugins/provisioners/podman/client.rb +15 -0
  963. data/plugins/provisioners/podman/config.rb +31 -0
  964. data/plugins/provisioners/podman/installer.rb +36 -0
  965. data/plugins/provisioners/podman/plugin.rb +41 -0
  966. data/plugins/provisioners/podman/provisioner.rb +55 -0
  967. data/plugins/provisioners/puppet/config/puppet.rb +178 -0
  968. data/plugins/provisioners/puppet/config/puppet_server.rb +84 -0
  969. data/plugins/provisioners/puppet/plugin.rb +36 -0
  970. data/plugins/provisioners/puppet/provisioner/puppet.rb +336 -0
  971. data/plugins/provisioners/puppet/provisioner/puppet_server.rb +114 -0
  972. data/plugins/provisioners/salt/bootstrap_downloader.rb +62 -0
  973. data/plugins/provisioners/salt/config.rb +194 -0
  974. data/plugins/provisioners/salt/errors.rb +18 -0
  975. data/plugins/provisioners/salt/plugin.rb +25 -0
  976. data/plugins/provisioners/salt/provisioner.rb +499 -0
  977. data/plugins/provisioners/shell/config.rb +146 -0
  978. data/plugins/provisioners/shell/plugin.rb +26 -0
  979. data/plugins/provisioners/shell/provisioner.rb +368 -0
  980. data/plugins/pushes/atlas/config.rb +151 -0
  981. data/plugins/pushes/atlas/errors.rb +16 -0
  982. data/plugins/pushes/atlas/locales/en.yml +25 -0
  983. data/plugins/pushes/atlas/plugin.rb +38 -0
  984. data/plugins/pushes/atlas/push.rb +87 -0
  985. data/plugins/pushes/ftp/adapter.rb +147 -0
  986. data/plugins/pushes/ftp/config.rb +133 -0
  987. data/plugins/pushes/ftp/errors.rb +16 -0
  988. data/plugins/pushes/ftp/locales/en.yml +19 -0
  989. data/plugins/pushes/ftp/plugin.rb +36 -0
  990. data/plugins/pushes/ftp/push.rb +137 -0
  991. data/plugins/pushes/heroku/config.rb +77 -0
  992. data/plugins/pushes/heroku/errors.rb +24 -0
  993. data/plugins/pushes/heroku/locales/en.yml +33 -0
  994. data/plugins/pushes/heroku/plugin.rb +36 -0
  995. data/plugins/pushes/heroku/push.rb +147 -0
  996. data/plugins/pushes/local-exec/config.rb +80 -0
  997. data/plugins/pushes/local-exec/errors.rb +16 -0
  998. data/plugins/pushes/local-exec/locales/en.yml +26 -0
  999. data/plugins/pushes/local-exec/plugin.rb +36 -0
  1000. data/plugins/pushes/local-exec/push.rb +91 -0
  1001. data/plugins/pushes/noop/config.rb +19 -0
  1002. data/plugins/pushes/noop/plugin.rb +25 -0
  1003. data/plugins/pushes/noop/push.rb +12 -0
  1004. data/plugins/synced_folders/nfs/action_cleanup.rb +32 -0
  1005. data/plugins/synced_folders/nfs/config.rb +35 -0
  1006. data/plugins/synced_folders/nfs/plugin.rb +49 -0
  1007. data/plugins/synced_folders/nfs/synced_folder.rb +171 -0
  1008. data/plugins/synced_folders/rsync/command/rsync.rb +81 -0
  1009. data/plugins/synced_folders/rsync/command/rsync_auto.rb +244 -0
  1010. data/plugins/synced_folders/rsync/default_unix_cap.rb +49 -0
  1011. data/plugins/synced_folders/rsync/helper.rb +296 -0
  1012. data/plugins/synced_folders/rsync/plugin.rb +31 -0
  1013. data/plugins/synced_folders/rsync/synced_folder.rb +62 -0
  1014. data/plugins/synced_folders/smb/cap/default_fstab_modification.rb +14 -0
  1015. data/plugins/synced_folders/smb/cap/mount_options.rb +59 -0
  1016. data/plugins/synced_folders/smb/config.rb +26 -0
  1017. data/plugins/synced_folders/smb/errors.rb +65 -0
  1018. data/plugins/synced_folders/smb/plugin.rb +60 -0
  1019. data/plugins/synced_folders/smb/synced_folder.rb +189 -0
  1020. data/plugins/synced_folders/unix_mount_helpers.rb +122 -0
  1021. data/scripts/install_rvm +19 -0
  1022. data/scripts/setup_tests +49 -0
  1023. data/scripts/sign.sh +29 -0
  1024. data/scripts/website_push_www.sh +43 -0
  1025. data/tasks/acceptance.rake +22 -0
  1026. data/tasks/bundler.rake +3 -0
  1027. data/tasks/test.rake +8 -0
  1028. data/templates/commands/init/Vagrantfile.erb +86 -0
  1029. data/templates/commands/init/Vagrantfile.min.erb +12 -0
  1030. data/templates/commands/ssh_config/config.erb +42 -0
  1031. data/templates/commands/winrm_config/config.erb +11 -0
  1032. data/templates/config/messages.erb +14 -0
  1033. data/templates/config/validation_failed.erb +7 -0
  1034. data/templates/guests/alpine/network_dhcp.erb +13 -0
  1035. data/templates/guests/alpine/network_static.erb +7 -0
  1036. data/templates/guests/alt/network_dhcp.erb +7 -0
  1037. data/templates/guests/alt/network_ipv4address.erb +3 -0
  1038. data/templates/guests/alt/network_ipv4route.erb +5 -0
  1039. data/templates/guests/alt/network_static.erb +7 -0
  1040. data/templates/guests/arch/default_network/network_dhcp.erb +4 -0
  1041. data/templates/guests/arch/default_network/network_static.erb +8 -0
  1042. data/templates/guests/arch/default_network/network_static6.erb +8 -0
  1043. data/templates/guests/arch/systemd_networkd/network_dhcp.erb +6 -0
  1044. data/templates/guests/arch/systemd_networkd/network_static.erb +9 -0
  1045. data/templates/guests/arch/systemd_networkd/network_static6.erb +9 -0
  1046. data/templates/guests/coreos/etcd.service.erb +10 -0
  1047. data/templates/guests/debian/network_dhcp.erb +13 -0
  1048. data/templates/guests/debian/network_static.erb +10 -0
  1049. data/templates/guests/debian/network_static6.erb +10 -0
  1050. data/templates/guests/freebsd/network_dhcp.erb +4 -0
  1051. data/templates/guests/freebsd/network_static.erb +6 -0
  1052. data/templates/guests/freebsd/network_static6.erb +6 -0
  1053. data/templates/guests/funtoo/network_dhcp.erb +4 -0
  1054. data/templates/guests/funtoo/network_static.erb +10 -0
  1055. data/templates/guests/funtoo/network_static6.erb +9 -0
  1056. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  1057. data/templates/guests/gentoo/network_static.erb +8 -0
  1058. data/templates/guests/gentoo/network_static6.erb +8 -0
  1059. data/templates/guests/gentoo/network_systemd.erb +16 -0
  1060. data/templates/guests/linux/etc_fstab.erb +6 -0
  1061. data/templates/guests/netbsd/network_dhcp.erb +3 -0
  1062. data/templates/guests/netbsd/network_static.erb +3 -0
  1063. data/templates/guests/nixos/hostname.erb +6 -0
  1064. data/templates/guests/nixos/network.erb +15 -0
  1065. data/templates/guests/openbsd/network_dhcp.erb +1 -0
  1066. data/templates/guests/openbsd/network_static.erb +1 -0
  1067. data/templates/guests/openbsd/network_static6.erb +1 -0
  1068. data/templates/guests/redhat/network_dhcp.erb +7 -0
  1069. data/templates/guests/redhat/network_static.erb +16 -0
  1070. data/templates/guests/redhat/network_static6.erb +12 -0
  1071. data/templates/guests/slackware/network_dhcp.erb +11 -0
  1072. data/templates/guests/slackware/network_static.erb +13 -0
  1073. data/templates/guests/suse/network_dhcp.erb +6 -0
  1074. data/templates/guests/suse/network_static.erb +13 -0
  1075. data/templates/guests/suse/network_static6.erb +16 -0
  1076. data/templates/license/license.html.tmpl +127 -0
  1077. data/templates/license/license.rtf.tmpl +0 -0
  1078. data/templates/license/license.tmpl +92 -0
  1079. data/templates/locales/comm_winrm.yml +85 -0
  1080. data/templates/locales/command_ps.yml +35 -0
  1081. data/templates/locales/command_rdp.yml +28 -0
  1082. data/templates/locales/en.yml +3149 -0
  1083. data/templates/locales/guest_windows.yml +26 -0
  1084. data/templates/locales/providers_docker.yml +321 -0
  1085. data/templates/locales/providers_hyperv.yml +111 -0
  1086. data/templates/locales/synced_folder_smb.yml +98 -0
  1087. data/templates/networking/network_manager/network_manager_device.erb +41 -0
  1088. data/templates/nfs/exports_bsd.erb +5 -0
  1089. data/templates/nfs/exports_darwin.erb +7 -0
  1090. data/templates/nfs/exports_linux.erb +7 -0
  1091. data/templates/package_Vagrantfile.erb +11 -0
  1092. data/templates/provisioners/chef_client/client.erb +41 -0
  1093. data/templates/provisioners/chef_solo/solo.erb +52 -0
  1094. data/templates/provisioners/chef_zero/zero.erb +45 -0
  1095. data/templates/rgloader.rb +12 -0
  1096. data/vagrant-spec.config.example.rb +13 -0
  1097. data/vagrant.gemspec +113 -20
  1098. data/version.txt +1 -0
  1099. metadata +1621 -43
  1100. data/LICENSE.txt +0 -22
  1101. data/message.txt +0 -17
@@ -0,0 +1,180 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ module Vagrant
5
+ # This module enables a class to host capabilities. Prior to being able
6
+ # to use any capabilities, the `initialize_capabilities!` method must be
7
+ # called.
8
+ #
9
+ # Capabilities allow small pieces of functionality to be plugged in using
10
+ # the Vagrant plugin model. Capabilities even allow for a certain amount
11
+ # of inheritance, where only a subset of capabilities may be implemented but
12
+ # a parent implements the rest.
13
+ #
14
+ # Capabilities are used heavily in Vagrant for host/guest interactions. For
15
+ # example, "mount_nfs_folder" is a guest-OS specific operation, so capabilities
16
+ # defer these operations to the guest.
17
+ module CapabilityHost
18
+ # Initializes the capability system by detecting the proper capability
19
+ # host to execute on and building the chain of capabilities to execute.
20
+ #
21
+ # @param [Symbol] host The host to use for the capabilities, or nil if
22
+ # we should auto-detect it.
23
+ # @param [Hash<Symbol, Array<Class, Symbol>>] hosts Potential capability
24
+ # hosts. The key is the name of the host, value[0] is a class that
25
+ # implements `#detect?` and value[1] is a parent host (if any).
26
+ # @param [Hash<Symbol, Hash<Symbol, Class>>] capabilities The capabilities
27
+ # that are supported. The key is the host of the capability. Within that
28
+ # is a hash where the key is the name of the capability and the value
29
+ # is the class/module implementing it.
30
+ def initialize_capabilities!(host, hosts, capabilities, *args)
31
+ @cap_logger = Log4r::Logger.new(
32
+ "vagrant::capability_host::#{self.class.to_s.downcase}")
33
+
34
+ if host && !hosts[host]
35
+ raise Errors::CapabilityHostExplicitNotDetected, value: host.to_s
36
+ end
37
+
38
+ if !host
39
+ host = autodetect_capability_host(hosts, *args) if !host
40
+ raise Errors::CapabilityHostNotDetected if !host
41
+ end
42
+
43
+ if !hosts[host]
44
+ # This should never happen because the autodetect above uses the
45
+ # hosts hash to look up hosts. And if an explicit host is specified,
46
+ # we do another check higher up.
47
+ raise "Internal error. Host not found: #{host}"
48
+ end
49
+
50
+ name = host
51
+ host_info = hosts[name]
52
+ host = host_info[0].new
53
+ chain = []
54
+ chain << [name, host]
55
+
56
+ # Build the proper chain of parents if there are any.
57
+ # This allows us to do "inheritance" of capabilities later
58
+ if host_info[1]
59
+ parent_name = host_info[1]
60
+ parent_info = hosts[parent_name]
61
+ while parent_info
62
+ chain << [parent_name, parent_info[0].new]
63
+ parent_name = parent_info[1]
64
+ parent_info = hosts[parent_name]
65
+ end
66
+ end
67
+
68
+ @cap_host_chain = chain
69
+ @cap_args = args
70
+ @cap_caps = capabilities
71
+ true
72
+ end
73
+
74
+ # Returns the chain of hosts that will be checked for capabilities.
75
+ #
76
+ # @return [Array<Array<Symbol, Class>>]
77
+ def capability_host_chain
78
+ @cap_host_chain
79
+ end
80
+
81
+ # Tests whether the given capability is possible.
82
+ #
83
+ # @param [Symbol] cap_name Capability name
84
+ # @return [Boolean]
85
+ def capability?(cap_name)
86
+ !capability_module(cap_name.to_sym).nil?
87
+ end
88
+
89
+ # Executes the capability with the given name, optionally passing more
90
+ # arguments onwards to the capability. If the capability returns a value,
91
+ # it will be returned.
92
+ #
93
+ # @param [Symbol] cap_name Name of the capability
94
+ def capability(cap_name, *args)
95
+ cap_mod = capability_module(cap_name.to_sym)
96
+ if !cap_mod
97
+ raise Errors::CapabilityNotFound,
98
+ cap: cap_name.to_s,
99
+ host: @cap_host_chain[0][0].to_s
100
+ end
101
+
102
+ cap_method = nil
103
+ begin
104
+ cap_method = cap_mod.method(cap_name)
105
+ rescue NameError
106
+ raise Errors::CapabilityInvalid,
107
+ cap: cap_name.to_s,
108
+ host: @cap_host_chain[0][0].to_s
109
+ end
110
+
111
+ args = @cap_args + args
112
+ @cap_logger.info(
113
+ "Execute capability: #{cap_name} #{args.inspect} (#{@cap_host_chain[0][0]})")
114
+ cap_method.call(*args)
115
+ end
116
+
117
+ protected
118
+
119
+ def autodetect_capability_host(hosts, *args)
120
+ @cap_logger.info("Autodetecting host type for #{args.inspect}")
121
+
122
+ # Get the mapping of hosts with the most parents. We start searching
123
+ # with the hosts with the most parents first.
124
+ parent_count = {}
125
+ hosts.each do |name, parts|
126
+ parent_count[name] = 0
127
+
128
+ parent = parts[1]
129
+ while parent
130
+ parent_count[name] += 1
131
+ parent = hosts[parent]
132
+ parent = parent[1] if parent
133
+ end
134
+ end
135
+
136
+ # Now swap around the mapping so that it is a mapping of
137
+ # count to the actual list of host names
138
+ parent_count_to_hosts = {}
139
+ parent_count.each do |name, count|
140
+ parent_count_to_hosts[count] ||= []
141
+ parent_count_to_hosts[count] << name
142
+ end
143
+
144
+ sorted_counts = parent_count_to_hosts.keys.sort.reverse
145
+ sorted_counts.each do |count|
146
+ parent_count_to_hosts[count].each do |name|
147
+ @cap_logger.debug("Trying: #{name}")
148
+ host_info = hosts[name]
149
+ host = host_info[0].new
150
+
151
+ if host.detect?(*args)
152
+ @cap_logger.info("Detected: #{name}!")
153
+ return name
154
+ end
155
+ end
156
+ end
157
+
158
+ return nil
159
+ end
160
+
161
+ # Returns the registered module for a capability with the given name.
162
+ #
163
+ # @param [Symbol] cap_name
164
+ # @return [Module]
165
+ def capability_module(cap_name)
166
+ @cap_logger.debug("Searching for cap: #{cap_name}")
167
+ @cap_host_chain.each do |host_name, host|
168
+ @cap_logger.debug("Checking in: #{host_name}")
169
+ caps = @cap_caps[host_name]
170
+
171
+ if caps && caps.key?(cap_name)
172
+ @cap_logger.debug("Found cap: #{cap_name} in #{host_name}")
173
+ return caps[cap_name]
174
+ end
175
+ end
176
+
177
+ nil
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,122 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require 'log4r'
5
+ require 'optparse'
6
+
7
+ require 'vagrant/util/experimental'
8
+
9
+ module Vagrant
10
+ # Manages the command line interface to Vagrant.
11
+ class CLI < Vagrant.plugin("2", :command)
12
+
13
+ def initialize(argv, env)
14
+ super
15
+
16
+ @logger = Log4r::Logger.new("vagrant::cli")
17
+ @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
18
+
19
+ ui = Vagrant::UI::Prefixed.new(env.ui, "vagrant")
20
+ @triggers = Vagrant::Plugin::V2::Trigger.new(env, env.vagrantfile.config.trigger, nil, ui)
21
+
22
+ Util::CheckpointClient.instance.setup(env).check
23
+ @logger.info("CLI: #{@main_args.inspect} #{@sub_command.inspect} #{@sub_args.inspect}")
24
+ end
25
+
26
+ def execute
27
+ if @main_args.include?("-h") || @main_args.include?("--help")
28
+ # Help is next in short-circuiting everything. Print
29
+ # the help and exit.
30
+ help
31
+ return 0
32
+ end
33
+
34
+ if @sub_command == "login"
35
+ $stderr.puts "WARNING: This command has been deprecated and aliased to `vagrant cloud auth login`"
36
+ end
37
+
38
+ # If we reached this far then we must have a subcommand. If not,
39
+ # then we also just print the help and exit.
40
+ command_plugin = nil
41
+ if @sub_command
42
+ command_plugin = Vagrant.plugin("2").manager.commands[@sub_command.to_sym]
43
+
44
+ if !command_plugin
45
+ alias_command = Alias.new(@env).commands[@sub_command.to_sym]
46
+
47
+ if alias_command
48
+ return alias_command.call(@sub_args)
49
+ end
50
+ end
51
+ end
52
+
53
+ if !command_plugin || !@sub_command
54
+ help
55
+ return 1
56
+ end
57
+
58
+ command_class = command_plugin[0].call
59
+ @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
60
+
61
+ Util::CheckpointClient.instance.display
62
+
63
+ # Initialize and execute the command class, returning the exit status.
64
+ result = 0
65
+ begin
66
+ @triggers.fire(@sub_command, :before, nil, :command)
67
+ result = command_class.new(@sub_args, @env).execute
68
+ @triggers.fire(@sub_command, :after, nil, :command)
69
+ rescue Interrupt
70
+ @env.ui.info(I18n.t("vagrant.cli_interrupt"))
71
+ result = 1
72
+ end
73
+
74
+ result = 0 if !result.is_a?(Integer)
75
+ return result
76
+ end
77
+
78
+ # This prints out the help for the CLI.
79
+ def help
80
+ # We use the optionparser for this. Its just easier. We don't use
81
+ # an optionparser above because I don't think the performance hits
82
+ # of creating a whole object are worth checking only a couple flags.
83
+ opts = OptionParser.new do |o|
84
+ o.banner = "Usage: vagrant [options] <command> [<args>]"
85
+ o.separator ""
86
+ o.on("-v", "--version", "Print the version and exit.")
87
+ o.on("-h", "--help", "Print this help.")
88
+ o.separator ""
89
+ o.separator "Common commands:"
90
+
91
+ # Add the available subcommands as separators in order to print them
92
+ # out as well.
93
+ commands = {}
94
+ longest = 0
95
+ Vagrant.plugin("2").manager.commands.each do |key, data|
96
+ # Skip non-primary commands. These only show up in extended
97
+ # help output.
98
+ next if !data[1][:primary]
99
+
100
+ key = key.to_s
101
+ klass = data[0].call
102
+ commands[key] = klass.synopsis
103
+ longest = key.length if key.length > longest
104
+ end
105
+
106
+ commands.keys.sort.each do |key|
107
+ o.separator " #{key.ljust(longest+2)} #{commands[key]}"
108
+ @env.ui.machine("cli-command", key.dup)
109
+ end
110
+
111
+ o.separator ""
112
+ o.separator "For help on any individual command run `vagrant COMMAND -h`"
113
+ o.separator ""
114
+ o.separator "Additional subcommands are available, but are either more advanced"
115
+ o.separator "or not commonly used. To see all subcommands, run the command"
116
+ o.separator "`vagrant list-commands`."
117
+ end
118
+
119
+ @env.ui.info(opts.help, prefix: false)
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,323 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "pathname"
5
+
6
+ require "log4r"
7
+
8
+ module Vagrant
9
+ module Config
10
+ # This class is responsible for loading Vagrant configuration,
11
+ # usually in the form of Vagrantfiles.
12
+ #
13
+ # Loading works by specifying the sources for the configuration
14
+ # as well as the order the sources should be loaded. Configuration
15
+ # set later always overrides those set earlier; this is how
16
+ # configuration "scoping" is implemented.
17
+ class Loader
18
+ # Initializes a configuration loader.
19
+ #
20
+ # @param [Registry] versions A registry of the available versions and
21
+ # their associated loaders.
22
+ # @param [Array] version_order An array of the order of the versions
23
+ # in the registry. This is used to determine if upgrades are
24
+ # necessary. Additionally, the last version in this order is always
25
+ # considered the "current" version.
26
+ def initialize(versions, version_order)
27
+ @logger = Log4r::Logger.new("vagrant::config::loader")
28
+ @config_cache = {}
29
+ @proc_cache = {}
30
+ @sources = {}
31
+ @versions = versions
32
+ @version_order = version_order
33
+ end
34
+
35
+ # Set the configuration data for the given name.
36
+ #
37
+ # The `name` should be a symbol and must uniquely identify the data
38
+ # being given.
39
+ #
40
+ # `data` can either be a path to a Ruby Vagrantfile or a `Proc` directly.
41
+ # `data` can also be an array of such values.
42
+ #
43
+ # At this point, no configuration is actually loaded. Note that calling
44
+ # `set` multiple times with the same name will override any previously
45
+ # set values. In this way, the last set data for a given name wins.
46
+ def set(name, sources)
47
+ # Sources should be an array
48
+ sources = [sources] if !sources.kind_of?(Array)
49
+
50
+ reliably_inspected_sources = sources.reduce({}) { |accum, source|
51
+ begin
52
+ accum[source] = source.inspect
53
+ rescue Encoding::CompatibilityError
54
+ accum[source] = "<!Vagrant failed to call #inspect source with object id #{source.object_id} and class #{source.class} due to a string encoding error>"
55
+ end
56
+
57
+ accum
58
+ }
59
+
60
+ @logger.info("Set #{name.inspect} = #{reliably_inspected_sources.values}")
61
+
62
+ # Gather the procs for every source, since that is what we care about.
63
+ procs = []
64
+ sources.each do |source|
65
+ if !@proc_cache.key?(source)
66
+ # Load the procs for this source and cache them. This caching
67
+ # avoids the issue where a file may have side effects when loading
68
+ # and loading it multiple times causes unexpected behavior.
69
+ @logger.debug("Populating proc cache for #{reliably_inspected_sources[source]}")
70
+ @proc_cache[source] = procs_for_source(source, reliably_inspected_sources)
71
+ end
72
+
73
+ # Add on to the array of procs we're going to use
74
+ procs.concat(@proc_cache[source])
75
+ end
76
+
77
+ # Set this source by name.
78
+ @sources[name] = procs
79
+ end
80
+
81
+ # This loads the configuration sources in the given order and returns
82
+ # an actual configuration object that is ready to be used.
83
+ #
84
+ # @param [Array<Symbol>] order The order of configuration to load.
85
+ # @return [Object] The configuration object. This is different for
86
+ # each configuration version.
87
+ def load(order)
88
+ @logger.info("Loading configuration in order: #{order.inspect}")
89
+
90
+ unknown_sources = @sources.keys - order
91
+ if !unknown_sources.empty?
92
+ @logger.warn("Unknown config sources: #{unknown_sources.inspect}")
93
+ end
94
+
95
+ # Get the current version config class to use
96
+ current_version = @version_order.last
97
+ current_config_klass = @versions.get(current_version)
98
+
99
+ # This will hold our result
100
+ result = current_config_klass.init
101
+
102
+ # Keep track of the warnings and errors that may come from
103
+ # upgrading the Vagrantfiles
104
+ warnings = []
105
+ errors = []
106
+
107
+ if !@sources[:root].nil? && @sources[:root].eql?(@sources[:home])
108
+ # Vagrants home dir is set to the same dir as its project directory
109
+ # so we don't want to load and merge the same Vagrantfile config
110
+ # and execute its settings/procs twice
111
+ #
112
+ # Note: This protection won't work if there are two separate but
113
+ # identical Vagrantfiles in the home and project dir
114
+ @logger.info("Duplicate Vagrantfile config objects detected in :root and :home.")
115
+ @sources.delete(:home)
116
+ @logger.info("Removed :home config from being loaded")
117
+ end
118
+
119
+ order.each do |key|
120
+ next if !@sources.key?(key)
121
+
122
+ @sources[key].each do |version, proc|
123
+ if !@config_cache.key?(proc)
124
+ @logger.debug("Loading from: #{key} (evaluating)")
125
+
126
+ # Get the proper version loader for this version and load
127
+ version_loader = @versions.get(version)
128
+ begin
129
+ version_config = version_loader.load(proc)
130
+ rescue NameError => e
131
+ line = "(unknown)"
132
+ path = "(unknown)"
133
+ if e.backtrace && e.backtrace[0]
134
+ backtrace_tokens = e.backtrace[0].split(":")
135
+ path = e.backtrace.first.slice(0, e.backtrace.first.rindex(':')).rpartition(':').first
136
+ backtrace_tokens.each do |part|
137
+ if part =~ /\d+/
138
+ line = part.to_i
139
+ break
140
+ end
141
+ end
142
+ end
143
+
144
+ raise Errors::VagrantfileNameError,
145
+ path: path,
146
+ line: line,
147
+ message: e.message.sub(/' for .*$/, "'")
148
+ end
149
+
150
+ # Store the errors/warnings associated with loading this
151
+ # configuration. We'll store these for later.
152
+ version_warnings = []
153
+ version_errors = []
154
+
155
+ # If this version is not the current version, then we need
156
+ # to upgrade to the latest version.
157
+ if version != current_version
158
+ @logger.debug("Upgrading config from version #{version} to #{current_version}")
159
+ version_index = @version_order.index(version)
160
+ current_index = @version_order.index(current_version)
161
+
162
+ (version_index + 1).upto(current_index) do |index|
163
+ next_version = @version_order[index]
164
+ @logger.debug("Upgrading config to version #{next_version}")
165
+
166
+ # Get the loader of this version and ask it to upgrade
167
+ loader = @versions.get(next_version)
168
+ upgrade_result = loader.upgrade(version_config)
169
+
170
+ this_warnings = upgrade_result[1]
171
+ this_errors = upgrade_result[2]
172
+ @logger.debug("Upgraded to version #{next_version} with " +
173
+ "#{this_warnings.length} warnings and " +
174
+ "#{this_errors.length} errors")
175
+
176
+ # Append loading this to the version warnings and errors
177
+ version_warnings += this_warnings
178
+ version_errors += this_errors
179
+
180
+ # Store the new upgraded version
181
+ version_config = upgrade_result[0]
182
+ end
183
+ end
184
+
185
+ # Cache the loaded configuration along with any warnings
186
+ # or errors so that they can be retrieved later.
187
+ @config_cache[proc] = [version_config, version_warnings, version_errors]
188
+ else
189
+ @logger.debug("Loading from: #{key} (cache)")
190
+ end
191
+
192
+ # Merge the configurations
193
+ cache_data = @config_cache[proc]
194
+ result = current_config_klass.merge(result, cache_data[0])
195
+
196
+ # Append the total warnings/errors
197
+ warnings += cache_data[1]
198
+ errors += cache_data[2]
199
+ end
200
+ end
201
+
202
+ @logger.debug("Configuration loaded successfully, finalizing and returning")
203
+ [current_config_klass.finalize(result), warnings, errors]
204
+ end
205
+
206
+ # This method is used for doing partial loads of the
207
+ # Vagrantfile. It will load the contents of a single
208
+ # location and return the config. No merging is performed
209
+ # and no finalization is applied.
210
+ #
211
+ # @param key [Symbol] name of location
212
+ # @return [Object] configuration
213
+ # @note: This will load either version, but we assume a v2 result
214
+ # @todo(spox): check version and raise error on v1
215
+ def partial_load(key)
216
+ raise KeyError,
217
+ "Unknown path key provided (#{key})" if !@sources.key?(key)
218
+
219
+ version, proc = @sources[key].first
220
+ @logger.debug("Loading from: #{key} (evaluating)")
221
+
222
+ # Get the proper version loader for this version and load
223
+ version_loader = @versions.get(version)
224
+ raise KeyError,
225
+ "Failed to create loader for requested version: #{version}" if version_loader.nil?
226
+
227
+ begin
228
+ version_config = version_loader.load(proc)
229
+ rescue NameError => e
230
+ line = "(unknown)"
231
+ path = "(unknown)"
232
+ if e.backtrace && e.backtrace[0]
233
+ backtrace_tokens = e.backtrace[0].split(":")
234
+ path = e.backtrace.first.slice(0, e.backtrace.first.rindex(':')).rpartition(':').first
235
+ backtrace_tokens.each do |part|
236
+ if part =~ /\d+/
237
+ line = part.to_i
238
+ break
239
+ end
240
+ end
241
+ end
242
+
243
+ raise Errors::VagrantfileNameError,
244
+ path: path,
245
+ line: line,
246
+ message: e.message.sub(/' for .*$/, "'") + "\n#{e.backtrace.join("\n")}" + "\nVersion #{version.inspect} loader: #{version_loader.inspect} versions: #{@versions.inspect}"
247
+ end
248
+ version_config
249
+ end
250
+
251
+ protected
252
+
253
+ # This returns an array of `Proc` objects for the given source.
254
+ # The `Proc` objects returned will expect a single argument for
255
+ # the configuration object and are expected to mutate this
256
+ # configuration object.
257
+ def procs_for_source(source, reliably_inspected_sources)
258
+ # Convert all pathnames to strings so we just have their path
259
+ source = source.to_s if source.is_a?(Pathname)
260
+
261
+ if source.is_a?(Array)
262
+ # An array must be formatted as [version, proc], so verify
263
+ # that and then return it
264
+ raise ArgumentError, "String source must have format [version, proc]" if source.length != 2
265
+
266
+ # Return it as an array since we're expected to return an array
267
+ # of [version, proc] pairs, but an array source only has one.
268
+ return [source]
269
+ elsif source.is_a?(String)
270
+ # Strings are considered paths, so load them
271
+ return procs_for_path(source)
272
+ else
273
+ raise ArgumentError, "Unknown configuration source: #{reliably_inspected_sources[source]}"
274
+ end
275
+ end
276
+
277
+ # This returns an array of `Proc` objects for the given path source.
278
+ #
279
+ # @param [String] path Path to the file which contains the proper
280
+ # `Vagrant.configure` calls.
281
+ # @return [Array<Proc>]
282
+ def procs_for_path(path)
283
+ @logger.debug("Load procs for pathname: #{path}")
284
+
285
+ return Config.capture_configures do
286
+ begin
287
+ Kernel.load path
288
+ rescue SyntaxError => e
289
+ # Report syntax errors in a nice way.
290
+ raise Errors::VagrantfileSyntaxError, file: e.message
291
+ rescue SystemExit
292
+ # Continue raising that exception...
293
+ raise
294
+ rescue Vagrant::Errors::VagrantError
295
+ # Continue raising known Vagrant errors since they already
296
+ # contain well worded error messages and context.
297
+ raise
298
+ rescue Exception => e
299
+ @logger.error("Vagrantfile load error: #{e.message}")
300
+ @logger.error(e.backtrace.join("\n"))
301
+
302
+ line = "(unknown)"
303
+ if e.backtrace && e.backtrace[0]
304
+ e.backtrace[0].split(":").each do |part|
305
+ if part =~ /\d+/
306
+ line = part.to_i
307
+ break
308
+ end
309
+ end
310
+ end
311
+
312
+ # Report the generic exception
313
+ raise Errors::VagrantfileLoadError,
314
+ path: path,
315
+ line: line,
316
+ exception_class: e.class,
317
+ message: e.message
318
+ end
319
+ end
320
+ end
321
+ end
322
+ end
323
+ end
@@ -0,0 +1,16 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ module Vagrant
5
+ module Config
6
+ module V1
7
+ # This is a configuration object that can have anything done
8
+ # to it. Anything, and it just appears to keep working.
9
+ class DummyConfig
10
+ def method_missing(name, *args, &block)
11
+ DummyConfig.new
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end