vagrant-bosh 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitmodules +3 -6
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent-log +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent-run +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent.cert +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent.json +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent.key +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/bosh-agent +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/bosh-agent-rc +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/bosh-blobstore-dav +0 -0
- data/bosh-provisioner/assets/bosh-provisioner +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/monit/monit +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/monit/monit-log +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/monit/monit-run +0 -0
- data/{lib/vagrant-bosh → bosh-provisioner}/assets/monit/monitrc +0 -0
- data/dev/Vagrantfile +1 -1
- data/dev/example-bosh-manifest.yml +12 -12
- data/lib/vagrant-bosh/bootstrapper.rb +6 -2
- data/lib/vagrant-bosh/config.rb +1 -1
- data/lib/vagrant-bosh/provisioner.rb +1 -1
- data/lib/vagrant-bosh/version.rb +1 -1
- data/vagrant-bosh.gemspec +3 -1
- metadata +20 -139
- data/go/.gitignore +0 -11
- data/go/bin/build +0 -10
- data/go/bin/build-linux-amd64 +0 -9
- data/go/bin/env +0 -13
- data/go/bin/go +0 -5
- data/go/bin/golint +0 -19
- data/go/bin/test +0 -37
- data/go/src/boshprovisioner/agent/client/client_interface.go +0 -73
- data/go/src/boshprovisioner/agent/client/fakes/fake_client.go +0 -81
- data/go/src/boshprovisioner/agent/client/http_client.go +0 -299
- data/go/src/boshprovisioner/agent/client/http_client_envelope.go +0 -107
- data/go/src/boshprovisioner/deployment/deployment.go +0 -221
- data/go/src/boshprovisioner/deployment/instance.go +0 -54
- data/go/src/boshprovisioner/deployment/manifest/deployment.go +0 -84
- data/go/src/boshprovisioner/deployment/manifest/ips.go +0 -23
- data/go/src/boshprovisioner/deployment/manifest/manifest.go +0 -143
- data/go/src/boshprovisioner/deployment/manifest/manifest_suite_test.go +0 -13
- data/go/src/boshprovisioner/deployment/manifest/manifest_test.go +0 -86
- data/go/src/boshprovisioner/deployment/manifest/syntax_validator.go +0 -186
- data/go/src/boshprovisioner/deployment/manifest/watch_time.go +0 -43
- data/go/src/boshprovisioner/deployment/manifest_reader.go +0 -46
- data/go/src/boshprovisioner/deployment/reader_factory.go +0 -25
- data/go/src/boshprovisioner/deployment/semantic_validator.go +0 -111
- data/go/src/boshprovisioner/downloader/blobstore_downloader.go +0 -55
- data/go/src/boshprovisioner/downloader/default_mux_downloader.go +0 -22
- data/go/src/boshprovisioner/downloader/downloader_interface.go +0 -6
- data/go/src/boshprovisioner/downloader/http_downloader.go +0 -53
- data/go/src/boshprovisioner/downloader/local_fs_downloader.go +0 -48
- data/go/src/boshprovisioner/downloader/mux_downloader.go +0 -69
- data/go/src/boshprovisioner/eventlog/log.go +0 -72
- data/go/src/boshprovisioner/eventlog/stage.go +0 -39
- data/go/src/boshprovisioner/eventlog/task.go +0 -58
- data/go/src/boshprovisioner/index/file_index.go +0 -289
- data/go/src/boshprovisioner/index/file_index_test.go +0 -296
- data/go/src/boshprovisioner/index/index_interface.go +0 -18
- data/go/src/boshprovisioner/index/index_suite_test.go +0 -13
- data/go/src/boshprovisioner/instance/instance.go +0 -43
- data/go/src/boshprovisioner/instance/instance_provisioner.go +0 -48
- data/go/src/boshprovisioner/instance/templatescompiler/concrete_templates_compiler.go +0 -284
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erb_renderer.go +0 -117
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erbrenderer_suite_test.go +0 -13
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties.go +0 -77
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties_test.go +0 -193
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context.go +0 -85
- data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context_rb.go +0 -155
- data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_jobs_repository.go +0 -86
- data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_runtime_packages_repository.go +0 -113
- data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_template_to_job_repository.go +0 -86
- data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/jobs_repository_interface.go +0 -49
- data/go/src/boshprovisioner/instance/templatescompiler/rendered_archives_compiler.go +0 -81
- data/go/src/boshprovisioner/instance/templatescompiler/templates_compiler_interface.go +0 -20
- data/go/src/boshprovisioner/instance/templatescompiler/templatesrepo/ct_repository.go +0 -54
- data/go/src/boshprovisioner/instance/templatescompiler/templatesrepo/templates_repository_interface.go +0 -16
- data/go/src/boshprovisioner/instance/updater/applier/applier.go +0 -93
- data/go/src/boshprovisioner/instance/updater/applier/empty_state.go +0 -66
- data/go/src/boshprovisioner/instance/updater/applier/job_state.go +0 -178
- data/go/src/boshprovisioner/instance/updater/drainer.go +0 -72
- data/go/src/boshprovisioner/instance/updater/starter.go +0 -36
- data/go/src/boshprovisioner/instance/updater/stopper.go +0 -36
- data/go/src/boshprovisioner/instance/updater/updater.go +0 -97
- data/go/src/boshprovisioner/instance/updater/updater_factory.go +0 -80
- data/go/src/boshprovisioner/instance/updater/updater_suite_test.go +0 -13
- data/go/src/boshprovisioner/instance/updater/waiter.go +0 -77
- data/go/src/boshprovisioner/instance/updater/waiter_test.go +0 -147
- data/go/src/boshprovisioner/main/config.go +0 -95
- data/go/src/boshprovisioner/main/config_test.go +0 -67
- data/go/src/boshprovisioner/main/main.go +0 -185
- data/go/src/boshprovisioner/main/main_suite_test.go +0 -13
- data/go/src/boshprovisioner/main/repos_factory.go +0 -86
- data/go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/compiled_packages_repository_interface.go +0 -17
- data/go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/concrete_compiled_packages_repository.go +0 -61
- data/go/src/boshprovisioner/packagescompiler/concrete_packages_compiler.go +0 -179
- data/go/src/boshprovisioner/packagescompiler/concrete_packages_compiler_factory.go +0 -48
- data/go/src/boshprovisioner/packagescompiler/packages_compiler_interface.go +0 -20
- data/go/src/boshprovisioner/packagescompiler/packagesrepo/concrete_packages_repository.go +0 -65
- data/go/src/boshprovisioner/packagescompiler/packagesrepo/packages_repository_interface.go +0 -16
- data/go/src/boshprovisioner/provisioner/blobstore_config.go +0 -65
- data/go/src/boshprovisioner/provisioner/blobstore_provisioner.go +0 -38
- data/go/src/boshprovisioner/provisioner/deployment_provisioner_interface.go +0 -10
- data/go/src/boshprovisioner/provisioner/release_compiler.go +0 -95
- data/go/src/boshprovisioner/provisioner/single_configured_vm_provisioner.go +0 -124
- data/go/src/boshprovisioner/provisioner/single_non_configured_vm_provisioner.go +0 -40
- data/go/src/boshprovisioner/provisioner/single_vm_provisioner_factory.go +0 -68
- data/go/src/boshprovisioner/release/dir_reader.go +0 -146
- data/go/src/boshprovisioner/release/job/job.go +0 -86
- data/go/src/boshprovisioner/release/job/manifest/manifest.go +0 -79
- data/go/src/boshprovisioner/release/job/manifest/manifest_suite_test.go +0 -13
- data/go/src/boshprovisioner/release/job/manifest/manifest_test.go +0 -59
- data/go/src/boshprovisioner/release/job/manifest/syntax_validator.go +0 -43
- data/go/src/boshprovisioner/release/job/reader_factory.go +0 -34
- data/go/src/boshprovisioner/release/job/tar_reader.go +0 -133
- data/go/src/boshprovisioner/release/manifest/manifest.go +0 -120
- data/go/src/boshprovisioner/release/manifest/manifest_suite_test.go +0 -13
- data/go/src/boshprovisioner/release/manifest/manifest_test.go +0 -126
- data/go/src/boshprovisioner/release/manifest/syntax_validator.go +0 -134
- data/go/src/boshprovisioner/release/reader_factory.go +0 -45
- data/go/src/boshprovisioner/release/reader_interface.go +0 -6
- data/go/src/boshprovisioner/release/release.go +0 -144
- data/go/src/boshprovisioner/release/release_suite_test.go +0 -13
- data/go/src/boshprovisioner/release/release_test.go +0 -129
- data/go/src/boshprovisioner/release/tar_reader.go +0 -141
- data/go/src/boshprovisioner/tar/cmd_compressor.go +0 -68
- data/go/src/boshprovisioner/tar/cmd_extractor.go +0 -47
- data/go/src/boshprovisioner/tar/compressor_interface.go +0 -6
- data/go/src/boshprovisioner/tar/extractor_interface.go +0 -6
- data/go/src/boshprovisioner/util/possible_base64.go +0 -21
- data/go/src/boshprovisioner/util/string_keyed.go +0 -70
- data/go/src/boshprovisioner/vm/vagrant/agent_provisioner.go +0 -296
- data/go/src/boshprovisioner/vm/vagrant/asset_manager.go +0 -61
- data/go/src/boshprovisioner/vm/vagrant/configured_vm.go +0 -29
- data/go/src/boshprovisioner/vm/vagrant/deps_provisioner.go +0 -214
- data/go/src/boshprovisioner/vm/vagrant/monit_provisioner.go +0 -85
- data/go/src/boshprovisioner/vm/vagrant/non_configured_vm.go +0 -26
- data/go/src/boshprovisioner/vm/vagrant/runit_provisioner.go +0 -229
- data/go/src/boshprovisioner/vm/vagrant/simple_cmds.go +0 -54
- data/go/src/boshprovisioner/vm/vagrant/vcap_user_provisioner.go +0 -167
- data/go/src/boshprovisioner/vm/vagrant/vm_provisioner.go +0 -119
- data/go/src/boshprovisioner/vm/vagrant/vm_provisioner_factory.go +0 -101
- data/go/src/boshprovisioner/vm/vm_interface.go +0 -45
- data/lib/vagrant-bosh/assets/provisioner +0 -0
@@ -1,296 +0,0 @@
|
|
1
|
-
package index_test
|
2
|
-
|
3
|
-
import (
|
4
|
-
boshlog "bosh/logger"
|
5
|
-
boshsys "bosh/system"
|
6
|
-
. "github.com/onsi/ginkgo"
|
7
|
-
. "github.com/onsi/gomega"
|
8
|
-
|
9
|
-
. "boshprovisioner/index"
|
10
|
-
)
|
11
|
-
|
12
|
-
type Key struct {
|
13
|
-
Key string
|
14
|
-
}
|
15
|
-
|
16
|
-
type Value struct {
|
17
|
-
Name string
|
18
|
-
Count float64
|
19
|
-
}
|
20
|
-
|
21
|
-
type ArrayValue struct{ Names []string }
|
22
|
-
|
23
|
-
type StructValue struct{ Name Name }
|
24
|
-
|
25
|
-
type Name struct {
|
26
|
-
First string
|
27
|
-
Last string
|
28
|
-
}
|
29
|
-
|
30
|
-
var _ = Describe("FileIndex", func() {
|
31
|
-
var (
|
32
|
-
index FileIndex
|
33
|
-
)
|
34
|
-
|
35
|
-
BeforeEach(func() {
|
36
|
-
logger := boshlog.NewLogger(boshlog.LevelNone)
|
37
|
-
fs := boshsys.NewOsFileSystem(logger)
|
38
|
-
|
39
|
-
file, err := fs.TempFile("file-index")
|
40
|
-
Expect(err).ToNot(HaveOccurred())
|
41
|
-
|
42
|
-
err = fs.RemoveAll(file.Name())
|
43
|
-
Expect(err).ToNot(HaveOccurred())
|
44
|
-
|
45
|
-
index = NewFileIndex(file.Name(), fs)
|
46
|
-
})
|
47
|
-
|
48
|
-
Describe("Save/List", func() {
|
49
|
-
It("returns list of saved items", func() {
|
50
|
-
k1 := Key{Key: "key-1"}
|
51
|
-
v1 := Value{Name: "value-1", Count: 1}
|
52
|
-
err := index.Save(k1, v1)
|
53
|
-
Expect(err).ToNot(HaveOccurred())
|
54
|
-
|
55
|
-
k2 := Key{Key: "key-2"}
|
56
|
-
v2 := Value{Name: "value-2", Count: 2}
|
57
|
-
err = index.Save(k2, v2)
|
58
|
-
Expect(err).ToNot(HaveOccurred())
|
59
|
-
|
60
|
-
var values []Value
|
61
|
-
|
62
|
-
err = index.List(&values)
|
63
|
-
Expect(err).ToNot(HaveOccurred())
|
64
|
-
Expect(values).To(Equal([]Value{v1, v2}))
|
65
|
-
})
|
66
|
-
|
67
|
-
Describe("array values", func() {
|
68
|
-
It("returns list of saved items that have nil, 0, 1, and more items in an array", func() {
|
69
|
-
k1 := Key{Key: "key-1"}
|
70
|
-
v1 := ArrayValue{Names: []string{"name-1-1", "name-1-2"}} // multiple
|
71
|
-
err := index.Save(k1, v1)
|
72
|
-
Expect(err).ToNot(HaveOccurred())
|
73
|
-
|
74
|
-
k2 := Key{Key: "key-2"}
|
75
|
-
v2 := ArrayValue{Names: []string{"name-2-1"}} // single
|
76
|
-
err = index.Save(k2, v2)
|
77
|
-
Expect(err).ToNot(HaveOccurred())
|
78
|
-
|
79
|
-
k3 := Key{Key: "key-3"}
|
80
|
-
v3 := ArrayValue{Names: []string{}} // empty slice
|
81
|
-
err = index.Save(k3, v3)
|
82
|
-
Expect(err).ToNot(HaveOccurred())
|
83
|
-
|
84
|
-
k4 := Key{Key: "key-4"}
|
85
|
-
v4 := ArrayValue{} // nil
|
86
|
-
err = index.Save(k4, v4)
|
87
|
-
Expect(err).ToNot(HaveOccurred())
|
88
|
-
|
89
|
-
var values []ArrayValue
|
90
|
-
|
91
|
-
err = index.List(&values)
|
92
|
-
Expect(err).ToNot(HaveOccurred())
|
93
|
-
Expect(values).To(Equal([]ArrayValue{v1, v2, v3, v4}))
|
94
|
-
})
|
95
|
-
})
|
96
|
-
|
97
|
-
Describe("struct values", func() {
|
98
|
-
It("returns list of saved items that have nil or more item", func() {
|
99
|
-
k1 := Key{Key: "key-1"}
|
100
|
-
v1 := StructValue{Name: Name{First: "first-name-1", Last: "last-name-1"}} // struct
|
101
|
-
err := index.Save(k1, v1)
|
102
|
-
Expect(err).ToNot(HaveOccurred())
|
103
|
-
|
104
|
-
k2 := Key{Key: "key-2"}
|
105
|
-
v2 := StructValue{Name: Name{First: "first-name-1"}} // struct incomplete
|
106
|
-
err = index.Save(k2, v2)
|
107
|
-
Expect(err).ToNot(HaveOccurred())
|
108
|
-
|
109
|
-
k3 := Key{Key: "key-3"}
|
110
|
-
v3 := StructValue{} // zero value
|
111
|
-
err = index.Save(k3, v3)
|
112
|
-
Expect(err).ToNot(HaveOccurred())
|
113
|
-
|
114
|
-
var values []StructValue
|
115
|
-
|
116
|
-
err = index.List(&values)
|
117
|
-
Expect(err).ToNot(HaveOccurred())
|
118
|
-
Expect(values).To(Equal([]StructValue{v1, v2, v3}))
|
119
|
-
})
|
120
|
-
})
|
121
|
-
})
|
122
|
-
|
123
|
-
Describe("Save/ListKeys", func() {
|
124
|
-
It("returns list of saved keys", func() {
|
125
|
-
k1 := Key{Key: "key-1"}
|
126
|
-
v1 := Value{Name: "value-1", Count: 1}
|
127
|
-
err := index.Save(k1, v1)
|
128
|
-
Expect(err).ToNot(HaveOccurred())
|
129
|
-
|
130
|
-
k2 := Key{Key: "key-2"}
|
131
|
-
v2 := Value{Name: "value-2", Count: 2}
|
132
|
-
err = index.Save(k2, v2)
|
133
|
-
Expect(err).ToNot(HaveOccurred())
|
134
|
-
|
135
|
-
var keys []Key
|
136
|
-
|
137
|
-
err = index.ListKeys(&keys)
|
138
|
-
Expect(err).ToNot(HaveOccurred())
|
139
|
-
Expect(keys).To(Equal([]Key{k1, k2}))
|
140
|
-
})
|
141
|
-
})
|
142
|
-
|
143
|
-
Describe("Save/Find", func() {
|
144
|
-
It("returns true if item is found by key", func() {
|
145
|
-
k1 := Key{Key: "key-1"}
|
146
|
-
v1 := Value{Name: "value-1", Count: 1}
|
147
|
-
err := index.Save(k1, v1)
|
148
|
-
Expect(err).ToNot(HaveOccurred())
|
149
|
-
|
150
|
-
var value Value
|
151
|
-
|
152
|
-
err = index.Find(k1, &value)
|
153
|
-
Expect(err).ToNot(HaveOccurred())
|
154
|
-
Expect(err).ToNot(Equal(ErrNotFound))
|
155
|
-
|
156
|
-
Expect(value).To(Equal(v1))
|
157
|
-
})
|
158
|
-
|
159
|
-
It("returns false if item is not found by key", func() {
|
160
|
-
k1 := Key{Key: "key-1"}
|
161
|
-
v1 := Value{Name: "value-1", Count: 1}
|
162
|
-
err := index.Save(k1, v1)
|
163
|
-
Expect(err).ToNot(HaveOccurred())
|
164
|
-
|
165
|
-
var value Value
|
166
|
-
|
167
|
-
err = index.Find(Key{Key: "key-2"}, &value)
|
168
|
-
Expect(err).To(HaveOccurred())
|
169
|
-
Expect(err).To(Equal(ErrNotFound))
|
170
|
-
|
171
|
-
Expect(value).To(Equal(Value{}))
|
172
|
-
})
|
173
|
-
|
174
|
-
Describe("array values", func() {
|
175
|
-
It("returns true and correctly deserializes item with nil", func() {
|
176
|
-
k1 := Key{Key: "key-1"}
|
177
|
-
v1 := ArrayValue{} // nil
|
178
|
-
err := index.Save(k1, v1)
|
179
|
-
Expect(err).ToNot(HaveOccurred())
|
180
|
-
|
181
|
-
var value ArrayValue
|
182
|
-
|
183
|
-
err = index.Find(k1, &value)
|
184
|
-
Expect(err).ToNot(HaveOccurred())
|
185
|
-
Expect(err).ToNot(Equal(ErrNotFound))
|
186
|
-
|
187
|
-
Expect(value).To(Equal(v1))
|
188
|
-
})
|
189
|
-
|
190
|
-
It("returns true and correctly deserializes item with empty slice", func() {
|
191
|
-
k1 := Key{Key: "key-1"}
|
192
|
-
v1 := ArrayValue{Names: []string{}} // empty slice
|
193
|
-
err := index.Save(k1, v1)
|
194
|
-
Expect(err).ToNot(HaveOccurred())
|
195
|
-
|
196
|
-
var value ArrayValue
|
197
|
-
|
198
|
-
err = index.Find(k1, &value)
|
199
|
-
Expect(err).ToNot(HaveOccurred())
|
200
|
-
Expect(err).ToNot(Equal(ErrNotFound))
|
201
|
-
|
202
|
-
Expect(value).To(Equal(v1))
|
203
|
-
})
|
204
|
-
|
205
|
-
It("returns true and correctly deserializes item with multiple items", func() {
|
206
|
-
k1 := Key{Key: "key-1"}
|
207
|
-
v1 := ArrayValue{Names: []string{"name-1-1", "name-1-2"}} // multiple
|
208
|
-
err := index.Save(k1, v1)
|
209
|
-
Expect(err).ToNot(HaveOccurred())
|
210
|
-
|
211
|
-
var value ArrayValue
|
212
|
-
|
213
|
-
err = index.Find(k1, &value)
|
214
|
-
Expect(err).ToNot(HaveOccurred())
|
215
|
-
Expect(err).ToNot(Equal(ErrNotFound))
|
216
|
-
|
217
|
-
Expect(value).To(Equal(v1))
|
218
|
-
})
|
219
|
-
})
|
220
|
-
|
221
|
-
Describe("struct values", func() {
|
222
|
-
It("returns true and correctly deserializes item with zero value", func() {
|
223
|
-
k1 := Key{Key: "key-1"}
|
224
|
-
v1 := StructValue{} // zero value
|
225
|
-
err := index.Save(k1, v1)
|
226
|
-
Expect(err).ToNot(HaveOccurred())
|
227
|
-
|
228
|
-
var value StructValue
|
229
|
-
|
230
|
-
err = index.Find(k1, &value)
|
231
|
-
Expect(err).ToNot(HaveOccurred())
|
232
|
-
Expect(err).ToNot(Equal(ErrNotFound))
|
233
|
-
|
234
|
-
Expect(value).To(Equal(v1))
|
235
|
-
})
|
236
|
-
|
237
|
-
It("returns true and correctly deserializes item with filled struct", func() {
|
238
|
-
k1 := Key{Key: "key-1"}
|
239
|
-
v1 := StructValue{Name: Name{First: "first-name-1", Last: "last-name-1"}} // struct
|
240
|
-
err := index.Save(k1, v1)
|
241
|
-
Expect(err).ToNot(HaveOccurred())
|
242
|
-
|
243
|
-
var value StructValue
|
244
|
-
|
245
|
-
err = index.Find(k1, &value)
|
246
|
-
Expect(err).ToNot(HaveOccurred())
|
247
|
-
Expect(err).ToNot(Equal(ErrNotFound))
|
248
|
-
|
249
|
-
Expect(value).To(Equal(v1))
|
250
|
-
})
|
251
|
-
})
|
252
|
-
})
|
253
|
-
|
254
|
-
Describe("Save/Remove", func() {
|
255
|
-
var (
|
256
|
-
k1 Key
|
257
|
-
v1 Value
|
258
|
-
)
|
259
|
-
|
260
|
-
BeforeEach(func() {
|
261
|
-
k1 = Key{Key: "key-1"}
|
262
|
-
v1 = Value{Name: "value-1", Count: 1}
|
263
|
-
err := index.Save(k1, v1)
|
264
|
-
Expect(err).ToNot(HaveOccurred())
|
265
|
-
})
|
266
|
-
|
267
|
-
It("removes matching value if found", func() {
|
268
|
-
k2 := Key{Key: "key-2"}
|
269
|
-
v2 := Value{Name: "value-2", Count: 2}
|
270
|
-
err := index.Save(k2, v2)
|
271
|
-
Expect(err).ToNot(HaveOccurred())
|
272
|
-
|
273
|
-
err = index.Remove(k1)
|
274
|
-
Expect(err).ToNot(HaveOccurred())
|
275
|
-
|
276
|
-
var values []Value
|
277
|
-
|
278
|
-
err = index.List(&values)
|
279
|
-
Expect(err).ToNot(HaveOccurred())
|
280
|
-
Expect(values).To(Equal([]Value{v2}))
|
281
|
-
})
|
282
|
-
|
283
|
-
It("does not remove non-matching value if not found", func() {
|
284
|
-
k2 := Key{Key: "key-2"}
|
285
|
-
|
286
|
-
err := index.Remove(k2)
|
287
|
-
Expect(err).ToNot(HaveOccurred())
|
288
|
-
|
289
|
-
var values []Value
|
290
|
-
|
291
|
-
err = index.List(&values)
|
292
|
-
Expect(err).ToNot(HaveOccurred())
|
293
|
-
Expect(values).To(Equal([]Value{v1}))
|
294
|
-
})
|
295
|
-
})
|
296
|
-
})
|
@@ -1,18 +0,0 @@
|
|
1
|
-
package index
|
2
|
-
|
3
|
-
import (
|
4
|
-
"errors"
|
5
|
-
)
|
6
|
-
|
7
|
-
var (
|
8
|
-
ErrNotFound = errors.New("Record is not found")
|
9
|
-
)
|
10
|
-
|
11
|
-
type Index interface {
|
12
|
-
ListKeys(interface{}) error
|
13
|
-
List(interface{}) error
|
14
|
-
|
15
|
-
Find(interface{}, interface{}) error
|
16
|
-
Save(interface{}, interface{}) error
|
17
|
-
Remove(interface{}) error
|
18
|
-
}
|
@@ -1,43 +0,0 @@
|
|
1
|
-
package instance
|
2
|
-
|
3
|
-
import (
|
4
|
-
bosherr "bosh/errors"
|
5
|
-
boshlog "bosh/logger"
|
6
|
-
|
7
|
-
bpdep "boshprovisioner/deployment"
|
8
|
-
bpinstupd "boshprovisioner/instance/updater"
|
9
|
-
)
|
10
|
-
|
11
|
-
type Instance struct {
|
12
|
-
updater bpinstupd.Updater
|
13
|
-
|
14
|
-
job bpdep.Job
|
15
|
-
depInstance bpdep.Instance
|
16
|
-
|
17
|
-
logger boshlog.Logger
|
18
|
-
}
|
19
|
-
|
20
|
-
func NewInstance(
|
21
|
-
updater bpinstupd.Updater,
|
22
|
-
job bpdep.Job,
|
23
|
-
depInstance bpdep.Instance,
|
24
|
-
logger boshlog.Logger,
|
25
|
-
) Instance {
|
26
|
-
return Instance{
|
27
|
-
updater: updater,
|
28
|
-
job: job,
|
29
|
-
depInstance: depInstance,
|
30
|
-
logger: logger,
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
func (i Instance) Deprovision() error {
|
35
|
-
i.logger.Debug(instanceProvisionerLogTag, "Tearing down instance")
|
36
|
-
|
37
|
-
err := i.updater.TearDown()
|
38
|
-
if err != nil {
|
39
|
-
return bosherr.WrapError(err, "Tearing down instance %d", i.depInstance.Index)
|
40
|
-
}
|
41
|
-
|
42
|
-
return nil
|
43
|
-
}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
package instance
|
2
|
-
|
3
|
-
import (
|
4
|
-
bosherr "bosh/errors"
|
5
|
-
boshlog "bosh/logger"
|
6
|
-
|
7
|
-
bpagclient "boshprovisioner/agent/client"
|
8
|
-
bpdep "boshprovisioner/deployment"
|
9
|
-
bpinstupd "boshprovisioner/instance/updater"
|
10
|
-
)
|
11
|
-
|
12
|
-
const instanceProvisionerLogTag = "InstanceProvisioner"
|
13
|
-
|
14
|
-
type InstanceProvisioner struct {
|
15
|
-
instanceUpdaterFactory bpinstupd.UpdaterFactory
|
16
|
-
logger boshlog.Logger
|
17
|
-
}
|
18
|
-
|
19
|
-
func NewInstanceProvisioner(
|
20
|
-
instanceUpdaterFactory bpinstupd.UpdaterFactory,
|
21
|
-
logger boshlog.Logger,
|
22
|
-
) InstanceProvisioner {
|
23
|
-
return InstanceProvisioner{
|
24
|
-
instanceUpdaterFactory: instanceUpdaterFactory,
|
25
|
-
logger: logger,
|
26
|
-
}
|
27
|
-
}
|
28
|
-
|
29
|
-
func (p InstanceProvisioner) Provision(ac bpagclient.Client, job bpdep.Job, depInstance bpdep.Instance) (Instance, error) {
|
30
|
-
p.logger.Debug(instanceProvisionerLogTag, "Updating instance")
|
31
|
-
|
32
|
-
updater := p.instanceUpdaterFactory.NewUpdater(ac, job, depInstance)
|
33
|
-
|
34
|
-
err := updater.SetUp()
|
35
|
-
if err != nil {
|
36
|
-
return Instance{}, bosherr.WrapError(err, "Updating instance %d", depInstance.Index)
|
37
|
-
}
|
38
|
-
|
39
|
-
return NewInstance(updater, job, depInstance, p.logger), nil
|
40
|
-
}
|
41
|
-
|
42
|
-
func (p InstanceProvisioner) PreviouslyProvisioned(ac bpagclient.Client, job bpdep.Job, depInstance bpdep.Instance) Instance {
|
43
|
-
p.logger.Debug(instanceProvisionerLogTag, "Finding previously provisioned instance")
|
44
|
-
|
45
|
-
updater := p.instanceUpdaterFactory.NewUpdater(ac, job, depInstance)
|
46
|
-
|
47
|
-
return NewInstance(updater, job, depInstance, p.logger)
|
48
|
-
}
|
@@ -1,284 +0,0 @@
|
|
1
|
-
package templatescompiler
|
2
|
-
|
3
|
-
import (
|
4
|
-
"fmt"
|
5
|
-
|
6
|
-
boshblob "bosh/blobstore"
|
7
|
-
bosherr "bosh/errors"
|
8
|
-
boshlog "bosh/logger"
|
9
|
-
|
10
|
-
bpdep "boshprovisioner/deployment"
|
11
|
-
bpjobsrepo "boshprovisioner/instance/templatescompiler/jobsrepo"
|
12
|
-
bptplsrepo "boshprovisioner/instance/templatescompiler/templatesrepo"
|
13
|
-
bprel "boshprovisioner/release"
|
14
|
-
bpreljob "boshprovisioner/release/job"
|
15
|
-
)
|
16
|
-
|
17
|
-
type ConcreteTemplatesCompiler struct {
|
18
|
-
renderedArchivesCompiler RenderedArchivesCompiler
|
19
|
-
jobReaderFactory bpreljob.ReaderFactory
|
20
|
-
|
21
|
-
jobsRepo bpjobsrepo.JobsRepository
|
22
|
-
tplToJobRepo bpjobsrepo.TemplateToJobRepository
|
23
|
-
runPkgsRepo bpjobsrepo.RuntimePackagesRepository
|
24
|
-
templatesRepo bptplsrepo.TemplatesRepository
|
25
|
-
|
26
|
-
blobstore boshblob.Blobstore
|
27
|
-
logger boshlog.Logger
|
28
|
-
}
|
29
|
-
|
30
|
-
func NewConcreteTemplatesCompiler(
|
31
|
-
renderedArchivesCompiler RenderedArchivesCompiler,
|
32
|
-
jobReaderFactory bpreljob.ReaderFactory,
|
33
|
-
jobsRepo bpjobsrepo.JobsRepository,
|
34
|
-
tplToJobRepo bpjobsrepo.TemplateToJobRepository,
|
35
|
-
runPkgsRepo bpjobsrepo.RuntimePackagesRepository,
|
36
|
-
templatesRepo bptplsrepo.TemplatesRepository,
|
37
|
-
blobstore boshblob.Blobstore,
|
38
|
-
logger boshlog.Logger,
|
39
|
-
) ConcreteTemplatesCompiler {
|
40
|
-
return ConcreteTemplatesCompiler{
|
41
|
-
renderedArchivesCompiler: renderedArchivesCompiler,
|
42
|
-
jobReaderFactory: jobReaderFactory,
|
43
|
-
|
44
|
-
jobsRepo: jobsRepo,
|
45
|
-
tplToJobRepo: tplToJobRepo,
|
46
|
-
runPkgsRepo: runPkgsRepo,
|
47
|
-
templatesRepo: templatesRepo,
|
48
|
-
|
49
|
-
blobstore: blobstore,
|
50
|
-
logger: logger,
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
// Precompile prepares release jobs to be later combined with instance properties
|
55
|
-
func (tc ConcreteTemplatesCompiler) Precompile(release bprel.Release) error {
|
56
|
-
var allPkgs []bprel.Package
|
57
|
-
|
58
|
-
for _, pkg := range release.Packages {
|
59
|
-
if pkg == nil {
|
60
|
-
// todo panic or should not be here?
|
61
|
-
return bosherr.New("Expected release to not have nil package")
|
62
|
-
}
|
63
|
-
|
64
|
-
allPkgs = append(allPkgs, *pkg)
|
65
|
-
}
|
66
|
-
|
67
|
-
for _, job := range release.Jobs {
|
68
|
-
jobRec, found, err := tc.jobsRepo.Find(job)
|
69
|
-
if err != nil {
|
70
|
-
return bosherr.WrapError(err, "Finding job source blob %s", job.Name)
|
71
|
-
}
|
72
|
-
|
73
|
-
if !found {
|
74
|
-
blobID, fingerprint, err := tc.blobstore.Create(job.TarPath)
|
75
|
-
if err != nil {
|
76
|
-
return bosherr.WrapError(err, "Creating job source blob %s", job.Name)
|
77
|
-
}
|
78
|
-
|
79
|
-
jobRec = bpjobsrepo.JobRecord{
|
80
|
-
BlobID: blobID,
|
81
|
-
SHA1: fingerprint,
|
82
|
-
}
|
83
|
-
|
84
|
-
err = tc.jobsRepo.Save(job, jobRec)
|
85
|
-
if err != nil {
|
86
|
-
return bosherr.WrapError(err, "Saving job record %s", job.Name)
|
87
|
-
}
|
88
|
-
}
|
89
|
-
|
90
|
-
releaseJobRec, err := tc.tplToJobRepo.SaveForJob(release, job)
|
91
|
-
if err != nil {
|
92
|
-
return bosherr.WrapError(err, "Saving release job %s", job.Name)
|
93
|
-
}
|
94
|
-
|
95
|
-
// todo associate to release instead
|
96
|
-
err = tc.runPkgsRepo.SaveAll(releaseJobRec, allPkgs)
|
97
|
-
if err != nil {
|
98
|
-
return bosherr.WrapError(err, "Saving release job %s", job.Name)
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
|
-
return nil
|
103
|
-
}
|
104
|
-
|
105
|
-
// Compile populates blobstore with rendered jobs for a given deployment instance.
|
106
|
-
func (tc ConcreteTemplatesCompiler) Compile(job bpdep.Job, instance bpdep.Instance) error {
|
107
|
-
blobID, fingerprint, err := tc.compileJob(job, instance)
|
108
|
-
if err != nil {
|
109
|
-
return err
|
110
|
-
}
|
111
|
-
|
112
|
-
templateRec := bptplsrepo.TemplateRecord{
|
113
|
-
BlobID: blobID,
|
114
|
-
SHA1: fingerprint,
|
115
|
-
}
|
116
|
-
|
117
|
-
err = tc.templatesRepo.Save(job, instance, templateRec)
|
118
|
-
if err != nil {
|
119
|
-
return bosherr.WrapError(err, "Saving compiled templates record %s", job.Name)
|
120
|
-
}
|
121
|
-
|
122
|
-
return nil
|
123
|
-
}
|
124
|
-
|
125
|
-
// FindPackages returns list of packages required to run job template.
|
126
|
-
// List of packages is usually specified in release job metadata.
|
127
|
-
func (tc ConcreteTemplatesCompiler) FindPackages(template bpdep.Template) ([]bprel.Package, error) {
|
128
|
-
var pkgs []bprel.Package
|
129
|
-
|
130
|
-
releaseJobRec, found, err := tc.tplToJobRepo.FindByTemplate(template)
|
131
|
-
if err != nil {
|
132
|
-
return pkgs, bosherr.WrapError(err, "Finding release job record by template %s", template.Name)
|
133
|
-
} else if !found {
|
134
|
-
return pkgs, bosherr.New("Expected to find release job record by template %s", template.Name)
|
135
|
-
}
|
136
|
-
|
137
|
-
pkgs, found, err = tc.runPkgsRepo.Find(releaseJobRec)
|
138
|
-
if err != nil {
|
139
|
-
return pkgs, bosherr.WrapError(err, "Finding packages by release job record %v", releaseJobRec)
|
140
|
-
} else if !found {
|
141
|
-
return pkgs, bosherr.New("Expected to find packages by release job record %v", releaseJobRec)
|
142
|
-
}
|
143
|
-
|
144
|
-
return pkgs, nil
|
145
|
-
}
|
146
|
-
|
147
|
-
// FindRenderedArchive returns previously compiled template for a given instance.
|
148
|
-
// If such compiled template is not found, error is returned.
|
149
|
-
func (tc ConcreteTemplatesCompiler) FindRenderedArchive(job bpdep.Job, instance bpdep.Instance) (RenderedArchiveRecord, error) {
|
150
|
-
var renderedArchiveRec RenderedArchiveRecord
|
151
|
-
|
152
|
-
rec, found, err := tc.templatesRepo.Find(job, instance)
|
153
|
-
if err != nil {
|
154
|
-
return renderedArchiveRec, bosherr.WrapError(err, "Finding compiled templates %s", job.Name)
|
155
|
-
} else if !found {
|
156
|
-
return renderedArchiveRec, bosherr.New("Expected to find compiled templates %s", job.Name)
|
157
|
-
}
|
158
|
-
|
159
|
-
renderedArchiveRec.SHA1 = rec.SHA1
|
160
|
-
renderedArchiveRec.BlobID = rec.BlobID
|
161
|
-
|
162
|
-
return renderedArchiveRec, nil
|
163
|
-
}
|
164
|
-
|
165
|
-
// compileJob produces and saves rendered templates archive to a blobstore.
|
166
|
-
func (tc ConcreteTemplatesCompiler) compileJob(job bpdep.Job, instance bpdep.Instance) (string, string, error) {
|
167
|
-
jobReaders, err := tc.buildJobReaders(job)
|
168
|
-
if err != nil {
|
169
|
-
return "", "", bosherr.WrapError(err, "Building job readers")
|
170
|
-
}
|
171
|
-
|
172
|
-
var relJobs []bpreljob.Job
|
173
|
-
|
174
|
-
for _, jobReader := range jobReaders {
|
175
|
-
relJob, err := jobReader.tarReader.Read()
|
176
|
-
if err != nil {
|
177
|
-
return "", "", bosherr.WrapError(err, "Reading job")
|
178
|
-
}
|
179
|
-
|
180
|
-
defer jobReader.tarReader.Close()
|
181
|
-
|
182
|
-
err = tc.associatePackages(jobReader.rec, relJob)
|
183
|
-
if err != nil {
|
184
|
-
return "", "", bosherr.WrapError(err, "Preparing runtime dep packages")
|
185
|
-
}
|
186
|
-
|
187
|
-
relJobs = append(relJobs, relJob)
|
188
|
-
}
|
189
|
-
|
190
|
-
renderedArchivePath, err := tc.renderedArchivesCompiler.Compile(relJobs, instance)
|
191
|
-
if err != nil {
|
192
|
-
return "", "", bosherr.WrapError(err, "Compiling templates")
|
193
|
-
}
|
194
|
-
|
195
|
-
defer tc.renderedArchivesCompiler.CleanUp(renderedArchivePath)
|
196
|
-
|
197
|
-
blobID, fingerprint, err := tc.blobstore.Create(renderedArchivePath)
|
198
|
-
if err != nil {
|
199
|
-
return "", "", bosherr.WrapError(err, "Creating compiled templates")
|
200
|
-
}
|
201
|
-
|
202
|
-
return blobID, fingerprint, nil
|
203
|
-
}
|
204
|
-
|
205
|
-
type jobReader struct {
|
206
|
-
rec bpjobsrepo.ReleaseJobRecord
|
207
|
-
tarReader *bpreljob.TarReader
|
208
|
-
}
|
209
|
-
|
210
|
-
func (tc ConcreteTemplatesCompiler) buildJobReaders(job bpdep.Job) ([]jobReader, error) {
|
211
|
-
var readers []jobReader
|
212
|
-
|
213
|
-
for _, template := range job.Templates {
|
214
|
-
rec, found, err := tc.tplToJobRepo.FindByTemplate(template)
|
215
|
-
if err != nil {
|
216
|
-
return readers, bosherr.WrapError(err, "Finding dep-template -> release-job record %s", template.Name)
|
217
|
-
} else if !found {
|
218
|
-
return readers, bosherr.New("Expected to find dep-template -> release-job record %s", template.Name)
|
219
|
-
}
|
220
|
-
|
221
|
-
jobRec, found, err := tc.jobsRepo.FindByReleaseJob(rec)
|
222
|
-
if err != nil {
|
223
|
-
return readers, bosherr.WrapError(err, "Finding job source blob %s", template.Name)
|
224
|
-
} else if !found {
|
225
|
-
return readers, bosherr.New("Expected to find job source blob %s -- %s", template.Name, rec)
|
226
|
-
}
|
227
|
-
|
228
|
-
jobURL := fmt.Sprintf("blobstore:///%s?fingerprint=%s", jobRec.BlobID, jobRec.SHA1)
|
229
|
-
|
230
|
-
reader := jobReader{
|
231
|
-
rec: rec,
|
232
|
-
tarReader: tc.jobReaderFactory.NewTarReader(jobURL),
|
233
|
-
}
|
234
|
-
|
235
|
-
readers = append(readers, reader)
|
236
|
-
}
|
237
|
-
|
238
|
-
return readers, nil
|
239
|
-
}
|
240
|
-
|
241
|
-
func (tc ConcreteTemplatesCompiler) associatePackages(rec bpjobsrepo.ReleaseJobRecord, relJob bpreljob.Job) error {
|
242
|
-
_, found, err := tc.runPkgsRepo.Find(rec)
|
243
|
-
if err != nil {
|
244
|
-
return bosherr.WrapError(err, "Finding runtime deps for %s", rec)
|
245
|
-
}
|
246
|
-
|
247
|
-
if found {
|
248
|
-
return nil
|
249
|
-
}
|
250
|
-
|
251
|
-
// Find all packages in the same release,
|
252
|
-
// regardless if job previously was associated with packages
|
253
|
-
allPkgs, found, err := tc.runPkgsRepo.FindAll(rec)
|
254
|
-
if err != nil {
|
255
|
-
return bosherr.WrapError(err, "Finding rel-job -> rel-pkgs %s", rec)
|
256
|
-
} else if !found {
|
257
|
-
return bosherr.New("Expected to find rel-job -> rel-pkgs %s", rec)
|
258
|
-
}
|
259
|
-
|
260
|
-
var pkgs []bprel.Package
|
261
|
-
|
262
|
-
// From all packages, select packages that are used by the job
|
263
|
-
for _, pkg := range allPkgs {
|
264
|
-
for _, p := range relJob.Packages {
|
265
|
-
if pkg.Name == p.Name {
|
266
|
-
pkgs = append(pkgs, pkg)
|
267
|
-
break
|
268
|
-
}
|
269
|
-
}
|
270
|
-
}
|
271
|
-
|
272
|
-
// Return error if at least one depedency is missing
|
273
|
-
if len(pkgs) != len(relJob.Packages) {
|
274
|
-
return bosherr.New("Expected to find all release packages")
|
275
|
-
}
|
276
|
-
|
277
|
-
// Associate those packages with a job
|
278
|
-
err = tc.runPkgsRepo.Save(rec, pkgs)
|
279
|
-
if err != nil {
|
280
|
-
return bosherr.WrapError(err, "Saving job packages %s", rec)
|
281
|
-
}
|
282
|
-
|
283
|
-
return nil
|
284
|
-
}
|