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.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -6
  3. data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent-log +0 -0
  4. data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent-run +0 -0
  5. data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent.cert +0 -0
  6. data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent.json +0 -0
  7. data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/agent.key +0 -0
  8. data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/bosh-agent +0 -0
  9. data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/bosh-agent-rc +0 -0
  10. data/{lib/vagrant-bosh → bosh-provisioner}/assets/agent/bosh-blobstore-dav +0 -0
  11. data/bosh-provisioner/assets/bosh-provisioner +0 -0
  12. data/{lib/vagrant-bosh → bosh-provisioner}/assets/monit/monit +0 -0
  13. data/{lib/vagrant-bosh → bosh-provisioner}/assets/monit/monit-log +0 -0
  14. data/{lib/vagrant-bosh → bosh-provisioner}/assets/monit/monit-run +0 -0
  15. data/{lib/vagrant-bosh → bosh-provisioner}/assets/monit/monitrc +0 -0
  16. data/dev/Vagrantfile +1 -1
  17. data/dev/example-bosh-manifest.yml +12 -12
  18. data/lib/vagrant-bosh/bootstrapper.rb +6 -2
  19. data/lib/vagrant-bosh/config.rb +1 -1
  20. data/lib/vagrant-bosh/provisioner.rb +1 -1
  21. data/lib/vagrant-bosh/version.rb +1 -1
  22. data/vagrant-bosh.gemspec +3 -1
  23. metadata +20 -139
  24. data/go/.gitignore +0 -11
  25. data/go/bin/build +0 -10
  26. data/go/bin/build-linux-amd64 +0 -9
  27. data/go/bin/env +0 -13
  28. data/go/bin/go +0 -5
  29. data/go/bin/golint +0 -19
  30. data/go/bin/test +0 -37
  31. data/go/src/boshprovisioner/agent/client/client_interface.go +0 -73
  32. data/go/src/boshprovisioner/agent/client/fakes/fake_client.go +0 -81
  33. data/go/src/boshprovisioner/agent/client/http_client.go +0 -299
  34. data/go/src/boshprovisioner/agent/client/http_client_envelope.go +0 -107
  35. data/go/src/boshprovisioner/deployment/deployment.go +0 -221
  36. data/go/src/boshprovisioner/deployment/instance.go +0 -54
  37. data/go/src/boshprovisioner/deployment/manifest/deployment.go +0 -84
  38. data/go/src/boshprovisioner/deployment/manifest/ips.go +0 -23
  39. data/go/src/boshprovisioner/deployment/manifest/manifest.go +0 -143
  40. data/go/src/boshprovisioner/deployment/manifest/manifest_suite_test.go +0 -13
  41. data/go/src/boshprovisioner/deployment/manifest/manifest_test.go +0 -86
  42. data/go/src/boshprovisioner/deployment/manifest/syntax_validator.go +0 -186
  43. data/go/src/boshprovisioner/deployment/manifest/watch_time.go +0 -43
  44. data/go/src/boshprovisioner/deployment/manifest_reader.go +0 -46
  45. data/go/src/boshprovisioner/deployment/reader_factory.go +0 -25
  46. data/go/src/boshprovisioner/deployment/semantic_validator.go +0 -111
  47. data/go/src/boshprovisioner/downloader/blobstore_downloader.go +0 -55
  48. data/go/src/boshprovisioner/downloader/default_mux_downloader.go +0 -22
  49. data/go/src/boshprovisioner/downloader/downloader_interface.go +0 -6
  50. data/go/src/boshprovisioner/downloader/http_downloader.go +0 -53
  51. data/go/src/boshprovisioner/downloader/local_fs_downloader.go +0 -48
  52. data/go/src/boshprovisioner/downloader/mux_downloader.go +0 -69
  53. data/go/src/boshprovisioner/eventlog/log.go +0 -72
  54. data/go/src/boshprovisioner/eventlog/stage.go +0 -39
  55. data/go/src/boshprovisioner/eventlog/task.go +0 -58
  56. data/go/src/boshprovisioner/index/file_index.go +0 -289
  57. data/go/src/boshprovisioner/index/file_index_test.go +0 -296
  58. data/go/src/boshprovisioner/index/index_interface.go +0 -18
  59. data/go/src/boshprovisioner/index/index_suite_test.go +0 -13
  60. data/go/src/boshprovisioner/instance/instance.go +0 -43
  61. data/go/src/boshprovisioner/instance/instance_provisioner.go +0 -48
  62. data/go/src/boshprovisioner/instance/templatescompiler/concrete_templates_compiler.go +0 -284
  63. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erb_renderer.go +0 -117
  64. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/erbrenderer_suite_test.go +0 -13
  65. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties.go +0 -77
  66. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/render_properties_test.go +0 -193
  67. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context.go +0 -85
  68. data/go/src/boshprovisioner/instance/templatescompiler/erbrenderer/template_evaluation_context_rb.go +0 -155
  69. data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_jobs_repository.go +0 -86
  70. data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_runtime_packages_repository.go +0 -113
  71. data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/concrete_template_to_job_repository.go +0 -86
  72. data/go/src/boshprovisioner/instance/templatescompiler/jobsrepo/jobs_repository_interface.go +0 -49
  73. data/go/src/boshprovisioner/instance/templatescompiler/rendered_archives_compiler.go +0 -81
  74. data/go/src/boshprovisioner/instance/templatescompiler/templates_compiler_interface.go +0 -20
  75. data/go/src/boshprovisioner/instance/templatescompiler/templatesrepo/ct_repository.go +0 -54
  76. data/go/src/boshprovisioner/instance/templatescompiler/templatesrepo/templates_repository_interface.go +0 -16
  77. data/go/src/boshprovisioner/instance/updater/applier/applier.go +0 -93
  78. data/go/src/boshprovisioner/instance/updater/applier/empty_state.go +0 -66
  79. data/go/src/boshprovisioner/instance/updater/applier/job_state.go +0 -178
  80. data/go/src/boshprovisioner/instance/updater/drainer.go +0 -72
  81. data/go/src/boshprovisioner/instance/updater/starter.go +0 -36
  82. data/go/src/boshprovisioner/instance/updater/stopper.go +0 -36
  83. data/go/src/boshprovisioner/instance/updater/updater.go +0 -97
  84. data/go/src/boshprovisioner/instance/updater/updater_factory.go +0 -80
  85. data/go/src/boshprovisioner/instance/updater/updater_suite_test.go +0 -13
  86. data/go/src/boshprovisioner/instance/updater/waiter.go +0 -77
  87. data/go/src/boshprovisioner/instance/updater/waiter_test.go +0 -147
  88. data/go/src/boshprovisioner/main/config.go +0 -95
  89. data/go/src/boshprovisioner/main/config_test.go +0 -67
  90. data/go/src/boshprovisioner/main/main.go +0 -185
  91. data/go/src/boshprovisioner/main/main_suite_test.go +0 -13
  92. data/go/src/boshprovisioner/main/repos_factory.go +0 -86
  93. data/go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/compiled_packages_repository_interface.go +0 -17
  94. data/go/src/boshprovisioner/packagescompiler/compiledpackagesrepo/concrete_compiled_packages_repository.go +0 -61
  95. data/go/src/boshprovisioner/packagescompiler/concrete_packages_compiler.go +0 -179
  96. data/go/src/boshprovisioner/packagescompiler/concrete_packages_compiler_factory.go +0 -48
  97. data/go/src/boshprovisioner/packagescompiler/packages_compiler_interface.go +0 -20
  98. data/go/src/boshprovisioner/packagescompiler/packagesrepo/concrete_packages_repository.go +0 -65
  99. data/go/src/boshprovisioner/packagescompiler/packagesrepo/packages_repository_interface.go +0 -16
  100. data/go/src/boshprovisioner/provisioner/blobstore_config.go +0 -65
  101. data/go/src/boshprovisioner/provisioner/blobstore_provisioner.go +0 -38
  102. data/go/src/boshprovisioner/provisioner/deployment_provisioner_interface.go +0 -10
  103. data/go/src/boshprovisioner/provisioner/release_compiler.go +0 -95
  104. data/go/src/boshprovisioner/provisioner/single_configured_vm_provisioner.go +0 -124
  105. data/go/src/boshprovisioner/provisioner/single_non_configured_vm_provisioner.go +0 -40
  106. data/go/src/boshprovisioner/provisioner/single_vm_provisioner_factory.go +0 -68
  107. data/go/src/boshprovisioner/release/dir_reader.go +0 -146
  108. data/go/src/boshprovisioner/release/job/job.go +0 -86
  109. data/go/src/boshprovisioner/release/job/manifest/manifest.go +0 -79
  110. data/go/src/boshprovisioner/release/job/manifest/manifest_suite_test.go +0 -13
  111. data/go/src/boshprovisioner/release/job/manifest/manifest_test.go +0 -59
  112. data/go/src/boshprovisioner/release/job/manifest/syntax_validator.go +0 -43
  113. data/go/src/boshprovisioner/release/job/reader_factory.go +0 -34
  114. data/go/src/boshprovisioner/release/job/tar_reader.go +0 -133
  115. data/go/src/boshprovisioner/release/manifest/manifest.go +0 -120
  116. data/go/src/boshprovisioner/release/manifest/manifest_suite_test.go +0 -13
  117. data/go/src/boshprovisioner/release/manifest/manifest_test.go +0 -126
  118. data/go/src/boshprovisioner/release/manifest/syntax_validator.go +0 -134
  119. data/go/src/boshprovisioner/release/reader_factory.go +0 -45
  120. data/go/src/boshprovisioner/release/reader_interface.go +0 -6
  121. data/go/src/boshprovisioner/release/release.go +0 -144
  122. data/go/src/boshprovisioner/release/release_suite_test.go +0 -13
  123. data/go/src/boshprovisioner/release/release_test.go +0 -129
  124. data/go/src/boshprovisioner/release/tar_reader.go +0 -141
  125. data/go/src/boshprovisioner/tar/cmd_compressor.go +0 -68
  126. data/go/src/boshprovisioner/tar/cmd_extractor.go +0 -47
  127. data/go/src/boshprovisioner/tar/compressor_interface.go +0 -6
  128. data/go/src/boshprovisioner/tar/extractor_interface.go +0 -6
  129. data/go/src/boshprovisioner/util/possible_base64.go +0 -21
  130. data/go/src/boshprovisioner/util/string_keyed.go +0 -70
  131. data/go/src/boshprovisioner/vm/vagrant/agent_provisioner.go +0 -296
  132. data/go/src/boshprovisioner/vm/vagrant/asset_manager.go +0 -61
  133. data/go/src/boshprovisioner/vm/vagrant/configured_vm.go +0 -29
  134. data/go/src/boshprovisioner/vm/vagrant/deps_provisioner.go +0 -214
  135. data/go/src/boshprovisioner/vm/vagrant/monit_provisioner.go +0 -85
  136. data/go/src/boshprovisioner/vm/vagrant/non_configured_vm.go +0 -26
  137. data/go/src/boshprovisioner/vm/vagrant/runit_provisioner.go +0 -229
  138. data/go/src/boshprovisioner/vm/vagrant/simple_cmds.go +0 -54
  139. data/go/src/boshprovisioner/vm/vagrant/vcap_user_provisioner.go +0 -167
  140. data/go/src/boshprovisioner/vm/vagrant/vm_provisioner.go +0 -119
  141. data/go/src/boshprovisioner/vm/vagrant/vm_provisioner_factory.go +0 -101
  142. data/go/src/boshprovisioner/vm/vm_interface.go +0 -45
  143. 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,13 +0,0 @@
1
- package index_test
2
-
3
- import (
4
- . "github.com/onsi/ginkgo"
5
- . "github.com/onsi/gomega"
6
-
7
- "testing"
8
- )
9
-
10
- func TestIndex(t *testing.T) {
11
- RegisterFailHandler(Fail)
12
- RunSpecs(t, "Index Suite")
13
- }
@@ -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
- }