vagrant-skytap 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (327) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/vagrant-skytap/action/add_vm_to_environment.rb +4 -4
  4. data/lib/vagrant-skytap/action/compose_environment.rb +131 -0
  5. data/lib/vagrant-skytap/action/create_environment.rb +3 -1
  6. data/lib/vagrant-skytap/action/initialize_api_client.rb +6 -5
  7. data/lib/vagrant-skytap/action/set_up_vm.rb +3 -1
  8. data/lib/vagrant-skytap/action/store_extra_data.rb +4 -2
  9. data/lib/vagrant-skytap/action.rb +4 -17
  10. data/lib/vagrant-skytap/api/environment.rb +53 -25
  11. data/lib/vagrant-skytap/api/vm.rb +9 -3
  12. data/lib/vagrant-skytap/command/up.rb +46 -30
  13. data/lib/vagrant-skytap/errors.rb +4 -0
  14. data/lib/vagrant-skytap/version.rb +1 -1
  15. data/locales/en.yml +5 -1
  16. data/spec/unit/actions/compose_environment_spec.rb +101 -0
  17. data/spec/unit/environment_spec.rb +26 -45
  18. data/spec/unit/support/shared/skytap_context.rb +5 -0
  19. data/vagrant-skytap.gemspec +3 -3
  20. metadata +9 -311
  21. data/.byebug_history +0 -256
  22. data/.project +0 -11
  23. data/_patches-20160112/0 +0 -388
  24. data/_patches-20160112/1 +0 -82
  25. data/_patches-20160112/2 +0 -239
  26. data/_patches-20160112/COMPLETED-ABOVE-THIS-LINE +0 -4
  27. data/_patches-20160112/COMPLETED-BELOW-THIS-LINE +0 -4
  28. data/_patches-20160112/CR-ABOVE-THIS-LINE +0 -4
  29. data/_patches-20160112/CR-BELOW-THIS-LINE +0 -4
  30. data/_patches-20160112/WIP-ABOVE-THIS-LINE +0 -4
  31. data/_patches-20160112/WIP-BELOW-THIS-LINE +0 -4
  32. data/_patches-20160112/acceptance-test-runner +0 -29
  33. data/_patches-20160112/ansible-1 +0 -92
  34. data/_patches-20160112/cache-api-client-in-up +0 -40
  35. data/_patches-20160112/dead-code-in-actions +0 -44
  36. data/_patches-20160112/debug-changes +0 -42
  37. data/_patches-20160112/demo-rails-app +0 -1276
  38. data/_patches-20160112/eng-10166-halt-spec +0 -40
  39. data/_patches-20160112/eng-10256 +0 -527
  40. data/_patches-20160112/eng-10256-2 +0 -162
  41. data/_patches-20160112/eng-10256-ubuntu-testing +0 -88
  42. data/_patches-20160112/eng-10269-test-stuff +0 -87
  43. data/_patches-20160112/eng-10269-wtf +0 -119
  44. data/_patches-20160112/eng-10369 +0 -143
  45. data/_patches-20160112/eng-10369-tmp +0 -60
  46. data/_patches-20160112/eng-10919 +0 -56
  47. data/_patches-20160112/eng-11177-fix-actions-requires +0 -44
  48. data/_patches-20160112/eng-11442 +0 -4
  49. data/_patches-20160112/eng-11616 +0 -403
  50. data/_patches-20160112/eng-11616-2 +0 -67
  51. data/_patches-20160112/eng-11616-actual +0 -184
  52. data/_patches-20160112/eng-11625a +0 -4
  53. data/_patches-20160112/eng-11711 +0 -85
  54. data/_patches-20160112/eng-12232-command-spec +0 -236
  55. data/_patches-20160112/eng-12235 +0 -83
  56. data/_patches-20160112/eng-12235-override-refactor +0 -140
  57. data/_patches-20160112/eng-12240 +0 -103
  58. data/_patches-20160112/eng-12249 +0 -40
  59. data/_patches-20160112/eng-12301 +0 -50
  60. data/_patches-20160112/eng-12843 +0 -95
  61. data/_patches-20160112/env-source +0 -112
  62. data/_patches-20160112/frickin-vagrant-spec +0 -163
  63. data/_patches-20160112/gem-pre-version +0 -14
  64. data/_patches-20160112/gems-old +0 -9
  65. data/_patches-20160112/googles-specs +0 -713
  66. data/_patches-20160112/local-configs-ignore +0 -61
  67. data/_patches-20160112/misc +0 -79
  68. data/_patches-20160112/network-unreachable +0 -31
  69. data/_patches-20160112/new-boxfile +0 -288
  70. data/_patches-20160112/parallelization-maybe +0 -198
  71. data/_patches-20160112/read-state +0 -23
  72. data/_patches-20160112/refactor-to-use-public_address-cap +0 -25
  73. data/_patches-20160112/series +0 -60
  74. data/_patches-20160112/status +0 -12
  75. data/_patches-20160112/test-move-env-data +0 -231
  76. data/_patches-20160112/test-vagrantfile-vm1 +0 -167
  77. data/_patches-20160112/the_version_in_0.1.13.pre1 +0 -598
  78. data/_patches-20160112/vagrant-spec-mock-api +0 -137
  79. data/_patches-20160112/vagrant-vmware-plugin +0 -233
  80. data/_patches-20160112/vagrantfile +0 -403
  81. data/_patches-20160112/vagrantfile-for-acceptance-tests +0 -29
  82. data/_patches-20160112/vagrantfile-for-nick +0 -95
  83. data/_patches-20160112/vagrantfiles-to-forget-what-they-are-for +0 -134
  84. data/_patches-20160112/vm-vanished +0 -42
  85. data/_patches-20160112a/01 +0 -148
  86. data/_patches-20160112a/2 +0 -239
  87. data/_patches-20160112a/COMPLETED-ABOVE-THIS-LINE +0 -4
  88. data/_patches-20160112a/COMPLETED-BELOW-THIS-LINE +0 -4
  89. data/_patches-20160112a/CR-ABOVE-THIS-LINE +0 -4
  90. data/_patches-20160112a/CR-BELOW-THIS-LINE +0 -4
  91. data/_patches-20160112a/WIP-ABOVE-THIS-LINE +0 -4
  92. data/_patches-20160112a/WIP-BELOW-THIS-LINE +0 -4
  93. data/_patches-20160112a/acceptance-test-runner +0 -29
  94. data/_patches-20160112a/ansible-1 +0 -92
  95. data/_patches-20160112a/cache-api-client-in-up +0 -40
  96. data/_patches-20160112a/dead-code-in-actions +0 -44
  97. data/_patches-20160112a/debug-changes +0 -42
  98. data/_patches-20160112a/demo-rails-app +0 -1276
  99. data/_patches-20160112a/eng-10166-halt-spec +0 -40
  100. data/_patches-20160112a/eng-10256-ubuntu-testing +0 -88
  101. data/_patches-20160112a/eng-10269-test-stuff +0 -87
  102. data/_patches-20160112a/eng-10269-wtf +0 -119
  103. data/_patches-20160112a/eng-10369 +0 -143
  104. data/_patches-20160112a/eng-10369-tmp +0 -60
  105. data/_patches-20160112a/eng-10919 +0 -56
  106. data/_patches-20160112a/eng-11177-fix-actions-requires +0 -44
  107. data/_patches-20160112a/eng-11442 +0 -4
  108. data/_patches-20160112a/eng-11616 +0 -403
  109. data/_patches-20160112a/eng-11616-2 +0 -67
  110. data/_patches-20160112a/eng-11616-actual +0 -184
  111. data/_patches-20160112a/eng-11625a +0 -4
  112. data/_patches-20160112a/eng-11711 +0 -85
  113. data/_patches-20160112a/eng-12232-command-spec +0 -236
  114. data/_patches-20160112a/eng-12235 +0 -83
  115. data/_patches-20160112a/eng-12235-override-refactor +0 -140
  116. data/_patches-20160112a/eng-12240 +0 -103
  117. data/_patches-20160112a/eng-12249 +0 -40
  118. data/_patches-20160112a/eng-12301 +0 -50
  119. data/_patches-20160112a/eng-12843 +0 -95
  120. data/_patches-20160112a/env-source +0 -112
  121. data/_patches-20160112a/frickin-vagrant-spec +0 -163
  122. data/_patches-20160112a/gem-pre-version +0 -14
  123. data/_patches-20160112a/gems-old +0 -9
  124. data/_patches-20160112a/googles-specs +0 -713
  125. data/_patches-20160112a/local-configs-ignore +0 -61
  126. data/_patches-20160112a/misc +0 -79
  127. data/_patches-20160112a/network-unreachable +0 -31
  128. data/_patches-20160112a/new-boxfile +0 -288
  129. data/_patches-20160112a/parallelization-maybe +0 -198
  130. data/_patches-20160112a/read-state +0 -23
  131. data/_patches-20160112a/refactor-to-use-public_address-cap +0 -25
  132. data/_patches-20160112a/series +0 -58
  133. data/_patches-20160112a/status +0 -14
  134. data/_patches-20160112a/test-move-env-data +0 -231
  135. data/_patches-20160112a/test-vagrantfile-vm1 +0 -167
  136. data/_patches-20160112a/the_version_in_0.1.13.pre1 +0 -612
  137. data/_patches-20160112a/then-copy-the-newer-files +0 -632
  138. data/_patches-20160112a/vagrant-spec-mock-api +0 -137
  139. data/_patches-20160112a/vagrant-vmware-plugin +0 -233
  140. data/_patches-20160112a/vagrantfile +0 -403
  141. data/_patches-20160112a/vagrantfile-for-acceptance-tests +0 -29
  142. data/_patches-20160112a/vagrantfile-for-nick +0 -95
  143. data/_patches-20160112a/vagrantfiles-to-forget-what-they-are-for +0 -134
  144. data/_patches-20160112a/vm-vanished +0 -42
  145. data/_patches-20160113/COMPLETED-ABOVE-THIS-LINE +0 -4
  146. data/_patches-20160113/COMPLETED-BELOW-THIS-LINE +0 -4
  147. data/_patches-20160113/CR-ABOVE-THIS-LINE +0 -4
  148. data/_patches-20160113/CR-BELOW-THIS-LINE +0 -4
  149. data/_patches-20160113/WIP-ABOVE-THIS-LINE +0 -4
  150. data/_patches-20160113/WIP-BELOW-THIS-LINE +0 -4
  151. data/_patches-20160113/acceptance-test-runner +0 -29
  152. data/_patches-20160113/ansible-1 +0 -92
  153. data/_patches-20160113/cache-api-client-in-up +0 -40
  154. data/_patches-20160113/dead-code-in-actions +0 -44
  155. data/_patches-20160113/debug-changes +0 -55
  156. data/_patches-20160113/demo-rails-app +0 -1276
  157. data/_patches-20160113/eng-10166-halt-spec +0 -40
  158. data/_patches-20160113/eng-10256 +0 -543
  159. data/_patches-20160113/eng-10256-ubuntu-testing +0 -88
  160. data/_patches-20160113/eng-10269-test-stuff +0 -87
  161. data/_patches-20160113/eng-10269-wtf +0 -119
  162. data/_patches-20160113/eng-10369 +0 -143
  163. data/_patches-20160113/eng-10369-tmp +0 -60
  164. data/_patches-20160113/eng-10919 +0 -56
  165. data/_patches-20160113/eng-11177-fix-actions-requires +0 -44
  166. data/_patches-20160113/eng-11442 +0 -4
  167. data/_patches-20160113/eng-11616 +0 -403
  168. data/_patches-20160113/eng-11616-2 +0 -67
  169. data/_patches-20160113/eng-11616-actual +0 -184
  170. data/_patches-20160113/eng-11625a +0 -4
  171. data/_patches-20160113/eng-11711 +0 -85
  172. data/_patches-20160113/eng-12232-command-spec +0 -236
  173. data/_patches-20160113/eng-12235 +0 -83
  174. data/_patches-20160113/eng-12235-override-refactor +0 -140
  175. data/_patches-20160113/eng-12240 +0 -103
  176. data/_patches-20160113/eng-12249 +0 -40
  177. data/_patches-20160113/eng-12301 +0 -50
  178. data/_patches-20160113/eng-12720 +0 -47
  179. data/_patches-20160113/eng-12843 +0 -95
  180. data/_patches-20160113/env-source +0 -112
  181. data/_patches-20160113/frickin-vagrant-spec +0 -163
  182. data/_patches-20160113/gem-pre-version +0 -14
  183. data/_patches-20160113/gems-old +0 -9
  184. data/_patches-20160113/googles-specs +0 -713
  185. data/_patches-20160113/local-configs-ignore +0 -61
  186. data/_patches-20160113/misc +0 -79
  187. data/_patches-20160113/network-unreachable +0 -31
  188. data/_patches-20160113/new-boxfile +0 -288
  189. data/_patches-20160113/parallelization-maybe +0 -198
  190. data/_patches-20160113/read-state +0 -23
  191. data/_patches-20160113/refactor-to-use-public_address-cap +0 -25
  192. data/_patches-20160113/series +0 -56
  193. data/_patches-20160113/status +0 -14
  194. data/_patches-20160113/test-move-env-data +0 -231
  195. data/_patches-20160113/test-vagrantfile-vm1 +0 -167
  196. data/_patches-20160113/vagrant-spec-mock-api +0 -137
  197. data/_patches-20160113/vagrant-vmware-plugin +0 -233
  198. data/_patches-20160113/vagrantfile +0 -403
  199. data/_patches-20160113/vagrantfile-for-acceptance-tests +0 -29
  200. data/_patches-20160113/vagrantfile-for-nick +0 -95
  201. data/_patches-20160113/vagrantfiles-to-forget-what-they-are-for +0 -134
  202. data/_patches-20160113/vm-vanished +0 -42
  203. data/_patches-20160118/COMPLETED-ABOVE-THIS-LINE +0 -4
  204. data/_patches-20160118/COMPLETED-BELOW-THIS-LINE +0 -4
  205. data/_patches-20160118/CR-ABOVE-THIS-LINE +0 -4
  206. data/_patches-20160118/CR-BELOW-THIS-LINE +0 -4
  207. data/_patches-20160118/WIP-ABOVE-THIS-LINE +0 -4
  208. data/_patches-20160118/WIP-BELOW-THIS-LINE +0 -4
  209. data/_patches-20160118/acceptance-test-runner +0 -29
  210. data/_patches-20160118/ansible-1 +0 -92
  211. data/_patches-20160118/cache-api-client-in-up +0 -40
  212. data/_patches-20160118/dead-code-in-actions +0 -44
  213. data/_patches-20160118/debug-changes +0 -55
  214. data/_patches-20160118/demo-rails-app +0 -1276
  215. data/_patches-20160118/eng-10166-halt-spec +0 -40
  216. data/_patches-20160118/eng-10256 +0 -554
  217. data/_patches-20160118/eng-10256-cr +0 -314
  218. data/_patches-20160118/eng-10256-ubuntu-testing +0 -88
  219. data/_patches-20160118/eng-10269-test-stuff +0 -87
  220. data/_patches-20160118/eng-10269-wtf +0 -119
  221. data/_patches-20160118/eng-10369 +0 -143
  222. data/_patches-20160118/eng-10369-tmp +0 -60
  223. data/_patches-20160118/eng-10919 +0 -56
  224. data/_patches-20160118/eng-11177-fix-actions-requires +0 -44
  225. data/_patches-20160118/eng-11442 +0 -4
  226. data/_patches-20160118/eng-11616 +0 -403
  227. data/_patches-20160118/eng-11616-2 +0 -67
  228. data/_patches-20160118/eng-11616-actual +0 -184
  229. data/_patches-20160118/eng-11625a +0 -4
  230. data/_patches-20160118/eng-11711 +0 -85
  231. data/_patches-20160118/eng-12232-command-spec +0 -236
  232. data/_patches-20160118/eng-12235 +0 -83
  233. data/_patches-20160118/eng-12235-override-refactor +0 -140
  234. data/_patches-20160118/eng-12240 +0 -103
  235. data/_patches-20160118/eng-12249 +0 -40
  236. data/_patches-20160118/eng-12301 +0 -50
  237. data/_patches-20160118/eng-12720 +0 -74
  238. data/_patches-20160118/eng-12843 +0 -95
  239. data/_patches-20160118/eng-13040 +0 -291
  240. data/_patches-20160118/env-source +0 -112
  241. data/_patches-20160118/frickin-vagrant-spec +0 -163
  242. data/_patches-20160118/gem-pre-version +0 -14
  243. data/_patches-20160118/gems-old +0 -9
  244. data/_patches-20160118/googles-specs +0 -713
  245. data/_patches-20160118/local-configs-ignore +0 -61
  246. data/_patches-20160118/misc +0 -79
  247. data/_patches-20160118/network-unreachable +0 -31
  248. data/_patches-20160118/new-boxfile +0 -288
  249. data/_patches-20160118/parallelization-maybe +0 -198
  250. data/_patches-20160118/port-forwarding-processes +0 -87
  251. data/_patches-20160118/read-state +0 -23
  252. data/_patches-20160118/refactor-to-use-public_address-cap +0 -25
  253. data/_patches-20160118/series +0 -59
  254. data/_patches-20160118/status +0 -13
  255. data/_patches-20160118/test-move-env-data +0 -231
  256. data/_patches-20160118/test-vagrantfile-vm1 +0 -167
  257. data/_patches-20160118/vagrant-spec-mock-api +0 -137
  258. data/_patches-20160118/vagrant-vmware-plugin +0 -233
  259. data/_patches-20160118/vagrantfile +0 -403
  260. data/_patches-20160118/vagrantfile-for-acceptance-tests +0 -29
  261. data/_patches-20160118/vagrantfile-for-nick +0 -95
  262. data/_patches-20160118/vagrantfiles-to-forget-what-they-are-for +0 -134
  263. data/_patches-20160118/vm-vanished +0 -42
  264. data/_patches-20160118a/COMPLETED-ABOVE-THIS-LINE +0 -4
  265. data/_patches-20160118a/COMPLETED-BELOW-THIS-LINE +0 -4
  266. data/_patches-20160118a/CR-ABOVE-THIS-LINE +0 -4
  267. data/_patches-20160118a/CR-BELOW-THIS-LINE +0 -4
  268. data/_patches-20160118a/WIP-ABOVE-THIS-LINE +0 -4
  269. data/_patches-20160118a/WIP-BELOW-THIS-LINE +0 -4
  270. data/_patches-20160118a/acceptance-test-runner +0 -29
  271. data/_patches-20160118a/ansible-1 +0 -92
  272. data/_patches-20160118a/bar +0 -189
  273. data/_patches-20160118a/cache-api-client-in-up +0 -40
  274. data/_patches-20160118a/dead-code-in-actions +0 -44
  275. data/_patches-20160118a/debug-changes +0 -55
  276. data/_patches-20160118a/demo-rails-app +0 -1276
  277. data/_patches-20160118a/eng-10166-halt-spec +0 -40
  278. data/_patches-20160118a/eng-10256 +0 -554
  279. data/_patches-20160118a/eng-10256-cr +0 -314
  280. data/_patches-20160118a/eng-10256-ubuntu-testing +0 -88
  281. data/_patches-20160118a/eng-10269-test-stuff +0 -87
  282. data/_patches-20160118a/eng-10269-wtf +0 -119
  283. data/_patches-20160118a/eng-10369 +0 -143
  284. data/_patches-20160118a/eng-10369-tmp +0 -60
  285. data/_patches-20160118a/eng-10919 +0 -56
  286. data/_patches-20160118a/eng-11177-fix-actions-requires +0 -44
  287. data/_patches-20160118a/eng-11442 +0 -4
  288. data/_patches-20160118a/eng-11616 +0 -403
  289. data/_patches-20160118a/eng-11616-2 +0 -67
  290. data/_patches-20160118a/eng-11616-actual +0 -184
  291. data/_patches-20160118a/eng-11625a +0 -4
  292. data/_patches-20160118a/eng-11711 +0 -85
  293. data/_patches-20160118a/eng-12232-command-spec +0 -236
  294. data/_patches-20160118a/eng-12235 +0 -83
  295. data/_patches-20160118a/eng-12235-override-refactor +0 -140
  296. data/_patches-20160118a/eng-12240 +0 -103
  297. data/_patches-20160118a/eng-12249 +0 -40
  298. data/_patches-20160118a/eng-12301 +0 -50
  299. data/_patches-20160118a/eng-12720 +0 -74
  300. data/_patches-20160118a/eng-12843 +0 -95
  301. data/_patches-20160118a/eng-13040 +0 -291
  302. data/_patches-20160118a/env-source +0 -112
  303. data/_patches-20160118a/foo +0 -169
  304. data/_patches-20160118a/frickin-vagrant-spec +0 -163
  305. data/_patches-20160118a/gem-pre-version +0 -14
  306. data/_patches-20160118a/gems-old +0 -9
  307. data/_patches-20160118a/googles-specs +0 -713
  308. data/_patches-20160118a/guestport-madness +0 -59
  309. data/_patches-20160118a/local-configs-ignore +0 -61
  310. data/_patches-20160118a/misc +0 -79
  311. data/_patches-20160118a/network-unreachable +0 -31
  312. data/_patches-20160118a/new-boxfile +0 -288
  313. data/_patches-20160118a/parallelization-maybe +0 -198
  314. data/_patches-20160118a/port-forwarding-processes +0 -87
  315. data/_patches-20160118a/read-state +0 -23
  316. data/_patches-20160118a/refactor-to-use-public_address-cap +0 -25
  317. data/_patches-20160118a/series +0 -62
  318. data/_patches-20160118a/status +0 -14
  319. data/_patches-20160118a/test-move-env-data +0 -231
  320. data/_patches-20160118a/test-vagrantfile-vm1 +0 -167
  321. data/_patches-20160118a/vagrant-spec-mock-api +0 -137
  322. data/_patches-20160118a/vagrant-vmware-plugin +0 -233
  323. data/_patches-20160118a/vagrantfile +0 -403
  324. data/_patches-20160118a/vagrantfile-for-acceptance-tests +0 -29
  325. data/_patches-20160118a/vagrantfile-for-nick +0 -95
  326. data/_patches-20160118a/vagrantfiles-to-forget-what-they-are-for +0 -134
  327. data/_patches-20160118a/vm-vanished +0 -42
