vagrant-bosh 0.0.1

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.
Files changed (147) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.gitmodules +6 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +20 -0
  6. data/README.md +73 -0
  7. data/Rakefile +2 -0
  8. data/dev/.gitignore +1 -0
  9. data/dev/Vagrantfile +30 -0
  10. data/dev/example-bosh-manifest.yml +188 -0
  11. data/dev/example-winston-manifest.yml +70 -0
  12. data/go/.gitignore +11 -0
  13. data/go/bin/build +10 -0
  14. data/go/bin/build-linux-amd64 +9 -0
  15. data/go/bin/env +13 -0
  16. data/go/bin/go +5 -0
  17. data/go/bin/golint +19 -0
  18. data/go/bin/test +37 -0
  19. data/go/src/boshprovisioner/agent/client/client_interface.go +73 -0
  20. data/go/src/boshprovisioner/agent/client/fakes/fake_client.go +81 -0
  21. data/go/src/boshprovisioner/agent/client/http_client.go +299 -0
  22. data/go/src/boshprovisioner/agent/client/http_client_envelope.go +107 -0
  23. data/go/src/boshprovisioner/deployment/deployment.go +221 -0
  24. data/go/src/boshprovisioner/deployment/instance.go +54 -0
  25. data/go/src/boshprovisioner/deployment/manifest/deployment.go +80 -0
  26. data/go/src/boshprovisioner/deployment/manifest/ips.go +23 -0
  27. data/go/src/boshprovisioner/deployment/manifest/manifest.go +143 -0
  28. data/go/src/boshprovisioner/deployment/manifest/manifest_suite_test.go +13 -0
  29. data/go/src/boshprovisioner/deployment/manifest/manifest_test.go +86 -0
  30. data/go/src/boshprovisioner/deployment/manifest/syntax_validator.go +186 -0
  31. data/go/src/boshprovisioner/deployment/manifest/watch_time.go +47 -0
  32. data/go/src/boshprovisioner/deployment/manifest_reader.go +46 -0
  33. data/go/src/boshprovisioner/deployment/reader_factory.go +25 -0
  34. data/go/src/boshprovisioner/deployment/semantic_validator.go +111 -0
  35. data/go/src/boshprovisioner/downloader/blobstore_downloader.go +55 -0
  36. data/go/src/boshprovisioner/downloader/default_mux_downloader.go +22 -0
  37. data/go/src/boshprovisioner/downloader/downloader_interface.go +6 -0
  38. data/go/src/boshprovisioner/downloader/http_downloader.go +53 -0
  39. data/go/src/boshprovisioner/downloader/local_fs_downloader.go +48 -0
  40. data/go/src/boshprovisioner/downloader/mux_downloader.go +69 -0
  41. data/go/src/boshprovisioner/eventlog/log.go +72 -0
  42. data/go/src/boshprovisioner/eventlog/stage.go +39 -0
  43. data/go/src/boshprovisioner/eventlog/task.go +58 -0
  44. data/go/src/boshprovisioner/index/file_index.go +289 -0
  45. data/go/src/boshprovisioner/index/file_index_test.go +296 -0
  46. data/go/src/boshprovisioner/index/index_interface.go +18 -0
  47. data/go/src/boshprovisioner/index/index_suite_test.go +13 -0
  48. data/go/src/boshprovisioner/instance/templatescompiler/concrete_templates_compiler.go +273 -0
  49. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erb_renderer.go +117 -0
  50. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erbrenderer_suite_test.go +13 -0
  51. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties.go +77 -0
  52. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties_test.go +142 -0
  53. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context.go +85 -0
  54. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context_rb.go +155 -0
  55. data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_jobs_repository.go +64 -0
  56. data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_runtime_packages_repository.go +105 -0
  57. data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_template_to_job_repository.go +76 -0
  58. data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/jobs_repository_interface.go +31 -0
  59. data/go/src/boshprovisioner/instance/templatescompiler/rendered_archives_compiler.go +81 -0
  60. data/go/src/boshprovisioner/instance/templatescompiler/templates_compiler_interface.go +20 -0
  61. data/go/src/boshprovisioner/instance/templatescompiler/templatesrepo/ct_repository.go +54 -0
  62. data/go/src/boshprovisioner/instance/templatescompiler/templatesrepo/templates_repository_interface.go +16 -0
  63. data/go/src/boshprovisioner/instance/updater/applier/applier.go +93 -0
  64. data/go/src/boshprovisioner/instance/updater/applier/empty_state.go +66 -0
  65. data/go/src/boshprovisioner/instance/updater/applier/job_state.go +178 -0
  66. data/go/src/boshprovisioner/instance/updater/drainer.go +72 -0
  67. data/go/src/boshprovisioner/instance/updater/preparer.go +39 -0
  68. data/go/src/boshprovisioner/instance/updater/starter.go +36 -0
  69. data/go/src/boshprovisioner/instance/updater/stopper.go +36 -0
  70. data/go/src/boshprovisioner/instance/updater/updater.go +102 -0
  71. data/go/src/boshprovisioner/instance/updater/updater_factory.go +83 -0
  72. data/go/src/boshprovisioner/instance/updater/updater_suite_test.go +13 -0
  73. data/go/src/boshprovisioner/instance/updater/waiter.go +77 -0
  74. data/go/src/boshprovisioner/instance/updater/waiter_test.go +103 -0
  75. data/go/src/boshprovisioner/main/config.go +77 -0
  76. data/go/src/boshprovisioner/main/main.go +183 -0
  77. data/go/src/boshprovisioner/main/repos_factory.go +96 -0
  78. data/go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/compiled_packages_repository_interface.go +17 -0
  79. data/go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/concrete_compiled_packages_repository.go +61 -0
  80. data/go/src/boshprovisioner/packagescompiler/concrete_packages_compiler.go +179 -0
  81. data/go/src/boshprovisioner/packagescompiler/concrete_packages_compiler_factory.go +48 -0
  82. data/go/src/boshprovisioner/packagescompiler/packages_compiler_interface.go +20 -0
  83. data/go/src/boshprovisioner/packagescompiler/packagesrepo/concrete_packages_repository.go +65 -0
  84. data/go/src/boshprovisioner/packagescompiler/packagesrepo/packages_repository_interface.go +16 -0
  85. data/go/src/boshprovisioner/provisioner/blobstore_config.go +65 -0
  86. data/go/src/boshprovisioner/provisioner/blobstore_provisioner.go +38 -0
  87. data/go/src/boshprovisioner/provisioner/deployment_provisioner.go +97 -0
  88. data/go/src/boshprovisioner/provisioner/instance_provisioner.go +48 -0
  89. data/go/src/boshprovisioner/provisioner/release_compiler.go +133 -0
  90. data/go/src/boshprovisioner/release/job/job.go +86 -0
  91. data/go/src/boshprovisioner/release/job/manifest/manifest.go +79 -0
  92. data/go/src/boshprovisioner/release/job/manifest/manifest_suite_test.go +13 -0
  93. data/go/src/boshprovisioner/release/job/manifest/manifest_test.go +42 -0
  94. data/go/src/boshprovisioner/release/job/manifest/syntax_validator.go +43 -0
  95. data/go/src/boshprovisioner/release/job/reader_factory.go +34 -0
  96. data/go/src/boshprovisioner/release/job/tar_reader.go +133 -0
  97. data/go/src/boshprovisioner/release/manifest/manifest.go +96 -0
  98. data/go/src/boshprovisioner/release/manifest_reader.go +29 -0
  99. data/go/src/boshprovisioner/release/reader_factory.go +34 -0
  100. data/go/src/boshprovisioner/release/release.go +144 -0
  101. data/go/src/boshprovisioner/release/release_suite_test.go +13 -0
  102. data/go/src/boshprovisioner/release/release_test.go +129 -0
  103. data/go/src/boshprovisioner/release/tar_reader.go +139 -0
  104. data/go/src/boshprovisioner/releasesrepo/blobstore_releases_repository.go +114 -0
  105. data/go/src/boshprovisioner/releasesrepo/releases_repository_interface.go +15 -0
  106. data/go/src/boshprovisioner/tar/cmd_compressor.go +68 -0
  107. data/go/src/boshprovisioner/tar/cmd_extractor.go +47 -0
  108. data/go/src/boshprovisioner/tar/compressor_interface.go +6 -0
  109. data/go/src/boshprovisioner/tar/extractor_interface.go +6 -0
  110. data/go/src/boshprovisioner/util/string_keyed.go +70 -0
  111. data/go/src/boshprovisioner/vm/agent_provisioner.go +266 -0
  112. data/go/src/boshprovisioner/vm/asset_manager.go +61 -0
  113. data/go/src/boshprovisioner/vm/deps_provisioner.go +92 -0
  114. data/go/src/boshprovisioner/vm/monit_provisioner.go +83 -0
  115. data/go/src/boshprovisioner/vm/runit_provisioner.go +225 -0
  116. data/go/src/boshprovisioner/vm/simple_cmds.go +54 -0
  117. data/go/src/boshprovisioner/vm/vcap_user_provisioner.go +120 -0
  118. data/go/src/boshprovisioner/vm/vm.go +19 -0
  119. data/go/src/boshprovisioner/vm/vm_provisioner.go +57 -0
  120. data/go/src/boshprovisioner/vm/vm_provisioner_factory.go +97 -0
  121. data/lib/vagrant-bosh/asset_uploader.rb +53 -0
  122. data/lib/vagrant-bosh/assets/agent/agent-log +5 -0
  123. data/lib/vagrant-bosh/assets/agent/agent-run +12 -0
  124. data/lib/vagrant-bosh/assets/agent/agent.cert +18 -0
  125. data/lib/vagrant-bosh/assets/agent/agent.json +9 -0
  126. data/lib/vagrant-bosh/assets/agent/agent.key +27 -0
  127. data/lib/vagrant-bosh/assets/agent/bosh-agent +0 -0
  128. data/lib/vagrant-bosh/assets/agent/bosh-agent-rc +18 -0
  129. data/lib/vagrant-bosh/assets/agent/bosh-blobstore-dav +0 -0
  130. data/lib/vagrant-bosh/assets/monit/monit +0 -0
  131. data/lib/vagrant-bosh/assets/monit/monit-log +5 -0
  132. data/lib/vagrant-bosh/assets/monit/monit-run +9 -0
  133. data/lib/vagrant-bosh/assets/monit/monitrc +8 -0
  134. data/lib/vagrant-bosh/assets/provisioner +0 -0
  135. data/lib/vagrant-bosh/bootstrapper.rb +59 -0
  136. data/lib/vagrant-bosh/communicator.rb +50 -0
  137. data/lib/vagrant-bosh/config.rb +15 -0
  138. data/lib/vagrant-bosh/errors.rb +11 -0
  139. data/lib/vagrant-bosh/plugin.rb +25 -0
  140. data/lib/vagrant-bosh/provisioner.rb +46 -0
  141. data/lib/vagrant-bosh/provisioner_tracker.rb +41 -0
  142. data/lib/vagrant-bosh/ui.rb +77 -0
  143. data/lib/vagrant-bosh/version.rb +5 -0
  144. data/lib/vagrant-bosh.rb +15 -0
  145. data/templates/locales/en.yml +15 -0
  146. data/vagrant-bosh.gemspec +20 -0
  147. metadata +191 -0
