vagrant-unbundled 2.1.4.0 → 2.2.0.0

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 (276) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +58 -1
  3. data/Gemfile.lock +9 -5
  4. data/contrib/bash/completion.sh +16 -2
  5. data/contrib/sudoers/osx +1 -1
  6. data/lib/vagrant/environment.rb +16 -21
  7. data/lib/vagrant/errors.rb +28 -0
  8. data/lib/vagrant/machine.rb +1 -1
  9. data/lib/vagrant/plugin/manager.rb +35 -1
  10. data/lib/vagrant/plugin/v2/trigger.rb +23 -0
  11. data/lib/vagrant/util/curl_helper.rb +96 -0
  12. data/lib/vagrant/util/downloader.rb +2 -79
  13. data/lib/vagrant/util/guest_inspection.rb +18 -5
  14. data/lib/vagrant/util/platform.rb +33 -8
  15. data/lib/vagrant/util/uploader.rb +103 -0
  16. data/lib/vagrant/vagrantfile.rb +5 -1
  17. data/lib/vagrant.rb +39 -13
  18. data/plugins/commands/cloud/auth/login.rb +90 -0
  19. data/plugins/commands/cloud/auth/logout.rb +42 -0
  20. data/plugins/commands/cloud/auth/plugin.rb +20 -0
  21. data/plugins/commands/cloud/auth/root.rb +73 -0
  22. data/plugins/commands/cloud/auth/whoami.rb +62 -0
  23. data/plugins/commands/cloud/box/create.rb +75 -0
  24. data/plugins/commands/cloud/box/delete.rb +65 -0
  25. data/plugins/commands/cloud/box/plugin.rb +19 -0
  26. data/plugins/commands/cloud/box/root.rb +77 -0
  27. data/plugins/commands/cloud/box/show.rb +74 -0
  28. data/plugins/commands/cloud/box/update.rb +71 -0
  29. data/plugins/commands/cloud/client/client.rb +264 -0
  30. data/plugins/commands/cloud/errors.rb +28 -0
  31. data/plugins/commands/cloud/list.rb +52 -0
  32. data/plugins/commands/cloud/locales/en.yml +159 -0
  33. data/plugins/commands/cloud/plugin.rb +30 -0
  34. data/plugins/commands/cloud/provider/create.rb +73 -0
  35. data/plugins/commands/cloud/provider/delete.rb +70 -0
  36. data/plugins/commands/cloud/provider/plugin.rb +19 -0
  37. data/plugins/commands/cloud/provider/root.rb +77 -0
  38. data/plugins/commands/cloud/provider/update.rb +73 -0
  39. data/plugins/commands/cloud/provider/upload.rb +75 -0
  40. data/plugins/commands/cloud/publish.rb +165 -0
  41. data/plugins/commands/cloud/root.rb +104 -0
  42. data/plugins/commands/cloud/search.rb +83 -0
  43. data/plugins/commands/cloud/util.rb +206 -0
  44. data/plugins/commands/cloud/version/create.rb +69 -0
  45. data/plugins/commands/cloud/version/delete.rb +68 -0
  46. data/plugins/commands/cloud/version/plugin.rb +19 -0
  47. data/plugins/commands/cloud/version/release.rb +69 -0
  48. data/plugins/commands/cloud/version/revoke.rb +69 -0
  49. data/plugins/commands/cloud/version/root.rb +81 -0
  50. data/plugins/commands/cloud/version/update.rb +69 -0
  51. data/plugins/commands/init/command.rb +1 -1
  52. data/plugins/commands/login/plugin.rb +4 -3
  53. data/plugins/commands/powershell/command.rb +3 -0
  54. data/plugins/commands/powershell/plugin.rb +1 -0
  55. data/plugins/commands/upload/command.rb +236 -0
  56. data/plugins/commands/upload/plugin.rb +17 -0
  57. data/plugins/commands/winrm/command.rb +69 -0
  58. data/plugins/commands/winrm/plugin.rb +17 -0
  59. data/plugins/commands/winrm_config/command.rb +125 -0
  60. data/plugins/commands/winrm_config/plugin.rb +17 -0
  61. data/plugins/guests/bsd/cap/file_system.rb +77 -0
  62. data/plugins/guests/bsd/plugin.rb +15 -0
  63. data/plugins/guests/linux/cap/file_system.rb +79 -0
  64. data/plugins/guests/linux/cap/network_interfaces.rb +13 -2
  65. data/plugins/guests/linux/plugin.rb +15 -0
  66. data/plugins/guests/redhat/cap/change_host_name.rb +21 -13
  67. data/plugins/guests/solaris/cap/file_system.rb +77 -0
  68. data/plugins/guests/solaris/plugin.rb +15 -0
  69. data/plugins/guests/windows/cap/file_system.rb +65 -0
  70. data/plugins/guests/windows/cap/mount_shared_folder.rb +1 -1
  71. data/plugins/guests/windows/plugin.rb +10 -0
  72. data/plugins/kernel_v2/config/vm.rb +3 -0
  73. data/plugins/kernel_v2/config/vm_trigger.rb +49 -1
  74. data/plugins/providers/docker/action/build.rb +23 -8
  75. data/plugins/providers/docker/action/is_build.rb +1 -1
  76. data/plugins/providers/docker/config.rb +50 -10
  77. data/plugins/providers/hyperv/scripts/configure_vm.ps1 +16 -2
  78. data/plugins/providers/virtualbox/action/match_mac_address.rb +8 -5
  79. data/plugins/providers/virtualbox/driver/version_5_0.rb +1 -0
  80. data/plugins/provisioners/ansible/provisioner/guest.rb +2 -8
  81. data/plugins/provisioners/puppet/provisioner/puppet.rb +4 -2
  82. data/plugins/provisioners/salt/bootstrap-salt.sh +1 -1
  83. data/plugins/provisioners/salt/provisioner.rb +19 -4
  84. data/plugins/synced_folders/rsync/helper.rb +2 -1
  85. data/templates/commands/ssh_config/config.erb +1 -1
  86. data/templates/commands/winrm_config/config.erb +11 -0
  87. data/templates/guests/openbsd/network_static6.erb +1 -0
  88. data/templates/locales/en.yml +60 -1
  89. data/templates/locales/providers_docker.yml +11 -3
  90. data/vagrant.gemspec +3 -1
  91. data/vendor/bundle/ruby/2.5.0/bundler/gems/vagrant-spec-94a9d31ba18b/vagrant-spec.gemspec +1 -1
  92. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/LICENSE +22 -0
  93. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/README.md +67 -0
  94. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/bin/vagrant_cloud +5 -0
  95. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/lib/vagrant_cloud/account.rb +190 -0
  96. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/lib/vagrant_cloud/box.rb +185 -0
  97. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/lib/vagrant_cloud/client.rb +73 -0
  98. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/lib/vagrant_cloud/errors.rb +25 -0
  99. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/lib/vagrant_cloud/provider.rb +149 -0
  100. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/lib/vagrant_cloud/search.rb +31 -0
  101. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/lib/vagrant_cloud/version.rb +188 -0
  102. data/vendor/bundle/ruby/2.5.0/gems/vagrant_cloud-2.0.1/lib/vagrant_cloud.rb +11 -0
  103. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/.gitignore +10 -0
  104. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/.rubocop.yml +38 -0
  105. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/.travis.yml +10 -0
  106. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/Gemfile +2 -0
  107. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/LICENSE +202 -0
  108. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/README.md +276 -0
  109. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/Rakefile +33 -0
  110. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/Vagrantfile +6 -0
  111. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/WinrmAppveyor.psm1 +32 -0
  112. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/appveyor.yml +50 -0
  113. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/bin/rwinrm +90 -0
  114. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/changelog.md +133 -0
  115. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/connection.rb +84 -0
  116. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/connection_opts.rb +90 -0
  117. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/exceptions.rb +88 -0
  118. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/http/response_handler.rb +127 -0
  119. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/http/transport.rb +462 -0
  120. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/http/transport_factory.rb +64 -0
  121. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/output.rb +58 -0
  122. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/create_pipeline.xml.erb +167 -0
  123. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/fragment.rb +68 -0
  124. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/init_runspace_pool.xml.erb +224 -0
  125. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message.rb +128 -0
  126. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data/base.rb +47 -0
  127. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data/error_record.rb +66 -0
  128. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data/pipeline_host_call.rb +30 -0
  129. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data/pipeline_output.rb +48 -0
  130. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data/pipeline_state.rb +38 -0
  131. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data/runspacepool_host_call.rb +30 -0
  132. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data/runspacepool_state.rb +37 -0
  133. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data/session_capability.rb +34 -0
  134. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_data.rb +40 -0
  135. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_defragmenter.rb +62 -0
  136. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_factory.rb +74 -0
  137. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/message_fragmenter.rb +58 -0
  138. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/powershell_output_decoder.rb +142 -0
  139. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/receive_response_reader.rb +95 -0
  140. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/session_capability.xml.erb +7 -0
  141. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/psrp/uuid.rb +39 -0
  142. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/shells/base.rb +187 -0
  143. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/shells/cmd.rb +63 -0
  144. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/shells/power_shell.rb +207 -0
  145. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/shells/retryable.rb +44 -0
  146. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/shells/shell_factory.rb +56 -0
  147. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/version.rb +5 -0
  148. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/base.rb +57 -0
  149. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/cleanup_command.rb +60 -0
  150. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/close_shell.rb +49 -0
  151. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/command.rb +100 -0
  152. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/command_output.rb +75 -0
  153. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/command_output_decoder.rb +54 -0
  154. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/configuration.rb +44 -0
  155. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/create_pipeline.rb +64 -0
  156. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/create_shell.rb +115 -0
  157. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/header.rb +213 -0
  158. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/init_runspace_pool.rb +96 -0
  159. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/iso8601_duration.rb +58 -0
  160. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/keep_alive.rb +66 -0
  161. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/receive_response_reader.rb +128 -0
  162. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/send_data.rb +66 -0
  163. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/soap.rb +49 -0
  164. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/wql_pull.rb +54 -0
  165. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/wql_query.rb +98 -0
  166. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm/wsmv/write_stdin.rb +86 -0
  167. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/lib/winrm.rb +37 -0
  168. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/preamble +17 -0
  169. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/integration/auth_timeout_spec.rb +17 -0
  170. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/integration/cmd_spec.rb +130 -0
  171. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/integration/config-example.yml +16 -0
  172. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/integration/issue_59_spec.rb +25 -0
  173. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/integration/powershell_spec.rb +164 -0
  174. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/integration/spec_helper.rb +62 -0
  175. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/integration/transport_spec.rb +98 -0
  176. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/integration/wql_spec.rb +33 -0
  177. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/matchers.rb +59 -0
  178. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/configuration_spec.rb +183 -0
  179. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/connection_spec.rb +37 -0
  180. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/exception_spec.rb +49 -0
  181. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/http/transport_factory_spec.rb +66 -0
  182. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/http/transport_spec.rb +43 -0
  183. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/output_spec.rb +128 -0
  184. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/fragment_spec.rb +60 -0
  185. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data/base_spec.rb +11 -0
  186. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data/error_record_spec.rb +39 -0
  187. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data/pipeline_host_call_spec.rb +23 -0
  188. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data/pipeline_output_spec.rb +30 -0
  189. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data/pipeline_state_spec.rb +38 -0
  190. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data/runspace_pool_host_call_spec.rb +23 -0
  191. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data/runspacepool_state_spec.rb +14 -0
  192. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data/session_capability_spec.rb +28 -0
  193. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_data_spec.rb +33 -0
  194. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_defragmenter_spec.rb +45 -0
  195. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/message_fragmenter_spec.rb +103 -0
  196. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/powershell_output_decoder_spec.rb +98 -0
  197. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/psrp_message_spec.rb +73 -0
  198. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/recieve_response_reader_spec.rb +170 -0
  199. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/psrp/uuid_spec.rb +28 -0
  200. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/response_handler_spec.rb +69 -0
  201. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/shells/base_spec.rb +227 -0
  202. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/shells/cmd_spec.rb +75 -0
  203. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/shells/powershell_spec.rb +221 -0
  204. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/spec_helper.rb +46 -0
  205. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/clixml/error_record.xml.erb +84 -0
  206. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/clixml/pipeline_state.xml.erb +88 -0
  207. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_command_output_response.xml.erb +13 -0
  208. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_command_output_response_not_done.xml.erb +10 -0
  209. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_omi_command_output_response.xml.erb +23 -0
  210. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_omi_command_output_response_not_done.xml.erb +24 -0
  211. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_omi_config_response.xml +45 -0
  212. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_omi_powershell_keepalive_response.xml.erb +33 -0
  213. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_powershell_keepalive_response.xml.erb +10 -0
  214. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_powershell_output_response.xml.erb +12 -0
  215. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/get_powershell_output_response_not_done.xml.erb +9 -0
  216. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/open_shell_omi.xml +43 -0
  217. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/open_shell_v1.xml +19 -0
  218. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/open_shell_v2.xml +20 -0
  219. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/soap_fault_omi.xml +31 -0
  220. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/soap_fault_v1.xml +36 -0
  221. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/soap_fault_v2.xml +42 -0
  222. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/stubs/responses/wmi_error_v2.xml +41 -0
  223. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/cleanup_command_spec.rb +20 -0
  224. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/close_shell_spec.rb +15 -0
  225. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/command_output_decoder_spec.rb +35 -0
  226. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/command_output_spec.rb +43 -0
  227. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/command_spec.rb +17 -0
  228. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/configuration_spec.rb +15 -0
  229. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/create_pipeline_spec.rb +30 -0
  230. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/create_shell_spec.rb +39 -0
  231. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/init_runspace_pool_spec.rb +38 -0
  232. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/keep_alive_spec.rb +21 -0
  233. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/receive_response_reader_spec.rb +124 -0
  234. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/send_data_spec.rb +30 -0
  235. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/wql_query_spec.rb +11 -0
  236. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/tests/spec/wsmv/write_stdin_spec.rb +20 -0
  237. data/vendor/bundle/ruby/2.5.0/gems/winrm-2.3.0/winrm.gemspec +46 -0
  238. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/.gitignore +11 -0
  239. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/.rspec +2 -0
  240. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/.rubocop.yml +17 -0
  241. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/.rubocop_todo.yml +65 -0
  242. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/.travis.yml +10 -0
  243. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/Gemfile +4 -0
  244. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/LICENSE +202 -0
  245. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/README.md +82 -0
  246. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/Rakefile +27 -0
  247. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/VERSION +1 -0
  248. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/Vagrantfile +8 -0
  249. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/appveyor.yml +38 -0
  250. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/bin/rwinrmcp +85 -0
  251. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/changelog.md +74 -0
  252. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/core/file_transporter.rb +566 -0
  253. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/core/tmp_zip.rb +176 -0
  254. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/exceptions.rb +27 -0
  255. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/file_manager.rb +156 -0
  256. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/scripts/check_files.ps1.erb +49 -0
  257. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/scripts/checksum.ps1.erb +13 -0
  258. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/scripts/create_dir.ps1.erb +6 -0
  259. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/scripts/delete.ps1.erb +6 -0
  260. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/scripts/download.ps1.erb +17 -0
  261. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/scripts/exists.ps1.erb +10 -0
  262. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/scripts/extract_files.ps1.erb +52 -0
  263. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs/scripts/scripts.rb +31 -0
  264. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/lib/winrm-fs.rb +27 -0
  265. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/spec/config-example.yml +3 -0
  266. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/spec/integration/file_manager_spec.rb +303 -0
  267. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/spec/integration/tmp_zip_spec.rb +26 -0
  268. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/spec/matchers.rb +57 -0
  269. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/spec/spec_helper.rb +66 -0
  270. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/spec/unit/tmp_zip_spec.rb +78 -0
  271. data/vendor/bundle/ruby/2.5.0/gems/winrm-fs-1.3.1/winrm-fs.gemspec +36 -0
  272. data/vendor/bundle/ruby/2.5.0/specifications/vagrant_cloud-2.0.1.gemspec +45 -0
  273. data/vendor/bundle/ruby/2.5.0/specifications/winrm-2.3.0.gemspec +73 -0
  274. data/vendor/bundle/ruby/2.5.0/specifications/winrm-fs-1.3.1.gemspec +57 -0
  275. data/version.txt +1 -1
  276. metadata +268 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55f54add6ab420065395900bc5b05ed6eb9b44d4cb01ae3963f96907699b16dc
