MCPcopy Index your code
hub / github.com/coder/coder / pauseTask

Method pauseTask

coderd/aitasks.go:1263–1329  ·  view source on GitHub ↗

@Summary Pause task @ID pause-task @Security CoderSessionToken @Produce json @Tags Tasks @Param user path string true "Username, user ID, or 'me' for the authenticated user" @Param task path string true "Task ID" format(uuid) @Success 202 {object} codersdk.PauseTaskResponse @Router /api/v2/tasks/{us

(rw http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

1261// @Success 202 {object} codersdk.PauseTaskResponse
1262// @Router /api/v2/tasks/{user}/{task}/pause [post]
1263func (api *API) pauseTask(rw http.ResponseWriter, r *http.Request) {
1264 var (
1265 ctx = r.Context()
1266 apiKey = httpmw.APIKey(r)
1267 task = httpmw.TaskParam(r)
1268 )
1269
1270 if !task.WorkspaceID.Valid {
1271 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
1272 Message: "Task does not have a workspace.",
1273 })
1274 return
1275 }
1276
1277 workspace, err := api.Database.GetWorkspaceByID(ctx, task.WorkspaceID.UUID)
1278 if err != nil {
1279 if httpapi.Is404Error(err) {
1280 httpapi.ResourceNotFound(rw)
1281 return
1282 }
1283 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
1284 Message: "Internal error fetching task workspace.",
1285 Detail: err.Error(),
1286 })
1287 return
1288 }
1289
1290 buildReq := codersdk.CreateWorkspaceBuildRequest{
1291 Transition: codersdk.WorkspaceTransitionStop,
1292 Reason: codersdk.CreateWorkspaceBuildReasonTaskManualPause,
1293 }
1294 build, err := api.postWorkspaceBuildsInternal(
1295 ctx,
1296 apiKey,
1297 workspace,
1298 buildReq,
1299 func(action policy.Action, object rbac.Objecter) bool {
1300 return api.Authorize(r, action, object)
1301 },
1302 audit.WorkspaceBuildBaggageFromRequest(r),
1303 )
1304 if err != nil {
1305 httperror.WriteWorkspaceBuildError(ctx, rw, err)
1306 return
1307 }
1308
1309 if _, err := api.NotificationsEnqueuer.Enqueue(
1310 // nolint:gocritic // Need notifier actor to enqueue notifications.
1311 dbauthz.AsNotifier(ctx),
1312 workspace.OwnerID,
1313 notifications.TemplateTaskPaused,
1314 map[string]string{
1315 "task": task.Name,
1316 "task_id": task.ID.String(),
1317 "workspace": workspace.Name,
1318 "pause_reason": "manual",
1319 },
1320 "api-task-pause",

Callers 1

pauseTaskFunction · 0.80

Calls 15

AuthorizeMethod · 0.95
APIKeyFunction · 0.92
TaskParamFunction · 0.92
WriteFunction · 0.92
Is404ErrorFunction · 0.92
ResourceNotFoundFunction · 0.92
WriteWorkspaceBuildErrorFunction · 0.92
AsNotifierFunction · 0.92
ContextMethod · 0.65
GetWorkspaceByIDMethod · 0.65

Tested by

no test coverage detected