vagrant-unbundled 2.1.4.0 → 2.2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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)