4
- data.tar.gz: 00e3b805672cb98dacd4649006cdd1d06bede102fc52db08eaeb8e7cd36023e1
3
+ metadata.gz: eca7fc517602ce921c69b2a141cc57079df7b2a0834dc306e5820ea2bb107bee
4
+ data.tar.gz: 41808cc7d78dfbb081da51f3eb544c797b672e3eecefb124c6e3c2d913281593
5
5
  SHA512:
6
- metadata.gz: a111e944a6133ef9e2e910c6865f8c698c675d460d4ede074f5a396be21811e6e038a33a0f0b587fa83289b8fd06128a8e0ff58a0b4c79715f7952840443d4ad
7
- data.tar.gz: 6a03e2073fda057f0db1a217fef1162e672d70f56f74c0e932bf3f2bfe3a6130c5170c22d7bcb3b1840c6edc9cae524c84e0bf28d7225a1f91e8758e87824ef0
6
+ metadata.gz: 4c9588b9b89bb650b8973ab683c8b0ed011cde2b0078476dab14b9acfc121c7b409ce5dc4557330539177895bd04b0a237c9f348a80070e583a6453cd6f1621a
7
+ data.tar.gz: bf0449d3b45d3edbbe91dcbf70272cb830d65a7e35b200f5b461eebcced575e3438e2f73620bcdf4fd7ccc75b9b3ecfce928da6382b95c5ac3e584ea1fe87f04
data/CHANGELOG.md CHANGED
@@ -1,10 +1,67 @@
1
- ## Next version (August 30, 2018)
1
+ ## 2.2.0 (October 16, 2018)
2
+
3
+ FEATURES:
4
+
5
+ - command/cloud: Introduce `vagrant cloud` subcommand to Vagrant [GH-10148]
6
+ - command/upload: Add command for uploading files to guest [GH-10263]
7
+ - command/winrm: Add command for executing guest commands via WinRM [GH-10263]
8
+ - command/winrm-config: Add command for providing WinRM configuration [GH-10263]
9
+
10
+ IMPROVEMENTS:
11
+
12
+ - core: Ensure file paths are identical when checking for cwd [GH-10220]
13
+ - core: Add config option `ignore_box_vagrantfile` for ignoring vagrantfile inside box [GH-10242]
14
+ - core/triggers: Add abort option to core triggers [GH-10232]
15
+ - core/triggers: Introduce `ruby` option for trigger [GH-10267]
16
+ - contrib/bash: Add completion for snapshot names for vagrant snapshot restore|delete [GH-9054]
17
+ - providers/docker: Build docker from git repo [GH-10221]
18
+ - providers/hyperv: Update Hyper-V admin check and allow override via ENV variable [GH-10275]
19
+ - providers/virtualbox: Allow base_mac to be optional [GH-10255]
20
+ - provisioners/salt: bootstrap-salt.sh: use -s with curl [GH-9432]
21
+ - provisioners/salt: remove leading space with bootstrap_options [GH-9431]
22
+
23
+ BUG FIXES:
24
+
25
+ - core/environment: Provide rgloader for local plugin installations [GH-10279]
26
+ - contrib/sudoers/osx: Fix missing comma and add remove export alias [GH-10235]
27
+ - guest/redhat: Update restart logic in redhat change_host_name cap [GH-10223]
28
+ - guest/windows: Allow special characters in SMB password field [GH-10219]
29
+ - providers/hyperv: Only use AutomaticCheckpointsEnabled when available [GH-10264]
30
+ - providers/hyperv: Only use CheckpointType when available [GH-10265]
31
+ - provisioners/ansible: Fix remote directory creation [GH-10259, GH-10258]
32
+ - provisioners/puppet: Properly set env variables for puppet provisioner on windows [GH-10218]
33
+ - provisioners/salt: Properly set salt pillar variables for windows guests [GH-10215]
34
+ - synced_folders/rsync: Ensure unique tmp dirs for ControlPath with rsync [GH-10291]
35
+
36
+ ## 2.1.5 (September 12, 2018)
37
+
38
+ IMPROVEMENTS:
39
+
40
+ - core: Add `Vagrant.version?` helper method [GH-10191]
41
+ - core: Scrub sensitive values from logger output [GH-10200]
42
+ - core: Prevent multiple evaluations of Vagrantfile [GH-10199]
43
+ - command/init: Support VAGRANT_DEFAULT_TEMPLATE env var [GH-10171]
44
+ - command/powershell: Improve doc help string and fix winrm locales error [GH-10189]
45
+ - contrib/bash: autocomplete running VM names for destroy subcommand [GH-10168]
46
+ - guest/debian: Use `sudo` to determine if systemd is in use for hardened systems [GH-10198]
47
+ - guest/openbsd: Add IPv6 network template for OpenBSD machines [GH-8912]
48
+ - provisioners/salt: Allow non-windows hosts to pass along version [GH-10194]
49
+
50
+ BUG FIXES:
51
+
52
+ - core: Fix Vagrant.has_plugin? behavior before plugins are initialized [GH-10165]
53
+ - core: Check verify_host_key for falsey or :never values when generating ssh config [GH-10182]
54
+ - guest/linux: Filter out empty strings and loopback interfaces when constructing list of network interfaces [GH-10092]
55
+ - provider/hyper-v: Check for automatic checkpoint support before configuring [GH-10181]
56
+
57
+ ## 2.1.4 (August 30, 2018)
2
58
 
