Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5fd8943

Browse files
committed
fix: improve duplicate template version name error
1 parent cd7ce8e commit 5fd8943

File tree

2 files changed

+37
-9
lines changed

2 files changed

+37
-9
lines changed

coderd/templateversions.go

+36-8
Original file line numberDiff line numberDiff line change
@@ -1448,11 +1448,19 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
14481448
UserVariableValues: req.UserVariableValues,
14491449
})
14501450
if err != nil {
1451-
return xerrors.Errorf("marshal job input: %w", err)
1451+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
1452+
Message: "Internal error creating template version.",
1453+
Detail: xerrors.Errorf("marshal job input: %w", err).Error(),
1454+
})
1455+
return err
14521456
}
14531457
traceMetadataRaw, err := json.Marshal(tracing.MetadataFromContext(ctx))
14541458
if err != nil {
1455-
return xerrors.Errorf("marshal job metadata: %w", err)
1459+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
1460+
Message: "Internal error creating template version.",
1461+
Detail: xerrors.Errorf("marshal job metadata: %w", err).Error(),
1462+
})
1463+
return err
14561464
}
14571465

14581466
provisionerJob, err = tx.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
@@ -1473,7 +1481,11 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
14731481
},
14741482
})
14751483
if err != nil {
1476-
return xerrors.Errorf("insert provisioner job: %w", err)
1484+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
1485+
Message: "Internal error creating template version.",
1486+
Detail: xerrors.Errorf("insert provisioner job: %w", err).Error(),
1487+
})
1488+
return err
14771489
}
14781490

14791491
var templateID uuid.NullUUID
@@ -1501,20 +1513,36 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
15011513
CreatedBy: apiKey.UserID,
15021514
})
15031515
if err != nil {
1504-
return xerrors.Errorf("insert template version: %w", err)
1516+
if database.IsUniqueViolation(err, database.UniqueTemplateVersionsTemplateIDNameKey) {
1517+
httpapi.Write(ctx, rw, http.StatusConflict, codersdk.Response{
1518+
Message: fmt.Sprintf("A template version with name %q already exists for this template.", req.Name),
1519+
Validations: []codersdk.ValidationError{{
1520+
Field: "name",
1521+
Detail: "This value is already in use and should be unique.",
1522+
}},
1523+
})
1524+
return err
1525+
}
1526+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
1527+
Message: "Internal error creating template version.",
1528+
Detail: xerrors.Errorf("insert template version: %w", err).Error(),
1529+
})
1530+
return err
15051531
}
15061532

15071533
templateVersion, err = tx.GetTemplateVersionByID(ctx, templateVersionID)
15081534
if err != nil {
1509-
return xerrors.Errorf("fetched inserted template version: %w", err)
1535+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
1536+
Message: "Internal error creating template version.",
1537+
Detail: xerrors.Errorf("fetched inserted template version: %w", err).Error(),
1538+
})
1539+
return err
15101540
}
15111541

15121542
return nil
15131543
}, nil)
15141544
if err != nil {
1515-
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
1516-
Message: err.Error(),
1517-
})
1545+
// Each failure case in the tx should have already written a response.
15181546
return
15191547
}
15201548
aReq.New = templateVersion

provisionerd/runner/runner.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ func (r *Runner) Run() {
222222
err := r.sender.CompleteJob(ctx, r.completedJob)
223223
if err != nil {
224224
r.logger.Error(ctx, "sending CompletedJob failed", slog.Error(err))
225-
err = r.sender.FailJob(ctx, r.failedJobf("internal provisionerserver error"))
225+
err = r.sender.FailJob(ctx, r.failedJobf("internal provisionerserver error: %s", err))
226226
if err != nil {
227227
r.logger.Error(ctx, "sending FailJob failed (while CompletedJob)", slog.Error(err))
228228
}

0 commit comments

Comments
 (0)