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,72 +0,0 @@
1
- package updater
2
-
3
- import (
4
- "math"
5
- "time"
6
-
7
- boshaction "bosh/agent/action"
8
- boshas "bosh/agent/applier/applyspec"
9
- bosherr "bosh/errors"
10
- boshlog "bosh/logger"
11
-
12
- bpagclient "boshprovisioner/agent/client"
13
- )
14
-
15
- const drainerLogTag = "Drainer"
16
-
17
- type Drainer struct {
18
- agentClient bpagclient.Client
19
- logger boshlog.Logger
20
- }
21
-
22
- func NewDrainer(
23
- agentClient bpagclient.Client,
24
- logger boshlog.Logger,
25
- ) Drainer {
26
- return Drainer{
27
- agentClient: agentClient,
28
- logger: logger,
29
- }
30
- }
31
-
32
- func (d Drainer) Drain() error {
33
- d.logger.Debug(drainerLogTag, "Draining instance")
34
-
35
- drainType := boshaction.DrainTypeUpdate
36
- spec := boshas.V1ApplySpec{}
37
-
38
- drainTime, err := d.agentClient.Drain(drainType, spec)
39
- if err != nil {
40
- return bosherr.WrapError(err, "Sending drain update")
41
- }
42
-
43
- if drainTime > 0 {
44
- d.logger.Debug(drainerLogTag, "Waiting for static drain to finish")
45
- time.Sleep(time.Duration(drainTime) * time.Second)
46
- return nil
47
- }
48
-
49
- d.logger.Debug(drainerLogTag, "Waiting for dynamic drain to finish")
50
-
51
- return d.waitForDynamicDrain(drainTime)
52
- }
53
-
54
- func (d Drainer) waitForDynamicDrain(drainTime int) error {
55
- var err error
56
-
57
- for {
58
- waitTime := int(math.Abs(float64(drainTime)))
59
- if waitTime > 0 {
60
- time.Sleep(time.Duration(waitTime) * time.Second)
61
- }
62
-
63
- if drainTime >= 0 {
64
- return nil
65
- }
66
-
67
- drainTime, err = d.agentClient.Drain(boshaction.DrainTypeStatus)
68
- if err != nil {
69
- return bosherr.WrapError(err, "Sending drain status")
70
- }
71
- }
72
- }
@@ -1,36 +0,0 @@
1
- package updater
2
-
3
- import (
4
- bosherr "bosh/errors"
5
- boshlog "bosh/logger"
6
-
7
- bpagclient "boshprovisioner/agent/client"
8
- )
9
-
10
- const starterLogTag = "Starter"
11
-
12
- type Starter struct {
13
- agentClient bpagclient.Client
14
- logger boshlog.Logger
15
- }
16
-
17
- func NewStarter(
18
- agentClient bpagclient.Client,
19
- logger boshlog.Logger,
20
- ) Starter {
21
- return Starter{
22
- agentClient: agentClient,
23
- logger: logger,
24
- }
25
- }
26
-
27
- func (s Starter) Start() error {
28
- s.logger.Debug(starterLogTag, "Starting instance")
29
-
30
- _, err := s.agentClient.Start()
31
- if err != nil {
32
- return bosherr.WrapError(err, "Starting")
33
- }
34
-
35
- return nil
36
- }
@@ -1,36 +0,0 @@
1
- package updater
2
-
3
- import (
4
- bosherr "bosh/errors"
5
- boshlog "bosh/logger"
6
-
7
- bpagclient "boshprovisioner/agent/client"
8
- )
9
-
10
- const stopperLogTag = "Stopper"
11
-
12
- type Stopper struct {
13
- agentClient bpagclient.Client
14
- logger boshlog.Logger
15
- }
16
-
17
- func NewStopper(
18
- agentClient bpagclient.Client,
19
- logger boshlog.Logger,
20
- ) Stopper {
21
- return Stopper{
22
- agentClient: agentClient,
23
- logger: logger,
24
- }
25
- }
26
-
27
- func (s Stopper) Stop() error {
28
- s.logger.Debug(stopperLogTag, "Stopping instance")
29
-
30
- _, err := s.agentClient.Stop()
31
- if err != nil {
32
- return bosherr.WrapError(err, "Stopping")
33
- }
34
-
35
- return nil
36
- }
@@ -1,97 +0,0 @@
1
- package updater
2
-
3
- import (
4
- "fmt"
5
-
6
- bosherr "bosh/errors"
7
- boshlog "bosh/logger"
8
-
9
- bpeventlog "boshprovisioner/eventlog"
10
- bpapplier "boshprovisioner/instance/updater/applier"
11
- )
12
-
13
- const updaterLogTag = "Updater"
14
-
15
- type Updater struct {
16
- instanceDesc string
17
-
18
- drainer Drainer
19
- stopper Stopper
20
- applier bpapplier.Applier
21
- starter Starter
22
- waiter Waiter
23
-
24
- eventLog bpeventlog.Log
25
- logger boshlog.Logger
26
- }
27
-
28
- func NewUpdater(
29
- instanceDesc string,
30
- drainer Drainer,
31
- stopper Stopper,
32
- applier bpapplier.Applier,
33
- starter Starter,
34
- waiter Waiter,
35
- eventLog bpeventlog.Log,
36
- logger boshlog.Logger,
37
- ) Updater {
38
- return Updater{
39
- instanceDesc: instanceDesc,
40
-
41
- drainer: drainer,
42
- stopper: stopper,
43
- applier: applier,
44
- starter: starter,
45
- waiter: waiter,
46
-
47
- eventLog: eventLog,
48
- logger: logger,
49
- }
50
- }
51
-
52
- func (u Updater) SetUp() error {
53
- stage := u.eventLog.BeginStage(fmt.Sprintf("Setting up instance %s", u.instanceDesc), 3)
54
-
55
- task := stage.BeginTask("Applying")
56
-
57
- err := task.End(u.applier.Apply())
58
- if err != nil {
59
- return bosherr.WrapError(err, "Applying")
60
- }
61
-
62
- task = stage.BeginTask("Starting")
63
-
64
- err = task.End(u.starter.Start())
65
- if err != nil {
66
- return bosherr.WrapError(err, "Starting")
67
- }
68
-
69
- task = stage.BeginTask("Waiting")
70
-
71
- err = task.End(u.waiter.Wait())
72
- if err != nil {
73
- return bosherr.WrapError(err, "Waiting")
74
- }
75
-
76
- return nil
77
- }
78
-
79
- func (u Updater) TearDown() error {
80
- stage := u.eventLog.BeginStage(fmt.Sprintf("Tearing down instance %s", u.instanceDesc), 2)
81
-
82
- task := stage.BeginTask("Draining")
83
-
84
- err := task.End(u.drainer.Drain())
85
- if err != nil {
86
- return bosherr.WrapError(err, "Draining")
87
- }
88
-
89
- task = stage.BeginTask("Stopping")
90
-
91
- err = task.End(u.stopper.Stop())
92
- if err != nil {
93
- return bosherr.WrapError(err, "Stopping")
94
- }
95
-
96
- return nil
97
- }
@@ -1,80 +0,0 @@
1
- package updater
2
-
3
- import (
4
- "fmt"
5
- "time"
6
-
7
- boshlog "bosh/logger"
8
-
9
- bpagclient "boshprovisioner/agent/client"
10
- bpdep "boshprovisioner/deployment"
11
- bpeventlog "boshprovisioner/eventlog"
12
- bptplcomp "boshprovisioner/instance/templatescompiler"
13
- bpapplier "boshprovisioner/instance/updater/applier"
14
- bppkgscomp "boshprovisioner/packagescompiler"
15
- )
16
-
17
- type UpdaterFactory struct {
18
- templatesCompiler bptplcomp.TemplatesCompiler
19
- packagesCompilerFactory bppkgscomp.ConcretePackagesCompilerFactory
20
-
21
- eventLog bpeventlog.Log
22
- logger boshlog.Logger
23
- }
24
-
25
- func NewUpdaterFactory(
26
- templatesCompiler bptplcomp.TemplatesCompiler,
27
- packagesCompilerFactory bppkgscomp.ConcretePackagesCompilerFactory,
28
- eventLog bpeventlog.Log,
29
- logger boshlog.Logger,
30
- ) UpdaterFactory {
31
- return UpdaterFactory{
32
- templatesCompiler: templatesCompiler,
33
- packagesCompilerFactory: packagesCompilerFactory,
34
-
35
- eventLog: eventLog,
36
- logger: logger,
37
- }
38
- }
39
-
40
- func (f UpdaterFactory) NewUpdater(
41
- agentClient bpagclient.Client,
42
- depJob bpdep.Job,
43
- instance bpdep.Instance,
44
- ) Updater {
45
- drainer := NewDrainer(agentClient, f.logger)
46
-
47
- stopper := NewStopper(agentClient, f.logger)
48
-
49
- applier := bpapplier.NewApplier(
50
- depJob,
51
- instance,
52
- f.templatesCompiler,
53
- f.packagesCompilerFactory.NewCompiler(agentClient),
54
- agentClient,
55
- f.logger,
56
- )
57
-
58
- starter := NewStarter(agentClient, f.logger)
59
-
60
- waiter := NewWaiter(
61
- instance.WatchTime.Start(),
62
- instance.WatchTime.End(),
63
- time.Sleep,
64
- agentClient,
65
- f.logger,
66
- )
67
-
68
- updater := NewUpdater(
69
- fmt.Sprintf("%s/%d", instance.JobName, instance.Index),
70
- drainer,
71
- stopper,
72
- applier,
73
- starter,
74
- waiter,
75
- f.eventLog,
76
- f.logger,
77
- )
78
-
79
- return updater
80
- }
@@ -1,13 +0,0 @@
1
- package updater_test
2
-
3
- import (
4
- . "github.com/onsi/ginkgo"
5
- . "github.com/onsi/gomega"
6
-
7
- "testing"
8
- )
9
-
10
- func TestUpdater(t *testing.T) {
11
- RegisterFailHandler(Fail)
12
- RunSpecs(t, "Updater Suite")
13
- }
@@ -1,77 +0,0 @@
1
- package updater
2
-
3
- import (
4
- "time"
5
-
6
- bosherr "bosh/errors"
7
- boshlog "bosh/logger"
8
-
9
- bpagclient "boshprovisioner/agent/client"
10
- )
11
-
12
- const waiterLogTag = "Waiter"
13
-
14
- var (
15
- ErrNotRunning = bosherr.New("Instance did not reach running state")
16
- )
17
-
18
- type Waiter struct {
19
- watchSchedule []time.Duration
20
- sleepFunc SleepFunc
21
- agentClient bpagclient.Client
22
- logger boshlog.Logger
23
- }
24
-
25
- type SleepFunc func(time.Duration)
26
-
27
- func NewWaiter(
28
- startWatchTime int,
29
- endWatchTime int,
30
- sleepFunc SleepFunc,
31
- agentClient bpagclient.Client,
32
- logger boshlog.Logger,
33
- ) Waiter {
34
- return Waiter{
35
- watchSchedule: buildWatchSchedule(startWatchTime, endWatchTime),
36
- sleepFunc: sleepFunc,
37
- agentClient: agentClient,
38
- logger: logger,
39
- }
40
- }
41
-
42
- // Wait waits for an instance to reach running state.
43
- // It polls agent based on a watch schedule and inspects its job state.
44
- func (w Waiter) Wait() error {
45
- w.logger.Debug(waiterLogTag, "Waiting for instance to reach running state")
46
- w.logger.Debug(waiterLogTag, "Using schedule %v", w.watchSchedule)
47
-
48
- for _, timeGap := range w.watchSchedule {
49
- w.logger.Debug(waiterLogTag, "Sleeping for %v", timeGap)
50
- w.sleepFunc(timeGap)
51
-
52
- state, err := w.agentClient.GetState()
53
- if err != nil {
54
- return bosherr.WrapError(err, "Sending get_state")
55
- }
56
-
57
- // todo stopped state
58
- if state.JobState == "running" {
59
- return nil
60
- }
61
- }
62
-
63
- return ErrNotRunning
64
- }
65
-
66
- // buildWatchSchedule returns list of millisecond interval
67
- // at which instance should be checked for its running state.
68
- // ([3000, 1000, 1000] =~ wait for 3000ms, then 1000ms, and 1000ms again)
69
- func buildWatchSchedule(start, end int) []time.Duration {
70
- timeGaps := []time.Duration{time.Duration(start) * time.Millisecond}
71
-
72
- for total := start; total < end; total += 1000 {
73
- timeGaps = append(timeGaps, 1000*time.Millisecond)
74
- }
75
-
76
- return timeGaps
77
- }
@@ -1,147 +0,0 @@
1
- package updater_test
2
-
3
- import (
4
- "errors"
5
- "time"
6
-
7
- boshaction "bosh/agent/action"
8
- boshlog "bosh/logger"
9
- . "github.com/onsi/ginkgo"
10
- . "github.com/onsi/gomega"
11
-
12
- fakebpagclient "boshprovisioner/agent/client/fakes"
13
- . "boshprovisioner/instance/updater"
14
- )
15
-
16
- var _ = Describe("Waiter", func() {
17
- var (
18
- sleptTimes []time.Duration
19
- sleepFunc func(d time.Duration)
20
- agentClient *fakebpagclient.FakeClient
21
- logger boshlog.Logger
22
- waiter Waiter
23
- )
24
-
25
- const (
26
- firstTimeGap = 5000 * time.Millisecond
27
- subsequentTimeGap = 1000 * time.Millisecond
28
- )
29
-
30
- BeforeEach(func() {
31
- sleptTimes = []time.Duration{}
32
- sleepFunc = func(d time.Duration) { sleptTimes = append(sleptTimes, d) }
33
-
34
- agentClient = &fakebpagclient.FakeClient{}
35
- logger = boshlog.NewLogger(boshlog.LevelNone)
36
- waiter = NewWaiter(5000, 14000, sleepFunc, agentClient, logger)
37
- })
38
-
39
- Describe("Wait", func() {
40
- Context("when agent reports its state as 'running' after some time", func() {
41
- BeforeEach(func() {
42
- agentClient.GetStateStates = []boshaction.GetStateV1ApplySpec{
43
- boshaction.GetStateV1ApplySpec{JobState: "not-running"},
44
- boshaction.GetStateV1ApplySpec{JobState: "not-running"},
45
- boshaction.GetStateV1ApplySpec{JobState: "not-running"},
46
- boshaction.GetStateV1ApplySpec{JobState: "not-running"},
47
- boshaction.GetStateV1ApplySpec{JobState: "not-running"}, // 4
48
- boshaction.GetStateV1ApplySpec{JobState: "running"},
49
- }
50
- })
51
-
52
- It("waits for instance to become running checking every interval", func() {
53
- err := waiter.Wait()
54
- Expect(err).ToNot(HaveOccurred())
55
-
56
- Expect(sleptTimes).To(Equal([]time.Duration{
57
- firstTimeGap,
58
- subsequentTimeGap,
59
- subsequentTimeGap,
60
- subsequentTimeGap,
61
- subsequentTimeGap, // 4
62
- subsequentTimeGap,
63
- }))
64
- })
65
- })
66
-
67
- Context("when agent does not report its state as 'running' after some time", func() {
68
- BeforeEach(func() {
69
- agentClient.GetStateState = boshaction.GetStateV1ApplySpec{JobState: "not-running"}
70
- })
71
-
72
- It("return error after trying as many times as possible", func() {
73
- err := waiter.Wait()
74
- Expect(err).To(Equal(ErrNotRunning))
75
-
76
- Expect(sleptTimes).To(Equal([]time.Duration{
77
- firstTimeGap,
78
- subsequentTimeGap,
79
- subsequentTimeGap,
80
- subsequentTimeGap,
81
- subsequentTimeGap, // 4
82
- subsequentTimeGap,
83
- subsequentTimeGap,
84
- subsequentTimeGap,
85
- subsequentTimeGap, // 8
86
- subsequentTimeGap,
87
- }))
88
- })
89
- })
90
-
91
- Context("when agent state cannot be retrieved", func() {
92
- BeforeEach(func() {
93
- agentClient.GetStateErr = errors.New("fake-get-state-err")
94
- })
95
-
96
- It("returns error indicated failure to retrieve state", func() {
97
- err := waiter.Wait()
98
- Expect(err).To(HaveOccurred())
99
- Expect(err.Error()).To(ContainSubstring("fake-get-state-err"))
100
-
101
- Expect(sleptTimes).To(Equal([]time.Duration{firstTimeGap}))
102
- })
103
- })
104
-
105
- Context("when watch time is starts with a 0", func() {
106
- BeforeEach(func() {
107
- waiter = NewWaiter(0, 14000, sleepFunc, agentClient, logger)
108
- })
109
-
110
- BeforeEach(func() {
111
- agentClient.GetStateStates = []boshaction.GetStateV1ApplySpec{
112
- boshaction.GetStateV1ApplySpec{JobState: "not-running"},
113
- boshaction.GetStateV1ApplySpec{JobState: "running"},
114
- }
115
- })
116
-
117
- It("immediately checks if instance is running", func() {
118
- err := waiter.Wait()
119
- Expect(err).ToNot(HaveOccurred())
120
-
121
- Expect(sleptTimes).To(Equal([]time.Duration{
122
- 0 * time.Millisecond,
123
- subsequentTimeGap,
124
- }))
125
- })
126
- })
127
-
128
- Context("when watch time ends with a 0", func() {
129
- BeforeEach(func() {
130
- waiter = NewWaiter(0, 0, sleepFunc, agentClient, logger)
131
- })
132
-
133
- BeforeEach(func() {
134
- agentClient.GetStateStates = []boshaction.GetStateV1ApplySpec{
135
- boshaction.GetStateV1ApplySpec{JobState: "running"},
136
- }
137
- })
138
-
139
- It("immediately checks if instance is running", func() {
140
- err := waiter.Wait()
141
- Expect(err).ToNot(HaveOccurred())
142
-
143
- Expect(sleptTimes).To(Equal([]time.Duration{0 * time.Millisecond}))
144
- })
145
- })
146
- })
147
- })