3
59
  BUG FIXES:
4
60
 
5
61
  - core: Fix local plugin installation prompt answer parsing [GH-10154]
6
62
  - core: Reset internal environment after plugin loading [GH-10155]
7
63
  - host/windows: Fix SMB list parsing when extra fields are included [GH-10156]
64
+ - provisioners/ansible_local: Fix umask setting permission bug [GH-10140]
8
65
 
9
66
  ## 2.1.3 (August 29, 2018)
10
67
 
data/Gemfile.lock CHANGED
@@ -11,7 +11,7 @@ GIT
11
11
  PATH
12
12
  remote: .
13
13
  specs:
14
- vagrant-unbundled (2.1.4.0)
14
+ vagrant-unbundled (2.2.0.0)
15
15
  childprocess (~> 0.6.0)
16
16
  erubis (~> 2.7.0)
17
17
  hashicorp-checkpoint (~> 0.1.5)
@@ -22,8 +22,10 @@ PATH
22
22
  net-sftp (~> 2.1)
23
23
  net-ssh (~> 5.0.0)
24
24
  rb-kqueue (~> 0.2.0)
25
- rest-client (~> 2.0)
25
+ rest-client (>= 1.6.0, < 3.0)
26
26
  ruby_dep (<= 1.3.1)
27
+ rubyzip (~> 1.2.2)
28
+ vagrant_cloud (~> 2.0.0)
27
29
  wdm (~> 0.1.0)
