vagrant-openstack-provider 0.3.4.pre → 0.4.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.
@@ -14,9 +14,11 @@ describe VagrantPlugins::Openstack::Action::ReadSSHInfo do
14
14
  config.stub(:tenant_name) { 'testTenant' }
15
15
  config.stub(:username) { 'username' }
16
16
  config.stub(:password) { 'password' }
17
- config.stub(:ssh_username) { 'sshuser' }
17
+ config.stub(:ssh_username) { 'test_username' }
18
18
  config.stub(:floating_ip) { nil }
19
19
  config.stub(:floating_ip_pool) { nil }
20
+ config.stub(:keypair_name) { nil }
21
+ config.stub(:public_key_path) { nil }
20
22
  end
21
23
  end
22
24
 
@@ -36,12 +38,26 @@ describe VagrantPlugins::Openstack::Action::ReadSSHInfo do
36
38
  end
37
39
  end
38
40
 
41
+ let(:ssh_config) do
42
+ double('ssh_config').tap do |config|
43
+ config.stub(:username) { 'sshuser' }
44
+ config.stub(:port) { nil }
45
+ end
46
+ end
47
+
48
+ let(:machine_config) do
49
+ double('machine_config').tap do |config|
50
+ config.stub(:ssh) { ssh_config }
51
+ end
52
+ end
53
+
39
54
  let(:env) do
40
55
  Hash.new.tap do |env|
41
56
  env[:ui] = double('ui')
42
57
  env[:ui].stub(:info).with(anything)
43
58
  env[:machine] = double('machine')
44
59
  env[:machine].stub(:provider_config) { config }
60
+ env[:machine].stub(:config) { machine_config }
45
61
  env[:machine].stub(:id) { '1234' }
46
62
  env[:machine].stub(:data_dir) { '/data/dir' }
47
63
  env[:openstack_client] = double('openstack_client')
@@ -56,6 +72,36 @@ describe VagrantPlugins::Openstack::Action::ReadSSHInfo do
56
72
  end
57
73
 
58
74
  describe 'read_ssh_info' do
75
+ context 'with deprecated ssh_username specified' do
76
+ context 'with ssh.username specified' do
77
+ it 'returns ssh.username' do
78
+ ssh_config.stub(:username) { 'sshuser' }
79
+ config.stub(:ssh_username) { 'test_username' }
80
+ config.stub(:floating_ip) { '80.80.80.80' }
81
+ config.stub(:keypair_name) { 'my_keypair' }
82
+ @action.read_ssh_info(env).should eq(host: '80.80.80.80', port: 22, username: 'sshuser')
83
+ end
84
+ end
85
+ context 'without ssh.username specified' do
86
+ it 'returns ssh.username' do
87
+ ssh_config.stub(:username) { nil }
88
+ config.stub(:ssh_username) { 'test_username' }
89
+ config.stub(:floating_ip) { '80.80.80.80' }
90
+ config.stub(:keypair_name) { 'my_keypair' }
91
+ @action.read_ssh_info(env).should eq(host: '80.80.80.80', port: 22, username: 'test_username')
92
+ end
93
+ end
94
+ end
95
+
96
+ context 'with ssh.port overriden' do
97
+ it 'returns ssh.port' do
98
+ ssh_config.stub(:port) { 33 }
99
+ config.stub(:floating_ip) { '80.80.80.80' }
100
+ config.stub(:keypair_name) { 'my_keypair' }
101
+ @action.read_ssh_info(env).should eq(host: '80.80.80.80', port: 33, username: 'sshuser')
102
+ end
103
+ end
104
+
59
105
  context 'with config.floating_ip specified' do
60
106
  context 'with keypair_name specified' do
61
107
  it 'returns the specified floating ip' do
@@ -84,9 +130,7 @@ describe VagrantPlugins::Openstack::Action::ReadSSHInfo do
84
130
  end
85
131
  end
86
132
  end
87
- end
88
133
 
89
- describe 'read_ssh_info' do
90
134
  context 'without config.floating_ip specified' do
