vagrant-openstack-illuin-provider 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rubocop.yml +40 -0
  4. data/CHANGELOG.md +282 -0
  5. data/Gemfile +18 -0
  6. data/RELEASE.md +15 -0
  7. data/Rakefile +25 -0
  8. data/Vagrantfile +20 -0
  9. data/dummy.box +0 -0
  10. data/example_box/README.md +13 -0
  11. data/example_box/metadata.json +3 -0
  12. data/functional_tests/Vagrantfile +58 -0
  13. data/functional_tests/keys/vagrant-openstack +27 -0
  14. data/functional_tests/keys/vagrant-openstack.pub +1 -0
  15. data/functional_tests/run_tests.sh +142 -0
  16. data/lib/vagrant-openstack-illuin-provider.rb +29 -0
  17. data/lib/vagrant-openstack-illuin-provider/action.rb +344 -0
  18. data/lib/vagrant-openstack-illuin-provider/action/abstract_action.rb +22 -0
  19. data/lib/vagrant-openstack-illuin-provider/action/connect_openstack.rb +60 -0
  20. data/lib/vagrant-openstack-illuin-provider/action/create_server.rb +187 -0
  21. data/lib/vagrant-openstack-illuin-provider/action/create_stack.rb +76 -0
  22. data/lib/vagrant-openstack-illuin-provider/action/delete_server.rb +53 -0
  23. data/lib/vagrant-openstack-illuin-provider/action/delete_stack.rb +73 -0
  24. data/lib/vagrant-openstack-illuin-provider/action/message.rb +19 -0
  25. data/lib/vagrant-openstack-illuin-provider/action/provision.rb +60 -0
  26. data/lib/vagrant-openstack-illuin-provider/action/read_ssh_info.rb +74 -0
  27. data/lib/vagrant-openstack-illuin-provider/action/read_state.rb +43 -0
  28. data/lib/vagrant-openstack-illuin-provider/action/resume.rb +24 -0
  29. data/lib/vagrant-openstack-illuin-provider/action/snapshot_cleanup.rb +32 -0
  30. data/lib/vagrant-openstack-illuin-provider/action/snapshot_delete.rb +32 -0
  31. data/lib/vagrant-openstack-illuin-provider/action/snapshot_list.rb +22 -0
  32. data/lib/vagrant-openstack-illuin-provider/action/snapshot_restore.rb +29 -0
  33. data/lib/vagrant-openstack-illuin-provider/action/snapshot_save.rb +51 -0
  34. data/lib/vagrant-openstack-illuin-provider/action/start_server.rb +24 -0
  35. data/lib/vagrant-openstack-illuin-provider/action/stop_server.rb +25 -0
  36. data/lib/vagrant-openstack-illuin-provider/action/suspend.rb +24 -0
  37. data/lib/vagrant-openstack-illuin-provider/action/sync_folders.rb +138 -0
  38. data/lib/vagrant-openstack-illuin-provider/action/wait_active.rb +33 -0
  39. data/lib/vagrant-openstack-illuin-provider/action/wait_stop.rb +33 -0
  40. data/lib/vagrant-openstack-illuin-provider/cap/snapshot_list.rb +15 -0
  41. data/lib/vagrant-openstack-illuin-provider/catalog/openstack_catalog.rb +90 -0
  42. data/lib/vagrant-openstack-illuin-provider/client/cinder.rb +39 -0
  43. data/lib/vagrant-openstack-illuin-provider/client/domain.rb +163 -0
  44. data/lib/vagrant-openstack-illuin-provider/client/glance.rb +65 -0
  45. data/lib/vagrant-openstack-illuin-provider/client/heat.rb +49 -0
  46. data/lib/vagrant-openstack-illuin-provider/client/http_utils.rb +116 -0
  47. data/lib/vagrant-openstack-illuin-provider/client/keystone.rb +128 -0
  48. data/lib/vagrant-openstack-illuin-provider/client/neutron.rb +48 -0
  49. data/lib/vagrant-openstack-illuin-provider/client/nova.rb +303 -0
  50. data/lib/vagrant-openstack-illuin-provider/client/openstack.rb +59 -0
  51. data/lib/vagrant-openstack-illuin-provider/client/request_logger.rb +23 -0
  52. data/lib/vagrant-openstack-illuin-provider/client/rest_utils.rb +28 -0
  53. data/lib/vagrant-openstack-illuin-provider/command/abstract_command.rb +51 -0
  54. data/lib/vagrant-openstack-illuin-provider/command/flavor_list.rb +24 -0
  55. data/lib/vagrant-openstack-illuin-provider/command/floatingip_list.rb +32 -0
  56. data/lib/vagrant-openstack-illuin-provider/command/image_list.rb +29 -0
  57. data/lib/vagrant-openstack-illuin-provider/command/main.rb +52 -0
  58. data/lib/vagrant-openstack-illuin-provider/command/network_list.rb +25 -0
  59. data/lib/vagrant-openstack-illuin-provider/command/openstack_command.rb +16 -0
  60. data/lib/vagrant-openstack-illuin-provider/command/reset.rb +20 -0
  61. data/lib/vagrant-openstack-illuin-provider/command/subnet_list.rb +22 -0
  62. data/lib/vagrant-openstack-illuin-provider/command/utils.rb +22 -0
  63. data/lib/vagrant-openstack-illuin-provider/command/volume_list.rb +25 -0
  64. data/lib/vagrant-openstack-illuin-provider/config.rb +505 -0
  65. data/lib/vagrant-openstack-illuin-provider/config/http.rb +39 -0
  66. data/lib/vagrant-openstack-illuin-provider/config_resolver.rb +334 -0
  67. data/lib/vagrant-openstack-illuin-provider/errors.rb +187 -0
  68. data/lib/vagrant-openstack-illuin-provider/logging.rb +39 -0
  69. data/lib/vagrant-openstack-illuin-provider/plugin.rb +58 -0
  70. data/lib/vagrant-openstack-illuin-provider/provider.rb +50 -0
  71. data/lib/vagrant-openstack-illuin-provider/utils.rb +81 -0
  72. data/lib/vagrant-openstack-illuin-provider/version.rb +15 -0
  73. data/lib/vagrant-openstack-illuin-provider/version_checker.rb +76 -0
  74. data/locales/en.yml +412 -0
  75. data/spec/vagrant-openstack-illuin-provider/action/connect_openstack_spec.rb +770 -0
  76. data/spec/vagrant-openstack-illuin-provider/action/create_server_spec.rb +260 -0
  77. data/spec/vagrant-openstack-illuin-provider/action/create_stack_spec.rb +99 -0
  78. data/spec/vagrant-openstack-illuin-provider/action/delete_server_spec.rb +89 -0
  79. data/spec/vagrant-openstack-illuin-provider/action/delete_stack_spec.rb +63 -0
  80. data/spec/vagrant-openstack-illuin-provider/action/message_spec.rb +33 -0
  81. data/spec/vagrant-openstack-illuin-provider/action/provision_spec.rb +97 -0
  82. data/spec/vagrant-openstack-illuin-provider/action/read_ssh_info_spec.rb +202 -0
  83. data/spec/vagrant-openstack-illuin-provider/action/read_state_spec.rb +81 -0
  84. data/spec/vagrant-openstack-illuin-provider/action/resume_server_spec.rb +49 -0
  85. data/spec/vagrant-openstack-illuin-provider/action/start_server_spec.rb +49 -0
  86. data/spec/vagrant-openstack-illuin-provider/action/stop_server_spec.rb +49 -0
  87. data/spec/vagrant-openstack-illuin-provider/action/suspend_server_spec.rb +49 -0
  88. data/spec/vagrant-openstack-illuin-provider/action/sync_folders_spec.rb +155 -0
  89. data/spec/vagrant-openstack-illuin-provider/action/wait_active_spec.rb +53 -0
  90. data/spec/vagrant-openstack-illuin-provider/action/wait_stop_spec.rb +53 -0
  91. data/spec/vagrant-openstack-illuin-provider/action_spec.rb +120 -0
  92. data/spec/vagrant-openstack-illuin-provider/client/cinder_spec.rb +129 -0
  93. data/spec/vagrant-openstack-illuin-provider/client/glance_spec.rb +145 -0
  94. data/spec/vagrant-openstack-illuin-provider/client/heat_spec.rb +130 -0
  95. data/spec/vagrant-openstack-illuin-provider/client/keystone_spec.rb +226 -0
  96. data/spec/vagrant-openstack-illuin-provider/client/neutron_spec.rb +173 -0
  97. data/spec/vagrant-openstack-illuin-provider/client/nova_spec.rb +760 -0
  98. data/spec/vagrant-openstack-illuin-provider/client/utils_spec.rb +176 -0
  99. data/spec/vagrant-openstack-illuin-provider/command/flavor_list_spec.rb +43 -0
  100. data/spec/vagrant-openstack-illuin-provider/command/floatingip_list_spec.rb +74 -0
  101. data/spec/vagrant-openstack-illuin-provider/command/image_list_spec.rb +95 -0
  102. data/spec/vagrant-openstack-illuin-provider/command/network_list_spec.rb +65 -0
  103. data/spec/vagrant-openstack-illuin-provider/command/reset_spec.rb +24 -0
  104. data/spec/vagrant-openstack-illuin-provider/command/subnet_list_spec.rb +45 -0
  105. data/spec/vagrant-openstack-illuin-provider/command/volume_list_spec.rb +40 -0
  106. data/spec/vagrant-openstack-illuin-provider/config_resolver_spec.rb +879 -0
  107. data/spec/vagrant-openstack-illuin-provider/config_spec.rb +416 -0
  108. data/spec/vagrant-openstack-illuin-provider/e2e_spec.rb.save +27 -0
  109. data/spec/vagrant-openstack-illuin-provider/provider_spec.rb +13 -0
  110. data/spec/vagrant-openstack-illuin-provider/spec_helper.rb +37 -0
  111. data/spec/vagrant-openstack-illuin-provider/utils_spec.rb +197 -0
  112. data/spec/vagrant-openstack-illuin-provider/version_checker_spec.rb +39 -0
  113. data/stackrc +25 -0
  114. data/vagrant-openstack-illuin-provider.gemspec +35 -0
  115. metadata +379 -0