28
30
  winrm (~> 2.1)
29
31
  winrm-elevated (~> 1.1)
@@ -110,12 +112,14 @@ GEM
110
112
  unf (0.1.4)
111
113
  unf_ext
112
114
  unf_ext (0.0.7.5)
115
+ vagrant_cloud (2.0.1)
116
+ rest-client (~> 2.0.2)
113
117
  wdm (0.1.1)
114
118
  webmock (2.3.2)
115
119
  addressable (>= 2.3.6)
116
120
  crack (>= 0.3.2)
117
121
  hashdiff
118
- winrm (2.2.3)
122
+ winrm (2.3.0)
119
123
  builder (>= 2.1.2)
120
124
  erubis (~> 2.7)
121
125
  gssapi (~> 1.2)
@@ -127,7 +131,7 @@ GEM
127
131
  winrm-elevated (1.1.0)
128
132
  winrm (~> 2.0)
129
133
  winrm-fs (~> 1.0)
130
- winrm-fs (1.3.0)
134
+ winrm-fs (1.3.1)
131
135
  erubis (~> 2.7)
132
136
  logging (>= 1.6.1, < 3.0)
133
137
  rubyzip (~> 1.1)
@@ -146,4 +150,4 @@ DEPENDENCIES
146
150
  webmock (~> 2.3.1)
