vagrant-openstack-provider 0.6.1 → 0.7.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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +12 -5
  3. data/CHANGELOG.md +18 -0
  4. data/Gemfile +3 -2
  5. data/{LICENSE.txt → LICENSE} +2 -1
  6. data/lib/vagrant-openstack-provider/action.rb +3 -2
  7. data/lib/vagrant-openstack-provider/action/provision.rb +60 -0
  8. data/lib/vagrant-openstack-provider/action/read_ssh_info.rb +4 -0
  9. data/lib/vagrant-openstack-provider/client/domain.rb +2 -2
  10. data/lib/vagrant-openstack-provider/client/keystone.rb +17 -6
  11. data/lib/vagrant-openstack-provider/client/nova.rb +14 -3
  12. data/lib/vagrant-openstack-provider/command/abstract_command.rb +1 -0
  13. data/lib/vagrant-openstack-provider/command/main.rb +1 -3
  14. data/lib/vagrant-openstack-provider/config.rb +3 -3
  15. data/lib/vagrant-openstack-provider/config_resolver.rb +46 -16
  16. data/lib/vagrant-openstack-provider/errors.rb +15 -0
  17. data/lib/vagrant-openstack-provider/plugin.rb +7 -1
  18. data/lib/vagrant-openstack-provider/version.rb +11 -1
  19. data/lib/vagrant-openstack-provider/version_checker.rb +76 -0
  20. data/locales/en.yml +21 -4
  21. data/spec/vagrant-openstack-provider/action/connect_openstack_spec.rb +17 -19
  22. data/spec/vagrant-openstack-provider/action/create_server_spec.rb +19 -18
  23. data/spec/vagrant-openstack-provider/action/create_stack_spec.rb +4 -6
  24. data/spec/vagrant-openstack-provider/action/delete_server_spec.rb +4 -6
  25. data/spec/vagrant-openstack-provider/action/delete_stack_spec.rb +1 -2
  26. data/spec/vagrant-openstack-provider/action/message_spec.rb +1 -2
  27. data/spec/vagrant-openstack-provider/action/provision_spec.rb +104 -0
  28. data/spec/vagrant-openstack-provider/action/read_ssh_info_spec.rb +1 -3
  29. data/spec/vagrant-openstack-provider/action/read_state_spec.rb +1 -2
  30. data/spec/vagrant-openstack-provider/action/resume_server_spec.rb +1 -2
  31. data/spec/vagrant-openstack-provider/action/start_server_spec.rb +1 -2
  32. data/spec/vagrant-openstack-provider/action/stop_server_spec.rb +1 -2
  33. data/spec/vagrant-openstack-provider/action/suspend_server_spec.rb +1 -2
  34. data/spec/vagrant-openstack-provider/action/sync_folders_spec.rb +1 -2
  35. data/spec/vagrant-openstack-provider/action/wait_accessible_spec.rb +1 -2
  36. data/spec/vagrant-openstack-provider/action/wait_active_spec.rb +3 -4
  37. data/spec/vagrant-openstack-provider/action/wait_stop_spec.rb +3 -4
  38. data/spec/vagrant-openstack-provider/action_spec.rb +0 -1
  39. data/spec/vagrant-openstack-provider/client/cinder_spec.rb +5 -8
  40. data/spec/vagrant-openstack-provider/client/glance_spec.rb +69 -70
  41. data/spec/vagrant-openstack-provider/client/heat_spec.rb +24 -28
  42. data/spec/vagrant-openstack-provider/client/keystone_spec.rb +34 -16
  43. data/spec/vagrant-openstack-provider/client/neutron_spec.rb +76 -80
  44. data/spec/vagrant-openstack-provider/client/nova_spec.rb +198 -168
  45. data/spec/vagrant-openstack-provider/client/utils_spec.rb +1 -3
  46. data/spec/vagrant-openstack-provider/command/flavor_list_spec.rb +1 -2
  47. data/spec/vagrant-openstack-provider/command/floatingip_list_spec.rb +1 -2
  48. data/spec/vagrant-openstack-provider/command/image_list_spec.rb +1 -6
  49. data/spec/vagrant-openstack-provider/command/network_list_spec.rb +1 -3
  50. data/spec/vagrant-openstack-provider/command/reset_spec.rb +1 -2
  51. data/spec/vagrant-openstack-provider/command/subnet_list_spec.rb +1 -2
  52. data/spec/vagrant-openstack-provider/command/volume_list_spec.rb +1 -2
  53. data/spec/vagrant-openstack-provider/config_resolver_spec.rb +100 -6
  54. data/spec/vagrant-openstack-provider/config_spec.rb +2 -6
  55. data/spec/vagrant-openstack-provider/e2e_spec.rb.save +27 -0
  56. data/spec/vagrant-openstack-provider/spec_helper.rb +1 -0
  57. data/spec/vagrant-openstack-provider/utils_spec.rb +1 -2
  58. data/spec/vagrant-openstack-provider/version_checker_spec.rb +39 -0
  59. data/vagrant-openstack-provider.gemspec +4 -2
  60. metadata +29 -9
  61. data/gemfiles/latest_stable.gemfile +0 -10
  62. data/gemfiles/minimal_release.gemfile +0 -10
  63. data/gemfiles/previous_release.gemfile +0 -10
