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,81 +0,0 @@
1
- package templatescompiler
2
-
3
- import (
4
- "path/filepath"
5
-
6
- bosherr "bosh/errors"
7
- boshlog "bosh/logger"
8
- boshsys "bosh/system"
9
-
10
- bpdep "boshprovisioner/deployment"
11
- bperb "boshprovisioner/instance/templatescompiler/erbrenderer"
12
- bpreljob "boshprovisioner/release/job"
13
- bptar "boshprovisioner/tar"
14
- )
15
-
16
- type RenderedArchivesCompiler struct {
17
- fs boshsys.FileSystem
18
- runner boshsys.CmdRunner
19
- compressor bptar.Compressor
20
- logger boshlog.Logger
21
- }
22
-
23
- func NewRenderedArchivesCompiler(
24
- fs boshsys.FileSystem,
25
- runner boshsys.CmdRunner,
26
- compressor bptar.Compressor,
27
- logger boshlog.Logger,
28
- ) RenderedArchivesCompiler {
29
- return RenderedArchivesCompiler{
30
- fs: fs,
31
- runner: runner,
32
- compressor: compressor,
33
- logger: logger,
34
- }
35
- }
36
-
37
- // Compile takes release jobs and instance and produces rendered templates archive.
38
- // Rendered templates archive contains rendered job templates
39
- // that can be unpacked by a GoAgent to populate a VM.
40
- func (rac RenderedArchivesCompiler) Compile(relJobs []bpreljob.Job, instance bpdep.Instance) (string, error) {
41
- path, err := rac.fs.TempDir("instance-templatescompiler-RenderedArchivesCompiler")
42
- if err != nil {
43
- return "", bosherr.WrapError(err, "Creating compiled templates directory")
44
- }
45
-
46
- defer rac.fs.RemoveAll(path)
47
-
48
- for _, relJob := range relJobs {
49
- context := bperb.NewTemplateEvaluationContext(relJob, instance)
50
-
51
- renderer := bperb.NewERBRenderer(rac.fs, rac.runner, context, rac.logger)
52
-
53
- dstPath := filepath.Join(path, relJob.Name, "monit")
54
-
55
- err := renderer.Render(relJob.MonitTemplate.Path, dstPath)
56
- if err != nil {
57
- return "", bosherr.WrapError(err, "Rendering monit ERB")
58
- }
59
-
60
- for _, template := range relJob.Templates {
61
- dstPath := filepath.Join(path, relJob.Name, template.DstPathEnd)
62
-
63
- err := renderer.Render(template.Path, dstPath)
64
- if err != nil {
65
- return "", bosherr.WrapError(err, "Rendering %s ERB", template.DstPathEnd)
66
- }
67
- }
68
- }
69
-
70
- renderedArchivePath, err := rac.compressor.Compress(path)
71
- if err != nil {
72
- return "", bosherr.WrapError(err, "Compressing templates")
73
- }
74
-
75
- return renderedArchivePath, nil
76
- }
77
-
78
- // CleanUp deletes previously produced rendered templates archive.
79
- func (rac RenderedArchivesCompiler) CleanUp(path string) error {
80
- return rac.fs.RemoveAll(path)
81
- }
@@ -1,20 +0,0 @@
1
- package templatescompiler
2
-
3
- import (
4
- bpdep "boshprovisioner/deployment"
5
- bprel "boshprovisioner/release"
6
- )
7
-
8
- type RenderedArchiveRecord struct {
9
- SHA1 string
10
- BlobID string
11
- }
12
-
13
- type TemplatesCompiler interface {
14
- Precompile(bprel.Release) error
15
- Compile(bpdep.Job, bpdep.Instance) error
16
- FindRenderedArchive(bpdep.Job, bpdep.Instance) (RenderedArchiveRecord, error)
17
-
18
- // todo does it belong here?
19
- FindPackages(template bpdep.Template) ([]bprel.Package, error)
20
- }
@@ -1,54 +0,0 @@
1
- package templatesrepo
2
-
3
- import (
4
- bosherr "bosh/errors"
5
- boshlog "bosh/logger"
6
-
7
- bpdep "boshprovisioner/deployment"
8
- bpindex "boshprovisioner/index"
9
- )
10
-
11
- type CTRepository struct {
12
- index bpindex.Index
13
- logger boshlog.Logger
14
- }
15
-
16
- // todo fingerprint property changes
17
- type jobToTemplateKey struct {
18
- JobName string
19
- }
20
-
21
- func NewConcreteTemplatesRepository(
22
- index bpindex.Index,
23
- logger boshlog.Logger,
24
- ) CTRepository {
25
- return CTRepository{index: index, logger: logger}
26
- }
27
-
28
- func (tr CTRepository) Find(job bpdep.Job, instance bpdep.Instance) (TemplateRecord, bool, error) {
29
- var record TemplateRecord
30
-
31
- err := tr.index.Find(tr.templateKey(job), &record)
32
- if err != nil {
33
- if err == bpindex.ErrNotFound {
34
- return record, false, nil
35
- }
36
-
37
- return record, false, bosherr.WrapError(err, "Finding tempate")
38
- }
39
-
40
- return record, true, nil
41
- }
42
-
43
- func (tr CTRepository) Save(job bpdep.Job, instance bpdep.Instance, record TemplateRecord) error {
44
- err := tr.index.Save(tr.templateKey(job), record)
45
- if err != nil {
46
- return bosherr.WrapError(err, "Saving template")
47
- }
48
-
49
- return nil
50
- }
51
-
52
- func (tr CTRepository) templateKey(job bpdep.Job) jobToTemplateKey {
53
- return jobToTemplateKey{JobName: job.Name}
54
- }
@@ -1,16 +0,0 @@
1
- package templatesrepo
2
-
3
- import (
4
- bpdep "boshprovisioner/deployment"
5
- )
6
-
7
- type TemplateRecord struct {
8
- BlobID string
9
- SHA1 string
10
- }
11
-
12
- // TemplatesRepository maintains list of rendered templates as blobs
13
- type TemplatesRepository interface {
14
- Find(bpdep.Job, bpdep.Instance) (TemplateRecord, bool, error)
15
- Save(bpdep.Job, bpdep.Instance, TemplateRecord) error
16
- }
@@ -1,93 +0,0 @@
1
- package applier
2
-
3
- import (
4
- bosherr "bosh/errors"
5
- boshlog "bosh/logger"
6
-
7
- bpagclient "boshprovisioner/agent/client"
8
- bpdep "boshprovisioner/deployment"
9
- bptplcomp "boshprovisioner/instance/templatescompiler"
10
- bppkgscomp "boshprovisioner/packagescompiler"
11
- )
12
-
13
- const applierLogTag = "Applier"
14
-
15
- type Applier struct {
16
- depJob bpdep.Job
17
- instance bpdep.Instance
18
-
19
- templatesCompiler bptplcomp.TemplatesCompiler
20
- packagesCompiler bppkgscomp.PackagesCompiler
21
-
22
- agentClient bpagclient.Client
23
- logger boshlog.Logger
24
- }
25
-
26
- func NewApplier(
27
- depJob bpdep.Job,
28
- instance bpdep.Instance,
29
- templatesCompiler bptplcomp.TemplatesCompiler,
30
- packagesCompiler bppkgscomp.PackagesCompiler,
31
- agentClient bpagclient.Client,
32
- logger boshlog.Logger,
33
- ) Applier {
34
- return Applier{
35
- depJob: depJob,
36
- instance: instance,
37
-
38
- templatesCompiler: templatesCompiler,
39
- packagesCompiler: packagesCompiler,
40
-
41
- agentClient: agentClient,
42
- logger: logger,
43
- }
44
- }
45
-
46
- func (a Applier) Apply() error {
47
- a.logger.Debug(applierLogTag, "Applying empty state")
48
-
49
- emptyState := NewEmptyState(a.instance)
50
-
51
- _, err := a.agentClient.Apply(emptyState.AsApplySpec())
52
- if err != nil {
53
- return bosherr.WrapError(err, "Applying empty spec")
54
- }
55
-
56
- // Changes local copy of an instance
57
- a.instance.CurrentState, err = a.agentClient.GetState()
58
- if err != nil {
59
- return bosherr.WrapError(err, "Getting state")
60
- }
61
-
62
- a.logger.Debug(applierLogTag, "Finished applying empty state")
63
-
64
- // Recompile job templates since current instance state might have changed.
65
- // e.g. dynamic IP could now be set
66
- err = a.templatesCompiler.Compile(a.depJob, a.instance)
67
- if err != nil {
68
- return bosherr.WrapError(err, "Compiling templates %s", a.depJob.Name)
69
- }
70
-
71
- a.logger.Debug(applierLogTag, "Applying job state")
72
-
73
- jobState := NewJobState(
74
- a.depJob,
75
- a.instance,
76
- a.templatesCompiler,
77
- a.packagesCompiler,
78
- )
79
-
80
- jobApplySpec, err := jobState.AsApplySpec()
81
- if err != nil {
82
- return err
83
- }
84
-
85
- _, err = a.agentClient.Apply(jobApplySpec)
86
- if err != nil {
87
- return bosherr.WrapError(err, "Applying job spec")
88
- }
89
-
90
- a.logger.Debug(applierLogTag, "Finished applying job state")
91
-
92
- return nil
93
- }
@@ -1,66 +0,0 @@
1
- package applier
2
-
3
- import (
4
- boshas "bosh/agent/applier/applyspec"
5
-
6
- bpdep "boshprovisioner/deployment"
7
- )
8
-
9
- // EmptyState represents state for a VM
10
- // that should not be running any job templates.
11
- type EmptyState struct {
12
- instance bpdep.Instance
13
- }
14
-
15
- func NewEmptyState(instance bpdep.Instance) EmptyState {
16
- return EmptyState{instance: instance}
17
- }
18
-
19
- func (s EmptyState) AsApplySpec() boshas.V1ApplySpec {
20
- var spec boshas.V1ApplySpec
21
-
22
- jobName := s.instance.JobName
23
- jobIndex := s.instance.Index
24
-
25
- spec = boshas.V1ApplySpec{
26
- ConfigurationHash: "fake-configuration-hash", // todo
27
-
28
- Deployment: s.instance.DeploymentName,
29
-
30
- JobSpec: boshas.JobSpec{
31
- Name: &jobName,
32
- },
33
-
34
- Index: &jobIndex,
35
-
36
- NetworkSpecs: s.buildNetworkSpecs(),
37
-
38
- // todo find out whats here
39
- ResourcePoolSpecs: s.buildResourcePoolSpecs(),
40
- }
41
-
42
- return spec
43
- }
44
-
45
- func (s EmptyState) buildNetworkSpecs() map[string]boshas.NetworkSpec {
46
- specs := map[string]boshas.NetworkSpec{}
47
-
48
- for _, netAssoc := range s.instance.NetworkAssociations {
49
- netConfig := s.instance.NetworkConfigurationForNetworkAssociation(netAssoc)
50
-
51
- specs[netAssoc.Network.Name] = boshas.NetworkSpec{
52
- Fields: map[string]interface{}{
53
- "type": netAssoc.Network.Type,
54
- "ip": netConfig.IP,
55
- "netmask": netConfig.Netmask,
56
- "gateway": netConfig.Gateway,
57
- },
58
- }
59
- }
60
-
61
- return specs
62
- }
63
-
64
- func (s EmptyState) buildResourcePoolSpecs() map[string]interface{} {
65
- return map[string]interface{}{}
66
- }
@@ -1,178 +0,0 @@
1
- package applier
2
-
3
- import (
4
- boshas "bosh/agent/applier/applyspec"
5
- bosherr "bosh/errors"
6
-
7
- bpdep "boshprovisioner/deployment"
8
- bptplcomp "boshprovisioner/instance/templatescompiler"
9
- bppkgscomp "boshprovisioner/packagescompiler"
10
- )
11
-
12
- // JobState represents state for a VM
13
- // that should be running 1+ job templates.
14
- type JobState struct {
15
- depJob bpdep.Job
16
- instance bpdep.Instance
17
-
18
- templatesCompiler bptplcomp.TemplatesCompiler
19
- packagesCompiler bppkgscomp.PackagesCompiler
20
-
21
- emptyState EmptyState
22
- }
23
-
24
- func NewJobState(
25
- depJob bpdep.Job,
26
- instance bpdep.Instance,
27
- templatesCompiler bptplcomp.TemplatesCompiler,
28
- packagesCompiler bppkgscomp.PackagesCompiler,
29
- ) JobState {
30
- return JobState{
31
- depJob: depJob,
32
- instance: instance,
33
-
34
- templatesCompiler: templatesCompiler,
35
- packagesCompiler: packagesCompiler,
36
-
37
- emptyState: NewEmptyState(instance),
38
- }
39
- }
40
-
41
- func (s JobState) AsApplySpec() (boshas.V1ApplySpec, error) {
42
- var err error
43
-
44
- spec := s.emptyState.AsApplySpec()
45
-
46
- // JobTemplateSpecs list templates names; however,
47
- // actual template content would come from RenderedTemplatesArchiveSpec
48
- spec.JobSpec.JobTemplateSpecs = s.buildJobTemplateSpecs()
49
-
50
- // Package dependencies for all job templates
51
- spec.PackageSpecs, err = s.buildPackageSpecs()
52
- if err != nil {
53
- return spec, err
54
- }
55
-
56
- // Provides content for JobTemplateSpecs
57
- spec.RenderedTemplatesArchiveSpec, err = s.buildRenderedTemplatesArchive()
58
- if err != nil {
59
- return spec, err
60
- }
61
-
62
- return spec, nil
63
- }
64
-
65
- func (s JobState) buildJobTemplateSpecs() []boshas.JobTemplateSpec {
66
- var specs []boshas.JobTemplateSpec
67
-
68
- for _, template := range s.depJob.Templates {
69
- spec := boshas.JobTemplateSpec{
70
- Name: template.Name,
71
- Version: "fake-job-template-version", // todo
72
-
73
- Sha1: "", // deprecated
74
- BlobstoreID: "", // deprecated
75
- }
76
-
77
- specs = append(specs, spec)
78
- }
79
-
80
- return specs
81
- }
82
-
83
- func (s JobState) buildPackageSpecs() (map[string]boshas.PackageSpec, error) {
84
- specs := map[string]boshas.PackageSpec{}
85
-
86
- for _, template := range s.depJob.Templates {
87
- pkgs, err := s.templatesCompiler.FindPackages(template)
88
- if err != nil {
89
- return specs, bosherr.WrapError(err, "Finding packages for template %s", template.Name)
90
- }
91
-
92
- for _, pkg := range pkgs {
93
- rec, err := s.packagesCompiler.FindCompiledPackage(pkg)
94
- if err != nil {
95
- return specs, bosherr.WrapError(err, "Finding compiled package %s", pkg.Name)
96
- }
97
-
98
- specs[pkg.Name] = boshas.PackageSpec{
99
- Name: pkg.Name,
100
- Version: pkg.Version,
101
-
102
- Sha1: rec.SHA1,
103
- BlobstoreID: rec.BlobID,
104
- }
105
- }
106
- }
107
-
108
- return specs, nil
109
- }
110
-
111
- func (s JobState) buildRenderedTemplatesArchive() (boshas.RenderedTemplatesArchiveSpec, error) {
112
- var archive boshas.RenderedTemplatesArchiveSpec
113
-
114
- rec, err := s.templatesCompiler.FindRenderedArchive(s.depJob, s.instance)
115
- if err != nil {
116
- return archive, bosherr.WrapError(
117
- err, "Finding rendered archive %s", s.depJob.Name)
118
- }
119
-
120
- // todo uppercase Sha1
121
- archive.Sha1 = rec.SHA1
122
- archive.BlobstoreID = rec.BlobID
123
-
124
- return archive, nil
125
- }
126
-
127
- /*
128
- // Example apply spec
129
- {
130
- "job": {
131
- "name": "router",
132
- "template": "router template",
133
- "version": "1.0",
134
- "sha1": "router sha1",
135
- "blobstore_id": "router-blob-id-1",
136
- "templates": [{
137
- "name": "template 1",
138
- "version": "0.1",
139
- "sha1": "template 1 sha1",
140
- "blobstore_id": "template-blob-id-1"
141
- }]
142
- },
143
-
144
- "index": 1,
145
-
146
- "packages": {
147
- "package 1": {
148
- "name": "package 1",
149
- "version": "0.1",
150
- "sha1": "package 1 sha1",
151
- "blobstore_id": "package-blob-id-1"
152
- }
153
- },
154
-
155
- "networks": {
156
- "manual-net": {
157
- "ip": "xx.xx.xx.xx",
158
- "gateway": "xx.xx.xx.xx",
159
- "netmask": "xx.xx.xx.xx",
160
- "dns": ["xx.xx.xx.xx"],
161
- "default": ["dns", "gateway"],
162
- "cloud_properties": {"subnet": "subnet-xxxxxx"},
163
- "dns_record_name": "job-index.job-name.manual-net.deployment-name.bosh"
164
- },
165
- "vip-net": {
166
- "type": "vip",
167
- "ip": "xx.xx.xx.xx",
168
- "cloud_properties": {"security_groups": ["bosh"]},
169
- "dns_record_name": "job-index.job-name.vip-net.deployment-name.bosh"
170
- }
171
- },
172
-
173
- "rendered_templates_archive": {
174
- "sha1": "archive sha 1",
175
- "blobstore_id": "archive-blob-id-1"
176
- }
177
- }
178
- */