147
151
 
148
152
  BUNDLED WITH
149
- 1.16.4
153
+ 1.17.1
@@ -53,7 +53,7 @@ __vagrantinvestigate() {
53
53
  _vagrant() {
54
54
  cur="${COMP_WORDS[COMP_CWORD]}"
55
55
  prev="${COMP_WORDS[COMP_CWORD-1]}"
56
- commands="box connect destroy docker-exec docker-logs docker-run global-status halt help init list-commands login package plugin provision push rdp reload resume rsync rsync-auto share snapshot ssh ssh-config status suspend up version"
56
+ commands="box cloud connect destroy docker-exec docker-logs docker-run global-status halt help init list-commands login package plugin provision push rdp reload resume rsync rsync-auto share snapshot ssh ssh-config status suspend up version"
57
57
 
58
58
  if [ $COMP_CWORD == 1 ]
59
59
  then
@@ -79,7 +79,7 @@ _vagrant() {
79
79
  COMPREPLY=($(compgen -W "${up_commands} ${vm_list}" -- ${cur}))
80
80
  return 0
81
81
  ;;
82
- "ssh"|"provision"|"reload"|"halt"|"suspend"|"resume"|"ssh-config")
82
+ "destroy"|"ssh"|"provision"|"reload"|"halt"|"suspend"|"resume"|"ssh-config")
83
83
  vagrant_state_file=$(__vagrantinvestigate) || return 1
84
84
  if [[ -f "${vagrant_state_file}" ]]
85
85
  then
@@ -95,6 +95,11 @@ _vagrant() {
95
95
  COMPREPLY=($(compgen -W "${box_commands}" -- ${cur}))
96
96
  return 0
97
97
  ;;
98
+ "cloud")
99
+ cloud_commands="auth box search provider publish version"
100
+ COMPREPLY=($(compgen -W "${cloud_commands}" -- ${cur}))
101
+ return 0
102
+ ;;
98
103
  "plugin")
99
104
  plugin_commands="install license list uninstall update"
100
105
  COMPREPLY=($(compgen -W "${plugin_commands}" -- ${cur}))
@@ -140,6 +145,15 @@ _vagrant() {
140
145
  ;;
141
146
  esac
142
147
  ;;
148
+ "snapshot")
149
+ case "$prev" in
150
+ "restore"|"delete")
151
+ local snapshot_list=$(vagrant snapshot list)
152
+ COMPREPLY=($(compgen -W "${snapshot_list}" -- ${cur}))
153
+ return 0
154
+ ;;
155
+ esac
156
+ ;;
143
157
  *)
144
158
  ;;
145
159
  esac
data/contrib/sudoers/osx CHANGED
@@ -7,4 +7,4 @@ Cmnd_Alias VAGRANT_SMB_LIST = /usr/sbin/sharing -l
7
7
  Cmnd_Alias VAGRANT_SMB_PLOAD = /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.smb.preferences.plist
8
8
  Cmnd_Alias VAGRANT_SMB_DLOAD = /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
9
9
  Cmnd_Alias VAGRANT_SMB_DSTART = /bin/launchctl start com.apple.smbd
10
- %admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_SMB_ADD, VAGRANT_SMB_REMOVE, VAGRANT_SMB_LIST, VAGRANT_SMB_PLOAD, VAGRANT_SMB_DLOAD VAGRANT_SMB_DSTART
10
+ %admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE, VAGRANT_SMB_ADD, VAGRANT_SMB_REMOVE, VAGRANT_SMB_LIST, VAGRANT_SMB_PLOAD, VAGRANT_SMB_DLOAD, VAGRANT_SMB_DSTART
@@ -167,20 +167,17 @@ module Vagrant
167
167
 
168
168
  # Initialize localized plugins
169
169
  plugins = Vagrant::Plugin::Manager.instance.localize!(self)
170
-
171
- if !vagrantfile.config.vagrant.plugins.empty?
172
- plugins = process_configured_plugins
173
- end
174
-
175
170
  # Load any environment local plugins
176
171
  Vagrant::Plugin::Manager.instance.load_plugins(plugins)
177
172
 
