vagrant-lxc 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (423) hide show
  1. checksums.yaml +14 -6
  2. data/Gemfile +19 -14
  3. data/Gemfile.lock +10 -5
  4. data/README.md +18 -42
  5. data/development/Vagrantfile.1.0 +3 -2
  6. data/lib/vagrant-lxc/version.rb +1 -1
  7. data/lib/vagrant-lxc.rb +0 -2
  8. data/vagrant-lxc.gemspec +1 -14
  9. metadata +7 -540
  10. data/.gitmodules +0 -3
  11. data/bin/vagrant-lxc +0 -9
  12. data/lib/vendored_vagrant.rb +0 -9
  13. data/vendor/.gitkeep +0 -0
  14. data/vendor/vagrant/.gitignore +0 -31
  15. data/vendor/vagrant/.travis.yml +0 -7
  16. data/vendor/vagrant/.yardopts +0 -1
  17. data/vendor/vagrant/CHANGELOG.md +0 -803
  18. data/vendor/vagrant/Gemfile +0 -3
  19. data/vendor/vagrant/LICENSE +0 -21
  20. data/vendor/vagrant/README.md +0 -89
  21. data/vendor/vagrant/Rakefile +0 -18
  22. data/vendor/vagrant/bin/vagrant +0 -84
  23. data/vendor/vagrant/config/default.rb +0 -35
  24. data/vendor/vagrant/contrib/README.md +0 -12
  25. data/vendor/vagrant/contrib/bash/completion.sh +0 -3
  26. data/vendor/vagrant/contrib/emacs/vagrant.el +0 -8
  27. data/vendor/vagrant/contrib/vim/vagrantfile.vim +0 -9
  28. data/vendor/vagrant/keys/README.md +0 -17
  29. data/vendor/vagrant/keys/vagrant +0 -27
  30. data/vendor/vagrant/keys/vagrant.pub +0 -1
  31. data/vendor/vagrant/lib/vagrant/action/builder.rb +0 -154
  32. data/vendor/vagrant/lib/vagrant/action/builtin/box_add.rb +0 -79
  33. data/vendor/vagrant/lib/vagrant/action/builtin/call.rb +0 -67
  34. data/vendor/vagrant/lib/vagrant/action/builtin/config_validate.rb +0 -30
  35. data/vendor/vagrant/lib/vagrant/action/builtin/confirm.rb +0 -38
  36. data/vendor/vagrant/lib/vagrant/action/builtin/env_set.rb +0 -24
  37. data/vendor/vagrant/lib/vagrant/action/builtin/graceful_halt.rb +0 -73
  38. data/vendor/vagrant/lib/vagrant/action/builtin/handle_box_url.rb +0 -43
  39. data/vendor/vagrant/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +0 -117
  40. data/vendor/vagrant/lib/vagrant/action/builtin/lock.rb +0 -57
  41. data/vendor/vagrant/lib/vagrant/action/builtin/nfs.rb +0 -117
  42. data/vendor/vagrant/lib/vagrant/action/builtin/provision.rb +0 -70
  43. data/vendor/vagrant/lib/vagrant/action/builtin/set_hostname.rb +0 -27
  44. data/vendor/vagrant/lib/vagrant/action/builtin/ssh_exec.rb +0 -42
  45. data/vendor/vagrant/lib/vagrant/action/builtin/ssh_run.rb +0 -43
  46. data/vendor/vagrant/lib/vagrant/action/general/package.rb +0 -102
  47. data/vendor/vagrant/lib/vagrant/action/hook.rb +0 -103
  48. data/vendor/vagrant/lib/vagrant/action/runner.rb +0 -69
  49. data/vendor/vagrant/lib/vagrant/action/warden.rb +0 -103
  50. data/vendor/vagrant/lib/vagrant/action.rb +0 -42
  51. data/vendor/vagrant/lib/vagrant/box.rb +0 -93
  52. data/vendor/vagrant/lib/vagrant/box_collection.rb +0 -315
  53. data/vendor/vagrant/lib/vagrant/cli.rb +0 -82
  54. data/vendor/vagrant/lib/vagrant/config/container.rb +0 -37
  55. data/vendor/vagrant/lib/vagrant/config/loader.rb +0 -222
  56. data/vendor/vagrant/lib/vagrant/config/v1/dummy_config.rb +0 -13
  57. data/vendor/vagrant/lib/vagrant/config/v1/loader.rb +0 -105
  58. data/vendor/vagrant/lib/vagrant/config/v1/root.rb +0 -60
  59. data/vendor/vagrant/lib/vagrant/config/v1.rb +0 -9
  60. data/vendor/vagrant/lib/vagrant/config/v2/dummy_config.rb +0 -13
  61. data/vendor/vagrant/lib/vagrant/config/v2/loader.rb +0 -141
  62. data/vendor/vagrant/lib/vagrant/config/v2/root.rb +0 -105
  63. data/vendor/vagrant/lib/vagrant/config/v2/util.rb +0 -21
  64. data/vendor/vagrant/lib/vagrant/config/v2.rb +0 -9
  65. data/vendor/vagrant/lib/vagrant/config/version_base.rb +0 -80
  66. data/vendor/vagrant/lib/vagrant/config.rb +0 -63
  67. data/vendor/vagrant/lib/vagrant/downloaders/base.rb +0 -22
  68. data/vendor/vagrant/lib/vagrant/downloaders/file.rb +0 -28
  69. data/vendor/vagrant/lib/vagrant/downloaders/http.rb +0 -116
  70. data/vendor/vagrant/lib/vagrant/downloaders.rb +0 -7
  71. data/vendor/vagrant/lib/vagrant/environment.rb +0 -729
  72. data/vendor/vagrant/lib/vagrant/errors.rb +0 -486
  73. data/vendor/vagrant/lib/vagrant/hosts.rb +0 -28
  74. data/vendor/vagrant/lib/vagrant/machine.rb +0 -325
  75. data/vendor/vagrant/lib/vagrant/machine_state.rb +0 -45
  76. data/vendor/vagrant/lib/vagrant/plugin/v1/command.rb +0 -169
  77. data/vendor/vagrant/lib/vagrant/plugin/v1/communicator.rb +0 -98
  78. data/vendor/vagrant/lib/vagrant/plugin/v1/config.rb +0 -112
  79. data/vendor/vagrant/lib/vagrant/plugin/v1/errors.rb +0 -15
  80. data/vendor/vagrant/lib/vagrant/plugin/v1/guest.rb +0 -92
  81. data/vendor/vagrant/lib/vagrant/plugin/v1/host.rb +0 -66
  82. data/vendor/vagrant/lib/vagrant/plugin/v1/manager.rb +0 -131
  83. data/vendor/vagrant/lib/vagrant/plugin/v1/plugin.rb +0 -229
  84. data/vendor/vagrant/lib/vagrant/plugin/v1/provider.rb +0 -68
  85. data/vendor/vagrant/lib/vagrant/plugin/v1/provisioner.rb +0 -50
  86. data/vendor/vagrant/lib/vagrant/plugin/v1.rb +0 -19
  87. data/vendor/vagrant/lib/vagrant/plugin/v2/command.rb +0 -234
  88. data/vendor/vagrant/lib/vagrant/plugin/v2/communicator.rb +0 -98
  89. data/vendor/vagrant/lib/vagrant/plugin/v2/components.rb +0 -29
  90. data/vendor/vagrant/lib/vagrant/plugin/v2/config.rb +0 -101
  91. data/vendor/vagrant/lib/vagrant/plugin/v2/errors.rb +0 -15
  92. data/vendor/vagrant/lib/vagrant/plugin/v2/guest.rb +0 -92
  93. data/vendor/vagrant/lib/vagrant/plugin/v2/host.rb +0 -66
  94. data/vendor/vagrant/lib/vagrant/plugin/v2/manager.rb +0 -158
  95. data/vendor/vagrant/lib/vagrant/plugin/v2/plugin.rb +0 -217
  96. data/vendor/vagrant/lib/vagrant/plugin/v2/provider.rb +0 -69
  97. data/vendor/vagrant/lib/vagrant/plugin/v2/provisioner.rb +0 -47
  98. data/vendor/vagrant/lib/vagrant/plugin/v2.rb +0 -22
  99. data/vendor/vagrant/lib/vagrant/plugin.rb +0 -6
  100. data/vendor/vagrant/lib/vagrant/registry.rb +0 -78
  101. data/vendor/vagrant/lib/vagrant/ssh.rb +0 -132
  102. data/vendor/vagrant/lib/vagrant/test_helpers.rb +0 -154
  103. data/vendor/vagrant/lib/vagrant/ui.rb +0 -170
  104. data/vendor/vagrant/lib/vagrant/util/ansi_escape_code_remover.rb +0 -34
  105. data/vendor/vagrant/lib/vagrant/util/busy.rb +0 -59
  106. data/vendor/vagrant/lib/vagrant/util/counter.rb +0 -24
  107. data/vendor/vagrant/lib/vagrant/util/file_checksum.rb +0 -38
  108. data/vendor/vagrant/lib/vagrant/util/file_mode.rb +0 -12
  109. data/vendor/vagrant/lib/vagrant/util/hash_with_indifferent_access.rb +0 -63
  110. data/vendor/vagrant/lib/vagrant/util/is_port_open.rb +0 -38
  111. data/vendor/vagrant/lib/vagrant/util/line_ending_helpers.rb +0 -14
  112. data/vendor/vagrant/lib/vagrant/util/network_ip.rb +0 -28
  113. data/vendor/vagrant/lib/vagrant/util/platform.rb +0 -68
  114. data/vendor/vagrant/lib/vagrant/util/retryable.rb +0 -31
  115. data/vendor/vagrant/lib/vagrant/util/safe_exec.rb +0 -36
  116. data/vendor/vagrant/lib/vagrant/util/safe_puts.rb +0 -31
  117. data/vendor/vagrant/lib/vagrant/util/scoped_hash_override.rb +0 -45
  118. data/vendor/vagrant/lib/vagrant/util/ssh.rb +0 -126
  119. data/vendor/vagrant/lib/vagrant/util/stacked_proc_runner.rb +0 -35
  120. data/vendor/vagrant/lib/vagrant/util/string_block_editor.rb +0 -75
  121. data/vendor/vagrant/lib/vagrant/util/subprocess.rb +0 -270
  122. data/vendor/vagrant/lib/vagrant/util/template_renderer.rb +0 -83
  123. data/vendor/vagrant/lib/vagrant/util/which.rb +0 -43
  124. data/vendor/vagrant/lib/vagrant/util.rb +0 -12
  125. data/vendor/vagrant/lib/vagrant/version.rb +0 -6
  126. data/vendor/vagrant/lib/vagrant.rb +0 -251
  127. data/vendor/vagrant/plugins/README.md +0 -5
  128. data/vendor/vagrant/plugins/commands/box/command/add.rb +0 -52
  129. data/vendor/vagrant/plugins/commands/box/command/list.rb +0 -41
  130. data/vendor/vagrant/plugins/commands/box/command/remove.rb +0 -37
  131. data/vendor/vagrant/plugins/commands/box/command/repackage.rb +0 -43
  132. data/vendor/vagrant/plugins/commands/box/command/root.rb +0 -75
  133. data/vendor/vagrant/plugins/commands/box/plugin.rb +0 -15
  134. data/vendor/vagrant/plugins/commands/destroy/command.rb +0 -31
  135. data/vendor/vagrant/plugins/commands/destroy/plugin.rb +0 -18
  136. data/vendor/vagrant/plugins/commands/halt/command.rb +0 -33
  137. data/vendor/vagrant/plugins/commands/halt/plugin.rb +0 -18
  138. data/vendor/vagrant/plugins/commands/init/command.rb +0 -40
  139. data/vendor/vagrant/plugins/commands/init/plugin.rb +0 -18
  140. data/vendor/vagrant/plugins/commands/package/command.rb +0 -78
  141. data/vendor/vagrant/plugins/commands/package/plugin.rb +0 -18
  142. data/vendor/vagrant/plugins/commands/plugin/action/bundler_check.rb +0 -25
  143. data/vendor/vagrant/plugins/commands/plugin/action/install_gem.rb +0 -70
  144. data/vendor/vagrant/plugins/commands/plugin/action/license_plugin.rb +0 -54
  145. data/vendor/vagrant/plugins/commands/plugin/action/list_plugins.rb +0 -54
  146. data/vendor/vagrant/plugins/commands/plugin/action/prune_gems.rb +0 -149
  147. data/vendor/vagrant/plugins/commands/plugin/action/uninstall_plugin.rb +0 -23
  148. data/vendor/vagrant/plugins/commands/plugin/action.rb +0 -52
  149. data/vendor/vagrant/plugins/commands/plugin/command/base.rb +0 -22
  150. data/vendor/vagrant/plugins/commands/plugin/command/install.rb +0 -39
  151. data/vendor/vagrant/plugins/commands/plugin/command/license.rb +0 -31
  152. data/vendor/vagrant/plugins/commands/plugin/command/list.rb +0 -28
  153. data/vendor/vagrant/plugins/commands/plugin/command/root.rb +0 -75
  154. data/vendor/vagrant/plugins/commands/plugin/command/uninstall.rb +0 -28
  155. data/vendor/vagrant/plugins/commands/plugin/gem_helper.rb +0 -74
  156. data/vendor/vagrant/plugins/commands/plugin/plugin.rb +0 -22
  157. data/vendor/vagrant/plugins/commands/plugin/state_file.rb +0 -57
  158. data/vendor/vagrant/plugins/commands/provision/command.rb +0 -34
  159. data/vendor/vagrant/plugins/commands/provision/plugin.rb +0 -18
  160. data/vendor/vagrant/plugins/commands/reload/command.rb +0 -37
  161. data/vendor/vagrant/plugins/commands/reload/plugin.rb +0 -18
  162. data/vendor/vagrant/plugins/commands/resume/command.rb +0 -25
  163. data/vendor/vagrant/plugins/commands/resume/plugin.rb +0 -17
  164. data/vendor/vagrant/plugins/commands/ssh/command.rb +0 -66
  165. data/vendor/vagrant/plugins/commands/ssh/plugin.rb +0 -17
  166. data/vendor/vagrant/plugins/commands/ssh_config/command.rb +0 -49
  167. data/vendor/vagrant/plugins/commands/ssh_config/plugin.rb +0 -18
  168. data/vendor/vagrant/plugins/commands/status/command.rb +0 -39
  169. data/vendor/vagrant/plugins/commands/status/plugin.rb +0 -18
  170. data/vendor/vagrant/plugins/commands/suspend/command.rb +0 -25
  171. data/vendor/vagrant/plugins/commands/suspend/plugin.rb +0 -18
  172. data/vendor/vagrant/plugins/commands/up/command.rb +0 -45
  173. data/vendor/vagrant/plugins/commands/up/plugin.rb +0 -17
  174. data/vendor/vagrant/plugins/commands/up/start_mixins.rb +0 -26
  175. data/vendor/vagrant/plugins/communicators/ssh/communicator.rb +0 -317
  176. data/vendor/vagrant/plugins/communicators/ssh/plugin.rb +0 -19
  177. data/vendor/vagrant/plugins/guests/arch/guest.rb +0 -41
  178. data/vendor/vagrant/plugins/guests/arch/plugin.rb +0 -15
  179. data/vendor/vagrant/plugins/guests/debian/guest.rb +0 -72
  180. data/vendor/vagrant/plugins/guests/debian/plugin.rb +0 -15
  181. data/vendor/vagrant/plugins/guests/fedora/guest.rb +0 -71
  182. data/vendor/vagrant/plugins/guests/fedora/plugin.rb +0 -15
  183. data/vendor/vagrant/plugins/guests/freebsd/config.rb +0 -13
  184. data/vendor/vagrant/plugins/guests/freebsd/guest.rb +0 -70
  185. data/vendor/vagrant/plugins/guests/freebsd/plugin.rb +0 -20
  186. data/vendor/vagrant/plugins/guests/gentoo/guest.rb +0 -51
  187. data/vendor/vagrant/plugins/guests/gentoo/plugin.rb +0 -15
  188. data/vendor/vagrant/plugins/guests/linux/config.rb +0 -13
  189. data/vendor/vagrant/plugins/guests/linux/guest.rb +0 -118
  190. data/vendor/vagrant/plugins/guests/linux/plugin.rb +0 -20
  191. data/vendor/vagrant/plugins/guests/openbsd/guest.rb +0 -13
  192. data/vendor/vagrant/plugins/guests/openbsd/plugin.rb +0 -15
  193. data/vendor/vagrant/plugins/guests/redhat/guest.rb +0 -74
  194. data/vendor/vagrant/plugins/guests/redhat/plugin.rb +0 -15
  195. data/vendor/vagrant/plugins/guests/solaris/config.rb +0 -18
  196. data/vendor/vagrant/plugins/guests/solaris/guest.rb +0 -73
  197. data/vendor/vagrant/plugins/guests/solaris/plugin.rb +0 -20
  198. data/vendor/vagrant/plugins/guests/suse/guest.rb +0 -24
  199. data/vendor/vagrant/plugins/guests/suse/plugin.rb +0 -15
  200. data/vendor/vagrant/plugins/guests/ubuntu/guest.rb +0 -44
  201. data/vendor/vagrant/plugins/guests/ubuntu/plugin.rb +0 -15
  202. data/vendor/vagrant/plugins/hosts/arch/host.rb +0 -68
  203. data/vendor/vagrant/plugins/hosts/arch/plugin.rb +0 -15
  204. data/vendor/vagrant/plugins/hosts/bsd/host.rb +0 -102
  205. data/vendor/vagrant/plugins/hosts/bsd/plugin.rb +0 -15
  206. data/vendor/vagrant/plugins/hosts/fedora/host.rb +0 -51
  207. data/vendor/vagrant/plugins/hosts/fedora/plugin.rb +0 -15
  208. data/vendor/vagrant/plugins/hosts/freebsd/host.rb +0 -43
  209. data/vendor/vagrant/plugins/hosts/freebsd/plugin.rb +0 -15
  210. data/vendor/vagrant/plugins/hosts/gentoo/host.rb +0 -24
  211. data/vendor/vagrant/plugins/hosts/gentoo/plugin.rb +0 -15
  212. data/vendor/vagrant/plugins/hosts/linux/host.rb +0 -95
  213. data/vendor/vagrant/plugins/hosts/linux/plugin.rb +0 -15
  214. data/vendor/vagrant/plugins/hosts/opensuse/host.rb +0 -34
  215. data/vendor/vagrant/plugins/hosts/opensuse/plugin.rb +0 -15
  216. data/vendor/vagrant/plugins/hosts/windows/host.rb +0 -17
  217. data/vendor/vagrant/plugins/hosts/windows/plugin.rb +0 -15
  218. data/vendor/vagrant/plugins/kernel_v1/config/nfs.rb +0 -20
  219. data/vendor/vagrant/plugins/kernel_v1/config/package.rb +0 -17
  220. data/vendor/vagrant/plugins/kernel_v1/config/ssh.rb +0 -46
  221. data/vendor/vagrant/plugins/kernel_v1/config/vagrant.rb +0 -31
  222. data/vendor/vagrant/plugins/kernel_v1/config/vm.rb +0 -184
  223. data/vendor/vagrant/plugins/kernel_v1/plugin.rb +0 -44
  224. data/vendor/vagrant/plugins/kernel_v2/config/nfs.rb +0 -10
  225. data/vendor/vagrant/plugins/kernel_v2/config/package.rb +0 -9
  226. data/vendor/vagrant/plugins/kernel_v2/config/ssh.rb +0 -35
  227. data/vendor/vagrant/plugins/kernel_v2/config/vagrant.rb +0 -9
  228. data/vendor/vagrant/plugins/kernel_v2/config/vm.rb +0 -314
  229. data/vendor/vagrant/plugins/kernel_v2/config/vm_provisioner.rb +0 -40
  230. data/vendor/vagrant/plugins/kernel_v2/config/vm_subvm.rb +0 -30
  231. data/vendor/vagrant/plugins/kernel_v2/plugin.rb +0 -44
  232. data/vendor/vagrant/plugins/providers/virtualbox/action/boot.rb +0 -49
  233. data/vendor/vagrant/plugins/providers/virtualbox/action/check_accessible.rb +0 -23
  234. data/vendor/vagrant/plugins/providers/virtualbox/action/check_created.rb +0 -21
  235. data/vendor/vagrant/plugins/providers/virtualbox/action/check_guest_additions.rb +0 -45
  236. data/vendor/vagrant/plugins/providers/virtualbox/action/check_running.rb +0 -21
  237. data/vendor/vagrant/plugins/providers/virtualbox/action/check_virtualbox.rb +0 -22
  238. data/vendor/vagrant/plugins/providers/virtualbox/action/clean_machine_folder.rb +0 -43
  239. data/vendor/vagrant/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +0 -18
  240. data/vendor/vagrant/plugins/providers/virtualbox/action/clear_network_interfaces.rb +0 -31
  241. data/vendor/vagrant/plugins/providers/virtualbox/action/clear_shared_folders.rb +0 -17
  242. data/vendor/vagrant/plugins/providers/virtualbox/action/created.rb +0 -20
  243. data/vendor/vagrant/plugins/providers/virtualbox/action/customize.rb +0 -36
  244. data/vendor/vagrant/plugins/providers/virtualbox/action/destroy.rb +0 -19
  245. data/vendor/vagrant/plugins/providers/virtualbox/action/destroy_confirm.rb +0 -17
  246. data/vendor/vagrant/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +0 -16
  247. data/vendor/vagrant/plugins/providers/virtualbox/action/discard_state.rb +0 -20
  248. data/vendor/vagrant/plugins/providers/virtualbox/action/export.rb +0 -57
  249. data/vendor/vagrant/plugins/providers/virtualbox/action/forced_halt.rb +0 -25
  250. data/vendor/vagrant/plugins/providers/virtualbox/action/forward_ports.rb +0 -79
  251. data/vendor/vagrant/plugins/providers/virtualbox/action/import.rb +0 -51
  252. data/vendor/vagrant/plugins/providers/virtualbox/action/is_paused.rb +0 -20
  253. data/vendor/vagrant/plugins/providers/virtualbox/action/is_running.rb +0 -20
  254. data/vendor/vagrant/plugins/providers/virtualbox/action/is_saved.rb +0 -20
  255. data/vendor/vagrant/plugins/providers/virtualbox/action/match_mac_address.rb +0 -21
  256. data/vendor/vagrant/plugins/providers/virtualbox/action/message_not_created.rb +0 -16
  257. data/vendor/vagrant/plugins/providers/virtualbox/action/message_not_running.rb +0 -16
  258. data/vendor/vagrant/plugins/providers/virtualbox/action/message_will_not_destroy.rb +0 -17
  259. data/vendor/vagrant/plugins/providers/virtualbox/action/network.rb +0 -366
  260. data/vendor/vagrant/plugins/providers/virtualbox/action/package.rb +0 -20
  261. data/vendor/vagrant/plugins/providers/virtualbox/action/package_vagrantfile.rb +0 -33
  262. data/vendor/vagrant/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +0 -35
  263. data/vendor/vagrant/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +0 -51
  264. data/vendor/vagrant/plugins/providers/virtualbox/action/prune_nfs_exports.rb +0 -20
  265. data/vendor/vagrant/plugins/providers/virtualbox/action/resume.rb +0 -25
  266. data/vendor/vagrant/plugins/providers/virtualbox/action/sane_defaults.rb +0 -87
  267. data/vendor/vagrant/plugins/providers/virtualbox/action/set_name.rb +0 -40
  268. data/vendor/vagrant/plugins/providers/virtualbox/action/setup_package_files.rb +0 -51
  269. data/vendor/vagrant/plugins/providers/virtualbox/action/share_folders.rb +0 -113
  270. data/vendor/vagrant/plugins/providers/virtualbox/action/suspend.rb +0 -20
  271. data/vendor/vagrant/plugins/providers/virtualbox/action.rb +0 -308
  272. data/vendor/vagrant/plugins/providers/virtualbox/config.rb +0 -82
  273. data/vendor/vagrant/plugins/providers/virtualbox/driver/base.rb +0 -344
  274. data/vendor/vagrant/plugins/providers/virtualbox/driver/meta.rb +0 -141
  275. data/vendor/vagrant/plugins/providers/virtualbox/driver/version_4_0.rb +0 -481
  276. data/vendor/vagrant/plugins/providers/virtualbox/driver/version_4_1.rb +0 -481
  277. data/vendor/vagrant/plugins/providers/virtualbox/driver/version_4_2.rb +0 -471
  278. data/vendor/vagrant/plugins/providers/virtualbox/model/forwarded_port.rb +0 -58
  279. data/vendor/vagrant/plugins/providers/virtualbox/plugin.rb +0 -42
  280. data/vendor/vagrant/plugins/providers/virtualbox/provider.rb +0 -92
  281. data/vendor/vagrant/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +0 -31
  282. data/vendor/vagrant/plugins/provisioners/chef/config/base.rb +0 -65
  283. data/vendor/vagrant/plugins/provisioners/chef/config/chef_client.rb +0 -39
  284. data/vendor/vagrant/plugins/provisioners/chef/config/chef_solo.rb +0 -87
  285. data/vendor/vagrant/plugins/provisioners/chef/plugin.rb +0 -33
  286. data/vendor/vagrant/plugins/provisioners/chef/provisioner/base.rb +0 -91
  287. data/vendor/vagrant/plugins/provisioners/chef/provisioner/chef_client.rb +0 -103
  288. data/vendor/vagrant/plugins/provisioners/chef/provisioner/chef_solo.rb +0 -182
  289. data/vendor/vagrant/plugins/provisioners/puppet/config/puppet.rb +0 -70
  290. data/vendor/vagrant/plugins/provisioners/puppet/config/puppet_server.rb +0 -16
  291. data/vendor/vagrant/plugins/provisioners/puppet/plugin.rb +0 -33
  292. data/vendor/vagrant/plugins/provisioners/puppet/provisioner/puppet.rb +0 -110
  293. data/vendor/vagrant/plugins/provisioners/puppet/provisioner/puppet_server.rb +0 -67
  294. data/vendor/vagrant/plugins/provisioners/shell/config.rb +0 -46
  295. data/vendor/vagrant/plugins/provisioners/shell/plugin.rb +0 -23
  296. data/vendor/vagrant/plugins/provisioners/shell/provisioner.rb +0 -66
  297. data/vendor/vagrant/tasks/acceptance.rake +0 -113
  298. data/vendor/vagrant/tasks/bundler.rake +0 -3
  299. data/vendor/vagrant/tasks/test.rake +0 -20
  300. data/vendor/vagrant/templates/commands/init/Vagrantfile.erb +0 -111
  301. data/vendor/vagrant/templates/commands/ssh_config/config.erb +0 -16
  302. data/vendor/vagrant/templates/config/messages.erb +0 -14
  303. data/vendor/vagrant/templates/config/validation_failed.erb +0 -7
  304. data/vendor/vagrant/templates/guests/arch/network_dhcp.erb +0 -4
  305. data/vendor/vagrant/templates/guests/arch/network_static.erb +0 -6
  306. data/vendor/vagrant/templates/guests/debian/network_dhcp.erb +0 -11
  307. data/vendor/vagrant/templates/guests/debian/network_static.erb +0 -7
  308. data/vendor/vagrant/templates/guests/fedora/network_dhcp.erb +0 -6
  309. data/vendor/vagrant/templates/guests/fedora/network_static.erb +0 -13
  310. data/vendor/vagrant/templates/guests/freebsd/network_dhcp.erb +0 -3
  311. data/vendor/vagrant/templates/guests/freebsd/network_static.erb +0 -3
  312. data/vendor/vagrant/templates/guests/gentoo/network_dhcp.erb +0 -4
  313. data/vendor/vagrant/templates/guests/gentoo/network_static.erb +0 -4
  314. data/vendor/vagrant/templates/guests/redhat/network_dhcp.erb +0 -6
  315. data/vendor/vagrant/templates/guests/redhat/network_static.erb +0 -7
  316. data/vendor/vagrant/templates/locales/en.yml +0 -993
  317. data/vendor/vagrant/templates/nfs/exports.erb +0 -5
  318. data/vendor/vagrant/templates/nfs/exports_freebsd.erb +0 -5
  319. data/vendor/vagrant/templates/nfs/exports_linux.erb +0 -5
  320. data/vendor/vagrant/templates/package_Vagrantfile.erb +0 -11
  321. data/vendor/vagrant/templates/provisioners/chef_client/client.erb +0 -32
  322. data/vendor/vagrant/templates/provisioners/chef_solo/solo.erb +0 -25
  323. data/vendor/vagrant/templates/rgloader.rb +0 -9
  324. data/vendor/vagrant/test/acceptance/base.rb +0 -48
  325. data/vendor/vagrant/test/acceptance/box_test.rb +0 -99
  326. data/vendor/vagrant/test/acceptance/destroy_test.rb +0 -37
  327. data/vendor/vagrant/test/acceptance/halt_test.rb +0 -72
  328. data/vendor/vagrant/test/acceptance/init_test.rb +0 -33
  329. data/vendor/vagrant/test/acceptance/networking/host_only_test.rb +0 -37
  330. data/vendor/vagrant/test/acceptance/networking/port_forward_test.rb +0 -125
  331. data/vendor/vagrant/test/acceptance/package_test.rb +0 -46
  332. data/vendor/vagrant/test/acceptance/provisioning/basic_test.rb +0 -61
  333. data/vendor/vagrant/test/acceptance/provisioning/chef_solo_test.rb +0 -37
  334. data/vendor/vagrant/test/acceptance/provisioning/shell_test.rb +0 -53
  335. data/vendor/vagrant/test/acceptance/resume_test.rb +0 -17
  336. data/vendor/vagrant/test/acceptance/shared_folders_test.rb +0 -84
  337. data/vendor/vagrant/test/acceptance/skeletons/chef_solo_basic/README.md +0 -3
  338. data/vendor/vagrant/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +0 -5
  339. data/vendor/vagrant/test/acceptance/skeletons/chef_solo_json/README.md +0 -3
  340. data/vendor/vagrant/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +0 -6
  341. data/vendor/vagrant/test/acceptance/skeletons/provisioner_multi/README.md +0 -3
  342. data/vendor/vagrant/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +0 -5
  343. data/vendor/vagrant/test/acceptance/ssh_test.rb +0 -46
  344. data/vendor/vagrant/test/acceptance/support/config.rb +0 -42
  345. data/vendor/vagrant/test/acceptance/support/isolated_environment.rb +0 -118
  346. data/vendor/vagrant/test/acceptance/support/matchers/have_color.rb +0 -9
  347. data/vendor/vagrant/test/acceptance/support/matchers/match_output.rb +0 -14
  348. data/vendor/vagrant/test/acceptance/support/matchers/succeed.rb +0 -14
  349. data/vendor/vagrant/test/acceptance/support/network_tests.rb +0 -29
  350. data/vendor/vagrant/test/acceptance/support/output.rb +0 -95
  351. data/vendor/vagrant/test/acceptance/support/shared/base_context.rb +0 -72
  352. data/vendor/vagrant/test/acceptance/support/shared/command_examples.rb +0 -33
  353. data/vendor/vagrant/test/acceptance/support/virtualbox.rb +0 -36
  354. data/vendor/vagrant/test/acceptance/suspend_test.rb +0 -56
  355. data/vendor/vagrant/test/acceptance/up_basic_test.rb +0 -33
  356. data/vendor/vagrant/test/acceptance/up_with_box_url.rb +0 -40
  357. data/vendor/vagrant/test/acceptance/vagrant_test.rb +0 -47
  358. data/vendor/vagrant/test/acceptance/version_test.rb +0 -15
  359. data/vendor/vagrant/test/config/acceptance_boxes.yml +0 -7
  360. data/vendor/vagrant/test/support/isolated_environment.rb +0 -46
  361. data/vendor/vagrant/test/support/tempdir.rb +0 -43
  362. data/vendor/vagrant/test/unit/base.rb +0 -27
  363. data/vendor/vagrant/test/unit/support/dummy_provider.rb +0 -16
  364. data/vendor/vagrant/test/unit/support/isolated_environment.rb +0 -177
  365. data/vendor/vagrant/test/unit/support/shared/base_context.rb +0 -104
  366. data/vendor/vagrant/test/unit/vagrant/action/builder_test.rb +0 -196
  367. data/vendor/vagrant/test/unit/vagrant/action/builtin/call_test.rb +0 -145
  368. data/vendor/vagrant/test/unit/vagrant/action/builtin/confirm_test.rb +0 -36
  369. data/vendor/vagrant/test/unit/vagrant/action/builtin/env_set_test.rb +0 -20
  370. data/vendor/vagrant/test/unit/vagrant/action/builtin/graceful_halt_test.rb +0 -61
  371. data/vendor/vagrant/test/unit/vagrant/action/builtin/lock_test.rb +0 -98
  372. data/vendor/vagrant/test/unit/vagrant/action/builtin/ssh_exec_test.rb +0 -57
  373. data/vendor/vagrant/test/unit/vagrant/action/hook_test.rb +0 -101
  374. data/vendor/vagrant/test/unit/vagrant/action/runner_test.rb +0 -71
  375. data/vendor/vagrant/test/unit/vagrant/action/warden_test.rb +0 -92
  376. data/vendor/vagrant/test/unit/vagrant/box_collection_test.rb +0 -224
  377. data/vendor/vagrant/test/unit/vagrant/box_test.rb +0 -109
  378. data/vendor/vagrant/test/unit/vagrant/cli_test.rb +0 -27
  379. data/vendor/vagrant/test/unit/vagrant/config/loader_test.rb +0 -184
  380. data/vendor/vagrant/test/unit/vagrant/config/v1/dummy_config_test.rb +0 -24
  381. data/vendor/vagrant/test/unit/vagrant/config/v1/loader_test.rb +0 -145
  382. data/vendor/vagrant/test/unit/vagrant/config/v1/root_test.rb +0 -40
  383. data/vendor/vagrant/test/unit/vagrant/config/v2/dummy_config_test.rb +0 -24
  384. data/vendor/vagrant/test/unit/vagrant/config/v2/loader_test.rb +0 -151
  385. data/vendor/vagrant/test/unit/vagrant/config/v2/root_test.rb +0 -97
  386. data/vendor/vagrant/test/unit/vagrant/config/v2/util_test.rb +0 -21
  387. data/vendor/vagrant/test/unit/vagrant/config_test.rb +0 -66
  388. data/vendor/vagrant/test/unit/vagrant/downloaders/base_test.rb +0 -14
  389. data/vendor/vagrant/test/unit/vagrant/downloaders/file_test.rb +0 -87
  390. data/vendor/vagrant/test/unit/vagrant/downloaders/http_test.rb +0 -23
  391. data/vendor/vagrant/test/unit/vagrant/environment_test.rb +0 -571
  392. data/vendor/vagrant/test/unit/vagrant/hosts_test.rb +0 -37
  393. data/vendor/vagrant/test/unit/vagrant/machine_state_test.rb +0 -26
  394. data/vendor/vagrant/test/unit/vagrant/machine_test.rb +0 -418
  395. data/vendor/vagrant/test/unit/vagrant/plugin/v1/command_test.rb +0 -143
  396. data/vendor/vagrant/test/unit/vagrant/plugin/v1/communicator_test.rb +0 -9
  397. data/vendor/vagrant/test/unit/vagrant/plugin/v1/config_test.rb +0 -50
  398. data/vendor/vagrant/test/unit/vagrant/plugin/v1/host_test.rb +0 -5
  399. data/vendor/vagrant/test/unit/vagrant/plugin/v1/manager_test.rb +0 -114
  400. data/vendor/vagrant/test/unit/vagrant/plugin/v1/plugin_test.rb +0 -267
  401. data/vendor/vagrant/test/unit/vagrant/plugin/v1/provider_test.rb +0 -18
  402. data/vendor/vagrant/test/unit/vagrant/plugin/v2/command_test.rb +0 -238
  403. data/vendor/vagrant/test/unit/vagrant/plugin/v2/communicator_test.rb +0 -9
  404. data/vendor/vagrant/test/unit/vagrant/plugin/v2/components_test.rb +0 -17
  405. data/vendor/vagrant/test/unit/vagrant/plugin/v2/config_test.rb +0 -60
  406. data/vendor/vagrant/test/unit/vagrant/plugin/v2/host_test.rb +0 -5
  407. data/vendor/vagrant/test/unit/vagrant/plugin/v2/manager_test.rb +0 -157
  408. data/vendor/vagrant/test/unit/vagrant/plugin/v2/plugin_test.rb +0 -287
  409. data/vendor/vagrant/test/unit/vagrant/plugin/v2/provider_test.rb +0 -18
  410. data/vendor/vagrant/test/unit/vagrant/registry_test.rb +0 -128
  411. data/vendor/vagrant/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +0 -16
  412. data/vendor/vagrant/test/unit/vagrant/util/file_checksum_test.rb +0 -23
  413. data/vendor/vagrant/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +0 -38
  414. data/vendor/vagrant/test/unit/vagrant/util/is_port_open_test.rb +0 -53
  415. data/vendor/vagrant/test/unit/vagrant/util/line_endings_helper_test.rb +0 -16
  416. data/vendor/vagrant/test/unit/vagrant/util/network_ip_test.rb +0 -17
  417. data/vendor/vagrant/test/unit/vagrant/util/retryable_test.rb +0 -106
  418. data/vendor/vagrant/test/unit/vagrant/util/scoped_hash_override_test.rb +0 -48
  419. data/vendor/vagrant/test/unit/vagrant/util/ssh_test.rb +0 -30
  420. data/vendor/vagrant/test/unit/vagrant/util/string_block_editor_test.rb +0 -98
  421. data/vendor/vagrant/test/unit/vagrant/util/which_test.rb +0 -43
  422. data/vendor/vagrant/test/unit/vagrant_test.rb +0 -56
  423. data/vendor/vagrant/vagrant.gemspec +0 -69