@@ -4,6 +4,17 @@ module VagrantPlugins
4
4
  module Openstack
5
5
  module Errors
6
6
  class VagrantOpenstackError < Vagrant::Errors::VagrantError
7
+ #
8
+ # Added for vagrant 1.4.x compatibility This attribute had been
9
+ # added in Vagrant::Errors::VagrantError form the version 1.5.0
10
+ #
11
+ attr_accessor :extra_data
12
+
13
+ def initialize(args = nil)
14
+ @extra_data = args
15
+ super(args)
16
+ end
17
+
7
18
  error_namespace('vagrant_openstack.errors')
8
19
  error_key(:default)
9
20
  end
@@ -40,6 +51,10 @@ module VagrantPlugins
40
51
  error_key(:no_matching_image)
41
52
  end
42
53
 
54
+ class ConflictBootVolume < VagrantOpenstackError
55
+ error_key(:conflict_boot_volume)
56
+ end
57
+
43
58
  class SyncMethodError < VagrantOpenstackError
44
59
  error_key(:sync_method_error)
45
60
  end
@@ -4,6 +4,8 @@ rescue LoadError
4
4
  raise 'The Openstack Cloud provider must be run within Vagrant.'
5
5
  end
6
6
 
7
+ require 'vagrant-openstack-provider/version_checker'
8
+
7
9
  # This is a sanity check to make sure no one is attempting to install
8
10
  # this into an early Vagrant version.
9
11
  if Vagrant::VERSION < '1.4.0'
@@ -24,9 +26,9 @@ module VagrantPlugins
24
26
  end
25
27
 
26
28
  provider(:openstack, box_optional: true) do
27
- # Setup some things
28
29
  Openstack.init_i18n
29
30
  Openstack.init_logging
31
+ VagrantPlugins::Openstack.check_version
30
32
 
31
33
  # Load the actual provider
32
34
  require_relative 'provider'
@@ -34,6 +36,10 @@ module VagrantPlugins
34
36
  end
35
37
 
36
38
  command('openstack') do
39
+ Openstack.init_i18n
40
+ Openstack.init_logging
41
+ VagrantPlugins::Openstack.check_version
42
+
37
43
  require_relative 'command/main'
38
44
  Command::Main
39
45
  end
@@ -1,5 +1,15 @@
1
1
  module VagrantPlugins
2
2
  module Openstack
3
- VERSION = '0.6.1'
3
+ #
4
+ # Stable versions must respect the pattern given
5
+ # by VagrantPlugins::Openstack::VERSION_PATTERN
6
+ #
7
+ VERSION = '0.7.0'
8
+
9
+ #
10
+ # Stable version must respect the naming convention 'x.y.z'
11
+ # where x, y and z are integers inside the range [0, 999]
12
+ #
13
+ VERSION_PATTERN = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/
4
14
  end
