vagrant 1.0.7 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -43
  3. data/Gemfile +2 -1
  4. data/LICENSE.txt +22 -0
  5. data/README.md +3 -90
  6. data/Rakefile +1 -18
  7. data/bin/vagrant +2 -58
  8. data/message.txt +17 -0
  9. data/vagrant.gemspec +20 -69
  10. metadata +43 -655
  11. data/.yardopts +0 -1
  12. data/CHANGELOG.md +0 -723
  13. data/LICENSE +0 -21
  14. data/config/default.rb +0 -30
  15. data/contrib/README.md +0 -12
  16. data/contrib/emacs/vagrant.el +0 -8
  17. data/contrib/vim/vagrantfile.vim +0 -9
  18. data/keys/README.md +0 -17
  19. data/keys/vagrant +0 -27
  20. data/keys/vagrant.pub +0 -1
  21. data/lib/vagrant.rb +0 -197
  22. data/lib/vagrant/action.rb +0 -63
  23. data/lib/vagrant/action/box/destroy.rb +0 -25
  24. data/lib/vagrant/action/box/download.rb +0 -84
  25. data/lib/vagrant/action/box/package.rb +0 -19
  26. data/lib/vagrant/action/box/unpackage.rb +0 -61
  27. data/lib/vagrant/action/box/verify.rb +0 -23
  28. data/lib/vagrant/action/builder.rb +0 -128
  29. data/lib/vagrant/action/builtin.rb +0 -171
  30. data/lib/vagrant/action/env/set.rb +0 -21
  31. data/lib/vagrant/action/environment.rb +0 -12
  32. data/lib/vagrant/action/general/check_virtualbox.rb +0 -28
  33. data/lib/vagrant/action/general/package.rb +0 -101
  34. data/lib/vagrant/action/general/validate.rb +0 -18
  35. data/lib/vagrant/action/runner.rb +0 -53
  36. data/lib/vagrant/action/vm/boot.rb +0 -53
  37. data/lib/vagrant/action/vm/check_accessible.rb +0 -23
  38. data/lib/vagrant/action/vm/check_box.rb +0 -33
  39. data/lib/vagrant/action/vm/check_guest_additions.rb +0 -38
  40. data/lib/vagrant/action/vm/check_port_collisions.rb +0 -89
  41. data/lib/vagrant/action/vm/clean_machine_folder.rb +0 -43
  42. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +0 -18
  43. data/lib/vagrant/action/vm/clear_network_interfaces.rb +0 -31
  44. data/lib/vagrant/action/vm/clear_shared_folders.rb +0 -18
  45. data/lib/vagrant/action/vm/customize.rb +0 -36
  46. data/lib/vagrant/action/vm/default_name.rb +0 -22
  47. data/lib/vagrant/action/vm/destroy.rb +0 -19
  48. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +0 -20
  49. data/lib/vagrant/action/vm/discard_state.rb +0 -22
  50. data/lib/vagrant/action/vm/export.rb +0 -57
  51. data/lib/vagrant/action/vm/forward_ports.rb +0 -92
  52. data/lib/vagrant/action/vm/halt.rb +0 -32
  53. data/lib/vagrant/action/vm/host_name.rb +0 -21
  54. data/lib/vagrant/action/vm/import.rb +0 -48
  55. data/lib/vagrant/action/vm/match_mac_address.rb +0 -21
  56. data/lib/vagrant/action/vm/network.rb +0 -403
  57. data/lib/vagrant/action/vm/nfs.rb +0 -196
  58. data/lib/vagrant/action/vm/package.rb +0 -23
  59. data/lib/vagrant/action/vm/package_vagrantfile.rb +0 -36
  60. data/lib/vagrant/action/vm/provision.rb +0 -61
  61. data/lib/vagrant/action/vm/provisioner_cleanup.rb +0 -26
  62. data/lib/vagrant/action/vm/prune_nfs_exports.rb +0 -20
  63. data/lib/vagrant/action/vm/resume.rb +0 -20
  64. data/lib/vagrant/action/vm/sane_defaults.rb +0 -78
  65. data/lib/vagrant/action/vm/setup_package_files.rb +0 -54
  66. data/lib/vagrant/action/vm/share_folders.rb +0 -114
  67. data/lib/vagrant/action/vm/suspend.rb +0 -20
  68. data/lib/vagrant/action/warden.rb +0 -92
  69. data/lib/vagrant/box.rb +0 -44
  70. data/lib/vagrant/box_collection.rb +0 -58
  71. data/lib/vagrant/cli.rb +0 -76
  72. data/lib/vagrant/command.rb +0 -24
  73. data/lib/vagrant/command/base.rb +0 -167
  74. data/lib/vagrant/command/box.rb +0 -58
  75. data/lib/vagrant/command/box_add.rb +0 -37
  76. data/lib/vagrant/command/box_list.rb +0 -28
  77. data/lib/vagrant/command/box_remove.rb +0 -27
  78. data/lib/vagrant/command/box_repackage.rb +0 -27
  79. data/lib/vagrant/command/destroy.rb +0 -64
  80. data/lib/vagrant/command/gem.rb +0 -39
  81. data/lib/vagrant/command/halt.rb +0 -39
  82. data/lib/vagrant/command/init.rb +0 -40
  83. data/lib/vagrant/command/package.rb +0 -75
  84. data/lib/vagrant/command/provision.rb +0 -40
  85. data/lib/vagrant/command/reload.rb +0 -39
  86. data/lib/vagrant/command/resume.rb +0 -33
  87. data/lib/vagrant/command/ssh.rb +0 -90
  88. data/lib/vagrant/command/ssh_config.rb +0 -51
  89. data/lib/vagrant/command/start_mixins.rb +0 -26
  90. data/lib/vagrant/command/status.rb +0 -36
  91. data/lib/vagrant/command/suspend.rb +0 -33
  92. data/lib/vagrant/command/up.rb +0 -40
  93. data/lib/vagrant/communication.rb +0 -7
  94. data/lib/vagrant/communication/base.rb +0 -56
  95. data/lib/vagrant/communication/ssh.rb +0 -230
  96. data/lib/vagrant/config.rb +0 -49
  97. data/lib/vagrant/config/base.rb +0 -82
  98. data/lib/vagrant/config/container.rb +0 -37
  99. data/lib/vagrant/config/error_recorder.rb +0 -19
  100. data/lib/vagrant/config/loader.rb +0 -127
  101. data/lib/vagrant/config/nfs.rb +0 -8
  102. data/lib/vagrant/config/package.rb +0 -7
  103. data/lib/vagrant/config/ssh.rb +0 -27
  104. data/lib/vagrant/config/top.rb +0 -72
  105. data/lib/vagrant/config/vagrant.rb +0 -14
  106. data/lib/vagrant/config/vm.rb +0 -168
  107. data/lib/vagrant/config/vm/provisioner.rb +0 -52
  108. data/lib/vagrant/config/vm/sub_vm.rb +0 -17
  109. data/lib/vagrant/data_store.rb +0 -92
  110. data/lib/vagrant/downloaders.rb +0 -7
  111. data/lib/vagrant/downloaders/base.rb +0 -25
  112. data/lib/vagrant/downloaders/file.rb +0 -22
  113. data/lib/vagrant/downloaders/http.rb +0 -97
  114. data/lib/vagrant/driver.rb +0 -8
  115. data/lib/vagrant/driver/virtualbox.rb +0 -134
  116. data/lib/vagrant/driver/virtualbox_4_0.rb +0 -459
  117. data/lib/vagrant/driver/virtualbox_4_1.rb +0 -459
  118. data/lib/vagrant/driver/virtualbox_4_2.rb +0 -606
  119. data/lib/vagrant/driver/virtualbox_base.rb +0 -326
  120. data/lib/vagrant/environment.rb +0 -522
  121. data/lib/vagrant/errors.rb +0 -445
  122. data/lib/vagrant/guest.rb +0 -18
  123. data/lib/vagrant/guest/arch.rb +0 -56
  124. data/lib/vagrant/guest/base.rb +0 -99
  125. data/lib/vagrant/guest/debian.rb +0 -64
  126. data/lib/vagrant/guest/fedora.rb +0 -66
  127. data/lib/vagrant/guest/freebsd.rb +0 -86
  128. data/lib/vagrant/guest/gentoo.rb +0 -46
  129. data/lib/vagrant/guest/linux.rb +0 -118
  130. data/lib/vagrant/guest/linux/config.rb +0 -19
  131. data/lib/vagrant/guest/linux/error.rb +0 -9
  132. data/lib/vagrant/guest/openbsd.rb +0 -20
  133. data/lib/vagrant/guest/redhat.rb +0 -67
  134. data/lib/vagrant/guest/solaris.rb +0 -118
  135. data/lib/vagrant/guest/suse.rb +0 -17
  136. data/lib/vagrant/guest/ubuntu.rb +0 -23
  137. data/lib/vagrant/hosts.rb +0 -37
  138. data/lib/vagrant/hosts/arch.rb +0 -55
  139. data/lib/vagrant/hosts/base.rb +0 -66
  140. data/lib/vagrant/hosts/bsd.rb +0 -97
  141. data/lib/vagrant/hosts/fedora.rb +0 -47
  142. data/lib/vagrant/hosts/freebsd.rb +0 -41
  143. data/lib/vagrant/hosts/gentoo.rb +0 -20
  144. data/lib/vagrant/hosts/linux.rb +0 -94
  145. data/lib/vagrant/hosts/opensuse.rb +0 -30
  146. data/lib/vagrant/hosts/windows.rb +0 -16
  147. data/lib/vagrant/plugin.rb +0 -81
  148. data/lib/vagrant/provisioners.rb +0 -12
  149. data/lib/vagrant/provisioners/base.rb +0 -44
  150. data/lib/vagrant/provisioners/chef.rb +0 -168
  151. data/lib/vagrant/provisioners/chef_client.rb +0 -132
  152. data/lib/vagrant/provisioners/chef_solo.rb +0 -234
  153. data/lib/vagrant/provisioners/puppet.rb +0 -176
  154. data/lib/vagrant/provisioners/puppet_server.rb +0 -78
  155. data/lib/vagrant/provisioners/shell.rb +0 -103
  156. data/lib/vagrant/registry.rb +0 -52
  157. data/lib/vagrant/ssh.rb +0 -126
  158. data/lib/vagrant/test_helpers.rb +0 -154
  159. data/lib/vagrant/ui.rb +0 -168
  160. data/lib/vagrant/util.rb +0 -12
  161. data/lib/vagrant/util/ansi_escape_code_remover.rb +0 -34
  162. data/lib/vagrant/util/busy.rb +0 -59
  163. data/lib/vagrant/util/counter.rb +0 -24
  164. data/lib/vagrant/util/file_checksum.rb +0 -38
  165. data/lib/vagrant/util/file_mode.rb +0 -12
  166. data/lib/vagrant/util/hash_with_indifferent_access.rb +0 -63
  167. data/lib/vagrant/util/is_port_open.rb +0 -38
  168. data/lib/vagrant/util/line_ending_helpers.rb +0 -14
  169. data/lib/vagrant/util/network_ip.rb +0 -28
  170. data/lib/vagrant/util/platform.rb +0 -68
  171. data/lib/vagrant/util/retryable.rb +0 -25
  172. data/lib/vagrant/util/safe_exec.rb +0 -36
  173. data/lib/vagrant/util/safe_puts.rb +0 -31
  174. data/lib/vagrant/util/stacked_proc_runner.rb +0 -35
  175. data/lib/vagrant/util/subprocess.rb +0 -247
  176. data/lib/vagrant/util/template_renderer.rb +0 -83
  177. data/lib/vagrant/version.rb +0 -6
  178. data/lib/vagrant/vm.rb +0 -195
  179. data/tasks/acceptance.rake +0 -113
  180. data/tasks/bundler.rake +0 -3
  181. data/tasks/test.rake +0 -20
  182. data/templates/commands/init/Vagrantfile.erb +0 -99
  183. data/templates/commands/ssh_config/config.erb +0 -15
  184. data/templates/config/validation_failed.erb +0 -7
  185. data/templates/guests/arch/network_dhcp.erb +0 -7
  186. data/templates/guests/arch/network_static.erb +0 -7
  187. data/templates/guests/debian/network_dhcp.erb +0 -6
  188. data/templates/guests/debian/network_static.erb +0 -7
  189. data/templates/guests/fedora/network_dhcp.erb +0 -6
  190. data/templates/guests/fedora/network_static.erb +0 -13
  191. data/templates/guests/freebsd/network_dhcp.erb +0 -3
  192. data/templates/guests/freebsd/network_static.erb +0 -3
  193. data/templates/guests/gentoo/network_dhcp.erb +0 -4
  194. data/templates/guests/gentoo/network_static.erb +0 -4
  195. data/templates/guests/redhat/network_dhcp.erb +0 -6
  196. data/templates/guests/redhat/network_static.erb +0 -7
  197. data/templates/locales/en.yml +0 -759
  198. data/templates/nfs/exports.erb +0 -5
  199. data/templates/nfs/exports_freebsd.erb +0 -5
  200. data/templates/nfs/exports_linux.erb +0 -5
  201. data/templates/package_Vagrantfile.erb +0 -11
  202. data/templates/provisioners/chef_client/client.erb +0 -32
  203. data/templates/provisioners/chef_solo/solo.erb +0 -25
  204. data/test/acceptance/base.rb +0 -48
  205. data/test/acceptance/box_test.rb +0 -99
  206. data/test/acceptance/destroy_test.rb +0 -37
  207. data/test/acceptance/halt_test.rb +0 -72
  208. data/test/acceptance/init_test.rb +0 -33
  209. data/test/acceptance/networking/host_only_test.rb +0 -37
  210. data/test/acceptance/networking/port_forward_test.rb +0 -125
  211. data/test/acceptance/package_test.rb +0 -46
  212. data/test/acceptance/provisioning/basic_test.rb +0 -61
  213. data/test/acceptance/provisioning/chef_solo_test.rb +0 -37
  214. data/test/acceptance/provisioning/shell_test.rb +0 -53
  215. data/test/acceptance/resume_test.rb +0 -17
  216. data/test/acceptance/shared_folders_test.rb +0 -84
  217. data/test/acceptance/skeletons/chef_solo_basic/README.md +0 -3
  218. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +0 -5
  219. data/test/acceptance/skeletons/chef_solo_json/README.md +0 -3
  220. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +0 -6
  221. data/test/acceptance/skeletons/provisioner_multi/README.md +0 -3
  222. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +0 -5
  223. data/test/acceptance/ssh_test.rb +0 -46
  224. data/test/acceptance/support/config.rb +0 -42
  225. data/test/acceptance/support/isolated_environment.rb +0 -117
  226. data/test/acceptance/support/matchers/have_color.rb +0 -9
  227. data/test/acceptance/support/matchers/match_output.rb +0 -14
  228. data/test/acceptance/support/matchers/succeed.rb +0 -14
  229. data/test/acceptance/support/network_tests.rb +0 -29
  230. data/test/acceptance/support/output.rb +0 -95
  231. data/test/acceptance/support/shared/base_context.rb +0 -72
  232. data/test/acceptance/support/shared/command_examples.rb +0 -33
  233. data/test/acceptance/support/virtualbox.rb +0 -36
  234. data/test/acceptance/suspend_test.rb +0 -56
  235. data/test/acceptance/up_basic_test.rb +0 -33
  236. data/test/acceptance/up_with_box_url.rb +0 -40
  237. data/test/acceptance/vagrant_test.rb +0 -47
  238. data/test/acceptance/version_test.rb +0 -15
  239. data/test/buildbot/README.md +0 -72
  240. data/test/buildbot/buildbot_config/__init__.py +0 -0
  241. data/test/buildbot/buildbot_config/config/__init__.py +0 -0
  242. data/test/buildbot/buildbot_config/config/loader.py +0 -24
  243. data/test/buildbot/buildbot_config/config/master.py +0 -24
  244. data/test/buildbot/buildbot_config/config/slave.py +0 -22
  245. data/test/buildbot/buildbot_config/master/__init__.py +0 -6
  246. data/test/buildbot/buildbot_config/master/builders.py +0 -78
  247. data/test/buildbot/buildbot_config/master/buildsteps.py +0 -100
  248. data/test/buildbot/buildbot_config/master/change_sources.py +0 -8
  249. data/test/buildbot/buildbot_config/master/schedulers.py +0 -32
  250. data/test/buildbot/buildbot_config/master/slaves.py +0 -60
  251. data/test/buildbot/buildbot_config/master/status.py +0 -52
  252. data/test/buildbot/master/Makefile.sample +0 -28
  253. data/test/buildbot/master/buildbot.tac +0 -36
  254. data/test/buildbot/master/master.cfg +0 -67
  255. data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
  256. data/test/buildbot/master/public_html/default.css +0 -545
  257. data/test/buildbot/master/public_html/favicon.ico +0 -0
  258. data/test/buildbot/master/public_html/robots.txt +0 -10
  259. data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +0 -356
  260. data/test/buildbot/master/public_html/static/css/prettify.css +0 -97
  261. data/test/buildbot/master/public_html/static/css/syntax.css +0 -60
  262. data/test/buildbot/master/public_html/static/css/vagrant.base.css +0 -205
  263. data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
  264. data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
  265. data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
  266. data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
  267. data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
  268. data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
  269. data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
  270. data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
  271. data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
  272. data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
  273. data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
  274. data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
  275. data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
  276. data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
  277. data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +0 -80
  278. data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +0 -4
  279. data/test/buildbot/master/templates/authfail.html +0 -9
  280. data/test/buildbot/master/templates/build.html +0 -205
  281. data/test/buildbot/master/templates/builder.html +0 -118
  282. data/test/buildbot/master/templates/builders.html +0 -33
  283. data/test/buildbot/master/templates/buildslave.html +0 -72
  284. data/test/buildbot/master/templates/buildslaves.html +0 -70
  285. data/test/buildbot/master/templates/change.html +0 -15
  286. data/test/buildbot/master/templates/layouts/base.html +0 -58
  287. data/test/buildbot/master/templates/macros/box.html +0 -37
  288. data/test/buildbot/master/templates/macros/build_line.html +0 -50
  289. data/test/buildbot/master/templates/macros/change.html +0 -81
  290. data/test/buildbot/master/templates/macros/forms.html +0 -300
  291. data/test/buildbot/master/templates/root.html +0 -42
  292. data/test/buildbot/master/templates/waterfall.html +0 -53
  293. data/test/buildbot/requirements.txt +0 -4
  294. data/test/buildbot/scripts/deploy.sh +0 -38
  295. data/test/buildbot/scripts/setup.sh +0 -107
  296. data/test/buildbot/slave/buildbot.tac +0 -43
  297. data/test/buildbot/slave/info/admin +0 -1
  298. data/test/buildbot/slave/info/host +0 -1
  299. data/test/buildbot/tests/__init__.py +0 -0
  300. data/test/buildbot/tests/master/__init__.py +0 -0
  301. data/test/buildbot/tests/master/test_slaves.py +0 -41
  302. data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
  303. data/test/config/acceptance_boxes.yml +0 -7
  304. data/test/support/isolated_environment.rb +0 -46
  305. data/test/support/tempdir.rb +0 -34
  306. data/test/unit/base.rb +0 -21
  307. data/test/unit/support/isolated_environment.rb +0 -47
  308. data/test/unit/support/shared/base_context.rb +0 -30
  309. data/test/unit/vagrant/action/builder_test.rb +0 -156
  310. data/test/unit/vagrant/action/environment_test.rb +0 -16
  311. data/test/unit/vagrant/action/runner_test.rb +0 -65
  312. data/test/unit/vagrant/action/warden_test.rb +0 -92
  313. data/test/unit/vagrant/box_collection_test.rb +0 -56
  314. data/test/unit/vagrant/box_test.rb +0 -34
  315. data/test/unit/vagrant/command/base_test.rb +0 -150
  316. data/test/unit/vagrant/config/base_test.rb +0 -48
  317. data/test/unit/vagrant/config/loader_test.rb +0 -79
  318. data/test/unit/vagrant/config/ssh_test.rb +0 -17
  319. data/test/unit/vagrant/config/top_test.rb +0 -69
  320. data/test/unit/vagrant/config/vm_test.rb +0 -71
  321. data/test/unit/vagrant/config_test.rb +0 -27
  322. data/test/unit/vagrant/data_store_test.rb +0 -79
  323. data/test/unit/vagrant/downloaders/base_test.rb +0 -18
  324. data/test/unit/vagrant/downloaders/file_test.rb +0 -75
  325. data/test/unit/vagrant/downloaders/http_test.rb +0 -19
  326. data/test/unit/vagrant/environment_test.rb +0 -220
  327. data/test/unit/vagrant/hosts_test.rb +0 -36
  328. data/test/unit/vagrant/registry_test.rb +0 -74
  329. data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +0 -16
  330. data/test/unit/vagrant/util/file_checksum_test.rb +0 -23
  331. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +0 -38
  332. data/test/unit/vagrant/util/is_port_open_test.rb +0 -53
  333. data/test/unit/vagrant/util/line_endings_helper_test.rb +0 -16
  334. data/test/unit/vagrant/util/network_ip_test.rb +0 -17
  335. data/test/unit/vagrant/util/retryable_test.rb +0 -106
  336. data/test/unit/vagrant_test.rb +0 -27
  337. data/test/unit_legacy/locales/en.yml +0 -8
  338. data/test/unit_legacy/test_helper.rb +0 -32
  339. data/test/unit_legacy/vagrant/action/box/destroy_test.rb +0 -18
  340. data/test/unit_legacy/vagrant/action/box/download_test.rb +0 -125
  341. data/test/unit_legacy/vagrant/action/box/package_test.rb +0 -25
  342. data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +0 -84
  343. data/test/unit_legacy/vagrant/action/box/verify_test.rb +0 -30
  344. data/test/unit_legacy/vagrant/action/env/set_test.rb +0 -24
  345. data/test/unit_legacy/vagrant/action/general/package_test.rb +0 -268
  346. data/test/unit_legacy/vagrant/action/general/validate_test.rb +0 -31
  347. data/test/unit_legacy/vagrant/action/vm/boot_test.rb +0 -66
  348. data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +0 -61
  349. data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +0 -61
  350. data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +0 -9
  351. data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +0 -84
  352. data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -52
  353. data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +0 -22
  354. data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +0 -40
  355. data/test/unit_legacy/vagrant/action/vm/customize_test.rb +0 -37
  356. data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +0 -25
  357. data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -49
  358. data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +0 -45
  359. data/test/unit_legacy/vagrant/action/vm/export_test.rb +0 -107
  360. data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +0 -77
  361. data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +0 -197
  362. data/test/unit_legacy/vagrant/action/vm/halt_test.rb +0 -79
  363. data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +0 -36
  364. data/test/unit_legacy/vagrant/action/vm/import_test.rb +0 -66
  365. data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +0 -40
  366. data/test/unit_legacy/vagrant/action/vm/modify_test.rb +0 -38
  367. data/test/unit_legacy/vagrant/action/vm/network_test.rb +0 -286
  368. data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +0 -26
  369. data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +0 -260
  370. data/test/unit_legacy/vagrant/action/vm/package_test.rb +0 -25
  371. data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +0 -46
  372. data/test/unit_legacy/vagrant/action/vm/provision_test.rb +0 -65
  373. data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +0 -56
  374. data/test/unit_legacy/vagrant/action/vm/resume_test.rb +0 -35
  375. data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +0 -144
  376. data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +0 -35
  377. data/test/unit_legacy/vagrant/action_test.rb +0 -89
  378. data/test/unit_legacy/vagrant/box_collection_test.rb +0 -45
  379. data/test/unit_legacy/vagrant/box_test.rb +0 -74
  380. data/test/unit_legacy/vagrant/cli_test.rb +0 -35
  381. data/test/unit_legacy/vagrant/command/base_test.rb +0 -23
  382. data/test/unit_legacy/vagrant/command/group_base_test.rb +0 -15
  383. data/test/unit_legacy/vagrant/command/helpers_test.rb +0 -88
  384. data/test/unit_legacy/vagrant/command/init_test.rb +0 -10
  385. data/test/unit_legacy/vagrant/command/package_test.rb +0 -27
  386. data/test/unit_legacy/vagrant/config/base_test.rb +0 -52
  387. data/test/unit_legacy/vagrant/config/error_recorder_test.rb +0 -18
  388. data/test/unit_legacy/vagrant/config/ssh_test.rb +0 -12
  389. data/test/unit_legacy/vagrant/config/vagrant_test.rb +0 -35
  390. data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +0 -92
  391. data/test/unit_legacy/vagrant/config/vm_test.rb +0 -47
  392. data/test/unit_legacy/vagrant/config_test.rb +0 -148
  393. data/test/unit_legacy/vagrant/downloaders/http_test.rb +0 -93
  394. data/test/unit_legacy/vagrant/environment_test.rb +0 -539
  395. data/test/unit_legacy/vagrant/errors_test.rb +0 -42
  396. data/test/unit_legacy/vagrant/hosts/base_test.rb +0 -46
  397. data/test/unit_legacy/vagrant/hosts/bsd_test.rb +0 -53
  398. data/test/unit_legacy/vagrant/hosts/linux_test.rb +0 -54
  399. data/test/unit_legacy/vagrant/plugin_test.rb +0 -9
  400. data/test/unit_legacy/vagrant/provisioners/base_test.rb +0 -63
  401. data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +0 -190
  402. data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +0 -115
  403. data/test/unit_legacy/vagrant/provisioners/chef_test.rb +0 -209
  404. data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +0 -68
  405. data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +0 -182
  406. data/test/unit_legacy/vagrant/provisioners/shell_test.rb +0 -79
  407. data/test/unit_legacy/vagrant/ssh/session_test.rb +0 -40
  408. data/test/unit_legacy/vagrant/ssh_test.rb +0 -304
  409. data/test/unit_legacy/vagrant/systems/base_test.rb +0 -18
  410. data/test/unit_legacy/vagrant/systems/linux_test.rb +0 -104
  411. data/test/unit_legacy/vagrant/util/busy_test.rb +0 -106
  412. data/test/unit_legacy/vagrant/util/counter_test.rb +0 -29
  413. data/test/unit_legacy/vagrant/util/platform_test.rb +0 -18
  414. data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +0 -43
  415. data/test/unit_legacy/vagrant/util/template_renderer_test.rb +0 -145
  416. data/test/unit_legacy/vagrant/vm_test.rb +0 -300
