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.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.gitmodules +6 -0
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +73 -0
- data/Rakefile +2 -0
- data/dev/.gitignore +1 -0
- data/dev/Vagrantfile +30 -0
- data/dev/example-bosh-manifest.yml +188 -0
- data/dev/example-winston-manifest.yml +70 -0
- data/go/.gitignore +11 -0
- data/go/bin/build +10 -0
- data/go/bin/build-linux-amd64 +9 -0
- data/go/bin/env +13 -0
- data/go/bin/go +5 -0
- data/go/bin/golint +19 -0
- data/go/bin/test +37 -0
- data/go/src/boshprovisioner/agent/client/client_interface.go +73 -0
- data/go/src/boshprovisioner/agent/client/fakes/fake_client.go +81 -0
- data/go/src/boshprovisioner/agent/client/http_client.go +299 -0
- data/go/src/boshprovisioner/agent/client/http_client_envelope.go +107 -0
- data/go/src/boshprovisioner/deployment/deployment.go +221 -0
- data/go/src/boshprovisioner/deployment/instance.go +54 -0
- data/go/src/boshprovisioner/deployment/manifest/deployment.go +80 -0
- data/go/src/boshprovisioner/deployment/manifest/ips.go +23 -0
- data/go/src/boshprovisioner/deployment/manifest/manifest.go +143 -0
- data/go/src/boshprovisioner/deployment/manifest/manifest_suite_test.go +13 -0
- data/go/src/boshprovisioner/deployment/manifest/manifest_test.go +86 -0
- data/go/src/boshprovisioner/deployment/manifest/syntax_validator.go +186 -0
- data/go/src/boshprovisioner/deployment/manifest/watch_time.go +47 -0
- data/go/src/boshprovisioner/deployment/manifest_reader.go +46 -0
- data/go/src/boshprovisioner/deployment/reader_factory.go +25 -0
- data/go/src/boshprovisioner/deployment/semantic_validator.go +111 -0
- data/go/src/boshprovisioner/downloader/blobstore_downloader.go +55 -0
- data/go/src/boshprovisioner/downloader/default_mux_downloader.go +22 -0
- data/go/src/boshprovisioner/downloader/downloader_interface.go +6 -0
- data/go/src/boshprovisioner/downloader/http_downloader.go +53 -0
- data/go/src/boshprovisioner/downloader/local_fs_downloader.go +48 -0
- data/go/src/boshprovisioner/downloader/mux_downloader.go +69 -0
- data/go/src/boshprovisioner/eventlog/log.go +72 -0
- data/go/src/boshprovisioner/eventlog/stage.go +39 -0
- data/go/src/boshprovisioner/eventlog/task.go +58 -0
- data/go/src/boshprovisioner/index/file_index.go +289 -0
- data/go/src/boshprovisioner/index/file_index_test.go +296 -0
- data/go/src/boshprovisioner/index/index_interface.go +18 -0
- data/go/src/boshprovisioner/index/index_suite_test.go +13 -0
- data/go/src/boshprovisioner/instance/templatescompiler/concrete_templates_compiler.go +273 -0
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erb_renderer.go +117 -0
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erbrenderer_suite_test.go +13 -0
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties.go +77 -0
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties_test.go +142 -0
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context.go +85 -0
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context_rb.go +155 -0
- data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_jobs_repository.go +64 -0
- data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_runtime_packages_repository.go +105 -0
- data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_template_to_job_repository.go +76 -0
- data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/jobs_repository_interface.go +31 -0
- data/go/src/boshprovisioner/instance/templatescompiler/rendered_archives_compiler.go +81 -0
- data/go/src/boshprovisioner/instance/templatescompiler/templates_compiler_interface.go +20 -0
- data/go/src/boshprovisioner/instance/templatescompiler/templatesrepo/ct_repository.go +54 -0
- data/go/src/boshprovisioner/instance/templatescompiler/templatesrepo/templates_repository_interface.go +16 -0
- data/go/src/boshprovisioner/instance/updater/applier/applier.go +93 -0
- data/go/src/boshprovisioner/instance/updater/applier/empty_state.go +66 -0
- data/go/src/boshprovisioner/instance/updater/applier/job_state.go +178 -0
- data/go/src/boshprovisioner/instance/updater/drainer.go +72 -0
- data/go/src/boshprovisioner/instance/updater/preparer.go +39 -0
- data/go/src/boshprovisioner/instance/updater/starter.go +36 -0
- data/go/src/boshprovisioner/instance/updater/stopper.go +36 -0
- data/go/src/boshprovisioner/instance/updater/updater.go +102 -0
- data/go/src/boshprovisioner/instance/updater/updater_factory.go +83 -0
- data/go/src/boshprovisioner/instance/updater/updater_suite_test.go +13 -0
- data/go/src/boshprovisioner/instance/updater/waiter.go +77 -0
- data/go/src/boshprovisioner/instance/updater/waiter_test.go +103 -0
- data/go/src/boshprovisioner/main/config.go +77 -0
- data/go/src/boshprovisioner/main/main.go +183 -0
- data/go/src/boshprovisioner/main/repos_factory.go +96 -0
- data/go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/compiled_packages_repository_interface.go +17 -0
- data/go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/concrete_compiled_packages_repository.go +61 -0
- data/go/src/boshprovisioner/packagescompiler/concrete_packages_compiler.go +179 -0
- data/go/src/boshprovisioner/packagescompiler/concrete_packages_compiler_factory.go +48 -0
- data/go/src/boshprovisioner/packagescompiler/packages_compiler_interface.go +20 -0
- data/go/src/boshprovisioner/packagescompiler/packagesrepo/concrete_packages_repository.go +65 -0
- data/go/src/boshprovisioner/packagescompiler/packagesrepo/packages_repository_interface.go +16 -0
- data/go/src/boshprovisioner/provisioner/blobstore_config.go +65 -0
- data/go/src/boshprovisioner/provisioner/blobstore_provisioner.go +38 -0
- data/go/src/boshprovisioner/provisioner/deployment_provisioner.go +97 -0
- data/go/src/boshprovisioner/provisioner/instance_provisioner.go +48 -0
- data/go/src/boshprovisioner/provisioner/release_compiler.go +133 -0
- data/go/src/boshprovisioner/release/job/job.go +86 -0
- data/go/src/boshprovisioner/release/job/manifest/manifest.go +79 -0
- data/go/src/boshprovisioner/release/job/manifest/manifest_suite_test.go +13 -0
- data/go/src/boshprovisioner/release/job/manifest/manifest_test.go +42 -0
- data/go/src/boshprovisioner/release/job/manifest/syntax_validator.go +43 -0
- data/go/src/boshprovisioner/release/job/reader_factory.go +34 -0
- data/go/src/boshprovisioner/release/job/tar_reader.go +133 -0
- data/go/src/boshprovisioner/release/manifest/manifest.go +96 -0
- data/go/src/boshprovisioner/release/manifest_reader.go +29 -0
- data/go/src/boshprovisioner/release/reader_factory.go +34 -0
- data/go/src/boshprovisioner/release/release.go +144 -0
- data/go/src/boshprovisioner/release/release_suite_test.go +13 -0
- data/go/src/boshprovisioner/release/release_test.go +129 -0
- data/go/src/boshprovisioner/release/tar_reader.go +139 -0
- data/go/src/boshprovisioner/releasesrepo/blobstore_releases_repository.go +114 -0
- data/go/src/boshprovisioner/releasesrepo/releases_repository_interface.go +15 -0
- data/go/src/boshprovisioner/tar/cmd_compressor.go +68 -0
- data/go/src/boshprovisioner/tar/cmd_extractor.go +47 -0
- data/go/src/boshprovisioner/tar/compressor_interface.go +6 -0
- data/go/src/boshprovisioner/tar/extractor_interface.go +6 -0
- data/go/src/boshprovisioner/util/string_keyed.go +70 -0
- data/go/src/boshprovisioner/vm/agent_provisioner.go +266 -0
- data/go/src/boshprovisioner/vm/asset_manager.go +61 -0
- data/go/src/boshprovisioner/vm/deps_provisioner.go +92 -0
- data/go/src/boshprovisioner/vm/monit_provisioner.go +83 -0
- data/go/src/boshprovisioner/vm/runit_provisioner.go +225 -0
- data/go/src/boshprovisioner/vm/simple_cmds.go +54 -0
- data/go/src/boshprovisioner/vm/vcap_user_provisioner.go +120 -0
- data/go/src/boshprovisioner/vm/vm.go +19 -0
- data/go/src/boshprovisioner/vm/vm_provisioner.go +57 -0
- data/go/src/boshprovisioner/vm/vm_provisioner_factory.go +97 -0
- data/lib/vagrant-bosh/asset_uploader.rb +53 -0
- data/lib/vagrant-bosh/assets/agent/agent-log +5 -0
- data/lib/vagrant-bosh/assets/agent/agent-run +12 -0
- data/lib/vagrant-bosh/assets/agent/agent.cert +18 -0
- data/lib/vagrant-bosh/assets/agent/agent.json +9 -0
- data/lib/vagrant-bosh/assets/agent/agent.key +27 -0
- data/lib/vagrant-bosh/assets/agent/bosh-agent +0 -0
- data/lib/vagrant-bosh/assets/agent/bosh-agent-rc +18 -0
- data/lib/vagrant-bosh/assets/agent/bosh-blobstore-dav +0 -0
- data/lib/vagrant-bosh/assets/monit/monit +0 -0
- data/lib/vagrant-bosh/assets/monit/monit-log +5 -0
- data/lib/vagrant-bosh/assets/monit/monit-run +9 -0
- data/lib/vagrant-bosh/assets/monit/monitrc +8 -0
- data/lib/vagrant-bosh/assets/provisioner +0 -0
- data/lib/vagrant-bosh/bootstrapper.rb +59 -0
- data/lib/vagrant-bosh/communicator.rb +50 -0
- data/lib/vagrant-bosh/config.rb +15 -0
- data/lib/vagrant-bosh/errors.rb +11 -0
- data/lib/vagrant-bosh/plugin.rb +25 -0
- data/lib/vagrant-bosh/provisioner.rb +46 -0
- data/lib/vagrant-bosh/provisioner_tracker.rb +41 -0
- data/lib/vagrant-bosh/ui.rb +77 -0
- data/lib/vagrant-bosh/version.rb +5 -0
- data/lib/vagrant-bosh.rb +15 -0
- data/templates/locales/en.yml +15 -0
- data/vagrant-bosh.gemspec +20 -0
- metadata +191 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: efc32c9ec7924465b7ecb3ddeef08cd47e6d1eb4
|
|
4
|
+
data.tar.gz: 9560d462714efd859191da51ee22c37ed4d5cb67
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: b84f34a4a5ad470c17c3528be1335cd254b674dbcc24da43e74077afdcf2fc2c67a0dbf18e64ddef73c1931e699ebc3e6bd2a18659ce025bc10807ab4fd820b4
|
|
7
|
+
data.tar.gz: c5abbab55e5ca3bf253b53f4d12bbce3c5c3a9e01815e7543b0e4ca253e5b63342a73b1e39b3fa360220503c369231cb4dc4ab8fc44fc379e901b1ee404e6569
|
data/.gitignore
ADDED
data/.gitmodules
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2013 Dmitriy Kalinin
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
## BOSH provisioner for Vagrant
|
|
2
|
+
|
|
3
|
+
BOSH provisioner allows to provision guest VM by specifying regular BOSH deployment manifest.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Usage
|
|
7
|
+
|
|
8
|
+
1. Add new VM provision section to your `Vagrantfile`. For example:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
Vagrant.configure("2") do |config|
|
|
12
|
+
config.vm.box = "precise64"
|
|
13
|
+
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
|
|
14
|
+
|
|
15
|
+
config.vm.network "forwarded_port", guest: 25555, host: 25555 # for BOSH Director API
|
|
16
|
+
|
|
17
|
+
config.vm.provider "virtualbox" do |v|
|
|
18
|
+
v.memory = 4096
|
|
19
|
+
v.cpus = 2
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
config.vm.provision "bosh" do |c|
|
|
23
|
+
# use cat or just inline full deployment manifest
|
|
24
|
+
c.manifest = `cat somewhere/example-bosh-manifest.yml`
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
2. Create a deployment manifest and specify it via `c.manifest` attribute.
|
|
30
|
+
See `dev/example-bosh-manifest.yml` for an example deployment manifest used to deploy BOSH Director.
|
|
31
|
+
|
|
32
|
+
3. Run `vagrant provision` to provision guest VM
|
|
33
|
+
(DEBUG=1 environment variable will trigger live verbose output).
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Deployment manifest gotchas
|
|
37
|
+
|
|
38
|
+
- It must specify release source(s) via `url` key in the `releases` section.
|
|
39
|
+
|
|
40
|
+
- It must have exactly one deployment job; however, deployment job
|
|
41
|
+
can be made up from multiple job templates that come from multiple releases.
|
|
42
|
+
|
|
43
|
+
- It does not support `static` network type though `dynamic` network type is supported
|
|
44
|
+
(Network configuration should be done via standard Vagrant configuration DSL).
|
|
45
|
+
|
|
46
|
+
- It does not support stemcell specification because guest VM OS is picked via `config.vm.box` directive.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Planned
|
|
50
|
+
|
|
51
|
+
- Speed up apply step (Monit is sluggish)
|
|
52
|
+
|
|
53
|
+
- Packer Provisioner API wrapper
|
|
54
|
+
|
|
55
|
+
- Support non-Ubuntu vagrant boxes (currently provisioner uses `apt-get` to bootstrap deps)
|
|
56
|
+
|
|
57
|
+
- Support non-tgz release source URLs
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Contributing
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
git submodule update --recursive --init
|
|
64
|
+
|
|
65
|
+
# Provisioner uses BOSH Agent (Go) libraries (e.g. Blobstore, CmdRunner)
|
|
66
|
+
export GOPATH=$PWD/go:$PWD/bosh/go_agent
|
|
67
|
+
|
|
68
|
+
go/bin/test
|
|
69
|
+
go/bin/build-linux-amd64
|
|
70
|
+
|
|
71
|
+
# Spin up development Vagrant box with lib/ acting as BOSH provisioner
|
|
72
|
+
( cd dev/ && vagrant up )
|
|
73
|
+
```
|
data/Rakefile
ADDED
data/dev/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.vagrant
|
data/dev/Vagrantfile
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
$:.push File.expand_path("../../lib", __FILE__)
|
|
2
|
+
|
|
3
|
+
if defined?(VagrantPlugins::VagrantBosh)
|
|
4
|
+
raise "vagrant-bosh plugin is installed via Vagrant. Exiting because lib version will not be used!"
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
require "../lib/vagrant-bosh"
|
|
8
|
+
|
|
9
|
+
Vagrant.configure("2") do |config|
|
|
10
|
+
config.vm.box = "precise64"
|
|
11
|
+
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
|
|
12
|
+
|
|
13
|
+
# Example port forward for example-bosh-manifest.yml
|
|
14
|
+
config.vm.network "forwarded_port", guest: 25555, host: 25555 # BOSH Director API
|
|
15
|
+
|
|
16
|
+
# Example port forward for example-winston-manifest.yml
|
|
17
|
+
config.vm.network "forwarded_port", guest: 8080, host: 8080 # http
|
|
18
|
+
config.vm.network "forwarded_port", guest: 8081, host: 8081 # ws
|
|
19
|
+
config.vm.network "forwarded_port", guest: 5637, host: 5637 # redgreen
|
|
20
|
+
|
|
21
|
+
config.vm.provider "virtualbox" do |v|
|
|
22
|
+
v.memory = 4096
|
|
23
|
+
v.cpus = 2
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
config.vm.provision "bosh" do |c|
|
|
27
|
+
c.manifest = `cat example-bosh-manifest.yml`
|
|
28
|
+
# c.manifest = `cat example-winston-manifest.yml`
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bosh-in-vagrant
|
|
3
|
+
|
|
4
|
+
releases:
|
|
5
|
+
# Download latest BOSH release from http://bosh-artifacts.cfapps.io/
|
|
6
|
+
- name: bosh
|
|
7
|
+
version: 83
|
|
8
|
+
url: file:///vagrant/bosh-2597.tgz
|
|
9
|
+
|
|
10
|
+
networks:
|
|
11
|
+
# Must have dynamic network
|
|
12
|
+
- name: default
|
|
13
|
+
type: dynamic
|
|
14
|
+
|
|
15
|
+
update:
|
|
16
|
+
canary_watch_time: 5000 - 90000
|
|
17
|
+
update_watch_time: 5000 - 15000
|
|
18
|
+
|
|
19
|
+
compilation:
|
|
20
|
+
network: default
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
# Must have exactly 1 job; colocate everything that's needed
|
|
24
|
+
- name: bosh
|
|
25
|
+
instances: 1
|
|
26
|
+
|
|
27
|
+
networks:
|
|
28
|
+
- name: default
|
|
29
|
+
|
|
30
|
+
templates:
|
|
31
|
+
- name: nats
|
|
32
|
+
release: bosh
|
|
33
|
+
- name: redis
|
|
34
|
+
release: bosh
|
|
35
|
+
- name: blobstore
|
|
36
|
+
release: bosh
|
|
37
|
+
- name: powerdns
|
|
38
|
+
release: bosh
|
|
39
|
+
- name: postgres
|
|
40
|
+
release: bosh
|
|
41
|
+
- name: director
|
|
42
|
+
release: bosh
|
|
43
|
+
- name: health_monitor
|
|
44
|
+
release: bosh
|
|
45
|
+
# todo colocate warden-cpi-release once we have it
|
|
46
|
+
|
|
47
|
+
properties:
|
|
48
|
+
ntp: ["0.us.pool.ntp.org"]
|
|
49
|
+
|
|
50
|
+
nats:
|
|
51
|
+
user: nats
|
|
52
|
+
password: nats-password
|
|
53
|
+
address: 10.0.2.15
|
|
54
|
+
port: 4222
|
|
55
|
+
|
|
56
|
+
blobstore:
|
|
57
|
+
address: 10.0.2.15
|
|
58
|
+
port: 25251
|
|
59
|
+
backend_port: 25552
|
|
60
|
+
agent:
|
|
61
|
+
user: agent
|
|
62
|
+
password: agent-password
|
|
63
|
+
director:
|
|
64
|
+
user: director
|
|
65
|
+
password: director-password
|
|
66
|
+
|
|
67
|
+
postgres:
|
|
68
|
+
user: bosh
|
|
69
|
+
password: bosh-password
|
|
70
|
+
host: 10.0.2.15
|
|
71
|
+
port: 5432
|
|
72
|
+
database: bosh
|
|
73
|
+
|
|
74
|
+
redis:
|
|
75
|
+
password: redis-password
|
|
76
|
+
address: 10.0.2.15
|
|
77
|
+
port: 25255
|
|
78
|
+
|
|
79
|
+
director:
|
|
80
|
+
name: bosh-in-vagrant
|
|
81
|
+
address: 10.0.2.15
|
|
82
|
+
port: 25555
|
|
83
|
+
encryption: false
|
|
84
|
+
enable_snapshots: true
|
|
85
|
+
max_tasks: 1
|
|
86
|
+
db:
|
|
87
|
+
user: bosh
|
|
88
|
+
password: bosh-password
|
|
89
|
+
host: 10.0.2.15
|
|
90
|
+
port: 5432
|
|
91
|
+
database: bosh
|
|
92
|
+
ssl:
|
|
93
|
+
key: |
|
|
94
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
95
|
+
MIIEogIBAAKCAQEAutrdgjHQ7o8txCwcBdsXMnJ7Uz8CbeAIxxfkFO6L4ju9/Ixc
|
|
96
|
+
bjAXJcct/2VbB7bfKm8/hzX4s1OrtRNNm6J2udp2UAOB0Od53QLT1s4q/k3OTjrp
|
|
97
|
+
dNF83IETLFpnMdAtr1KYMuCrUZS6fygSzFn65eEyrqSKRG7ksEIKG1UJbovMb8UT
|
|
98
|
+
WqaNJIfqJo7CTbJDEpWpQo09/PU+q1GBpQGNVauHb5Z/bYrM5M5Gi4E6tJ93F6nU
|
|
99
|
+
KPOVBa3ZbmXTl29/a9lOVqoMKTw8EXfoVY+XCZnFGwcYAJW5ySXfInr2Mhpr6L6Y
|
|
100
|
+
reRx+LTllp9Z4XCbbVqGrPAr+QawrWh88crETwIDAQABAoIBAFh3DrB5TWXku9JI
|
|
101
|
+
3+uV0uG7ec/r4QaMLxuzn/SZC/lMN6K+AXTZp9vm9UwZfIOmfPnmObmWP+0HDCBq
|
|
102
|
+
xy+MN5G+cI1pW6jALt4IXKsyaQCFbctz8Nux4t+y7JTvKDRZT4fWHuDXpcS2GaXi
|
|
103
|
+
HyRI5ZS4jfpJRH0p03PvkEFofVKsZfLAlwnx7HhPqztyc6huu7njjP6XUYbvrhOS
|
|
104
|
+
otE/wyyLyT36rQvUVLHfrco2Ib1r58sWb1hL84/5HnbxwsEelBAAGL5VGu2f0zLP
|
|
105
|
+
qxmy4XWJg9U/UKzG9gXmbcpDUn1pUcZV1rSSJ/wfbdvBSLF+dQaE6QdjGeAyrt7M
|
|
106
|
+
I7gCViECgYEA5ui1aXomHIwqbzll/qotebYNL8AOcpgRJTtzODcnzoe/5aA7yVox
|
|
107
|
+
vOFTD9rODaVRhtdC/ZHsU6rID+tx9gQdjLUEXUqS3KsPXSiwbYBPXnEtpgWz/RAu
|
|
108
|
+
qpxpMn3kfVbQgJjkfksWvlHNzLj5q4ZhZyL/WV3P9DON8vuP/hwwQLMCgYEAzyiv
|
|
109
|
+
rXx/ERnEQOpXEvPtCj04QUGCyW2o4nYIrN3OfO3PM8PnNfB8Z2LKDyuzX9qvWghg
|
|
110
|
+
z81KSNByW4OLdvrnX5natfxdu/6qAl18N+z/DFXuTgXi8nG9/2R5c3Gn5CQ5yab7
|
|
111
|
+
S4G4Pt7YwfoiqFv9j2b0DE3e5UVicGQIuWmaQ/UCgYBf61swraUXRsJ54YYU++xY
|
|
112
|
+
Gt/vbgCSacj1hnSebYsDqDB22tD7G5R9ubwfYe0mjf4H3XPekbdyKgdhVZTJdXww
|
|
113
|
+
7yEY/9lyAT0onbZsRliyCqHDzaqu/QHlrYOljdZUmrOSN/Dy5Y5VEPZEjLJqJjBf
|
|
114
|
+
/5HDNc0kzCWzQfzWui7xMQKBgGNA8ysEAz2GQul3XdDO3juRqWpaoPcxe0FFnFJ2
|
|
115
|
+
04A30JbUveqyFmjShE1QetjqRim06e2mRnksph4CoMeY31KGvKuFBsQT+BC6CdIh
|
|
116
|
+
0vFuGod3eoz+wjGjSi1tvysn0Cg1wSEkPcqhqukFl6VirdIPWc6rYKgo3klLJILx
|
|
117
|
+
feAhAoGABC0apuKQD2IZZXZtDuUI9I4AemPPh0yKvFfTJxmxQ0fTlWjqdcG5nYdh
|
|
118
|
+
tSMBlZwsd6DRlK7dWJ/WHZXuXNeOX6ehSQFmql5/XPNd7INa5My6DDPZr1chh0WJ
|
|
119
|
+
QgK94NXJDoDd1OZjpUBMPLVa8d20/RdGNW8OMolJpzEPhg0r7Ac=
|
|
120
|
+
-----END RSA PRIVATE KEY-----
|
|
121
|
+
|
|
122
|
+
cert: |
|
|
123
|
+
-----BEGIN CERTIFICATE-----
|
|
124
|
+
MIIC3zCCAcegAwIBAgIBADANBgkqhkiG9w0BAQUFADAzMQswCQYDVQQGEwJVUzEQ
|
|
125
|
+
MA4GA1UECgwHUGl2b3RhbDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTEzMTIwMTIy
|
|
126
|
+
MTEzMloXDTE2MTIwMTIyMTEzMlowMzELMAkGA1UEBhMCVVMxEDAOBgNVBAoMB1Bp
|
|
127
|
+
dm90YWwxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
|
128
|
+
ADCCAQoCggEBALra3YIx0O6PLcQsHAXbFzJye1M/Am3gCMcX5BTui+I7vfyMXG4w
|
|
129
|
+
FyXHLf9lWwe23ypvP4c1+LNTq7UTTZuidrnadlADgdDned0C09bOKv5Nzk466XTR
|
|
130
|
+
fNyBEyxaZzHQLa9SmDLgq1GUun8oEsxZ+uXhMq6kikRu5LBCChtVCW6LzG/FE1qm
|
|
131
|
+
jSSH6iaOwk2yQxKVqUKNPfz1PqtRgaUBjVWrh2+Wf22KzOTORouBOrSfdxep1Cjz
|
|
132
|
+
lQWt2W5l05dvf2vZTlaqDCk8PBF36FWPlwmZxRsHGACVuckl3yJ69jIaa+i+mK3k
|
|
133
|
+
cfi05ZafWeFwm21ahqzwK/kGsK1ofPHKxE8CAwEAATANBgkqhkiG9w0BAQUFAAOC
|
|
134
|
+
AQEAD1VzwtWCx32pQi5l0oFfjWqktnqfhs/Rr0ZpwacBBXHBvKuz9ENXmblt5pZu
|
|
135
|
+
JP7je+uXQD+da/oVhl0US2L0upIdMmD1utVXYHfRji5r/tIPl2SEKTrFiNZR1Wp6
|
|
136
|
+
J0nE/BW7nm41dXRBIAZR71yproaQrt1tFDFZvdfhwHGLC51L6toOhk/7S604sxbk
|
|
137
|
+
qV0tzT+VaR4hh09FEt9xGmB/3yFh329Yib8ScT94nKzSzoNoDp4Ms/smFhF4lUio
|
|
138
|
+
7SD2+b2/nt8Mcz7q58nYvZteipRrmkOFszlNF5dU31FjvRLITn0bhiOOFRD3qAou
|
|
139
|
+
cSOr1qwsAKuu6MzYNh2ubsLvfg==
|
|
140
|
+
-----END CERTIFICATE-----
|
|
141
|
+
|
|
142
|
+
hm:
|
|
143
|
+
http:
|
|
144
|
+
port: 25923
|
|
145
|
+
user: admin
|
|
146
|
+
password: admin-password
|
|
147
|
+
director_account:
|
|
148
|
+
user: admin
|
|
149
|
+
password: admin-password
|
|
150
|
+
intervals:
|
|
151
|
+
poll_director: 60
|
|
152
|
+
poll_grace_period: 30
|
|
153
|
+
log_stats: 300
|
|
154
|
+
analyze_agents: 60
|
|
155
|
+
agent_timeout: 180
|
|
156
|
+
rogue_agent_alert: 180
|
|
157
|
+
loglevel: info
|
|
158
|
+
email_notifications: false
|
|
159
|
+
tsdb_enabled: false
|
|
160
|
+
cloud_watch_enabled: false
|
|
161
|
+
resurrector_enabled: true
|
|
162
|
+
|
|
163
|
+
dns:
|
|
164
|
+
address: 10.0.2.15
|
|
165
|
+
recursor: 8.8.8.8
|
|
166
|
+
db:
|
|
167
|
+
user: bosh
|
|
168
|
+
password: bosh-password
|
|
169
|
+
host: 10.0.2.15
|
|
170
|
+
port: 5432
|
|
171
|
+
database: bosh
|
|
172
|
+
|
|
173
|
+
# Control some remote vCenter
|
|
174
|
+
vcenter:
|
|
175
|
+
address: 172.16.79.132
|
|
176
|
+
user: root
|
|
177
|
+
password: vmware
|
|
178
|
+
datacenters:
|
|
179
|
+
- name: TEST_DATACENTER
|
|
180
|
+
vm_folder: SYSTEM_MICRO_VSPHERE_VMs
|
|
181
|
+
template_folder: SYSTEM_MICRO_VSPHERE_Templates
|
|
182
|
+
disk_path: SYSTEM_MICRO_VSPHERE_Disks
|
|
183
|
+
datastore_pattern: datastore
|
|
184
|
+
persistent_datastore_pattern: datastore
|
|
185
|
+
allow_mixed_datastores: true
|
|
186
|
+
clusters:
|
|
187
|
+
- TEST_CLUSTER:
|
|
188
|
+
resource_pool: TEST_RP
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
name: room101
|
|
2
|
+
|
|
3
|
+
releases:
|
|
4
|
+
- name: room101
|
|
5
|
+
version: 0.1-dev
|
|
6
|
+
url: file:///vagrant/room101-0.1-dev.tgz
|
|
7
|
+
|
|
8
|
+
networks:
|
|
9
|
+
- name: room101
|
|
10
|
+
type: dynamic
|
|
11
|
+
|
|
12
|
+
compilation:
|
|
13
|
+
network: room101
|
|
14
|
+
|
|
15
|
+
update:
|
|
16
|
+
canaries: 0
|
|
17
|
+
canary_watch_time: 1000-60000
|
|
18
|
+
update_watch_time: 1000-60000
|
|
19
|
+
max_in_flight: 10
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
- name: winston
|
|
23
|
+
instances: 1
|
|
24
|
+
|
|
25
|
+
templates:
|
|
26
|
+
- name: redis
|
|
27
|
+
release: room101
|
|
28
|
+
- name: winston
|
|
29
|
+
release: room101
|
|
30
|
+
- name: prole
|
|
31
|
+
release: room101
|
|
32
|
+
- name: warden
|
|
33
|
+
release: room101
|
|
34
|
+
- name: redgreen
|
|
35
|
+
release: room101
|
|
36
|
+
|
|
37
|
+
networks:
|
|
38
|
+
- name: room101
|
|
39
|
+
|
|
40
|
+
properties:
|
|
41
|
+
network_name: room101
|
|
42
|
+
winston:
|
|
43
|
+
config:
|
|
44
|
+
jobs:
|
|
45
|
+
- name: bosh_unit
|
|
46
|
+
privileged: true
|
|
47
|
+
build: ci/bosh_unit.yml
|
|
48
|
+
inputs:
|
|
49
|
+
- resource: ci
|
|
50
|
+
- resource: bosh-repo
|
|
51
|
+
|
|
52
|
+
prole:
|
|
53
|
+
address: 127.0.0.1:4637
|
|
54
|
+
redis:
|
|
55
|
+
address: 127.0.0.1:6379
|
|
56
|
+
|
|
57
|
+
redgreen:
|
|
58
|
+
prole:
|
|
59
|
+
address: 127.0.0.1:4637
|
|
60
|
+
|
|
61
|
+
prole:
|
|
62
|
+
warden:
|
|
63
|
+
address: 127.0.0.1:7777
|
|
64
|
+
network: tcp
|
|
65
|
+
|
|
66
|
+
warden:
|
|
67
|
+
disk_quota_enabled: false
|
|
68
|
+
kernel_network_tuning_enabled: false
|
|
69
|
+
listen_address: 0.0.0.0:7777
|
|
70
|
+
listen_network: tcp
|
data/go/.gitignore
ADDED
data/go/bin/build
ADDED
data/go/bin/env
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
base=$( cd "$( dirname "$( dirname "$0" )")" && pwd )
|
|
6
|
+
|
|
7
|
+
go_agent_base=$( cd "$( dirname "$base" )" && cd bosh/go_agent && pwd )
|
|
8
|
+
|
|
9
|
+
export GOPATH=$base:$go_agent_base
|
|
10
|
+
export GOBIN=$base/gobin
|
|
11
|
+
export PATH=$PATH:$base/gobin
|
|
12
|
+
|
|
13
|
+
exec $@
|
data/go/bin/go
ADDED
data/go/bin/golint
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
BINDIR=$(dirname $0)
|
|
4
|
+
BASEDIR=$(dirname $BINDIR)
|
|
5
|
+
|
|
6
|
+
$BINDIR/go install github.com/golang/lint/golint
|
|
7
|
+
|
|
8
|
+
export PATH=$PATH:$($BINDIR/go env GOBIN)
|
|
9
|
+
|
|
10
|
+
errors=$(
|
|
11
|
+
golint $BASEDIR/src/boshprovisioner \
|
|
12
|
+
| grep -v -e 'should have comment.* or be unexported' \
|
|
13
|
+
| grep -v 'error strings should not be capitalized'
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
if [ "$(echo -n "$errors")" != "" ]; then
|
|
17
|
+
echo "$errors"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
data/go/bin/test
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
result=0
|
|
4
|
+
|
|
5
|
+
bin=$(dirname $0)
|
|
6
|
+
|
|
7
|
+
echo -e "\n Formatting packages..."
|
|
8
|
+
$bin/go fmt boshprovisioner/...
|
|
9
|
+
let "result+=$?"
|
|
10
|
+
|
|
11
|
+
echo -e "\n Installing ginkgo..."
|
|
12
|
+
$bin/go install github.com/onsi/ginkgo/ginkgo
|
|
13
|
+
let "result+=$?"
|
|
14
|
+
|
|
15
|
+
echo -e "\n Testing packages..."
|
|
16
|
+
$bin/env ginkgo -r $bin/../src/boshprovisioner
|
|
17
|
+
let "result+=$?"
|
|
18
|
+
|
|
19
|
+
echo -e "\n Vetting packages for potential issues..."
|
|
20
|
+
$bin/go vet boshprovisioner/...
|
|
21
|
+
let "result+=$?"
|
|
22
|
+
|
|
23
|
+
echo -e "\n Checking with golint..."
|
|
24
|
+
$bin/golint
|
|
25
|
+
let "result+=$?"
|
|
26
|
+
|
|
27
|
+
echo -e "\n Running build script to confirm everything compiles..."
|
|
28
|
+
$bin/build-linux-amd64
|
|
29
|
+
let "result+=$?"
|
|
30
|
+
|
|
31
|
+
if [ $result -eq 0 ]; then
|
|
32
|
+
echo -e "\nSUITE SUCCESS"
|
|
33
|
+
else
|
|
34
|
+
echo -e "\nSUITE FAILURE"
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
exit $result
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
package client
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
boshaction "bosh/agent/action"
|
|
5
|
+
boshas "bosh/agent/applier/applyspec"
|
|
6
|
+
boshcomp "bosh/agent/compiler"
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
type Client interface {
|
|
10
|
+
TaskManager
|
|
11
|
+
VMAdministrator
|
|
12
|
+
StateManager
|
|
13
|
+
JobManager
|
|
14
|
+
PackageCompiler
|
|
15
|
+
DiskManager
|
|
16
|
+
NetworkManager
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type TaskManager interface {
|
|
20
|
+
Ping() (string, error)
|
|
21
|
+
GetTask(string) (interface{}, error)
|
|
22
|
+
CancelTask(string) (string, error)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// VMAdministrator provides administrative API for the agent
|
|
26
|
+
// todo eliminate remaining param names
|
|
27
|
+
type VMAdministrator interface {
|
|
28
|
+
SSH(cmd string, params boshaction.SshParams) (map[string]interface{}, error)
|
|
29
|
+
FetchLogs(logType string, filters []string) (map[string]interface{}, error)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type StateManager interface {
|
|
33
|
+
Prepare(boshas.V1ApplySpec) (string, error)
|
|
34
|
+
Apply(boshas.V1ApplySpec) (string, error)
|
|
35
|
+
GetState(filters ...string) (boshaction.GetStateV1ApplySpec, error)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
type JobManager interface {
|
|
39
|
+
Start() (string, error)
|
|
40
|
+
Stop() (string, error)
|
|
41
|
+
Drain(boshaction.DrainType, ...boshas.V1ApplySpec) (int, error)
|
|
42
|
+
RunErrand() (boshaction.ErrandResult, error)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// CompiledPackage keeps information about compiled package asset
|
|
46
|
+
// todo move into agent
|
|
47
|
+
type CompiledPackage struct {
|
|
48
|
+
BlobID string `json:"blobstore_id"`
|
|
49
|
+
SHA1 string `json:"sha1"`
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
type PackageCompiler interface {
|
|
53
|
+
CompilePackage(
|
|
54
|
+
blobID string,
|
|
55
|
+
sha1 string,
|
|
56
|
+
name string,
|
|
57
|
+
version string,
|
|
58
|
+
deps boshcomp.Dependencies,
|
|
59
|
+
) (CompiledPackage, error)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
type DiskManager interface {
|
|
63
|
+
// ListDisk(...)
|
|
64
|
+
// MigrateDisk(...)
|
|
65
|
+
// MountDisk(...)
|
|
66
|
+
// UnmountDisk(...)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
type NetworkManager interface {
|
|
70
|
+
// PrepareNetworkChange(...)
|
|
71
|
+
// PrepareConfigureNetworks(...)
|
|
72
|
+
// ConfigureNetworks(...)
|
|
73
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
package fakes
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
boshaction "bosh/agent/action"
|
|
5
|
+
boshas "bosh/agent/applier/applyspec"
|
|
6
|
+
boshcomp "bosh/agent/compiler"
|
|
7
|
+
bosherr "bosh/errors"
|
|
8
|
+
|
|
9
|
+
bpagclient "boshprovisioner/agent/client"
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
type FakeClient struct {
|
|
13
|
+
GetStateState boshaction.GetStateV1ApplySpec
|
|
14
|
+
GetStateStates []boshaction.GetStateV1ApplySpec
|
|
15
|
+
GetStateErr error
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
func (c *FakeClient) Ping() (string, error) {
|
|
19
|
+
return "", bosherr.New("fake-ping-err")
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
func (c *FakeClient) GetTask(string) (interface{}, error) {
|
|
23
|
+
return "", bosherr.New("fake-get-task-err")
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
func (c *FakeClient) CancelTask(string) (string, error) {
|
|
27
|
+
return "", bosherr.New("fake-cancel-task-err")
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
func (c *FakeClient) SSH(cmd string, params boshaction.SshParams) (map[string]interface{}, error) {
|
|
31
|
+
return nil, bosherr.New("fake-ssh-err")
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
func (c *FakeClient) FetchLogs(logType string, filters []string) (map[string]interface{}, error) {
|
|
35
|
+
return nil, bosherr.New("fake-fetch-logs-err")
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
func (c *FakeClient) Prepare(boshas.V1ApplySpec) (string, error) {
|
|
39
|
+
return "", bosherr.New("fake-prepare-err")
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
func (c *FakeClient) Apply(boshas.V1ApplySpec) (string, error) {
|
|
43
|
+
return "", bosherr.New("fake-apply-err")
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
func (c *FakeClient) GetState(filters ...string) (boshaction.GetStateV1ApplySpec, error) {
|
|
47
|
+
state := c.GetStateState
|
|
48
|
+
|
|
49
|
+
if c.GetStateStates != nil {
|
|
50
|
+
state = c.GetStateStates[0]
|
|
51
|
+
c.GetStateStates = c.GetStateStates[1:]
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return state, c.GetStateErr
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
func (c *FakeClient) Start() (string, error) {
|
|
58
|
+
return "", bosherr.New("fake-start-err")
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
func (c *FakeClient) Stop() (string, error) {
|
|
62
|
+
return "", bosherr.New("fake-stop-err")
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
func (c *FakeClient) Drain(boshaction.DrainType, ...boshas.V1ApplySpec) (int, error) {
|
|
66
|
+
return 0, bosherr.New("fake-drain-err")
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
func (c *FakeClient) RunErrand() (boshaction.ErrandResult, error) {
|
|
70
|
+
return boshaction.ErrandResult{}, bosherr.New("fake-run-errand-err")
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
func (c *FakeClient) CompilePackage(
|
|
74
|
+
blobID string,
|
|
75
|
+
sha1 string,
|
|
76
|
+
name string,
|
|
77
|
+
version string,
|
|
78
|
+
deps boshcomp.Dependencies,
|
|
79
|
+
) (bpagclient.CompiledPackage, error) {
|
|
80
|
+
return bpagclient.CompiledPackage{}, bosherr.New("fake-ping-err")
|
|
81
|
+
}
|