github.com/replicatedhq/ship@v0.55.0/pkg/lifecycle/helmIntro/helmIntro.go (about) 1 package helmIntro 2 3 import ( 4 "context" 5 "time" 6 7 "github.com/go-kit/kit/log" 8 "github.com/go-kit/kit/log/level" 9 "github.com/pkg/errors" 10 "github.com/replicatedhq/ship/pkg/api" 11 "github.com/replicatedhq/ship/pkg/lifecycle" 12 "github.com/replicatedhq/ship/pkg/lifecycle/daemon" 13 "github.com/replicatedhq/ship/pkg/lifecycle/daemon/daemontypes" 14 "github.com/spf13/afero" 15 "go.uber.org/dig" 16 ) 17 18 type HelmIntro struct { 19 Logger log.Logger 20 Daemon daemontypes.Daemon 21 } 22 23 type DaemonlessHelmIntro struct { 24 dig.In 25 Logger log.Logger 26 } 27 28 func (d *DaemonlessHelmIntro) Execute(context.Context, *api.Release, *api.HelmIntro) error { 29 level.Debug(d.Logger).Log("event", "DaemonlessHelmIntro.nothingToDo") 30 return nil 31 } 32 33 func NewHelmIntro( 34 fs afero.Afero, 35 logger log.Logger, 36 daemon daemontypes.Daemon, 37 ) lifecycle.HelmIntro { 38 39 return &HelmIntro{ 40 Logger: logger, 41 Daemon: daemon, 42 } 43 } 44 45 func (h *HelmIntro) Execute(ctx context.Context, release *api.Release, step *api.HelmIntro) error { 46 debug := level.Debug(log.With(h.Logger, "step.type", "helmIntro")) 47 48 daemonExitedChan := h.Daemon.EnsureStarted(ctx, release) 49 h.Daemon.PushHelmIntroStep( 50 ctx, 51 daemontypes.HelmIntro{ 52 IsUpdate: step.IsUpdate, 53 }, 54 daemon.HelmIntroActions(), 55 ) 56 debug.Log("event", "step.pushed") 57 58 return h.awaitContinue(ctx, daemonExitedChan) 59 } 60 61 func (h *HelmIntro) awaitContinue(ctx context.Context, daemonExitedChan chan error) error { 62 debug := level.Debug(log.With(h.Logger, "step.type", "helmIntro", "awaitContinue")) 63 for { 64 select { 65 case <-ctx.Done(): 66 return ctx.Err() 67 case err := <-daemonExitedChan: 68 if err != nil { 69 return err 70 } 71 return errors.New("daemon exited") 72 case <-h.Daemon.MessageConfirmedChan(): 73 debug.Log("message.confirmed") 74 return nil 75 case <-time.After(10 * time.Second): 76 debug.Log("waitingFor", "message.confirmed") 77 } 78 } 79 }