Skip to content

Commit 3b87316

Browse files
authored
feat: propagate job error codes (#6507)
* feat: propagate job error_code * fix * Fix * Fix * Fix * add errors to typesGenerated * Address PR comments * Fix
1 parent 524b14a commit 3b87316

25 files changed

+406
-234
lines changed

cli/cliui/provisionerjob.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ type ProvisionerJobOptions struct {
4141
Silent bool
4242
}
4343

44+
type ProvisionerJobError struct {
45+
Message string
46+
Code codersdk.JobErrorCode
47+
}
48+
49+
var _ error = new(ProvisionerJobError)
50+
51+
func (err *ProvisionerJobError) Error() string {
52+
return err.Message
53+
}
54+
4455
// ProvisionerJob renders a provisioner job with interactive cancellation.
4556
func ProvisionerJob(ctx context.Context, writer io.Writer, opts ProvisionerJobOptions) error {
4657
if opts.FetchInterval == 0 {
@@ -181,7 +192,10 @@ func ProvisionerJob(ctx context.Context, writer io.Writer, opts ProvisionerJobOp
181192
return nil
182193
case codersdk.ProvisionerJobFailed:
183194
}
184-
err = xerrors.New(job.Error)
195+
err = &ProvisionerJobError{
196+
Message: job.Error,
197+
Code: job.ErrorCode,
198+
}
185199
jobMutex.Unlock()
186200
flushLogBuffer()
187201
return err

cli/templatecreate.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cli
22

33
import (
4+
"errors"
45
"fmt"
56
"io"
67
"os"
@@ -196,7 +197,8 @@ func createValidTemplateVersion(cmd *cobra.Command, args createValidTemplateVers
196197
},
197198
})
198199
if err != nil {
199-
if !provisionerd.IsMissingParameterError(err.Error()) {
200+
var jobErr *cliui.ProvisionerJobError
201+
if errors.As(err, &jobErr) && !provisionerd.IsMissingParameterErrorCode(string(jobErr.Code)) {
200202
return nil, nil, err
201203
}
202204
}
@@ -233,7 +235,7 @@ func createValidTemplateVersion(cmd *cobra.Command, args createValidTemplateVers
233235
}
234236
}
235237

236-
if provisionerd.IsMissingParameterError(version.Job.Error) {
238+
if provisionerd.IsMissingParameterErrorCode(string(version.Job.ErrorCode)) {
237239
valuesBySchemaID := map[string]codersdk.ComputedParameter{}
238240
for _, parameterValue := range parameterValues {
239241
valuesBySchemaID[parameterValue.SchemaID.String()] = parameterValue

coderd/apidoc/docs.go

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbfake/databasefake.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3512,6 +3512,7 @@ func (q *fakeQuerier) UpdateProvisionerJobWithCompleteByID(_ context.Context, ar
35123512
job.UpdatedAt = arg.UpdatedAt
35133513
job.CompletedAt = arg.CompletedAt
35143514
job.Error = arg.Error
3515+
job.ErrorCode = arg.ErrorCode
35153516
q.provisionerJobs[index] = job
35163517
return nil
35173518
}

coderd/database/dump.sql

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE provisioner_jobs DROP COLUMN error_code;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE provisioner_jobs ADD COLUMN error_code text DEFAULT NULL;

coderd/database/models.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 14 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)