@@ -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,25 +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
- # Called prior to execution so any error checks can be done
18
- def prepare(source_url); end
19
-
20
- # Downloads the source file to the destination file. It is up to
21
- # implementors of this class to handle the logic.
22
- def download!(source_url, destination_file); end
23
- end
24
- end
25
- end
@@ -1,22 +0,0 @@
1
- require 'fileutils'
2
-
3
- module Vagrant
4
- module Downloaders
5
- # "Downloads" a file to a temporary file. Basically, this downloader
6
- # simply does a file copy.
7
- class File < Base
8
- def self.match?(uri)
9
- ::File.file?(::File.expand_path(uri))
10
- end
11
-
12
- def prepare(source_url)
13
- raise Errors::DownloaderFileDoesntExist if !::File.file?(::File.expand_path(source_url))
14
- end
15
-
16
- def download!(source_url, destination_file)
17
- @ui.info I18n.t("vagrant.downloaders.file.download")
18
- FileUtils.cp(::File.expand_path(source_url), destination_file.path)
19
- end
20
- end
21
- end
22
- end
@@ -1,97 +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).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 SocketError
73
- raise Errors::DownloaderHTTPSocketError
74
- end
75
-
76
- private
77
-
78
- # This method respects the "http_proxy" and "no_proxy" environmental
79
- # variables so that HTTP proxies can properly be used with Vagrant.
80
- def resolve_proxy(source_uri)
81
- proxy_string = ENV["http_proxy"] || ""
82
- if !proxy_string.empty? && ENV.has_key?("no_proxy")
83
- # Respect the "no_proxy" environmental variable which contains a list
84
- # of hosts that a proxy should not be used for.
85
- ENV["no_proxy"].split(",").each do |host|
86
- if source_uri.host =~ /#{Regexp.quote(host.strip)}$/
87
- proxy_string = ""
88
- break
89
- end
90
- end
91
- end
92
-
93
- URI.parse(proxy_string)
94
- end
95
- end
96
- end
97
- end
@@ -1,8 +0,0 @@
1
- module Vagrant
2
- module Driver
3
- autoload :VirtualBox, 'vagrant/driver/virtualbox'
4
- autoload :VirtualBox_4_0, 'vagrant/driver/virtualbox_4_0'
5
- autoload :VirtualBox_4_1, 'vagrant/driver/virtualbox_4_1'
6
- autoload :VirtualBox_4_2, 'vagrant/driver/virtualbox_4_2'
7
- end
8
- end
@@ -1,134 +0,0 @@
1
- require 'forwardable'
2
-
3
- require 'log4r'
4
-
5
- require 'vagrant/driver/virtualbox_base'
6
-
7
- module Vagrant
8
- module Driver
9
- # This class contains the logic to drive VirtualBox.
10
- #
11
- # Read the VirtualBoxBase source for documentation on each method.
12
- class VirtualBox < VirtualBoxBase
13
- # This is raised if the VM is not found when initializing a driver
14
- # with a UUID.
15
- class VMNotFound < StandardError; end
16
-
17
- # We use forwardable to do all our driver forwarding
18
- extend Forwardable
19
-
20
- # The UUID of the virtual machine we represent
21
- attr_reader :uuid
22
-
23
- # The version of virtualbox that is running.
24
- attr_reader :version
25
-
26
- def initialize(uuid=nil)
27
- # Setup the base
28
- super()
29
-
30
- @logger = Log4r::Logger.new("vagrant::driver::virtualbox")
31
- @uuid = uuid
32
-
33
- # Read and assign the version of VirtualBox we know which
34
- # specific driver to instantiate.
35
- begin
36
- @version = read_version || ""
37
- rescue Subprocess::LaunchError
38
- # This means that VirtualBox was not found, so we raise this
39
- # error here.
40
- raise Errors::VirtualBoxNotDetected
41
- end
42
-
43
- # Instantiate the proper version driver for VirtualBox
44
- @logger.debug("Finding driver for VirtualBox version: #{@version}")
45
- driver_map = {
46
- "4.0" => VirtualBox_4_0,
47
- "4.1" => VirtualBox_4_1,
48
- "4.2" => VirtualBox_4_2
49
- }
50
-
51
- driver_klass = nil
52
- driver_map.each do |key, klass|
53
- if @version.start_with?(key)
54
- driver_klass = klass
55
- break
56
- end
57
- end
58
-
59
- if !driver_klass
60
- supported_versions = driver_map.keys.sort.join(", ")
61
- raise Errors::VirtualBoxInvalidVersion, :supported_versions => supported_versions
62
- end
63
-
64
- @logger.info("Using VirtualBox driver: #{driver_klass}")
65
- @driver = driver_klass.new(@uuid)
66
-
67
- if @uuid
68
- # Verify the VM exists, and if it doesn't, then don't worry
69
- # about it (mark the UUID as nil)
70
- raise VMNotFound if !@driver.vm_exists?(@uuid)
71
- end
72
- end
73
-
74
- def_delegators :@driver, :clear_forwarded_ports,
75
- :clear_shared_folders,
76
- :create_dhcp_server,
77
- :create_host_only_network,
78
- :delete,
79
- :delete_unused_host_only_networks,
80
- :discard_saved_state,
81
- :enable_adapters,
82
- :execute_command,
83
- :export,
84
- :forward_ports,
85
- :halt,
86
- :import,
87
- :read_forwarded_ports,
88
- :read_bridged_interfaces,
89
- :read_guest_additions_version,
90
- :read_host_only_interfaces,
91
- :read_mac_address,
92
- :read_machine_folder,
93
- :read_network_interfaces,
94
- :read_state,
95
- :read_used_ports,
96
- :read_vms,
97
- :set_mac_address,
98
- :set_name,
99
- :share_folders,
100
- :ssh_port,
101
- :start,
102
- :suspend,
103
- :verify!,
104
- :verify_image,
105
- :vm_exists?
106
-
107
- protected
108
-
109
- # This returns the version of VirtualBox that is running.
110
- #
111
- # @return [String]
112
- def read_version
113
- # The version string is usually in one of the following formats:
114
- #
115
- # * 4.1.8r1234
116
- # * 4.1.8r1234_OSE
117
- # * 4.1.8_MacPortsr1234
118
- #
119
- # Below accounts for all of these.
120
-
121
- # Note: We split this into multiple lines because apparently "".split("_")
122
- # is [], so we have to check for an empty array in between.
123
- output = execute("--version")
124
- if output =~ /vboxdrv kernel module is not loaded/
125
- raise Errors::VirtualBoxKernelModuleNotLoaded
126
- end
127
-
128
- parts = output.split("_")
129
- return nil if parts.empty?
130
- parts[0].split("r")[0]
131
- end
132
- end
133
- end
134
- end
@@ -1,459 +0,0 @@
1
- require 'log4r'
2
-
3
- require 'vagrant/driver/virtualbox_base'
4
-
5
- module Vagrant
6
- module Driver
7
- # Driver for VirtualBox 4.0.x
8
- class VirtualBox_4_0 < VirtualBoxBase
9
- def initialize(uuid)
10
- super()
11
-
12
- @logger = Log4r::Logger.new("vagrant::driver::virtualbox_4_0")
13
- @uuid = uuid
14
- end
15
-
16
- def clear_forwarded_ports
17
- args = []
18
- read_forwarded_ports(@uuid).each do |nic, name, _, _|
19
- args.concat(["--natpf#{nic}", "delete", name])
20
- end
21
-
22
- execute("modifyvm", @uuid, *args) if !args.empty?
23
- end
24
-
25
- def clear_shared_folders
26
- info = execute("showvminfo", @uuid, "--machinereadable", :retryable => true)
27
- info.split("\n").each do |line|
28
- if line =~ /^SharedFolderNameMachineMapping\d+="(.+?)"$/
29
- execute("sharedfolder", "remove", @uuid, "--name", $1.to_s)
30
- end
31
- end
32
- end
33
-
34
- def create_dhcp_server(network, options)
35
- execute("dhcpserver", "add", "--ifname", network,
36
- "--ip", options[:dhcp_ip],
37
- "--netmask", options[:netmask],
38
- "--lowerip", options[:dhcp_lower],
39
- "--upperip", options[:dhcp_upper],
40
- "--enable")
41
- end
42
-
43
- def create_host_only_network(options)
44
- # Create the interface
45
- execute("hostonlyif", "create") =~ /^Interface '(.+?)' was successfully created$/
46
- name = $1.to_s
47
-
48
- # Configure it
49
- execute("hostonlyif", "ipconfig", name,
50
- "--ip", options[:adapter_ip],
51
- "--netmask", options[:netmask])
52
-
53
- # Return the details
54
- return {
55
- :name => name,
56
- :ip => options[:adapter_ip],
57
- :netmask => options[:netmask],
58
- :dhcp => nil
59
- }
60
- end
61
-
62
- def delete
63
- execute("unregistervm", @uuid, "--delete")
64
- end
65
-
66
- def delete_unused_host_only_networks
67
- networks = []
68
- execute("list", "hostonlyifs").split("\n").each do |line|
69
- networks << $1.to_s if line =~ /^Name:\s+(.+?)$/
70
- end
71
-
72
- execute("list", "vms").split("\n").each do |line|
73
- if line =~ /^".+?"\s+\{(.+?)\}$/
74
- info = execute("showvminfo", $1.to_s, "--machinereadable", :retryable => true)
75
- info.split("\n").each do |line|
76
- if line =~ /^hostonlyadapter\d+="(.+?)"$/
77
- networks.delete($1.to_s)
78
- end
79
- end
80
- end
81
- end
82
-
83
- networks.each do |name|
84
- # First try to remove any DHCP servers attached. We use `raw` because
85
- # it is okay if this fails. It usually means that a DHCP server was
86
- # never attached.
87
- raw("dhcpserver", "remove", "--ifname", name)
88
-
89
- # Delete the actual host only network interface.
90
- execute("hostonlyif", "remove", name)
91
- end
92
- end
93
-
94
- def discard_saved_state
95
- execute("discardstate", @uuid)
96
- end
97
-
98
- def enable_adapters(adapters)
99
- args = []
100
- adapters.each do |adapter|
101
- args.concat(["--nic#{adapter[:adapter]}", adapter[:type].to_s])
102
-
103
- if adapter[:bridge]
104
- args.concat(["--bridgeadapter#{adapter[:adapter]}",
105
- adapter[:bridge]])
106
- end
107
-
108
- if adapter[:hostonly]
109
- args.concat(["--hostonlyadapter#{adapter[:adapter]}",
110
- adapter[:hostonly]])
111
- end
112
-
113
- if adapter[:mac_address]
114
- args.concat(["--macaddress#{adapter[:adapter]}",
115
- adapter[:mac_address]])
116
- end
117
-
118
- if adapter[:nic_type]
119
- args.concat(["--nictype#{adapter[:adapter]}", adapter[:nic_type].to_s])
120
- end
121
- end
122
-
123
- execute("modifyvm", @uuid, *args)
124
- end
125
-
126
- def execute_command(command)
127
- raw(*command)
128
- end
129
-
130
- def export(path)
131
- # TODO: Progress
132
- execute("export", @uuid, "--output", path.to_s)
133
- end
134
-
135
- def forward_ports(ports)
136
- args = []
137
- ports.each do |options|
138
- pf_builder = [options[:name],
139
- options[:protocol] || "tcp",
140
- "",
141
- options[:hostport],
142
- "",
143
- options[:guestport]]
144
-
145
- args.concat(["--natpf#{options[:adapter] || 1}",
146
- pf_builder.join(",")])
147
- end
148
-
149
- execute("modifyvm", @uuid, *args) if !args.empty?
150
- end
151
-
152
- def halt
153
- execute("controlvm", @uuid, "poweroff")
154
- end
155
-
156
- def import(ovf)
157
- output = ""
158
- total = ""
159
- last = 0
160
- execute("import", ovf) do |type, data|
161
- if type == :stdout
162
- # Keep track of the stdout so that we can get the VM name
163
- output << data
164
- elsif type == :stderr
165
- # Append the data so we can see the full view
166
- total << data
167
-
168
- # Break up the lines. We can't get the progress until we see an "OK"
169
- lines = total.split("\n")
170
- if lines.include?("OK.")
171
- # The progress of the import will be in the last line. Do a greedy
172
- # regular expression to find what we're looking for.
173
- if lines.last =~ /.+(\d{2})%/
174
- current = $1.to_i
175
- if current > last
176
- last = current
177
- yield current if block_given?
178
- end
179
- end
180
- end
181
- end
182
- end
183
-
184
- # Find the name of the VM name
185
- if output !~ /Suggested VM name "(.+?)"/
186
- @logger.error("Couldn't find VM name in the output.")
187
- return nil
188
- end
189
-
190
- name = $1.to_s
191
-
192
- output = execute("list", "vms")
193
- if output =~ /^"#{Regexp.escape(name)}" \{(.+?)\}$/
194
- return $1.to_s
195
- end
196
-
197
- nil
198
- end
199
-
200
- def read_forwarded_ports(uuid=nil, active_only=false)
201
- uuid ||= @uuid
202
-
203
- @logger.debug("read_forward_ports: uuid=#{uuid} active_only=#{active_only}")
204
-
205
- results = []
206
- current_nic = nil
207
- info = execute("showvminfo", uuid, "--machinereadable", :retryable => true)
208
- info.split("\n").each do |line|
209
- # This is how we find the nic that a FP is attached to,
210
- # since this comes first.
211
- current_nic = $1.to_i if line =~ /^nic(\d+)=".+?"$/
212
-
213
- # If we care about active VMs only, then we check the state
214
- # to verify the VM is running.
215
- if active_only && line =~ /^VMState="(.+?)"$/ && $1.to_s != "running"
216
- return []
217
- end
218
-
219
- # Parse out the forwarded port information
220
- if line =~ /^Forwarding.+?="(.+?),.+?,.*?,(.+?),.*?,(.+?)"$/
221
- result = [current_nic, $1.to_s, $2.to_i, $3.to_i]
222
- @logger.debug(" - #{result.inspect}")
223
- results << result
224
- end
225
- end
226
-
227
- results
228
- end
229
-
230
- def read_bridged_interfaces
231
- execute("list", "bridgedifs").split("\n\n").collect do |block|
232
- info = {}
233
-
234
- block.split("\n").each do |line|
235
- if line =~ /^Name:\s+(.+?)$/
236
- info[:name] = $1.to_s
237
- elsif line =~ /^IPAddress:\s+(.+?)$/
238
- info[:ip] = $1.to_s
239
- elsif line =~ /^NetworkMask:\s+(.+?)$/
240
- info[:netmask] = $1.to_s
241
- elsif line =~ /^Status:\s+(.+?)$/
242
- info[:status] = $1.to_s
243
- end
244
- end
245
-
246
- # Return the info to build up the results
247
- info
248
- end
249
- end
250
-
251
- def read_guest_additions_version
252
- output = execute("guestproperty", "get", @uuid, "/VirtualBox/GuestAdd/Version",
253
- :retryable => true)
254
- if output =~ /^Value: (.+?)$/
255
- # Split the version by _ since some distro versions modify it
256
- # to look like this: 4.1.2_ubuntu, and the distro part isn't
257
- # too important.
258
- value = $1.to_s
259
- return value.split("_").first
260
- end
261
-
262
- return nil
263
- end
264
-
265
- def read_host_only_interfaces
266
- dhcp = {}
267
- execute("list", "dhcpservers", :retryable => true).split("\n\n").each do |block|
268
- info = {}
269
-
270
- block.split("\n").each do |line|
271
- if line =~ /^NetworkName:\s+HostInterfaceNetworking-(.+?)$/
272
- info[:network] = $1.to_s
273
- elsif line =~ /^IP:\s+(.+?)$/
274
- info[:ip] = $1.to_s
275
- elsif line =~ /^lowerIPAddress:\s+(.+?)$/
276
- info[:lower] = $1.to_s
277
- elsif line =~ /^upperIPAddress:\s+(.+?)$/
278
- info[:upper] = $1.to_s
279
- end
280
- end
281
-
282
- # Set the DHCP info
283
- dhcp[info[:network]] = info
284
- end
285
-
286
- execute("list", "hostonlyifs", :retryable => true).split("\n\n").collect do |block|
287
- info = {}
288
-
289
- block.split("\n").each do |line|
290
- if line =~ /^Name:\s+(.+?)$/
291
- info[:name] = $1.to_s
292
- elsif line =~ /^IPAddress:\s+(.+?)$/
293
- info[:ip] = $1.to_s
294
- elsif line =~ /^NetworkMask:\s+(.+?)$/
295
- info[:netmask] = $1.to_s
296
- elsif line =~ /^Status:\s+(.+?)$/
297
- info[:status] = $1.to_s
298
- end
299
- end
300
-
301
- # Set the DHCP info if it exists
302
- info[:dhcp] = dhcp[info[:name]] if dhcp[info[:name]]
303
-
304
- info
305
- end
306
- end
307
-
308
- def read_mac_address
309
- info = execute("showvminfo", @uuid, "--machinereadable", :retryable => true)
310
- info.split("\n").each do |line|
311
- return $1.to_s if line =~ /^macaddress1="(.+?)"$/
312
- end
313
-
314
- nil
315
- end
316
-
317
- def read_machine_folder
318
- execute("list", "systemproperties", :retryable => true).split("\n").each do |line|
319
- if line =~ /^Default machine folder:\s+(.+?)$/i
320
- return $1.to_s
321
- end
322
- end
323
-
324
- nil
325
- end
326
-
327
- def read_network_interfaces
328
- nics = {}
329
- info = execute("showvminfo", @uuid, "--machinereadable", :retryable => true)
330
- info.split("\n").each do |line|
331
- if line =~ /^nic(\d+)="(.+?)"$/
332
- adapter = $1.to_i
333
- type = $2.to_sym
334
-
335
- nics[adapter] ||= {}
336
- nics[adapter][:type] = type
337
- elsif line =~ /^hostonlyadapter(\d+)="(.+?)"$/
338
- adapter = $1.to_i
339
- network = $2.to_s
340
-
341
- nics[adapter] ||= {}
342
- nics[adapter][:hostonly] = network
343
- elsif line =~ /^bridgeadapter(\d+)="(.+?)"$/
344
- adapter = $1.to_i
345
- network = $2.to_s
346
-
347
- nics[adapter] ||= {}
348
- nics[adapter][:bridge] = network
349
- end
350
- end
351
-
352
- nics
353
- end
354
-
355
- def read_state
356
- output = execute("showvminfo", @uuid, "--machinereadable", :retryable => true)
357
- if output =~ /^name="<inaccessible>"$/
358
- return :inaccessible
359
- elsif output =~ /^VMState="(.+?)"$/
360
- return $1.to_sym
361
- end
362
-
363
- nil
364
- end
365
-
366
- def read_used_ports
367
- ports = []
368
- execute("list", "vms", :retryable => true).split("\n").each do |line|
369
- if line =~ /^".+?" \{(.+?)\}$/
370
- uuid = $1.to_s
371
-
372
- # Ignore our own used ports
373
- next if uuid == @uuid
374
-
375
- read_forwarded_ports(uuid, true).each do |_, _, hostport, _|
376
- ports << hostport
377
- end
378
- end
379
- end
380
-
381
- ports
382
- end
383
-
384
- def read_vms
385
- results = []
386
- execute("list", "vms", :retryable => true).split("\n").each do |line|
387
- if line =~ /^".+?" \{(.+?)\}$/
388
- results << $1.to_s
389
- end
390
- end
391
-
392
- results
393
- end
394
-
395
- def set_mac_address(mac)
396
- execute("modifyvm", @uuid, "--macaddress1", mac)
397
- end
398
-
399
- def set_name(name)
400
- execute("modifyvm", @uuid, "--name", name)
401
- end
402
-
403
- def share_folders(folders)
404
- folders.each do |folder|
405
- args = ["--name",
406
- folder[:name],
407
- "--hostpath",
408
- folder[:hostpath]]
409
- args << "--transient" if folder.has_key?(:transient) && folder[:transient]
410
- execute("sharedfolder", "add", @uuid, *args)
411
- end
412
- end
413
-
414
- def ssh_port(expected_port)
415
- @logger.debug("Searching for SSH port: #{expected_port.inspect}")
416
-
417
- # Look for the forwarded port only by comparing the guest port
418
- read_forwarded_ports.each do |_, _, hostport, guestport|
419
- return hostport if guestport == expected_port
420
- end
421
-
422
- nil
423
- end
424
-
425
- def start(mode)
426
- command = ["startvm", @uuid, "--type", mode.to_s]
427
- r = raw(*command)
428
-
429
- if r.exit_code == 0 || r.stdout =~ /VM ".+?" has been successfully started/
430
- # Some systems return an exit code 1 for some reason. For that
431
- # we depend on the output.
432
- return true
433
- end
434
-
435
- # If we reached this point then it didn't work out.
436
- raise Errors::VBoxManageError, :command => command.inspect
437
- end
438
-
439
- def suspend
440
- execute("controlvm", @uuid, "savestate")
441
- end
442
-
443
- def verify!
444
- # This command sometimes fails if kernel drivers aren't properly loaded
445
- # so we just run the command and verify that it succeeded.
446
- execute("list", "hostonlyifs")
447
- end
448
-
449
- def verify_image(path)
450
- r = raw("import", path.to_s, "--dry-run")
451
- return r.exit_code == 0
452
- end
453
-
454
- def vm_exists?(uuid)
455
- raw("showvminfo", uuid).exit_code == 0
456
- end
457
- end
458
- end
459
- end