vagrant 1.5.0 → 2.4.5

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 (1103) 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 +4520 -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 +938 -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/none/communicator.rb +46 -0
  341. data/plugins/communicators/none/plugin.rb +26 -0
  342. data/plugins/communicators/ssh/communicator.rb +898 -0
  343. data/plugins/communicators/ssh/plugin.rb +22 -0
  344. data/plugins/communicators/winrm/command_filter.rb +49 -0
  345. data/plugins/communicators/winrm/command_filters/cat.rb +26 -0
  346. data/plugins/communicators/winrm/command_filters/chmod.rb +20 -0
  347. data/plugins/communicators/winrm/command_filters/chown.rb +20 -0
  348. data/plugins/communicators/winrm/command_filters/grep.rb +26 -0
  349. data/plugins/communicators/winrm/command_filters/mkdir.rb +30 -0
  350. data/plugins/communicators/winrm/command_filters/rm.rb +50 -0
  351. data/plugins/communicators/winrm/command_filters/test.rb +68 -0
  352. data/plugins/communicators/winrm/command_filters/uname.rb +30 -0
  353. data/plugins/communicators/winrm/command_filters/which.rb +27 -0
  354. data/plugins/communicators/winrm/communicator.rb +230 -0
  355. data/plugins/communicators/winrm/config.rb +76 -0
  356. data/plugins/communicators/winrm/errors.rb +72 -0
  357. data/plugins/communicators/winrm/helper.rb +91 -0
  358. data/plugins/communicators/winrm/plugin.rb +69 -0
  359. data/plugins/communicators/winrm/shell.rb +267 -0
  360. data/plugins/communicators/winssh/communicator.rb +252 -0
  361. data/plugins/communicators/winssh/config.rb +37 -0
  362. data/plugins/communicators/winssh/plugin.rb +24 -0
  363. data/plugins/guests/alma/cap/flavor.rb +26 -0
  364. data/plugins/guests/alma/guest.rb +13 -0
  365. data/plugins/guests/alma/plugin.rb +23 -0
  366. data/plugins/guests/alpine/cap/change_host_name.rb +85 -0
  367. data/plugins/guests/alpine/cap/configure_networks.rb +67 -0
  368. data/plugins/guests/alpine/cap/halt.rb +24 -0
  369. data/plugins/guests/alpine/cap/nfs_client.rb +17 -0
  370. data/plugins/guests/alpine/cap/rsync.rb +20 -0
  371. data/plugins/guests/alpine/cap/smb.rb +16 -0
  372. data/plugins/guests/alpine/guest.rb +14 -0
  373. data/plugins/guests/alpine/plugin.rb +69 -0
  374. data/plugins/guests/alt/cap/change_host_name.rb +55 -0
  375. data/plugins/guests/alt/cap/configure_networks.rb +132 -0
  376. data/plugins/guests/alt/cap/flavor.rb +66 -0
  377. data/plugins/guests/alt/cap/network_scripts_dir.rb +14 -0
  378. data/plugins/guests/alt/cap/rsync.rb +16 -0
  379. data/plugins/guests/alt/guest.rb +12 -0
  380. data/plugins/guests/alt/plugin.rb +43 -0
  381. data/plugins/guests/amazon/cap/configure_networks.rb +26 -0
  382. data/plugins/guests/amazon/cap/flavor.rb +17 -0
  383. data/plugins/guests/amazon/guest.rb +12 -0
  384. data/plugins/guests/amazon/plugin.rb +28 -0
  385. data/plugins/guests/arch/cap/change_host_name.rb +18 -0
  386. data/plugins/guests/arch/cap/configure_networks.rb +81 -0
  387. data/plugins/guests/arch/cap/nfs.rb +36 -0
  388. data/plugins/guests/arch/cap/rsync.rb +19 -0
  389. data/plugins/guests/arch/cap/smb.rb +20 -0
  390. data/plugins/guests/arch/guest.rb +14 -0
  391. data/plugins/guests/arch/plugin.rb +53 -0
  392. data/plugins/guests/atomic/cap/change_host_name.rb +18 -0
  393. data/plugins/guests/atomic/cap/docker.rb +14 -0
  394. data/plugins/guests/atomic/guest.rb +14 -0
  395. data/plugins/guests/atomic/plugin.rb +28 -0
  396. data/plugins/guests/bsd/cap/file_system.rb +80 -0
  397. data/plugins/guests/bsd/cap/halt.rb +19 -0
  398. data/plugins/guests/bsd/cap/mount_virtualbox_shared_folder.rb +19 -0
  399. data/plugins/guests/bsd/cap/nfs.rb +50 -0
  400. data/plugins/guests/bsd/cap/public_key.rb +69 -0
  401. data/plugins/guests/bsd/guest.rb +12 -0
  402. data/plugins/guests/bsd/plugin.rb +58 -0
  403. data/plugins/guests/centos/cap/flavor.rb +32 -0
  404. data/plugins/guests/centos/guest.rb +14 -0
  405. data/plugins/guests/centos/plugin.rb +23 -0
  406. data/plugins/guests/coreos/cap/change_host_name.rb +41 -0
  407. data/plugins/guests/coreos/cap/configure_networks.rb +138 -0
  408. data/plugins/guests/coreos/cap/docker.rb +14 -0
  409. data/plugins/guests/coreos/guest.rb +14 -0
  410. data/plugins/guests/coreos/plugin.rb +33 -0
  411. data/plugins/guests/darwin/cap/change_host_name.rb +43 -0
  412. data/plugins/guests/darwin/cap/choose_addressable_ip_addr.rb +23 -0
  413. data/plugins/guests/darwin/cap/configure_networks.rb +126 -0
  414. data/plugins/guests/darwin/cap/darwin_version.rb +43 -0
  415. data/plugins/guests/darwin/cap/halt.rb +21 -0
  416. data/plugins/guests/darwin/cap/mount_smb_shared_folder.rb +46 -0
  417. data/plugins/guests/darwin/cap/mount_vmware_shared_folder.rb +135 -0
  418. data/plugins/guests/darwin/cap/rsync.rb +14 -0
  419. data/plugins/guests/darwin/cap/shell_expand_guest_path.rb +30 -0
  420. data/plugins/guests/darwin/cap/verify_vmware_hgfs.rb +15 -0
  421. data/plugins/guests/darwin/guest.rb +18 -0
  422. data/plugins/guests/darwin/plugin.rb +93 -0
  423. data/plugins/guests/debian/cap/change_host_name.rb +110 -0
  424. data/plugins/guests/debian/cap/configure_networks.rb +205 -0
  425. data/plugins/guests/debian/cap/nfs.rb +19 -0
  426. data/plugins/guests/debian/cap/rsync.rb +18 -0
  427. data/plugins/guests/debian/cap/smb.rb +20 -0
  428. data/plugins/guests/debian/guest.rb +13 -0
  429. data/plugins/guests/debian/plugin.rb +43 -0
  430. data/plugins/guests/dragonflybsd/guest.rb +12 -0
  431. data/plugins/guests/dragonflybsd/plugin.rb +18 -0
  432. data/plugins/guests/elementary/guest.rb +13 -0
  433. data/plugins/guests/elementary/plugin.rb +18 -0
  434. data/plugins/guests/esxi/cap/change_host_name.rb +16 -0
  435. data/plugins/guests/esxi/cap/configure_networks.rb +41 -0
  436. data/plugins/guests/esxi/cap/halt.rb +19 -0
  437. data/plugins/guests/esxi/cap/mount_nfs_folder.rb +43 -0
  438. data/plugins/guests/esxi/cap/public_key.rb +68 -0
  439. data/plugins/guests/esxi/guest.rb +14 -0
  440. data/plugins/guests/esxi/plugin.rb +49 -0
  441. data/plugins/guests/fedora/cap/flavor.rb +26 -0
  442. data/plugins/guests/fedora/guest.rb +14 -0
  443. data/plugins/guests/fedora/plugin.rb +23 -0
  444. data/plugins/guests/freebsd/cap/change_host_name.rb +34 -0
  445. data/plugins/guests/freebsd/cap/configure_networks.rb +70 -0
  446. data/plugins/guests/freebsd/cap/mount_virtualbox_shared_folder.rb +79 -0
  447. data/plugins/guests/freebsd/cap/rsync.rb +18 -0
  448. data/plugins/guests/freebsd/cap/shell_expand_guest_path.rb +31 -0
  449. data/plugins/guests/freebsd/guest.rb +17 -0
  450. data/plugins/guests/freebsd/plugin.rb +68 -0
  451. data/plugins/guests/funtoo/cap/configure_networks.rb +50 -0
  452. data/plugins/guests/funtoo/guest.rb +12 -0
  453. data/plugins/guests/funtoo/plugin.rb +23 -0
  454. data/plugins/guests/gentoo/cap/change_host_name.rb +27 -0
  455. data/plugins/guests/gentoo/cap/configure_networks.rb +92 -0
  456. data/plugins/guests/gentoo/guest.rb +12 -0
  457. data/plugins/guests/gentoo/plugin.rb +28 -0
  458. data/plugins/guests/haiku/cap/change_host_name.rb +36 -0
  459. data/plugins/guests/haiku/cap/halt.rb +19 -0
  460. data/plugins/guests/haiku/cap/insert_public_key.rb +24 -0
  461. data/plugins/guests/haiku/cap/remove_public_key.rb +24 -0
  462. data/plugins/guests/haiku/cap/rsync.rb +22 -0
  463. data/plugins/guests/haiku/guest.rb +14 -0
  464. data/plugins/guests/haiku/plugin.rb +53 -0
  465. data/plugins/guests/kali/guest.rb +13 -0
  466. data/plugins/guests/kali/plugin.rb +18 -0
  467. data/plugins/guests/linux/cap/change_host_name.rb +49 -0
  468. data/plugins/guests/linux/cap/choose_addressable_ip_addr.rb +22 -0
  469. data/plugins/guests/linux/cap/file_system.rb +82 -0
  470. data/plugins/guests/linux/cap/halt.rb +27 -0
  471. data/plugins/guests/linux/cap/mount_smb_shared_folder.rb +95 -0
  472. data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +78 -0
  473. data/plugins/guests/linux/cap/network_interfaces.rb +89 -0
  474. data/plugins/guests/linux/cap/nfs.rb +51 -0
  475. data/plugins/guests/linux/cap/persist_mount_shared_folder.rb +77 -0
  476. data/plugins/guests/linux/cap/port.rb +14 -0
  477. data/plugins/guests/linux/cap/public_key.rb +65 -0
  478. data/plugins/guests/linux/cap/read_ip_address.rb +28 -0
  479. data/plugins/guests/linux/cap/reboot.rb +74 -0
  480. data/plugins/guests/linux/cap/rsync.rb +14 -0
  481. data/plugins/guests/linux/cap/shell_expand_guest_path.rb +35 -0
  482. data/plugins/guests/linux/guest.rb +26 -0
  483. data/plugins/guests/linux/plugin.rb +139 -0
  484. data/plugins/guests/mint/guest.rb +13 -0
  485. data/plugins/guests/mint/plugin.rb +18 -0
  486. data/plugins/guests/netbsd/cap/change_host_name.rb +20 -0
  487. data/plugins/guests/netbsd/cap/configure_networks.rb +56 -0
  488. data/plugins/guests/netbsd/cap/rsync.rb +23 -0
  489. data/plugins/guests/netbsd/cap/shell_expand_guest_path.rb +30 -0
  490. data/plugins/guests/netbsd/guest.rb +14 -0
  491. data/plugins/guests/netbsd/plugin.rb +58 -0
  492. data/plugins/guests/nixos/cap/change_host_name.rb +47 -0
  493. data/plugins/guests/nixos/cap/configure_networks.rb +135 -0
  494. data/plugins/guests/nixos/cap/nfs_client.rb +14 -0
  495. data/plugins/guests/nixos/guest.rb +20 -0
  496. data/plugins/guests/nixos/plugin.rb +33 -0
  497. data/plugins/guests/omnios/cap/change_host_name.rb +23 -0
  498. data/plugins/guests/omnios/cap/mount_nfs_folder.rb +24 -0
  499. data/plugins/guests/omnios/cap/rsync.rb +14 -0
  500. data/plugins/guests/omnios/guest.rb +12 -0
  501. data/plugins/guests/omnios/plugin.rb +33 -0
  502. data/plugins/guests/openbsd/cap/change_host_name.rb +35 -0
  503. data/plugins/guests/openbsd/cap/configure_networks.rb +49 -0
  504. data/plugins/guests/openbsd/cap/halt.rb +22 -0
  505. data/plugins/guests/openbsd/cap/rsync.rb +32 -0
  506. data/plugins/guests/openbsd/cap/shell_expand_guest_path.rb +30 -0
  507. data/plugins/guests/openbsd/guest.rb +14 -0
  508. data/plugins/guests/openbsd/plugin.rb +63 -0
  509. data/plugins/guests/openwrt/cap/change_host_name.rb +22 -0
  510. data/plugins/guests/openwrt/cap/halt.rb +19 -0
  511. data/plugins/guests/openwrt/cap/insert_public_key.rb +23 -0
  512. data/plugins/guests/openwrt/cap/remove_public_key.rb +25 -0
  513. data/plugins/guests/openwrt/cap/rsync.rb +38 -0
  514. data/plugins/guests/openwrt/guest.rb +26 -0
  515. data/plugins/guests/openwrt/plugin.rb +64 -0
  516. data/plugins/guests/photon/cap/change_host_name.rb +22 -0
  517. data/plugins/guests/photon/cap/configure_networks.rb +33 -0
  518. data/plugins/guests/photon/cap/docker.rb +14 -0
  519. data/plugins/guests/photon/guest.rb +12 -0
  520. data/plugins/guests/photon/plugin.rb +33 -0
  521. data/plugins/guests/pld/cap/change_host_name.rb +26 -0
  522. data/plugins/guests/pld/cap/flavor.rb +14 -0
  523. data/plugins/guests/pld/cap/network_scripts_dir.rb +14 -0
  524. data/plugins/guests/pld/guest.rb +12 -0
  525. data/plugins/guests/pld/plugin.rb +33 -0
  526. data/plugins/guests/redhat/cap/change_host_name.rb +59 -0
  527. data/plugins/guests/redhat/cap/configure_networks.rb +113 -0
  528. data/plugins/guests/redhat/cap/flavor.rb +32 -0
  529. data/plugins/guests/redhat/cap/network_scripts_dir.rb +18 -0
  530. data/plugins/guests/redhat/cap/nfs_client.rb +33 -0
  531. data/plugins/guests/redhat/cap/rsync.rb +20 -0
  532. data/plugins/guests/redhat/cap/smb.rb +23 -0
  533. data/plugins/guests/redhat/guest.rb +12 -0
  534. data/plugins/guests/redhat/plugin.rb +53 -0
  535. data/plugins/guests/rocky/cap/flavor.rb +26 -0
  536. data/plugins/guests/rocky/guest.rb +13 -0
  537. data/plugins/guests/rocky/plugin.rb +23 -0
  538. data/plugins/guests/slackware/cap/change_host_name.rb +24 -0
  539. data/plugins/guests/slackware/cap/configure_networks.rb +51 -0
  540. data/plugins/guests/slackware/guest.rb +12 -0
  541. data/plugins/guests/slackware/plugin.rb +28 -0
  542. data/plugins/guests/smartos/cap/change_host_name.rb +29 -0
  543. data/plugins/guests/smartos/cap/configure_networks.rb +30 -0
  544. data/plugins/guests/smartos/cap/halt.rb +25 -0
  545. data/plugins/guests/smartos/cap/insert_public_key.rb +31 -0
  546. data/plugins/guests/smartos/cap/mount_nfs.rb +31 -0
  547. data/plugins/guests/smartos/cap/remove_public_key.rb +28 -0
  548. data/plugins/guests/smartos/cap/rsync.rb +36 -0
  549. data/plugins/guests/smartos/config.rb +18 -0
  550. data/plugins/guests/smartos/guest.rb +14 -0
  551. data/plugins/guests/smartos/plugin.rb +74 -0
  552. data/plugins/guests/solaris/cap/change_host_name.rb +20 -0
  553. data/plugins/guests/solaris/cap/configure_networks.rb +28 -0
  554. data/plugins/guests/solaris/cap/file_system.rb +80 -0
  555. data/plugins/guests/solaris/cap/halt.rb +25 -0
  556. data/plugins/guests/solaris/cap/insert_public_key.rb +25 -0
  557. data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +44 -0
  558. data/plugins/guests/solaris/cap/remove_public_key.rb +25 -0
  559. data/plugins/guests/solaris/cap/rsync.rb +36 -0
  560. data/plugins/guests/solaris/config.rb +34 -0
  561. data/plugins/guests/solaris/guest.rb +17 -0
  562. data/plugins/guests/solaris/plugin.rb +88 -0
  563. data/plugins/guests/solaris11/cap/change_host_name.rb +26 -0
  564. data/plugins/guests/solaris11/cap/configure_networks.rb +37 -0
  565. data/plugins/guests/solaris11/config.rb +37 -0
  566. data/plugins/guests/solaris11/guest.rb +22 -0
  567. data/plugins/guests/solaris11/plugin.rb +42 -0
  568. data/plugins/guests/suse/cap/change_host_name.rb +48 -0
  569. data/plugins/guests/suse/cap/configure_networks.rb +53 -0
  570. data/plugins/guests/suse/cap/halt.rb +23 -0
  571. data/plugins/guests/suse/cap/network_scripts_dir.rb +14 -0
  572. data/plugins/guests/suse/cap/nfs_client.rb +18 -0
  573. data/plugins/guests/suse/cap/rsync.rb +18 -0
  574. data/plugins/guests/suse/guest.rb +12 -0
  575. data/plugins/guests/suse/plugin.rb +53 -0
  576. data/plugins/guests/tinycore/cap/change_host_name.rb +16 -0
  577. data/plugins/guests/tinycore/cap/configure_networks.rb +29 -0
  578. data/plugins/guests/tinycore/cap/halt.rb +19 -0
  579. data/plugins/guests/tinycore/cap/mount_nfs.rb +44 -0
  580. data/plugins/guests/tinycore/cap/rsync.rb +20 -0
  581. data/plugins/guests/tinycore/guest.rb +13 -0
  582. data/plugins/guests/tinycore/plugin.rb +43 -0
  583. data/plugins/guests/trisquel/guest.rb +12 -0
  584. data/plugins/guests/trisquel/plugin.rb +18 -0
  585. data/plugins/guests/ubuntu/guest.rb +13 -0
  586. data/plugins/guests/ubuntu/plugin.rb +18 -0
  587. data/plugins/guests/windows/cap/change_host_name.rb +36 -0
  588. data/plugins/guests/windows/cap/choose_addressable_ip_addr.rb +23 -0
  589. data/plugins/guests/windows/cap/configure_networks.rb +83 -0
  590. data/plugins/guests/windows/cap/file_system.rb +68 -0
  591. data/plugins/guests/windows/cap/halt.rb +19 -0
  592. data/plugins/guests/windows/cap/mount_shared_folder.rb +60 -0
  593. data/plugins/guests/windows/cap/public_key.rb +87 -0
  594. data/plugins/guests/windows/cap/reboot.rb +63 -0
  595. data/plugins/guests/windows/cap/rsync.rb +29 -0
  596. data/plugins/guests/windows/config.rb +26 -0
  597. data/plugins/guests/windows/errors.rb +25 -0
  598. data/plugins/guests/windows/guest.rb +13 -0
  599. data/plugins/guests/windows/guest_network.rb +128 -0
  600. data/plugins/guests/windows/plugin.rb +116 -0
  601. data/plugins/guests/windows/scripts/mount_volume.ps1.erb +48 -0
  602. data/plugins/guests/windows/scripts/reboot_detect.ps1 +50 -0
  603. data/plugins/guests/windows/scripts/set_work_network.ps1 +9 -0
  604. data/plugins/guests/windows/scripts/winrs_v3_get_adapters.ps1 +14 -0
  605. data/plugins/hosts/alt/cap/nfs.rb +46 -0
  606. data/plugins/hosts/alt/host.rb +14 -0
  607. data/plugins/hosts/alt/plugin.rb +35 -0
  608. data/plugins/hosts/arch/cap/nfs.rb +22 -0
  609. data/plugins/hosts/arch/host.rb +14 -0
  610. data/plugins/hosts/arch/plugin.rb +35 -0
  611. data/plugins/hosts/bsd/cap/nfs.rb +218 -0
  612. data/plugins/hosts/bsd/cap/path.rb +14 -0
  613. data/plugins/hosts/bsd/cap/ssh.rb +19 -0
  614. data/plugins/hosts/bsd/host.rb +15 -0
  615. data/plugins/hosts/bsd/plugin.rb +63 -0
  616. data/plugins/hosts/darwin/cap/configured_ip_addresses.rb +21 -0
  617. data/plugins/hosts/darwin/cap/fs_iso.rb +52 -0
  618. data/plugins/hosts/darwin/cap/nfs.rb +14 -0
  619. data/plugins/hosts/darwin/cap/path.rb +66 -0
  620. data/plugins/hosts/darwin/cap/provider_install_virtualbox.rb +64 -0
  621. data/plugins/hosts/darwin/cap/rdp.rb +64 -0
  622. data/plugins/hosts/darwin/cap/smb.rb +128 -0
  623. data/plugins/hosts/darwin/cap/version.rb +26 -0
  624. data/plugins/hosts/darwin/host.rb +14 -0
  625. data/plugins/hosts/darwin/plugin.rb +83 -0
  626. data/plugins/hosts/darwin/scripts/install_virtualbox.sh +18 -0
  627. data/plugins/hosts/freebsd/cap/nfs.rb +34 -0
  628. data/plugins/hosts/freebsd/host.rb +15 -0
  629. data/plugins/hosts/freebsd/plugin.rb +34 -0
  630. data/plugins/hosts/gentoo/cap/nfs.rb +42 -0
  631. data/plugins/hosts/gentoo/host.rb +14 -0
  632. data/plugins/hosts/gentoo/plugin.rb +31 -0
  633. data/plugins/hosts/linux/cap/fs_iso.rb +52 -0
  634. data/plugins/hosts/linux/cap/nfs.rb +296 -0
  635. data/plugins/hosts/linux/cap/rdp.rb +59 -0
  636. data/plugins/hosts/linux/cap/ssh.rb +19 -0
  637. data/plugins/hosts/linux/host.rb +15 -0
  638. data/plugins/hosts/linux/plugin.rb +70 -0
  639. data/plugins/hosts/null/host.rb +15 -0
  640. data/plugins/hosts/null/plugin.rb +18 -0
  641. data/plugins/hosts/redhat/cap/nfs.rb +58 -0
  642. data/plugins/hosts/redhat/host.rb +31 -0
  643. data/plugins/hosts/redhat/plugin.rb +30 -0
  644. data/plugins/hosts/slackware/cap/nfs.rb +18 -0
  645. data/plugins/hosts/slackware/host.rb +15 -0
  646. data/plugins/hosts/slackware/plugin.rb +30 -0
  647. data/plugins/hosts/suse/cap/nfs.rb +22 -0
  648. data/plugins/hosts/suse/host.rb +30 -0
  649. data/plugins/hosts/suse/plugin.rb +33 -0
  650. data/plugins/hosts/void/cap/nfs.rb +27 -0
  651. data/plugins/hosts/void/host.rb +23 -0
  652. data/plugins/hosts/void/plugin.rb +33 -0
  653. data/plugins/hosts/windows/cap/configured_ip_addresses.rb +32 -0
  654. data/plugins/hosts/windows/cap/fs_iso.rb +51 -0
  655. data/plugins/hosts/windows/cap/nfs.rb +14 -0
  656. data/plugins/hosts/windows/cap/provider_install_virtualbox.rb +65 -0
  657. data/plugins/hosts/windows/cap/ps.rb +50 -0
  658. data/plugins/hosts/windows/cap/rdp.rb +33 -0
  659. data/plugins/hosts/windows/cap/smb.rb +203 -0
  660. data/plugins/hosts/windows/cap/ssh.rb +29 -0
  661. data/plugins/hosts/windows/host.rb +26 -0
  662. data/plugins/hosts/windows/plugin.rb +83 -0
  663. data/plugins/hosts/windows/scripts/check_credentials.ps1 +37 -0
  664. data/plugins/hosts/windows/scripts/host_info.ps1 +24 -0
  665. data/plugins/hosts/windows/scripts/install_virtualbox.ps1 +40 -0
  666. data/plugins/hosts/windows/scripts/set_share.ps1 +40 -0
  667. data/plugins/hosts/windows/scripts/set_ssh_key_permissions.ps1 +20 -0
  668. data/plugins/hosts/windows/scripts/unset_share.ps1 +13 -0
  669. data/plugins/hosts/windows/scripts/utils/VagrantSSH/VagrantSSH.psm1 +29 -0
  670. data/plugins/kernel_v1/config/nfs.rb +23 -0
  671. data/plugins/kernel_v1/config/package.rb +20 -0
  672. data/plugins/kernel_v1/config/ssh.rb +50 -0
  673. data/plugins/kernel_v1/config/vagrant.rb +34 -0
  674. data/plugins/kernel_v1/config/vm.rb +191 -0
  675. data/plugins/kernel_v1/plugin.rb +47 -0
  676. data/plugins/kernel_v2/config/cloud_init.rb +136 -0
  677. data/plugins/kernel_v2/config/disk.rb +224 -0
  678. data/plugins/kernel_v2/config/package.rb +24 -0
  679. data/plugins/kernel_v2/config/push.rb +155 -0
  680. data/plugins/kernel_v2/config/ssh.rb +93 -0
  681. data/plugins/kernel_v2/config/ssh_connect.rb +194 -0
  682. data/plugins/kernel_v2/config/trigger.rb +214 -0
  683. data/plugins/kernel_v2/config/vagrant.rb +99 -0
  684. data/plugins/kernel_v2/config/vm.rb +1062 -0
  685. data/plugins/kernel_v2/config/vm_provisioner.rb +202 -0
  686. data/plugins/kernel_v2/config/vm_subvm.rb +33 -0
  687. data/plugins/kernel_v2/config/vm_trigger.rb +297 -0
  688. data/plugins/kernel_v2/plugin.rb +71 -0
  689. data/plugins/providers/docker/action/build.rb +99 -0
  690. data/plugins/providers/docker/action/compare_synced_folders.rb +65 -0
  691. data/plugins/providers/docker/action/connect_networks.rb +80 -0
  692. data/plugins/providers/docker/action/create.rb +162 -0
  693. data/plugins/providers/docker/action/destroy.rb +34 -0
  694. data/plugins/providers/docker/action/destroy_build_image.rb +51 -0
  695. data/plugins/providers/docker/action/destroy_network.rb +53 -0
  696. data/plugins/providers/docker/action/forwarded_ports.rb +36 -0
  697. data/plugins/providers/docker/action/has_ssh.rb +21 -0
  698. data/plugins/providers/docker/action/host_machine.rb +75 -0
  699. data/plugins/providers/docker/action/host_machine_build_dir.rb +48 -0
  700. data/plugins/providers/docker/action/host_machine_port_checker.rb +34 -0
  701. data/plugins/providers/docker/action/host_machine_port_warning.rb +40 -0
  702. data/plugins/providers/docker/action/host_machine_required.rb +20 -0
  703. data/plugins/providers/docker/action/host_machine_sync_folders.rb +175 -0
  704. data/plugins/providers/docker/action/host_machine_sync_folders_disable.rb +91 -0
  705. data/plugins/providers/docker/action/init_state.rb +23 -0
  706. data/plugins/providers/docker/action/is_build.rb +19 -0
  707. data/plugins/providers/docker/action/is_host_machine_created.rb +32 -0
  708. data/plugins/providers/docker/action/login.rb +51 -0
  709. data/plugins/providers/docker/action/prepare_forwarded_port_collision_params.rb +64 -0
  710. data/plugins/providers/docker/action/prepare_networks.rb +372 -0
  711. data/plugins/providers/docker/action/prepare_nfs_settings.rb +60 -0
  712. data/plugins/providers/docker/action/prepare_nfs_valid_ids.rb +22 -0
  713. data/plugins/providers/docker/action/prepare_ssh.rb +48 -0
  714. data/plugins/providers/docker/action/pull.rb +30 -0
  715. data/plugins/providers/docker/action/start.rb +24 -0
  716. data/plugins/providers/docker/action/stop.rb +24 -0
  717. data/plugins/providers/docker/action/wait_for_running.rb +70 -0
  718. data/plugins/providers/docker/action.rb +319 -0
  719. data/plugins/providers/docker/cap/has_communicator.rb +14 -0
  720. data/plugins/providers/docker/cap/proxy_machine.rb +15 -0
  721. data/plugins/providers/docker/cap/public_address.rb +26 -0
  722. data/plugins/providers/docker/command/exec.rb +112 -0
  723. data/plugins/providers/docker/command/logs.rb +111 -0
  724. data/plugins/providers/docker/command/run.rb +76 -0
  725. data/plugins/providers/docker/communicator.rb +199 -0
  726. data/plugins/providers/docker/config.rb +362 -0
  727. data/plugins/providers/docker/driver/compose.rb +315 -0
  728. data/plugins/providers/docker/driver.rb +416 -0
  729. data/plugins/providers/docker/errors.rb +108 -0
  730. data/plugins/providers/docker/executor/local.rb +48 -0
  731. data/plugins/providers/docker/executor/vagrant.rb +88 -0
  732. data/plugins/providers/docker/hostmachine/Vagrantfile +3 -0
  733. data/plugins/providers/docker/plugin.rb +89 -0
  734. data/plugins/providers/docker/provider.rb +215 -0
  735. data/plugins/providers/docker/synced_folder.rb +35 -0
  736. data/plugins/providers/hyperv/action/check_access.rb +27 -0
  737. data/plugins/providers/hyperv/action/check_enabled.rb +25 -0
  738. data/plugins/providers/hyperv/action/configure.rb +115 -0
  739. data/plugins/providers/hyperv/action/delete_vm.rb +28 -0
  740. data/plugins/providers/hyperv/action/export.rb +45 -0
  741. data/plugins/providers/hyperv/action/import.rb +86 -0
  742. data/plugins/providers/hyperv/action/is_windows.rb +19 -0
  743. data/plugins/providers/hyperv/action/message_will_not_destroy.rb +20 -0
  744. data/plugins/providers/hyperv/action/net_set_mac.rb +23 -0
  745. data/plugins/providers/hyperv/action/net_set_vlan.rb +23 -0
  746. data/plugins/providers/hyperv/action/package.rb +19 -0
  747. data/plugins/providers/hyperv/action/package_metadata_json.rb +37 -0
  748. data/plugins/providers/hyperv/action/package_setup_files.rb +19 -0
  749. data/plugins/providers/hyperv/action/package_setup_folders.rb +21 -0
  750. data/plugins/providers/hyperv/action/package_vagrantfile.rb +37 -0
  751. data/plugins/providers/hyperv/action/read_guest_ip.rb +45 -0
  752. data/plugins/providers/hyperv/action/read_state.rb +33 -0
  753. data/plugins/providers/hyperv/action/resume_vm.rb +20 -0
  754. data/plugins/providers/hyperv/action/set_name.rb +46 -0
  755. data/plugins/providers/hyperv/action/snapshot_delete.rb +30 -0
  756. data/plugins/providers/hyperv/action/snapshot_restore.rb +26 -0
  757. data/plugins/providers/hyperv/action/snapshot_save.rb +30 -0
  758. data/plugins/providers/hyperv/action/start_instance.rb +20 -0
  759. data/plugins/providers/hyperv/action/stop_instance.rb +20 -0
  760. data/plugins/providers/hyperv/action/suspend_vm.rb +20 -0
  761. data/plugins/providers/hyperv/action/wait_for_ip_address.rb +62 -0
  762. data/plugins/providers/hyperv/action.rb +326 -0
  763. data/plugins/providers/hyperv/cap/cleanup_disks.rb +92 -0
  764. data/plugins/providers/hyperv/cap/configure_disks.rb +248 -0
  765. data/plugins/providers/hyperv/cap/public_address.rb +18 -0
  766. data/plugins/providers/hyperv/cap/snapshot_list.rb +14 -0
  767. data/plugins/providers/hyperv/cap/validate_disk_ext.rb +37 -0
  768. data/plugins/providers/hyperv/config.rb +148 -0
  769. data/plugins/providers/hyperv/driver.rb +368 -0
  770. data/plugins/providers/hyperv/errors.rb +49 -0
  771. data/plugins/providers/hyperv/plugin.rb +74 -0
  772. data/plugins/providers/hyperv/provider.rb +116 -0
  773. data/plugins/providers/hyperv/scripts/add_dvd.ps1 +18 -0
  774. data/plugins/providers/hyperv/scripts/attach_disk_drive.ps1 +31 -0
  775. data/plugins/providers/hyperv/scripts/check_hyperv.ps1 +11 -0
  776. data/plugins/providers/hyperv/scripts/check_hyperv_access.ps1 +17 -0
  777. data/plugins/providers/hyperv/scripts/clone_vhd.ps1 +21 -0
  778. data/plugins/providers/hyperv/scripts/configure_vm.ps1 +130 -0
  779. data/plugins/providers/hyperv/scripts/create_snapshot.ps1 +27 -0
  780. data/plugins/providers/hyperv/scripts/delete_snapshot.ps1 +19 -0
  781. data/plugins/providers/hyperv/scripts/delete_vm.ps1 +22 -0
  782. data/plugins/providers/hyperv/scripts/dismount_vhd.ps1 +16 -0
  783. data/plugins/providers/hyperv/scripts/export_vm.ps1 +32 -0
  784. data/plugins/providers/hyperv/scripts/file_sync.ps1 +123 -0
  785. data/plugins/providers/hyperv/scripts/get_network_config.ps1 +68 -0
  786. data/plugins/providers/hyperv/scripts/get_network_mac.ps1 +35 -0
  787. data/plugins/providers/hyperv/scripts/get_scsi_controller.ps1 +19 -0
  788. data/plugins/providers/hyperv/scripts/get_switches.ps1 +13 -0
  789. data/plugins/providers/hyperv/scripts/get_vhd.ps1 +19 -0
  790. data/plugins/providers/hyperv/scripts/get_vm_status.ps1 +52 -0
  791. data/plugins/providers/hyperv/scripts/has_vmcx_support.ps1 +12 -0
  792. data/plugins/providers/hyperv/scripts/import_vm.ps1 +40 -0
  793. data/plugins/providers/hyperv/scripts/list_hdds.ps1 +20 -0
  794. data/plugins/providers/hyperv/scripts/list_snapshots.ps1 +22 -0
  795. data/plugins/providers/hyperv/scripts/new_vhd.ps1 +34 -0
  796. data/plugins/providers/hyperv/scripts/remove_disk_drive.ps1 +28 -0
  797. data/plugins/providers/hyperv/scripts/remove_dvd.ps1 +21 -0
  798. data/plugins/providers/hyperv/scripts/resize_disk_drive.ps1 +21 -0
  799. data/plugins/providers/hyperv/scripts/restore_snapshot.ps1 +20 -0
  800. data/plugins/providers/hyperv/scripts/resume_vm.ps1 +19 -0
  801. data/plugins/providers/hyperv/scripts/set_enhanced_session_transport_type.ps1 +36 -0
  802. data/plugins/providers/hyperv/scripts/set_name.ps1 +27 -0
  803. data/plugins/providers/hyperv/scripts/set_network_mac.ps1 +21 -0
  804. data/plugins/providers/hyperv/scripts/set_network_vlan.ps1 +19 -0
  805. data/plugins/providers/hyperv/scripts/set_vm_integration_services.ps1 +30 -0
  806. data/plugins/providers/hyperv/scripts/start_vm.ps1 +29 -0
  807. data/plugins/providers/hyperv/scripts/stop_vm.ps1 +20 -0
  808. data/plugins/providers/hyperv/scripts/suspend_vm.ps1 +19 -0
  809. data/plugins/providers/hyperv/scripts/utils/VagrantMessages/VagrantMessages.psm1 +27 -0
  810. data/plugins/providers/hyperv/scripts/utils/VagrantVM/VagrantVM.psm1 +776 -0
  811. data/plugins/providers/virtualbox/action/boot.rb +26 -0
  812. data/plugins/providers/virtualbox/action/check_accessible.rb +26 -0
  813. data/plugins/providers/virtualbox/action/check_created.rb +24 -0
  814. data/plugins/providers/virtualbox/action/check_guest_additions.rb +58 -0
  815. data/plugins/providers/virtualbox/action/check_running.rb +24 -0
  816. data/plugins/providers/virtualbox/action/check_virtualbox.rb +28 -0
  817. data/plugins/providers/virtualbox/action/clean_machine_folder.rb +55 -0
  818. data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +23 -0
  819. data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +34 -0
  820. data/plugins/providers/virtualbox/action/created.rb +23 -0
  821. data/plugins/providers/virtualbox/action/customize.rb +48 -0
  822. data/plugins/providers/virtualbox/action/destroy.rb +22 -0
  823. data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +26 -0
  824. data/plugins/providers/virtualbox/action/discard_state.rb +23 -0
  825. data/plugins/providers/virtualbox/action/export.rb +54 -0
  826. data/plugins/providers/virtualbox/action/forced_halt.rb +28 -0
  827. data/plugins/providers/virtualbox/action/forward_ports.rb +92 -0
  828. data/plugins/providers/virtualbox/action/import.rb +110 -0
  829. data/plugins/providers/virtualbox/action/import_master.rb +83 -0
  830. data/plugins/providers/virtualbox/action/is_paused.rb +23 -0
  831. data/plugins/providers/virtualbox/action/is_running.rb +23 -0
  832. data/plugins/providers/virtualbox/action/is_saved.rb +23 -0
  833. data/plugins/providers/virtualbox/action/match_mac_address.rb +30 -0
  834. data/plugins/providers/virtualbox/action/message_already_running.rb +19 -0
  835. data/plugins/providers/virtualbox/action/message_not_created.rb +19 -0
  836. data/plugins/providers/virtualbox/action/message_not_running.rb +19 -0
  837. data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +20 -0
  838. data/plugins/providers/virtualbox/action/network.rb +638 -0
  839. data/plugins/providers/virtualbox/action/network_fix_ipv6.rb +87 -0
  840. data/plugins/providers/virtualbox/action/package.rb +19 -0
  841. data/plugins/providers/virtualbox/action/package_setup_files.rb +19 -0
  842. data/plugins/providers/virtualbox/action/package_setup_folders.rb +21 -0
  843. data/plugins/providers/virtualbox/action/package_vagrantfile.rb +36 -0
  844. data/plugins/providers/virtualbox/action/prepare_clone_snapshot.rb +69 -0
  845. data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +38 -0
  846. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +162 -0
  847. data/plugins/providers/virtualbox/action/prepare_nfs_valid_ids.rb +20 -0
  848. data/plugins/providers/virtualbox/action/resume.rb +28 -0
  849. data/plugins/providers/virtualbox/action/sane_defaults.rb +92 -0
  850. data/plugins/providers/virtualbox/action/set_default_nic_type.rb +72 -0
  851. data/plugins/providers/virtualbox/action/set_name.rb +58 -0
  852. data/plugins/providers/virtualbox/action/setup_package_files.rb +20 -0
  853. data/plugins/providers/virtualbox/action/snapshot_delete.rb +37 -0
  854. data/plugins/providers/virtualbox/action/snapshot_restore.rb +33 -0
  855. data/plugins/providers/virtualbox/action/snapshot_save.rb +28 -0
  856. data/plugins/providers/virtualbox/action/suspend.rb +23 -0
  857. data/plugins/providers/virtualbox/action.rb +433 -0
  858. data/plugins/providers/virtualbox/cap/cleanup_disks.rb +86 -0
  859. data/plugins/providers/virtualbox/cap/configure_disks.rb +441 -0
  860. data/plugins/providers/virtualbox/cap/mount_options.rb +43 -0
  861. data/plugins/providers/virtualbox/cap/public_address.rb +18 -0
  862. data/plugins/providers/virtualbox/cap/validate_disk_ext.rb +37 -0
  863. data/plugins/providers/virtualbox/cap.rb +40 -0
  864. data/plugins/providers/virtualbox/config.rb +211 -0
  865. data/plugins/providers/virtualbox/driver/base.rb +530 -0
  866. data/plugins/providers/virtualbox/driver/meta.rb +212 -0
  867. data/plugins/providers/virtualbox/driver/version_4_0.rb +574 -0
  868. data/plugins/providers/virtualbox/driver/version_4_1.rb +699 -0
  869. data/plugins/providers/virtualbox/driver/version_4_2.rb +713 -0
  870. data/plugins/providers/virtualbox/driver/version_4_3.rb +757 -0
  871. data/plugins/providers/virtualbox/driver/version_5_0.rb +1022 -0
  872. data/plugins/providers/virtualbox/driver/version_5_1.rb +19 -0
  873. data/plugins/providers/virtualbox/driver/version_5_2.rb +19 -0
  874. data/plugins/providers/virtualbox/driver/version_6_0.rb +105 -0
  875. data/plugins/providers/virtualbox/driver/version_6_1.rb +42 -0
  876. data/plugins/providers/virtualbox/driver/version_7_0.rb +306 -0
  877. data/plugins/providers/virtualbox/driver/version_7_1.rb +19 -0
  878. data/plugins/providers/virtualbox/model/forwarded_port.rb +73 -0
  879. data/plugins/providers/virtualbox/model/storage_controller.rb +138 -0
  880. data/plugins/providers/virtualbox/model/storage_controller_array.rb +101 -0
  881. data/plugins/providers/virtualbox/plugin.rb +120 -0
  882. data/plugins/providers/virtualbox/provider.rb +133 -0
  883. data/plugins/providers/virtualbox/synced_folder.rb +153 -0
  884. data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +40 -0
  885. data/plugins/provisioners/ansible/cap/guest/alpine/ansible_install.rb +47 -0
  886. data/plugins/provisioners/ansible/cap/guest/arch/ansible_install.rb +44 -0
  887. data/plugins/provisioners/ansible/cap/guest/debian/ansible_install.rb +56 -0
  888. data/plugins/provisioners/ansible/cap/guest/facts.rb +27 -0
  889. data/plugins/provisioners/ansible/cap/guest/fedora/ansible_install.rb +43 -0
  890. data/plugins/provisioners/ansible/cap/guest/freebsd/ansible_install.rb +26 -0
  891. data/plugins/provisioners/ansible/cap/guest/pip/pip.rb +49 -0
  892. data/plugins/provisioners/ansible/cap/guest/posix/ansible_installed.rb +28 -0
  893. data/plugins/provisioners/ansible/cap/guest/redhat/ansible_install.rb +75 -0
  894. data/plugins/provisioners/ansible/cap/guest/suse/ansible_install.rb +26 -0
  895. data/plugins/provisioners/ansible/cap/guest/ubuntu/ansible_install.rb +42 -0
  896. data/plugins/provisioners/ansible/config/base.rb +157 -0
  897. data/plugins/provisioners/ansible/config/guest.rb +59 -0
  898. data/plugins/provisioners/ansible/config/host.rb +66 -0
  899. data/plugins/provisioners/ansible/constants.rb +17 -0
  900. data/plugins/provisioners/ansible/errors.rb +43 -0
  901. data/plugins/provisioners/ansible/helpers.rb +20 -0
  902. data/plugins/provisioners/ansible/plugin.rb +88 -0
  903. data/plugins/provisioners/ansible/provisioner/base.rb +405 -0
  904. data/plugins/provisioners/ansible/provisioner/guest.rb +197 -0
  905. data/plugins/provisioners/ansible/provisioner/host.rb +352 -0
  906. data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +24 -0
  907. data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +17 -0
  908. data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +37 -0
  909. data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +37 -0
  910. data/plugins/provisioners/cfengine/cap/suse/cfengine_install.rb +21 -0
  911. data/plugins/provisioners/cfengine/config.rb +127 -0
  912. data/plugins/provisioners/cfengine/plugin.rb +50 -0
  913. data/plugins/provisioners/cfengine/provisioner.rb +142 -0
  914. data/plugins/provisioners/chef/cap/debian/chef_install.rb +22 -0
  915. data/plugins/provisioners/chef/cap/freebsd/chef_install.rb +21 -0
  916. data/plugins/provisioners/chef/cap/freebsd/chef_installed.rb +27 -0
  917. data/plugins/provisioners/chef/cap/linux/chef_installed.rb +27 -0
  918. data/plugins/provisioners/chef/cap/omnios/chef_install.rb +23 -0
  919. data/plugins/provisioners/chef/cap/omnios/chef_installed.rb +28 -0
  920. data/plugins/provisioners/chef/cap/redhat/chef_install.rb +27 -0
  921. data/plugins/provisioners/chef/cap/suse/chef_install.rb +30 -0
  922. data/plugins/provisioners/chef/cap/windows/chef_install.rb +19 -0
  923. data/plugins/provisioners/chef/cap/windows/chef_installed.rb +24 -0
  924. data/plugins/provisioners/chef/command_builder.rb +87 -0
  925. data/plugins/provisioners/chef/config/base.rb +139 -0
  926. data/plugins/provisioners/chef/config/base_runner.rb +131 -0
  927. data/plugins/provisioners/chef/config/chef_apply.rb +53 -0
  928. data/plugins/provisioners/chef/config/chef_client.rb +77 -0
  929. data/plugins/provisioners/chef/config/chef_solo.rb +141 -0
  930. data/plugins/provisioners/chef/config/chef_zero.rb +133 -0
  931. data/plugins/provisioners/chef/installer.rb +51 -0
  932. data/plugins/provisioners/chef/omnibus.rb +40 -0
  933. data/plugins/provisioners/chef/plugin.rb +108 -0
  934. data/plugins/provisioners/chef/provisioner/base.rb +258 -0
  935. data/plugins/provisioners/chef/provisioner/chef_apply.rb +74 -0
  936. data/plugins/provisioners/chef/provisioner/chef_client.rb +179 -0
  937. data/plugins/provisioners/chef/provisioner/chef_solo.rb +244 -0
  938. data/plugins/provisioners/chef/provisioner/chef_zero.rb +123 -0
  939. data/plugins/provisioners/container/client.rb +206 -0
  940. data/plugins/provisioners/container/config.rb +86 -0
  941. data/plugins/provisioners/container/installer.rb +16 -0
  942. data/plugins/provisioners/container/plugin.rb +26 -0
  943. data/plugins/provisioners/container/provisioner.rb +31 -0
  944. data/plugins/provisioners/docker/cap/centos/docker_install.rb +44 -0
  945. data/plugins/provisioners/docker/cap/centos/docker_start_service.rb +27 -0
  946. data/plugins/provisioners/docker/cap/debian/docker_install.rb +21 -0
  947. data/plugins/provisioners/docker/cap/debian/docker_start_service.rb +16 -0
  948. data/plugins/provisioners/docker/cap/fedora/docker_install.rb +30 -0
  949. data/plugins/provisioners/docker/cap/linux/docker_configure_vagrant_user.rb +23 -0
  950. data/plugins/provisioners/docker/cap/linux/docker_daemon_running.rb +16 -0
  951. data/plugins/provisioners/docker/cap/linux/docker_installed.rb +29 -0
  952. data/plugins/provisioners/docker/cap/windows/docker_daemon_running.rb +16 -0
  953. data/plugins/provisioners/docker/client.rb +26 -0
  954. data/plugins/provisioners/docker/config.rb +19 -0
  955. data/plugins/provisioners/docker/installer.rb +37 -0
  956. data/plugins/provisioners/docker/plugin.rb +71 -0
  957. data/plugins/provisioners/docker/provisioner.rb +59 -0
  958. data/plugins/provisioners/file/config.rb +32 -0
  959. data/plugins/provisioners/file/plugin.rb +26 -0
  960. data/plugins/provisioners/file/provisioner.rb +46 -0
  961. data/plugins/provisioners/podman/cap/centos/podman_install.rb +38 -0
  962. data/plugins/provisioners/podman/cap/linux/podman_installed.rb +16 -0
  963. data/plugins/provisioners/podman/cap/redhat/podman_install.rb +29 -0
  964. data/plugins/provisioners/podman/client.rb +15 -0
  965. data/plugins/provisioners/podman/config.rb +31 -0
  966. data/plugins/provisioners/podman/installer.rb +36 -0
  967. data/plugins/provisioners/podman/plugin.rb +41 -0
  968. data/plugins/provisioners/podman/provisioner.rb +55 -0
  969. data/plugins/provisioners/puppet/config/puppet.rb +178 -0
  970. data/plugins/provisioners/puppet/config/puppet_server.rb +84 -0
  971. data/plugins/provisioners/puppet/plugin.rb +36 -0
  972. data/plugins/provisioners/puppet/provisioner/puppet.rb +336 -0
  973. data/plugins/provisioners/puppet/provisioner/puppet_server.rb +114 -0
  974. data/plugins/provisioners/salt/bootstrap_downloader.rb +62 -0
  975. data/plugins/provisioners/salt/config.rb +194 -0
  976. data/plugins/provisioners/salt/errors.rb +18 -0
  977. data/plugins/provisioners/salt/plugin.rb +25 -0
  978. data/plugins/provisioners/salt/provisioner.rb +499 -0
  979. data/plugins/provisioners/shell/config.rb +146 -0
  980. data/plugins/provisioners/shell/plugin.rb +26 -0
  981. data/plugins/provisioners/shell/provisioner.rb +368 -0
  982. data/plugins/pushes/atlas/config.rb +151 -0
  983. data/plugins/pushes/atlas/errors.rb +16 -0
  984. data/plugins/pushes/atlas/locales/en.yml +25 -0
  985. data/plugins/pushes/atlas/plugin.rb +38 -0
  986. data/plugins/pushes/atlas/push.rb +87 -0
  987. data/plugins/pushes/ftp/adapter.rb +147 -0
  988. data/plugins/pushes/ftp/config.rb +133 -0
  989. data/plugins/pushes/ftp/errors.rb +16 -0
  990. data/plugins/pushes/ftp/locales/en.yml +19 -0
  991. data/plugins/pushes/ftp/plugin.rb +36 -0
  992. data/plugins/pushes/ftp/push.rb +137 -0
  993. data/plugins/pushes/heroku/config.rb +77 -0
  994. data/plugins/pushes/heroku/errors.rb +24 -0
  995. data/plugins/pushes/heroku/locales/en.yml +33 -0
  996. data/plugins/pushes/heroku/plugin.rb +36 -0
  997. data/plugins/pushes/heroku/push.rb +147 -0
  998. data/plugins/pushes/local-exec/config.rb +80 -0
  999. data/plugins/pushes/local-exec/errors.rb +16 -0
  1000. data/plugins/pushes/local-exec/locales/en.yml +26 -0
  1001. data/plugins/pushes/local-exec/plugin.rb +36 -0
  1002. data/plugins/pushes/local-exec/push.rb +91 -0
  1003. data/plugins/pushes/noop/config.rb +19 -0
  1004. data/plugins/pushes/noop/plugin.rb +25 -0
  1005. data/plugins/pushes/noop/push.rb +12 -0
  1006. data/plugins/synced_folders/nfs/action_cleanup.rb +32 -0
  1007. data/plugins/synced_folders/nfs/config.rb +35 -0
  1008. data/plugins/synced_folders/nfs/plugin.rb +49 -0
  1009. data/plugins/synced_folders/nfs/synced_folder.rb +171 -0
  1010. data/plugins/synced_folders/rsync/command/rsync.rb +81 -0
  1011. data/plugins/synced_folders/rsync/command/rsync_auto.rb +244 -0
  1012. data/plugins/synced_folders/rsync/default_unix_cap.rb +49 -0
  1013. data/plugins/synced_folders/rsync/helper.rb +296 -0
  1014. data/plugins/synced_folders/rsync/plugin.rb +31 -0
  1015. data/plugins/synced_folders/rsync/synced_folder.rb +62 -0
  1016. data/plugins/synced_folders/smb/cap/default_fstab_modification.rb +14 -0
  1017. data/plugins/synced_folders/smb/cap/mount_options.rb +59 -0
  1018. data/plugins/synced_folders/smb/config.rb +26 -0
  1019. data/plugins/synced_folders/smb/errors.rb +65 -0
  1020. data/plugins/synced_folders/smb/plugin.rb +60 -0
  1021. data/plugins/synced_folders/smb/synced_folder.rb +189 -0
  1022. data/plugins/synced_folders/unix_mount_helpers.rb +122 -0
  1023. data/scripts/install_rvm +19 -0
  1024. data/scripts/setup_tests +49 -0
  1025. data/scripts/sign.sh +29 -0
  1026. data/scripts/website_push_www.sh +43 -0
  1027. data/tasks/acceptance.rake +22 -0
  1028. data/tasks/bundler.rake +3 -0
  1029. data/tasks/test.rake +8 -0
  1030. data/templates/commands/init/Vagrantfile.erb +86 -0
  1031. data/templates/commands/init/Vagrantfile.min.erb +12 -0
  1032. data/templates/commands/ssh_config/config.erb +42 -0
  1033. data/templates/commands/winrm_config/config.erb +11 -0
  1034. data/templates/config/messages.erb +14 -0
  1035. data/templates/config/validation_failed.erb +7 -0
  1036. data/templates/guests/alpine/network_dhcp.erb +13 -0
  1037. data/templates/guests/alpine/network_static.erb +7 -0
  1038. data/templates/guests/alt/network_dhcp.erb +7 -0
  1039. data/templates/guests/alt/network_ipv4address.erb +3 -0
  1040. data/templates/guests/alt/network_ipv4route.erb +5 -0
  1041. data/templates/guests/alt/network_static.erb +7 -0
  1042. data/templates/guests/arch/default_network/network_dhcp.erb +4 -0
  1043. data/templates/guests/arch/default_network/network_static.erb +8 -0
  1044. data/templates/guests/arch/default_network/network_static6.erb +8 -0
  1045. data/templates/guests/arch/systemd_networkd/network_dhcp.erb +6 -0
  1046. data/templates/guests/arch/systemd_networkd/network_static.erb +9 -0
  1047. data/templates/guests/arch/systemd_networkd/network_static6.erb +9 -0
  1048. data/templates/guests/coreos/etcd.service.erb +10 -0
  1049. data/templates/guests/debian/network_dhcp.erb +13 -0
  1050. data/templates/guests/debian/network_static.erb +10 -0
  1051. data/templates/guests/debian/network_static6.erb +10 -0
  1052. data/templates/guests/freebsd/network_dhcp.erb +4 -0
  1053. data/templates/guests/freebsd/network_static.erb +6 -0
  1054. data/templates/guests/freebsd/network_static6.erb +6 -0
  1055. data/templates/guests/funtoo/network_dhcp.erb +4 -0
  1056. data/templates/guests/funtoo/network_static.erb +10 -0
  1057. data/templates/guests/funtoo/network_static6.erb +9 -0
  1058. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  1059. data/templates/guests/gentoo/network_static.erb +8 -0
  1060. data/templates/guests/gentoo/network_static6.erb +8 -0
  1061. data/templates/guests/gentoo/network_systemd.erb +16 -0
  1062. data/templates/guests/linux/etc_fstab.erb +6 -0
  1063. data/templates/guests/netbsd/network_dhcp.erb +3 -0
  1064. data/templates/guests/netbsd/network_static.erb +3 -0
  1065. data/templates/guests/nixos/hostname.erb +6 -0
  1066. data/templates/guests/nixos/network.erb +15 -0
  1067. data/templates/guests/openbsd/network_dhcp.erb +1 -0
  1068. data/templates/guests/openbsd/network_static.erb +1 -0
  1069. data/templates/guests/openbsd/network_static6.erb +1 -0
  1070. data/templates/guests/redhat/network_dhcp.erb +7 -0
  1071. data/templates/guests/redhat/network_static.erb +16 -0
  1072. data/templates/guests/redhat/network_static6.erb +12 -0
  1073. data/templates/guests/slackware/network_dhcp.erb +11 -0
  1074. data/templates/guests/slackware/network_static.erb +13 -0
  1075. data/templates/guests/suse/network_dhcp.erb +6 -0
  1076. data/templates/guests/suse/network_static.erb +13 -0
  1077. data/templates/guests/suse/network_static6.erb +16 -0
  1078. data/templates/license/license.html.tmpl +127 -0
  1079. data/templates/license/license.rtf.tmpl +0 -0
  1080. data/templates/license/license.tmpl +92 -0
  1081. data/templates/locales/comm_winrm.yml +85 -0
  1082. data/templates/locales/command_ps.yml +35 -0
  1083. data/templates/locales/command_rdp.yml +28 -0
  1084. data/templates/locales/en.yml +3149 -0
  1085. data/templates/locales/guest_windows.yml +26 -0
  1086. data/templates/locales/providers_docker.yml +321 -0
  1087. data/templates/locales/providers_hyperv.yml +111 -0
  1088. data/templates/locales/synced_folder_smb.yml +98 -0
  1089. data/templates/networking/network_manager/network_manager_device.erb +41 -0
  1090. data/templates/nfs/exports_bsd.erb +5 -0
  1091. data/templates/nfs/exports_darwin.erb +7 -0
  1092. data/templates/nfs/exports_linux.erb +7 -0
  1093. data/templates/package_Vagrantfile.erb +11 -0
  1094. data/templates/provisioners/chef_client/client.erb +41 -0
  1095. data/templates/provisioners/chef_solo/solo.erb +52 -0
  1096. data/templates/provisioners/chef_zero/zero.erb +45 -0
  1097. data/templates/rgloader.rb +12 -0
  1098. data/vagrant-spec.config.example.rb +13 -0
  1099. data/vagrant.gemspec +110 -20
  1100. data/version.txt +1 -0
  1101. metadata +1581 -43
  1102. data/LICENSE.txt +0 -22
  1103. data/message.txt +0 -17