5
15
  end
@@ -0,0 +1,76 @@
1
+ require 'colorize'
2
+ require 'singleton'
3
+ require 'vagrant-openstack-provider/version'
4
+
5
+ module VagrantPlugins
6
+ module Openstack
7
+ class VersionChecker
8
+ include Singleton
9
+
10
+ #
11
+ # :latest, :outdated or :unstable
12
+ #
13
+ # A version is considered unstable if it does not
14
+ # respect the pattern or if it is greater than the
15
+ # latest from rubygem
16
+ #
17
+ attr_accessor :status
18
+
19
+ def initialize
20
+ @status = nil
21
+ end
22
+
23
+ #
24
+ # Check the latest version from rubygem and set the status
25
+ #
26
+ def check
27
+ return @status unless @status.nil?
28
+ latest = Gem.latest_spec_for('vagrant-openstack-provider').version.version
29
+ current = VagrantPlugins::Openstack::VERSION
30
+
31
+ unless current =~ VERSION_PATTERN
32
+ @status = :unstable
33
+ print I18n.t('vagrant_openstack.version_unstable')
34
+ return
35
+ end
36
+
37
+ if latest.eql? current
38
+ @status = :latest
39
+ return
40
+ end
41
+
42
+ v_latest = latest.split('.').map(&:to_i)
43
+ v_current = current.split('.').map(&:to_i)
44
+
45
+ i_latest = v_latest[2] + v_latest[1] * 1000 + v_latest[0] * 1_000_000
46
+ i_current = v_current[2] + v_current[1] * 1000 + v_current[0] * 1_000_000
47
+
48
+ if i_current > i_latest
49
+ @status = :unstable
50
+ print I18n.t('vagrant_openstack.version_unstable')
51
+ return
52
+ end
53
+
54
+ @status = :outdated
55
+ print I18n.t('vagrant_openstack.version_outdated', latest: latest, current: current)
56
+ end
57
+
58
+ private
59
+
60
+ def print(message)
61
+ puts message.yellow
62
+ puts ''
63
+ end
64
+ end
65
+
66
+ # rubocop:disable Lint/HandleExceptions
67
+ def self.check_version
68
+ timeout(3, Errors::Timeout) do
69
+ VersionChecker.instance.check
70
+ end
71
+ rescue
72
+ # Do nothing whatever the failure cause
73
+ end
74
+ # rubocop:enable Lint/HandleExceptions
75
+ end
76
+ end
@@ -1,7 +1,7 @@
1
1
  en:
2
2
  vagrant_openstack:
3
3
  global_error: |-
4
- An unknow error happened in Vagrant OpenStack provider
4
+ An unknown error happened in Vagrant OpenStack provider
5
5
 
6
6
  To easily debug what happened, we recommend to set the environment
7
7
  variable VAGRANT_OPENSTACK_LOG to debug
@@ -15,6 +15,20 @@ en:
15
15
 
16
16
  We are looking for feedback, so feel free to ask questions or
17
17
  describe features you would like to see in this provider.
18
+ version_outdated: |-
19
+ You're not using the latest version of the 'vagrant-openstack-provider' plugin.
20
+ The latest version is %{latest}, yours is %{current}. You should update to the latest
21
+ version running the command :
22
+
23
+ $ vagrant plugin update vagrant-openstack-provider
24
+ version_unstable: |-
25
+ You're not running a stable version of the 'vagrant-openstack-provider' plugin.
26
+ Unless you are either developing on vagrant or have deliberatly installed a not
27
+ stable version, you should uninstall it an install the latest stable version
28
+ running commands :
29
+
30
+ $ vagrant plugin uninstall vagrant-openstack-provider
31
+ $ vagrant plugin install vagrant-openstack-provider
18
32
  already_created: |-
19
33
  The server is already created.
20
34
  create_stack: |-
@@ -70,7 +84,7 @@ en:
70
84
  waiting_for_stack_deleted: |-
71
85
  Waiting for Heat Stack to be created...
72
86
  warn_networks: |-