91
135
  it 'return the a floating_ip found by querying server details' do
92
136
  nova.stub(:get_server_details).with(env, '1234') do
@@ -106,4 +150,5 @@ describe VagrantPlugins::Openstack::Action::ReadSSHInfo do
106
150
  end
107
151
  end
108
152
  end
153
+
109
154
  end
@@ -0,0 +1,114 @@
1
+ require 'vagrant-openstack-provider/spec_helper'
2
+
3
+ describe VagrantPlugins::Openstack::CinderClient do
4
+
5
+ let(:env) do
6
+ Hash.new
7
+ end
8
+
9
+ let(:session) do
10
+ VagrantPlugins::Openstack.session
11
+ end
12
+
13
+ before :each do
14
+ session.token = '123456'
15
+ session.project_id = 'a1b2c3'
16
+ session.endpoints = { volume: 'http://cinder' }
17
+ @cinder_client = VagrantPlugins::Openstack::CinderClient.instance
18
+ end
19
+
20
+ describe 'get_all_volumes' do
21
+ context 'on api v1' do
22
+ it 'returns volumes with details' do
23
+
24
+ stub_request(:get, 'http://cinder/volumes/detail')
25
+ .with(
26
+ headers:
27
+ {
28
+ 'Accept' => 'application/json',
29
+ 'X-Auth-Token' => '123456'
30
+ })
31
+ .to_return(
32
+ status: 200,
33
+ body: '
34
+ {
35
+ "volumes": [
36
+ {
37
+ "id": "987",
38
+ "display_name": "vol-01",
39
+ "size": "2",
40
+ "status": "available",
41
+ "bootable": "true",
42
+ "attachments": []
43
+ },
44
+ {
45
+ "id": "654",
46
+ "display_name": "vol-02",
47
+ "size": "4",
48
+ "status": "in-use",
49
+ "bootable": "false",
50
+ "attachments": [
51
+ {
52
+ "server_id": "inst-01",
53
+ "device": "/dev/vdc"
54
+ }
55
+ ]
56
+ }
57
+ ]
58
+ }
59
+ ')
60
+
61
+ volumes = @cinder_client.get_all_volumes(env)
62
+
63
+ expect(volumes).to eq [Volume.new('987', 'vol-01', '2', 'available', 'true', nil, nil),
64
+ Volume.new('654', 'vol-02', '4', 'in-use', 'false', 'inst-01', '/dev/vdc')]
65
+ end
66
+ end
67
+
68
+ context 'on api v2' do
69
+ it 'returns volumes with details' do
70
+
71
+ stub_request(:get, 'http://cinder/volumes/detail')
72
+ .with(
73
+ headers:
74
+ {
75
+ 'Accept' => 'application/json',
76
+ 'X-Auth-Token' => '123456'
77
+ })
78
+ .to_return(
79
+ status: 200,
80
+ body: '
81
+ {
82
+ "volumes": [
83
+ {
84
+ "id": "987",
85
+ "name": "vol-01",
86
+ "size": "2",
87
+ "status": "available",
88
+ "bootable": "true",
89
+ "attachments": []
90
+ },
91
+ {
92
+ "id": "654",
93
+ "name": "vol-02",
94
+ "size": "4",
95
+ "status": "in-use",
96
+ "bootable": "false",
97
+ "attachments": [
98
+ {
99
+ "server_id": "inst-01",
100
+ "device": "/dev/vdc"
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ }')
106
+
107
+ volumes = @cinder_client.get_all_volumes(env)
108
+
109
+ expect(volumes).to eq [Volume.new('987', 'vol-01', '2', 'available', 'true', nil, nil),
110
+ Volume.new('654', 'vol-02', '4', 'in-use', 'false', 'inst-01', '/dev/vdc')]
111
+ end
112
+ end
113
+ end
114
+ end
@@ -114,6 +114,37 @@ describe VagrantPlugins::Openstack::NovaClient do
114
114
  expect(instance_id).to eq('o1o2o3')
115
115
  end
116
116
 
117
+ context 'with all options specified' do
118
+ it 'returns new instance id' do
119
+ stub_request(:post, 'http://nova/a1b2c3/servers')
120
+ .with(
121
+ body: '{"server":{"name":"inst","imageRef":"img","flavorRef":"flav","key_name":"key",'\
122
+ '"security_groups":["default"],"user_data":"user_data_test","metadata":"metadata_test"},'\
123
+ '"scheduler_hints":"sched_hints_test"}',
124
+ headers:
125
+ {
126
+ 'Accept' => 'application/json',
127
+ 'Content-Type' => 'application/json',
128
+ 'X-Auth-Token' => '123456'
129
+ })
130
+ .to_return(status: 202, body: '{ "server": { "id": "o1o2o3" } }')
131
+
132
+ instance_id = @nova_client.create_server(
133
+ env,
134
+ name: 'inst',
135
+ image_ref: 'img',
136
+ flavor_ref: 'flav',
137
+ networks: nil,
138
+ keypair: 'key',
139
+ security_groups: ['default'],
140
+ user_data: 'user_data_test',
141
+ metadata: 'metadata_test',
142
+ scheduler_hints: 'sched_hints_test')
143
+
144
+ expect(instance_id).to eq('o1o2o3')
145
+ end
146
+ end
147
+
117
148
  context 'with one two networks' do
118
149
  it 'returns new instance id' do
119
150
 
@@ -154,6 +185,25 @@ describe VagrantPlugins::Openstack::NovaClient do
154
185
  end
155
186
  end
156
187
 
188
+ context 'with volume_boot' do
189
+ it 'returns new instance id' do
190
+
191
+ stub_request(:post, 'http://nova/a1b2c3/servers')
192
+ .with(
193
+ body: '{"server":{"name":"inst","block_device_mapping":[{"volume_id":"vol","device_name":"vda"}],"flavorRef":"flav","key_name":"key"}}',
194
+ headers:
195
+ {
196
+ 'Accept' => 'application/json',
197
+ 'Content-Type' => 'application/json',
198
+ 'X-Auth-Token' => '123456'
199
+ })
200
+ .to_return(status: 202, body: '{ "server": { "id": "o1o2o3" } }')
201
+
202
+ instance_id = @nova_client.create_server(env, name: 'inst', volume_boot: { id: 'vol', device: 'vda' }, flavor_ref: 'flav', keypair: 'key')
203
+
204
+ expect(instance_id).to eq('o1o2o3')
205
+ end
206
+ end
157
207
  end
158
208
  end
159
209
 
@@ -3,17 +3,6 @@ require 'vagrant-openstack-provider/spec_helper'
3
3
  describe VagrantPlugins::Openstack::Command::FloatingIpList do
4
4
  describe 'cmd' do
5
5
 
6
- let(:config) do
7
- double('config').tap do |config|
8
- config.stub(:openstack_auth_url) { 'http://keystoneAuthV2' }
9
- config.stub(:openstack_compute_url) { nil }
10
- config.stub(:openstack_network_url) { nil }
11
- config.stub(:tenant_name) { 'testTenant' }
12
- config.stub(:username) { 'username' }
13
- config.stub(:password) { 'password' }
14
- end
15
- end
16
-
17
6
  let(:nova) do
18
7
  double('nova').tap do |nova|
19
8
  nova.stub(:get_floating_ip_pools) do
@@ -61,6 +50,8 @@ describe VagrantPlugins::Openstack::Command::FloatingIpList do
61
50
  end
62
51
 
63
52
  it 'should get floating ip and floating ip pool from server' do
53
+ nova.should_receive(:get_floating_ip_pools).with(env)
54
+ nova.should_receive(:get_floating_ips).with(env)
64
55
  @floating_ip_list_cmd.cmd('floatingip-list', ['--'], env)
65
56
  end
66
57
  end
@@ -0,0 +1,33 @@
1
+ require 'vagrant-openstack-provider/spec_helper'
2
+
3
+ describe VagrantPlugins::Openstack::Command::FloatingIpList do
4
+ describe 'cmd' do
5
+
6
+ let(:cinder) do
7
+ double('cinder').tap do |cinder|
8
+ cinder.stub(:get_all_volumes) do
9
+ [Volume.new('987', 'vol-01', '2', 'available', 'true', nil, nil),
10
+ Volume.new('654', 'vol-02', '4', 'in-use', 'false', 'inst-01', '/dev/vdc')]
11
+ end
12
+ end
13
+ end
14
+
15
+ let(:env) do
16
+ Hash.new.tap do |env|
17
+ env[:ui] = double('ui')
18
+ env[:ui].stub(:info).with(anything)
19
+ env[:openstack_client] = double
20
+ env[:openstack_client].stub(:cinder) { cinder }
21
+ end
22
+ end
23
+
24
+ before :each do
25
+ @volume_list_cmd = VagrantPlugins::Openstack::Command::VolumeList.new(nil, env)
26
+ end
27
+
28
+ it 'should get volumes list from server' do
29
+ cinder.should_receive(:get_all_volumes).with(env)
30
+ @volume_list_cmd.cmd('volume-list', [], env)
31
+ end
32
+ end
33
+ end
@@ -22,6 +22,11 @@ describe VagrantPlugins::Openstack::Config do
22
22
  its(:public_key_path) { should be_nil }
23
23
  its(:availability_zone) { should be_nil }
24
24
  its(:ssh_username) { should be_nil }
25
+ its(:floating_ip_pool_always_allocate) { should be_false }
26
+ its(:scheduler_hints) { should be_nil }
27
+ its(:security_groups) { should be_nil }
28
+ its(:user_data) { should be_nil }
29
+ its(:metadata) { should be_nil }
25
30
  end
26
31
 
27
32
  describe 'overriding defaults' do
@@ -35,6 +40,11 @@ describe VagrantPlugins::Openstack::Config do
35
40
  :username,
36
41
  :keypair_name,
37
42
  :ssh_username,
43
+ :floating_ip_pool_always_allocate,
44
+ :scheduler_hints,
45
+ :security_groups,
46
+ :user_data,
47
+ :metadata,
38
48
  :availability_zone,
39
49
  :public_key_path].each do |attribute|
40
50
  it "should not default #{attribute} if overridden" do
@@ -64,6 +74,7 @@ describe VagrantPlugins::Openstack::Config do
64
74
  error_message.stub(:yellow) { 'Yellowed Error message ' }
65
75
  machine.stub_chain(:env, :root_path).and_return '/'
66
76
  ssh.stub(:private_key_path) { 'private key path' }
77
+ ssh.stub(:username) { 'ssh username' }
67
78
  config.stub(:ssh) { ssh }
68
79
  machine.stub(:config) { config }
69
80
  subject.username = 'foo'
@@ -86,6 +97,15 @@ describe VagrantPlugins::Openstack::Config do
86
97
  end
87
98
  end
88
99
 
100
+ context 'with no ssh username provider' do
101
+ it 'should raise an error' do
102
+ ssh.stub(:username) { nil }
103
+ subject.ssh_username = nil
104
+ I18n.should_receive(:t).with('vagrant_openstack.config.ssh_username_required').and_return error_message
105
+ validation_errors.first.should == error_message
106
+ end
107
+ end
108
+
89
109
  context 'with good values' do
90
110
  it 'should validate' do
91
111
  validation_errors.should be_empty
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-openstack-provider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4.pre
4
+ version: 0.4.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Guillaume Giamarchi
@@ -9,11 +10,12 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-09-19 00:00:00.000000000 Z
13
+ date: 2014-09-22 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: json
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
20
  - - '='
19
21
  - !ruby/object:Gem::Version
@@ -21,6 +23,7 @@ dependencies:
21
23
  type: :runtime
22
24
  prerelease: false
23
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
28
  - - '='
26
29
  - !ruby/object:Gem::Version
@@ -28,6 +31,7 @@ dependencies:
28
31
  - !ruby/object:Gem::Dependency
29
32
  name: rest-client
30
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
31
35
  requirements:
32
36
  - - ~>
33
37
  - !ruby/object:Gem::Version
@@ -35,6 +39,7 @@ dependencies:
35
39
  type: :runtime
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
38
43
  requirements:
39
44
  - - ~>
40
45
  - !ruby/object:Gem::Version
@@ -42,6 +47,7 @@ dependencies:
42
47
  - !ruby/object:Gem::Dependency
43
48
  name: terminal-table
44
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
45
51
  requirements:
46
52
  - - '='
47
53
  - !ruby/object:Gem::Version
@@ -49,6 +55,7 @@ dependencies:
49
55
  type: :runtime
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
52
59
  requirements:
53
60
  - - '='
54
61
  - !ruby/object:Gem::Version
@@ -56,6 +63,7 @@ dependencies:
56
63
  - !ruby/object:Gem::Dependency
57
64
  name: sshkey
58
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
59
67
  requirements:
60
68
  - - '='
61
69
  - !ruby/object:Gem::Version
@@ -63,6 +71,7 @@ dependencies:
63
71
  type: :runtime
64
72
  prerelease: false
65
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
66
75
  requirements:
67
76
  - - '='
68
77
  - !ruby/object:Gem::Version
@@ -70,6 +79,7 @@ dependencies:
70
79
  - !ruby/object:Gem::Dependency
71
80
  name: colorize
72
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
73
83
  requirements:
74
84
  - - '='
75
85
  - !ruby/object:Gem::Version
@@ -77,6 +87,7 @@ dependencies:
77
87
  type: :runtime
78
88
  prerelease: false
79
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
80
91
  requirements:
81
92
  - - '='
82
93
  - !ruby/object:Gem::Version
@@ -84,20 +95,23 @@ dependencies:
84
95
  - !ruby/object:Gem::Dependency
85
96
  name: rake
86
97
  requirement: !ruby/object:Gem::Requirement
98
+ none: false
87
99
  requirements:
88
- - - '>='
100
+ - - ! '>='
89
101
  - !ruby/object:Gem::Version
90
102
  version: '0'
91
103
  type: :development
92
104
  prerelease: false
93
105
  version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
94
107
  requirements:
95
- - - '>='
108
+ - - ! '>='
96
109
  - !ruby/object:Gem::Version
97
110
  version: '0'
98
111
  - !ruby/object:Gem::Dependency
99
112
  name: rspec
100
113
  requirement: !ruby/object:Gem::Requirement
114
+ none: false
101
115
  requirements:
102
116
  - - ~>
103
117
  - !ruby/object:Gem::Version
@@ -105,6 +119,7 @@ dependencies:
105
119
  type: :development
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
108
123
  requirements:
109
124
  - - ~>
110
125
  - !ruby/object:Gem::Version
@@ -112,15 +127,17 @@ dependencies:
112
127
  - !ruby/object:Gem::Dependency
113
128
  name: aruba
114
129
  requirement: !ruby/object:Gem::Requirement
130
+ none: false
115
131
  requirements:
116
- - - '>='
132
+ - - ! '>='
117
133
  - !ruby/object:Gem::Version
118
134
  version: '0'
119
135
  type: :development
120
136
  prerelease: false
121
137
  version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
122
139
  requirements:
123
- - - '>='
140
+ - - ! '>='
124
141
  - !ruby/object:Gem::Version
125
142
  version: '0'
126
143
  description: Enables Vagrant to manage machines in Openstack Cloud.
@@ -165,6 +182,7 @@ files:
165
182
  - lib/vagrant-openstack-provider/action/sync_folders.rb
166
183
  - lib/vagrant-openstack-provider/action/wait_active.rb
167
184
  - lib/vagrant-openstack-provider/action/wait_stop.rb
185
+ - lib/vagrant-openstack-provider/client/cinder.rb
168
186
  - lib/vagrant-openstack-provider/client/domain.rb
169
187
  - lib/vagrant-openstack-provider/client/http_utils.rb
170
188
  - lib/vagrant-openstack-provider/client/keystone.rb
@@ -179,6 +197,7 @@ files:
179
197
  - lib/vagrant-openstack-provider/command/main.rb
180
198
  - lib/vagrant-openstack-provider/command/network_list.rb
181
199
  - lib/vagrant-openstack-provider/command/utils.rb
200
+ - lib/vagrant-openstack-provider/command/volume_list.rb
182
201
  - lib/vagrant-openstack-provider/config.rb
183
202
  - lib/vagrant-openstack-provider/errors.rb
184
203
  - lib/vagrant-openstack-provider/plugin.rb
@@ -188,11 +207,13 @@ files:
188
207
  - spec/vagrant-openstack-provider/action/connect_openstack_spec.rb
189
208
  - spec/vagrant-openstack-provider/action/create_server_spec.rb
190
209
  - spec/vagrant-openstack-provider/action/read_ssh_info_spec.rb
210
+ - spec/vagrant-openstack-provider/client/cinder_spec.rb
191
211
  - spec/vagrant-openstack-provider/client/keystone_spec.rb
192
212
  - spec/vagrant-openstack-provider/client/neutron_spec.rb
193
213
  - spec/vagrant-openstack-provider/client/nova_spec.rb
194
214
  - spec/vagrant-openstack-provider/client/utils_spec.rb
195
215
  - spec/vagrant-openstack-provider/command/floatingip_list_spec.rb
216
+ - spec/vagrant-openstack-provider/command/volume_list_spec.rb
196
217
  - spec/vagrant-openstack-provider/config_spec.rb
197
218
  - spec/vagrant-openstack-provider/provider_spec.rb
198
219
  - spec/vagrant-openstack-provider/spec_helper.rb
@@ -200,36 +221,45 @@ files:
200
221
  - vagrant-openstack-provider.gemspec
201
222
  homepage: https://github.com/ggiamarchi/vagrant-openstack-provider
202
223
  licenses: []
203
- metadata: {}
204
224
  post_install_message:
205
225
  rdoc_options: []
206
226
  require_paths:
207
227
  - lib
208
228
  required_ruby_version: !ruby/object:Gem::Requirement
229
+ none: false
209
230
  requirements:
210
- - - '>='
231
+ - - ! '>='
211
232
  - !ruby/object:Gem::Version
212
233
  version: '0'
234
+ segments:
235
+ - 0
236
+ hash: -4437050053646903495
213
237
  required_rubygems_version: !ruby/object:Gem::Requirement
238
+ none: false
214
239
  requirements:
215
- - - '>'
240
+ - - ! '>='
216
241
  - !ruby/object:Gem::Version
217
- version: 1.3.1
242
+ version: '0'
243
+ segments:
244
+ - 0
245
+ hash: -4437050053646903495
218
246
  requirements: []
219
247
  rubyforge_project:
220
- rubygems_version: 2.0.14
248
+ rubygems_version: 1.8.23.2
221
249
  signing_key:
222
- specification_version: 4
250
+ specification_version: 3
223
251
  summary: Enables Vagrant to manage machines in Openstack Cloud.
224
252
  test_files:
225
253
  - spec/vagrant-openstack-provider/action/connect_openstack_spec.rb
226
254
  - spec/vagrant-openstack-provider/action/create_server_spec.rb
227
255
  - spec/vagrant-openstack-provider/action/read_ssh_info_spec.rb
256
+ - spec/vagrant-openstack-provider/client/cinder_spec.rb
228
257
  - spec/vagrant-openstack-provider/client/keystone_spec.rb
229
258
  - spec/vagrant-openstack-provider/client/neutron_spec.rb
230
259
  - spec/vagrant-openstack-provider/client/nova_spec.rb
231
260
  - spec/vagrant-openstack-provider/client/utils_spec.rb
232
261
  - spec/vagrant-openstack-provider/command/floatingip_list_spec.rb
262
+ - spec/vagrant-openstack-provider/command/volume_list_spec.rb
233
263
  - spec/vagrant-openstack-provider/config_spec.rb
234
264
  - spec/vagrant-openstack-provider/provider_spec.rb
235
265
  - spec/vagrant-openstack-provider/spec_helper.rb