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,38 +0,0 @@
1
- package provisioner
2
-
3
- import (
4
- "os"
5
-
6
- boshlog "bosh/logger"
7
- boshsys "bosh/system"
8
- )
9
-
10
- type BlobstoreProvisioner struct {
11
- fs boshsys.FileSystem
12
- blobstoreConfig BlobstoreConfig
13
- logger boshlog.Logger
14
- }
15
-
16
- func NewBlobstoreProvisioner(
17
- fs boshsys.FileSystem,
18
- blobstoreConfig BlobstoreConfig,
19
- logger boshlog.Logger,
20
- ) BlobstoreProvisioner {
21
- return BlobstoreProvisioner{
22
- fs: fs,
23
- blobstoreConfig: blobstoreConfig,
24
- logger: logger,
25
- }
26
- }
27
-
28
- func (p BlobstoreProvisioner) Provision() error {
29
- blobstorePath := p.blobstoreConfig.LocalPath()
30
- if blobstorePath != "" {
31
- err := p.fs.MkdirAll(blobstorePath, os.ModeDir)
32
- if err != nil {
33
- return err
34
- }
35
- }
36
-
37
- return nil
38
- }
@@ -1,10 +0,0 @@
1
- package provisioner
2
-
3
- type DeploymentProvisioner interface {
4
- Provision() error
5
- }
6
-
7
- type DeploymentProvisionerConfig struct {
8
- // If manifest path is empty, release compilation and job provisioning will be skipped
9
- ManifestPath string `json:"manifest_path"`
10
- }
@@ -1,95 +0,0 @@
1
- package provisioner
2
-
3
- import (
4
- bosherr "bosh/errors"
5
- boshlog "bosh/logger"
6
-
7
- bpdep "boshprovisioner/deployment"
8
- bpeventlog "boshprovisioner/eventlog"
9
- bptplcomp "boshprovisioner/instance/templatescompiler"
10
- bppkgscomp "boshprovisioner/packagescompiler"
11
- bprel "boshprovisioner/release"
12
- bpvm "boshprovisioner/vm"
13
- )
14
-
15
- const releaseCompilerLogTag = "ReleaseCompiler"
16
-
17
- type ReleaseCompiler struct {
18
- releaseReaderFactory bprel.ReaderFactory
19
-
20
- packagesCompilerFactory bppkgscomp.ConcretePackagesCompilerFactory
21
- templatesCompiler bptplcomp.TemplatesCompiler
22
-
23
- vmProvisioner bpvm.VMProvisioner
24
-
25
- eventLog bpeventlog.Log
26
- logger boshlog.Logger
27
- }
28
-
29
- func NewReleaseCompiler(
30
- releaseReaderFactory bprel.ReaderFactory,
31
- packagesCompilerFactory bppkgscomp.ConcretePackagesCompilerFactory,
32
- templatesCompiler bptplcomp.TemplatesCompiler,
33
- vmProvisioner bpvm.VMProvisioner,
34
- eventLog bpeventlog.Log,
35
- logger boshlog.Logger,
36
- ) ReleaseCompiler {
37
- return ReleaseCompiler{
38
- releaseReaderFactory: releaseReaderFactory,
39
-
40
- packagesCompilerFactory: packagesCompilerFactory,
41
- templatesCompiler: templatesCompiler,
42
-
43
- vmProvisioner: vmProvisioner,
44
-
45
- eventLog: eventLog,
46
- logger: logger,
47
- }
48
- }
49
-
50
- func (p ReleaseCompiler) Compile(instance bpdep.Instance, depReleases []bpdep.Release) error {
51
- vm, err := p.vmProvisioner.Provision(instance)
52
- if err != nil {
53
- return bosherr.WrapError(err, "Provisioning VM")
54
- }
55
-
56
- defer vm.Deprovision()
57
-
58
- pkgsCompiler := p.packagesCompilerFactory.NewCompiler(vm.AgentClient())
59
-
60
- for _, depRelease := range depReleases {
61
- err := p.compileRelease(pkgsCompiler, depRelease)
62
- if err != nil {
63
- return bosherr.WrapError(err, "Release %s", depRelease.Name)
64
- }
65
- }
66
-
67
- return nil
68
- }
69
-
70
- func (p ReleaseCompiler) compileRelease(pkgsCompiler bppkgscomp.PackagesCompiler, depRelease bpdep.Release) error {
71
- relReader := p.releaseReaderFactory.NewReader(
72
- depRelease.Name,
73
- depRelease.Version,
74
- depRelease.URL,
75
- )
76
-
77
- relRelease, err := relReader.Read()
78
- if err != nil {
79
- return bosherr.WrapError(err, "Reading release")
80
- }
81
-
82
- defer relReader.Close()
83
-
84
- err = pkgsCompiler.Compile(relRelease)
85
- if err != nil {
86
- return bosherr.WrapError(err, "Compiling release packages")
87
- }
88
-
89
- err = p.templatesCompiler.Precompile(relRelease)
90
- if err != nil {
91
- return bosherr.WrapError(err, "Precompiling release job templates")
92
- }
93
-
94
- return nil
95
- }
@@ -1,124 +0,0 @@
1
- package provisioner
2
-
3
- import (
4
- bosherr "bosh/errors"
5
- boshlog "bosh/logger"
6
-
7
- bpdep "boshprovisioner/deployment"
8
- bpeventlog "boshprovisioner/eventlog"
9
- bpinstance "boshprovisioner/instance"
10
- bpvm "boshprovisioner/vm"
11
- )
12
-
13
- // SingleConfiguredVMProvisioner interprets deployment manifest and
14
- // configures 1 VM just like regular BOSH VM.
15
- type SingleConfiguredVMProvisioner struct {
16
- manifestPath string
17
- deploymentReaderFactory bpdep.ReaderFactory
18
-
19
- vmProvisioner bpvm.VMProvisioner
20
- releaseCompiler ReleaseCompiler
21
- instanceProvisioner bpinstance.InstanceProvisioner
22
-
23
- eventLog bpeventlog.Log
24
- logger boshlog.Logger
25
- }
26
-
27
- func NewSingleConfiguredVMProvisioner(
28
- manifestPath string,
29
- deploymentReaderFactory bpdep.ReaderFactory,
30
- vmProvisioner bpvm.VMProvisioner,
31
- releaseCompiler ReleaseCompiler,
32
- instanceProvisioner bpinstance.InstanceProvisioner,
33
- eventLog bpeventlog.Log,
34
- logger boshlog.Logger,
35
- ) SingleConfiguredVMProvisioner {
36
- return SingleConfiguredVMProvisioner{
37
- manifestPath: manifestPath,
38
- deploymentReaderFactory: deploymentReaderFactory,
39
-
40
- vmProvisioner: vmProvisioner,
41
- releaseCompiler: releaseCompiler,
42
- instanceProvisioner: instanceProvisioner,
43
-
44
- eventLog: eventLog,
45
- logger: logger,
46
- }
47
- }
48
-
49
- func (p SingleConfiguredVMProvisioner) Provision() error {
50
- stage := p.eventLog.BeginStage("Setting up instance", 2)
51
-
52
- reader := p.deploymentReaderFactory.NewManifestReader(p.manifestPath)
53
-
54
- task := stage.BeginTask("Reading deployment manifest")
55
-
56
- deployment, err := reader.Read()
57
- if task.End(err) != nil {
58
- return bosherr.WrapError(err, "Reading deployment")
59
- }
60
-
61
- task = stage.BeginTask("Validating instance")
62
-
63
- job, depInstance, err := p.validateInstance(deployment)
64
- if task.End(err) != nil {
65
- return bosherr.WrapError(err, "Validating instance")
66
- }
67
-
68
- // todo VM was possibly provisioned last time
69
- vm, err := p.vmProvisioner.Provision(depInstance)
70
- if err != nil {
71
- return bosherr.WrapError(err, "Provisioning VM")
72
- }
73
-
74
- instance := p.instanceProvisioner.PreviouslyProvisioned(vm.AgentClient(), job, depInstance)
75
-
76
- err = instance.Deprovision()
77
- if err != nil {
78
- return bosherr.WrapError(err, "Deprovisioning instance")
79
- }
80
-
81
- // Deprovision VM before using release compiler since it will try to provision its own VM
82
- err = vm.Deprovision()
83
- if err != nil {
84
- return bosherr.WrapError(err, "Deprovisioning VM")
85
- }
86
-
87
- err = p.releaseCompiler.Compile(deployment.CompilationInstance, deployment.Releases)
88
- if err != nil {
89
- return bosherr.WrapError(err, "Compiling releases")
90
- }
91
-
92
- vm, err = p.vmProvisioner.Provision(depInstance)
93
- if err != nil {
94
- return bosherr.WrapError(err, "Provisioning VM")
95
- }
96
-
97
- _, err = p.instanceProvisioner.Provision(vm.AgentClient(), job, depInstance)
98
- if err != nil {
99
- return bosherr.WrapError(err, "Starting instance")
100
- }
101
-
102
- // Do not Deprovision() VM to keep instance running
103
-
104
- return nil
105
- }
106
-
107
- func (p SingleConfiguredVMProvisioner) validateInstance(deployment bpdep.Deployment) (bpdep.Job, bpdep.Instance, error) {
108
- var job bpdep.Job
109
- var instance bpdep.Instance
110
-
111
- if len(deployment.Jobs) > 1 {
112
- return job, instance, bosherr.New("Must have exactly 1 job")
113
- }
114
-
115
- job = deployment.Jobs[0]
116
-
117
- if len(job.Instances) != 1 {
118
- return job, instance, bosherr.New("Must have exactly 1 instance")
119
- }
120
-
121
- instance = job.Instances[0]
122
-
123
- return job, instance, nil
124
- }
@@ -1,40 +0,0 @@
1
- package provisioner
2
-
3
- import (
4
- bosherr "bosh/errors"
5
- boshlog "bosh/logger"
6
-
7
- bpeventlog "boshprovisioner/eventlog"
8
- bpvm "boshprovisioner/vm"
9
- )
10
-
11
- // SingleNonConfiguredVMProvisioner configures 1 VM as a regular empty BOSH VM.
12
- type SingleNonConfiguredVMProvisioner struct {
13
- vmProvisioner bpvm.VMProvisioner
14
- eventLog bpeventlog.Log
15
- logger boshlog.Logger
16
- }
17
-
18
- func NewSingleNonConfiguredVMProvisioner(
19
- vmProvisioner bpvm.VMProvisioner,
20
- eventLog bpeventlog.Log,
21
- logger boshlog.Logger,
22
- ) SingleNonConfiguredVMProvisioner {
23
- return SingleNonConfiguredVMProvisioner{
24
- vmProvisioner: vmProvisioner,
25
- eventLog: eventLog,
26
- logger: logger,
27
- }
28
- }
29
-
30
- func (p SingleNonConfiguredVMProvisioner) Provision() error {
31
- // todo VM was possibly provisioned last time
32
- _, err := p.vmProvisioner.ProvisionNonConfigured()
33
- if err != nil {
34
- return bosherr.WrapError(err, "Provisioning VM")
35
- }
36
-
37
- // Do not Deprovision() VM to keep instance running
38
-
39
- return nil
40
- }
@@ -1,68 +0,0 @@
1
- package provisioner
2
-
3
- import (
4
- boshlog "bosh/logger"
5
-
6
- bpdep "boshprovisioner/deployment"
7
- bpeventlog "boshprovisioner/eventlog"
8
- bpinstance "boshprovisioner/instance"
9
- bpvm "boshprovisioner/vm"
10
- )
11
-
12
- type SingleVMProvisionerFactory struct {
13
- deploymentReaderFactory bpdep.ReaderFactory
14
- deploymentProvisionerConfig DeploymentProvisionerConfig
15
-
16
- vmProvisioner bpvm.VMProvisioner
17
- releaseCompiler ReleaseCompiler
18
- instanceProvisioner bpinstance.InstanceProvisioner
19
-
20
- eventLog bpeventlog.Log
21
- logger boshlog.Logger
22
- }
23
-
24
- func NewSingleVMProvisionerFactory(
25
- deploymentReaderFactory bpdep.ReaderFactory,
26
- deploymentProvisionerConfig DeploymentProvisionerConfig,
27
- vmProvisioner bpvm.VMProvisioner,
28
- releaseCompiler ReleaseCompiler,
29
- instanceProvisioner bpinstance.InstanceProvisioner,
30
- eventLog bpeventlog.Log,
31
- logger boshlog.Logger,
32
- ) SingleVMProvisionerFactory {
33
- return SingleVMProvisionerFactory{
34
- deploymentReaderFactory: deploymentReaderFactory,
35
- deploymentProvisionerConfig: deploymentProvisionerConfig,
36
-
37
- vmProvisioner: vmProvisioner,
38
- releaseCompiler: releaseCompiler,
39
- instanceProvisioner: instanceProvisioner,
40
-
41
- eventLog: eventLog,
42
- logger: logger,
43
- }
44
- }
45
-
46
- func (f SingleVMProvisionerFactory) NewSingleVMProvisioner() DeploymentProvisioner {
47
- var prov DeploymentProvisioner
48
-
49
- if len(f.deploymentProvisionerConfig.ManifestPath) > 0 {
50
- prov = NewSingleConfiguredVMProvisioner(
51
- f.deploymentProvisionerConfig.ManifestPath,
52
- f.deploymentReaderFactory,
53
- f.vmProvisioner,
54
- f.releaseCompiler,
55
- f.instanceProvisioner,
56
- f.eventLog,
57
- f.logger,
58
- )
59
- } else {
60
- prov = NewSingleNonConfiguredVMProvisioner(
61
- f.vmProvisioner,
62
- f.eventLog,
63
- f.logger,
64
- )
65
- }
66
-
67
- return prov
68
- }
@@ -1,146 +0,0 @@
1
- package release
2
-
3
- import (
4
- "path/filepath"
5
-
6
- bosherr "bosh/errors"
7
- boshlog "bosh/logger"
8
- boshsys "bosh/system"
9
-
10
- bprelman "boshprovisioner/release/manifest"
11
- )
12
-
13
- const dirReaderLogTag = "DirReader"
14
-
15
- type DirReader struct {
16
- releaseName string // e.g. room101
17
- releaseVersion string // e.g. 0+dev.16
18
- dir string
19
-
20
- fs boshsys.FileSystem
21
- logger boshlog.Logger
22
- }
23
-
24
- func NewDirReader(
25
- releaseName string,
26
- releaseVersion string,
27
- dir string,
28
- fs boshsys.FileSystem,
29
- logger boshlog.Logger,
30
- ) DirReader {
31
- return DirReader{
32
- releaseName: releaseName,
33
- releaseVersion: releaseVersion,
34
- dir: dir,
35
-
36
- fs: fs,
37
- logger: logger,
38
- }
39
- }
40
-
41
- func (r DirReader) Read() (Release, error) {
42
- var release Release
43
-
44
- // e.g. room101-0+dev.16.yml
45
- manifestFileName := r.releaseName + "-" + r.releaseVersion + ".yml"
46
-
47
- manifestPath := filepath.Join(r.dir, "dev_releases", manifestFileName)
48
-
49
- manifest, err := bprelman.NewManifestFromPath(manifestPath, r.fs)
50
- if err != nil {
51
- closeErr := r.Close()
52
- if closeErr != nil {
53
- r.logger.Debug(dirReaderLogTag,
54
- "Failed to close release %v", closeErr)
55
- }
56
-
57
- return release, bosherr.WrapError(err, "Building manifest")
58
- }
59
-
60
- r.logger.Debug(dirReaderLogTag, "Done building manifest %#v", manifest)
61
-
62
- release.populateFromManifest(manifest)
63
-
64
- r.populateReleaseTarPaths(&release)
65
-
66
- return release, nil
67
- }
68
-
69
- func (r DirReader) Close() error {
70
- // Caller owns release directory; hence, nothing to clean up
71
- return nil
72
- }
73
-
74
- // populateReleaseTarPaths sets TarPath for each job/package in the release.
75
- func (r DirReader) populateReleaseTarPaths(release *Release) {
76
- devBuilds := filepath.Join(r.dir, ".dev_builds")
77
- finalBuilds := filepath.Join(r.dir, ".final_builds")
78
-
79
- for i, job := range release.Jobs {
80
- fileName := job.Fingerprint + ".tgz"
81
-
82
- devPath := filepath.Join(devBuilds, "jobs", job.Name, fileName)
83
- finalPath := filepath.Join(finalBuilds, "jobs", job.Name, fileName)
84
-
85
- release.Jobs[i].TarPath = r.pathThatExistsOrEmpty(devPath, finalPath)
86
- }
87
-
88
- for _, pkg := range release.Packages {
89
- fileName := pkg.Fingerprint + ".tgz"
90
-
91
- devPath := filepath.Join(devBuilds, "packages", pkg.Name, fileName)
92
- finalPath := filepath.Join(finalBuilds, "packages", pkg.Name, fileName)
93
-
94
- pkg.TarPath = r.pathThatExistsOrEmpty(devPath, finalPath)
95
- }
96
- }
97
-
98
- // pathThatExists returns first path that exists on the file system.
99
- func (r DirReader) pathThatExistsOrEmpty(firstPath, secondPath string) string {
100
- switch {
101
- case r.fs.FileExists(firstPath):
102
- return firstPath
103
- case r.fs.FileExists(secondPath):
104
- return secondPath
105
- default:
106
- return ""
107
- }
108
- }
109
-
110
- /*
111
- Example of BOSH release director with created dev releases:
112
-
113
- $ tree ~/Downloads/room101-release
114
- ~/Downloads/room101-release
115
- ├── .dev_builds/
116
- │ ├── jobs
117
- │ │   ├── warden
118
- │ │   │   ├── 2a2b0559a97f869274602ffed008827cd66d15c3.tgz
119
- │ │   │   └── index.yml
120
- │ │   └── winston
121
- │ │   ├── 98facd269cd8096a9b0ad354cbb5f0fc4265006f.tgz
122
- │ │   └── index.yml
123
- │ └── packages
124
- │ ├── aufs
125
- │ │   ├── cc5b6bf395c60d2aba6e0bc1ceeb613e7aadb52b.tgz
126
- │ │   └── index.yml
127
- │ ├── golang_1.2
128
- │ │   ├── ac825cab297fba938bec25c83f4a5780f88cdc92.tgz
129
- │ │   └── index.yml
130
- │ ├── iptables
131
- │ │   ├── 7226d311e90f49b05287e79f339581a1de9ea82e.tgz
132
- │ │   └── index.yml
133
- │ ├── pid_utils
134
- │ │   ├── de523512921338bac845ea7230e30b4307f842e7.tgz
135
- │ │   └── index.yml
136
- │ ├── warden-linux
137
- │ │   ├── 3f90138dae6c92c3e4595742ab6a513560e32a4c.tgz
138
- │ │   └── index.yml
139
- │ └── winston
140
- │ ├── 69fcbe3ef485a7f9d7c8efa6f18a74a0cffcb213.tgz
141
- │ └── index.yml
142
- └── dev_releases
143
-    ├── index.yml
144
-    ├── room101-0+dev.1.yml
145
-    └── room101-0+dev.2.yml
146
- */