github.com/leg100/ots@v0.0.7-0.20210919080622-034055ced4bd/job_writer.go (about)

     1  package ots
     2  
     3  import "github.com/go-logr/logr"
     4  
     5  // JobWriter writes logs on behalf of a job.
     6  type JobWriter struct {
     7  	// JobLogsUploader uploads a chunk of logs to the server
     8  	JobLogsUploader
     9  
    10  	// ID of job
    11  	ID string
    12  
    13  	logr.Logger
    14  }
    15  
    16  // Write uploads a chunk of logs to the server.
    17  func (jw *JobWriter) Write(p []byte) (int, error) {
    18  	if err := jw.UploadLogs(jw.ID, p, PutChunkOptions{}); err != nil {
    19  		jw.Error(err, "unable to write logs")
    20  		return 0, err
    21  	}
    22  
    23  	return len(p), nil
    24  }
    25  
    26  // Close must be called to complete writing job logs
    27  func (jw *JobWriter) Close() error {
    28  	opts := PutChunkOptions{End: true}
    29  
    30  	if err := jw.UploadLogs(jw.ID, nil, opts); err != nil {
    31  		jw.Error(err, "unable to close logs")
    32  
    33  		return err
    34  	}
    35  	return nil
    36  }