vagrant-openstack-provider 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +12 -5
- data/CHANGELOG.md +18 -0
- data/Gemfile +3 -2
- data/{LICENSE.txt → LICENSE} +2 -1
- data/lib/vagrant-openstack-provider/action.rb +3 -2
- data/lib/vagrant-openstack-provider/action/provision.rb +60 -0
- data/lib/vagrant-openstack-provider/action/read_ssh_info.rb +4 -0
- data/lib/vagrant-openstack-provider/client/domain.rb +2 -2
- data/lib/vagrant-openstack-provider/client/keystone.rb +17 -6
- data/lib/vagrant-openstack-provider/client/nova.rb +14 -3
- data/lib/vagrant-openstack-provider/command/abstract_command.rb +1 -0
- data/lib/vagrant-openstack-provider/command/main.rb +1 -3
- data/lib/vagrant-openstack-provider/config.rb +3 -3
- data/lib/vagrant-openstack-provider/config_resolver.rb +46 -16
- data/lib/vagrant-openstack-provider/errors.rb +15 -0
- data/lib/vagrant-openstack-provider/plugin.rb +7 -1
- data/lib/vagrant-openstack-provider/version.rb +11 -1
- data/lib/vagrant-openstack-provider/version_checker.rb +76 -0
- data/locales/en.yml +21 -4
- data/spec/vagrant-openstack-provider/action/connect_openstack_spec.rb +17 -19
- data/spec/vagrant-openstack-provider/action/create_server_spec.rb +19 -18
- data/spec/vagrant-openstack-provider/action/create_stack_spec.rb +4 -6
- data/spec/vagrant-openstack-provider/action/delete_server_spec.rb +4 -6
- data/spec/vagrant-openstack-provider/action/delete_stack_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/message_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/provision_spec.rb +104 -0
- data/spec/vagrant-openstack-provider/action/read_ssh_info_spec.rb +1 -3
- data/spec/vagrant-openstack-provider/action/read_state_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/resume_server_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/start_server_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/stop_server_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/suspend_server_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/sync_folders_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/wait_accessible_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/action/wait_active_spec.rb +3 -4
- data/spec/vagrant-openstack-provider/action/wait_stop_spec.rb +3 -4
- data/spec/vagrant-openstack-provider/action_spec.rb +0 -1
- data/spec/vagrant-openstack-provider/client/cinder_spec.rb +5 -8
- data/spec/vagrant-openstack-provider/client/glance_spec.rb +69 -70
- data/spec/vagrant-openstack-provider/client/heat_spec.rb +24 -28
- data/spec/vagrant-openstack-provider/client/keystone_spec.rb +34 -16
- data/spec/vagrant-openstack-provider/client/neutron_spec.rb +76 -80
- data/spec/vagrant-openstack-provider/client/nova_spec.rb +198 -168
- data/spec/vagrant-openstack-provider/client/utils_spec.rb +1 -3
- data/spec/vagrant-openstack-provider/command/flavor_list_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/command/floatingip_list_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/command/image_list_spec.rb +1 -6
- data/spec/vagrant-openstack-provider/command/network_list_spec.rb +1 -3
- data/spec/vagrant-openstack-provider/command/reset_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/command/subnet_list_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/command/volume_list_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/config_resolver_spec.rb +100 -6
- data/spec/vagrant-openstack-provider/config_spec.rb +2 -6
- data/spec/vagrant-openstack-provider/e2e_spec.rb.save +27 -0
- data/spec/vagrant-openstack-provider/spec_helper.rb +1 -0
- data/spec/vagrant-openstack-provider/utils_spec.rb +1 -2
- data/spec/vagrant-openstack-provider/version_checker_spec.rb +39 -0
- data/vagrant-openstack-provider.gemspec +4 -2
- metadata +29 -9
- data/gemfiles/latest_stable.gemfile +0 -10
- data/gemfiles/minimal_release.gemfile +0 -10
- data/gemfiles/previous_release.gemfile +0 -10
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::DeleteStack do
|
4
|
-
|
5
4
|
let(:heat) do
|
6
5
|
double('heat').tap do |app|
|
7
6
|
app.stub(:delete_stack)
|
@@ -15,7 +14,7 @@ describe VagrantPlugins::Openstack::Action::DeleteStack do
|
|
15
14
|
end
|
16
15
|
|
17
16
|
let(:env) do
|
18
|
-
|
17
|
+
{}.tap do |env|
|
19
18
|
env[:ui] = double('ui')
|
20
19
|
env[:ui].stub(:info).with(anything)
|
21
20
|
env[:ui].stub(:error).with(anything)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::Message do
|
4
|
-
|
5
4
|
let(:ui) do
|
6
5
|
double('ui').tap do |ui|
|
7
6
|
ui.stub(:info).with(anything)
|
@@ -10,7 +9,7 @@ describe VagrantPlugins::Openstack::Action::Message do
|
|
10
9
|
end
|
11
10
|
|
12
11
|
let(:env) do
|
13
|
-
|
12
|
+
{}.tap do |env|
|
14
13
|
env[:ui] = ui
|
15
14
|
end
|
16
15
|
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'vagrant-openstack-provider/spec_helper'
|
2
|
+
|
3
|
+
#
|
4
|
+
# Stubing all the interactions using the real
|
5
|
+
# provisioner classes is somehow complicated...
|
6
|
+
#
|
7
|
+
class FakeProvisioner
|
8
|
+
def provision
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class FakeShellProvisioner < FakeProvisioner
|
13
|
+
attr_accessor :config
|
14
|
+
|
15
|
+
def initialize(config)
|
16
|
+
@config = config
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
#
|
21
|
+
# Monkeypatch the VagrantPlugins::Shell module
|
22
|
+
# to enabled using an FakeShellProvisioner in
|
23
|
+
# place of a the real shell provisioner class
|
24
|
+
#
|
25
|
+
module VagrantPlugins
|
26
|
+
module Shell
|
27
|
+
Provisioner = FakeShellProvisioner
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe VagrantPlugins::Openstack::Action::ProvisionWrapper do
|
32
|
+
let(:app) do
|
33
|
+
double
|
34
|
+
end
|
35
|
+
|
36
|
+
let(:internal_provision_wrapper) do
|
37
|
+
double
|
38
|
+
end
|
39
|
+
|
40
|
+
before :each do
|
41
|
+
@action = ProvisionWrapper.new(app, nil)
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'execute' do
|
45
|
+
it 'call InternalProvisionWrapper and conitnue the middleware chain' do
|
46
|
+
expect(internal_provision_wrapper).to receive(:call)
|
47
|
+
InternalProvisionWrapper.stub(:new) { internal_provision_wrapper }
|
48
|
+
app.stub(:call) {}
|
49
|
+
@action.execute nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe VagrantPlugins::Openstack::Action::InternalProvisionWrapper do
|
55
|
+
let(:env) do
|
56
|
+
{}
|
57
|
+
end
|
58
|
+
|
59
|
+
before :each do
|
60
|
+
@action = InternalProvisionWrapper.new(nil, env)
|
61
|
+
end
|
62
|
+
|
63
|
+
describe 'run_provisioner' do
|
64
|
+
context 'when running a shell provisioner' do
|
65
|
+
context 'without meta-arg' do
|
66
|
+
it 'does not change the provisioner config' do
|
67
|
+
env[:provisioner] = FakeShellProvisioner.new(OpenStruct.new.tap do |c|
|
68
|
+
c.args = %w(arg1 arg2)
|
69
|
+
end)
|
70
|
+
|
71
|
+
expect(env[:provisioner]).to receive(:provision)
|
72
|
+
expect(@action).to receive(:handle_shell_meta_args)
|
73
|
+
|
74
|
+
@action.run_provisioner(env)
|
75
|
+
expect(env[:provisioner].config.args).to eq(%w(arg1 arg2))
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'with @@ssh_ip@@ meta-arg' do
|
80
|
+
it 'replace the meta-args in the provisioner config' do
|
81
|
+
env[:provisioner] = FakeShellProvisioner.new(OpenStruct.new.tap do |c|
|
82
|
+
c.args = ['arg1', '@@ssh_ip@@', 'arg3']
|
83
|
+
end)
|
84
|
+
|
85
|
+
VagrantPlugins::Openstack::Action.stub(:get_ssh_info).and_return host: '192.168.0.1'
|
86
|
+
expect(env[:provisioner]).to receive(:provision)
|
87
|
+
|
88
|
+
@action.run_provisioner(env)
|
89
|
+
expect(env[:provisioner].config.args).to eq(%w(arg1 192.168.0.1 arg3))
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'when running a provisioner other that the shell provisioner' do
|
95
|
+
it 'does not call handle_shell_meta_args' do
|
96
|
+
env[:provisioner] = FakeProvisioner.new
|
97
|
+
expect(@action).should_not_receive(:handle_shell_meta_args)
|
98
|
+
expect(env[:provisioner]).to receive(:provision)
|
99
|
+
|
100
|
+
@action.run_provisioner(env)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -5,7 +5,6 @@ include VagrantPlugins::Openstack::HttpUtils
|
|
5
5
|
include VagrantPlugins::Openstack::Domain
|
6
6
|
|
7
7
|
describe VagrantPlugins::Openstack::Action::ReadSSHInfo do
|
8
|
-
|
9
8
|
let(:config) do
|
10
9
|
double('config').tap do |config|
|
11
10
|
config.stub(:openstack_auth_url) { 'http://keystoneAuthV2' }
|
@@ -54,7 +53,7 @@ describe VagrantPlugins::Openstack::Action::ReadSSHInfo do
|
|
54
53
|
end
|
55
54
|
|
56
55
|
let(:env) do
|
57
|
-
|
56
|
+
{}.tap do |env|
|
58
57
|
env[:ui] = double('ui')
|
59
58
|
env[:ui].stub(:info).with(anything)
|
60
59
|
env[:machine] = double('machine')
|
@@ -188,5 +187,4 @@ describe VagrantPlugins::Openstack::Action::ReadSSHInfo do
|
|
188
187
|
end
|
189
188
|
end
|
190
189
|
end
|
191
|
-
|
192
190
|
end
|
@@ -1,13 +1,12 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::ReadState do
|
4
|
-
|
5
4
|
let(:nova) do
|
6
5
|
double('nova')
|
7
6
|
end
|
8
7
|
|
9
8
|
let(:env) do
|
10
|
-
|
9
|
+
{}.tap do |env|
|
11
10
|
env[:ui] = double('ui').tap do |ui|
|
12
11
|
ui.stub(:info).with(anything)
|
13
12
|
ui.stub(:error).with(anything)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::Resume do
|
4
|
-
|
5
4
|
let(:nova) do
|
6
5
|
double('nova').tap do |nova|
|
7
6
|
nova.stub(:resume_server)
|
@@ -9,7 +8,7 @@ describe VagrantPlugins::Openstack::Action::Resume do
|
|
9
8
|
end
|
10
9
|
|
11
10
|
let(:env) do
|
12
|
-
|
11
|
+
{}.tap do |env|
|
13
12
|
env[:ui] = double('ui').tap do |ui|
|
14
13
|
ui.stub(:info).with(anything)
|
15
14
|
ui.stub(:error).with(anything)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::StartServer do
|
4
|
-
|
5
4
|
let(:nova) do
|
6
5
|
double('nova').tap do |nova|
|
7
6
|
nova.stub(:start_server)
|
@@ -9,7 +8,7 @@ describe VagrantPlugins::Openstack::Action::StartServer do
|
|
9
8
|
end
|
10
9
|
|
11
10
|
let(:env) do
|
12
|
-
|
11
|
+
{}.tap do |env|
|
13
12
|
env[:ui] = double('ui').tap do |ui|
|
14
13
|
ui.stub(:info).with(anything)
|
15
14
|
ui.stub(:error).with(anything)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::StopServer do
|
4
|
-
|
5
4
|
let(:nova) do
|
6
5
|
double('nova').tap do |nova|
|
7
6
|
nova.stub(:stop_server)
|
@@ -9,7 +8,7 @@ describe VagrantPlugins::Openstack::Action::StopServer do
|
|
9
8
|
end
|
10
9
|
|
11
10
|
let(:env) do
|
12
|
-
|
11
|
+
{}.tap do |env|
|
13
12
|
env[:ui] = double('ui').tap do |ui|
|
14
13
|
ui.stub(:info).with(anything)
|
15
14
|
ui.stub(:error).with(anything)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::Suspend do
|
4
|
-
|
5
4
|
let(:nova) do
|
6
5
|
double('nova').tap do |nova|
|
7
6
|
nova.stub(:suspend_server)
|
@@ -9,7 +8,7 @@ describe VagrantPlugins::Openstack::Action::Suspend do
|
|
9
8
|
end
|
10
9
|
|
11
10
|
let(:env) do
|
12
|
-
|
11
|
+
{}.tap do |env|
|
13
12
|
env[:ui] = double('ui').tap do |ui|
|
14
13
|
ui.stub(:info).with(anything)
|
15
14
|
ui.stub(:error).with(anything)
|
@@ -6,7 +6,6 @@ require 'vagrant/util/subprocess'
|
|
6
6
|
include VagrantPlugins::Openstack::Action
|
7
7
|
|
8
8
|
describe VagrantPlugins::Openstack::Action::SyncFolders do
|
9
|
-
|
10
9
|
let(:app) do
|
11
10
|
double('app').tap do |app|
|
12
11
|
app.stub(:call).with(anything)
|
@@ -34,7 +33,7 @@ describe VagrantPlugins::Openstack::Action::SyncFolders do
|
|
34
33
|
end
|
35
34
|
|
36
35
|
let(:env) do
|
37
|
-
|
36
|
+
{}.tap do |env|
|
38
37
|
env[:ui] = double('ui').tap do |ui|
|
39
38
|
ui.stub(:info).with(anything)
|
40
39
|
ui.stub(:error).with(anything)
|
@@ -1,13 +1,12 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::WaitForServerToBeAccessible do
|
4
|
-
|
5
4
|
let(:config) do
|
6
5
|
double('config')
|
7
6
|
end
|
8
7
|
|
9
8
|
let(:env) do
|
10
|
-
|
9
|
+
{}.tap do |env|
|
11
10
|
env[:ui] = double('ui')
|
12
11
|
env[:ui].stub(:info).with(anything)
|
13
12
|
env[:ui].stub(:error).with(anything)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::WaitForServerToBeActive do
|
4
|
-
|
5
4
|
let(:nova) do
|
6
5
|
double('nova')
|
7
6
|
end
|
@@ -11,7 +10,7 @@ describe VagrantPlugins::Openstack::Action::WaitForServerToBeActive do
|
|
11
10
|
end
|
12
11
|
|
13
12
|
let(:env) do
|
14
|
-
|
13
|
+
{}.tap do |env|
|
15
14
|
env[:ui] = double('ui').tap do |ui|
|
16
15
|
ui.stub(:info).with(anything)
|
17
16
|
ui.stub(:error).with(anything)
|
@@ -35,7 +34,7 @@ describe VagrantPlugins::Openstack::Action::WaitForServerToBeActive do
|
|
35
34
|
describe 'call' do
|
36
35
|
context 'when server is not yet active' do
|
37
36
|
it 'become active after one retry' do
|
38
|
-
nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' },
|
37
|
+
nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' }, 'status' => 'ACTIVE')
|
39
38
|
expect(nova).to receive(:get_server_details).with(env, 'server_id').exactly(2).times
|
40
39
|
expect(app).to receive(:call)
|
41
40
|
config.stub(:server_active_timeout) { 5 }
|
@@ -43,7 +42,7 @@ describe VagrantPlugins::Openstack::Action::WaitForServerToBeActive do
|
|
43
42
|
@action.call(env)
|
44
43
|
end
|
45
44
|
it 'timeout after one retry' do
|
46
|
-
nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' },
|
45
|
+
nova.stub(:get_server_details).and_return({ 'status' => 'BUILD' }, 'status' => 'BUILD')
|
47
46
|
expect(nova).to receive(:get_server_details).with(env, 'server_id').at_least(2).times
|
48
47
|
config.stub(:server_active_timeout) { 2 }
|
49
48
|
@action = WaitForServerToBeActive.new(app, nil, 1)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::Action::WaitForServerToStop do
|
4
|
-
|
5
4
|
let(:nova) do
|
6
5
|
double('nova')
|
7
6
|
end
|
@@ -11,7 +10,7 @@ describe VagrantPlugins::Openstack::Action::WaitForServerToStop do
|
|
11
10
|
end
|
12
11
|
|
13
12
|
let(:env) do
|
14
|
-
|
13
|
+
{}.tap do |env|
|
15
14
|
env[:ui] = double('ui').tap do |ui|
|
16
15
|
ui.stub(:info).with(anything)
|
17
16
|
ui.stub(:error).with(anything)
|
@@ -35,7 +34,7 @@ describe VagrantPlugins::Openstack::Action::WaitForServerToStop do
|
|
35
34
|
describe 'call' do
|
36
35
|
context 'when server is active' do
|
37
36
|
it 'become shutoff after one retry' do
|
38
|
-
nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' },
|
37
|
+
nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' }, 'status' => 'SHUTOFF')
|
39
38
|
expect(nova).to receive(:get_server_details).with(env, 'server_id').exactly(2).times
|
40
39
|
expect(app).to receive(:call)
|
41
40
|
config.stub(:server_stop_timeout) { 5 }
|
@@ -43,7 +42,7 @@ describe VagrantPlugins::Openstack::Action::WaitForServerToStop do
|
|
43
42
|
@action.call(env)
|
44
43
|
end
|
45
44
|
it 'timeout after one retry' do
|
46
|
-
nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' },
|
45
|
+
nova.stub(:get_server_details).and_return({ 'status' => 'ACTIVE' }, 'status' => 'ACTIVE')
|
47
46
|
expect(nova).to receive(:get_server_details).with(env, 'server_id').at_least(2).times
|
48
47
|
config.stub(:server_stop_timeout) { 2 }
|
49
48
|
@action = WaitForServerToStop.new(app, nil, 1)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::CinderClient do
|
4
|
-
|
5
4
|
let(:http) do
|
6
5
|
double('http').tap do |http|
|
7
6
|
http.stub(:read_timeout) { 42 }
|
@@ -16,7 +15,7 @@ describe VagrantPlugins::Openstack::CinderClient do
|
|
16
15
|
end
|
17
16
|
|
18
17
|
let(:env) do
|
19
|
-
|
18
|
+
{}.tap do |env|
|
20
19
|
env[:machine] = double('machine')
|
21
20
|
env[:machine].stub(:provider_config) { config }
|
22
21
|
end
|
@@ -36,15 +35,14 @@ describe VagrantPlugins::Openstack::CinderClient do
|
|
36
35
|
describe 'get_all_volumes' do
|
37
36
|
context 'on api v1' do
|
38
37
|
it 'returns volumes with details' do
|
39
|
-
|
40
38
|
stub_request(:get, 'http://cinder/volumes/detail')
|
41
|
-
|
39
|
+
.with(
|
42
40
|
headers:
|
43
41
|
{
|
44
42
|
'Accept' => 'application/json',
|
45
43
|
'X-Auth-Token' => '123456'
|
46
44
|
})
|
47
|
-
|
45
|
+
.to_return(
|
48
46
|
status: 200,
|
49
47
|
body: '
|
50
48
|
{
|
@@ -83,15 +81,14 @@ describe VagrantPlugins::Openstack::CinderClient do
|
|
83
81
|
|
84
82
|
context 'on api v2' do
|
85
83
|
it 'returns volumes with details' do
|
86
|
-
|
87
84
|
stub_request(:get, 'http://cinder/volumes/detail')
|
88
|
-
|
85
|
+
.with(
|
89
86
|
headers:
|
90
87
|
{
|
91
88
|
'Accept' => 'application/json',
|
92
89
|
'X-Auth-Token' => '123456'
|
93
90
|
})
|
94
|
-
|
91
|
+
.to_return(
|
95
92
|
status: 200,
|
96
93
|
body: '
|
97
94
|
{
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'vagrant-openstack-provider/spec_helper'
|
2
2
|
|
3
3
|
describe VagrantPlugins::Openstack::GlanceClient do
|
4
|
-
|
5
4
|
let(:http) do
|
6
5
|
double('http').tap do |http|
|
7
6
|
http.stub(:read_timeout) { 42 }
|
@@ -16,7 +15,7 @@ describe VagrantPlugins::Openstack::GlanceClient do
|
|
16
15
|
end
|
17
16
|
|
18
17
|
let(:env) do
|
19
|
-
|
18
|
+
{}.tap do |env|
|
20
19
|
env[:machine] = double('machine')
|
21
20
|
env[:machine].stub(:provider_config) { config }
|
22
21
|
end
|
@@ -38,21 +37,21 @@ describe VagrantPlugins::Openstack::GlanceClient do
|
|
38
37
|
context 'and api version is v2' do
|
39
38
|
it 'returns all images with details' do
|
40
39
|
stub_request(:get, 'http://glance/images')
|
41
|
-
|
42
|
-
|
40
|
+
.with(
|
41
|
+
headers:
|
42
|
+
{
|
43
|
+
'Accept' => 'application/json',
|
44
|
+
'X-Auth-Token' => '123456'
|
45
|
+
})
|
46
|
+
.to_return(
|
47
|
+
status: 200,
|
48
|
+
body: '
|
43
49
|
{
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
body: '
|
50
|
-
{
|
51
|
-
"images": [
|
52
|
-
{ "id": "i1", "name": "image1", "visibility": "public", "size": "1024", "min_ram": "1", "min_disk": "10" },
|
53
|
-
{ "id": "i2", "name": "image2", "visibility": "private", "size": "2048", "min_ram": "2", "min_disk": "20" }
|
54
|
-
]
|
55
|
-
}')
|
50
|
+
"images": [
|
51
|
+
{ "id": "i1", "name": "image1", "visibility": "public", "size": "1024", "min_ram": "1", "min_disk": "10" },
|
52
|
+
{ "id": "i2", "name": "image2", "visibility": "private", "size": "2048", "min_ram": "2", "min_disk": "20" }
|
53
|
+
]
|
54
|
+
}')
|
56
55
|
|
57
56
|
images = @glance_client.get_all_images(env)
|
58
57
|
|
@@ -64,38 +63,38 @@ describe VagrantPlugins::Openstack::GlanceClient do
|
|
64
63
|
context 'and api version is v1' do
|
65
64
|
it 'returns all images with details' do
|
66
65
|
stub_request(:get, 'http://glance/images')
|
67
|
-
|
68
|
-
|
66
|
+
.with(
|
67
|
+
headers:
|
68
|
+
{
|
69
|
+
'Accept' => 'application/json',
|
70
|
+
'X-Auth-Token' => '123456'
|
71
|
+
})
|
72
|
+
.to_return(
|
73
|
+
status: 200,
|
74
|
+
body: '
|
69
75
|
{
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
body: '
|
76
|
-
{
|
77
|
-
"images": [
|
78
|
-
{ "id": "i1", "name": "image1", "is_public": true },
|
79
|
-
{ "id": "i2", "name": "image2", "is_public": false }
|
80
|
-
]
|
81
|
-
}')
|
76
|
+
"images": [
|
77
|
+
{ "id": "i1", "name": "image1", "is_public": true },
|
78
|
+
{ "id": "i2", "name": "image2", "is_public": false }
|
79
|
+
]
|
80
|
+
}')
|
82
81
|
|
83
82
|
stub_request(:get, 'http://glance/images/detail')
|
84
|
-
|
85
|
-
|
83
|
+
.with(
|
84
|
+
headers:
|
85
|
+
{
|
86
|
+
'Accept' => 'application/json',
|
87
|
+
'X-Auth-Token' => '123456'
|
88
|
+
})
|
89
|
+
.to_return(
|
90
|
+
status: 200,
|
91
|
+
body: '
|
86
92
|
{
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
body: '
|
93
|
-
{
|
94
|
-
"images": [
|
95
|
-
{ "id": "i1", "name": "image1", "is_public": true, "size": "1024", "min_ram": "1", "min_disk": "10" },
|
96
|
-
{ "id": "i2", "name": "image2", "is_public": false, "size": "2048", "min_ram": "2", "min_disk": "20" }
|
97
|
-
]
|
98
|
-
}')
|
93
|
+
"images": [
|
94
|
+
{ "id": "i1", "name": "image1", "is_public": true, "size": "1024", "min_ram": "1", "min_disk": "10" },
|
95
|
+
{ "id": "i2", "name": "image2", "is_public": false, "size": "2048", "min_ram": "2", "min_disk": "20" }
|
96
|
+
]
|
97
|
+
}')
|
99
98
|
|
100
99
|
images = @glance_client.get_all_images(env)
|
101
100
|
|
@@ -109,32 +108,32 @@ describe VagrantPlugins::Openstack::GlanceClient do
|
|
109
108
|
describe 'get_api_version_list' do
|
110
109
|
it 'returns version list' do
|
111
110
|
stub_request(:get, 'http://glance/')
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
111
|
+
.with(header: { 'Accept' => 'application/json' })
|
112
|
+
.to_return(
|
113
|
+
status: 200,
|
114
|
+
body: '{
|
115
|
+
"versions": [
|
116
|
+
{
|
117
|
+
"status": "...",
|
118
|
+
"id": "v1.0",
|
119
|
+
"links": [
|
120
|
+
{
|
121
|
+
"href": "http://glance/v1.0",
|
122
|
+
"rel": "self"
|
123
|
+
}
|
124
|
+
]
|
125
|
+
},
|
126
|
+
{
|
127
|
+
"status": "CURRENT",
|
128
|
+
"id": "v2.0",
|
129
|
+
"links": [
|
130
|
+
{
|
131
|
+
"href": "http://glance/v2.0",
|
132
|
+
"rel": "self"
|
133
|
+
}
|
134
|
+
]
|
135
|
+
}
|
136
|
+
]}')
|
138
137
|
|
139
138
|
versions = @glance_client.get_api_version_list(env)
|
140
139
|
|