(ctx context.Context, request *proto.UpdateJobRequest)
| 950 | } |
| 951 | |
| 952 | func (s *server) UpdateJob(ctx context.Context, request *proto.UpdateJobRequest) (*proto.UpdateJobResponse, error) { |
| 953 | ctx, span := s.startTrace(ctx, tracing.FuncName()) |
| 954 | defer span.End() |
| 955 | |
| 956 | //nolint:gocritic // Provisionerd has specific authz rules. |
| 957 | ctx = dbauthz.AsProvisionerd(ctx) |
| 958 | parsedID, err := uuid.Parse(request.JobId) |
| 959 | if err != nil { |
| 960 | return nil, xerrors.Errorf("parse job id: %w", err) |
| 961 | } |
| 962 | s.Logger.Debug(ctx, "stage UpdateJob starting", slog.F("job_id", parsedID)) |
| 963 | job, err := s.Database.GetProvisionerJobByID(ctx, parsedID) |
| 964 | if err != nil { |
| 965 | return nil, xerrors.Errorf("get job: %w", err) |
| 966 | } |
| 967 | if !job.WorkerID.Valid { |
| 968 | return nil, xerrors.New("job isn't running yet") |
| 969 | } |
| 970 | if job.WorkerID.UUID.String() != s.ID.String() { |
| 971 | return nil, xerrors.New("you don't own this job") |
| 972 | } |
| 973 | err = s.Database.UpdateProvisionerJobByID(ctx, database.UpdateProvisionerJobByIDParams{ |
| 974 | ID: parsedID, |
| 975 | UpdatedAt: s.timeNow(), |
| 976 | }) |
| 977 | if err != nil { |
| 978 | return nil, xerrors.Errorf("update job: %w", err) |
| 979 | } |
| 980 | |
| 981 | if len(request.Logs) > 0 && !job.LogsOverflowed { |
| 982 | //nolint:exhaustruct // We append to the additional fields below. |
| 983 | insertParams := database.InsertProvisionerJobLogsParams{ |
| 984 | JobID: parsedID, |
| 985 | } |
| 986 | |
| 987 | newLogSize := 0 |
| 988 | overflowedErrorMsg := "Provisioner logs exceeded the max size of 1MB. Will not continue to write provisioner logs for workspace build." |
| 989 | lenErrMsg := len(overflowedErrorMsg) |
| 990 | |
| 991 | var ( |
| 992 | createdAt time.Time |
| 993 | level database.LogLevel |
| 994 | stage string |
| 995 | source database.LogSource |
| 996 | output string |
| 997 | ) |
| 998 | |
| 999 | for _, log := range request.Logs { |
| 1000 | // Build our log params |
| 1001 | level, err = convertLogLevel(log.Level) |
| 1002 | if err != nil { |
| 1003 | return nil, xerrors.Errorf("convert log level: %w", err) |
| 1004 | } |
| 1005 | source, err = convertLogSource(log.Source) |
| 1006 | if err != nil { |
| 1007 | return nil, xerrors.Errorf("convert log source: %w", err) |
| 1008 | } |
| 1009 | createdAt = time.UnixMilli(log.CreatedAt) |
nothing calls this directly
no test coverage detected