73
- Warning! The Openstack provider doesn't support any of the Vagrant
87
+ Warning! The OpenStack provider doesn't support any of the Vagrant
74
88
  high-level network configurations (`config.vm.network`). They
75
89
  will be silently ignored.
76
90
  warn_network_identifier_is_assumed_to_be_an_id: |-
@@ -106,7 +120,7 @@ en:
106
120
  Metadata must be a hash.
107
121
  keypair_name_required: |-
108
122
  Warning! You have specified ssh.private_key_path in your Vagrant configuration.
109
- but nor keypair_name neither public_key_path are present. The openstack provider
123
+ but nor keypair_name neither public_key_path are present. The OpenStack provider
110
124
  will automatically generate a new keypair and your configuration option
111
125
  ssh.private_key_path will be overriden
112
126
  private_key_missing: |-
@@ -153,6 +167,9 @@ en:
153
167
  no_matching_image: |-
154
168
  No matching image was found! Please check your image setting to
155
169
  make sure you have a valid image chosen.
170
+ conflict_boot_volume: |-
171
+ When booting from an existing volume it is not authorized to specify in your Vagrantfile either 'image' or 'size' or 'delete_on_destroy'.
172
+ When booting from a newly creating volume it is not authorized to specify in your Vagrantfile either 'id' or 'name'.
156
173
  sync_method_error: |-
157
174
  Value '%{sync_method_value}' is not allowed for 'sync_method' configuration parameter. Valid values are 'rsync' and 'none'
158
175
  rsync_error: |-
@@ -355,7 +372,7 @@ en:
355
372
 
356
373
  command:
357
374
  main_synopsis: |-
358
- Openstack provider specific commands
375
+ OpenStack provider specific commands
359
376
  main_usage : |-
360
377
  Usage: vagrant openstack command
361
378
  available_subcommands: |-
@@ -4,7 +4,6 @@ include VagrantPlugins::Openstack::Action
4
4
  include VagrantPlugins::Openstack::HttpUtils
5
5
 
6
6
  describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
7
-
8
7
  let(:app) do
9
8
  double.tap do |app|
10
9
  app.stub(:call)
@@ -160,7 +159,7 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
160
159
  end
161
160
 
162
161
  let(:env) do
163
- Hash.new.tap do |env|
162
+ {}.tap do |env|
164
163
  env[:ui] = double
165
164
  env[:ui].stub(:info).with(anything)
166
165
  env[:ui].stub(:warn).with(anything)
@@ -309,9 +308,9 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
309
308
  @action.call(env)
310
309
 
311
310
  expect(env[:openstack_client].session.endpoints)
312
- .to eq(compute: 'http://france.nova/v2/projectId',
313
- network: 'http://france.neutron/v2.0',
314
- image: 'http://france.glance/v2.0')
311
+ .to eq(compute: 'http://france.nova/v2/projectId',
312
+ network: 'http://france.neutron/v2.0',
313
+ image: 'http://france.glance/v2.0')
315
314
  end
316
315
  end
317
316
 
@@ -417,10 +416,10 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
417
416
  @action.call(env)
418
417
 
419
418
  expect(env[:openstack_client].session.endpoints)
420
- .to eq(compute: 'http://nova/v2/projectId/admin',
421
- network: 'http://neutron/v2.0/admin',
422
- volume: 'http://cinder/v2/projectId/admin',
423
- image: 'http://glance/v2.0/admin')
419
+ .to eq(compute: 'http://nova/v2/projectId/admin',
420
+ network: 'http://neutron/v2.0/admin',
421
+ volume: 'http://cinder/v2/projectId/admin',
422
+ image: 'http://glance/v2.0/admin')
424
423
  end
425
424
  end
426
425
  end
@@ -464,8 +463,8 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
464
463
  @action.call(env)
465
464
 
466
465
  expect(env[:openstack_client].session.endpoints)
467
- .to eq(compute: 'http://nova/v2/projectId/internal',
468
- volume: 'http://cinder/v2/projectId/internal')
466
+ .to eq(compute: 'http://nova/v2/projectId/internal',
467
+ volume: 'http://cinder/v2/projectId/internal')
469
468
  end
