vagrant-cloudstack 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +18 -19
- data/.ruby-version +1 -1
- data/.travis.yml +19 -19
- data/CHANGELOG.md +179 -171
- data/Docker/.dockerignore +2 -0
- data/Docker/Dockerfile +51 -0
- data/Docker/Dockerfile.chefdk_0_17 +49 -0
- data/Docker/Dockerfile.latest_dependencies +49 -0
- data/Docker/README.md +67 -0
- data/Docker/vac.ps1 +29 -0
- data/Docker/vac.sh +30 -0
- data/Gemfile +20 -20
- data/LICENSE +8 -8
- data/README.md +416 -416
- data/Rakefile +106 -99
- data/bootstrap.key +27 -0
- data/build_rpm.sh +7 -7
- data/functional-tests/basic/Vagrantfile.basic_networking +45 -45
- data/functional-tests/basic/basic_spec.rb +21 -21
- data/functional-tests/networking/Vagrantfile.advanced_networking +119 -102
- data/functional-tests/networking/networking_spec.rb +14 -0
- data/functional-tests/rsync/Vagrantfile.advanced_networking +39 -56
- data/functional-tests/rsync/rsync_spec.rb +9 -9
- data/functional-tests/vmlifecycle/Vagrantfile.advanced_networking +66 -82
- data/functional-tests/vmlifecycle/vmlifecycle_spec.rb +13 -13
- data/lib/vagrant-cloudstack/action/connect_cloudstack.rb +47 -47
- data/lib/vagrant-cloudstack/action/is_created.rb +18 -18
- data/lib/vagrant-cloudstack/action/is_stopped.rb +18 -18
- data/lib/vagrant-cloudstack/action/message_already_created.rb +16 -16
- data/lib/vagrant-cloudstack/action/message_not_created.rb +16 -16
- data/lib/vagrant-cloudstack/action/message_will_not_destroy.rb +16 -16
- data/lib/vagrant-cloudstack/action/read_rdp_info.rb +76 -76
- data/lib/vagrant-cloudstack/action/read_ssh_info.rb +104 -87
- data/lib/vagrant-cloudstack/action/read_state.rb +38 -38
- data/lib/vagrant-cloudstack/action/read_winrm_info.rb +103 -103
- data/lib/vagrant-cloudstack/action/run_instance.rb +798 -703
- data/lib/vagrant-cloudstack/action/start_instance.rb +81 -81
- data/lib/vagrant-cloudstack/action/stop_instance.rb +28 -28
- data/lib/vagrant-cloudstack/action/terminate_instance.rb +269 -224
- data/lib/vagrant-cloudstack/action/timed_provision.rb +21 -21
- data/lib/vagrant-cloudstack/action/wait_for_state.rb +41 -41
- data/lib/vagrant-cloudstack/action/warn_networks.rb +19 -19
- data/lib/vagrant-cloudstack/action.rb +210 -210
- data/lib/vagrant-cloudstack/capabilities/rdp.rb +12 -12
- data/lib/vagrant-cloudstack/capabilities/winrm.rb +12 -12
- data/lib/vagrant-cloudstack/config.rb +566 -548
- data/lib/vagrant-cloudstack/errors.rb +27 -27
- data/lib/vagrant-cloudstack/exceptions/exceptions.rb +10 -10
- data/lib/vagrant-cloudstack/model/cloudstack_resource.rb +51 -33
- data/lib/vagrant-cloudstack/plugin.rb +82 -82
- data/lib/vagrant-cloudstack/provider.rb +58 -58
- data/lib/vagrant-cloudstack/service/cloudstack_resource_service.rb +64 -58
- data/lib/vagrant-cloudstack/util/timer.rb +17 -17
- data/lib/vagrant-cloudstack/version.rb +5 -5
- data/lib/vagrant-cloudstack.rb +17 -17
- data/locales/en.yml +131 -123
- data/spec/spec_helper.rb +8 -6
- data/spec/vagrant-cloudstack/action/read_ssh_info_spec.rb +80 -0
- data/spec/vagrant-cloudstack/config_spec.rb +355 -355
- data/spec/vagrant-cloudstack/model/cloudstack_resource_spec.rb +95 -73
- data/spec/vagrant-cloudstack/service/cloudstack_resource_service_spec.rb +43 -43
- data/spec/vagrant-cloudstack/support/be_a_resource.rb +6 -0
- data/vagrant-cloudstack.gemspec +59 -59
- data/vagrant-cloudstack.spec +42 -42
- metadata +14 -7
- data/dummy.box +0 -0
- data/example_box/README.md +0 -13
- data/example_box/metadata.json +0 -3
- data/functional-tests/networking/rsync_spec.rb +0 -12
data/Rakefile
CHANGED
@@ -1,99 +1,106 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler/setup'
|
3
|
-
require 'rspec/core/rake_task'
|
4
|
-
|
5
|
-
RSpec::Core::RakeTask.new(:functionaltest) do |t|
|
6
|
-
t.pattern = "*_spec.rb"
|
7
|
-
t.rspec_opts = "-fd"
|
8
|
-
end
|
9
|
-
|
10
|
-
# Immediately sync all stdout so that tools like buildbot can
|
11
|
-
# immediately load in the output.
|
12
|
-
$stdout.sync = true
|
13
|
-
$stderr.sync = true
|
14
|
-
|
15
|
-
# Change to the directory of this file.
|
16
|
-
Dir.chdir(File.expand_path("../", __FILE__))
|
17
|
-
|
18
|
-
# This installs the tasks that help with gem creation and
|
19
|
-
# publishing.
|
20
|
-
Bundler::GemHelper.install_tasks
|
21
|
-
|
22
|
-
# Install the `spec` task so that we can run tests.
|
23
|
-
RSpec::Core::RakeTask.new
|
24
|
-
|
25
|
-
# Default task is to run the unit tests
|
26
|
-
task :default => "spec"
|
27
|
-
|
28
|
-
|
29
|
-
namespace :functional_tests do
|
30
|
-
|
31
|
-
# Name must match folder beneath functional-tests/
|
32
|
-
functional_test_names = %w(vmlifecycle networking rsync)
|
33
|
-
separate_test_names = %w(basic)
|
34
|
-
|
35
|
-
desc "Check for required enviroment variables for functional testing"
|
36
|
-
task :check_environment do
|
37
|
-
|
38
|
-
|
39
|
-
'
|
40
|
-
'
|
41
|
-
'
|
42
|
-
'
|
43
|
-
'
|
44
|
-
'
|
45
|
-
'
|
46
|
-
'
|
47
|
-
'
|
48
|
-
'
|
49
|
-
'
|
50
|
-
'
|
51
|
-
'
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:functionaltest) do |t|
|
6
|
+
t.pattern = "*_spec.rb"
|
7
|
+
t.rspec_opts = "-fd"
|
8
|
+
end
|
9
|
+
|
10
|
+
# Immediately sync all stdout so that tools like buildbot can
|
11
|
+
# immediately load in the output.
|
12
|
+
$stdout.sync = true
|
13
|
+
$stderr.sync = true
|
14
|
+
|
15
|
+
# Change to the directory of this file.
|
16
|
+
Dir.chdir(File.expand_path("../", __FILE__))
|
17
|
+
|
18
|
+
# This installs the tasks that help with gem creation and
|
19
|
+
# publishing.
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
22
|
+
# Install the `spec` task so that we can run tests.
|
23
|
+
RSpec::Core::RakeTask.new
|
24
|
+
|
25
|
+
# Default task is to run the unit tests
|
26
|
+
task :default => "spec"
|
27
|
+
|
28
|
+
|
29
|
+
namespace :functional_tests do
|
30
|
+
|
31
|
+
# Name must match folder beneath functional-tests/
|
32
|
+
functional_test_names = %w(vmlifecycle networking rsync)
|
33
|
+
separate_test_names = %w(basic)
|
34
|
+
|
35
|
+
desc "Check for required enviroment variables for functional testing"
|
36
|
+
task :check_environment do
|
37
|
+
missing_env=false
|
38
|
+
[
|
39
|
+
'CLOUDSTACK_API_KEY',
|
40
|
+
'CLOUDSTACK_SECRET_KEY',
|
41
|
+
'CLOUDSTACK_HOST',
|
42
|
+
'PUBLIC_SOURCE_NAT_IP',
|
43
|
+
'NETWORK_NAME',
|
44
|
+
'SERVICE_OFFERING_NAME',
|
45
|
+
'ZONE_NAME',
|
46
|
+
'PUBLIC_WINRM_PORT',
|
47
|
+
'PRIVATE_WINRM_PORT',
|
48
|
+
'PUBLIC_SSH_PORT',
|
49
|
+
'PRIVATE_SSH_PORT',
|
50
|
+
'SOURCE_CIDR',
|
51
|
+
'LINUX_TEMPLATE_NAME',
|
52
|
+
'WINDOWS_TEMPLATE_NAME',
|
53
|
+
'VPC_PUBLIC_IP',
|
54
|
+
'VPC_TIER_NAME',
|
55
|
+
'VR_PUBLIC_IP',
|
56
|
+
'VR_NETWORK_NAME',
|
57
|
+
'DISK_OFFERING_NAME'
|
58
|
+
].each do |var|
|
59
|
+
if ENV[var].nil?
|
60
|
+
puts "Please set environment variable #{var}."
|
61
|
+
missing_env=true
|
62
|
+
end
|
63
|
+
end
|
64
|
+
exit 1 if missing_env
|
65
|
+
end
|
66
|
+
|
67
|
+
desc "Run all functional tests"
|
68
|
+
task :all => [ :check_environment ] do
|
69
|
+
functional_test_names.each do |test_name|
|
70
|
+
Rake::Task["functional_tests:#{test_name}"].invoke
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
functional_test_names.each do |test_dir_name|
|
76
|
+
desc "Run functional test: #{test_dir_name}"
|
77
|
+
task test_dir_name => [ :check_environment ] do
|
78
|
+
Dir.chdir("#{File.expand_path('../', __FILE__)}/functional-tests/#{test_dir_name}/")
|
79
|
+
Dir.glob("Vagrantfile*", File::FNM_CASEFOLD).each do |vagrant_file|
|
80
|
+
|
81
|
+
ENV['TEST_NAME'] = "vagrant_cloudstack_functional_test-#{test_dir_name}"
|
82
|
+
ENV['VAGRANT_VAGRANTFILE'] = vagrant_file
|
83
|
+
puts "Running RSpec tests in folder : #{test_dir_name}"
|
84
|
+
puts "Using Vagrant file : #{ENV['VAGRANT_VAGRANTFILE']}"
|
85
|
+
Rake::Task[:functionaltest].execute
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
separate_test_names.each do |test_dir_name|
|
91
|
+
desc "Run functional test: #{test_dir_name}"
|
92
|
+
task test_dir_name => [ :check_environment ] do
|
93
|
+
Dir.chdir("#{File.expand_path('../', __FILE__)}/functional-tests/#{test_dir_name}/")
|
94
|
+
Dir.glob("Vagrantfile*", File::FNM_CASEFOLD).each do |vagrant_file|
|
95
|
+
|
96
|
+
ENV['TEST_NAME'] = "vagrant_cloudstack_functional_test-#{test_dir_name}"
|
97
|
+
ENV['VAGRANT_VAGRANTFILE'] = vagrant_file
|
98
|
+
puts "Running RSpec tests in folder : #{test_dir_name}"
|
99
|
+
puts "Using Vagrant file : #{ENV['VAGRANT_VAGRANTFILE']}"
|
100
|
+
Rake::Task[:functionaltest].execute
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
end
|
data/bootstrap.key
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEAyxoANMip0RrJ9YeBHrw9J6zEcHtY06I930mV5Jj0qQh4xY+x
|
3
|
+
t2ra2GZFGYBHDqp8akIgm5wXsBUXX1KoP2DsURyKTeo4UrXG+KAaVziTKqbPxGHO
|
4
|
+
1HxZ1xkEifW1+UlC9Ghu2klI2MyedgpVwsEvT6JYyu7UJeklE3DrWkQHOFN7J/IL
|
5
|
+
XtuP7PvSYVC+5TUgyCC1n0KJLixjFgCPZl+5xpY3oM5gU9jVWOXGwUPt3d2/RgnF
|
6
|
+
0XLeGlm0TbibVX+Po5OEmC3c8cccBg5JIOVUZ8Yq6EuejjfFYkMET5B2MLTDdrl0
|
7
|
+
pzv9EIVsGuQ5jQCzrMkiSz9ExTU6OPKJZWTRUwIBIwKCAQEAnK2oYzu2M5hSp3cp
|
8
|
+
F7XIxtW8HEHlcA9xjv5AboSfexUp9316d4zx92TWOD5is4rVAYN4PYcK9YydAGRV
|
9
|
+
57/MPpJcEDhXVb9tmzmt64NqNth0ZEtzqztbP4hT9WXG5OC+n0k/knMMT3lHCppC
|
10
|
+
KIZmU1/7Wrg9QdEcmfgGA84UMsKstkmyZQvNoxEDnLV3u0e6dLv1lrSnn2wuJl6u
|
11
|
+
eEcGq119wW/xKV5wgjgE7G8SDQ4DwFLaRUNA3GEeIYdXU1v5AI+5HjR+/VCa89GM
|
12
|
+
qb8mfUZjf1sxYW2s8kxxusAgMq/H2SRLekg8TwlzF3xHlPTxxOVnmV9/zQ3e9Fik
|
13
|
+
RTNumwKBgQD94SNYdhX7m2qg+GNHKn00qSMQJOEYCKxmac3fwFdqQxibGXiFDrrL
|
14
|
+
w/n44QoRwP2v5/byxChYVD6ART0SLuclKXMsOH35ht2W6DJltALFZp8upVk1ZSah
|
15
|
+
zfotISXcYxaCnIugG7QfQdyeFSA3uN9vH7FEze0v9DTPXTIrPJvqWwKBgQDMzEk9
|
16
|
+
b0SARUu68x6tHUf6azlnH1FVfMRYjWwZVfgXdfF0xXjlBgJuQXPHflSL0xBDZMPe
|
17
|
+
CNbl19Yy5oA94HaGguFL9il3sMNm60eCaurFaD2Ew8gMtECYuQIwyo3+SYr7a12Y
|
18
|
+
oSo6S8J7Myxiqr3SQgFzo4pvJgFmSaxG2I+2aQKBgQCuFrkmt1+H9YryCWil0/4V
|
19
|
+
e0s+RSyixB5yHKptizSgowmO7OTthnF1yDZhhF6tFp9UDMaX1vcX/0DM/EciaU4K
|
20
|
+
2pgeUp+GiF1uyxs+bM6zPw4RW3BfIMoIjT3VzZZN+s2bZAf4wookD+e820lKx+mr
|
21
|
+
SO6VlIVithWVgbwAZBMkWwKBgEY3aZFn+jqbamv7lX0unFXbnqcDbFfTAX1yUPK+
|
22
|
+
Y7BFsd7knnpoddyouftBQY8GiTuthPurQl1ukpUb1DJ42C4ePp2ze+6Fv1Z8jYvM
|
23
|
+
4sdW8IVKcHliX0pOD2EvgSP79SMAPVjmzKZF3Ed/Qmr4thwz4z2XKCYbqLVbFn6w
|
24
|
+
pk0rAoGBAJWNcH9WB5itvwRrfn0G+Q1reH/8rc59QkU+XfDnJadBcvDc41bGiUM1
|
25
|
+
ynlE1/1emU3L2syZrT7Wuob1wNzMfeHLIASuIjYt337bHfWsT8qI4BekhZf/PoNx
|
26
|
+
eYhpBXmesWJWksYOuMt+/cFus+59Rm6cFrLrp1bgzzqDPNGaslyD
|
27
|
+
-----END RSA PRIVATE KEY-----
|
data/build_rpm.sh
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
VERSION=1.
|
3
|
-
mkdir -p /tmp/vagrant-cloudstack-build_rpm.$$/vagrant-cloudstack-$VERSION
|
4
|
-
cp -r . /tmp/vagrant-cloudstack-build_rpm.$$/vagrant-cloudstack-$VERSION/
|
5
|
-
tar -C /tmp/vagrant-cloudstack-build_rpm.$$/ -czf ~/rpmbuild/SOURCES/vagrant-cloudstack-$VERSION.tar.gz vagrant-cloudstack-$VERSION
|
6
|
-
rpmbuild --define "gemver $VERSION" -bb vagrant-cloudstack.spec
|
7
|
-
rm -rf /tmp/vagrant-cloudstack-build_rpm.$$
|
1
|
+
#!/bin/bash
|
2
|
+
VERSION=1.4.0
|
3
|
+
mkdir -p /tmp/vagrant-cloudstack-build_rpm.$$/vagrant-cloudstack-$VERSION
|
4
|
+
cp -r . /tmp/vagrant-cloudstack-build_rpm.$$/vagrant-cloudstack-$VERSION/
|
5
|
+
tar -C /tmp/vagrant-cloudstack-build_rpm.$$/ -czf ~/rpmbuild/SOURCES/vagrant-cloudstack-$VERSION.tar.gz vagrant-cloudstack-$VERSION
|
6
|
+
rpmbuild --define "gemver $VERSION" -bb vagrant-cloudstack.spec
|
7
|
+
rm -rf /tmp/vagrant-cloudstack-build_rpm.$$
|
@@ -1,45 +1,45 @@
|
|
1
|
-
# -*- mode: ruby -*-
|
2
|
-
# vi: set ft=ruby :
|
3
|
-
|
4
|
-
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
5
|
-
VAGRANTFILE_API_VERSION = '2'
|
6
|
-
|
7
|
-
Vagrant.require_version '>= 1.5.0'
|
8
|
-
|
9
|
-
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
10
|
-
|
11
|
-
config.vm.synced_folder ".", "/vagrant", disabled: true, type: 'rsync' # if Vagrant::Util::Platform.windows?
|
12
|
-
config.vm.box = ENV['LINUX_TEMPLATE_NAME']
|
13
|
-
|
14
|
-
config.vm.provider :cloudstack do |cloudstack, override|
|
15
|
-
cloudstack.display_name = ENV['TEST_NAME']
|
16
|
-
|
17
|
-
cloudstack.host = ENV['CLOUDSTACK_HOST']
|
18
|
-
cloudstack.path = '/client/api'
|
19
|
-
cloudstack.port = '8080'
|
20
|
-
cloudstack.scheme = 'http'
|
21
|
-
cloudstack.api_key = ENV['CLOUDSTACK_API_KEY']
|
22
|
-
cloudstack.secret_key = ENV['CLOUDSTACK_SECRET_KEY']
|
23
|
-
|
24
|
-
cloudstack.zone_name = ENV['ZONE_NAME']
|
25
|
-
cloudstack.network_name = ENV['NETWORK_NAME']
|
26
|
-
cloudstack.service_offering_name = ENV['SERVICE_OFFERING_NAME']
|
27
|
-
|
28
|
-
|
29
|
-
cloudstack.expunge_on_destroy = ENV['CS_EXPUNGE'] == "true"
|
30
|
-
cloudstack.network_type = "Ignored"
|
31
|
-
cloudstack.ssh_key = ENV['SSH_KEY'] unless ENV['SSH_KEY'].nil?
|
32
|
-
cloudstack.ssh_user = ENV['SSH_USER'] unless ENV['SSH_USER'].nil?
|
33
|
-
|
34
|
-
cloudstack.security_groups = [{
|
35
|
-
:name => "Awesome_security_group1",
|
36
|
-
:description => "Created from the Vagrantfile",
|
37
|
-
:rules => [{:type => "ingress", :protocol => "TCP", :startport => 23, :endport => 23, :cidrlist => "0.0.0.0/0"}]
|
38
|
-
},
|
39
|
-
{
|
40
|
-
:name => "Awesome_security_group2",
|
41
|
-
:description => "Created from the Vagrantfile",
|
42
|
-
:rules => [{:type => "ingress", :protocol => "TCP", :startport => 22, :endport => 22, :cidrlist => "0.0.0.0/0"}]
|
43
|
-
}]
|
44
|
-
end
|
45
|
-
end
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
5
|
+
VAGRANTFILE_API_VERSION = '2'
|
6
|
+
|
7
|
+
Vagrant.require_version '>= 1.5.0'
|
8
|
+
|
9
|
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
10
|
+
|
11
|
+
config.vm.synced_folder ".", "/vagrant", disabled: true, type: 'rsync' # if Vagrant::Util::Platform.windows?
|
12
|
+
config.vm.box = ENV['LINUX_TEMPLATE_NAME']
|
13
|
+
|
14
|
+
config.vm.provider :cloudstack do |cloudstack, override|
|
15
|
+
cloudstack.display_name = ENV['TEST_NAME']
|
16
|
+
|
17
|
+
cloudstack.host = ENV['CLOUDSTACK_HOST']
|
18
|
+
cloudstack.path = '/client/api'
|
19
|
+
cloudstack.port = '8080'
|
20
|
+
cloudstack.scheme = 'http'
|
21
|
+
cloudstack.api_key = ENV['CLOUDSTACK_API_KEY']
|
22
|
+
cloudstack.secret_key = ENV['CLOUDSTACK_SECRET_KEY']
|
23
|
+
|
24
|
+
cloudstack.zone_name = ENV['ZONE_NAME']
|
25
|
+
cloudstack.network_name = ENV['NETWORK_NAME']
|
26
|
+
cloudstack.service_offering_name = ENV['SERVICE_OFFERING_NAME']
|
27
|
+
|
28
|
+
|
29
|
+
cloudstack.expunge_on_destroy = ENV['CS_EXPUNGE'] == "true"
|
30
|
+
cloudstack.network_type = "Ignored"
|
31
|
+
cloudstack.ssh_key = ENV['SSH_KEY'] unless ENV['SSH_KEY'].nil?
|
32
|
+
cloudstack.ssh_user = ENV['SSH_USER'] unless ENV['SSH_USER'].nil?
|
33
|
+
|
34
|
+
cloudstack.security_groups = [{
|
35
|
+
:name => "Awesome_security_group1",
|
36
|
+
:description => "Created from the Vagrantfile",
|
37
|
+
:rules => [{:type => "ingress", :protocol => "TCP", :startport => 23, :endport => 23, :cidrlist => "0.0.0.0/0"}]
|
38
|
+
},
|
39
|
+
{
|
40
|
+
:name => "Awesome_security_group2",
|
41
|
+
:description => "Created from the Vagrantfile",
|
42
|
+
:rules => [{:type => "ingress", :protocol => "TCP", :startport => 22, :endport => 22, :cidrlist => "0.0.0.0/0"}]
|
43
|
+
}]
|
44
|
+
end
|
45
|
+
end
|
@@ -1,21 +1,21 @@
|
|
1
|
-
describe 'Basic Network' do
|
2
|
-
it 'starts Linux VM with security groups' do
|
3
|
-
expect(`vagrant up`).to include(
|
4
|
-
'Security Group Awesome_security_group1 created with ID',
|
5
|
-
'Security Group Awesome_security_group2 created with ID',
|
6
|
-
'Security Group: Awesome_security_group1 (',
|
7
|
-
'Security Group: Awesome_security_group2 (',
|
8
|
-
'Network name or id will be ignored',
|
9
|
-
'Machine is booted and ready for use!'
|
10
|
-
)
|
11
|
-
expect($?.exitstatus).to eq(0)
|
12
|
-
end
|
13
|
-
it 'destroys Linux with security groups' do
|
14
|
-
expect(`vagrant destroy --force`).to include(
|
15
|
-
'Terminating the instance...',
|
16
|
-
'Deleted ingress rules',
|
17
|
-
'Deleted egress rules'
|
18
|
-
)
|
19
|
-
expect($?.exitstatus).to eq(0)
|
20
|
-
end
|
21
|
-
end
|
1
|
+
describe 'Basic Network' do
|
2
|
+
it 'starts Linux VM with security groups' do
|
3
|
+
expect(`vagrant up`).to include(
|
4
|
+
'Security Group Awesome_security_group1 created with ID',
|
5
|
+
'Security Group Awesome_security_group2 created with ID',
|
6
|
+
'Security Group: Awesome_security_group1 (',
|
7
|
+
'Security Group: Awesome_security_group2 (',
|
8
|
+
'Network name or id will be ignored',
|
9
|
+
'Machine is booted and ready for use!'
|
10
|
+
)
|
11
|
+
expect($?.exitstatus).to eq(0)
|
12
|
+
end
|
13
|
+
it 'destroys Linux with security groups' do
|
14
|
+
expect(`vagrant destroy --force`).to include(
|
15
|
+
'Terminating the instance...',
|
16
|
+
'Deleted ingress rules',
|
17
|
+
'Deleted egress rules'
|
18
|
+
)
|
19
|
+
expect($?.exitstatus).to eq(0)
|
20
|
+
end
|
21
|
+
end
|
@@ -1,102 +1,119 @@
|
|
1
|
-
# -*- mode: ruby -*-
|
2
|
-
# vi: set ft=ruby :
|
3
|
-
|
4
|
-
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
5
|
-
VAGRANTFILE_API_VERSION = '2'
|
6
|
-
|
7
|
-
Vagrant.require_version '>= 1.5.0'
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
cloudstack.
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
cloudstack.
|
97
|
-
cloudstack.
|
98
|
-
cloudstack.
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
5
|
+
VAGRANTFILE_API_VERSION = '2'
|
6
|
+
|
7
|
+
Vagrant.require_version '>= 1.5.0'
|
8
|
+
networks = {
|
9
|
+
VR: {
|
10
|
+
network_name: ENV['VR_NETWORK_NAME'],
|
11
|
+
public_ip: ENV['VR_PUBLIC_IP']
|
12
|
+
},
|
13
|
+
VPC: {
|
14
|
+
network_name: ENV['VPC_TIER_NAME'],
|
15
|
+
public_ip: ENV['VPC_PUBLIC_IP']
|
16
|
+
}
|
17
|
+
}
|
18
|
+
machines = {}
|
19
|
+
networks.each_pair do |net_name, net_options|
|
20
|
+
box_number = 0
|
21
|
+
machines["#{net_name}box#{box_number+=1}"] = {
|
22
|
+
# Test fixed public port
|
23
|
+
pf_public_port: ENV['PUBLIC_SSH_PORT'],
|
24
|
+
# Test fixed private port
|
25
|
+
pf_private_port: ENV['PRIVATE_SSH_PORT'],
|
26
|
+
#
|
27
|
+
pf_ip_address: net_options[:public_ip],
|
28
|
+
network_name: net_options[:network_name],
|
29
|
+
firewall_rules: [
|
30
|
+
# Full Firewall rule
|
31
|
+
{:ipaddress => net_options[:public_ip], :protocol => 'tcp', :startport => 1111, :endport => 1111},
|
32
|
+
# Firewall rule without ':ipaddress' which defaults to 'cloudstack_pf_ip_address'
|
33
|
+
{:protocol => 'tcp', :startport => 1122, :endport => 1122},
|
34
|
+
# Firewall rule without ':protocol', which defaults to 'tcp'
|
35
|
+
{:startport => 1133, :endport => 1133},
|
36
|
+
# Firewall rule without ':endport', which defaults to ':startport' if present
|
37
|
+
{:startport => 1144},
|
38
|
+
# Firewall rule without ':start', which defaults to ':endport' if present
|
39
|
+
{:endport => 22}
|
40
|
+
],
|
41
|
+
port_forwarding_rules: [
|
42
|
+
# Full portforwarding rule
|
43
|
+
{:ipaddress => net_options[:public_ip], :protocol => "tcp", :publicport => 1111, :privateport => 22, :openfirewall => false},
|
44
|
+
# Portforwarding rule without ':ipaddress' which defaults to 'cloudstack_pf_ip_address'
|
45
|
+
{:protocol => "tcp", :publicport => 1122, :privateport => 22, :openfirewall => false},
|
46
|
+
# Portforwarding rule without ':protocol', which defaults to 'tcp'
|
47
|
+
{:publicport => 1133, :privateport => 22, :openfirewall => false},
|
48
|
+
# Portforwarding rule without ':openfirewall', which defaults to 'cloudstack.pf_open_firewall'
|
49
|
+
{:publicport => 1144, :privateport => 22},
|
50
|
+
# Portforwarding rule without ':publicport', which defaults to ':privateport'
|
51
|
+
{:privateport => 22},
|
52
|
+
# Portforwarding rule with ':generate_firewall', which generates an apropriate
|
53
|
+
# Firewall rule based ':publicport' => ':startport', and other defaults
|
54
|
+
{:publicport => 1155, :privateport => 22, :generate_firewall => true},
|
55
|
+
# Portforwarding rule which instructs CloudStack to create a Firewall rule
|
56
|
+
{:publicport => 1166, :privateport => 22, :openfirewall => true},
|
57
|
+
],
|
58
|
+
# Trusted network as array, instead of string. Add some networks to make sure it's an (multi element) Array
|
59
|
+
pf_trusted_networks: [ENV['SOURCE_CIDR'], ',172.31.1.172/32', '172.31.1.173/32'],
|
60
|
+
# Ignore security groups
|
61
|
+
security_groups: [{
|
62
|
+
:name => "Awesome_security_group",
|
63
|
+
:description => "Created from the Vagrantfile",
|
64
|
+
:rules => [{:type => "ingress", :protocol => "TCP", :startport => 22, :endport => 22, :cidrlist => "0.0.0.0/0"}]
|
65
|
+
}],
|
66
|
+
# Ignore security groups
|
67
|
+
security_group_names: ['default', 'Awesome_security_group'],
|
68
|
+
}
|
69
|
+
|
70
|
+
machines["#{net_name}box#{box_number+=1}"] = {
|
71
|
+
network_name: net_options[:network_name],
|
72
|
+
pf_ip_address: net_options[:public_ip],
|
73
|
+
# NO pf_public_port; test auto generated public port
|
74
|
+
# NO pf_private_port; test detection of Communicator port (SSH/Winrm)
|
75
|
+
# NO firewall rules for Communicator (SSH/WinRM), test auto generation
|
76
|
+
# Trusted networks as string instead of array. Add some networks to make sure it supports multiple network-string
|
77
|
+
pf_trusted_networks: ENV['SOURCE_CIDR'] + ',172.31.1.172/32,172.31.1.173/32'
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |global_config|
|
82
|
+
machines.each_pair do |name, options|
|
83
|
+
global_config.vm.define name do |config|
|
84
|
+
config.vm.box = ENV['LINUX_TEMPLATE_NAME']
|
85
|
+
|
86
|
+
config.vm.synced_folder ".", "/vagrant", type: "rsync",
|
87
|
+
rsync__exclude: [".git/", "vendor"], disabled: true
|
88
|
+
|
89
|
+
config.vm.provider :cloudstack do |cloudstack, override|
|
90
|
+
cloudstack.display_name = "#{name}-#{ENV['TEST_NAME']}"
|
91
|
+
|
92
|
+
cloudstack.host = ENV['CLOUDSTACK_HOST']
|
93
|
+
# Use default path, port and scheme
|
94
|
+
cloudstack.api_key = ENV['CLOUDSTACK_API_KEY']
|
95
|
+
cloudstack.secret_key = ENV['CLOUDSTACK_SECRET_KEY']
|
96
|
+
cloudstack.zone_name = ENV['ZONE_NAME']
|
97
|
+
cloudstack.network_name = options[:network_name]
|
98
|
+
cloudstack.service_offering_name = ENV['SERVICE_OFFERING_NAME']
|
99
|
+
cloudstack.ssh_key = ENV['SSH_KEY'] unless ENV['SSH_KEY'].nil?
|
100
|
+
cloudstack.ssh_user = ENV['SSH_USER'] unless ENV['SSH_USER'].nil?
|
101
|
+
cloudstack.expunge_on_destroy = ENV['EXPUNGE_ON_DESTROY']=="true"
|
102
|
+
|
103
|
+
cloudstack.pf_ip_address = options[:pf_ip_address]
|
104
|
+
cloudstack.pf_public_port = options[:pf_public_port] unless options[:pf_public_port].nil?
|
105
|
+
cloudstack.pf_private_port = options[:pf_private_port] unless options[:pf_private_port].nil?
|
106
|
+
cloudstack.pf_open_firewall = false
|
107
|
+
|
108
|
+
# With Advanced networking, following Basic networking features should be ignored
|
109
|
+
cloudstack.security_groups = options[:security_groups] unless options[:security_groups].nil?
|
110
|
+
cloudstack.security_group_names = options[:security_group_names] unless options[:security_group_names].nil?
|
111
|
+
# With Advanced networking, following Basic networking features should be ignored
|
112
|
+
|
113
|
+
cloudstack.pf_trusted_networks = options[:pf_trusted_networks] unless options[:pf_trusted_networks].nil?
|
114
|
+
cloudstack.firewall_rules = options[:firewall_rules] unless options[:firewall_rules].nil?
|
115
|
+
cloudstack.port_forwarding_rules = options[:port_forwarding_rules] unless options[:port_forwarding_rules].nil?
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|