@Summary Cancel template version by ID @ID cancel-template-version-by-id @Security CoderSessionToken @Produce json @Tags Templates @Param templateversion path string true "Template version ID" format(uuid) @Success 200 {object} codersdk.Response @Router /api/v2/templateversions/{templateversion}/can
(rw http.ResponseWriter, r *http.Request)
| 230 | // @Success 200 {object} codersdk.Response |
| 231 | // @Router /api/v2/templateversions/{templateversion}/cancel [patch] |
| 232 | func (api *API) patchCancelTemplateVersion(rw http.ResponseWriter, r *http.Request) { |
| 233 | ctx := r.Context() |
| 234 | templateVersion := httpmw.TemplateVersionParam(r) |
| 235 | |
| 236 | job, err := api.Database.GetProvisionerJobByID(ctx, templateVersion.JobID) |
| 237 | if err != nil { |
| 238 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 239 | Message: "Internal error fetching provisioner job.", |
| 240 | Detail: err.Error(), |
| 241 | }) |
| 242 | return |
| 243 | } |
| 244 | if job.CompletedAt.Valid { |
| 245 | httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{ |
| 246 | Message: "Job has already completed!", |
| 247 | }) |
| 248 | return |
| 249 | } |
| 250 | if job.CanceledAt.Valid { |
| 251 | httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{ |
| 252 | Message: "Job has already been marked as canceled!", |
| 253 | }) |
| 254 | return |
| 255 | } |
| 256 | err = api.Database.UpdateProvisionerJobWithCancelByID(ctx, database.UpdateProvisionerJobWithCancelByIDParams{ |
| 257 | ID: job.ID, |
| 258 | CanceledAt: sql.NullTime{ |
| 259 | Time: dbtime.Now(), |
| 260 | Valid: true, |
| 261 | }, |
| 262 | CompletedAt: sql.NullTime{ |
| 263 | Time: dbtime.Now(), |
| 264 | // If the job is running, don't mark it completed! |
| 265 | Valid: !job.WorkerID.Valid, |
| 266 | }, |
| 267 | }) |
| 268 | if err != nil { |
| 269 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 270 | Message: "Internal error updating provisioner job.", |
| 271 | Detail: err.Error(), |
| 272 | }) |
| 273 | return |
| 274 | } |
| 275 | httpapi.Write(ctx, rw, http.StatusOK, codersdk.Response{ |
| 276 | Message: "Job has been marked as canceled...", |
| 277 | }) |
| 278 | } |
| 279 | |
| 280 | // @Summary Get rich parameters by template version |
| 281 | // @ID get-rich-parameters-by-template-version |
nothing calls this directly
no test coverage detected