vagrant-conoha 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rubocop.yml +35 -0
  4. data/CHANGELOG.md +3 -0
  5. data/Gemfile +19 -0
  6. data/LICENSE +23 -0
  7. data/Rakefile +25 -0
  8. data/Vagrantfile +71 -0
  9. data/dummy.box +0 -0
  10. data/example_box/README.md +13 -0
  11. data/example_box/metadata.json +3 -0
  12. data/functional_tests/Vagrantfile +58 -0
  13. data/functional_tests/keys/vagrant-openstack +27 -0
  14. data/functional_tests/keys/vagrant-openstack.pub +1 -0
  15. data/functional_tests/run_tests.sh +142 -0
  16. data/lib/vagrant-conoha.rb +29 -0
  17. data/lib/vagrant-conoha/action.rb +227 -0
  18. data/lib/vagrant-conoha/action/abstract_action.rb +22 -0
  19. data/lib/vagrant-conoha/action/connect_openstack.rb +60 -0
  20. data/lib/vagrant-conoha/action/create_server.rb +154 -0
  21. data/lib/vagrant-conoha/action/create_stack.rb +68 -0
  22. data/lib/vagrant-conoha/action/delete_server.rb +53 -0
  23. data/lib/vagrant-conoha/action/delete_stack.rb +73 -0
  24. data/lib/vagrant-conoha/action/message.rb +19 -0
  25. data/lib/vagrant-conoha/action/provision.rb +60 -0
  26. data/lib/vagrant-conoha/action/read_ssh_info.rb +72 -0
  27. data/lib/vagrant-conoha/action/read_state.rb +43 -0
  28. data/lib/vagrant-conoha/action/resume.rb +24 -0
  29. data/lib/vagrant-conoha/action/start_server.rb +24 -0
  30. data/lib/vagrant-conoha/action/stop_server.rb +25 -0
  31. data/lib/vagrant-conoha/action/suspend.rb +24 -0
  32. data/lib/vagrant-conoha/action/sync_folders.rb +129 -0
  33. data/lib/vagrant-conoha/action/wait_accessible.rb +61 -0
  34. data/lib/vagrant-conoha/action/wait_active.rb +33 -0
  35. data/lib/vagrant-conoha/action/wait_stop.rb +33 -0
  36. data/lib/vagrant-conoha/catalog/openstack_catalog.rb +67 -0
  37. data/lib/vagrant-conoha/client/cinder.rb +39 -0
  38. data/lib/vagrant-conoha/client/domain.rb +159 -0
  39. data/lib/vagrant-conoha/client/glance.rb +65 -0
  40. data/lib/vagrant-conoha/client/heat.rb +49 -0
  41. data/lib/vagrant-conoha/client/http_utils.rb +116 -0
  42. data/lib/vagrant-conoha/client/keystone.rb +77 -0
  43. data/lib/vagrant-conoha/client/neutron.rb +48 -0
  44. data/lib/vagrant-conoha/client/nova.rb +212 -0
  45. data/lib/vagrant-conoha/client/openstack.rb +59 -0
  46. data/lib/vagrant-conoha/client/request_logger.rb +23 -0
  47. data/lib/vagrant-conoha/client/rest_utils.rb +25 -0
  48. data/lib/vagrant-conoha/command/abstract_command.rb +51 -0
  49. data/lib/vagrant-conoha/command/flavor_list.rb +24 -0
  50. data/lib/vagrant-conoha/command/image_list.rb +29 -0
  51. data/lib/vagrant-conoha/command/main.rb +51 -0
  52. data/lib/vagrant-conoha/command/network_list.rb +25 -0
  53. data/lib/vagrant-conoha/command/openstack_command.rb +16 -0
  54. data/lib/vagrant-conoha/command/reset.rb +20 -0
  55. data/lib/vagrant-conoha/command/subnet_list.rb +22 -0
  56. data/lib/vagrant-conoha/command/utils.rb +22 -0
  57. data/lib/vagrant-conoha/command/volume_list.rb +25 -0
  58. data/lib/vagrant-conoha/config.rb +390 -0
  59. data/lib/vagrant-conoha/config/http.rb +39 -0
  60. data/lib/vagrant-conoha/config_resolver.rb +285 -0
  61. data/lib/vagrant-conoha/errors.rb +187 -0
  62. data/lib/vagrant-conoha/logging.rb +39 -0
  63. data/lib/vagrant-conoha/plugin.rb +48 -0
  64. data/lib/vagrant-conoha/provider.rb +50 -0
  65. data/lib/vagrant-conoha/utils.rb +26 -0
  66. data/lib/vagrant-conoha/version.rb +15 -0
  67. data/lib/vagrant-conoha/version_checker.rb +76 -0
  68. data/locales/en.yml +393 -0
  69. data/spec/vagrant-conoha/action/connect_openstack_spec.rb +695 -0
  70. data/spec/vagrant-conoha/action/create_server_spec.rb +225 -0
  71. data/spec/vagrant-conoha/action/create_stack_spec.rb +99 -0
  72. data/spec/vagrant-conoha/action/delete_server_spec.rb +89 -0
  73. data/spec/vagrant-conoha/action/delete_stack_spec.rb +63 -0
  74. data/spec/vagrant-conoha/action/message_spec.rb +33 -0
  75. data/spec/vagrant-conoha/action/provision_spec.rb +104 -0
  76. data/spec/vagrant-conoha/action/read_ssh_info_spec.rb +190 -0
  77. data/spec/vagrant-conoha/action/read_state_spec.rb +81 -0
  78. data/spec/vagrant-conoha/action/resume_server_spec.rb +49 -0
  79. data/spec/vagrant-conoha/action/start_server_spec.rb +49 -0
  80. data/spec/vagrant-conoha/action/stop_server_spec.rb +49 -0
  81. data/spec/vagrant-conoha/action/suspend_server_spec.rb +49 -0
  82. data/spec/vagrant-conoha/action/sync_folders_spec.rb +155 -0
  83. data/spec/vagrant-conoha/action/wait_accessible_spec.rb +67 -0
  84. data/spec/vagrant-conoha/action/wait_active_spec.rb +53 -0
  85. data/spec/vagrant-conoha/action/wait_stop_spec.rb +53 -0
  86. data/spec/vagrant-conoha/action_spec.rb +120 -0
  87. data/spec/vagrant-conoha/client/cinder_spec.rb +127 -0
  88. data/spec/vagrant-conoha/client/glance_spec.rb +143 -0
  89. data/spec/vagrant-conoha/client/heat_spec.rb +128 -0
  90. data/spec/vagrant-conoha/client/keystone_spec.rb +150 -0
  91. data/spec/vagrant-conoha/client/neutron_spec.rb +171 -0
  92. data/spec/vagrant-conoha/client/nova_spec.rb +757 -0
  93. data/spec/vagrant-conoha/client/utils_spec.rb +176 -0
  94. data/spec/vagrant-conoha/command/flavor_list_spec.rb +43 -0
  95. data/spec/vagrant-conoha/command/image_list_spec.rb +95 -0
  96. data/spec/vagrant-conoha/command/network_list_spec.rb +65 -0
  97. data/spec/vagrant-conoha/command/reset_spec.rb +24 -0
  98. data/spec/vagrant-conoha/command/subnet_list_spec.rb +45 -0
  99. data/spec/vagrant-conoha/command/volume_list_spec.rb +40 -0
  100. data/spec/vagrant-conoha/config_resolver_spec.rb +860 -0
  101. data/spec/vagrant-conoha/config_spec.rb +373 -0
  102. data/spec/vagrant-conoha/e2e_spec.rb.save +27 -0
  103. data/spec/vagrant-conoha/provider_spec.rb +13 -0
  104. data/spec/vagrant-conoha/spec_helper.rb +37 -0
  105. data/spec/vagrant-conoha/utils_spec.rb +129 -0
  106. data/spec/vagrant-conoha/version_checker_spec.rb +39 -0
  107. data/stackrc +25 -0
  108. data/vagrant-conoha.gemspec +32 -0
  109. metadata +343 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa4bd10b2a107179aa14e28588d48e7427e00d35