@@ -0,0 +1,18 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ if [ -e /dev/sr0 ]; then
6
+ chmod 0660 /dev/sr0
7
+ chown root:root /dev/sr0
8
+ fi
9
+
10
+ if [ -e /dev/log ]; then
11
+ chmod 0660 /dev/log
12
+ chown root:vcap /dev/log
13
+ fi
14
+
15
+ if [ -e /dev/shm ]; then
16
+ chmod 0770 /dev/shm
17
+ chown root:vcap /dev/shm
18
+ fi
Binary file
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ exec svlogd -tt /var/vcap/monit/svlog
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ export PATH=/var/vcap/bosh/bin:$PATH
6
+
7
+ exec 2>&1
8
+
9
+ exec nice -n -10 /var/vcap/bosh/bin/monit -I -c /var/vcap/bosh/etc/monitrc
@@ -0,0 +1,8 @@
1
+ set daemon 10
2
+ set logfile /var/vcap/monit/monit.log
3
+
4
+ set httpd port 2822 and use address 127.0.0.1
5
+ allow cleartext /var/vcap/monit/monit.user
6
+
7
+ include /var/vcap/monit/*.monitrc
8
+ include /var/vcap/monit/job/*.monitrc
Binary file
@@ -0,0 +1,59 @@
1
+ require "log4r"
2
+ require "json"
3
+
4
+ module VagrantPlugins
5
+ module VagrantBosh
6
+ class Bootstrapper
7
+ def initialize(communicator, asset_uploader, base_dir, manifest, provisioner_tracker)
8
+ @c = communicator
9
+ @asset_uploader = asset_uploader
10
+ @base_dir = base_dir
11
+ @manifest = manifest
12
+ @provisioner_tracker = provisioner_tracker
13
+ @logger = Log4r::Logger.new("vagrant::provisioners::bosh::bootstrapper")
14
+
15
+ @assets_path = File.join(@base_dir, "assets")
16
+ @repos_path = File.join(@base_dir, "repos")
17
+ @manifest_path = File.join(@base_dir, "manifest.yml")
18
+ @config_path = File.join(@base_dir, "config.json")
19
+ end
20
+
21
+ def bootstrap
22
+ @asset_uploader.sync(@assets_path)
23
+
24
+ @asset_uploader.upload_text(@manifest, @manifest_path)
25
+
26
+ config_json = JSON.dump(config_hash)
27
+ @asset_uploader.upload_text(config_json, @config_path)
28
+
29
+ # Provisioner is already uploaded when assets are synced
30
+ provisioner_path = File.join(@assets_path, "provisioner")
31
+ @c.chmod_x(provisioner_path)
32
+
33
+ @c.sudo(
34
+ "#{provisioner_path} -configPath=#{@config_path}",
35
+ &@provisioner_tracker.method(:add_data)
36
+ )
37
+ end
38
+
39
+ private
40
+
41
+ def config_hash
42
+ {
43
+ manifest_path: @manifest_path,
44
+ assets_dir: @assets_path,
45
+ repos_dir: @repos_path,
46
+
47
+ mbus: "https://user:password@127.0.0.1:4321/agent",
48
+
49
+ blobstore: {
50
+ provider: "local",
51
+ options: {
52
+ blobstore_path: File.join(@base_dir, "blobstore"),
53
+ },
54
+ },
55
+ }
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,50 @@
1
+ require "log4r"
2
+
3
+ module VagrantPlugins
4
+ module VagrantBosh
5
+ class Communicator
6
+ def initialize(machine, ui)
7
+ @c = machine.communicate
8
+ @ui = ui.for(:communicator)
9
+ @logger = Log4r::Logger.new("vagrant::provisioners::bosh::communicator")
10
+ end
11
+
12
+ def mkdir_p(path)
13
+ debug_sudo("mkdir -p #{path}")
14
+ end
15
+
16
+ def rm_rf(path)
17
+ debug_sudo("rm -rf #{path}")
18
+ end
19
+
20
+ def upload(src_path, dst_path)
21
+ @ui.debug_msg(:upload, src_path: src_path, dst_path: dst_path)
22
+ @c.upload(src_path, dst_path)
23
+ end
24
+
25
+ def mv(src_path, dst_path)
26
+ debug_sudo("mv #{src_path} #{dst_path}")
27
+ end
28
+
29
+ def chmod_x(path)
30
+ debug_sudo("chmod +x #{path}")
31
+ end
32
+
33
+ def chown(user, group, path, recursive=false)
34
+ debug_sudo("chown #{"-R" if recursive} #{user}:#{group} #{path}")
35
+ end
36
+
37
+ def sudo(cmd, &blk)
38
+ debug_sudo(cmd, &blk)
39
+ end
40
+
41
+ private
42
+
43
+ def debug_sudo(cmd, &blk)
44
+ key = cmd.include?("\n") ? :multi_line_sudo : :sudo
45
+ @ui.debug_msg(key, cmd: cmd)
46
+ @c.sudo(cmd, nil, &blk)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,15 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module VagrantBosh
5
+ class Config < Vagrant.plugin("2", :config)
6
+ attr_accessor :manifest
7
+
8
+ def finalize!
9
+ end
10
+
11
+ def validate(machine)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module VagrantBosh
5
+ module Errors
6
+ class BoshReleaseError < Vagrant::Errors::VagrantError
7
+ error_namespace("bosh")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ begin
2
+ require "vagrant"
3
+ rescue LoadError
4
+ raise "The BOSH Release Vagrant plugin must be run within Vagrant."
5
+ end
6
+
7
+ module VagrantPlugins
8
+ module VagrantBosh
9
+ class Plugin < Vagrant.plugin("2")
10
+ name "bosh"
11
+
12
+ description "Provisions virtual machines via BOSH deployment manifest"
13
+
14
+ config(:bosh, :provisioner) do
15
+ require File.expand_path("../config", __FILE__)
16
+ Config
17
+ end
18
+
19
+ provisioner(:bosh) do
20
+ require File.expand_path("../provisioner", __FILE__)
21
+ Provisioner
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,46 @@
1
+ require "log4r"
2
+ require "vagrant-bosh/ui"
3
+ require "vagrant-bosh/communicator"
4
+ require "vagrant-bosh/asset_uploader"
5
+ require "vagrant-bosh/bootstrapper"
6
+ require "vagrant-bosh/provisioner_tracker"
7
+
8
+ module VagrantPlugins
9
+ module VagrantBosh
10
+ class Provisioner < Vagrant.plugin("2", :provisioner)
11
+ def initialize(machine, config)
12
+ super
13
+
14
+ machine_ui = Ui.for_machine(machine)
15
+
16
+ communicator = Communicator.new(machine, machine_ui)
17
+
18
+ asset_uploader = AssetUploader.new(
19
+ communicator,
20
+ machine_ui,
21
+ File.absolute_path("../assets", __FILE__),
22
+ )
23
+
24
+ provisioner_tracker = ProvisionerTracker.new(machine_ui)
25
+
26
+ @bootstrapper = Bootstrapper.new(
27
+ communicator,
28
+ asset_uploader,
29
+ "/opt/vagrant-bosh",
30
+ config.manifest,
31
+ provisioner_tracker,
32
+ )
33
+
34
+ logger = Log4r::Logger.new("vagrant::provisioners::bosh")
35
+ end
36
+
37
+ def configure(root_config)
38
+ # Nothing to modify or save of config
39
+ end
40
+
41
+ def provision
42
+ @bootstrapper.bootstrap
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,41 @@
1
+ require "log4r"
2
+ require "json"
3
+
4
+ module VagrantPlugins
5
+ module VagrantBosh
6
+ class ProvisionerTracker
7
+ def initialize(ui)
8
+ @ui = ui.for(:provisioner_tracker)
9
+ @logger = Log4r::Logger.new("vagrant::provisioners::bosh::provisioner_tracker")
10
+ end
11
+
12
+ def add_data(type, data)
13
+ if type == :stdout
14
+ data.split("\n").each { |raw_event| add_event(raw_event) }
15
+ else
16
+ add_debug(data)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def add_event(raw_event)
23
+ begin
24
+ event = JSON.parse(raw_event)
25
+ rescue JSON::ParserError
26
+ @ui.msg(:invalid_event, content: raw_event)
27
+ else
28
+ @ui.msg(:event, {
29
+ state: event["state"].capitalize, # Started, Finished
30
+ stage: event["stage"].downcase,
31
+ task: event["task"],
32
+ })
33
+ end
34
+ end
35
+
36
+ def add_debug(data)
37
+ @ui.debug_msg(:debug, content: data)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,77 @@
1
+ require "log4r"
2
+ require "i18n"
3
+
4
+ module VagrantPlugins
5
+ module VagrantBosh
6
+ class Ui
7
+ def self.for_machine(machine)
8
+ new(machine, {
9
+ show_debug: !!ENV["DEBUG"],
10
+ i18n_prefix: nil,
11
+ start_time: Time.now,
12
+ })
13
+ end
14
+
15
+ def initialize(machine, opts)
16
+ @machine = machine
17
+
18
+ @show_debug = opts.fetch(:show_debug)
19
+ @i18n_prefix = opts.fetch(:i18n_prefix)
20
+ @start_time = opts.fetch(:start_time)
21
+
22
+ @logger = Log4r::Logger.new("vagrant::provisioners::bosh::ui")
23
+ end
24
+
25
+ def for(extra_i18n_prefix)
26
+ self.class.new(@machine, {
27
+ show_debug: @show_debug,
28
+ i18n_prefix: [@i18n_prefix, extra_i18n_prefix].compact.join("."),
29
+ start_time: @start_time,
30
+ })
31
+ end
32
+
33
+ def section(key, hash={})
34
+ msg(key, hash)
35
+ end
36
+
37
+ def msg(key, hash)
38
+ path = @i18n_prefix ? "#{@i18n_prefix}.#{key}" : key
39
+ title = I18n.t("bosh.ui.#{path}", hash)
40
+
41
+ @machine.ui.info(time_prefix(title))
42
+ end
43
+
44
+ def timed_msg(key, hash, &blk)
45
+ path = @i18n_prefix ? "#{@i18n_prefix}.#{key}" : key
46
+ title = I18n.t("bosh.ui.#{path}", hash)
47
+
48
+ # Do not show elapsed time in debug mode
49
+ if @show_debug
50
+ @machine.ui.info(time_prefix(title))
51
+ blk.call
52
+ return
53
+ end
54
+
55
+ # In non-debug mode show "Uploading /var/vcap/bosh/bin/bosh-agent (sudo)... 1.33s"
56
+ begin
57
+ t1 = Time.now
58
+ @machine.ui.info(time_prefix("#{title}..."), new_line: false)
59
+ blk.call
60
+ ensure
61
+ t2 = Time.now
62
+ @machine.ui.info(" %.2fs" % (t2 - t1), prefix: false)
63
+ end
64
+ end
65
+
66
+ def debug_msg(key, hash)
67
+ msg(key, hash) if @show_debug
68
+ end
69
+
70
+ private
71
+
72
+ def time_prefix(str)
73
+ "[#{"%.2fs" % (Time.now - @start_time)}] #{str}"
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,5 @@
1
+ module VagrantPlugins
2
+ module VagrantBosh
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ require "i18n"
2
+ require "pathname"
3
+ require "vagrant-bosh/plugin"
4
+
5
+ module VagrantPlugins
6
+ module VagrantBosh
7
+ lib_path = Pathname.new(File.expand_path("../vagrant-bosh", __FILE__))
8
+ autoload :Errors, lib_path.join("errors")
9
+
10
+ @source_root = Pathname.new(File.expand_path("../../", __FILE__))
11
+
12
+ I18n.load_path << File.expand_path("templates/locales/en.yml", @source_root)
13
+ I18n.reload!
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ en:
2
+ bosh:
3
+ ui:
4
+ communicator:
5
+ sudo: "sudo %{cmd}"
6
+ multi_line_sudo: "sudo\n\n%{cmd}\n"
7
+ upload: "Uploading %{src_path} -> %{dst_path}"
8
+
9
+ asset_uploader:
10
+ upload: "Uploading %{dst_path}"
11
+
12
+ provisioner_tracker:
13
+ event: "%{state} %{stage} > %{task}"
14
+ invalid_event: "%{content}"
15
+ debug: "%{content}"
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "vagrant-bosh"
6
+ s.version = "0.0.1"
7
+
8
+ s.homepage = "https://github.com/cppforlife/vagrant-bosh"
9
+ s.summary = %q{Vagrant BOSH provisioner plugin.}
10
+ s.description = %q{BOSH provisioner allows to provision guest VM by specifying regular BOSH deployment manifest.}
11
+
12
+ s.authors = ["Dmitriy Kalinin"]
13
+ s.email = ["cppforlife@gmail.com"]
14
+ s.licenses = ["MIT"]
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib", "templates"]
20
+ end
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-bosh
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dmitriy Kalinin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: BOSH provisioner allows to provision guest VM by specifying regular BOSH
14
+ deployment manifest.
15
+ email:
16
+ - cppforlife@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - .gitmodules
23
+ - Gemfile
24
+ - LICENSE
25
+ - README.md
26
+ - Rakefile
27
+ - dev/.gitignore
28
+ - dev/Vagrantfile
29
+ - dev/example-bosh-manifest.yml
30
+ - dev/example-winston-manifest.yml
31
+ - go/.gitignore
32
+ - go/bin/build
33
+ - go/bin/build-linux-amd64
34
+ - go/bin/env
35
+ - go/bin/go
36
+ - go/bin/golint
37
+ - go/bin/test
38
+ - go/src/boshprovisioner/agent/client/client_interface.go
39
+ - go/src/boshprovisioner/agent/client/fakes/fake_client.go
40
+ - go/src/boshprovisioner/agent/client/http_client.go
41
+ - go/src/boshprovisioner/agent/client/http_client_envelope.go
42
+ - go/src/boshprovisioner/deployment/deployment.go
43
+ - go/src/boshprovisioner/deployment/instance.go
44
+ - go/src/boshprovisioner/deployment/manifest/deployment.go
45
+ - go/src/boshprovisioner/deployment/manifest/ips.go
46
+ - go/src/boshprovisioner/deployment/manifest/manifest.go
47
+ - go/src/boshprovisioner/deployment/manifest/manifest_suite_test.go
48
+ - go/src/boshprovisioner/deployment/manifest/manifest_test.go
49
+ - go/src/boshprovisioner/deployment/manifest/syntax_validator.go
50
+ - go/src/boshprovisioner/deployment/manifest/watch_time.go
51
+ - go/src/boshprovisioner/deployment/manifest_reader.go
52
+ - go/src/boshprovisioner/deployment/reader_factory.go
53
+ - go/src/boshprovisioner/deployment/semantic_validator.go
54
+ - go/src/boshprovisioner/downloader/blobstore_downloader.go
55
+ - go/src/boshprovisioner/downloader/default_mux_downloader.go
56
+ - go/src/boshprovisioner/downloader/downloader_interface.go
57
+ - go/src/boshprovisioner/downloader/http_downloader.go
58
+ - go/src/boshprovisioner/downloader/local_fs_downloader.go
59
+ - go/src/boshprovisioner/downloader/mux_downloader.go
60
+ - go/src/boshprovisioner/eventlog/log.go
61
+ - go/src/boshprovisioner/eventlog/stage.go
62
+ - go/src/boshprovisioner/eventlog/task.go
63
+ - go/src/boshprovisioner/index/file_index.go
64
+ - go/src/boshprovisioner/index/file_index_test.go
65
+ - go/src/boshprovisioner/index/index_interface.go
66
+ - go/src/boshprovisioner/index/index_suite_test.go
67
+ - go/src/boshprovisioner/instance/templatescompiler/concrete_templates_compiler.go
68
+ - go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erb_renderer.go
69
+ - go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erbrenderer_suite_test.go
70
+ - go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties.go
71
+ - go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties_test.go
72
+ - go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context.go
73
+ - go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context_rb.go
74
+ - go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_jobs_repository.go
75
+ - go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_runtime_packages_repository.go
76
+ - go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_template_to_job_repository.go
77
+ - go/src/boshprovisioner/instance/templatescompiler/jobsrepo/jobs_repository_interface.go
78
+ - go/src/boshprovisioner/instance/templatescompiler/rendered_archives_compiler.go
79
+ - go/src/boshprovisioner/instance/templatescompiler/templates_compiler_interface.go
80
+ - go/src/boshprovisioner/instance/templatescompiler/templatesrepo/ct_repository.go
81
+ - go/src/boshprovisioner/instance/templatescompiler/templatesrepo/templates_repository_interface.go
82
+ - go/src/boshprovisioner/instance/updater/applier/applier.go
83
+ - go/src/boshprovisioner/instance/updater/applier/empty_state.go
84
+ - go/src/boshprovisioner/instance/updater/applier/job_state.go
85
+ - go/src/boshprovisioner/instance/updater/drainer.go
86
+ - go/src/boshprovisioner/instance/updater/preparer.go
87
+ - go/src/boshprovisioner/instance/updater/starter.go
88
+ - go/src/boshprovisioner/instance/updater/stopper.go
89
+ - go/src/boshprovisioner/instance/updater/updater.go
90
+ - go/src/boshprovisioner/instance/updater/updater_factory.go
91
+ - go/src/boshprovisioner/instance/updater/updater_suite_test.go
92
+ - go/src/boshprovisioner/instance/updater/waiter.go
93
+ - go/src/boshprovisioner/instance/updater/waiter_test.go
94
+ - go/src/boshprovisioner/main/config.go
95
+ - go/src/boshprovisioner/main/main.go
96
+ - go/src/boshprovisioner/main/repos_factory.go
97
+ - go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/compiled_packages_repository_interface.go
98
+ - go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/concrete_compiled_packages_repository.go
99
+ - go/src/boshprovisioner/packagescompiler/concrete_packages_compiler.go
100
+ - go/src/boshprovisioner/packagescompiler/concrete_packages_compiler_factory.go
101
+ - go/src/boshprovisioner/packagescompiler/packages_compiler_interface.go
102
+ - go/src/boshprovisioner/packagescompiler/packagesrepo/concrete_packages_repository.go
103
+ - go/src/boshprovisioner/packagescompiler/packagesrepo/packages_repository_interface.go
104
+ - go/src/boshprovisioner/provisioner/blobstore_config.go
105
+ - go/src/boshprovisioner/provisioner/blobstore_provisioner.go
106
+ - go/src/boshprovisioner/provisioner/deployment_provisioner.go
107
+ - go/src/boshprovisioner/provisioner/instance_provisioner.go
108
+ - go/src/boshprovisioner/provisioner/release_compiler.go
109
+ - go/src/boshprovisioner/release/job/job.go
110
+ - go/src/boshprovisioner/release/job/manifest/manifest.go
111
+ - go/src/boshprovisioner/release/job/manifest/manifest_suite_test.go
112
+ - go/src/boshprovisioner/release/job/manifest/manifest_test.go
113
+ - go/src/boshprovisioner/release/job/manifest/syntax_validator.go
114
+ - go/src/boshprovisioner/release/job/reader_factory.go
115
+ - go/src/boshprovisioner/release/job/tar_reader.go
116
+ - go/src/boshprovisioner/release/manifest/manifest.go
117
+ - go/src/boshprovisioner/release/manifest_reader.go
118
+ - go/src/boshprovisioner/release/reader_factory.go
119
+ - go/src/boshprovisioner/release/release.go
120
+ - go/src/boshprovisioner/release/release_suite_test.go
121
+ - go/src/boshprovisioner/release/release_test.go
122
+ - go/src/boshprovisioner/release/tar_reader.go
123
+ - go/src/boshprovisioner/releasesrepo/blobstore_releases_repository.go
124
+ - go/src/boshprovisioner/releasesrepo/releases_repository_interface.go
125
+ - go/src/boshprovisioner/tar/cmd_compressor.go
126
+ - go/src/boshprovisioner/tar/cmd_extractor.go
127
+ - go/src/boshprovisioner/tar/compressor_interface.go
128
+ - go/src/boshprovisioner/tar/extractor_interface.go
129
+ - go/src/boshprovisioner/util/string_keyed.go
130
+ - go/src/boshprovisioner/vm/agent_provisioner.go
131
+ - go/src/boshprovisioner/vm/asset_manager.go
132
+ - go/src/boshprovisioner/vm/deps_provisioner.go
133
+ - go/src/boshprovisioner/vm/monit_provisioner.go
134
+ - go/src/boshprovisioner/vm/runit_provisioner.go
135
+ - go/src/boshprovisioner/vm/simple_cmds.go
136
+ - go/src/boshprovisioner/vm/vcap_user_provisioner.go
137
+ - go/src/boshprovisioner/vm/vm.go
138
+ - go/src/boshprovisioner/vm/vm_provisioner.go
139
+ - go/src/boshprovisioner/vm/vm_provisioner_factory.go
140
+ - lib/vagrant-bosh.rb
141
+ - lib/vagrant-bosh/asset_uploader.rb
142
+ - lib/vagrant-bosh/assets/agent/agent-log
143
+ - lib/vagrant-bosh/assets/agent/agent-run
144
+ - lib/vagrant-bosh/assets/agent/agent.cert
145
+ - lib/vagrant-bosh/assets/agent/agent.json
146
+ - lib/vagrant-bosh/assets/agent/agent.key
147
+ - lib/vagrant-bosh/assets/agent/bosh-agent
148
+ - lib/vagrant-bosh/assets/agent/bosh-agent-rc
149
+ - lib/vagrant-bosh/assets/agent/bosh-blobstore-dav
150
+ - lib/vagrant-bosh/assets/monit/monit
151
+ - lib/vagrant-bosh/assets/monit/monit-log
152
+ - lib/vagrant-bosh/assets/monit/monit-run
153
+ - lib/vagrant-bosh/assets/monit/monitrc
154
+ - lib/vagrant-bosh/assets/provisioner
155
+ - lib/vagrant-bosh/bootstrapper.rb
156
+ - lib/vagrant-bosh/communicator.rb
157
+ - lib/vagrant-bosh/config.rb
158
+ - lib/vagrant-bosh/errors.rb
159
+ - lib/vagrant-bosh/plugin.rb
160
+ - lib/vagrant-bosh/provisioner.rb
161
+ - lib/vagrant-bosh/provisioner_tracker.rb
162
+ - lib/vagrant-bosh/ui.rb
163
+ - lib/vagrant-bosh/version.rb
164
+ - templates/locales/en.yml
165
+ - vagrant-bosh.gemspec
166
+ homepage: https://github.com/cppforlife/vagrant-bosh
167
+ licenses:
168
+ - MIT
169
+ metadata: {}
170
+ post_install_message:
171
+ rdoc_options: []
172
+ require_paths:
173
+ - lib
174
+ - templates
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - '>='
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubyforge_project:
187
+ rubygems_version: 2.2.2
188
+ signing_key:
189
+ specification_version: 4
190
+ summary: Vagrant BOSH provisioner plugin.
191
+ test_files: []