@@ -0,0 +1,293 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "base64"
5
+ require "ed25519"
6
+ require "securerandom"
7
+
8
+ require "vagrant/util/retryable"
9
+
10
+ module Vagrant
11
+ module Util
12
+ class Keypair
13
+ # Magic string header
14
+ AUTH_MAGIC = "openssh-key-v1".freeze
15
+ # Header of private key file content
16
+ PRIVATE_KEY_START = "-----BEGIN OPENSSH PRIVATE KEY-----\n".freeze
17
+ # Footer of private key file content
18
+ PRIVATE_KEY_END = "-----END OPENSSH PRIVATE KEY-----\n".freeze
19
+
20
+ # Check if provided key is a supported key type
21
+ #
22
+ # @param [Symbol] key Key type to check
23
+ # @return [Boolean] key type is supported
24
+ def self.valid_type?(key)
25
+ VALID_TYPES.keys.include?(key)
26
+ end
27
+
28
+ # @return [Array<Symbol>] list of supported key types
29
+ def self.available_types
30
+ PREFER_KEY_TYPES.values
31
+ end
32
+
33
+ # Create a new keypair
34
+ #
35
+ # @param [String] password Password for the key or nil for no password (only supported for rsa type)
36
+ # @param [Symbol] type Key type to generate
37
+ # @return [Array<String, String, String>] Public key, openssh private key, openssh public key with comment
38
+ def self.create(password=nil, type: :rsa)
39
+ if !VALID_TYPES.key?(type)
40
+ raise ArgumentError,
41
+ "Invalid key type requested (supported types: #{available_types.map(&:inspect).join(", ")})"
42
+ end
43
+
44
+ VALID_TYPES[type].create(password)
45
+ end
46
+
47
+ class Ed25519
48
+ # Key type identifier
49
+ KEY_TYPE = "ssh-ed25519".freeze
50
+
51
+ # Encodes given string
52
+ #
53
+ # @param [String] s String to encode
54
+ # @return [String]
55
+ def self.string(s)
56
+ [s.length].pack("N") + s
57
+ end
58
+
59
+ # Encodes given string with padding to block size
60
+ #
61
+ # @param [String] s String to encode
62
+ # @param [Integer] blocksize Defined block size
63
+ # @return [String]
64
+ def self.padded_string(s, blocksize)
65
+ pad = blocksize - (s.length % blocksize)
66
+ string(s + Array(1..pad).pack("c*"))
67
+ end
68
+
69
+ # Creates an ed25519 SSH key pair
70
+ # @return [Array<String, String, String>] Public key, openssh private key, openssh public key with comment
71
+ # @note Password support was not included as it's not actively used anywhere. If it ends up being
72
+ # something that's needed, it can be revisited
73
+ def self.create(password=nil)
74
+ if password
75
+ raise NotImplementedError,
76
+ "Ed25519 key pair generation does not support passwords"
77
+ end
78
+
79
+ # Generate the key
80
+ base_key = ::Ed25519::SigningKey.generate
81
+ # Define the comment used for the key
82
+ comment = "vagrant"
83
+
84
+ # Grab the raw public key
85
+ public_key = base_key.verify_key.to_bytes
86
+ # Encode the public key for use building the openssh private key
87
+ encoded_public_key = string(KEY_TYPE) + string(public_key)
88
+ # Format the public key into the openssh public key format for writing
89
+ openssh_public_key = "#{KEY_TYPE} #{Base64.encode64(encoded_public_key).gsub("\n", "")} #{comment}"
90
+
91
+ # Agent encoded private key is used when building the openssh private key
92
+ # (https://datatracker.ietf.org/doc/html/draft-miller-ssh-agent#section-4.2.3)
93
+ # (https://dnaeon.github.io/openssh-private-key-binary-format/)
94
+ agent_private_key = [
95
+ ([SecureRandom.random_number((2**32)-1)] * 2).pack("NN"), # checkint, random uint32 value, twice (used for encryption verification)
96
+ encoded_public_key, # includes the key type and public key
97
+ string(base_key.seed + public_key), # private key with public key concatenated
98
+ string(comment), # comment for the key
99
+ ].join
100
+
101
+ # Build openssh private key data (https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key)
102
+ private_key = [
103
+ AUTH_MAGIC + "\0", # Magic string
104
+ string("none"), # cipher name, no encryption, so none
105
+ string("none"), # kdf name, no encryption, so none
106
+ string(""), # kdf options/data, no encryption, so empty string
107
+ [1].pack("N"), # Number of keys (just one)
108
+ string(encoded_public_key), # The public key
109
+ padded_string(agent_private_key, 8) # Private key encoded with agent rules, padded for 8 byte block size
110
+ ].join
111
+
112
+ # Create the openssh private key content
113
+ openssh_private_key = [
114
+ PRIVATE_KEY_START,
115
+ Base64.encode64(private_key),
116
+ PRIVATE_KEY_END,
117
+ ].join
118
+
119
+ return [public_key, openssh_private_key, openssh_public_key]
120
+ end
121
+ end
122
+
123
+ class Rsa
124
+ extend Retryable
125
+
126
+ # Key type identifier
127
+ KEY_TYPE = "ssh-rsa"
128
+
129
+ # Creates an SSH keypair and returns it.
130
+ #
131
+ # @param [String] password Password for the key, or nil for no password.
132
+ # @return [Array<String, String, String>] PEM-encoded public and private key,
133
+ # respectively. The final element is the OpenSSH encoded public
134
+ # key.
135
+ def self.create(password=nil)
136
+ # This sometimes fails with RSAError. It is inconsistent and strangely
137
+ # sleeps seem to fix it. We just retry this a few times. See GH-5056
138
+ rsa_key = nil
139
+ retryable(on: OpenSSL::PKey::RSAError, sleep: 2, tries: 5) do
140
+ rsa_key = OpenSSL::PKey::RSA.new(2048)
141
+ end
142
+
143
+ public_key = rsa_key.public_key
144
+ private_key = rsa_key.to_pem
145
+
146
+ if password
147
+ cipher = OpenSSL::Cipher.new('des3')
148
+ private_key = rsa_key.to_pem(cipher, password)
149
+ end
150
+
151
+ # Generate the binary necessary for the OpenSSH public key.
152
+ binary = [7].pack("N")
153
+ binary += "ssh-rsa"
154
+ ["e", "n"].each do |m|
155
+ val = public_key.send(m)
156
+ data = val.to_s(2)
157
+
158
+ first_byte = data[0,1].unpack("c").first
159
+ if val < 0
160
+ data[0] = [0x80 & first_byte].pack("c")
161
+ elsif first_byte < 0
162
+ data = 0.chr + data
163
+ end
164
+
165
+ binary += [data.length].pack("N") + data
166
+ end
167
+
168
+ openssh_key = "ssh-rsa #{Base64.encode64(binary).gsub("\n", "")} vagrant"
169
+ public_key = public_key.to_pem
170
+ return [public_key, private_key, openssh_key]
171
+ end
172
+ end
173
+
174
+ # Base class for Ecdsa type keys to subclass
175
+ class Ecdsa
176
+ # Encodes given string
177
+ #
178
+ # @param [String] s String to encode
179
+ # @return [String]
180
+ def self.string(s)
181
+ [s.length].pack("N") + s
182
+ end
183
+
184
+ # Encodes given string with padding to block size
185
+ #
186
+ # @param [String] s String to encode
187
+ # @param [Integer] blocksize Defined block size
188
+ # @return [String]
189
+ def self.padded_string(s, blocksize)
190
+ pad = blocksize - (s.length % blocksize)
191
+ string(s + Array(1..pad).pack("c*"))
192
+ end
193
+
194
+ # Creates an ed25519 SSH key pair
195
+ # @return [Array<String, String, String>] Public key, openssh private key, openssh public key with comment
196
+ # @note Password support was not included as it's not actively used anywhere. If it ends up being
197
+ # something that's needed, it can be revisited
198
+ def self.create(password=nil)
199
+ if password
200
+ raise NotImplementedError,
201
+ "Ecdsa key pair generation does not support passwords"
202
+ end
203
+
204
+ # Generate the key
205
+ base_key = OpenSSL::PKey::EC.generate(self.const_get(:OPENSSL_CURVE))
206
+ # Define the comment used for the key
207
+ comment = "vagrant"
208
+
209
+ # Grab the raw public key
210
+ public_key = base_key.public_key.to_bn.to_s(2)
211
+ # Encode the public key for use building the openssh private key
212
+ encoded_public_key = string(self.const_get(:KEY_TYPE)) + string(self.const_get(:OPENSSH_CURVE)) + string(public_key)
213
+ # Format the public key into the openssh public key format for writing
214
+ openssh_public_key = "#{self.const_get(:KEY_TYPE)} #{Base64.encode64(encoded_public_key).gsub("\n", "")} #{comment}"
215
+
216
+ pk_value = base_key.private_key.to_s(2)
217
+ # Pad the start of the key if required
218
+ if pk_value.length % 8 == 0
219
+ pk_value = "\0#{pk_value}"
220
+ end
221
+
222
+ # Agent encoded private key is used when building the openssh private key
223
+ # (https://datatracker.ietf.org/doc/html/draft-miller-ssh-agent#section-4.2.3)
224
+ # (https://dnaeon.github.io/openssh-private-key-binary-format/)
225
+ agent_private_key = [
226
+ ([SecureRandom.random_number((2**32)-1)] * 2).pack("NN"), # checkint, random uint32 value, twice (used for encryption verification)
227
+ encoded_public_key, # includes the key type and public key
228
+ string(pk_value), # private key
229
+ string(comment), # comment for the key
230
+ ].join
231
+
232
+ # Build openssh private key data (https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key)
233
+ private_key = [
234
+ AUTH_MAGIC + "\0", # Magic string
235
+ string("none"), # cipher name, no encryption, so none
236
+ string("none"), # kdf name, no encryption, so none
237
+ string(""), # kdf options/data, no encryption, so empty string
238
+ [1].pack("N"), # Number of keys (just one)
239
+ string(encoded_public_key), # The public key
240
+ padded_string(agent_private_key, 8) # Private key encoded with agent rules, padded for 8 byte block size
241
+ ].join
242
+
243
+ # Create the openssh private key content
244
+ openssh_private_key = [
245
+ PRIVATE_KEY_START,
246
+ Base64.encode64(private_key),
247
+ PRIVATE_KEY_END,
248
+ ].join
249
+
250
+ return [public_key, openssh_private_key, openssh_public_key]
251
+ end
252
+ end
253
+
254
+ class Ecdsa256 < Ecdsa
255
+ KEY_TYPE = "ecdsa-sha2-nistp256".freeze
256
+ OPENSSH_CURVE = "nistp256".freeze
257
+ OPENSSL_CURVE = "prime256v1".freeze
258
+ end
259
+
260
+ class Ecdsa384 < Ecdsa
261
+ KEY_TYPE = "ecdsa-sha2-nistp384".freeze
262
+ OPENSSH_CURVE = "nistp384".freeze
263
+ OPENSSL_CURVE = "secp384r1".freeze
264
+ end
265
+
266
+ class Ecdsa521 < Ecdsa
267
+ KEY_TYPE = "ecdsa-sha2-nistp521".freeze
268
+ OPENSSH_CURVE = "nistp521".freeze
269
+ OPENSSL_CURVE = "secp521r1".freeze
270
+ end
271
+
272
+ # Supported key types.
273
+ VALID_TYPES = {
274
+ ecdsa256: Ecdsa256,
275
+ ecdsa384: Ecdsa384,
276
+ ecdsa521: Ecdsa521,
277
+ ed25519: Ed25519,
278
+ rsa: Rsa
279
+ }.freeze
280
+
281
+ # Ordered mapping of openssh key type name to lookup name. The
282
+ # order defined here is based on preference. Note that ecdsa
283
+ # ordering is based on performance
284
+ PREFER_KEY_TYPES = {
285
+ Ed25519::KEY_TYPE => :ed25519,
286
+ Ecdsa256::KEY_TYPE => :ecdsa256,
287
+ Ecdsa521::KEY_TYPE => :ecdsa521,
288
+ Ecdsa384::KEY_TYPE => :ecdsa384,
289
+ Rsa::KEY_TYPE => :rsa,
290
+ }.freeze
291
+ end
292
+ end
293
+ end
@@ -0,0 +1,63 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ module Vagrant
5
+ module Util
6
+ class LineBuffer
7
+
8
+ # Maximum number of characters to buffer before sending
9
+ # to callback without detecting a new line
10
+ MAX_LINE_LENGTH = 5000.freeze
11
+
12
+ # Create a new line buffer. The registered block
13
+ # will be called when a new line is encountered on
14
+ # provided input, or the max line length is reached
15
+ def initialize(&callback)
16
+ raise ArgumentError,
17
+ "Expected callback but received none" if callback.nil?
18
+ @mu = Mutex.new
19
+ @callback = callback
20
+ @buffer = ""
21
+ end
22
+
23
+ # Add string data to output
24
+ #
25
+ # @param [String] str String of data to output
26
+ # @return [self]
27
+ def <<(str)
28
+ @mu.synchronize do
29
+ while i = str.index("\n")
30
+ @callback.call((@buffer + str[0, i+1]).rstrip)
31
+ @buffer.clear
32
+ str = str[i+1, str.length].to_s
33
+ end
34
+
35
+ @buffer << str.to_s
36
+
37
+ if @buffer.length > MAX_LINE_LENGTH
38
+ @callback.call(@buffer.dup)
39
+ @buffer.clear
40
+ end
41
+ end
42
+ self
43
+ end
44
+
45
+ # Closes the buffer. Any remaining data that has
46
+ # been buffered will be given to the callback.
47
+ # Once closed the instance will no longer be usable.
48
+ #
49
+ # @return [self]
50
+ def close
51
+ @mu.synchronize do
52
+ # Send any remaining output on the buffer
53
+ @callback.call(@buffer.dup) if !@buffer.empty?
54
+ # Disable this buffer instance
55
+ @callback = nil
56
+ @buffer.clear
57
+ @buffer.freeze
58
+ end
59
+ self
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,17 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ module Vagrant
5
+ module Util
6
+ module LineEndingHelpers
7
+ # Converts line endings to unix-style line endings in the
8
+ # given string.
9
+ #
10
+ # @param [String] string Original string
11
+ # @return [String] The fixed string
12
+ def dos_to_unix(string)
13
+ string.gsub("\r\n", "\n")
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,70 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "vagrant/util/credential_scrubber"
5
+ require "log4r/formatter/formatter"
6
+
7
+ module Vagrant
8
+ module Util
9
+ # Wrapper for logging formatting to provide
10
+ # information scrubbing prior to being written
11
+ # to output target
12
+ class LoggingFormatter < Log4r::BasicFormatter
13
+ # @return [Log4r::PatternFormatter]
14
+ attr_reader :formatter
15
+
16
+ # Creates a new formatter wrapper instance.
17
+ #
18
+ # @param [Log4r::Formatter]
19
+ def initialize(formatter)
20
+ @formatter = formatter
21
+ end
22
+
23
+ # Format event and scrub output
24
+ def format(event)
25
+ msg = formatter.format(event)
26
+ CredentialScrubber.desensitize(msg)
27
+ end
28
+ end
29
+
30
+ class HCLogFormatter < Log4r::BasicFormatter
31
+ MAX_MESSAGE_LENGTH = 4096
32
+
33
+ def format(event)
34
+ message = format_object(event.data).
35
+ force_encoding('UTF-8').
36
+ scrub("?")
37
+ if message.length > MAX_MESSAGE_LENGTH
38
+ message = Array.new.tap { |a|
39
+ until message.empty?
40
+ a << "continued..." unless a.empty?
41
+ a << message.slice!(0, MAX_MESSAGE_LENGTH)
42
+ end
43
+ }
44
+ else
45
+ message = [message]
46
+ end
47
+
48
+ message.map do |msg|
49
+ d = {
50
+ "@timestamp" => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%6N%:z"),
51
+ "@level" => Log4r::LNAMES[event.level].downcase,
52
+ "@module" => event.fullname,
53
+ "@name" => event.name,
54
+ "@message" => msg,
55
+ }
56
+ d["@caller"] = event.tracer[0] if event.tracer
57
+ d.to_json + "\n"
58
+ end
59
+ end
60
+ end
61
+
62
+ class HCLogOutputter < Log4r::StderrOutputter
63
+ def write(data)
64
+ data.each do |d|
65
+ super(d)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,36 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ module Vagrant
5
+ module Util
6
+ class MapCommandOptions
7
+ # Given a hash map of user specified argments, will generate
8
+ # a list. Set the key to the command flag, and the value to
9
+ # it's value. If the value is boolean (true), only the flag is
10
+ # added. eg.
11
+ # {a: "opt-a", b: true} -> ["--a", "opt-a", "--b"]
12
+ #
13
+ # @param [Hash] map of commands
14
+ # @param [String] string prepended to cmd line flags (keys)
15
+ #
16
+ # @return[Array<String>] commands in list form
17
+ def self.map_to_command_options(map, cmd_flag="--")
18
+ opt_list = []
19
+ if map == nil
20
+ return opt_list
21
+ end
22
+ map.each do |k, v|
23
+ # If the value is true (bool) add the key as the cmd flag
24
+ if v.is_a?(TrueClass)
25
+ opt_list.push("#{cmd_flag}#{k}")
26
+ # If the value is a string, add the key as the flag, and value as the flags argument
27
+ elsif v.is_a?(String)
28
+ opt_list.push("#{cmd_flag}#{k}")
29
+ opt_list.push(v)
30
+ end
31
+ end
32
+ return opt_list
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,95 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require 'mime/types'
5
+ require 'securerandom'
6
+
7
+ module Vagrant
8
+ module Util
9
+ module Mime
10
+ class Multipart
11
+
12
+ # @return [Array<String>] collection of content part of the multipart mime
13
+ attr_accessor :content
14
+
15
+ # @return [String] type of the content
16
+ attr_accessor :content_type
17
+
18
+ # @return [Hash] headers for the mime
19
+ attr_accessor :headers
20
+
21
+ # @param [String] (optional) mime content type
22
+ # @param [String] (optional) mime version
23
+ def initialize(content_type="multipart/mixed")
24
+ @content_id = "#{Time.now.to_i}@#{SecureRandom.alphanumeric(24)}.local"
25
+ @boundary = "Boundary_#{SecureRandom.alphanumeric(24)}"
26
+ @content_type = MIME::Types[content_type].first
27
+ @content = []
28
+ @headers = {
29
+ "Content-ID"=> "<#{@content_id}>",
30
+ "Content-Type"=> "#{content_type}; boundary=#{@boundary}",
31
+ }
32
+ end
33
+
34
+ # Add an entry to the multipart mime
35
+ #
36
+ # @param entry to add
37
+ def add(entry)
38
+ content << entry
39
+ end
40
+
41
+ # Output MimeEntity as a string
42
+ #
43
+ # @return [String] mime data
44
+ def to_s
45
+ output_string = ""
46
+ headers.each do |k, v|
47
+ output_string += "#{k}: #{v}\n"
48
+ end
49
+ output_string += "\n--#{@boundary}\n"
50
+ @content.each do |entry|
51
+ output_string += entry.to_s
52
+ output_string += "\n--#{@boundary}\n"
53
+ end
54
+ output_string
55
+ end
56
+ end
57
+
58
+ class Entity
59
+
60
+ # @return [String] entity content
61
+ attr_reader :content
62
+
63
+ # @return [String] type of the entity content
64
+ attr_reader :content_type
65
+
66
+ # @return [String] content disposition
67
+ attr_accessor :disposition
68
+
69
+ # @param [String] entity content
70
+ # @param [String] type of the entity content
71
+ def initialize(content, content_type)
72
+ if !MIME::Types.include?(content_type)
73
+ MIME::Types.add(MIME::Type.new(content_type))
74
+ end
75
+ @content = content
76
+ @content_type = MIME::Types[content_type].first
77
+ @content_id = "#{Time.now.to_i}@#{SecureRandom.alphanumeric(24)}.local"
78
+ end
79
+
80
+ # Output MimeEntity as a string
81
+ #
82
+ # @return [String] mime data
83
+ def to_s
84
+ output_string = "Content-ID: <#{@content_id}>\n"
85
+ output_string += "Content-Type: #{@content_type}\n"
86
+ if disposition
87
+ output_string += "Content-Disposition: #{@disposition}\n"
88
+ end
89
+ output_string += "\n#{content}"
90
+ output_string
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,27 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "ipaddr"
5
+
6
+ module Vagrant
7
+ module Util
8
+ module NetworkIP
9
+
10
+ DEFAULT_MASK = "255.255.255.0".freeze
11
+
12
+ LOGGER = Log4r::Logger.new("vagrant::util::NetworkIP")
13
+
14
+ # Returns the network address of the given IP and subnet.
15
+ #
16
+ # @return [String]
17
+ def network_address(ip, subnet)
18
+ begin
19
+ IPAddr.new(ip).mask(subnet).to_s
20
+ rescue IPAddr::InvalidPrefixError
21
+ LOGGER.warn("Provided mask '#{subnet}' is invalid. Falling back to using mask '#{DEFAULT_MASK}'")
22
+ IPAddr.new(ip).mask(DEFAULT_MASK).to_s
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,92 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "log4r"
5
+
6
+ module Vagrant
7
+ module Util
8
+ class Numeric
9
+
10
+ # Authors Note: This conversion has been borrowed from the ActiveSupport Numeric class
11
+ # Conversion helper constants
12
+ KILOBYTE = 1024
13
+ MEGABYTE = KILOBYTE * 1024
14
+ GIGABYTE = MEGABYTE * 1024
15
+ TERABYTE = GIGABYTE * 1024
16
+ PETABYTE = TERABYTE * 1024
17
+ EXABYTE = PETABYTE * 1024
18
+
19
+ BYTES_CONVERSION_MAP = {KB: KILOBYTE, MB: MEGABYTE, GB: GIGABYTE, TB: TERABYTE,
20
+ PB: PETABYTE, EB: EXABYTE}
21
+
22
+ # Regex borrowed from the vagrant-disksize config class
23
+ SHORTHAND_MATCH_REGEX = /^(?<number>[0-9]+)\s?(?<unit>KB|MB|GB|TB)?$/
24
+
25
+ class << self
26
+ LOGGER = Log4r::Logger.new("vagrant::util::numeric")
27
+
28
+ # A helper that converts a shortcut string to its bytes representation.
29
+ # The expected format of `str` is essentially: "<Number>XX"
30
+ # Where `XX` is shorthand for KB, MB, GB, TB, PB, or EB. For example, 50 megabytes:
31
+ #
32
+ # str = "50MB"
33
+ #
34
+ # @param [String] - str
35
+ # @return [Integer,nil] - bytes - returns nil if method fails to convert to bytes
36
+ def string_to_bytes(str)
37
+ bytes = nil
38
+
39
+ str = str.to_s.strip
40
+ matches = SHORTHAND_MATCH_REGEX.match(str)
41
+ if matches
42
+ number = matches[:number].to_i
43
+ unit = matches[:unit].to_sym
44
+
45
+ if BYTES_CONVERSION_MAP.key?(unit)
46
+ bytes = number * BYTES_CONVERSION_MAP[unit]
47
+ else
48
+ LOGGER.error("An invalid unit or format was given, string_to_bytes cannot convert #{str}")
49
+ end
50
+ end
51
+
52
+ bytes
53
+ end
54
+
55
+ # Convert bytes to a user friendly string representation
56
+ #
57
+ # @param [Numeric] bytes Number of bytes to represent
58
+ # @return [String] user friendly output
59
+ def bytes_to_string(bytes)
60
+ # We want to locate the size that will return the
61
+ # smallest whole value number
62
+ BYTES_CONVERSION_MAP.sort { |a, b|
63
+ b.last <=> a.last
64
+ }.each do |suffix, size|
65
+ val = bytes.to_f / size
66
+ next if val < 1
67
+ val = sprintf("%.2f", val)
68
+ val.slice!(-1, 1) while val.end_with?("0")
69
+ val.slice!(-1, 1) if val.end_with?(".")
70
+ return "#{val}#{suffix}"
71
+ end
72
+ "#{bytes} byte#{"s" if bytes > 1}"
73
+ end
74
+
75
+ # Rounds actual value to two decimal places
76
+ #
77
+ # @param [Integer] bytes
78
+ # @return [Integer] megabytes - bytes representation in megabytes
79
+ def bytes_to_megabytes(bytes)
80
+ (bytes / MEGABYTE.to_f).round(2)
81
+ end
82
+
83
+ # @private
84
+ # Reset the cached values for platform. This is not considered a public
85
+ # API and should only be used for testing.
86
+ def reset!
87
+ instance_variables.each(&method(:remove_instance_variable))
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end