vagrant 0.8.10 → 0.9.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 (324) hide show
  1. data/CHANGELOG.md +77 -1
  2. data/Gemfile +0 -14
  3. data/LICENSE +1 -1
  4. data/bin/vagrant +47 -20
  5. data/config/default.rb +6 -14
  6. data/lib/vagrant.rb +132 -5
  7. data/lib/vagrant/action.rb +45 -123
  8. data/lib/vagrant/action/box/destroy.rb +7 -3
  9. data/lib/vagrant/action/box/download.rb +8 -8
  10. data/lib/vagrant/action/box/package.rb +2 -2
  11. data/lib/vagrant/action/box/unpackage.rb +13 -7
  12. data/lib/vagrant/action/box/verify.rb +5 -5
  13. data/lib/vagrant/action/builder.rb +23 -19
  14. data/lib/vagrant/action/builtin.rb +117 -79
  15. data/lib/vagrant/action/env/set.rb +7 -4
  16. data/lib/vagrant/action/environment.rb +3 -41
  17. data/lib/vagrant/action/general/package.rb +14 -29
  18. data/lib/vagrant/action/general/validate.rb +2 -2
  19. data/lib/vagrant/action/runner.rb +53 -0
  20. data/lib/vagrant/action/vm/boot.rb +9 -9
  21. data/lib/vagrant/action/vm/check_accessible.rb +2 -2
  22. data/lib/vagrant/action/vm/check_box.rb +10 -12
  23. data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
  24. data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
  25. data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
  26. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
  27. data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
  28. data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
  29. data/lib/vagrant/action/vm/customize.rb +19 -9
  30. data/lib/vagrant/action/vm/destroy.rb +4 -4
  31. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
  32. data/lib/vagrant/action/vm/discard_state.rb +4 -4
  33. data/lib/vagrant/action/vm/export.rb +13 -8
  34. data/lib/vagrant/action/vm/forward_ports.rb +55 -102
  35. data/lib/vagrant/action/vm/halt.rb +9 -6
  36. data/lib/vagrant/action/vm/host_name.rb +4 -4
  37. data/lib/vagrant/action/vm/import.rb +19 -10
  38. data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
  39. data/lib/vagrant/action/vm/network.rb +300 -94
  40. data/lib/vagrant/action/vm/nfs.rb +41 -26
  41. data/lib/vagrant/action/vm/package.rb +1 -1
  42. data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
  43. data/lib/vagrant/action/vm/provision.rb +42 -13
  44. data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
  45. data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
  46. data/lib/vagrant/action/vm/resume.rb +4 -4
  47. data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
  48. data/lib/vagrant/action/vm/share_folders.rb +63 -39
  49. data/lib/vagrant/action/vm/suspend.rb +4 -4
  50. data/lib/vagrant/action/warden.rb +13 -6
  51. data/lib/vagrant/box.rb +9 -55
  52. data/lib/vagrant/box_collection.rb +22 -17
  53. data/lib/vagrant/cli.rb +62 -47
  54. data/lib/vagrant/command.rb +18 -20
  55. data/lib/vagrant/command/base.rb +135 -90
  56. data/lib/vagrant/command/box.rb +46 -21
  57. data/lib/vagrant/command/box_add.rb +33 -0
  58. data/lib/vagrant/command/box_list.rb +25 -0
  59. data/lib/vagrant/command/box_remove.rb +23 -0
  60. data/lib/vagrant/command/box_repackage.rb +23 -0
  61. data/lib/vagrant/command/destroy.rb +16 -5
  62. data/lib/vagrant/command/halt.rb +25 -7
  63. data/lib/vagrant/command/init.rb +30 -7
  64. data/lib/vagrant/command/package.rb +49 -18
  65. data/lib/vagrant/command/provision.rb +22 -9
  66. data/lib/vagrant/command/reload.rb +18 -5
  67. data/lib/vagrant/command/resume.rb +18 -5
  68. data/lib/vagrant/command/ssh.rb +69 -31
  69. data/lib/vagrant/command/ssh_config.rb +37 -22
  70. data/lib/vagrant/command/status.rb +22 -20
  71. data/lib/vagrant/command/suspend.rb +18 -5
  72. data/lib/vagrant/command/up.rb +41 -8
  73. data/lib/vagrant/communication.rb +7 -0
  74. data/lib/vagrant/communication/base.rb +56 -0
  75. data/lib/vagrant/communication/ssh.rb +200 -0
  76. data/lib/vagrant/config.rb +29 -103
  77. data/lib/vagrant/config/base.rb +18 -26
  78. data/lib/vagrant/config/container.rb +37 -0
  79. data/lib/vagrant/config/error_recorder.rb +1 -1
  80. data/lib/vagrant/config/loader.rb +125 -0
  81. data/lib/vagrant/config/nfs.rb +1 -3
  82. data/lib/vagrant/config/package.rb +1 -3
  83. data/lib/vagrant/config/ssh.rb +31 -16
  84. data/lib/vagrant/config/top.rb +36 -25
  85. data/lib/vagrant/config/vagrant.rb +2 -5
  86. data/lib/vagrant/config/vm.rb +115 -56
  87. data/lib/vagrant/config/vm/provisioner.rb +16 -20
  88. data/lib/vagrant/config/vm/sub_vm.rb +1 -1
  89. data/lib/vagrant/data_store.rb +23 -15
  90. data/lib/vagrant/downloaders/base.rb +7 -5
  91. data/lib/vagrant/downloaders/file.rb +4 -4
  92. data/lib/vagrant/downloaders/http.rb +4 -5
  93. data/lib/vagrant/driver.rb +7 -0
  94. data/lib/vagrant/driver/virtualbox.rb +121 -0
  95. data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
  96. data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
  97. data/lib/vagrant/driver/virtualbox_base.rb +284 -0
  98. data/lib/vagrant/environment.rb +221 -240
  99. data/lib/vagrant/errors.rb +74 -25
  100. data/lib/vagrant/guest.rb +16 -0
  101. data/lib/vagrant/guest/arch.rb +48 -0
  102. data/lib/vagrant/{systems → guest}/base.rb +30 -18
  103. data/lib/vagrant/guest/debian.rb +61 -0
  104. data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
  105. data/lib/vagrant/guest/gentoo.rb +32 -0
  106. data/lib/vagrant/guest/linux.rb +78 -0
  107. data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
  108. data/lib/vagrant/guest/linux/error.rb +9 -0
  109. data/lib/vagrant/guest/redhat.rb +66 -0
  110. data/lib/vagrant/guest/solaris.rb +114 -0
  111. data/lib/vagrant/{systems → guest}/suse.rb +2 -2
  112. data/lib/vagrant/guest/ubuntu.rb +23 -0
  113. data/lib/vagrant/hosts.rb +23 -6
  114. data/lib/vagrant/hosts/arch.rb +7 -3
  115. data/lib/vagrant/hosts/base.rb +36 -46
  116. data/lib/vagrant/hosts/bsd.rb +53 -16
  117. data/lib/vagrant/hosts/fedora.rb +14 -0
  118. data/lib/vagrant/hosts/freebsd.rb +6 -36
  119. data/lib/vagrant/hosts/linux.rb +45 -20
  120. data/lib/vagrant/hosts/windows.rb +16 -0
  121. data/lib/vagrant/provisioners.rb +10 -7
  122. data/lib/vagrant/provisioners/base.rb +11 -34
  123. data/lib/vagrant/provisioners/chef.rb +30 -26
  124. data/lib/vagrant/provisioners/chef_client.rb +37 -23
  125. data/lib/vagrant/provisioners/chef_solo.rb +61 -16
  126. data/lib/vagrant/provisioners/puppet.rb +70 -38
  127. data/lib/vagrant/provisioners/puppet_server.rb +12 -13
  128. data/lib/vagrant/provisioners/shell.rb +24 -24
  129. data/lib/vagrant/registry.rb +49 -0
  130. data/lib/vagrant/ssh.rb +82 -153
  131. data/lib/vagrant/ui.rb +118 -50
  132. data/lib/vagrant/util/busy.rb +1 -1
  133. data/lib/vagrant/util/file_mode.rb +12 -0
  134. data/lib/vagrant/util/network_ip.rb +28 -0
  135. data/lib/vagrant/util/platform.rb +1 -0
  136. data/lib/vagrant/util/subprocess.rb +227 -0
  137. data/lib/vagrant/version.rb +1 -1
  138. data/lib/vagrant/vm.rb +111 -97
  139. data/tasks/acceptance.rake +3 -3
  140. data/tasks/test.rake +7 -2
  141. data/templates/commands/init/Vagrantfile.erb +11 -4
  142. data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
  143. data/templates/guests/arch/network_dhcp.erb +7 -0
  144. data/templates/guests/arch/network_static.erb +7 -0
  145. data/templates/guests/debian/network_dhcp.erb +6 -0
  146. data/templates/guests/debian/network_static.erb +7 -0
  147. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  148. data/templates/guests/gentoo/network_static.erb +4 -0
  149. data/templates/guests/redhat/network_dhcp.erb +6 -0
  150. data/templates/guests/redhat/network_static.erb +7 -0
  151. data/templates/locales/en.yml +241 -122
  152. data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
  153. data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
  154. data/test/acceptance/base.rb +10 -10
  155. data/test/acceptance/box_test.rb +28 -6
  156. data/test/acceptance/destroy_test.rb +1 -1
  157. data/test/acceptance/halt_test.rb +4 -4
  158. data/test/acceptance/init_test.rb +3 -3
  159. data/test/acceptance/networking/host_only_test.rb +37 -0
  160. data/test/acceptance/networking/port_forward_test.rb +125 -0
  161. data/test/acceptance/package_test.rb +46 -0
  162. data/test/acceptance/provisioning/basic_test.rb +61 -0
  163. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  164. data/test/acceptance/provisioning/shell_test.rb +53 -0
  165. data/test/acceptance/resume_test.rb +1 -1
  166. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  167. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  168. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  169. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  170. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  171. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  172. data/test/acceptance/ssh_test.rb +7 -2
  173. data/test/acceptance/support/config.rb +1 -1
  174. data/test/acceptance/support/isolated_environment.rb +41 -150
  175. data/test/acceptance/support/matchers/match_output.rb +1 -1
  176. data/test/acceptance/support/matchers/succeed.rb +14 -0
  177. data/test/acceptance/support/network_tests.rb +29 -0
  178. data/test/acceptance/support/output.rb +9 -1
  179. data/test/acceptance/support/shared/base_context.rb +16 -9
  180. data/test/acceptance/support/shared/command_examples.rb +4 -4
  181. data/test/acceptance/suspend_test.rb +1 -1
  182. data/test/acceptance/up_basic_test.rb +26 -7
  183. data/test/acceptance/up_with_box_url.rb +1 -1
  184. data/test/acceptance/vagrant_test.rb +1 -1
  185. data/test/acceptance/version_test.rb +0 -5
  186. data/test/support/isolated_environment.rb +46 -0
  187. data/test/{acceptance/support → support}/tempdir.rb +0 -0
  188. data/test/unit/base.rb +21 -0
  189. data/test/unit/support/isolated_environment.rb +39 -0
  190. data/test/unit/support/shared/base_context.rb +30 -0
  191. data/test/unit/vagrant/action/builder_test.rb +126 -177
  192. data/test/unit/vagrant/action/environment_test.rb +10 -21
  193. data/test/unit/vagrant/action/runner_test.rb +65 -0
  194. data/test/unit/vagrant/action/warden_test.rb +64 -97
  195. data/test/unit/vagrant/box_collection_test.rb +44 -33
  196. data/test/unit/vagrant/box_test.rb +25 -65
  197. data/test/unit/vagrant/command/base_test.rb +141 -14
  198. data/test/unit/vagrant/config/base_test.rb +16 -43
  199. data/test/unit/vagrant/config/loader_test.rb +79 -0
  200. data/test/unit/vagrant/config/top_test.rb +69 -0
  201. data/test/unit/vagrant/config/vm_test.rb +62 -47
  202. data/test/unit/vagrant/config_test.rb +16 -151
  203. data/test/unit/vagrant/data_store_test.rb +43 -61
  204. data/test/unit/vagrant/downloaders/base_test.rb +12 -22
  205. data/test/unit/vagrant/downloaders/file_test.rb +58 -31
  206. data/test/unit/vagrant/downloaders/http_test.rb +12 -86
  207. data/test/unit/vagrant/environment_test.rb +107 -536
  208. data/test/unit/vagrant/hosts_test.rb +36 -0
  209. data/test/unit/vagrant/registry_test.rb +56 -0
  210. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  211. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
  212. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  213. data/test/unit/vagrant/util/retryable_test.rb +90 -34
  214. data/test/unit/vagrant_test.rb +27 -0
  215. data/test/{unit → unit_legacy}/locales/en.yml +0 -0
  216. data/test/{unit → unit_legacy}/test_helper.rb +0 -0
  217. data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
  218. data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
  219. data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
  220. data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
  221. data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
  222. data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
  223. data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
  224. data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
  225. data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
  226. data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
  227. data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
  228. data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
  229. data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
  230. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
  231. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
  232. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
  233. data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
  234. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
  235. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
  236. data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
  237. data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
  238. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
  239. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
  240. data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
  241. data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
  242. data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
  243. data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
  244. data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
  245. data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
  246. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
  247. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
  248. data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
  249. data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
  250. data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
  251. data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
  252. data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
  253. data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
  254. data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
  255. data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
  256. data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
  257. data/test/unit_legacy/vagrant/box_test.rb +74 -0
  258. data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
  259. data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
  260. data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
  261. data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
  262. data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
  263. data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
  264. data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
  265. data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
  266. data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
  267. data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
  268. data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
  269. data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
  270. data/test/unit_legacy/vagrant/config_test.rb +148 -0
  271. data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
  272. data/test/unit_legacy/vagrant/environment_test.rb +539 -0
  273. data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
  274. data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
  275. data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
  276. data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
  277. data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
  278. data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
  279. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
  280. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
  281. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
  282. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
  283. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
  284. data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
  285. data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
  286. data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
  287. data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
  288. data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
  289. data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
  290. data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
  291. data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
  292. data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
  293. data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
  294. data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
  295. data/vagrant.gemspec +7 -9
  296. metadata +214 -216
  297. data/keys/vagrant.ppk +0 -26
  298. data/lib/vagrant/action/box.rb +0 -11
  299. data/lib/vagrant/action/env.rb +0 -7
  300. data/lib/vagrant/action/general.rb +0 -8
  301. data/lib/vagrant/action/vm.rb +0 -34
  302. data/lib/vagrant/action/vm/forward_ports_helpers.rb +0 -28
  303. data/lib/vagrant/action/vm/modify.rb +0 -37
  304. data/lib/vagrant/action/vm/nfs_helpers.rb +0 -11
  305. data/lib/vagrant/command/group_base.rb +0 -107
  306. data/lib/vagrant/command/helpers.rb +0 -33
  307. data/lib/vagrant/command/named_base.rb +0 -14
  308. data/lib/vagrant/command/upgrade_to_060.rb +0 -45
  309. data/lib/vagrant/command/version.rb +0 -13
  310. data/lib/vagrant/ssh/session.rb +0 -136
  311. data/lib/vagrant/systems.rb +0 -13
  312. data/lib/vagrant/systems/arch.rb +0 -34
  313. data/lib/vagrant/systems/debian.rb +0 -36
  314. data/lib/vagrant/systems/gentoo.rb +0 -27
  315. data/lib/vagrant/systems/linux.rb +0 -82
  316. data/lib/vagrant/systems/linux/error.rb +0 -9
  317. data/lib/vagrant/systems/redhat.rb +0 -48
  318. data/lib/vagrant/systems/solaris.rb +0 -113
  319. data/lib/vagrant/systems/ubuntu.rb +0 -17
  320. data/templates/network_entry_arch.erb +0 -9
  321. data/templates/network_entry_debian.erb +0 -8
  322. data/templates/network_entry_gentoo.erb +0 -5
  323. data/templates/network_entry_redhat.erb +0 -9
  324. data/test/unit/vagrant/ui_test.rb +0 -29
