github.com/replicatedhq/ship@v0.55.0/pkg/lifecycle/daemon/statusonly/daemon.go (about)

     1  package statusonly
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/go-kit/kit/log"
     8  	"github.com/go-kit/kit/log/level"
     9  	"github.com/replicatedhq/ship/pkg/lifecycle/daemon/daemontypes"
    10  )
    11  
    12  // StatusReceiver implements the daemontypes statusreceiver by sending progress
    13  // messages on a channel
    14  var _ daemontypes.StatusReceiver = &StatusReceiver{}
    15  
    16  type StatusReceiver struct {
    17  	Logger     log.Logger
    18  	Name       string
    19  	OnProgress func(daemontypes.Progress)
    20  }
    21  
    22  func (d *StatusReceiver) SetStepName(ctx context.Context, name string) {
    23  	d.OnProgress(daemontypes.StringProgress("phase", name))
    24  }
    25  
    26  func (d *StatusReceiver) SetProgress(progress daemontypes.Progress) {
    27  	d.OnProgress(progress)
    28  }
    29  
    30  func (d *StatusReceiver) ClearProgress() {
    31  	// no-op I think, we'll implement this if/when we need it
    32  }
    33  
    34  func (d *StatusReceiver) PushStreamStep(ctx context.Context, messages <-chan daemontypes.Message) {
    35  	debug := level.Debug(log.With(d.Logger, "method", "pushStreamStep"))
    36  	for msg := range messages {
    37  		debug.Log("event", "message.receive", "contents", fmt.Sprintf("%.32s", msg.Contents))
    38  		d.OnProgress(daemontypes.JSONProgress(d.Name, map[string]interface{}{
    39  			"status":  "working",
    40  			"message": msg,
    41  		}))
    42  	}
    43  }
    44  
    45  func (d *StatusReceiver) PushMessageStep(ctx context.Context, step daemontypes.Message, actions []daemontypes.Action) {
    46  	debug := level.Debug(log.With(d.Logger, "method", "pushMessageStep"))
    47  
    48  	debug.Log("event", "message")
    49  	d.OnProgress(daemontypes.JSONProgress("message step", map[string]interface{}{
    50  		"status":  "message",
    51  		"message": step,
    52  		"actions": actions,
    53  	}))
    54  }