4
+ data.tar.gz: c848529d96ccee054b664a6d6cf3caaa3ecc13e5
5
+ SHA512:
6
+ metadata.gz: 243f369437e47efa7b0b3f6ac4b7550b1197142156ae69fdb806e0e914bb15b63ea399ad4affbc973d4fa991c5dbd7536cd4606af572c44076d5de16bba6e925
7
+ data.tar.gz: cba4520b674437eb3906c10db53eac872856e4c10165ca58c0e1259d037f1075534c7b33b3b11a9b6d3020eb7386af903ab157e1a70f496da22ca8b303eb3bf3
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.iml
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ .vagrant
7
+ .yardoc
8
+ Gemfile.lock
9
+ gemfiles/*.lock
10
+ InstalledFiles
11
+ _yardoc
12
+ coverage
13
+ doc/
14
+ lib/bundler/man
15
+ pkg
16
+ rdoc
17
+ spec/reports
18
+ test/tmp
19
+ test/version_tmp
20
+ tmp
21
+ .venv
22
+ .idea/
data/.rubocop.yml ADDED
@@ -0,0 +1,35 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'out/**/*'
4
+ - '**/Vagrantfile'
5
+
6
+ Style/FileName:
7
+ Enabled: false
8
+
9
+ Style/Encoding:
10
+ Enabled: false
11
+
12
+ Style/Documentation:
13
+ Enabled: false
14
+
15
+ Metrics/ClassLength:
16
+ Max: 300
17
+
18
+ Metrics/CyclomaticComplexity:
19
+ Severity: warning
20
+ Max: 15
21
+
22
+ Metrics/MethodLength:
23
+ Max: 60
24
+
25
+ Metrics/LineLength:
26
+ Max: 150
27
+
28
+ Metrics/ParameterLists:
29
+ Max: 6
30
+
31
+ Metrics/AbcSize:
32
+ Max: 110
33
+
34
+ Metrics/PerceivedComplexity:
35
+ Max: 45
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ # 0.1 (August 22, 2015)
2
+
3
+ - 初期リリース
data/Gemfile ADDED
@@ -0,0 +1,19 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git', tag: 'v1.6.5'
7
+ gem 'appraisal', '1.0.0'
8
+ gem 'rubocop', '0.29.0', require: false
9
+ gem 'coveralls', require: false
10
+ gem 'rspec-its'
11
+ end
12
+
13
+ group :debug do
14
+ gem 'byebug'
15
+ end
16
+
17
+ group :plugins do
18
+ gem 'vagrant-conoha', path: '.'
19
+ end
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2013 Mitchell Hashimoto
2
+ Copyright (c) 2015 Guillaume Giamarchi, Julien Vey
3
+
4
+ MIT License
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ "Software"), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,25 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'rspec/core/rake_task'
4
+ require 'rubocop/rake_task'
5
+
6
+ # Immediately sync all stdout so that tools like buildbot can
7
+ # immediately load in the output.
8
+ $stdout.sync = true
9
+ $stderr.sync = true
10
+
11
+ # Change to the directory of this file.
12
+ Dir.chdir(File.expand_path('../', __FILE__))
13
+
14
+ # This installs the tasks that help with gem creation and
15
+ # publishing.
16
+ Bundler::GemHelper.install_tasks
17
+
18
+ # Install the `spec` task so that we can run tests.
19
+ RSpec::Core::RakeTask.new
20
+
21
+ # Install the `rubocop` task
22
+ RuboCop::RakeTask.new
23
+
24
+ # Default task is to run the unit tests
25
+ task default: %w(rubocop spec)
data/Vagrantfile ADDED
@@ -0,0 +1,71 @@
1
+ # coding: utf-8
2
+
3
+ # プラグインの設定を行います。おもにConoHa APIに関するものです。
4
+ # コントロールパネルの「API」ページに必要情報があります。
5
+ # https://manage.conoha.jp/API/
6
+
7
+ # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
8
+ VAGRANTFILE_API_VERSION = "2"
9
+
10
+ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
11
+ config.vm.box = 'conoha'
12
+ config.ssh.username = 'root'
13
+
14
+ config.vm.provider :conoha do |conoha|
15
+
16
+ # IdentityEndpointを指定します。
17
+ conoha.openstack_auth_url = 'https://identity.tyo1.conoha.io/v2.0'
18
+
19
+ # APIユーザ名、APIパスワード、テナント名を指定します。
20
+ # APIユーザー名はgncu、テナント名はgnctなので注意して下さい。
21
+ conoha.username = 'gncu*******'
22
+ conoha.password = '***********'
23
+ conoha.tenant_name = 'gnct*******'
24
+
25
+ # VPSのスペックを指定します(g-1gbの場合は1GBプランになります)。
26
+ #
27
+ # 指定できる値はvagrantのopenstackコマンドで取得できます。
28
+ # 以下のコマンドを実行してname列に表示された値を指定します。
29
+ #
30
+ # vagrant openstack flavor-list
31
+ conoha.flavor = 'g-1gb'
32
+
33
+ # VPSのイメージを指定します。
34
+ #
35
+ # 指定できる値はvagrantのopenstackコマンドで取得できます。
36
+ # 以下のコマンドを実行してname列に表示された値を指定します。
37
+ #
38
+ # vagrant openstack image-list
39
+ conoha.image = 'vmi-ubuntu-14.04-amd64'
40
+
41
+ # リージョンを指定します。
42
+ # tyo1 sin1 sjc1のどれかです。
43
+ conoha.region = "tyo1"
44
+
45
+ # VPSのネームタグを指定します。
46
+ conoha.metadata = {
47
+ instance_name_tag: "vagrant_conoha"
48
+ }
49
+
50
+ # セキュリティグループを指定します。
51
+ # NOTE: VPSを一度も作成したことがない場合は、defaultが存在しないことがあります。
52
+ conoha.security_groups = [
53
+ "default",
54
+ "gncs-ipv4-all",
55
+ "gncs-ipv6-all"
56
+ ]
57
+
58
+ # SSH公開鍵を指定します。
59
+ # コントロールパネルの「SSH Key」にある名前を指定して下さい。
60
+ # config.ssh.private_key_pathもともに指定する必要があります。
61
+ #
62
+ # 指定が無い場合は、Vagrantが新しい鍵ペアを作成します。
63
+ # conoha.keypair_name = "hironobu-key"
64
+
65
+ end
66
+
67
+ # すでにSSH公開鍵をコントロールパネルに登録している場合は、
68
+ # ここで秘密鍵のパスを指定します。
69
+ # keypair_nameとともに指定します。
70
+ # config.ssh.private_key_path = "~/.ssh/id_rsa"
71
+ end
data/dummy.box ADDED
Binary file
@@ -0,0 +1,13 @@
1
+ # Vagrant Openstack Cloud Example Box
2
+
3
+ Vagrant providers each require a custom provider-specific box format.
4
+ This folder shows the example contents of a box for the `openstack` provider.
5
+ To turn this into a box:
6
+
7
+ ```
8
+ $ tar cvzf openstack.box ./metadata.json ./Vagrantfile
9
+ ```
10
+
11
+ This box works by using Vagrant's built-in Vagrantfile merging to setup
12
+ defaults for Openstack. These defaults can easily be overwritten by higher-level
13
+ Vagrantfiles (such as project root Vagrantfiles).
@@ -0,0 +1,3 @@
1
+ {
2
+ "provider": "openstack"
3
+ }
@@ -0,0 +1,58 @@
1
+ require 'vagrant-openstack-provider'
2
+
3
+ Vagrant.configure('2') do |config|
4
+
5
+ config.vm.box = 'openstack'
6
+ config.vm.box_url = 'https://github.com/ggiamarchi/vagrant-openstack/raw/master/source/dummy.box'
7
+
8
+ config.ssh.private_key_path = ENV['OS_KEYPAIR_PRIVATE_KEY']
9
+ config.ssh.pty = true
10
+ config.ssh.shell = ENV['OS_SSH_SHELL']
11
+
12
+ config.vm.provider :openstack do |os|
13
+ os.username = ENV['OS_USERNAME']
14
+ os.password = ENV['OS_PASSWORD']
15
+ os.openstack_auth_url = ENV['OS_AUTH_URL']
16
+ os.openstack_compute_url = ENV['OS_COMPUTE_URL']
17
+ os.openstack_network_url = ENV['OS_NETWORK_URL']
18
+ os.tenant_name = ENV['OS_TENANT_NAME']
19
+ os.ssh_timeout = ENV['OS_SSH_TIMEOUT'].to_i
20
+ os.sync_method = ENV['OS_SYNC_METHOD']
21
+ os.flavor = ENV['OS_FLAVOR']
22
+ os.image = ENV['OS_IMAGE']
23
+ os.ssh_username = ENV['OS_SSH_USERNAME']
24
+ os.keypair_name = ENV['OS_KEYPAIR_NAME']
25
+ os.floating_ip_pool = ENV['OS_FLOATING_IP_POOL']
26
+ end
27
+
28
+ config.vm.define 'test-basic' do |test|
29
+ test.vm.provider :openstack do |os|
30
+ os.floating_ip = ENV['OS_FLOATING_IP']
31
+ os.floating_ip_pool = nil
32
+ end
33
+ test.vm.provision 'shell', inline: 'echo "SUCCESS" > /tmp/test_shell_provision'
34
+ end
35
+
36
+ config.vm.define 'test-floating-ip-pool' do |test|
37
+ test.vm.provider :openstack do |os|
38
+ os.floating_ip = nil
39
+ os.floating_ip_pool = ENV['OS_FLOATING_IP_POOL']
40
+ end
41
+ test.vm.provision 'shell', inline: 'echo "SUCCESS" > /tmp/test_shell_provision'
42
+ end
43
+
44
+ config.vm.define 'test-ssh-public-key-path' do |test|
45
+ test.vm.provider :openstack do |os|
46
+ os.keypair_name = nil
47
+ os.public_key_path = ENV['OS_PUBLIC_KEY_PATH']
48
+ end
49
+ test.vm.provision 'shell', inline: 'echo "SUCCESS" > /tmp/test_shell_provision'
50
+ end
51
+
52
+ config.vm.define 'test-availabilty-zone' do |test|
53
+ test.vm.provider :openstack do |os|
54
+ os.availability_zone = ENV['OS_AZ']
55
+ end
56
+ test.vm.provision 'shell', inline: 'echo "SUCCESS" > /tmp/test_shell_provision'
57
+ end
58
+ end
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEArKPKCXfOr8pjInYeDfGOfKC5JS8jWGgf5OqD0SlvRpdWEKa6
3
+ KR6gDL6rVVFU4z7T5lECzeCp+P4uXwYhqXM4TodEccjPkMLDgR5jt+Fd9ixtlVYR
4
+ Gj5vuAv1a7gk4zVr4M82oOKnTriTqTrFGZL3YG3XyxKftoTZyDWsI4nAbfMoup/e
5
+ d54zHY6gApgDGBg+XlJz5Ai4AJT2YtCwWyu4v/zuDcEtMBDbioI8jpWkKTycFMDw
6
+ W8f5Cwxe3bMCw9sasC6+FUI97ac5itvnE6/LZvcftYjXQF0oakz3ujZ0/gN0rhpe
7
+ pswU2ODSkXWxOMBYS0PXZz9N2r3jzGXa5h1EfwIDAQABAoIBACGaL7TwENa+edU3
8
+ UFo+bhFr5x2Js0N94NdZnhaUDgibZDERgqKGR3izk/2jOvaQQAZQNk+ELxE7yCLO
9
+ uraUqpz+TyAmieAPSKZVF+uufe9wblPm0KVfCbe0/CvfR67BsyGqs2NVOmNkIbmK
10
+ qtpzdJrcRmhMU7He4dTKPZsdMMs1esmWK3+uGgtfQTSaCi7rTxsCMn+Ob+lxvfvG
11
+ QS2Ehb63jyb+8L8PyRqnunK9iBpdhuLHN8tGeDzmrCVz/ziRenslfXq1Ng7pxhUQ
12
+ gyXWjlMoRibt9bcsSt1LcaqZMAeiiRnyUlaqyvtkhSb+yzZyHQZs90DgxRVH40Ya
13
+ ebq9FcECgYEA5eXApNgi2iLDWMIGISO9uPDxzR5i4aDjIyHGv1uos/hWwJiX864K
14
+ N23WLLna2LyIAZaEzUi76cPReFza7lxDtl/OeRDgf7yCPWZdH9OhyAeAtVVOu4eN
15
+ iX5dee/GW5Mmu5xBUXo4z0TETqbey1fWHeJNqaA5W9mWkBKrKnT2aIcCgYEAwD3F
16
+ /yUb8fS/Tj02oh2qb3clIwEIgdh6C38/d2J1OduICVzLoMhq0nZnZ1zMPNtLA/g2
17
+ TjZ70EY1VyDAOWaIo+FGU/HIuLsP2jWKvDSKhJUx/oBBPWpCxqBZefoQhKZLkbmO
18
+ Tw+SrUBQM7r8pL/5ptocW0HDwjL8Sbs4KfSWWkkCgYBSLuPDChDLcgnrPND8H86+
19
+ wkNuVCJ9DgqkkHqABcA1Nd2tU99eGSVF01nw+y+ksyDbkHdA+3NRidLj+C27b/g0
20
+ xeMFnGbkwvq8AE/iBMGcxDHaoPhYSYjrUeUQpgp+ygfaoW0oN0z/q1GR3E1g27GL
21
+ VU72CHT4xLvyHPpbXxyHGQKBgAXO1/iJanq45j664rerJccQVnLkSRmDLMzEH2q/
22
+ 8sK4uzdtMkm9RFzvbthUmWcNSQrpqNpcEwmL1Xi4aJZTXrV0zOckWugZ3rS9AWAG
23
+ RlkTGNuTjGUKnNHbblidEXqwe3//lykUU14gn0uwzok7s5My68BmEEABwlWH7n52
24
+ AUThAoGBANwwj2WKKu6l66fyQPFZu0cJTfjhiZt1WH17mHAAtL2TpLnDJiPZYbzJ
25
+ 8WRqCWrww+IVq1yxBS6LhAGMuHTfxFWZGKSPxf9jOM87RKJbPkiBDHoFXznjkjsn
26
+ tXk6jmn+6bCmwkgfzVypN3GTyEMhVgQPMJNqlMO9Op5ZAAKuyi31
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCso8oJd86vymMidh4N8Y58oLklLyNYaB/k6oPRKW9Gl1YQpropHqAMvqtVUVTjPtPmUQLN4Kn4/i5fBiGpczhOh0RxyM+QwsOBHmO34V32LG2VVhEaPm+4C/VruCTjNWvgzzag4qdOuJOpOsUZkvdgbdfLEp+2hNnINawjicBt8yi6n953njMdjqACmAMYGD5eUnPkCLgAlPZi0LBbK7i//O4NwS0wENuKgjyOlaQpPJwUwPBbx/kLDF7dswLD2xqwLr4VQj3tpzmK2+cTr8tm9x+1iNdAXShqTPe6NnT+A3SuGl6mzBTY4NKRdbE4wFhLQ9dnP03avePMZdrmHUR/ julienvey@MacBook-Air-de-Julien.local
@@ -0,0 +1,142 @@
1
+ #!/bin/bash
2
+
3
+ export VAGRANT_OPENSTACK_LOG=debug
4
+
5
+ export OS_SSH_TIMEOUT=600
6
+ export OS_SYNC_METHOD=none
7
+ export OS_SSH_SHELL=bash
8
+ export OS_SSH_USERNAME=
9
+ export OS_SERVER_NAME=
10
+ export OS_IMAGE=
11
+
12
+ ERROR_STATE=0
13
+
14
+ cat > /tmp/images_with_ssh_user <<EOL
15
+ ubuntu-12.04_x86_64_HWE;stack
16
+ ubuntu-14.04_x86_64_LVM;stack
17
+ debian7_x86_64_LVM;stack
18
+ centos65_x86_64_LVM;stack
19
+ EOL
20
+
21
+ cat > /tmp/vagrant_machines <<EOL
22
+ test-basic
23
+ test-floating-ip-pool
24
+ test-ssh-public-key-path
25
+ test-availabilty-zone
26
+ EOL
27
+
28
+ #
29
+ # $1 - Log level
30
+ # $2 - Action (e.g. UP, SSH, DESTROY)
31
+ # $* - Text
32
+ #
33
+ function log() {
34
+ [ $# -lt 3 ] && echo "Logger error..." >&2 && exit 1
35
+ level=$1 ; shift
36
+ action=$1 ; shift
37
+ printf "$(date '+%Y-%m-%d %H:%M:%S') | %10s | %10s | %s\n" "${level}" "${action}" "$*" | tee -a test.log
38
+ }
39
+
40
+ #
41
+ # $1 - Action (e.g. UP, SSH, DESTROY)
42
+ # $* - Text
43
+ #
44
+ function logInfo() {
45
+ action=$1
46
+ shift
47
+ log INFO "${action}" "$*"
48
+ }
49
+
50
+ #
51
+ # $1 - Action (e.g. UP, SSH, DESTROY)
52
+ # $* - Text
53
+ #
54
+ function logError() {
55
+ action=$1
56
+ shift
57
+ log ERROR "${action}" "$*"
58
+ ERROR_STATE=1
59
+ }
60
+
61
+ #
62
+ # $1 - Action (e.g. UP, SSH, DESTROY)
63
+ # $* - Text
64
+ #
65
+ function logSuccess() {
66
+ action=$1
67
+ shift
68
+ log SUCCESS "${action}" "$*"
69
+ }
70
+
71
+ runSingleTest() {
72
+ if [ -d ".vagrant" ]; then
73
+ rm -rf .vagrant
74
+ fi
75
+ machine=${1}
76
+
77
+ testSummary="${OS_SERVER_NAME} - ${OS_IMAGE} - ${OS_SSH_USERNAME}"
78
+
79
+ logInfo 'START' "${testSummary}"
80
+
81
+ bundle exec vagrant up "${machine}" --provider openstack 2>&1 | tee -a "${OS_SERVER_NAME}_up.log"
82
+ if [ "${PIPESTATUS[0]}" -ne 0 ] ; then
83
+ logError 'UP' "${testSummary}"
84
+ else
85
+ logSuccess 'UP' "${testSummary}"
86
+ bundle exec vagrant ssh "${machine}" -c "cat /tmp/test_shell_provision" 2>&1 | tee -a "${OS_SERVER_NAME}_ssh.log"
87
+ if [ "${PIPESTATUS[0]}" -ne 0 ] ; then
88
+ logError 'SSH' "${testSummary}"
89
+ else
90
+ logSuccess 'SSH' "${testSummary}"
91
+ fi
92
+ fi
93
+
94
+ bundle exec vagrant destroy "${machine}" 2>&1 | tee -a "${OS_SERVER_NAME}_destroy.log"
95
+ if [ "${PIPESTATUS[0]}" -ne 0 ] ; then
96
+ logError 'DESTROY' "${testSummary}"
97
+ else
98
+ logSuccess 'DESTROY' "${testSummary}"
99
+ fi
100
+
101
+ logInfo 'END' "${testSummary}"
102
+
103
+ }
104
+
105
+ #
106
+ # $1 - Instance name prefix
107
+ # $2 - Floating IP tu use
108
+ #
109
+ function runAllTests() {
110
+ ip=${1}
111
+ i=1
112
+ rm -f test.log "${name}_*.log"
113
+ touch test.log
114
+ nbTests=$(wc -l < /tmp/images_with_ssh_user)
115
+ for (( i=1 ; i<=nbTests ; i++ )) ; do
116
+ #TODO(vagrant status does not support providers, see https://github.com/mitchellh/vagrant/issues/4173)
117
+ #for machine in $(bundle exec vagrant status | tail -n +8 | head -n -4 | awk '{print $1}') ; do
118
+ while IFS= read -r machine
119
+ do
120
+ currentTest=$(head -n ${i} < /tmp/images_with_ssh_user | tail -n 1)
121
+ export OS_SERVER_NAME="${machine}_${i}"
122
+ export OS_IMAGE=$(echo "${currentTest}" | cut -f1 -d";")
123
+ export OS_FLOATING_IP="${ip}"
124
+ export OS_SSH_USERNAME=$(echo "${currentTest}" | cut -f2 -d";")
125
+ runSingleTest "${machine}"
126
+ done < /tmp/vagrant_machines
127
+ done
128
+ }
129
+
130
+ runAllTests "${OS_FLOATING_IP}"
131
+
132
+ echo ''
133
+ echo '################################################################################################'
134
+ echo '# Report summary #'
135
+ echo '################################################################################################'
136
+ echo ''
137
+ cat test.log
138
+ echo ''
139
+ echo '################################################################################################'
140
+ echo ''
141
+
142
+ exit ${ERROR_STATE}