vagrant-bosh 0.0.2 → 0.0.3
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.
- data/dev/Vagrantfile +2 -2
- data/dev/example-winston-manifest.yml +5 -8
- data/go/src/boshprovisioner/instance/instance.go +43 -0
- data/go/src/boshprovisioner/instance/instance_provisioner.go +48 -0
- data/go/src/boshprovisioner/instance/updater/updater.go +31 -36
- data/go/src/boshprovisioner/instance/updater/updater_factory.go +0 -3
- data/go/src/boshprovisioner/main/config.go +3 -0
- data/go/src/boshprovisioner/main/main.go +8 -6
- data/go/src/boshprovisioner/provisioner/deployment_provisioner.go +36 -5
- data/go/src/boshprovisioner/provisioner/release_compiler.go +2 -0
- data/go/src/boshprovisioner/vm/{agent_provisioner.go → vagrant/agent_provisioner.go} +1 -1
- data/go/src/boshprovisioner/vm/{asset_manager.go → vagrant/asset_manager.go} +0 -0
- data/go/src/boshprovisioner/vm/vagrant/deps_provisioner.go +200 -0
- data/go/src/boshprovisioner/vm/{monit_provisioner.go → vagrant/monit_provisioner.go} +3 -1
- data/go/src/boshprovisioner/vm/{runit_provisioner.go → vagrant/runit_provisioner.go} +15 -11
- data/go/src/boshprovisioner/vm/{simple_cmds.go → vagrant/simple_cmds.go} +0 -0
- data/go/src/boshprovisioner/vm/{vcap_user_provisioner.go → vagrant/vcap_user_provisioner.go} +0 -0
- data/go/src/boshprovisioner/vm/vagrant/vm.go +27 -0
- data/go/src/boshprovisioner/vm/vagrant/vm_provisioner.go +81 -0
- data/go/src/boshprovisioner/vm/{vm_provisioner_factory.go → vagrant/vm_provisioner_factory.go} +14 -7
- data/go/src/boshprovisioner/vm/vm_interface.go +26 -0
- data/lib/vagrant-bosh/assets/provisioner +0 -0
- data/lib/vagrant-bosh/bootstrapper.rb +10 -6
- data/lib/vagrant-bosh/config.rb +6 -0
- data/lib/vagrant-bosh/provisioner.rb +1 -1
- data/lib/vagrant-bosh/version.rb +1 -1
- metadata +22 -19
- checksums.yaml +0 -7
- data/go/src/boshprovisioner/instance/updater/preparer.go +0 -39
- data/go/src/boshprovisioner/provisioner/instance_provisioner.go +0 -48
- data/go/src/boshprovisioner/vm/deps_provisioner.go +0 -92
- data/go/src/boshprovisioner/vm/vm.go +0 -19
- data/go/src/boshprovisioner/vm/vm_provisioner.go +0 -57
@@ -0,0 +1,26 @@
|
|
1
|
+
package vm
|
2
|
+
|
3
|
+
import (
|
4
|
+
bpagclient "boshprovisioner/agent/client"
|
5
|
+
bpdep "boshprovisioner/deployment"
|
6
|
+
)
|
7
|
+
|
8
|
+
type VMProvisioner interface {
|
9
|
+
// Provision creates and configures VM to be usable by BOSH releases.
|
10
|
+
// todo should not rely on bpdep.Instance
|
11
|
+
Provision(bpdep.Instance) (VM, error)
|
12
|
+
}
|
13
|
+
|
14
|
+
type VMProvisionerConfig struct {
|
15
|
+
// When provisioning, install all dependencies that official stemcells carry.
|
16
|
+
// By default, provisioners will only install absolutely needed dependencies.
|
17
|
+
FullStemcellCompatibility bool `json:"full_stemcell_compatibility"`
|
18
|
+
}
|
19
|
+
|
20
|
+
type VM interface {
|
21
|
+
// AgentClient returns a client immediately ready for communication.
|
22
|
+
AgentClient() bpagclient.Client
|
23
|
+
|
24
|
+
// Deprovision deletes VM previously provisioned VM.
|
25
|
+
Deprovision() error
|
26
|
+
}
|
Binary file
|
@@ -4,11 +4,11 @@ require "json"
|
|
4
4
|
module VagrantPlugins
|
5
5
|
module VagrantBosh
|
6
6
|
class Bootstrapper
|
7
|
-
def initialize(communicator, asset_uploader, base_dir,
|
7
|
+
def initialize(communicator, asset_uploader, base_dir, config, provisioner_tracker)
|
8
8
|
@c = communicator
|
9
9
|
@asset_uploader = asset_uploader
|
10
10
|
@base_dir = base_dir
|
11
|
-
@
|
11
|
+
@config = config
|
12
12
|
@provisioner_tracker = provisioner_tracker
|
13
13
|
@logger = Log4r::Logger.new("vagrant::provisioners::bosh::bootstrapper")
|
14
14
|
|
@@ -21,7 +21,7 @@ module VagrantPlugins
|
|
21
21
|
def bootstrap
|
22
22
|
@asset_uploader.sync(@assets_path)
|
23
23
|
|
24
|
-
@asset_uploader.upload_text(@manifest, @manifest_path)
|
24
|
+
@asset_uploader.upload_text(@config.manifest, @manifest_path)
|
25
25
|
|
26
26
|
config_json = JSON.dump(config_hash)
|
27
27
|
@asset_uploader.upload_text(config_json, @config_path)
|
@@ -31,7 +31,7 @@ module VagrantPlugins
|
|
31
31
|
@c.chmod_x(provisioner_path)
|
32
32
|
|
33
33
|
@c.sudo(
|
34
|
-
"#{provisioner_path} -configPath=#{@config_path}",
|
34
|
+
"#{provisioner_path} -configPath=#{@config_path} 2> >(tee /tmp/provisioner.log >&2)",
|
35
35
|
&@provisioner_tracker.method(:add_data)
|
36
36
|
)
|
37
37
|
end
|
@@ -43,15 +43,19 @@ module VagrantPlugins
|
|
43
43
|
manifest_path: @manifest_path,
|
44
44
|
assets_dir: @assets_path,
|
45
45
|
repos_dir: @repos_path,
|
46
|
-
|
46
|
+
|
47
47
|
mbus: "https://user:password@127.0.0.1:4321/agent",
|
48
48
|
|
49
49
|
blobstore: {
|
50
50
|
provider: "local",
|
51
|
-
options: {
|
51
|
+
options: {
|
52
52
|
blobstore_path: File.join(@base_dir, "blobstore"),
|
53
53
|
},
|
54
54
|
},
|
55
|
+
|
56
|
+
vm_provisioner: {
|
57
|
+
full_stemcell_compatibility: @config.full_stemcell_compatibility,
|
58
|
+
},
|
55
59
|
}
|
56
60
|
end
|
57
61
|
end
|
data/lib/vagrant-bosh/config.rb
CHANGED
@@ -3,9 +3,15 @@ require "vagrant"
|
|
3
3
|
module VagrantPlugins
|
4
4
|
module VagrantBosh
|
5
5
|
class Config < Vagrant.plugin("2", :config)
|
6
|
+
# Manifest holds full BOSH deployment manifest as a string.
|
6
7
|
attr_accessor :manifest
|
7
8
|
|
9
|
+
# Full stemcell compatibility forces provisioner to install all
|
10
|
+
# (not just minimum) dependencies usually found on a stemcell.
|
11
|
+
attr_accessor :full_stemcell_compatibility
|
12
|
+
|
8
13
|
def finalize!
|
14
|
+
self.full_stemcell_compatibility = !!self.full_stemcell_compatibility
|
9
15
|
end
|
10
16
|
|
11
17
|
def validate(machine)
|
data/lib/vagrant-bosh/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-bosh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Dmitriy Kalinin
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
12
|
+
date: 2014-06-24 00:00:00.000000000 Z
|
12
13
|
dependencies: []
|
13
14
|
description: BOSH provisioner allows to provision guest VM by specifying regular BOSH
|
14
15
|
deployment manifest.
|
@@ -64,6 +65,8 @@ files:
|
|
64
65
|
- go/src/boshprovisioner/index/file_index_test.go
|
65
66
|
- go/src/boshprovisioner/index/index_interface.go
|
66
67
|
- go/src/boshprovisioner/index/index_suite_test.go
|
68
|
+
- go/src/boshprovisioner/instance/instance.go
|
69
|
+
- go/src/boshprovisioner/instance/instance_provisioner.go
|
67
70
|
- go/src/boshprovisioner/instance/templatescompiler/concrete_templates_compiler.go
|
68
71
|
- go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erb_renderer.go
|
69
72
|
- go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erbrenderer_suite_test.go
|
@@ -83,7 +86,6 @@ files:
|
|
83
86
|
- go/src/boshprovisioner/instance/updater/applier/empty_state.go
|
84
87
|
- go/src/boshprovisioner/instance/updater/applier/job_state.go
|
85
88
|
- go/src/boshprovisioner/instance/updater/drainer.go
|
86
|
-
- go/src/boshprovisioner/instance/updater/preparer.go
|
87
89
|
- go/src/boshprovisioner/instance/updater/starter.go
|
88
90
|
- go/src/boshprovisioner/instance/updater/stopper.go
|
89
91
|
- go/src/boshprovisioner/instance/updater/updater.go
|
@@ -104,7 +106,6 @@ files:
|
|
104
106
|
- go/src/boshprovisioner/provisioner/blobstore_config.go
|
105
107
|
- go/src/boshprovisioner/provisioner/blobstore_provisioner.go
|
106
108
|
- go/src/boshprovisioner/provisioner/deployment_provisioner.go
|
107
|
-
- go/src/boshprovisioner/provisioner/instance_provisioner.go
|
108
109
|
- go/src/boshprovisioner/provisioner/release_compiler.go
|
109
110
|
- go/src/boshprovisioner/release/job/job.go
|
110
111
|
- go/src/boshprovisioner/release/job/manifest/manifest.go
|
@@ -127,16 +128,17 @@ files:
|
|
127
128
|
- go/src/boshprovisioner/tar/compressor_interface.go
|
128
129
|
- go/src/boshprovisioner/tar/extractor_interface.go
|
129
130
|
- 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
|
131
|
+
- go/src/boshprovisioner/vm/vagrant/agent_provisioner.go
|
132
|
+
- go/src/boshprovisioner/vm/vagrant/asset_manager.go
|
133
|
+
- go/src/boshprovisioner/vm/vagrant/deps_provisioner.go
|
134
|
+
- go/src/boshprovisioner/vm/vagrant/monit_provisioner.go
|
135
|
+
- go/src/boshprovisioner/vm/vagrant/runit_provisioner.go
|
136
|
+
- go/src/boshprovisioner/vm/vagrant/simple_cmds.go
|
137
|
+
- go/src/boshprovisioner/vm/vagrant/vcap_user_provisioner.go
|
138
|
+
- go/src/boshprovisioner/vm/vagrant/vm.go
|
139
|
+
- go/src/boshprovisioner/vm/vagrant/vm_provisioner.go
|
140
|
+
- go/src/boshprovisioner/vm/vagrant/vm_provisioner_factory.go
|
141
|
+
- go/src/boshprovisioner/vm/vm_interface.go
|
140
142
|
- lib/vagrant-bosh.rb
|
141
143
|
- lib/vagrant-bosh/asset_uploader.rb
|
142
144
|
- lib/vagrant-bosh/assets/agent/agent-log
|
@@ -166,26 +168,27 @@ files:
|
|
166
168
|
homepage: https://github.com/cppforlife/vagrant-bosh
|
167
169
|
licenses:
|
168
170
|
- MIT
|
169
|
-
metadata: {}
|
170
171
|
post_install_message:
|
171
172
|
rdoc_options: []
|
172
173
|
require_paths:
|
173
174
|
- lib
|
174
175
|
- templates
|
175
176
|
required_ruby_version: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
176
178
|
requirements:
|
177
|
-
- - '>='
|
179
|
+
- - ! '>='
|
178
180
|
- !ruby/object:Gem::Version
|
179
181
|
version: '0'
|
180
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
|
+
none: false
|
181
184
|
requirements:
|
182
|
-
- - '>='
|
185
|
+
- - ! '>='
|
183
186
|
- !ruby/object:Gem::Version
|
184
187
|
version: '0'
|
185
188
|
requirements: []
|
186
189
|
rubyforge_project:
|
187
|
-
rubygems_version:
|
190
|
+
rubygems_version: 1.8.23
|
188
191
|
signing_key:
|
189
|
-
specification_version:
|
192
|
+
specification_version: 3
|
190
193
|
summary: Vagrant BOSH provisioner plugin.
|
191
194
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 831ea9bc4698d6a0dea969a338e2d48bfc936306
|
4
|
-
data.tar.gz: d5454ec89149ebd6779f72b7d27226284bdd1bde
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: d34fbdcc2ef35e1174997bb0b98800d14493a2a2a308d50a728154be225fe6edc6b6421d1f16ceb7a258195e2f6d956257cbca6af8225ba3f6a0a29430d5e3b9
|
7
|
-
data.tar.gz: d56779c9cca2243e903c21690c1c7a379ed4d663b850554a03aabaf352f646de4aa99c5b0c8797621b92d63498bc7deb5d5a6dd1d8279e0cff67a84bac038055
|
@@ -1,39 +0,0 @@
|
|
1
|
-
package updater
|
2
|
-
|
3
|
-
import (
|
4
|
-
boshas "bosh/agent/applier/applyspec"
|
5
|
-
bosherr "bosh/errors"
|
6
|
-
boshlog "bosh/logger"
|
7
|
-
|
8
|
-
bpagclient "boshprovisioner/agent/client"
|
9
|
-
)
|
10
|
-
|
11
|
-
const preparerLogTag = "Preparer"
|
12
|
-
|
13
|
-
type Preparer struct {
|
14
|
-
agentClient bpagclient.Client
|
15
|
-
logger boshlog.Logger
|
16
|
-
}
|
17
|
-
|
18
|
-
func NewPreparer(
|
19
|
-
agentClient bpagclient.Client,
|
20
|
-
logger boshlog.Logger,
|
21
|
-
) Preparer {
|
22
|
-
return Preparer{
|
23
|
-
agentClient: agentClient,
|
24
|
-
logger: logger,
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
func (p Preparer) Prepare() error {
|
29
|
-
p.logger.Debug(preparerLogTag, "Preparing instance")
|
30
|
-
|
31
|
-
spec := boshas.V1ApplySpec{}
|
32
|
-
|
33
|
-
_, err := p.agentClient.Prepare(spec)
|
34
|
-
if err != nil {
|
35
|
-
return bosherr.WrapError(err, "Sending prepare")
|
36
|
-
}
|
37
|
-
|
38
|
-
return nil
|
39
|
-
}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
package provisioner
|
2
|
-
|
3
|
-
import (
|
4
|
-
bosherr "bosh/errors"
|
5
|
-
boshlog "bosh/logger"
|
6
|
-
|
7
|
-
bpdep "boshprovisioner/deployment"
|
8
|
-
bpinstupd "boshprovisioner/instance/updater"
|
9
|
-
bpvm "boshprovisioner/vm"
|
10
|
-
)
|
11
|
-
|
12
|
-
const instanceProvisionerLogTag = "InstanceProvisioner"
|
13
|
-
|
14
|
-
type InstanceProvisioner struct {
|
15
|
-
instanceUpdaterFactory bpinstupd.UpdaterFactory
|
16
|
-
vmProvisioner bpvm.VMProvisioner
|
17
|
-
logger boshlog.Logger
|
18
|
-
}
|
19
|
-
|
20
|
-
func NewInstanceProvisioner(
|
21
|
-
instanceUpdaterFactory bpinstupd.UpdaterFactory,
|
22
|
-
vmProvisioner bpvm.VMProvisioner,
|
23
|
-
logger boshlog.Logger,
|
24
|
-
) InstanceProvisioner {
|
25
|
-
return InstanceProvisioner{
|
26
|
-
instanceUpdaterFactory: instanceUpdaterFactory,
|
27
|
-
vmProvisioner: vmProvisioner,
|
28
|
-
logger: logger,
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
|
-
func (p InstanceProvisioner) Provision(job bpdep.Job, instance bpdep.Instance) error {
|
33
|
-
p.logger.Debug(instanceProvisionerLogTag, "Updating instance")
|
34
|
-
|
35
|
-
vm, err := p.vmProvisioner.Provision(instance)
|
36
|
-
if err != nil {
|
37
|
-
return bosherr.WrapError(err, "Provisioning agent")
|
38
|
-
}
|
39
|
-
|
40
|
-
updater := p.instanceUpdaterFactory.NewUpdater(vm.AgentClient(), job, instance)
|
41
|
-
|
42
|
-
err = updater.Update()
|
43
|
-
if err != nil {
|
44
|
-
return bosherr.WrapError(err, "Updating instance %d", instance.Index)
|
45
|
-
}
|
46
|
-
|
47
|
-
return nil
|
48
|
-
}
|
@@ -1,92 +0,0 @@
|
|
1
|
-
package vm
|
2
|
-
|
3
|
-
import (
|
4
|
-
"fmt"
|
5
|
-
"strings"
|
6
|
-
|
7
|
-
bosherr "bosh/errors"
|
8
|
-
boshlog "bosh/logger"
|
9
|
-
boshsys "bosh/system"
|
10
|
-
|
11
|
-
bpeventlog "boshprovisioner/eventlog"
|
12
|
-
)
|
13
|
-
|
14
|
-
const (
|
15
|
-
depsProvisionerLogTag = "DepsProvisioner"
|
16
|
-
runAptGetUpdateMsg = "E: Unable to fetch some archives, maybe run apt-get update"
|
17
|
-
)
|
18
|
-
|
19
|
-
// DepsProvisioner installs basic dependencies for running
|
20
|
-
// packaging scripts from BOSH packages. It also installs
|
21
|
-
// non-captured dependencies by few common BOSH releases.
|
22
|
-
// (e.g. cmake, quota)
|
23
|
-
type DepsProvisioner struct {
|
24
|
-
runner boshsys.CmdRunner
|
25
|
-
eventLog bpeventlog.Log
|
26
|
-
logger boshlog.Logger
|
27
|
-
}
|
28
|
-
|
29
|
-
func NewDepsProvisioner(
|
30
|
-
runner boshsys.CmdRunner,
|
31
|
-
eventLog bpeventlog.Log,
|
32
|
-
logger boshlog.Logger,
|
33
|
-
) DepsProvisioner {
|
34
|
-
return DepsProvisioner{
|
35
|
-
runner: runner,
|
36
|
-
eventLog: eventLog,
|
37
|
-
logger: logger,
|
38
|
-
}
|
39
|
-
}
|
40
|
-
|
41
|
-
func (p DepsProvisioner) Provision() error {
|
42
|
-
pkgNames := []string{
|
43
|
-
// For packaging scripts in BOSH releases
|
44
|
-
"build-essential", // 16sec
|
45
|
-
"cmake", // 6sec
|
46
|
-
"libcap-dev", // 3sec
|
47
|
-
|
48
|
-
"libbz2-1.0", // noop on precise64 Vagrant box
|
49
|
-
"libbz2-dev", // 2sec
|
50
|
-
"libxslt-dev", // 2sec
|
51
|
-
"libxml2-dev", // 2sec
|
52
|
-
|
53
|
-
// For warden
|
54
|
-
"quota", // 1sec
|
55
|
-
}
|
56
|
-
|
57
|
-
stage := p.eventLog.BeginStage("Installing dependencies", len(pkgNames))
|
58
|
-
|
59
|
-
for _, pkgName := range pkgNames {
|
60
|
-
task := stage.BeginTask(fmt.Sprintf("Package %s", pkgName))
|
61
|
-
|
62
|
-
err := task.End(p.installPkg(pkgName))
|
63
|
-
if err != nil {
|
64
|
-
return bosherr.WrapError(err, "Installing %s", pkgName)
|
65
|
-
}
|
66
|
-
}
|
67
|
-
|
68
|
-
return nil
|
69
|
-
}
|
70
|
-
|
71
|
-
func (p DepsProvisioner) installPkg(name string) error {
|
72
|
-
_, _, _, err := p.runner.RunCommand("apt-get", "-y", "install", name)
|
73
|
-
if err == nil {
|
74
|
-
return nil
|
75
|
-
}
|
76
|
-
|
77
|
-
// Avoid running 'apt-get update' since it usually takes 30sec
|
78
|
-
if strings.Contains(err.Error(), runAptGetUpdateMsg) {
|
79
|
-
_, _, _, err := p.runner.RunCommand("apt-get", "-y", "update")
|
80
|
-
if err != nil {
|
81
|
-
return bosherr.WrapError(err, "Updating sources")
|
82
|
-
}
|
83
|
-
|
84
|
-
// Try second time after updating
|
85
|
-
_, _, _, err = p.runner.RunCommand("apt-get", "-y", "install", name)
|
86
|
-
if err != nil {
|
87
|
-
return bosherr.WrapError(err, "Installing %s after updating", name)
|
88
|
-
}
|
89
|
-
}
|
90
|
-
|
91
|
-
return nil
|
92
|
-
}
|
@@ -1,19 +0,0 @@
|
|
1
|
-
package vm
|
2
|
-
|
3
|
-
import (
|
4
|
-
bpagclient "boshprovisioner/agent/client"
|
5
|
-
)
|
6
|
-
|
7
|
-
// VM represents already provisioned machine
|
8
|
-
// that can be communicated with via an AgentClient.
|
9
|
-
type VM struct {
|
10
|
-
agentClient bpagclient.Client
|
11
|
-
}
|
12
|
-
|
13
|
-
func NewVM(agentClient bpagclient.Client) VM {
|
14
|
-
return VM{agentClient: agentClient}
|
15
|
-
}
|
16
|
-
|
17
|
-
func (vm VM) AgentClient() bpagclient.Client {
|
18
|
-
return vm.agentClient
|
19
|
-
}
|
@@ -1,57 +0,0 @@
|
|
1
|
-
package vm
|
2
|
-
|
3
|
-
import (
|
4
|
-
bosherr "bosh/errors"
|
5
|
-
boshlog "bosh/logger"
|
6
|
-
|
7
|
-
bpdep "boshprovisioner/deployment"
|
8
|
-
)
|
9
|
-
|
10
|
-
const vmProvisionerLogTag = "VMProvisioner"
|
11
|
-
|
12
|
-
// VMProvisioner installs system dependencies that
|
13
|
-
// are usually found on a stemcell, adds vcap user,
|
14
|
-
// and finally install Agent and Monit.
|
15
|
-
type VMProvisioner struct {
|
16
|
-
vcapUserProvisioner VCAPUserProvisioner
|
17
|
-
depsProvisioner DepsProvisioner
|
18
|
-
agentProvisioner AgentProvisioner
|
19
|
-
|
20
|
-
logger boshlog.Logger
|
21
|
-
}
|
22
|
-
|
23
|
-
func NewVMProvisioner(
|
24
|
-
vcapUserProvisioner VCAPUserProvisioner,
|
25
|
-
depsProvisioner DepsProvisioner,
|
26
|
-
agentProvisioner AgentProvisioner,
|
27
|
-
logger boshlog.Logger,
|
28
|
-
) VMProvisioner {
|
29
|
-
return VMProvisioner{
|
30
|
-
vcapUserProvisioner: vcapUserProvisioner,
|
31
|
-
depsProvisioner: depsProvisioner,
|
32
|
-
agentProvisioner: agentProvisioner,
|
33
|
-
|
34
|
-
logger: logger,
|
35
|
-
}
|
36
|
-
}
|
37
|
-
|
38
|
-
func (p VMProvisioner) Provision(instance bpdep.Instance) (VM, error) {
|
39
|
-
var vm VM
|
40
|
-
|
41
|
-
err := p.vcapUserProvisioner.Provision()
|
42
|
-
if err != nil {
|
43
|
-
return vm, bosherr.WrapError(err, "Provisioning vcap user")
|
44
|
-
}
|
45
|
-
|
46
|
-
err = p.depsProvisioner.Provision()
|
47
|
-
if err != nil {
|
48
|
-
return vm, bosherr.WrapError(err, "Provisioning dependencies")
|
49
|
-
}
|
50
|
-
|
51
|
-
agentClient, err := p.agentProvisioner.Provision(instance)
|
52
|
-
if err != nil {
|
53
|
-
return vm, bosherr.WrapError(err, "Provisioning agent")
|
54
|
-
}
|
55
|
-
|
56
|
-
return NewVM(agentClient), nil
|
57
|
-
}
|