@@ -1,13 +0,0 @@
1
- # These can't be autoloaded because they have to register functionality
2
- # with Vagrant core.
3
- require 'vagrant/systems/base'
4
- require 'vagrant/systems/freebsd'
5
- require 'vagrant/systems/linux'
6
- require 'vagrant/systems/solaris'
7
-
8
- require 'vagrant/systems/debian'
9
- require 'vagrant/systems/gentoo'
10
- require 'vagrant/systems/redhat'
11
- require 'vagrant/systems/suse'
12
- require 'vagrant/systems/ubuntu'
13
- require 'vagrant/systems/arch'
@@ -1,34 +0,0 @@
1
- module Vagrant
2
- module Systems
3
- class Arch < Linux
4
- def change_host_name(name)
5
- vm.ssh.execute do |ssh|
6
- # Only do this if the hostname is not already set
7
- if !ssh.test?("sudo hostname | grep '#{name}'")
8
- ssh.exec!("sudo sed -i 's/\\(HOSTNAME=\\).*/\\1#{name}/' /etc/rc.conf")
9
- ssh.exec!("sudo hostname #{name}")
10
- ssh.exec!("sudo sed -i 's@^\\(127[.]0[.]0[.]1[[:space:]]\\+\\)@\\1#{name} @' /etc/hosts")
11
- end
12
- end
13
- end
14
-
15
- def prepare_host_only_network(net_options=nil)
16
- vm.ssh.execute do |ssh|
17
- ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/rc.conf > /tmp/vagrant-network-interfaces")
18
- ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-interfaces > /etc/rc.conf'")
19
- end
20
- end
21
-
22
- def enable_host_only_network(net_options)
23
- entry = TemplateRenderer.render('network_entry_arch', :net_options => net_options)
24
- vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
25
-
26
- vm.ssh.execute do |ssh|
27
- ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-entry >> /etc/rc.conf'")
28
- ssh.exec!("sudo /etc/rc.d/network restart")
29
- ssh.exec!("sudo su -c 'dhcpcd -k eth0 && dhcpcd eth0 & sleep 3'")
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,36 +0,0 @@
1
- module Vagrant
2
- module Systems
3
- class Debian < Linux
4
- def prepare_host_only_network(net_options=nil)
5
- # Remove any previous host only network additions to the
6
- # interface file.
7
- vm.ssh.execute do |ssh|
8
- # Clear out any previous entries
9
- ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces")
10
- ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-interfaces > /etc/network/interfaces'")
11
- end
12
- end
13
-
14
- def enable_host_only_network(net_options)
15
- entry = TemplateRenderer.render('network_entry_debian', :net_options => net_options)
16
- vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
17
-
18
- vm.ssh.execute do |ssh|
19
- ssh.exec!("sudo /sbin/ifdown eth#{net_options[:adapter]} 2> /dev/null")
20
- ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-entry >> /etc/network/interfaces'")
21
- ssh.exec!("sudo /sbin/ifup eth#{net_options[:adapter]}")
22
- end
23
- end
24
-
25
- def change_host_name(name)
26
- vm.ssh.execute do |ssh|
27
- if !ssh.test?("sudo hostname | grep '#{name}'")
28
- ssh.exec!("sudo sed -i 's@^\\(127[.]0[.]1[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
29
- ssh.exec!("sudo sed -i 's/.*$/#{name}/' /etc/hostname")
30
- ssh.exec!("sudo hostname -F /etc/hostname")
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,27 +0,0 @@
1
- module Vagrant
2
- module Systems
3
- class Gentoo < Linux
4
- def prepare_host_only_network(net_options=nil)
5
- # Remove any previous host only network additions to the
6
- # interface file.
7
- vm.ssh.execute do |ssh|
8
- # Clear out any previous entries
9
- ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/conf.d/net > /tmp/vagrant-network-interfaces")
10
- ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-interfaces > /etc/conf.d/net'")
11
- end
12
- end
13
-
14
- def enable_host_only_network(net_options)
15
- entry = TemplateRenderer.render('network_entry_gentoo', :net_options => net_options)
16
- vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
17
-
18
- vm.ssh.execute do |ssh|
19
- ssh.exec!("sudo ln -fs /etc/init.d/net.lo /etc/init.d/net.eth#{net_options[:adapter]}")
20
- ssh.exec!("sudo /etc/init.d/net.eth#{net_options[:adapter]} stop 2> /dev/null")
21
- ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-entry >> /etc/conf.d/net'")
22
- ssh.exec!("sudo /etc/init.d/net.eth#{net_options[:adapter]} start")
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,82 +0,0 @@
1
- require 'vagrant/systems/linux/error'
2
- require 'vagrant/systems/linux/config'
3
-
4
- module Vagrant
5
- module Systems
6
- class Linux < Base
7
- def distro_dispatch
8
- vm.ssh.execute do |ssh|
9
- if ssh.test?("cat /etc/debian_version")
10
- return :debian if ssh.test?("cat /proc/version | grep 'Debian'")
11
- return :ubuntu if ssh.test?("cat /proc/version | grep 'Ubuntu'")
12
- end
13
-
14
- return :gentoo if ssh.test?("cat /etc/gentoo-release")
15
- return :redhat if ssh.test?("cat /etc/redhat-release")
16
- return :suse if ssh.test?("cat /etc/SuSE-release")
17
- return :arch if ssh.test?("cat /etc/arch-release")
18
- end
19
-
20
- # Can't detect the distro, assume vanilla linux
21
- nil
22
- end
23
-
24
- def halt
25
- vm.env.ui.info I18n.t("vagrant.systems.linux.attempting_halt")
26
- vm.ssh.execute do |ssh|
27
- ssh.exec!("sudo halt")
28
- end
29
-
30
- # Wait until the VM's state is actually powered off. If this doesn't
31
- # occur within a reasonable amount of time (15 seconds by default),
32
- # then simply return and allow Vagrant to kill the machine.
33
- count = 0
34
- while vm.vm.state != :powered_off
35
- count += 1
36
-
37
- return if count >= vm.env.config.linux.halt_timeout
38
- sleep vm.env.config.linux.halt_check_interval
39
- end
40
- end
41
-
42
- def mount_shared_folder(ssh, name, guestpath, owner, group)
43
- ssh.exec!("sudo mkdir -p #{guestpath}")
44
- mount_folder(ssh, name, guestpath, owner, group)
45
- ssh.exec!("sudo chown `id -u #{owner}`:`id -g #{group}` #{guestpath}")
46
- end
47
-
48
- def mount_nfs(ip, folders)
49
- # TODO: Maybe check for nfs support on the guest, since its often
50
- # not installed by default
51
- folders.each do |name, opts|
52
- vm.ssh.execute do |ssh|
53
- ssh.exec!("sudo mkdir -p #{opts[:guestpath]}")
54
- ssh.exec!("sudo mount #{ip}:'#{opts[:hostpath]}' #{opts[:guestpath]}", :_error_class => LinuxError, :_key => :mount_nfs_fail)
55
- end
56
- end
57
- end
58
-
59
- #-------------------------------------------------------------------
60
- # "Private" methods which assist above methods
61
- #-------------------------------------------------------------------
62
- def mount_folder(ssh, name, guestpath, owner, group, sleeptime=5)
63
- # Determine the permission string to attach to the mount command
64
- options = "-o uid=`id -u #{owner}`,gid=`id -g #{group}`"
65
-
66
- attempts = 0
67
- while true
68
- result = ssh.exec!("sudo mount -t vboxsf #{options} #{name} #{guestpath}") do |ch, type, data|
69
- # net/ssh returns the value in ch[:result] (based on looking at source)
70
- ch[:result] = !!(type == :stderr && data =~ /No such device/i)
71
- end
72
-
73
- break unless result
74
-
75
- attempts += 1
76
- raise LinuxError, :mount_fail if attempts >= 10
77
- sleep sleeptime
78
- end
79
- end
80
- end
81
- end
82
- end
@@ -1,9 +0,0 @@
1
- module Vagrant
2
- module Systems
3
- class Linux < Vagrant::Systems::Base
4
- class LinuxError < Errors::VagrantError
5
- error_namespace("vagrant.systems.linux")
6
- end
7
- end
8
- end
9
- end
@@ -1,48 +0,0 @@
1
- module Vagrant
2
- module Systems
3
- class Redhat < Linux
4
- def prepare_host_only_network(net_options)
5
- # Remove any previous host only network additions to the
6
- # interface file.
7
- vm.ssh.execute do |ssh|
8
- # Clear out any previous entries
9
- ssh.exec!("sudo touch #{network_scripts_dir}/ifcfg-eth#{net_options[:adapter]}")
10
- ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' #{network_scripts_dir}/ifcfg-eth#{net_options[:adapter]} > /tmp/vagrant-ifcfg-eth#{net_options[:adapter]}")
11
- ssh.exec!("sudo su -c 'cat /tmp/vagrant-ifcfg-eth#{net_options[:adapter]} > #{network_scripts_dir}/ifcfg-eth#{net_options[:adapter]}'")
12
- end
13
- end
14
-
15
- def enable_host_only_network(net_options)
16
- entry = TemplateRenderer.render('network_entry_redhat', :net_options => net_options)
17
-
18
- vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
19
-
20
- vm.ssh.execute do |ssh|
21
- interface_up = ssh.test?("/sbin/ifconfig eth#{net_options[:adapter]} | grep 'inet addr:'")
22
- ssh.exec!("sudo /sbin/ifdown eth#{net_options[:adapter]} 2> /dev/null") if interface_up
23
- ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-entry >> #{network_scripts_dir}/ifcfg-eth#{net_options[:adapter]}'")
24
- ssh.exec!("sudo /sbin/ifup eth#{net_options[:adapter]}")
25
- end
26
- end
27
-
28
- # The path to the directory with the network configuration scripts.
29
- # This is pulled out into its own directory since there are other
30
- # operationg systems (SuSE) which behave similarly but with a different
31
- # path to the network scripts.
32
- def network_scripts_dir
33
- '/etc/sysconfig/network-scripts/'
34
- end
35
-
36
- def change_host_name(name)
37
- vm.ssh.execute do |ssh|
38
- # Only do this if the hostname is not already set
39
- if !ssh.test?("sudo hostname | grep '#{name}'")
40
- ssh.exec!("sudo sed -i 's/\\(HOSTNAME=\\).*/\\1#{name}/' /etc/sysconfig/network")
41
- ssh.exec!("sudo hostname #{name}")
42
- ssh.exec!("sudo sed -i 's@^\\(127[.]0[.]0[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,113 +0,0 @@
1
- module Vagrant
2
- module Systems
3
- # A general Vagrant system implementation for "solaris".
4
- #
5
- # Contributed by Blake Irvin <b.irvin@modcloth.com>
6
- class Solaris < Base
7
- # A custom config class which will be made accessible via `config.solaris`
8
- # This is not necessary for all system implementers, of course. However,
9
- # generally, Vagrant tries to make almost every aspect of its execution
10
- # configurable, and this assists that goal.
11
- class SolarisConfig < Vagrant::Config::Base
12
- configures :solaris
13
-
14
- attr_accessor :halt_timeout
15
- attr_accessor :halt_check_interval
16
- # This sets the command to use to execute items as a superuser. sudo is default
17
- attr_accessor :suexec_cmd
18
- attr_accessor :device
19
-
20
- def initialize
21
- @halt_timeout = 30
22
- @halt_check_interval = 1
23
- @suexec_cmd = 'sudo'
24
- @device = "e1000g"
25
- end
26
- end
27
-
28
- # Here for whenever it may be used.
29
- class SolarisError < Errors::VagrantError
30
- error_namespace("vagrant.systems.solaris")
31
- end
32
-
33
- def prepare_host_only_network(net_options=nil)
34
- end
35
-
36
- def enable_host_only_network(net_options)
37
- device = "#{vm.env.config.solaris.device}#{net_options[:adapter]}"
38
- su_cmd = vm.env.config.solaris.suexec_cmd
39
- ifconfig_cmd = "#{su_cmd} /sbin/ifconfig #{device}"
40
- vm.ssh.execute do |ssh|
41
- ssh.exec!("#{ifconfig_cmd} plumb")
42
- ssh.exec!("#{ifconfig_cmd} inet #{net_options[:ip]} netmask #{net_options[:netmask]}")
43
- ssh.exec!("#{ifconfig_cmd} up")
44
- ssh.exec!("#{su_cmd} sh -c \"echo '#{net_options[:ip]}' > /etc/hostname.#{device}\"")
45
- end
46
- end
47
-
48
- def change_host_name(name)
49
- su_cmd = vm.env.config.solaris.suexec_cmd
50
- vm.ssh.execute do |ssh|
51
- # Only do this if the hostname is not already set
52
- if !ssh.test?("#{su_cmd} hostname | grep '#{name}'")
53
- ssh.exec!("#{su_cmd} sh -c \"echo '#{name}' > /etc/nodename\"")
54
- ssh.exec!("#{su_cmd} uname -S #{name}")
55
- end
56
- end
57
- end
58
-
59
-
60
- # There should be an exception raised if the line
61
- #
62
- # vagrant::::profiles=Primary Administrator
63
- #
64
- # does not exist in /etc/user_attr. TODO
65
- def halt
66
- vm.env.ui.info I18n.t("vagrant.systems.solaris.attempting_halt")
67
- vm.ssh.execute do |ssh|
68
- # Wait until the VM's state is actually powered off. If this doesn't
69
- # occur within a reasonable amount of time (15 seconds by default),
70
- # then simply return and allow Vagrant to kill the machine.
71
- count = 0
72
- last_error = nil
73
- while vm.vm.state != :powered_off
74
- begin
75
- ssh.exec!("#{vm.env.config.solaris.suexec_cmd} /usr/sbin/poweroff")
76
- rescue IOError => e
77
- # Save the last error; if it's not shutdown in a reasonable amount
78
- # of attempts we will re-raise the error so it's not hidden for
79
- # all time
80
- last_error = e
81
- end
82
-
83
- count += 1
84
- if count >= vm.env.config.solaris.halt_timeout
85
- # Check for last error and re-raise it
86
- if last_error != nil
87
- raise last_error
88
- else
89
- # Otherwise, just return
90
- return
91
- end
92
- end
93
-
94
- # Still opportunities remaining; sleep and loop
95
- sleep vm.env.config.solaris.halt_check_interval
96
- end # while
97
- end # do
98
- end
99
-
100
- def mount_shared_folder(ssh, name, guestpath, owner, group)
101
- # Create the shared folder
102
- ssh.exec!("#{vm.env.config.solaris.suexec_cmd} mkdir -p #{guestpath}")
103
-
104
- # Mount the folder with the proper owner/group
105
- options = "-o uid=`id -u #{owner}`,gid=`id -g #{group}`"
106
- ssh.exec!("#{vm.env.config.solaris.suexec_cmd} /sbin/mount -F vboxfs #{options} #{name} #{guestpath}")
107
-
108
- # chown the folder to the proper owner/group
109
- ssh.exec!("#{vm.env.config.solaris.suexec_cmd} chown `id -u #{owner}`:`id -g #{group}` #{guestpath}")
110
- end
111
- end
112
- end
113
- end
@@ -1,17 +0,0 @@
1
- require 'vagrant/systems/debian'
2
-
3
- module Vagrant
4
- module Systems
5
- class Ubuntu < Debian
6
- def change_host_name(name)
7
- vm.ssh.execute do |ssh|
8
- if !ssh.test?("sudo hostname | grep '#{name}'")
9
- ssh.exec!("sudo sed -i 's/.*$/#{name}/' /etc/hostname")
10
- ssh.exec!("sudo sed -i 's@^\\(127[.]0[.]1[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
11
- ssh.exec!("sudo service hostname start")
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,9 +0,0 @@
1
-
2
- #VAGRANT-BEGIN
3
- # The contents below are automatically generated by Vagrant.
4
- # Please do not modify any of these contents.
5
- interface=eth<%= net_options[:adapter] %>
6
- address=<%= net_options[:ip]%>
7
- netmask=<%= net_options[:netmask] %>
8
- gateway=
9
- #VAGRANT-END
@@ -1,8 +0,0 @@
1
- #VAGRANT-BEGIN
2
- # The contents below are automatically generated by Vagrant.
3
- # Please do not modify any of these contents.
4
- auto eth<%= net_options[:adapter] %>
5
- iface eth<%= net_options[:adapter] %> inet static
6
- address <%= net_options[:ip] %>
7
- netmask <%= net_options[:netmask] %>
8
- #VAGRANT-END
@@ -1,5 +0,0 @@
1
- #VAGRANT-BEGIN
2
- # The contents below are automatically generated by Vagrant.
3
- # Please do not modify any of these contents.
4
- config_eth<%= net_options[:adapter] %>=("<%= net_options[:ip] %> netmask <%= net_options[:netmask] %>")
5
- #VAGRANT-END
@@ -1,9 +0,0 @@
1
- #VAGRANT-BEGIN
2
- # The contents below are automatically generated by Vagrant.
3
- # Please do not modify any of these contents.
4
- BOOTPROTO=static
5
- DHCPCLASS=
6
- IPADDR=<%= net_options[:ip] %>
7
- NETMASK=<%= net_options[:netmask] %>
8
- DEVICE=eth<%= net_options[:adapter] %>
9
- #VAGRANT-END
@@ -1,29 +0,0 @@
1
- require "test_helper"
2
-
3
- class ShellUITest < Test::Unit::TestCase
4
- setup do
5
- @klass = Vagrant::UI::Shell
6
- @shell = mock("shell")
7
- @instance = @klass.new(vagrant_env, @shell)
8
- end
9
-
10
- context "prefixing with resource" do
11
- should "prefix message with environment resource" do
12
- @shell.expects(:say).with() do |message, color|
13
- assert message =~ /\[#{@instance.env.resource}\]/
14
- true
15
- end
16
-
17
- @instance.info("vagrant.errors.test_key")
18
- end
19
-
20
- should "not prefix the message if given false" do
21
- @shell.expects(:say).with() do |message, color|
22
- assert message !~ /\[#{@instance.env.resource}\]/
23
- true
24
- end
25
-
26
- @instance.info("vagrant.errors.test_key", :prefix => false)
27
- end
28
- end
29
- end