@@ -1,63 +0,0 @@
1
- require "vagrant/registry"
2
-
3
- module Vagrant
4
- module Config
5
- autoload :Base, 'vagrant/config/base'
6
- autoload :Container, 'vagrant/config/container'
7
- autoload :Loader, 'vagrant/config/loader'
8
- autoload :VersionBase, 'vagrant/config/version_base'
9
-
10
- autoload :V1, 'vagrant/config/v1'
11
- autoload :V2, 'vagrant/config/v2'
12
-
13
- # This is a mutex used to guarantee that only one thread can load
14
- # procs at any given time.
15
- CONFIGURE_MUTEX = Mutex.new
16
-
17
- # This is the registry which keeps track of what configuration
18
- # versions are available, mapped by the version string used in
19
- # `Vagrant.configure` calls.
20
- VERSIONS = Registry.new
21
- VERSIONS.register("1") { V1::Loader }
22
- VERSIONS.register("2") { V2::Loader }
23
-
24
- # This is the order of versions. This is used by the loader to figure out
25
- # how to "upgrade" versions up to the desired (current) version. The
26
- # current version is always considered to be the last version in this
27
- # list.
28
- VERSIONS_ORDER = ["1", "2"]
29
- CURRENT_VERSION = VERSIONS_ORDER.last
30
-
31
- # This is the method which is called by all Vagrantfiles to configure Vagrant.
32
- # This method expects a block which accepts a single argument representing
33
- # an instance of the {Config::Top} class.
34
- #
35
- # Note that the block is not run immediately. Instead, it's proc is stored
36
- # away for execution later.
37
- def self.run(version="1", &block)
38
- # Store it for later
39
- @last_procs ||= []
40
- @last_procs << [version, block]
41
- end
42
-
43
- # This is a method which will yield to a block and will capture all
44
- # ``Vagrant.configure`` calls, returning an array of `Proc`s.
45
- #
46
- # Wrapping this around anytime you call code which loads configurations
47
- # will force a mutex so that procs never get mixed up. This keeps
48
- # the configuration loading part of Vagrant thread-safe.
49
- def self.capture_configures
50
- CONFIGURE_MUTEX.synchronize do
51
- # Reset the last procs so that we start fresh
52
- @last_procs = []
53
-
54
- # Yield to allow the caller to do whatever loading needed
55
- yield
56
-
57
- # Return the last procs we've seen while still in the mutex,
58
- # knowing we're safe.
59
- return @last_procs
60
- end
61
- end
62
- end
63
- end
@@ -1,22 +0,0 @@
1
- module Vagrant
2
- module Downloaders
3
- # Represents a base class for a downloader. A downloader handles
4
- # downloading a box file to a temporary file.
5
- class Base
6
- include Vagrant::Util
7
-
8
- def initialize(ui)
9
- @ui = ui
10
- end
11
-
12
- # Tests whether a URL matches this download. Subclasses must
13
- # override this and return `true` for any URLs they wish to
14
- # handle.
15
- def self.match?(url); false; end
16
-
17
- # Downloads the source file to the destination file. It is up to
18
- # implementors of this class to handle the logic.
19
- def download!(source_url, destination_file); end
20
- end
21
- end
22
- end
@@ -1,28 +0,0 @@
1
- require 'fileutils'
2
- require 'uri'
3
-
4
- module Vagrant
5
- module Downloaders
6
- # "Downloads" a file to a temporary file. Basically, this downloader
7
- # simply does a file copy.
8
- class File < Base
9
- def self.match?(uri)
10
- extracted = URI.extract(uri, "file")
11
-
12
- # We match if we got a file URI. It doesn't matter here if the file
13
- # doesn't exist because we check again later as well.
14
- return true if extracted && extracted.include?(uri)
15
-
16
- # Otherwise we match if the file exists
17
- return ::File.file?(::File.expand_path(uri))
18
- end
19
-
20
- def download!(source_url, destination_file)
21
- raise Errors::DownloaderFileDoesntExist if !::File.file?(::File.expand_path(source_url))
22
-
23
- @ui.info I18n.t("vagrant.downloaders.file.download")
24
- FileUtils.cp(::File.expand_path(source_url), destination_file.path)
25
- end
26
- end
27
- end
28
- end
@@ -1,116 +0,0 @@
1
- require 'net/http'
2
- require 'net/https'
3
- require 'uri'
4
- require 'base64'
5
-
6
- module Vagrant
7
- module Downloaders
8
- # Downloads a file from an HTTP URL to a temporary file. This
9
- # downloader reports its progress to stdout while downloading.
10
- class HTTP < Base
11
- def self.match?(uri)
12
- # URI.parse barfs on '<drive letter>:\\files \on\ windows'
13
- extracted = URI.extract(uri, ['http', 'https']).first
14
- extracted && extracted.include?(uri)
15
- end
16
-
17
- def download!(source_url, destination_file)
18
- uri = URI.parse(source_url)
19
- proxy_uri = resolve_proxy(uri)
20
-
21
- http = Net::HTTP.new(uri.host, uri.port, proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password)
22
- http.read_timeout = nil # Disable the read timeout, just let it try to download
23
-
24
- if uri.scheme == "https"
25
- http.use_ssl = true
26
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
27
- end
28
-
29
- http.start do |h|
30
- @ui.info I18n.t("vagrant.downloaders.http.download", :url => source_url)
31
-
32
- headers = nil
33
- if uri.user && uri.password
34
- headers = {'Authorization' => 'Basic ' + Base64.encode64(uri.user + ':' + uri.password)}
35
- end
36
-
37
- h.request_get(uri.request_uri, headers) do |response|
38
- if response.is_a?(Net::HTTPRedirection)
39
- # Follow the HTTP redirect.
40
- # TODO: Error on some redirect limit
41
- download!(response["Location"], destination_file)
42
- return
43
- elsif !response.is_a?(Net::HTTPOK)
44
- raise Errors::DownloaderHTTPStatusError, :status => response.code
45
- end
46
-
47
- total = response.content_length
48
- progress = 0
49
- segment_count = 0
50
-
51
- response.read_body do |segment|
52
- # Report the progress out
53
- progress += segment.length
54
- segment_count += 1
55
-
56
- # Progress reporting is limited to every 25 segments just so
57
- # we're not constantly updating
58
- if segment_count % 25 == 0
59
- @ui.clear_line
60
- @ui.report_progress(progress, total)
61
- segment_count = 0
62
- end
63
-
64
- # Store the segment
65
- destination_file.write(segment)
66
- end
67
-
68
- # Clear the line one last time so that the progress meter disappears
69
- @ui.clear_line
70
- end
71
- end
72
- rescue Errno::ECONNRESET
73
- raise Errors::DownloaderHTTPConnectReset
74
- rescue Errno::ETIMEDOUT
75
- raise Errors::DownloaderHTTPConnectTimeout
76
- rescue SocketError
77
- raise Errors::DownloaderHTTPSocketError
78
- end
79
-
80
- private
81
-
82
- # This method respects the "http_proxy" and "no_proxy" environmental
83
- # variables so that HTTP proxies can properly be used with Vagrant.
84
- def resolve_proxy(source_uri)
85
- # Get the proper proxy key depending on the scheme of the box URL
86
- proxy_key = "#{source_uri.scheme}_proxy".downcase
87
- proxy_string = ENV[proxy_key] || ENV[proxy_key.upcase] || ""
88
-
89
- if !proxy_string.empty?
90
- # Make sure the proxy string starts with a protocol so that
91
- # URI.parse works properly below.
92
- proxy_string = "http://#{proxy_string}" if !proxy_string.include?("://")
93
-
94
- if ENV.has_key?("no_proxy")
95
- # Respect the "no_proxy" environmental variable which contains a list
96
- # of hosts that a proxy should not be used for.
97
- ENV["no_proxy"].split(",").each do |host|
98
- if source_uri.host =~ /#{Regexp.quote(host.strip)}$/
99
- proxy_string = ""
100
- break
101
- end
102
- end
103
- end
104
- end
105
-
106
- begin
107
- URI.parse(proxy_string)
108
- rescue URI::InvalidURIError
109
- # If we have an invalid URI, we assume the proxy is invalid,
110
- # so we don't use a proxy.
111
- URI.parse("")
112
- end
113
- end
114
- end
115
- end
116
- end
@@ -1,7 +0,0 @@
1
- module Vagrant
2
- module Downloaders
3
- autoload :Base, 'vagrant/downloaders/base'
4
- autoload :File, 'vagrant/downloaders/file'
5
- autoload :HTTP, 'vagrant/downloaders/http'
6
- end
7
- end
@@ -1,729 +0,0 @@
1
- require 'fileutils'
2
- require 'json'
3
- require 'pathname'
4
- require 'set'
5
-
6
- require 'log4r'
7
-
8
- require 'vagrant/util/file_mode'
9
- require 'vagrant/util/platform'
10
-
11
- module Vagrant
12
- # Represents a single Vagrant environment. A "Vagrant environment" is
13
- # defined as basically a folder with a "Vagrantfile." This class allows
14
- # access to the VMs, CLI, etc. all in the scope of this environment.
15
- class Environment
16
- DEFAULT_HOME = "~/.vagrant.d"
17
- DEFAULT_LOCAL_DATA = ".vagrant"
18
-
19
- # The `cwd` that this environment represents
20
- attr_reader :cwd
21
-
22
- # The persistent data directory where global data can be stored. It
23
- # is up to the creator of the data in this directory to properly
24
- # remove it when it is no longer needed.
25
- #
26
- # @return [Pathname]
27
- attr_reader :data_dir
28
-
29
- # The valid name for a Vagrantfile for this environment.
30
- attr_reader :vagrantfile_name
31
-
32
- # The {UI} object to communicate with the outside world.
33
- attr_reader :ui
34
-
35
- # This is the UI class to use when creating new UIs.
36
- attr_reader :ui_class
37
-
38
- # The directory to the "home" folder that Vagrant will use to store
39
- # global state.
40
- attr_reader :home_path
41
-
42
- # The directory to the directory where local, environment-specific
43
- # data is stored.
44
- attr_reader :local_data_path
45
-
46
- # The directory where temporary files for Vagrant go.
47
- attr_reader :tmp_path
48
-
49
- # The directory where boxes are stored.
50
- attr_reader :boxes_path
51
-
52
- # The path where the plugins are stored (gems)
53
- attr_reader :gems_path
54
-
55
- # The path to the default private key
56
- attr_reader :default_private_key_path
57
-
58
- # Initializes a new environment with the given options. The options
59
- # is a hash where the main available key is `cwd`, which defines where
60
- # the environment represents. There are other options available but
61
- # they shouldn't be used in general. If `cwd` is nil, then it defaults
62
- # to the `Dir.pwd` (which is the cwd of the executing process).
63
- def initialize(opts=nil)
64
- opts = {
65
- :cwd => nil,
66
- :home_path => nil,
67
- :local_data_path => nil,
68
- :lock_path => nil,
69
- :ui_class => nil,
70
- :vagrantfile_name => nil
71
- }.merge(opts || {})
72
-
73
- # Set the default working directory to look for the vagrantfile
74
- opts[:cwd] ||= ENV["VAGRANT_CWD"] if ENV.has_key?("VAGRANT_CWD")
75
- opts[:cwd] ||= Dir.pwd
76
- opts[:cwd] = Pathname.new(opts[:cwd])
77
- raise Errors::EnvironmentNonExistentCWD if !opts[:cwd].directory?
78
-
79
- # Set the default ui class
80
- opts[:ui_class] ||= UI::Silent
81
-
82
- # Set the Vagrantfile name up. We append "Vagrantfile" and "vagrantfile" so that
83
- # those continue to work as well, but anything custom will take precedence.
84
- opts[:vagrantfile_name] ||= ENV["VAGRANT_VAGRANTFILE"] if \
85
- ENV.has_key?("VAGRANT_VAGRANTFILE")
86
- opts[:vagrantfile_name] ||= ["Vagrantfile", "vagrantfile"]
87
- opts[:vagrantfile_name] = [opts[:vagrantfile_name]] if \
88
- !opts[:vagrantfile_name].is_a?(Array)
89
-
90
- # Set instance variables for all the configuration parameters.
91
- @cwd = opts[:cwd]
92
- @home_path = opts[:home_path]
93
- @lock_path = opts[:lock_path]
94
- @vagrantfile_name = opts[:vagrantfile_name]
95
- @ui = opts[:ui_class].new
96
- @ui_class = opts[:ui_class]
97
-
98
- @lock_acquired = false
99
-
100
- @logger = Log4r::Logger.new("vagrant::environment")
101
- @logger.info("Environment initialized (#{self})")
102
- @logger.info(" - cwd: #{cwd}")
103
-
104
- # Setup the home directory
105
- setup_home_path
106
- @boxes_path = @home_path.join("boxes")
107
- @data_dir = @home_path.join("data")
108
- @gems_path = @home_path.join("gems")
109
- @tmp_path = @home_path.join("tmp")
110
-
111
- # Setup the local data directory. If a configuration path is given,
112
- # then it is expanded relative to the working directory. Otherwise,
113
- # we use the default which is expanded relative to the root path.
114
- @local_data_path = nil
115
- if opts[:local_data_path]
116
- @local_data_path = Pathname.new(File.expand_path(opts[:local_data_path], @cwd))
117
- elsif !root_path.nil?
118
- @local_data_path = root_path.join(DEFAULT_LOCAL_DATA)
119
- end
120
-
121
- setup_local_data_path
122
-
123
- # Setup the default private key
124
- @default_private_key_path = @home_path.join("insecure_private_key")
125
- copy_insecure_private_key
126
-
127
- # Load the plugins
128
- load_plugins
129
-
130
- # Call the environment load hooks
131
- hook(:environment_load)
132
- end
133
-
134
- # Return a human-friendly string for pretty printed or inspected
135
- # instances.
136
- #
137
- # @return [String]
138
- def inspect
139
- "#<#{self.class}: #{@cwd}>"
140
- end
141
-
142
- #---------------------------------------------------------------
143
- # Helpers
144
- #---------------------------------------------------------------
145
-
146
- # Returns a list of machines that this environment is currently
147
- # managing that physically have been created.
148
- #
149
- # An "active" machine is a machine that Vagrant manages that has
150
- # been created. The machine itself may be in any state such as running,
151
- # suspended, etc. but if a machine is "active" then it exists.
152
- #
153
- # Note that the machines in this array may no longer be present in
154
- # the Vagrantfile of this environment. In this case the machine can
155
- # be considered an "orphan." Determining which machines are orphan
156
- # and which aren't is not currently a supported feature, but will
157
- # be in a future version.
158
- #
159
- # @return [Array<String, Symbol>]
160
- def active_machines
161
- machine_folder = @local_data_path.join("machines")
162
-
163
- # If the machine folder is not a directory then we just return
164
- # an empty array since no active machines exist.
165
- return [] if !machine_folder.directory?
166
-
167
- # Traverse the machines folder accumulate a result
168
- result = []
169
-
170
- machine_folder.children(true).each do |name_folder|
171
- # If this isn't a directory then it isn't a machine
172
- next if !name_folder.directory?
173
-
174
- name = name_folder.basename.to_s.to_sym
175
- name_folder.children(true).each do |provider_folder|
176
- # If this isn't a directory then it isn't a provider
177
- next if !provider_folder.directory?
178
-
179
- # If this machine doesn't have an ID, then ignore
180
- next if !provider_folder.join("id").file?
181
-
182
- provider = provider_folder.basename.to_s.to_sym
183
- result << [name, provider]
184
- end
185
- end
186
-
187
- # Return the results
188
- result
189
- end
190
-
191
- # This returns the provider name for the default provider for this
192
- # environment. The provider returned is currently hardcoded to "virtualbox"
193
- # but one day should be a detected valid, best-case provider for this
194
- # environment.
195
- #
196
- # @return [Symbol] Name of the default provider.
197
- def default_provider
198
- :virtualbox
199
- end
200
-
201
- # Returns the collection of boxes for the environment.
202
- #
203
- # @return [BoxCollection]
204
- def boxes
205
- @_boxes ||= BoxCollection.new(boxes_path)
206
- end
207
-
208
- # This is the global config, comprised of loading configuration from
209
- # the default, home, and root Vagrantfiles. This configuration is only
210
- # really useful for reading the list of virtual machines, since each
211
- # individual VM can override _most_ settings.
212
- #
213
- # This is lazy-loaded upon first use.
214
- #
215
- # @return [Object]
216
- def config_global
217
- return @config_global if @config_global
218
-
219
- @logger.info("Initializing config...")
220
-
221
- home_vagrantfile = nil
222
- root_vagrantfile = nil
223
- home_vagrantfile = find_vagrantfile(home_path) if home_path
224
- root_vagrantfile = find_vagrantfile(root_path) if root_path
225
-
226
- # Create the configuration loader and set the sources that are global.
227
- # We use this to load the configuration, and the list of machines we are
228
- # managing. Then, the actual individual configuration is loaded for
229
- # each {#machine} call.
230
- @config_loader = Config::Loader.new(Config::VERSIONS, Config::VERSIONS_ORDER)
231
- @config_loader.set(:default, File.expand_path("config/default.rb", Vagrant.source_root))
232
- @config_loader.set(:home, home_vagrantfile) if home_vagrantfile
233
- @config_loader.set(:root, root_vagrantfile) if root_vagrantfile
234
-
235
- # Make the initial call to get the "global" config. This is mostly
236
- # only useful to get the list of machines that we are managing.
237
- # Because of this, we ignore any warnings or errors.
238
- @config_global, _ = @config_loader.load([:default, :home, :root])
239
-
240
- # Return the config
241
- @config_global
242
- end
243
-
244
- # This defines a hook point where plugin action hooks that are registered
245
- # against the given name will be run in the context of this environment.
246
- #
247
- # @param [Symbol] name Name of the hook.
248
- def hook(name)
249
- @logger.info("Running hook: #{name}")
250
- callable = Action::Builder.new
251
- action_runner.run(
252
- callable,
253
- :action_name => name,
254
- :env => self)
255
- end
256
-
257
- # This returns a machine with the proper provider for this environment.
258
- # The machine named by `name` must be in this environment.
259
- #
260
- # @param [Symbol] name Name of the machine (as configured in the
261
- # Vagrantfile).
262
- # @param [Symbol] provider The provider that this machine should be
263
- # backed by.
264
- # @param [Boolean] refresh If true, then if there is a cached version
265
- # it is reloaded.
266
- # @return [Machine]
267
- def machine(name, provider, refresh=false)
268
- @logger.info("Getting machine: #{name} (#{provider})")
269
-
270
- # Compose the cache key of the name and provider, and return from
271
- # the cache if we have that.
272
- cache_key = [name, provider]
273
- @machines ||= {}
274
- if refresh
275
- @logger.info("Refreshing machine (busting cache): #{name} (#{provider})")
276
- @machines.delete(cache_key)
277
- end
278
-
279
- if @machines.has_key?(cache_key)
280
- @logger.info("Returning cached machine: #{name} (#{provider})")
281
- return @machines[cache_key]
282
- end
283
-
284
- @logger.info("Uncached load of machine.")
285
- sub_vm = config_global.vm.defined_vms[name]
286
- if !sub_vm
287
- raise Errors::MachineNotFound, :name => name, :provider => provider
288
- end
289
-
290
- provider_cls = Vagrant.plugin("2").manager.providers[provider]
291
- if !provider_cls
292
- raise Errors::ProviderNotFound, :machine => name, :provider => provider
293
- end
294
-
295
- # Build the machine configuration. This requires two passes: The first pass
296
- # loads in the machine sub-configuration. Since this can potentially
297
- # define a new box to base the machine from, we then make a second pass
298
- # with the box Vagrantfile (if it has one).
299
- vm_config_key = "vm_#{name}".to_sym
300
- @config_loader.set(vm_config_key, sub_vm.config_procs)
301
- config, config_warnings, config_errors = \
302
- @config_loader.load([:default, :home, :root, vm_config_key])
303
-
304
- box = nil
305
- begin
306
- box = boxes.find(config.vm.box, provider)
307
- rescue Errors::BoxUpgradeRequired
308
- # Upgrade the box if we must
309
- @logger.info("Upgrading box during config load: #{config.vm.box}")
310
- boxes.upgrade(config.vm.box)
311
- retry
312
- end
313
-
314
- # If a box was found, then we attempt to load the Vagrantfile for
315
- # that box. We don't require a box since we allow providers to download
316
- # boxes and so on.
317
- if box
318
- box_vagrantfile = find_vagrantfile(box.directory)
319
- if box_vagrantfile
320
- # The box has a custom Vagrantfile, so we load that into the config
321
- # as well.
322
- @logger.info("Box exists with Vagrantfile. Reloading machine config.")
323
- box_config_key = "box_#{box.name}_#{box.provider}".to_sym
324
- @config_loader.set(box_config_key, box_vagrantfile)
325
- config, config_warnings, config_errors = \
326
- @config_loader.load([:default, box_config_key, :home, :root, vm_config_key])
327
- end
328
- end
329
-
330
- # Get the provider configuration from the final loaded configuration
331
- provider_config = config.vm.get_provider_config(provider)
332
-
333
- # Determine the machine data directory and pass it to the machine.
334
- # XXX: Permissions error here.
335
- machine_data_path = @local_data_path.join("machines/#{name}/#{provider}")
336
- FileUtils.mkdir_p(machine_data_path)
337
-
338
- # If there were warnings or errors we want to output them
339
- if !config_warnings.empty? || !config_errors.empty?
340
- # The color of the output depends on whether we have warnings
341
- # or errors...
342
- level = config_errors.empty? ? :warn : :error
343
- output = Util::TemplateRenderer.render(
344
- "config/messages",
345
- :warnings => config_warnings,
346
- :errors => config_errors).chomp
347
- @ui.send(level, I18n.t("vagrant.general.config_upgrade_messages",
348
- :output => output))
349
-
350
- # If we had errors, then we bail
351
- raise Errors::ConfigUpgradeErrors if !config_errors.empty?
352
- end
353
-
354
- # Create the machine and cache it for future calls. This will also
355
- # return the machine from this method.
356
- @machines[cache_key] = Machine.new(name, provider, provider_cls, provider_config,
357
- config, machine_data_path, box, self)
358
- end
359
-
360
- # This returns a list of the configured machines for this environment.
361
- # Each of the names returned by this method is valid to be used with
362
- # the {#machine} method.
363
- #
364
- # @return [Array<Symbol>] Configured machine names.
365
- def machine_names
366
- config_global.vm.defined_vm_keys.dup
367
- end
368
-
369
- # This returns the name of the machine that is the "primary." In the
370
- # case of a single-machine environment, this is just the single machine
371
- # name. In the case of a multi-machine environment, then this can
372
- # potentially be nil if no primary machine is specified.
373
- #
374
- # @return [Symbol]
375
- def primary_machine_name
376
- # If it is a single machine environment, then return the name
377
- return machine_names.first if machine_names.length == 1
378
-
379
- # If it is a multi-machine environment, then return the primary
380
- config_global.vm.defined_vms.each do |name, subvm|
381
- return name if subvm.options[:primary]
382
- end
383
-
384
- # If no primary was specified, nil it is
385
- nil
386
- end
387
-
388
- # Unload the environment, running completion hooks. The environment
389
- # should not be used after this (but CAN be, technically). It is
390
- # recommended to always immediately set the variable to `nil` after
391
- # running this so you can't accidentally run any more methods. Example:
392
- #
393
- # env.unload
394
- # env = nil
395
- #
396
- def unload
397
- hook(:environment_unload)
398
- end
399
-
400
- # Makes a call to the CLI with the given arguments as if they
401
- # came from the real command line (sometimes they do!). An example:
402
- #
403
- # env.cli("package", "--vagrantfile", "Vagrantfile")
404
- #
405
- def cli(*args)
406
- CLI.new(args.flatten, self).execute
407
- end
408
-
409
- # Returns the host object associated with this environment.
410
- #
411
- # @return [Class]
412
- def host
413
- return @host if defined?(@host)
414
-
415
- # Attempt to figure out the host class. Note that the order
416
- # matters here, so please don't touch. Specifically: The symbol
417
- # check is done after the detect check because the symbol check
418
- # will return nil, and we don't want to trigger a detect load.
419
- host_klass = config_global.vagrant.host
420
- if host_klass.nil? || host_klass == :detect
421
- hosts = Vagrant.plugin("2").manager.hosts.to_hash
422
-
423
- # Get the flattened list of available hosts
424
- host_klass = Hosts.detect(hosts)
425
- end
426
-
427
- # If no host class is detected, we use the base class.
428
- host_klass ||= Vagrant.plugin("2", :host)
429
-
430
- @host ||= host_klass.new(@ui)
431
- end
432
-
433
- # Action runner for executing actions in the context of this environment.
434
- #
435
- # @return [Action::Runner]
436
- def action_runner
437
- @action_runner ||= Action::Runner.new do
438
- {
439
- :action_runner => action_runner,
440
- :box_collection => boxes,
441
- :global_config => config_global,
442
- :host => host,
443
- :gems_path => gems_path,
444
- :home_path => home_path,
445
- :root_path => root_path,
446
- :tmp_path => tmp_path,
447
- :ui => @ui
448
- }
449
- end
450
- end
451
-
452
- # The root path is the path where the top-most (loaded last)
453
- # Vagrantfile resides. It can be considered the project root for
454
- # this environment.
455
- #
456
- # @return [String]
457
- def root_path
458
- return @root_path if defined?(@root_path)
459
-
460
- root_finder = lambda do |path|
461
- # Note: To remain compatible with Ruby 1.8, we have to use
462
- # a `find` here instead of an `each`.
463
- found = vagrantfile_name.find do |rootfile|
464
- File.exist?(File.join(path.to_s, rootfile))
465
- end
466
-
467
- return path if found
468
- return nil if path.root? || !File.exist?(path)
469
- root_finder.call(path.parent)
470
- end
471
-
472
- @root_path = root_finder.call(cwd)
473
- end
474
-
475
- # This returns the path which Vagrant uses to determine the location
476
- # of the file lock. This is specific to each operating system.
477
- def lock_path
478
- @lock_path || tmp_path.join("vagrant.lock")
479
- end
480
-
481
- # This locks Vagrant for the duration of the block passed to this
482
- # method. During this time, any other environment which attempts
483
- # to lock which points to the same lock file will fail.
484
- def lock
485
- # This allows multiple locks in the same process to be nested
486
- return yield if @lock_acquired
487
-
488
- File.open(lock_path, "w+") do |f|
489
- # The file locking fails only if it returns "false." If it
490
- # succeeds it returns a 0, so we must explicitly check for
491
- # the proper error case.
492
- raise Errors::EnvironmentLockedError if f.flock(File::LOCK_EX | File::LOCK_NB) === false
493
-
494
- begin
495
- # Mark that we have a lock
496
- @lock_acquired = true
497
-
498
- yield
499
- ensure
500
- # We need to make sure that no matter what this is always
501
- # reset to false so we don't think we have a lock when we
502
- # actually don't.
503
- @lock_acquired = false
504
- end
505
- end
506
- end
507
-
508
- #---------------------------------------------------------------
509
- # Load Methods
510
- #---------------------------------------------------------------
511
-
512
- # This sets the `@home_path` variable properly.
513
- #
514
- # @return [Pathname]
515
- def setup_home_path
516
- @home_path = Pathname.new(File.expand_path(@home_path ||
517
- ENV["VAGRANT_HOME"] ||
518
- DEFAULT_HOME))
519
- @logger.info("Home path: #{@home_path}")
520
-
521
- # Setup the list of child directories that need to be created if they
522
- # don't already exist.
523
- dirs = [@home_path]
524
- subdirs = ["boxes", "data", "gems", "rgloader", "tmp"]
525
- dirs += subdirs.collect { |subdir| @home_path.join(subdir) }
526
-
527
- # Go through each required directory, creating it if it doesn't exist
528
- dirs.each do |dir|
529
- next if File.directory?(dir)
530
-
531
- begin
532
- @logger.info("Creating: #{dir}")
533
- FileUtils.mkdir_p(dir)
534
- rescue Errno::EACCES
535
- raise Errors::HomeDirectoryNotAccessible, :home_path => @home_path.to_s
536
- end
537
- end
538
-
539
- # Create the version file to mark the version of the home directory
540
- # we're using.
541
- version_file = @home_path.join("setup_version")
542
- if !version_file.file?
543
- @logger.debug("Setting up the version file.")
544
- version_file.open("w") do |f|
545
- f.write("1.1")
546
- end
547
- end
548
-
549
- # Create the rgloader/loader file so we can use encoded files.
550
- loader_file = @home_path.join("rgloader", "loader.rb")
551
- if !loader_file.file?
552
- source_loader = Vagrant.source_root.join("templates/rgloader.rb")
553
- FileUtils.cp(source_loader.to_s, loader_file.to_s)
554
- end
555
- end
556
-
557
- # This creates the local data directory and show an error if it
558
- # couldn't properly be created.
559
- def setup_local_data_path
560
- if @local_data_path.nil?
561
- @logger.warn("No local data path is set. Local data cannot be stored.")
562
- return
563
- end
564
-
565
- @logger.info("Local data path: #{@local_data_path}")
566
-
567
- # If the local data path is a file, then we are probably seeing an
568
- # old (V1) "dotfile." In this case, we upgrade it. The upgrade process
569
- # will remove the old data file if it is successful.
570
- if @local_data_path.file?
571
- upgrade_v1_dotfile(@local_data_path)
572
- end
573
-
574
- begin
575
- @logger.debug("Creating: #{@local_data_path}")
576
- FileUtils.mkdir_p(@local_data_path)
577
- rescue Errno::EACCES
578
- raise Errors::LocalDataDirectoryNotAccessible,
579
- :local_data_path => @local_data_path.to_s
580
- end
581
- end
582
-
583
- protected
584
-
585
- # This method copies the private key into the home directory if it
586
- # doesn't already exist.
587
- #
588
- # This must be done because `ssh` requires that the key is chmod
589
- # 0600, but if Vagrant is installed as a separate user, then the
590
- # effective uid won't be able to read the key. So the key is copied
591
- # to the home directory and chmod 0600.
592
- def copy_insecure_private_key
593
- if !@default_private_key_path.exist?
594
- @logger.info("Copying private key to home directory")
595
-
596
- source = File.expand_path("keys/vagrant", Vagrant.source_root)
597
- destination = @default_private_key_path
598
-
599
- begin
600
- FileUtils.cp(source, destination)
601
- rescue Errno::EACCES
602
- raise Errors::CopyPrivateKeyFailed,
603
- :source => source,
604
- :destination => destination
605
- end
606
- end
607
-
608
- if !Util::Platform.windows?
609
- # On Windows, permissions don't matter as much, so don't worry
610
- # about doing chmod.
611
- if Util::FileMode.from_octal(@default_private_key_path.stat.mode) != "600"
612
- @logger.info("Changing permissions on private key to 0600")
613
- @default_private_key_path.chmod(0600)
614
- end
615
- end
616
- end
617
-
618
- # Finds the Vagrantfile in the given directory.
619
- #
620
- # @param [Pathname] path Path to search in.
621
- # @return [Pathname]
622
- def find_vagrantfile(search_path)
623
- @vagrantfile_name.each do |vagrantfile|
624
- current_path = search_path.join(vagrantfile)
625
- return current_path if current_path.exist?
626
- end
627
-
628
- nil
629
- end
630
-
631
- # Loads the Vagrant plugins by properly setting up RubyGems so that
632
- # our private gem repository is on the path.
633
- def load_plugins
634
- if ENV["VAGRANT_NO_PLUGINS"]
635
- # If this key exists, then we don't load any plugins. It is a "safe
636
- # mode" of sorts.
637
- @logger.warn("VAGRANT_NO_PLUGINS is set. Not loading 3rd party plugins.")
638
- return
639
- end
640
-
641
- # Add our private gem path to the gem path and reset the paths
642
- # that Rubygems knows about.
643
- ENV["GEM_PATH"] = "#{@gems_path}#{::File::PATH_SEPARATOR}#{ENV["GEM_PATH"]}"
644
- ::Gem.clear_paths
645
-
646
- # Load the plugins
647
- plugins_json_file = @home_path.join("plugins.json")
648
- @logger.debug("Loading plugins from: #{plugins_json_file}")
649
- if plugins_json_file.file?
650
- data = JSON.parse(plugins_json_file.read)
651
- data["installed"].each do |plugin|
652
- @logger.info("Loading plugin from JSON: #{plugin}")
653
- begin
654
- Vagrant.require_plugin(plugin)
655
- rescue Errors::PluginLoadError => e
656
- @ui.error(e.message + "\n")
657
- rescue Errors::PluginLoadFailed => e
658
- @ui.error(e.message + "\n")
659
- end
660
- end
661
- end
662
- end
663
-
664
- # This upgrades a Vagrant 1.0.x "dotfile" to the new V2 format.
665
- #
666
- # This is a destructive process. Once the upgrade is complete, the
667
- # old dotfile is removed, and the environment becomes incompatible for
668
- # Vagrant 1.0 environments.
669
- #
670
- # @param [Pathname] path The path to the dotfile
671
- def upgrade_v1_dotfile(path)
672
- @logger.info("Upgrading V1 dotfile to V2 directory structure...")
673
-
674
- # First, verify the file isn't empty. If it is an empty file, we
675
- # just delete it and go on with life.
676
- contents = path.read.strip
677
- if contents.strip == ""
678
- @logger.info("V1 dotfile was empty. Removing and moving on.")
679
- path.delete
680
- return
681
- end
682
-
683
- # Otherwise, verify there is valid JSON in here since a Vagrant
684
- # environment would always ensure valid JSON. This is a sanity check
685
- # to make sure we don't nuke a dotfile that is not ours...
686
- @logger.debug("Attempting to parse JSON of V1 file")
687
- json_data = nil
688
- begin
689
- json_data = JSON.parse(contents)
690
- @logger.debug("JSON parsed successfully. Things are okay.")
691
- rescue JSON::ParserError
692
- # The file could've been tampered with since Vagrant 1.0.x is
693
- # supposed to ensure that the contents are valid JSON. Show an error.
694
- raise Errors::DotfileUpgradeJSONError,
695
- :state_file => path.to_s
696
- end
697
-
698
- # Alright, let's upgrade this guy to the new structure. Start by
699
- # backing up the old dotfile.
700
- backup_file = path.dirname.join(".vagrant.v1.#{Time.now.to_i}")
701
- @logger.info("Renaming old dotfile to: #{backup_file}")
702
- path.rename(backup_file)
703
-
704
- # Now, we create the actual local data directory. This should succeed
705
- # this time since we renamed the old conflicting V1.
706
- setup_local_data_path
707
-
708
- if json_data["active"]
709
- @logger.debug("Upgrading to V2 style for each active VM")
710
- json_data["active"].each do |name, id|
711
- @logger.info("Upgrading dotfile: #{name} (#{id})")
712
-
713
- # Create the machine configuration directory
714
- directory = @local_data_path.join("machines/#{name}/virtualbox")
715
- FileUtils.mkdir_p(directory)
716
-
717
- # Write the ID file
718
- directory.join("id").open("w+") do |f|
719
- f.write(id)
720
- end
721
- end
722
- end
723
-
724
- # Upgrade complete! Let the user know
725
- @ui.info(I18n.t("vagrant.general.upgraded_v1_dotfile",
726
- :backup_path => backup_file.to_s))
727
- end
728
- end
729
- end