@@ -1,40 +0,0 @@
1
- # HG changeset patch
2
- # Parent 55c178c0f5096eedd87b19b31f647a9f3b37bec9
3
- diff -r 55c178c0f509 -r 1d887cdba67b spec/acceptance/provider/halt_spec.rb
4
- --- a/spec/acceptance/provider/halt_spec.rb Mon Oct 12 11:22:04 2015 -0700
5
- +++ b/spec/acceptance/provider/halt_spec.rb Mon Oct 12 11:22:13 2015 -0700
6
- @@ -1,3 +1,34 @@
7
- +# This tests that an instance can be halted correctly
8
- shared_examples 'provider/halt' do |provider, options|
9
- + if !options[:box]
10
- + raise ArgumentError,
11
- + "box option must be specified for provider: #{provider}"
12
- + end
13
-
14
- + include_context 'acceptance'
15
- +
16
- + before do
17
- + environment.skeleton('generic')
18
- + assert_execute('vagrant', 'box', 'add', 'basic', options[:box])
19
- + assert_execute('vagrant', 'up', "--provider=#{provider}")
20
- + end
21
- +
22
- + after do
23
- + assert_execute('vagrant', 'destroy', '--force')
24
- + end
25
- +
26
- + it 'should halt the machine and bring it back up' do
27
- + status("Test: machine can be halted")
28
- + halt_result = execute("vagrant", "halt")
29
- + expect(halt_result).to exit_with(0)
30
- +
31
- + status("Test: machine can be brought up after halt")
32
- + up_result = execute("vagrant", "up")
33
- + expect(up_result).to exit_with(0)
34
- +
35
- + status("Test: machine is running after up")
36
- + echo_result = execute("vagrant", "ssh", "-c", "echo foo")
37
- + expect(echo_result).to exit_with(0)
38
- + expect(echo_result.stdout).to match(/foo\n$/)
39
- + end
40
- end
@@ -1,554 +0,0 @@
1
- # HG changeset patch
2
- # Parent b669f28f24c6872c9a436d1673eea9be62f1f6b4
3
- # Parent b669f28f24c6872c9a436d1673eea9be62f1f6b4
4
- ENG-10256 port forwarding
5
-
6
- diff -r b669f28f24c6 lib/vagrant-skytap/action.rb
7
- --- a/lib/vagrant-skytap/action.rb Wed Jan 13 17:07:26 2016 -0800
8
- +++ b/lib/vagrant-skytap/action.rb Mon Jan 18 13:57:03 2016 -0800
9
- @@ -15,6 +15,7 @@
10
- when :missing_environment, :missing_vm, :no_vms
11
- b1.use MessageNotCreated
12
- else
13
- + b1.use ClearForwardedPorts
14
- b1.use StopVm
15
- end
16
- end
17
- @@ -30,6 +31,7 @@
18
- when :missing_environment, :missing_vm, :no_vms
19
- b1.use MessageNotCreated
20
- else
21
- + b1.use ClearForwardedPorts
22
- b1.use SuspendVm
23
- end
24
- end
25
- @@ -65,6 +67,7 @@
26
- end
27
- end
28
- end
29
- + b.use ClearForwardedPorts
30
- b.use PrepareNFSValidIds
31
- b.use SyncedFolderCleanup
32
- end
33
- @@ -251,6 +254,7 @@
34
- end
35
- end
36
- b.use WaitForCommunicator
37
- + b.use action_forward_ports
38
- end
39
- end
40
-
41
- @@ -281,15 +285,25 @@
42
- end
43
- end
44
-
45
- + def self.action_forward_ports
46
- + Vagrant::Action::Builder.new.tap do |b|
47
- + b.use ClearForwardedPorts
48
- + b.use ReadSSHInfo
49
- + b.use ForwardPorts
50
- + end
51
- + end
52
- +
53
- # The autoload farm
54
- action_root = Pathname.new(File.expand_path("../action", __FILE__))
55
- autoload :StoreExtraData, action_root.join("store_extra_data")
56
- autoload :AddVmToEnvironment, action_root.join("add_vm_to_environment")
57
- + autoload :ClearForwardedPorts, action_root.join("clear_forwarded_ports")
58
- autoload :CreateEnvironment, action_root.join("create_environment")
59
- autoload :DeleteEnvironment, action_root.join("delete_environment")
60
- autoload :DeleteVm, action_root.join("delete_vm")
61
- autoload :ExistenceCheck, action_root.join("existence_check")
62
- autoload :FetchEnvironment, action_root.join("fetch_environment")
63
- + autoload :ForwardPorts, action_root.join("forward_ports")
64
- autoload :InitializeAPIClient, action_root.join("initialize_api_client")
65
- autoload :InitialState, action_root.join("initial_state")
66
- autoload :IsParallelized, action_root.join("is_parallelized")
67
- diff -r b669f28f24c6 lib/vagrant-skytap/action/clear_forwarded_ports.rb
68
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
69
- +++ b/lib/vagrant-skytap/action/clear_forwarded_ports.rb Mon Jan 18 13:57:03 2016 -0800
70
- @@ -0,0 +1,18 @@
71
- +module VagrantPlugins
72
- + module Skytap
73
- + module Action
74
- + class ClearForwardedPorts
75
- + def initialize(app, env)
76
- + @app = app
77
- + end
78
- +
79
- + def call(env)
80
- + env[:ui].info I18n.t("vagrant.actions.vm.clear_forward_ports.deleting")
81
- + env[:host].capability(:clear_forwarded_ports, env)
82
- +
83
- + @app.call(env)
84
- + end
85
- + end
86
- + end
87
- + end
88
- +end
89
- diff -r b669f28f24c6 lib/vagrant-skytap/action/forward_ports.rb
90
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
91
- +++ b/lib/vagrant-skytap/action/forward_ports.rb Mon Jan 18 13:57:03 2016 -0800
92
- @@ -0,0 +1,50 @@
93
- +require 'vagrant-skytap/util/compile_forwarded_ports'
94
- +
95
- +module VagrantPlugins
96
- + module Skytap
97
- + module Action
98
- + class ForwardPorts
99
- + include Util::CompileForwardedPorts
100
- +
101
- + def initialize(app, env)
102
- + @app = app
103
- + end
104
- +
105
- + #--------------------------------------------------------------
106
- + # Execution
107
- + #--------------------------------------------------------------
108
- + def call(env)
109
- + @env = env
110
- +
111
- + # Get the ports we're forwarding
112
- + env[:forwarded_ports] ||= compile_forwarded_ports(env[:machine].config)
113
- +
114
- + # Warn if we're port forwarding to any privileged ports...
115
- + env[:forwarded_ports].each do |fp|
116
- + if fp.host_port <= 1024
117
- + env[:ui].warn I18n.t("vagrant.actions.vm.forward_ports.privileged_ports")
118
- + break
119
- + end
120
- + end
121
- +
122
- + env[:ui].output(I18n.t("vagrant.actions.vm.forward_ports.forwarding"))
123
- + forward_ports
124
- +
125
- + @app.call(env)
126
- + end
127
- +
128
- + def forward_ports
129
- + @env[:forwarded_ports].each do |fp|
130
- + unless fp.guest_port == 22 && fp.host_port == 2222
131
- + @env[:ui].detail(I18n.t("vagrant.actions.vm.forward_ports.forwarding_entry",
132
- + adapter: fp.adapter,
133
- + guest_port: fp.guest_port,
134
- + host_port: fp.host_port))
135
- + @env[:host].capability(:start_ssh_tunnel, fp, @env)
136
- + end
137
- + end
138
- + end
139
- + end
140
- + end
141
- + end
142
- +end
143
- diff -r b669f28f24c6 lib/vagrant-skytap/hosts/bsd/cap/ssh_tunnel.rb
144
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
145
- +++ b/lib/vagrant-skytap/hosts/bsd/cap/ssh_tunnel.rb Mon Jan 18 13:57:03 2016 -0800
146
- @@ -0,0 +1,15 @@
147
- +require "vagrant-skytap/hosts/common/cap/ssh_tunnel"
148
- +
149
- +module VagrantPlugins
150
- + module Skytap
151
- + module HostBSD
152
- + module Cap
153
- + class SSHTunnel < VagrantPlugins::Skytap::HostCommon::Cap::SSHTunnel
154
- + def self.create_logger
155
- + Log4r::Logger.new("vagrant::hosts::bsd")
156
- + end
157
- + end
158
- + end
159
- + end
160
- + end
161
- +end
162
- diff -r b669f28f24c6 lib/vagrant-skytap/hosts/common/cap/ssh_tunnel.rb
163
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
164
- +++ b/lib/vagrant-skytap/hosts/common/cap/ssh_tunnel.rb Mon Jan 18 13:57:03 2016 -0800
165
- @@ -0,0 +1,118 @@
166
- +require "pathname"
167
- +require "tmpdir"
168
- +require 'childprocess'
169
- +require "vagrant/util/subprocess"
170
- +require 'log4r'
171
- +require "vagrant/util/safe_chdir"
172
- +
173
- +module VagrantPlugins
174
- + module Skytap
175
- + module HostCommon
176
- + module Cap
177
- + class SSHTunnel
178
- + class << self
179
- + def create_logger
180
- + raise NotImplementedError
181
- + end
182
- +
183
- + def start_ssh_tunnel(env, fp, env_hash)
184
- + logger = create_logger
185
- + machine = env_hash[:machine]
186
- + pidfile = pidfile_name(fp)
187
- + pid = read_pid(machine.data_dir.join(pidfile))
188
- +
189
- + if pid && autossh_pid?(pid)
190
- + logger.info("An autossh process already exists with pid #{pid}.")
191
- + else
192
- + args = ssh_args(fp, env_hash)
193
- + vars = autossh_environment_variables(pidfile, env_hash)
194
- + args << {env: vars}
195
- + Vagrant::Util::Subprocess.execute("autossh", "-f", *args)
196
- + end
197
- + end
198
- +
199
- + def clear_forwarded_ports(env, env_hash)
200
- + get_pidfiles_for_machine(env_hash[:machine]).each do |pidfile|
201
- + kill_ssh_tunnel(env, pidfile, env_hash)
202
- + end
203
- + end
204
- +
205
- + def kill_ssh_tunnel(env, pidfile, env_hash)
206
- + logger = create_logger
207
- + machine = env_hash[:machine]
208
- + pid = read_pid(machine.data_dir.join(pidfile))
209
- + if pid && autossh_pid?(pid)
210
- + Vagrant::Util::Subprocess.execute("kill", pid.to_s)
211
- + else
212
- + logger.info("Cleaning up stale autossh pidfile #{pidfile}.")
213
- + Vagrant::Util::Subprocess.execute("rm", pidfile)
214
- + end
215
- + end
216
- +
217
- +
218
- + def pidfile_name(fp)
219
- + "#{fp.protocol}#{fp.host_port}.pid"
220
- + end
221
- +
222
- + def read_pid(pidfile_path)
223
- + File.read(pidfile_path).presence.try(:to_i) if File.exist?(pidfile_path)
224
- + end
225
- +
226
- + def get_pidfiles_for_machine(machine)
227
- + pidfiles = []
228
- + Vagrant::Util::SafeChdir.safe_chdir(machine.data_dir) do
229
- + pidfiles = Dir.glob("*.pid")
230
- + end
231
- + pidfiles
232
- + end
233
- +
234
- + # Checks that the pid is actually an autossh process (and not
235
- + # something else using a recycled pid).
236
- + def autossh_pid?(pid)
237
- + # get_comm_for_pid(pid) == 'autossh'
238
- + true
239
- + end
240
- +
241
- + # Get the command, minus any arguments, for the given
242
- + # pid. This probably needs to be overridden per host cap
243
- + def get_comm_for_pid(pid)
244
- + result = Vagrant::Util::Subprocess.execute("ps", "-p", pid.to_s, "-o", "comm")
245
- + result.stdout.split("\n").last
246
- + end
247
- +
248
- + # these args seem to work on MacOS and Ubuntu ...
249
- + # untested on other implementations
250
- + def ssh_args(fp, env_hash)
251
- + machine = env_hash[:machine]
252
- + ssh_info = env_hash[:machine_ssh_info]
253
- + ssh_options = {
254
- + "ServerAliveInterval" => 10,
255
- + "ServerAliveCountMax" => 3,
256
- + "StrictHostKeyChecking" => "no",
257
- + }
258
- +
259
- + args = []
260
- + args << "-q" # quiet
261
- + args << "-N" # no remote command
262
- + args << "-i" << machine.data_dir.join("private_key").to_s
263
- + args << "-L" << "#{fp.host_port}:localhost:#{fp.guest_port}"
264
- + ssh_options.each do |k, v|
265
- + # options in ssh config file format
266
- + args << "-o" << "#{k}=#{v}"
267
- + end
268
- + args << "#{ssh_info[:username]}@#{ssh_info[:host]}"
269
- + end
270
- +
271
- + def autossh_environment_variables(pidfile, env_hash, monitoring_port = 0)
272
- + machine = env_hash[:machine]
273
- + {
274
- + "AUTOSSH_PIDFILE" => machine.data_dir.join(pidfile).to_s,
275
- + "AUTOSSH_PORT" => monitoring_port,
276
- + }
277
- + end
278
- + end
279
- + end
280
- + end
281
- + end
282
- + end
283
- +end
284
- diff -r b669f28f24c6 lib/vagrant-skytap/hosts/linux/cap/ssh_tunnel.rb
285
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
286
- +++ b/lib/vagrant-skytap/hosts/linux/cap/ssh_tunnel.rb Mon Jan 18 13:57:03 2016 -0800
287
- @@ -0,0 +1,15 @@
288
- +require "vagrant-skytap/hosts/common/cap/ssh_tunnel"
289
- +
290
- +module VagrantPlugins
291
- + module Skytap
292
- + module HostLinux
293
- + module Cap
294
- + class SSHTunnel < VagrantPlugins::Skytap::HostCommon::Cap::SSHTunnel
295
- + def self.create_logger
296
- + Log4r::Logger.new("vagrant::hosts::linux")
297
- + end
298
- + end
299
- + end
300
- + end
301
- + end
302
- +end
303
- diff -r b669f28f24c6 lib/vagrant-skytap/hosts/windows/cap/ssh_tunnel.rb
304
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
305
- +++ b/lib/vagrant-skytap/hosts/windows/cap/ssh_tunnel.rb Mon Jan 18 13:57:03 2016 -0800
306
- @@ -0,0 +1,23 @@
307
- +require "vagrant-skytap/hosts/common/cap/ssh_tunnel"
308
- +
309
- +module VagrantPlugins
310
- + module Skytap
311
- + module HostWindows
312
- + module Cap
313
- + class SSHTunnel < VagrantPlugins::Skytap::HostCommon::Cap::SSHTunnel
314
- + def self.create_logger
315
- + Log4r::Logger.new("vagrant::hosts::windows")
316
- + end
317
- +
318
- + def self.start_ssh_tunnel(env, fp, env_hash)
319
- + env[:ui].info I18n.t("Port forwarding is currently not supported on Windows. Skipping...")
320
- + end
321
- +
322
- + def self.kill_ssh_tunnel(env, pidfile, env_hash)
323
- + env[:ui].info I18n.t("Port forwarding is currently not supported on Windows. Skipping...")
324
- + end
325
- + end
326
- + end
327
- + end
328
- + end
329
- +end
330
- diff -r b669f28f24c6 lib/vagrant-skytap/model/forwarded_port.rb
331
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
332
- +++ b/lib/vagrant-skytap/model/forwarded_port.rb Mon Jan 18 13:57:03 2016 -0800
333
- @@ -0,0 +1,70 @@
334
- +module VagrantPlugins
335
- + module Skytap
336
- + module Model
337
- + # Represents a single forwarded port for VirtualBox. This has various
338
- + # helpers and defaults for a forwarded port.
339
- + class ForwardedPort
340
- + # The NAT adapter on which to attach the forwarded port.
341
- + #
342
- + # @return [Integer]
343
- + attr_reader :adapter
344
- +
345
- + # If true, this port should be auto-corrected.
346
- + #
347
- + # @return [Boolean]
348
- + attr_reader :auto_correct
349
- +
350
- + # The unique ID for the forwarded port.
351
- + #
352
- + # @return [String]
353
- + attr_reader :id
354
- +
355
- + # The protocol to forward.
356
- + #
357
- + # @return [String]
358
- + attr_reader :protocol
359
- +
360
- + # The IP that the forwarded port will connect to on the guest machine.
361
- + #
362
- + # @return [String]
363
- + attr_reader :guest_ip
364
- +
365
- + # The port on the guest to be exposed on the host.
366
- + #
367
- + # @return [Integer]
368
- + attr_reader :guest_port
369
- +
370
- + # The IP that the forwarded port will bind to on the host machine.
371
- + #
372
- + # @return [String]
373
- + attr_reader :host_ip
374
- +
375
- + # The port on the host used to access the port on the guest.
376
- + #
377
- + # @return [Integer]
378
- + attr_reader :host_port
379
- +
380
- + def initialize(id, host_port, guest_port, options)
381
- + @id = id
382
- + @guest_port = guest_port
383
- + @host_port = host_port
384
- +
385
- + options ||= {}
386
- + @auto_correct = false
387
- + @auto_correct = options[:auto_correct] if options.key?(:auto_correct)
388
- + @adapter = (options[:adapter] || 1).to_i
389
- + @guest_ip = options[:guest_ip] || nil
390
- + @host_ip = options[:host_ip] || nil
391
- + @protocol = options[:protocol] || "tcp"
392
- + end
393
- +
394
- + # This corrects the host port and changes it to the given new port.
395
- + #
396
- + # @param [Integer] new_port The new port
397
- + def correct_host_port(new_port)
398
- + @host_port = new_port
399
- + end
400
- + end
401
- + end
402
- + end
403
- +end
404
- diff -r b669f28f24c6 lib/vagrant-skytap/plugin.rb
405
- --- a/lib/vagrant-skytap/plugin.rb Wed Jan 13 17:07:26 2016 -0800
406
- +++ b/lib/vagrant-skytap/plugin.rb Mon Jan 18 13:57:03 2016 -0800
407
- @@ -49,6 +49,21 @@
408
- Cap::PublicAddress
409
- end
410
-
411
- + %w[start_ssh_tunnel kill_ssh_tunnel clear_forwarded_ports].each do |cap|
412
- + host_capability("bsd", cap) do
413
- + require_relative "hosts/bsd/cap/ssh_tunnel"
414
- + HostBSD::Cap::SSHTunnel
415
- + end
416
- + host_capability("linux", cap) do
417
- + require_relative "hosts/linux/cap/ssh_tunnel"
418
- + HostLinux::Cap::SSHTunnel
419
- + end
420
- + host_capability("windows", cap) do
421
- + require_relative "hosts/windows/cap/ssh_tunnel"
422
- + HostWindows::Cap::SSHTunnel
423
- + end
424
- + end
425
- +
426
- # This initializes the internationalization strings.
427
- def self.setup_i18n
428
- I18n.load_path << File.expand_path("locales/en.yml", Skytap.source_root)
429
- diff -r b669f28f24c6 lib/vagrant-skytap/util/compile_forwarded_ports.rb
430
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
431
- +++ b/lib/vagrant-skytap/util/compile_forwarded_ports.rb Mon Jan 18 13:57:03 2016 -0800
432
- @@ -0,0 +1,34 @@
433
- +require "vagrant/util/scoped_hash_override"
434
- +require 'vagrant-skytap/model/forwarded_port'
435
- +module VagrantPlugins
436
- + module Skytap
437
- + module Util
438
- + module CompileForwardedPorts
439
- + include Vagrant::Util::ScopedHashOverride
440
- +
441
- + # This method compiles the forwarded ports into {ForwardedPort}
442
- + # models.
443
- + def compile_forwarded_ports(config)
444
- + mappings = {}
445
- +
446
- + config.vm.networks.each do |type, options|
447
- + if type == :forwarded_port
448
- + guest_port = options[:guest]
449
- + host_port = options[:host]
450
- + protocol = options[:protocol] || "tcp"
451
- + options = scoped_hash_override(options, :skytap)
452
- + id = options[:id]
453
- +
454
- + # If the forwarded port was marked as disabled, ignore.
455
- + next if options[:disabled]
456
- + mappings[host_port.to_s + protocol.to_s] =
457
- + Model::ForwardedPort.new(id, host_port, guest_port, options)
458
- + end
459
- + end
460
- +
461
- + mappings.values
462
- + end
463
- + end
464
- + end
465
- + end
466
- +end
467
- diff -r b669f28f24c6 spec/unit/hosts/common/cap/ssh_tunnel_spec.rb
468
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
469
- +++ b/spec/unit/hosts/common/cap/ssh_tunnel_spec.rb Mon Jan 18 13:57:03 2016 -0800
470
- @@ -0,0 +1,61 @@
471
- +require File.expand_path("../../../../base", __FILE__)
472
- +require "vagrant-skytap/model/forwarded_port"
473
- +
474
- +describe "VagrantPlugins::Skytap::HostCommon::Cap::SSHTunnel" do
475
- + let(:described_class) do
476
- + VagrantPlugins::Skytap::Plugin.components.host_capabilities[:bsd].get(:start_ssh_tunnel)
477
- + end
478
- +
479
- + let(:machine) { double("machine") }
480
- + let(:forwarded_port) { VagrantPlugins::Skytap::Model::ForwardedPort.new('tcp9000', 9000, 80, {}) }
481
- + let(:ssh_info) { {username: 'user', host: '10.0.0.1'} }
482
- + let(:env_path) { Pathname.new(File.expand_path("../../../../support/forwarded_ports", __FILE__)) }
483
- +
484
- + before do
485
- + allow(machine).to receive(:data_dir).and_return(env_path.join("machines/vm1/skytap"))
486
- + end
487
- +
488
- + describe "clear_forwarded_ports" do
489
- + it "calls kill_ssh_tunnel for each pidfile found" do
490
- + expect(described_class).to receive(:kill_ssh_tunnel).with(nil, "tcp9000.pid", {machine: machine})
491
- + expect(described_class).to receive(:kill_ssh_tunnel).with(nil, "tcp9001.pid", {machine: machine})
492
- + described_class.clear_forwarded_ports(nil, {machine: machine})
493
- + end
494
- + end
495
- +
496
- + describe "read_pid" do
497
- + it "reads the pid" do
498
- + pid = described_class.read_pid(env_path.join("machines/vm1/skytap/tcp9000.pid"))
499
- + expect(pid).to eq(99999)
500
- + end
501
- +
502
- + it "returns nil if pidfile missing" do
503
- + pid = described_class.read_pid(env_path.join("machines/vm1/skytap/tcp12345.pid"))
504
- + expect(pid).to be(nil)
505
- + end
506
- + end
507
- +
508
- + describe "ssh_args" do
509
- + it "returns expected args" do
510
- + args = described_class.ssh_args(forwarded_port, {machine: machine, machine_ssh_info: ssh_info})
511
- + expect(args).to eq(["-q", "-N",
512
- + "-i", env_path.join("machines/vm1/skytap/private_key").to_s,
513
- + "-L", "9000:localhost:80",
514
- + "-o", "ServerAliveInterval=10",
515
- + "-o", "ServerAliveCountMax=3",
516
- + "-o", "StrictHostKeyChecking=no",
517
- + "user@10.0.0.1"
518
- + ])
519
- + end
520
- + end
521
- +
522
- + describe "autossh_environment_variables" do
523
- + it "defaults monitoring port to 0" do
524
- + vars = described_class.autossh_environment_variables('tcp9000.pid', {machine: machine})
525
- + expect(vars).to eq({
526
- + "AUTOSSH_PIDFILE" => env_path.join("machines/vm1/skytap/tcp9000.pid").to_s,
527
- + "AUTOSSH_PORT" => 0,
528
- + })
529
- + end
530
- + end
531
- +end
532
- diff -r b669f28f24c6 spec/unit/support/forwarded_ports/machines/vm1/skytap/id
533
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
534
- +++ b/spec/unit/support/forwarded_ports/machines/vm1/skytap/id Mon Jan 18 13:57:03 2016 -0800
535
- @@ -0,0 +1,1 @@
536
- +1
537
- diff -r b669f28f24c6 spec/unit/support/forwarded_ports/machines/vm1/skytap/private_key
538
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
539
- +++ b/spec/unit/support/forwarded_ports/machines/vm1/skytap/private_key Mon Jan 18 13:57:03 2016 -0800
540
- @@ -0,0 +1,4 @@
541
- +-----BEGIN RSA PRIVATE KEY-----
542
- +BOO!
543
- +-----END RSA PRIVATE KEY-----
544
- +
545
- diff -r b669f28f24c6 spec/unit/support/forwarded_ports/machines/vm1/skytap/tcp9000.pid
546
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
547
- +++ b/spec/unit/support/forwarded_ports/machines/vm1/skytap/tcp9000.pid Mon Jan 18 13:57:03 2016 -0800
548
- @@ -0,0 +1,1 @@
549
- +99999
550
- diff -r b669f28f24c6 spec/unit/support/forwarded_ports/machines/vm1/skytap/tcp9001.pid
551
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
552
- +++ b/spec/unit/support/forwarded_ports/machines/vm1/skytap/tcp9001.pid Mon Jan 18 13:57:03 2016 -0800
553
- @@ -0,0 +1,1 @@
554
- +90210