vagrant-openstack-illuin-provider 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.rubocop.yml +40 -0
- data/CHANGELOG.md +282 -0
- data/Gemfile +18 -0
- data/RELEASE.md +15 -0
- data/Rakefile +25 -0
- data/Vagrantfile +20 -0
- data/dummy.box +0 -0
- data/example_box/README.md +13 -0
- data/example_box/metadata.json +3 -0
- data/functional_tests/Vagrantfile +58 -0
- data/functional_tests/keys/vagrant-openstack +27 -0
- data/functional_tests/keys/vagrant-openstack.pub +1 -0
- data/functional_tests/run_tests.sh +142 -0
- data/lib/vagrant-openstack-illuin-provider.rb +29 -0
- data/lib/vagrant-openstack-illuin-provider/action.rb +344 -0
- data/lib/vagrant-openstack-illuin-provider/action/abstract_action.rb +22 -0
- data/lib/vagrant-openstack-illuin-provider/action/connect_openstack.rb +60 -0
- data/lib/vagrant-openstack-illuin-provider/action/create_server.rb +187 -0
- data/lib/vagrant-openstack-illuin-provider/action/create_stack.rb +76 -0
- data/lib/vagrant-openstack-illuin-provider/action/delete_server.rb +53 -0
- data/lib/vagrant-openstack-illuin-provider/action/delete_stack.rb +73 -0
- data/lib/vagrant-openstack-illuin-provider/action/message.rb +19 -0
- data/lib/vagrant-openstack-illuin-provider/action/provision.rb +60 -0
- data/lib/vagrant-openstack-illuin-provider/action/read_ssh_info.rb +74 -0
- data/lib/vagrant-openstack-illuin-provider/action/read_state.rb +43 -0
- data/lib/vagrant-openstack-illuin-provider/action/resume.rb +24 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_cleanup.rb +32 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_delete.rb +32 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_list.rb +22 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_restore.rb +29 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_save.rb +51 -0
- data/lib/vagrant-openstack-illuin-provider/action/start_server.rb +24 -0
- data/lib/vagrant-openstack-illuin-provider/action/stop_server.rb +25 -0
- data/lib/vagrant-openstack-illuin-provider/action/suspend.rb +24 -0
- data/lib/vagrant-openstack-illuin-provider/action/sync_folders.rb +138 -0
- data/lib/vagrant-openstack-illuin-provider/action/wait_active.rb +33 -0
- data/lib/vagrant-openstack-illuin-provider/action/wait_stop.rb +33 -0
- data/lib/vagrant-openstack-illuin-provider/cap/snapshot_list.rb +15 -0
- data/lib/vagrant-openstack-illuin-provider/catalog/openstack_catalog.rb +90 -0
- data/lib/vagrant-openstack-illuin-provider/client/cinder.rb +39 -0
- data/lib/vagrant-openstack-illuin-provider/client/domain.rb +163 -0
- data/lib/vagrant-openstack-illuin-provider/client/glance.rb +65 -0
- data/lib/vagrant-openstack-illuin-provider/client/heat.rb +49 -0
- data/lib/vagrant-openstack-illuin-provider/client/http_utils.rb +116 -0
- data/lib/vagrant-openstack-illuin-provider/client/keystone.rb +128 -0
- data/lib/vagrant-openstack-illuin-provider/client/neutron.rb +48 -0
- data/lib/vagrant-openstack-illuin-provider/client/nova.rb +303 -0
- data/lib/vagrant-openstack-illuin-provider/client/openstack.rb +59 -0
- data/lib/vagrant-openstack-illuin-provider/client/request_logger.rb +23 -0
- data/lib/vagrant-openstack-illuin-provider/client/rest_utils.rb +28 -0
- data/lib/vagrant-openstack-illuin-provider/command/abstract_command.rb +51 -0
- data/lib/vagrant-openstack-illuin-provider/command/flavor_list.rb +24 -0
- data/lib/vagrant-openstack-illuin-provider/command/floatingip_list.rb +32 -0
- data/lib/vagrant-openstack-illuin-provider/command/image_list.rb +29 -0
- data/lib/vagrant-openstack-illuin-provider/command/main.rb +52 -0
- data/lib/vagrant-openstack-illuin-provider/command/network_list.rb +25 -0
- data/lib/vagrant-openstack-illuin-provider/command/openstack_command.rb +16 -0
- data/lib/vagrant-openstack-illuin-provider/command/reset.rb +20 -0
- data/lib/vagrant-openstack-illuin-provider/command/subnet_list.rb +22 -0
- data/lib/vagrant-openstack-illuin-provider/command/utils.rb +22 -0
- data/lib/vagrant-openstack-illuin-provider/command/volume_list.rb +25 -0
- data/lib/vagrant-openstack-illuin-provider/config.rb +505 -0
- data/lib/vagrant-openstack-illuin-provider/config/http.rb +39 -0
- data/lib/vagrant-openstack-illuin-provider/config_resolver.rb +334 -0
- data/lib/vagrant-openstack-illuin-provider/errors.rb +187 -0
- data/lib/vagrant-openstack-illuin-provider/logging.rb +39 -0
- data/lib/vagrant-openstack-illuin-provider/plugin.rb +58 -0
- data/lib/vagrant-openstack-illuin-provider/provider.rb +50 -0
- data/lib/vagrant-openstack-illuin-provider/utils.rb +81 -0
- data/lib/vagrant-openstack-illuin-provider/version.rb +15 -0
- data/lib/vagrant-openstack-illuin-provider/version_checker.rb +76 -0
- data/locales/en.yml +412 -0
- data/spec/vagrant-openstack-illuin-provider/action/connect_openstack_spec.rb +770 -0
- data/spec/vagrant-openstack-illuin-provider/action/create_server_spec.rb +260 -0
- data/spec/vagrant-openstack-illuin-provider/action/create_stack_spec.rb +99 -0
- data/spec/vagrant-openstack-illuin-provider/action/delete_server_spec.rb +89 -0
- data/spec/vagrant-openstack-illuin-provider/action/delete_stack_spec.rb +63 -0
- data/spec/vagrant-openstack-illuin-provider/action/message_spec.rb +33 -0
- data/spec/vagrant-openstack-illuin-provider/action/provision_spec.rb +97 -0
- data/spec/vagrant-openstack-illuin-provider/action/read_ssh_info_spec.rb +202 -0
- data/spec/vagrant-openstack-illuin-provider/action/read_state_spec.rb +81 -0
- data/spec/vagrant-openstack-illuin-provider/action/resume_server_spec.rb +49 -0
- data/spec/vagrant-openstack-illuin-provider/action/start_server_spec.rb +49 -0
- data/spec/vagrant-openstack-illuin-provider/action/stop_server_spec.rb +49 -0
- data/spec/vagrant-openstack-illuin-provider/action/suspend_server_spec.rb +49 -0
- data/spec/vagrant-openstack-illuin-provider/action/sync_folders_spec.rb +155 -0
- data/spec/vagrant-openstack-illuin-provider/action/wait_active_spec.rb +53 -0
- data/spec/vagrant-openstack-illuin-provider/action/wait_stop_spec.rb +53 -0
- data/spec/vagrant-openstack-illuin-provider/action_spec.rb +120 -0
- data/spec/vagrant-openstack-illuin-provider/client/cinder_spec.rb +129 -0
- data/spec/vagrant-openstack-illuin-provider/client/glance_spec.rb +145 -0
- data/spec/vagrant-openstack-illuin-provider/client/heat_spec.rb +130 -0
- data/spec/vagrant-openstack-illuin-provider/client/keystone_spec.rb +226 -0
- data/spec/vagrant-openstack-illuin-provider/client/neutron_spec.rb +173 -0
- data/spec/vagrant-openstack-illuin-provider/client/nova_spec.rb +760 -0
- data/spec/vagrant-openstack-illuin-provider/client/utils_spec.rb +176 -0
- data/spec/vagrant-openstack-illuin-provider/command/flavor_list_spec.rb +43 -0
- data/spec/vagrant-openstack-illuin-provider/command/floatingip_list_spec.rb +74 -0
- data/spec/vagrant-openstack-illuin-provider/command/image_list_spec.rb +95 -0
- data/spec/vagrant-openstack-illuin-provider/command/network_list_spec.rb +65 -0
- data/spec/vagrant-openstack-illuin-provider/command/reset_spec.rb +24 -0
- data/spec/vagrant-openstack-illuin-provider/command/subnet_list_spec.rb +45 -0
- data/spec/vagrant-openstack-illuin-provider/command/volume_list_spec.rb +40 -0
- data/spec/vagrant-openstack-illuin-provider/config_resolver_spec.rb +879 -0
- data/spec/vagrant-openstack-illuin-provider/config_spec.rb +416 -0
- data/spec/vagrant-openstack-illuin-provider/e2e_spec.rb.save +27 -0
- data/spec/vagrant-openstack-illuin-provider/provider_spec.rb +13 -0
- data/spec/vagrant-openstack-illuin-provider/spec_helper.rb +37 -0
- data/spec/vagrant-openstack-illuin-provider/utils_spec.rb +197 -0
- data/spec/vagrant-openstack-illuin-provider/version_checker_spec.rb +39 -0
- data/stackrc +25 -0
- data/vagrant-openstack-illuin-provider.gemspec +35 -0
- metadata +379 -0
@@ -0,0 +1,176 @@
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/spec_helper'
|
2
|
+
|
3
|
+
include VagrantPlugins::Openstack
|
4
|
+
|
5
|
+
describe VagrantPlugins::Openstack::HttpUtils do
|
6
|
+
let(:keystone) do
|
7
|
+
double('keystone').tap do |keystone|
|
8
|
+
keystone.stub(:authenticate).with(anything)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:env) do
|
13
|
+
{}.tap do |env|
|
14
|
+
env[:ui] = double('ui')
|
15
|
+
env[:ui].stub(:warn).with(anything)
|
16
|
+
env[:openstack_client] = double('openstack_client')
|
17
|
+
env[:openstack_client].stub(:keystone) { keystone }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class TestUtils
|
22
|
+
include VagrantPlugins::Openstack::HttpUtils
|
23
|
+
include VagrantPlugins::Openstack::Errors
|
24
|
+
|
25
|
+
attr_writer :logger
|
26
|
+
|
27
|
+
def target(env)
|
28
|
+
authenticated(env) do
|
29
|
+
env[:target].call
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def error
|
35
|
+
fail Errors::AuthenticationRequired
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'authenticated' do
|
39
|
+
before :each do
|
40
|
+
TestUtils.send(:public, *TestUtils.private_instance_methods)
|
41
|
+
@utils = TestUtils.new
|
42
|
+
@utils.logger = double.tap do |logger|
|
43
|
+
logger.stub(:debug)
|
44
|
+
logger.stub(:info)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'with two authentication errors' do
|
49
|
+
it 'should retry two times and success' do
|
50
|
+
env[:target] = double.tap do |stub|
|
51
|
+
nb_calls = 0
|
52
|
+
stub.stub(:call) do
|
53
|
+
nb_calls += 1
|
54
|
+
fail Errors::AuthenticationRequired if nb_calls < 3
|
55
|
+
end.and_return('object response')
|
56
|
+
end
|
57
|
+
env[:target].should_receive(:call).exactly(3).times
|
58
|
+
|
59
|
+
response = @utils.target(env)
|
60
|
+
|
61
|
+
expect(response).to eq('object response')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'with three authentication errors' do
|
66
|
+
it 'should retry two times and fail' do
|
67
|
+
env[:target] = double.tap do |stub|
|
68
|
+
stub.stub(:call) do
|
69
|
+
fail Errors::AuthenticationRequired
|
70
|
+
end
|
71
|
+
end
|
72
|
+
env[:target].should_receive(:call).exactly(3).times
|
73
|
+
|
74
|
+
expect { @utils.target(env) }.to raise_error Errors::AuthenticationRequired
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe 'handle_response' do
|
80
|
+
before :each do
|
81
|
+
TestUtils.send(:public, *TestUtils.private_instance_methods)
|
82
|
+
@utils = TestUtils.new
|
83
|
+
@utils.logger = double.tap do |logger|
|
84
|
+
logger.stub(:debug)
|
85
|
+
logger.stub(:info)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
[200, 201, 202, 204].each do |code|
|
90
|
+
context "response code is #{code}" do
|
91
|
+
it 'should return the response' do
|
92
|
+
mock_resp = double.tap do |mock|
|
93
|
+
mock.stub(:code).and_return(code)
|
94
|
+
mock.stub(:headers)
|
95
|
+
end
|
96
|
+
resp = @utils.handle_response(mock_resp)
|
97
|
+
expect(resp.code).to eq(code)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context 'response code is 401' do
|
103
|
+
it 'should return raise a AuthenticationRequired error' do
|
104
|
+
mock_resp = double.tap do |mock|
|
105
|
+
mock.stub(:code).and_return(401)
|
106
|
+
mock.stub(:headers)
|
107
|
+
end
|
108
|
+
expect { @utils.handle_response(mock_resp) }.to raise_error Errors::AuthenticationRequired
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context 'response code is 400' do
|
113
|
+
it 'should return raise a VagrantOpenstackError with bad request message' do
|
114
|
+
mock_resp = double.tap do |mock|
|
115
|
+
mock.stub(:code).and_return(400)
|
116
|
+
mock.stub(:headers)
|
117
|
+
mock.stub(:to_s).and_return('{ "badRequest": { "message": "Error... Bad request" } }')
|
118
|
+
end
|
119
|
+
begin
|
120
|
+
@utils.handle_response(mock_resp)
|
121
|
+
fail
|
122
|
+
rescue Errors::VagrantOpenstackError => e
|
123
|
+
expect(e.message).to eq('Error... Bad request')
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'response code is 404' do
|
129
|
+
it 'should raise a VagrantOpenstackError with conflict message' do
|
130
|
+
mock_resp = double.tap do |mock|
|
131
|
+
mock.stub(:code).and_return(404)
|
132
|
+
mock.stub(:headers)
|
133
|
+
mock.stub(:to_s).and_return('{ "itemNotFound": { "message": "Error... Not found" } }')
|
134
|
+
end
|
135
|
+
begin
|
136
|
+
@utils.handle_response(mock_resp)
|
137
|
+
fail
|
138
|
+
rescue Errors::VagrantOpenstackError => e
|
139
|
+
expect(e.message).to eq('Error... Not found')
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
context 'response code is 409' do
|
145
|
+
it 'should return raise a VagrantOpenstackError with conflict message' do
|
146
|
+
mock_resp = double.tap do |mock|
|
147
|
+
mock.stub(:code).and_return(409)
|
148
|
+
mock.stub(:headers)
|
149
|
+
mock.stub(:to_s).and_return('{ "conflictingRequest": { "message": "Error... Conflict" } }')
|
150
|
+
end
|
151
|
+
begin
|
152
|
+
@utils.handle_response(mock_resp)
|
153
|
+
fail
|
154
|
+
rescue Errors::VagrantOpenstackError => e
|
155
|
+
expect(e.message).to eq('Error... Conflict')
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context 'response code is 500' do
|
161
|
+
it 'should return raise a VagrantOpenstackError error with error message' do
|
162
|
+
mock_resp = double.tap do |mock|
|
163
|
+
mock.stub(:code).and_return(500)
|
164
|
+
mock.stub(:headers)
|
165
|
+
mock.stub(:to_s).and_return('Internal server error')
|
166
|
+
end
|
167
|
+
begin
|
168
|
+
@utils.handle_response(mock_resp)
|
169
|
+
fail
|
170
|
+
rescue Errors::VagrantOpenstackError => e
|
171
|
+
expect(e.message).to eq('Internal server error')
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/spec_helper'
|
2
|
+
|
3
|
+
describe VagrantPlugins::Openstack::Command::FlavorList do
|
4
|
+
describe 'cmd' do
|
5
|
+
let(:nova) do
|
6
|
+
double('nova').tap do |nova|
|
7
|
+
nova.stub(:get_all_flavors) do
|
8
|
+
[
|
9
|
+
Flavor.new('001', 'small', '1', '1024', '10'),
|
10
|
+
Flavor.new('002', 'large', '4', '4096', '100')
|
11
|
+
]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:env) do
|
17
|
+
{}.tap do |env|
|
18
|
+
env[:ui] = double('ui')
|
19
|
+
env[:ui].stub(:info).with(anything)
|
20
|
+
env[:openstack_client] = double
|
21
|
+
env[:openstack_client].stub(:nova) { nova }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
before :each do
|
26
|
+
@flavor_list_cmd = VagrantPlugins::Openstack::Command::FlavorList.new(nil, env)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'prints flovor list from server' do
|
30
|
+
nova.should_receive(:get_all_flavors).with(env)
|
31
|
+
|
32
|
+
expect(env[:ui]).to receive(:info).with('
|
33
|
+
+-----+-------+------+----------+----------------+
|
34
|
+
| ID | Name | vCPU | RAM (Mo) | Disk size (Go) |
|
35
|
+
+-----+-------+------+----------+----------------+
|
36
|
+
| 001 | small | 1 | 1024 | 10 |
|
37
|
+
| 002 | large | 4 | 4096 | 100 |
|
38
|
+
+-----+-------+------+----------+----------------+')
|
39
|
+
|
40
|
+
@flavor_list_cmd.cmd('flavor-list', [], env)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/spec_helper'
|
2
|
+
|
3
|
+
describe VagrantPlugins::Openstack::Command::FloatingIpList do
|
4
|
+
describe 'cmd' do
|
5
|
+
let(:nova) do
|
6
|
+
double('nova').tap do |nova|
|
7
|
+
nova.stub(:get_floating_ip_pools) do
|
8
|
+
[
|
9
|
+
{
|
10
|
+
'name' => 'pool1'
|
11
|
+
},
|
12
|
+
{
|
13
|
+
'name' => 'pool2'
|
14
|
+
}
|
15
|
+
]
|
16
|
+
end
|
17
|
+
nova.stub(:get_floating_ips) do
|
18
|
+
[
|
19
|
+
{
|
20
|
+
'fixed_ip' => nil,
|
21
|
+
'id' => 1,
|
22
|
+
'instance_id' => nil,
|
23
|
+
'ip' => '10.10.10.1',
|
24
|
+
'pool' => 'pool1'
|
25
|
+
},
|
26
|
+
{
|
27
|
+
'fixed_ip' => nil,
|
28
|
+
'id' => 2,
|
29
|
+
'instance_id' => 'inst001',
|
30
|
+
'ip' => '10.10.10.2',
|
31
|
+
'pool' => 'pool2'
|
32
|
+
}
|
33
|
+
]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
let(:env) do
|
39
|
+
{}.tap do |env|
|
40
|
+
env[:ui] = double('ui')
|
41
|
+
env[:ui].stub(:info).with(anything)
|
42
|
+
env[:openstack_client] = double
|
43
|
+
env[:openstack_client].stub(:nova) { nova }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
before :each do
|
48
|
+
@floating_ip_list_cmd = VagrantPlugins::Openstack::Command::FloatingIpList.new(nil, env)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'prints floating ip and floating ip pool from server' do
|
52
|
+
nova.should_receive(:get_floating_ip_pools).with(env)
|
53
|
+
nova.should_receive(:get_floating_ips).with(env)
|
54
|
+
|
55
|
+
expect(env[:ui]).to receive(:info).with('
|
56
|
+
+-------------------+
|
57
|
+
| Floating IP pools |
|
58
|
+
+-------------------+
|
59
|
+
| pool1 |
|
60
|
+
| pool2 |
|
61
|
+
+-------------------+').ordered
|
62
|
+
|
63
|
+
expect(env[:ui]).to receive(:info).with('
|
64
|
+
+----+------------+-------+-------------+
|
65
|
+
| ID | IP | Pool | Instance ID |
|
66
|
+
+----+------------+-------+-------------+
|
67
|
+
| 1 | 10.10.10.1 | pool1 | |
|
68
|
+
| 2 | 10.10.10.2 | pool2 | inst001 |
|
69
|
+
+----+------------+-------+-------------+').ordered
|
70
|
+
|
71
|
+
@floating_ip_list_cmd.cmd('floatingip-list', [], env)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/spec_helper'
|
2
|
+
|
3
|
+
describe VagrantPlugins::Openstack::Command::ImageList do
|
4
|
+
let(:nova) do
|
5
|
+
double('nova').tap do |nova|
|
6
|
+
nova.stub(:get_all_images) do
|
7
|
+
[
|
8
|
+
Image.new('0001', 'ubuntu'),
|
9
|
+
Image.new('0002', 'centos'),
|
10
|
+
Image.new('0003', 'debian')
|
11
|
+
]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:glance) do
|
17
|
+
double('nova').tap do |nova|
|
18
|
+
nova.stub(:get_all_images) do
|
19
|
+
[
|
20
|
+
Image.new('0001', 'ubuntu', 'public', 700 * 1024 * 1024, 1, 10),
|
21
|
+
Image.new('0002', 'centos', 'private', 800 * 1024 * 1024, 2, 20),
|
22
|
+
Image.new('0003', 'debian', 'shared', 900 * 1024 * 1024, 4, 30)
|
23
|
+
]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
let(:env) do
|
29
|
+
{}.tap do |env|
|
30
|
+
env[:ui] = double('ui')
|
31
|
+
env[:ui].stub(:info).with(anything)
|
32
|
+
env[:openstack_client] = double
|
33
|
+
env[:openstack_client].stub(:nova) { nova }
|
34
|
+
env[:openstack_client].stub(:glance) { glance }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
before :each do
|
39
|
+
@image_list_cmd = VagrantPlugins::Openstack::Command::ImageList.new(['--'], env)
|
40
|
+
end
|
41
|
+
|
42
|
+
describe 'cmd' do
|
43
|
+
context 'when glance is not available' do
|
44
|
+
let(:session) do
|
45
|
+
double('session').tap do |s|
|
46
|
+
s.stub(:endpoints) { {} }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'prints image list with only the id and the name' do
|
51
|
+
env[:openstack_client].stub(:session) { session }
|
52
|
+
allow(@image_list_cmd).to receive(:with_target_vms).and_return(nil)
|
53
|
+
nova.should_receive(:get_all_images).with(env)
|
54
|
+
|
55
|
+
expect(env[:ui]).to receive(:info).with('
|
56
|
+
+------+--------+
|
57
|
+
| ID | Name |
|
58
|
+
+------+--------+
|
59
|
+
| 0001 | ubuntu |
|
60
|
+
| 0002 | centos |
|
61
|
+
| 0003 | debian |
|
62
|
+
+------+--------+')
|
63
|
+
@image_list_cmd.cmd('image-list', [], env)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'when glance is available' do
|
68
|
+
let(:session) do
|
69
|
+
double('session').tap do |s|
|
70
|
+
s.stub(:endpoints) do
|
71
|
+
{
|
72
|
+
image: 'http://glance'
|
73
|
+
}
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'prints image list with id, name and details' do
|
79
|
+
env[:openstack_client].stub(:session) { session }
|
80
|
+
allow(@image_list_cmd).to receive(:with_target_vms).and_return(nil)
|
81
|
+
glance.should_receive(:get_all_images).with(env)
|
82
|
+
|
83
|
+
expect(env[:ui]).to receive(:info).with('
|
84
|
+
+------+--------+------------+-----------+--------------+---------------+
|
85
|
+
| ID | Name | Visibility | Size (Mo) | Min RAM (Go) | Min Disk (Go) |
|
86
|
+
+------+--------+------------+-----------+--------------+---------------+
|
87
|
+
| 0001 | ubuntu | public | 700 | 1 | 10 |
|
88
|
+
| 0002 | centos | private | 800 | 2 | 20 |
|
89
|
+
| 0003 | debian | shared | 900 | 4 | 30 |
|
90
|
+
+------+--------+------------+-----------+--------------+---------------+')
|
91
|
+
@image_list_cmd.cmd('image-list', [], env)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/spec_helper'
|
2
|
+
|
3
|
+
describe VagrantPlugins::Openstack::Command::NetworkList do
|
4
|
+
describe 'cmd' do
|
5
|
+
let(:neutron) do
|
6
|
+
double('neutron').tap do |neutron|
|
7
|
+
neutron.stub(:get_private_networks) do
|
8
|
+
[
|
9
|
+
Item.new('net-01', 'internal'),
|
10
|
+
Item.new('net-02', 'external')
|
11
|
+
]
|
12
|
+
end
|
13
|
+
neutron.stub(:get_all_networks) do
|
14
|
+
[
|
15
|
+
Item.new('pub-01', 'public'),
|
16
|
+
Item.new('net-01', 'internal'),
|
17
|
+
Item.new('net-02', 'external')
|
18
|
+
]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:env) do
|
24
|
+
{}.tap do |env|
|
25
|
+
env[:ui] = double('ui')
|
26
|
+
env[:ui].stub(:info).with(anything)
|
27
|
+
env[:openstack_client] = double
|
28
|
+
env[:openstack_client].stub(:neutron) { neutron }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
before :each do
|
33
|
+
@network_list_cmd = VagrantPlugins::Openstack::Command::NetworkList.new(nil, env)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'prints network list from server' do
|
37
|
+
neutron.should_receive(:get_private_networks).with(env)
|
38
|
+
|
39
|
+
expect(env[:ui]).to receive(:info).with('
|
40
|
+
+--------+----------+
|
41
|
+
| ID | Name |
|
42
|
+
+--------+----------+
|
43
|
+
| net-01 | internal |
|
44
|
+
| net-02 | external |
|
45
|
+
+--------+----------+')
|
46
|
+
|
47
|
+
@network_list_cmd.cmd('network-list', [], env)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'prints all networks list from server' do
|
51
|
+
neutron.should_receive(:get_all_networks).with(env)
|
52
|
+
|
53
|
+
expect(env[:ui]).to receive(:info).with('
|
54
|
+
+--------+----------+
|
55
|
+
| ID | Name |
|
56
|
+
+--------+----------+
|
57
|
+
| pub-01 | public |
|
58
|
+
| net-01 | internal |
|
59
|
+
| net-02 | external |
|
60
|
+
+--------+----------+')
|
61
|
+
|
62
|
+
@network_list_cmd.cmd('network-list', ['all'], env)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|