173
+ # Initialize globalize plugins
178
174
  plugins = Vagrant::Plugin::Manager.instance.globalize!
175
+ # Load any global plugins
179
176
  Vagrant::Plugin::Manager.instance.load_plugins(plugins)
180
177
 
181
- # Reset so Vagrantfile will be reloaded with expected support for
182
- # any new plugins provided
183
- post_plugins_reset!
178
+ if !vagrantfile.config.vagrant.plugins.empty?
179
+ plugins = process_configured_plugins
180
+ end
184
181
 
185
182
  # Call the hooks that does not require configurations to be loaded
186
183
  # by using a "clean" action runner
@@ -909,6 +906,13 @@ module Vagrant
909
906
  begin
910
907
  @logger.debug("Creating: #{@local_data_path}")
911
908
  FileUtils.mkdir_p(@local_data_path)
909
+ # Create the rgloader/loader file so we can use encoded files.
910
+ loader_file = @local_data_path.join("rgloader", "loader.rb")
911
+ if !loader_file.file?
912
+ source_loader = Vagrant.source_root.join("templates/rgloader.rb")
913
+ FileUtils.mkdir_p(@local_data_path.join("rgloader").to_s)
914
+ FileUtils.cp(source_loader.to_s, loader_file.to_s)
915
+ end
912
916
  rescue Errno::EACCES
913
917
  raise Errors::LocalDataDirectoryNotAccessible,
914
918
  local_data_path: @local_data_path.to_s
@@ -917,18 +921,6 @@ module Vagrant
917
921
 
918
922
  protected
919
923
 
920
- # Unsets the internal vagrantfile and config_loader
921
- # to force them to be regenerated. This is used after
922
- # plugins have been loaded so that newly discovered
923
- # plugin configurations are properly available
924
- #
925
- # @return [nil]
926
- def post_plugins_reset!
927
- @vagrantfile = nil
928
- @config_loader = nil
929
- nil
930
- end
931
-
932
924
  # Check for any local plugins defined within the Vagrantfile. If
933
925
  # found, validate they are available. If they are not available,
934
926
  # request to install them, or raise an exception
@@ -982,7 +974,10 @@ module Vagrant
982
974
  name: spec.name, version: spec.version.to_s))
983
975
  end
984
976
  ui.info("\n")
985
- Vagrant::Plugin::Manager.instance.localize!(self)
977
+ # Force halt after installation and require command to be run again. This
978
+ # will proper load any new locally installed plugins which are now available.
979
+ ui.warn(I18n.t("vagrant.plugins.local.install_rerun_command"))
980
+ exit(-1)
986
981
  end
987
982
  Vagrant::Plugin::Manager.instance.local_file.installed_plugins
988
983
  end
@@ -816,6 +816,30 @@ module Vagrant
816
816
  error_key(:unimplemented_provider_action)
817
817
  end
818
818
 
819
+ class UploadInvalidCompressionType < VagrantError
820
+ error_key(:upload_invalid_compression_type)
821
+ end
822
+
823
+ class UploadMissingExtractCapability < VagrantError
824
+ error_key(:upload_missing_extract_capability)
825
+ end
826
+
827
+ class UploadMissingTempCapability < VagrantError
828
+ error_key(:upload_missing_temp_capability)
829
+ end
830
+
831
+ class UploadSourceMissing < VagrantError
832
+ error_key(:upload_source_missing)
833
+ end
834
+
835
+ class UploaderError < VagrantError
836
+ error_key(:uploader_error)
837
+ end
838
+
839
+ class UploaderInterrupted < UploaderError
840
+ error_key(:uploader_interrupted)
841
+ end
842
+
819
843
  class VagrantInterrupt < VagrantError
820
844
  error_key(:interrupted)
821
845
  end
@@ -968,6 +992,10 @@ module Vagrant
968
992
  error_key(:power_off, "vagrant.actions.vm.export")
969
993
  end
970
994
 
995
+ class WinRMInvalidCommunicator < VagrantError
996
+ error_key(:winrm_invalid_communicator)
997
+ end
998
+
971
999
  class WSLVagrantVersionMismatch < VagrantError
972
1000
  error_key(:wsl_vagrant_version_mismatch)
973
1001
  end
@@ -593,7 +593,7 @@ module Vagrant
593
593
  ).chomp
594
594
  end
595
595
 
596
- if vagrant_cwd != @env.root_path.to_s
596
+ if !File.identical?(vagrant_cwd.to_s, @env.root_path.to_s)
597
597
  if vagrant_cwd