@@ -0,0 +1,416 @@
1
+ require 'vagrant-openstack-illuin-provider/spec_helper'
2
+
3
+ describe VagrantPlugins::Openstack::Config do
4
+ describe 'defaults' do
5
+ let(:vagrant_public_key) { Vagrant.source_root.join('keys/vagrant.pub') }
6
+
7
+ subject do
8
+ super().tap(&:finalize!)
9
+ end
10
+
11
+ its(:password) { should be_nil }
12
+ its(:openstack_compute_url) { should be_nil }
13
+ its(:openstack_auth_url) { should be_nil }
14
+ its(:openstack_orchestration_url) { should be_nil }
15
+ its(:flavor) { should be_nil }
16
+ its(:image) { should be_nil }
17
+ its(:server_name) { should be_nil }
18
+ its(:username) { should be_nil }
19
+ its(:use_legacy_synced_folders) { should eq(false) }
20
+ its(:rsync_includes) { should be_nil }
21
+ its(:rsync_ignore_files) { should be_nil }
22
+ its(:sync_method) { should be_nil }
23
+ its(:keypair_name) { should be_nil }
24
+ its(:public_key_path) { should be_nil }
25
+ its(:availability_zone) { should be_nil }
26
+ its(:ssh_username) { should be_nil }
27
+ its(:floating_ip_pool_always_allocate) { should eq(false) }
28
+ its(:scheduler_hints) { should be_nil }
29
+ its(:security_groups) { should be_nil }
30
+ its(:user_data) { should be_nil }
31
+ its(:metadata) { should be_nil }
32
+ its(:ssl_ca_file) { should eq nil }
33
+ its(:ip_version) { should be_nil }
34
+ end
35
+
36
+ describe 'overriding defaults' do
37
+ [
38
+ :password,
39
+ :openstack_compute_url,
40
+ :openstack_auth_url,
41
+ :flavor,
42
+ :image,
43
+ :server_name,
44
+ :username,
45
+ :keypair_name,
46
+ :ssh_username,
47
+ :floating_ip_pool_always_allocate,
48
+ :scheduler_hints,
49
+ :security_groups,
50
+ :openstack_orchestration_url,
51
+ :stacks,
52
+ :user_data,
53
+ :metadata,
54
+ :availability_zone,
55
+ :public_key_path,
56
+ :ssl_ca_file,
57
+ :ip_version].each do |attribute|
58
+ it "should not default #{attribute} if overridden" do
59
+ subject.send("#{attribute}=".to_sym, 'foo')
60
+ subject.finalize!
61
+ subject.send(attribute).should == 'foo'
62
+ end
63
+ end
64
+
65
+ describe 'use_legacy_synced_folders' do
66
+ it 'should default to true if sync_method is set' do
67
+ subject.sync_method = 'rsync'
68
+ subject.finalize!
69
+
70
+ expect(subject.use_legacy_synced_folders).to eq(true)
71
+ end
72
+
73
+ it 'should default to true if rsync_includes is non-empty' do
74
+ subject.rsync_includes = ['some/file']
75
+ subject.finalize!
76
+
77
+ expect(subject.use_legacy_synced_folders).to eq(true)
78
+ end
79
+
80
+ it 'should default to true if rsync_ignore_files is non-empty' do
81
+ subject.rsync_ignore_files = ['some/file']
82
+ subject.finalize!
83
+
84
+ expect(subject.use_legacy_synced_folders).to eq(true)
85
+ end
86
+ end
87
+
88
+ it 'should not default rsync_includes if overridden' do
89
+ inc = 'core'
90
+ subject.send(:rsync_include, inc)
91
+ subject.finalize!
92
+
93
+ expect(subject.rsync_includes).to include(inc)
94
+ expect(subject.use_legacy_synced_folders).to eq(true)
95
+ end
96
+ end
97
+
98
+ describe 'merge' do
99
+ let(:foo_class) do
100
+ Class.new(described_class) do
101
+ attr_accessor :networks
102
+ attr_accessor :floating_ip_pool
103
+ end
104
+ end
105
+
106
+ subject { foo_class.new }
107
+
108
+ context 'with original network not empty array' do
109
+ it 'should overidde the config' do
110
+ one = foo_class.new
111
+ one.networks = ['foo']
112
+
113
+ two = foo_class.new
114
+ two.networks = ['bar']
115
+
116
+ result = one.merge(two)
117
+ result.networks.should =~ ['bar']
118
+ end
119
+ end
120
+
121
+ context 'with original network empty array' do
122
+ it 'should add the network to the existing list' do
123
+ one = foo_class.new
124
+ one.networks = []
125
+
126
+ two = foo_class.new
127
+ two.networks = ['bar']
128
+
129
+ result = one.merge(two)
130
+ result.networks.should =~ ['bar']
131
+ end
132
+ end
133
+
134
+ context 'with original network not empty array and new empty array' do
135
+ it 'should keep the original network' do
136
+ one = foo_class.new
137
+ one.networks = ['foo']
138
+
139
+ two = foo_class.new
140
+ two.networks = []
141
+
142
+ result = one.merge(two)
143
+ result.networks.should =~ ['foo']
144
+ end
145
+ end
146
+
147
+ context 'with original network is a string and new empty array' do
148
+ it 'should keep the original network and wrap it into an array' do
149
+ one = foo_class.new
150
+ one.networks = 'foo'
151
+
152
+ two = foo_class.new
153
+ two.networks = []
154
+
155
+ result = one.merge(two)
156
+ result.networks.should =~ ['foo']
157
+ end
158
+ end
159
+
160
+ context 'with original network is a string and new is a string' do
161
+ it 'should overidde the config and wrap it into an array' do
162
+ one = foo_class.new
163
+ one.networks = 'foo'
164
+
165
+ two = foo_class.new
166
+ two.networks = 'bar'
167
+
168
+ result = one.merge(two)
169
+ result.networks.should =~ ['bar']
170
+ end
171
+ end
172
+
173
+ context 'with original floating_ip_pool as string' do
174
+ context 'and new as empty array' do
175
+ it 'should put original string in a single entry array' do
176
+ one = foo_class.new
177
+ one.floating_ip_pool = 'pool'
178
+
179
+ two = foo_class.new
180
+ two.floating_ip_pool = []
181
+
182
+ result = one.merge(two)
183
+ result.floating_ip_pool.should =~ ['pool']
184
+ end
185
+ end
186
+ context 'and new as empty string' do
187
+ it 'should put original string in a single entry array' do
188
+ one = foo_class.new
189
+ one.floating_ip_pool = 'pool'
190
+
191
+ two = foo_class.new
192
+ two.floating_ip_pool = ''
193
+
194
+ result = one.merge(two)
195
+ result.floating_ip_pool.should =~ ['']
196
+ end
197
+ end
198
+ context 'and new as string' do
199
+ it 'should put new string in a single entry array' do
200
+ one = foo_class.new
201
+ one.floating_ip_pool = 'pool'
202
+
203
+ two = foo_class.new
204
+ two.floating_ip_pool = 'new-pool'
205
+
206
+ result = one.merge(two)
207
+ result.floating_ip_pool.should =~ ['new-pool']
208
+ end
209
+ end
210
+ context 'and new as array' do
211
+ it 'should put new array' do
212
+ one = foo_class.new
213
+ one.floating_ip_pool = 'pool'
214
+
215
+ two = foo_class.new
216
+ two.floating_ip_pool = %w(pool-1 pool-2)
217
+
218
+ result = one.merge(two)
219
+ result.floating_ip_pool.should =~ %w(pool-1 pool-2)
220
+ end
221
+ end
222
+ end
223
+
224
+ context 'with original floating_ip_pool as array' do
225
+ context 'and new empty' do
226
+ it 'should put original array' do
227
+ one = foo_class.new
228
+ one.floating_ip_pool = %w(pool-1 pool-2)
229
+
230
+ two = foo_class.new
231
+ two.floating_ip_pool = []
232
+
233
+ result = one.merge(two)
234
+ result.floating_ip_pool.should =~ %w(pool-1 pool-2)
235
+ end
236
+ end
237
+ context 'and new as string' do
238
+ it 'should put new string in a single entry array' do
239
+ one = foo_class.new
240
+ one.floating_ip_pool = %w(pool-1 pool-2)
241
+
242
+ two = foo_class.new
243
+ two.floating_ip_pool = 'pool'
244
+
245
+ result = one.merge(two)
246
+ result.floating_ip_pool.should =~ ['pool']
247
+ end
248
+ end
249
+ context 'and new as array' do
250
+ it 'should put new array' do
251
+ one = foo_class.new
252
+ one.floating_ip_pool = %w(pool-1 pool-2)
253
+
254
+ two = foo_class.new
255
+ two.floating_ip_pool = %w(new-pool-1 new-pool-2)
256
+
257
+ result = one.merge(two)
258
+ result.floating_ip_pool.should =~ %w(new-pool-1 new-pool-2)
259
+ end
260
+ end
261
+ end
262
+ end
263
+
264
+ describe 'validation' do
265
+ let(:machine) { double('machine') }
266
+ let(:validation_errors) { subject.validate(machine)['Openstack Provider'] }
267
+ let(:error_message) { double('error message') }
268
+
269
+ let(:config) { double('config') }
270
+ let(:ssh) { double('ssh') }
271
+
272
+ before(:each) do
273
+ error_message.stub(:yellow) { 'Yellowed Error message ' }
274
+ machine.stub_chain(:env, :root_path).and_return '/'
275
+ ssh.stub(:private_key_path) { 'private key path' }
276
+ ssh.stub(:username) { 'ssh username' }
277
+ ssh.stub(:insert_key) { true }
278
+ config.stub(:ssh) { ssh }
279
+ machine.stub(:config) { config }
280
+ subject.username = 'foo'
281
+ subject.password = 'bar'
282
+ subject.tenant_name = 'tenant'
283
+ subject.keypair_name = 'keypair'
284
+ end
285
+
286
+ subject do
287
+ super().tap(&:finalize!)
288
+ end
289
+
290
+ context 'with invalid stack' do
291
+ it 'should raise an error' do
292
+ subject.stacks = [
293
+ {
294
+ name: 'test1'
295
+ }
296
+ ]
297
+ I18n.should_receive(:t).with('vagrant_openstack.config.invalid_stack').and_return error_message
298
+ validation_errors.first.should == error_message
299
+ end
300
+
301
+ it 'should raise an error' do
302
+ subject.stacks = [
303
+ {
304
+ name: 'test1',
305
+ tempslate: 'tes1'
306
+ }
307
+ ]
308
+ I18n.should_receive(:t).with('vagrant_openstack.config.invalid_stack').and_return error_message
309
+ validation_errors.first.should == error_message
310
+ end
311
+
312
+ it 'should not raise an error' do
313
+ subject.stacks = [
314
+ {
315
+ name: 'test1',
316
+ template: 'tes1'
317
+ }
318
+ ]
319
+ expect(validation_errors).to be_empty
320
+ end
321
+ end
322
+
323
+ context 'with invalid key' do
324
+ it 'should raise an error' do
325
+ subject.nonsense1 = true
326
+ subject.nonsense2 = false
327
+ I18n.should_receive(:t).with('vagrant.config.common.bad_field', fields: 'nonsense1, nonsense2').and_return error_message
328
+ validation_errors.first.should == error_message
329
+ end
330
+ end
331
+
332
+ context 'with no ssh username provider' do
333
+ it 'should raise an error' do
334
+ ssh.stub(:username) { nil }
335
+ subject.ssh_username = nil
336
+ I18n.should_receive(:t).with('vagrant_openstack.config.ssh_username_required').and_return error_message
337
+ validation_errors.first.should == error_message
338
+ end
339
+ end
340
+
341
+ context 'with good values' do
342
+ it 'should validate' do
343
+ validation_errors.should be_empty
344
+ end
345
+ end
346
+
347
+ context 'private_key_path is not set' do
348
+ context 'keypair_name or public_key_path is set' do
349
+ it 'should error if not given' do
350
+ ssh.stub(:private_key_path) { nil }
351
+ subject.public_key_path = 'public_key'
352
+ I18n.should_receive(:t).with('vagrant_openstack.config.private_key_missing').and_return error_message
353
+ validation_errors.first.should == error_message
354
+ end
355
+ end
356
+
357
+ context 'keypair_name or public_key_path is set and ssh.insert_key is false' do
358
+ it 'should not error' do
359
+ ssh.stub(:private_key_path) { nil }
360
+ ssh.stub(:insert_key) { false }
361
+ subject.public_key_path = 'public_key'
362
+ I18n.should_not_receive(:t)
363
+ validation_errors.should be_empty
364
+ end
365
+ end
366
+ end
367
+
368
+ context 'the password' do
369
+ it 'should error if not given' do
370
+ subject.password = nil
371
+ I18n.should_receive(:t).with('vagrant_openstack.config.password_required').and_return error_message
372
+ validation_errors.first.should == error_message
373
+ end
374
+ end
375
+
376
+ context 'the username' do
377
+ it 'should error if not given' do
378
+ subject.username = nil
379
+ I18n.should_receive(:t).with('vagrant_openstack.config.username_required').and_return error_message
380
+ validation_errors.first.should == error_message
381
+ end
382
+ end
383
+
384
+ context 'the tenant name' do
385
+ it 'should error if not given' do
386
+ subject.tenant_name = nil
387
+ I18n.should_receive(:t).with('vagrant_openstack.config.tenant_name_required').and_return error_message
388
+ validation_errors.first.should == error_message
389
+ end
390
+ end
391
+
392
+ context 'the ssh_timeout' do
393
+ it 'should error if do not represent an integer' do
394
+ subject.ssh_timeout = 'timeout'
395
+ I18n.should_receive(:t).with('vagrant_openstack.config.invalid_value_for_parameter',
396
+ parameter: 'ssh_timeout', value: 'timeout').and_return error_message
397
+ validation_errors.first.should == error_message
398
+ end
399
+ it 'should be parsed as integer if is a string that represent an integer' do
400
+ subject.ssh_timeout = '100'
401
+ validation_errors.size.should eq(0)
402
+ expect(subject.ssh_timeout).to eq(100)
403
+ end
404
+ end
405
+
406
+ [:openstack_compute_url, :openstack_auth_url, :openstack_orchestration_url].each do |url|
407
+ context "the #{url}" do
408
+ it 'should not validate if the URL is invalid' do
409
+ subject.send "#{url}=", 'baz'
410
+ I18n.should_receive(:t).with('vagrant_openstack.config.invalid_uri', key: url, uri: 'baz').and_return error_message
411
+ validation_errors.first.should == error_message
412
+ end
413
+ end
414
+ end
415
+ end
416
+ end
@@ -0,0 +1,27 @@
1
+ require 'vagrant-openstack-provider/spec_helper'
2
+
3
+ require 'aruba'
4
+ require 'aruba/api'
5
+
6
+ include Aruba::Api
7
+
8
+ # spec/template_spec.rb
9
+ require 'pathname'
10
+
11
+ root = Pathname.new(__FILE__).parent.parent
12
+
13
+ # Allows us to run commands directly, without worrying about the CWD
14
+ ENV['PATH'] = "#{root.join('bin').to_s}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
15
+
16
+ describe "genud" do
17
+ context "YAML templates" do
18
+ it "should emit valid YAML to STDOUT", :focus do
19
+
20
+ puts '#####################'
21
+ # Run the command with Aruba's run_simple helper
22
+ run_simple "bundle exec vagrant openstack", false, 10
23
+
24
+ # assert_exit_status(0)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ require 'vagrant-openstack-illuin-provider/spec_helper'
2
+
3
+ describe VagrantPlugins::Openstack::Provider do
4
+ before :each do
5
+ @provider = VagrantPlugins::Openstack::Provider.new :machine
6
+ end
7
+
8
+ describe 'to string' do
9
+ it 'should give the provider name' do
10
+ @provider.to_s.should eq('Openstack Cloud')
11
+ end
12
+ end
13
+ end