470
469
  end
471
470
  end
@@ -531,10 +530,10 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
531
530
  @action.call(env)
532
531
 
533
532
  expect(env[:openstack_client].session.endpoints)
534
- .to eq(compute: 'http://nova/v2/projectId',
535
- network: 'http://neutron/v2.0',
536
- volume: 'http://cinder/v2/projectId',
537
- image: 'http://glance/v2.0')
533
+ .to eq(compute: 'http://nova/v2/projectId',
534
+ network: 'http://neutron/v2.0',
535
+ volume: 'http://cinder/v2/projectId',
536
+ image: 'http://glance/v2.0')
538
537
  end
539
538
  end
540
539
  end
@@ -573,8 +572,8 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
573
572
  @action.call(env)
574
573
 
575
574
  expect(env[:openstack_client].session.endpoints)
576
- .to eq(compute: 'http://nova/v2/projectId',
577
- image: 'http://glance/v1')
575
+ .to eq(compute: 'http://nova/v2/projectId',
576
+ image: 'http://glance/v1')
578
577
  end
579
578
  end
580
579
 
@@ -603,7 +602,6 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
603
602
  end
604
603
 
605
604
  context 'with no matching versions for network service' do
606
-
607
605
  let(:neutron) do
608
606
  double.tap do |neutron|
609
607
  neutron.stub(:get_api_version_list).with(anything, anything) do
@@ -690,7 +688,7 @@ describe VagrantPlugins::Openstack::Action::ConnectOpenstack do
690
688
  @action.call(env)
691
689
 
692
690
  expect(env[:openstack_client].session.endpoints)
693
- .to eq(compute: 'http://nova/v2/projectId', identity: 'http://keystone/v2.0')
691
+ .to eq(compute: 'http://nova/v2/projectId', identity: 'http://keystone/v2.0')
694
692
  end
695
693
  end
696
694
  end
@@ -7,7 +7,6 @@ include VagrantPlugins::Openstack::HttpUtils
7
7
  include VagrantPlugins::Openstack::Domain
8
8
 
9
9
  describe VagrantPlugins::Openstack::Action::CreateServer do
10
-
11
10
  let(:config) do
12
11
  double('config').tap do |config|
13
12
  config.stub(:tenant_name) { 'testTenant' }
@@ -41,7 +40,7 @@ describe VagrantPlugins::Openstack::Action::CreateServer do
41
40
  end
42
41
 
43
42
  let(:env) do
44
- Hash.new.tap do |env|
43
+ {}.tap do |env|
45
44
  env[:ui] = double('ui')
46
45
  env[:ui].stub(:info).with(anything)
47
46
  env[:machine] = double('machine')
@@ -124,18 +123,19 @@ describe VagrantPlugins::Openstack::Action::CreateServer do
124
123
  context 'with all options specified' do
125
124
  it 'calls nova with all the options' do
126
125
  nova.stub(:create_server).with(
127
- env,
128
- name: 'testName',
129
- flavor_ref: flavor.id,
130
- image_ref: image.id,
131
- volume_boot: nil,
132
- networks: [{ uuid: 'test-networks-1' }, { uuid: 'test-networks-2', fixed_ip: '1.2.3.4' }],
133
- keypair: 'test-keypair',
134
- availability_zone: 'test-az',
135
- scheduler_hints: 'test-sched-hints',
136
- security_groups: ['test-sec-groups'],
137
- user_data: 'test-user_data',
138
- metadata: 'test-metadata') do '1234'
126
+ env,
127
+ name: 'testName',
128
+ flavor_ref: flavor.id,
129
+ image_ref: image.id,
130
+ volume_boot: nil,
131
+ networks: [{ uuid: 'test-networks-1' }, { uuid: 'test-networks-2', fixed_ip: '1.2.3.4' }],
132
+ keypair: 'test-keypair',
133
+ availability_zone: 'test-az',
134
+ scheduler_hints: 'test-sched-hints',
135
+ security_groups: ['test-sec-groups'],
136
+ user_data: 'test-user_data',
137
+ metadata: 'test-metadata') do
138
+ '1234'
139
139
  end