598
598
  ui.warn(I18n.t(
599
599
  'vagrant.moved_cwd',
@@ -41,12 +41,14 @@ module Vagrant
41
41
  @system_file = StateFile.new(system_path) if system_path && system_path.file?
42
42
 
43
43
  @local_file = nil
44
+ @globalized = @localized = false
44
45
  end
45
46
 
46
47
  # Enable global plugins
47
48
  #
48
49
  # @return [Hash] list of plugins
49
50
  def globalize!
51
+ @globalized = true
50
52
  @logger.debug("Enabling globalized plugins")
51
53
  plugins = installed_plugins
52
54
  bundler_init(plugins)
@@ -56,8 +58,9 @@ module Vagrant
56
58
  # Enable environment local plugins
57
59
  #
58
60
  # @param [Environment] env Vagrant environment
59
- # @return [Hash] list of plugins
61
+ # @return [Hash, nil] list of plugins
60
62
  def localize!(env)
63
+ @localized = true
61
64
  if env.local_data_path
62
65
  @logger.debug("Enabling localized plugins")
63
66
  @local_file = StateFile.new(env.local_data_path.join("plugins.json"))
@@ -68,6 +71,11 @@ module Vagrant
68
71
  end
69
72
  end
70
73
 
74
+ # @return [Boolean] local and global plugins are loaded
75
+ def ready?
76
+ @globalized && @localized
77
+ end
78
+
71
79
  # Initialize bundler with given plugins
72
80
  #
73
81
  # @param [Hash] plugins List of plugins
@@ -335,6 +343,32 @@ module Vagrant
335
343
  end
336
344
  nil
337
345
  end
346
+
347
+ # Check if the requested plugin is installed
348
+ #
349
+ # @param [String] name Name of plugin
350
+ # @param [String] version Specific version of the plugin
351
+ # @return [Boolean]
352
+ def plugin_installed?(name, version=nil)
353
+ # Make the requirement object
354
+ version = Gem::Requirement.new([version.to_s]) if version
355
+
356
+ # If plugins are loaded, check for match in loaded specs
357
+ if ready?
358
+ return installed_specs.any? do |s|
359
+ match = s.name == name
360
+ next match if !version
361
+ next match && version.satisfied_by?(s.version)
362
+ end
363
+ end
364
+
365
+ # Plugins are not loaded yet so check installed plugin data
366
+ plugin_info = installed_plugins[name]
367
+ return false if !plugin_info
368
+ return !!plugin_info if version.nil? || plugin_info["installed_gem_version"].nil?
369
+ installed_version = Gem::Version.new(plugin_info["installed_gem_version"])
370
+ version.satisfied_by?(installed_version)
371
+ end
338
372
  end
339
373
  end
340
374
  end
@@ -124,6 +124,10 @@ module Vagrant
124
124
  warn(trigger.warn)
125
125
  end
126
126
 
127
+ if trigger.abort
128
+ trigger_abort(trigger.abort)
129
+ end
130
+
127
131
  if trigger.run
128
132
  run(trigger.run, trigger.on_error, trigger.exit_codes)
129
133
  end
@@ -131,6 +135,10 @@ module Vagrant
131
135
  if trigger.run_remote
132
136
  run_remote(trigger.run_remote, trigger.on_error, trigger.exit_codes)
133
137
  end
138
+
139
+ if trigger.ruby_block
140
+ execute_ruby(trigger.ruby_block)
141
+ end
134
142
  end
135
143
  end
136
144
 
@@ -241,6 +249,21 @@ module Vagrant
241
249
  end
242
250
  end
243
251
  end
252
+
253
+ # Exits Vagrant immediately
254
+ #
255
+ # @param [Integer] code Code to exit Vagrant on
256
+ def trigger_abort(exit_code)
257
+ @machine.ui.warn(I18n.t("vagrant.trigger.abort"))
258
+ exit(exit_code)
259
+ end
260
+
261
+ # Calls the given ruby block for execution
262
+ #
263
+ # @param [Proc] ruby_block
264
+ def execute_ruby(ruby_block)
265
+ ruby_block.call(@env, @machine)
266
+ end
244
267
  end
245
268
  end
246
269
  end
@@ -0,0 +1,96 @@
1
+ module Vagrant
2
+ module Util
3
+ class CurlHelper
4
+
5
+ # Hosts that do not require notification on redirect
6
+ SILENCED_HOSTS = [
7
+ "vagrantcloud.com".freeze,
8
+ "vagrantup.com".freeze
9
+ ].freeze
10
+
11
+ def self.capture_output_proc(logger, ui, source=nil)
12
+ progress_data = ""
13
+ progress_regexp = /^\r\s*(\d.+?)\r/m
14
+
15
+ # Setup the proc that'll receive the real-time data from
16
+ # the downloader.
17
+ data_proc = Proc.new do |type, data|
18
+ # Type will always be "stderr" because that is the only
19
+ # type of data we're subscribed for notifications.
20
+
21
+ # Accumulate progress_data
22
+ progress_data << data
23
+
24
+ while true
25
+ # If the download has been redirected and we are no longer downloading
26
+ # from the original host, notify the user that the target host has
27
+ # changed from the source.
28
+ if progress_data.include?("Location")
29
+ location = progress_data.scan(/(^|[^\w-])Location: (.+?)$/m).flatten.compact.last.to_s.strip
30
+ if !location.empty?
31
+ location_uri = URI.parse(location)
32
+
33
+ unless location_uri.host.nil?
34
+ redirect_notify = false
35
+ logger.info("download redirected to #{location}")
36
+ source_uri = URI.parse(source)
37
+ source_host = source_uri.host.to_s.split(".", 2).last
38
+ location_host = location_uri.host.to_s.split(".", 2).last
39
+ if !redirect_notify && location_host != source_host && !SILENCED_HOSTS.include?(location_host)
40
+ ui.clear_line
41
+ ui.detail "Download redirected to host: #{location_uri.host}"
42
+ end
43
+ redirect_notify = true
44
+ end
45
+ end
46
+ progress_data.replace("")
47
+ break
48
+ end
49
+ # If we have a full amount of column data (two "\r") then
50
+ # we report new progress reports. Otherwise, just keep
51
+ # accumulating.
52
+ match = nil
53
+ check_match = true
54
+
55
+ while check_match
56
+ check_match = progress_regexp.match(progress_data)
57
+ if check_match
58
+ data = check_match[1].to_s
59
+ stop = progress_data.index(data) + data.length
60
+ progress_data.slice!(0, stop)
61
+
62
+ match = check_match
63
+ end
64
+ end
65
+
66
+ break if !match
67
+
68
+ # Ignore the first \r and split by whitespace to grab the columns
69
+ columns = data.strip.split(/\s+/)
70
+
71
+ # COLUMN DATA:
72
+ #
73
+ # 0 - % total
74
+ # 1 - Total size
75
+ # 2 - % received
76
+ # 3 - Received size
77
+ # 4 - % transferred
78
+ # 5 - Transferred size
79
+ # 6 - Average download speed
80
+ # 7 - Average upload speed
81
+ # 9 - Total time
82
+ # 9 - Time spent
83
+ # 10 - Time left
84
+ # 11 - Current speed
85
+
86
+ output = "Progress: #{columns[0]}% (Rate: #{columns[11]}/s, Estimated time remaining: #{columns[10]})"
87
+ ui.clear_line
88
+ ui.detail(output, new_line: false)
89
+ end
90
+ end
91
+
92
+ return data_proc
93
+ end
94
+ end
95
+ end
96
+ end
@@ -6,6 +6,7 @@ require "digest/sha1"
6
6
  require "vagrant/util/busy"
7
7
  require "vagrant/util/platform"
8
8
  require "vagrant/util/subprocess"
9
+ require "vagrant/util/curl_helper"
9
10
 
10
11
  module Vagrant
11
12
  module Util
@@ -88,85 +89,7 @@ module Vagrant
88
89
  # tell us output so we can parse it out.
89
90
  extra_subprocess_opts[:notify] = :stderr
90
91
 
91
- progress_data = ""
92
- progress_regexp = /^\r\s*(\d.+?)\r/m
93
-
94
- # Setup the proc that'll receive the real-time data from
95
- # the downloader.
96
- data_proc = Proc.new do |type, data|
97
- # Type will always be "stderr" because that is the only
98
- # type of data we're subscribed for notifications.
99
-
100
- # Accumulate progress_data
101
- progress_data << data
102
-
103
- while true
104
- # If the download has been redirected and we are no longer downloading
105
- # from the original host, notify the user that the target host has
106
- # changed from the source.
107
- if progress_data.include?("Location")
108
- location = progress_data.scan(/(^|[^\w-])Location: (.+?)$/m).flatten.compact.last.to_s.strip
109
- if !location.empty?
110
- location_uri = URI.parse(location)
111
-
112
- unless location_uri.host.nil?
113
- @logger.info("download redirected to #{location}")
114
- source_uri = URI.parse(source)
115
- source_host = source_uri.host.to_s.split(".", 2).last
116
- location_host = location_uri.host.to_s.split(".", 2).last
117
- if !@redirect_notify && location_host != source_host && !SILENCED_HOSTS.include?(location_host)
118
- @ui.clear_line
119
- @ui.detail "Download redirected to host: #{location_uri.host}"
120
- end
121
- @redirect_notify = true
122
- end
123
- end
124
- progress_data.replace("")
125
- break
126
- end
127
-
128
- # If we have a full amount of column data (two "\r") then
129
- # we report new progress reports. Otherwise, just keep
130
- # accumulating.
131
- match = nil
132
- check_match = true
133
-
134
- while check_match
135
- check_match = progress_regexp.match(progress_data)
136
- if check_match
137
- data = check_match[1].to_s
138
- stop = progress_data.index(data) + data.length
139
- progress_data.slice!(0, stop)
140
-
141
- match = check_match
142
- end
143
- end
144
-
145
- break if !match
146
-
147
- # Ignore the first \r and split by whitespace to grab the columns
148
- columns = data.strip.split(/\s+/)
149
-
150
- # COLUMN DATA:
151
- #
152
- # 0 - % total
153
- # 1 - Total size
154
- # 2 - % received
155
- # 3 - Received size
156
- # 4 - % transferred
157
- # 5 - Transferred size
158
- # 6 - Average download speed
159
- # 7 - Average upload speed
160
- # 9 - Total time
161
- # 9 - Time spent
162
- # 10 - Time left
163
- # 11 - Current speed
164
-
165
- output = "Progress: #{columns[0]}% (Rate: #{columns[11]}/s, Estimated time remaining: #{columns[10]})"
166
- @ui.clear_line
167
- @ui.detail(output, new_line: false)
168
- end
169
- end
92
+ data_proc = Vagrant::Util::CurlHelper.capture_output_proc(@logger, @ui, @source)
170
93
  end
171
94
 
172
95
  @logger.info("Downloader starting download: ")
@@ -17,39 +17,52 @@ module Vagrant
17
17
 
18
18
  # systemd-networkd.service is in use
19
19
  #
20
+ # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
20
21
  # @return [Boolean]
21
22
  def systemd_networkd?(comm)
22
- comm.test("sudo systemctl status systemd-networkd.service")
23
+ comm.test("systemctl -q is-active systemd-networkd.service", sudo: true)
24
+ end
25
+
26
+ # Check if given service is controlled by systemd
27
+ #
28
+ # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
29
+ # @param [String] service_name Name of the service to check
30
+ # @return [Boolean]
31
+ def systemd_controlled?(comm, service_name)
32
+ comm.test("systemctl -q is-active #{service_name}", sudo: true)
23
33
  end
24
34
 
25
35
  # systemd hostname set is via hostnamectl
26
36
  #
37
+ # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
27
38
  # @return [Boolean]
28
39
  def hostnamectl?(comm)
29
- comm.test("hostnamectl")
40
+ comm.test("command -v hostnamectl")
30
41
  end
31
42
 
32
43
  ## netplan helpers
33
44
 
34
45
  # netplan is installed
35
46
  #
47
+ # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
36
48
  # @return [Boolean]
37
49
  def netplan?(comm)
38
- comm.test("netplan -h")
50
+ comm.test("command -v netplan")
39
51
  end
40
52
 
41
53
  ## nmcli helpers
42
54
 
43
55
  # nmcli is installed
44
56
  #
57
+ # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
45
58
  # @return [Boolean]
46
59
  def nmcli?(comm)
47
- comm.test("nmcli -t")
60
+ comm.test("command -v nmcli")
48
61
  end
49
62
 
50
63
  # NetworkManager currently controls device
51
64
  #
52
- # @param comm [Communicator]
65
+ # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
53
66
  # @param device_name [String]
54
67
  # @return [Boolean]
55
68
  def nm_controlled?(comm, device_name)