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 }