140
140
 
141
141
  options = {
@@ -169,7 +169,8 @@ describe VagrantPlugins::Openstack::Action::CreateServer do
169
169
  scheduler_hints: nil,
170
170
  security_groups: [],
171
171
  user_data: nil,
172
- metadata: nil) do '1234'
172
+ metadata: nil) do
173
+ '1234'
173
174
  end
174
175
 
175
176
  options = {
@@ -193,19 +194,19 @@ describe VagrantPlugins::Openstack::Action::CreateServer do
193
194
  describe 'waiting_for_server_to_be_built' do
194
195
  context 'when server is not yet active' do
195
196
  it 'become active after one retry' do
196
- nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' }, { 'status' => 'ACTIVE' })
197
+ nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' }, 'status' => 'ACTIVE')
197
198
  nova.should_receive(:get_server_details).with(env, 'server-01').exactly(2).times
198
199
  config.stub(:server_create_timeout) { 5 }
199
200
  @action.waiting_for_server_to_be_built(env, 'server-01', 1)
200
201
  end
201
202
  it 'timeout before the server become active' do
202
- nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' }, { 'status' => 'BUILD' })
203
+ nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' }, 'status' => 'BUILD')
203
204
  nova.should_receive(:get_server_details).with(env, 'server-01').at_least(2).times
204
205
  config.stub(:server_create_timeout) { 3 }
205
206
  expect { @action.waiting_for_server_to_be_built(env, 'server-01', 1) }.to raise_error Errors::Timeout
206
207
  end
207
208
  it 'raise an error after one retry' do
208
- nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' }, { 'status' => 'ERROR' })
209
+ nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' }, 'status' => 'ERROR')
209
210
  nova.should_receive(:get_server_details).with(env, 'server-01').exactly(2).times
210
211
  config.stub(:server_create_timeout) { 3 }
211
212
  expect { @action.waiting_for_server_to_be_built(env, 'server-01', 1) }.to raise_error Errors::ServerStatusError
@@ -7,7 +7,6 @@ include VagrantPlugins::Openstack::HttpUtils
7
7
  include VagrantPlugins::Openstack::Domain
8
8
 
9
9
  describe VagrantPlugins::Openstack::Action::CreateStack do
10
-
11
10
  let(:config) do
12
11
  double('config').tap do |config|
13
12
  config.stub(:stacks) do
@@ -31,7 +30,7 @@ describe VagrantPlugins::Openstack::Action::CreateStack do
31
30
  end
32
31
 
33
32
  let(:env) do
34
- Hash.new.tap do |env|
33
+ {}.tap do |env|
35
34
  env[:ui] = double('ui')
36
35
  env[:ui].stub(:info).with(anything)
37
36
  env[:machine] = double('machine')
@@ -61,7 +60,6 @@ describe VagrantPlugins::Openstack::Action::CreateStack do
61
60
  image: CoreOS
62
61
  flavor: 1_vCPU_RAM_512M_HD_10G
63
62
  '))
64
-
65
63
  end
66
64
 
67
65
  describe 'call' do
@@ -79,19 +77,19 @@ describe VagrantPlugins::Openstack::Action::CreateStack do
79
77
  describe 'waiting_for_server_to_be_built' do
80
78
  context 'when server is not yet active' do
81
79
  it 'become active after one retry' do
82
- heat.stub(:get_stack_details).and_return({ 'stack_status' => 'CREATE_IN_PROGRESS' }, { 'stack_status' => 'CREATE_COMPLETE' })
80
+ heat.stub(:get_stack_details).and_return({ 'stack_status' => 'CREATE_IN_PROGRESS' }, 'stack_status' => 'CREATE_COMPLETE')
83
81
  heat.should_receive(:get_stack_details).with(env, 'stack1', 'id-01').exactly(2).times
84
82
  config.stub(:stack_create_timeout) { 5 }
85
83
  @action.waiting_for_stack_to_be_created(env, 'stack1', 'id-01', 1)
86
84
  end
87
85
  it 'timeout before the server become active' do
88
- heat.stub(:get_stack_details).and_return({ 'stack_status' => 'CREATE_IN_PROGRESS' }, { 'stack_status' => 'CREATE_IN_PROGRESS' })
86
+ heat.stub(:get_stack_details).and_return({ 'stack_status' => 'CREATE_IN_PROGRESS' }, 'stack_status' => 'CREATE_IN_PROGRESS')
89
87
  heat.should_receive(:get_stack_details).with(env, 'stack1', 'id-01').at_least(2).times
90
88
  config.stub(:stack_create_timeout) { 3 }
91
89
  expect { @action.waiting_for_stack_to_be_created(env, 'stack1', 'id-01', 1) }.to raise_error Errors::Timeout
92
90
  end
93
91
  it 'raise an error after one retry' do
94
- heat.stub(:get_stack_details).and_return({ 'stack_status' => 'CREATE_IN_PROGRESS' }, { 'stack_status' => 'CREATE_FAILED' })
92
+ heat.stub(:get_stack_details).and_return({ 'stack_status' => 'CREATE_IN_PROGRESS' }, 'stack_status' => 'CREATE_FAILED')
95
93
  heat.should_receive(:get_stack_details).with(env, 'stack1', 'id-01').exactly(2).times
96
94
  config.stub(:stack_create_timeout) { 3 }
97
95
  expect { @action.waiting_for_stack_to_be_created(env, 'stack1', 'id-01', 1) }.to raise_error Errors::StackStatusError
@@ -1,7 +1,6 @@
1
1
  require 'vagrant-openstack-provider/spec_helper'
2
2
 
3
3
  describe VagrantPlugins::Openstack::Action::DeleteServer do
4
-
5
4
  let(:nova) do
6
5
  double('nova').tap do |app|
7
6
  app.stub(:delete_server)
@@ -20,7 +19,7 @@ describe VagrantPlugins::Openstack::Action::DeleteServer do
20
19
  end
21
20
 
22
21
  let(:env) do
23
- Hash.new.tap do |env|
22
+ {}.tap do |env|
24
23
  env[:ui] = double('ui')
25
24
  env[:ui].stub(:info).with(anything)
26
25
  env[:ui].stub(:error).with(anything)
@@ -68,24 +67,23 @@ describe VagrantPlugins::Openstack::Action::DeleteServer do
68
67
  @action.waiting_for_instance_to_be_deleted(env, 'server-01', 1)
69
68
  end
70
69
  it 'become deleted after one retry' do
71
- nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' }, { 'status' => 'DELETED' })
70
+ nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' }, 'status' => 'DELETED')
72
71
  nova.should_receive(:get_server_details).with(env, 'server-01').exactly(2).times
73
72
  config.stub(:server_delete_timeout) { 5 }
74
73
  @action.waiting_for_instance_to_be_deleted(env, 'server-01', 1)
75
74
  end
76
75
  it 'timeout before the server become active' do
77
- nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' }, { 'status' => 'ACTIVE' })
76
+ nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' }, 'status' => 'ACTIVE')
78
77
  nova.should_receive(:get_server_details).with(env, 'server-01').at_least(2).times
79
78
  config.stub(:server_delete_timeout) { 3 }
80
79
  expect { @action.waiting_for_instance_to_be_deleted(env, 'server-01', 1) }.to raise_error Errors::Timeout
81
80
  end
82
81
  it 'raise an error after one retry' do
83
- nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' }, { 'status' => 'ERROR' })
82
+ nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' }, 'status' => 'ERROR')
84
83
  nova.should_receive(:get_server_details).with(env, 'server-01').exactly(2).times
85
84
  config.stub(:server_delete_timeout) { 3 }
86
85
  expect { @action.waiting_for_instance_to_be_deleted(env, 'server-01', 1) }.to raise_error Errors::ServerStatusError
87
86
  end
88
87
  end
89
88
  end
90
-
91
89
  end