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

Method provisionerDaemons

coderd/provisionerdaemons.go:32–115  ·  view source on GitHub ↗

@Summary Get provisioner daemons @ID get-provisioner-daemons @Security CoderSessionToken @Produce json @Tags Provisioning @Param organization path string true "Organization ID" format(uuid) @Param limit query int false "Page limit" @Param ids query []string false "Filter results by job IDs" format(u

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

Source from the content-addressed store, hash-verified

30// @Success 200 {array} codersdk.ProvisionerDaemon
31// @Router /api/v2/organizations/{organization}/provisionerdaemons [get]
32func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) {
33 var (
34 ctx = r.Context()
35 org = httpmw.OrganizationParam(r)
36 )
37
38 // This endpoint returns information about provisioner jobs.
39 // For now, only owners and template admins can access provisioner jobs.
40 if !api.Authorize(r, policy.ActionRead, rbac.ResourceProvisionerJobs.InOrg(org.ID)) {
41 httpapi.ResourceNotFound(rw)
42 return
43 }
44
45 qp := r.URL.Query()
46 p := httpapi.NewQueryParamParser()
47 limit := p.PositiveInt32(qp, 50, "limit")
48 ids := p.UUIDs(qp, nil, "ids")
49 tags := p.JSONStringMap(qp, database.StringMap{}, "tags")
50 includeOffline := p.NullableBoolean(qp, sql.NullBool{}, "offline")
51 statuses := p.ProvisionerDaemonStatuses(qp, []codersdk.ProvisionerDaemonStatus{}, "status")
52 maxAge := p.Duration(qp, 0, "max_age")
53 p.ErrorExcessParams(qp)
54 if len(p.Errors) > 0 {
55 httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
56 Message: "Invalid query parameters.",
57 Validations: p.Errors,
58 })
59 return
60 }
61
62 dbStatuses := sdk2db.ProvisionerDaemonStatuses(statuses)
63
64 daemons, err := api.Database.GetProvisionerDaemonsWithStatusByOrganization(
65 ctx,
66 database.GetProvisionerDaemonsWithStatusByOrganizationParams{
67 OrganizationID: org.ID,
68 StaleIntervalMS: provisionerdserver.StaleInterval.Milliseconds(),
69 Limit: sql.NullInt32{Int32: limit, Valid: limit > 0},
70 Offline: includeOffline,
71 Statuses: dbStatuses,
72 MaxAgeMs: sql.NullInt64{Int64: maxAge.Milliseconds(), Valid: maxAge > 0},
73 IDs: ids,
74 Tags: tags,
75 },
76 )
77 if err != nil {
78 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
79 Message: "Internal error fetching provisioner daemons.",
80 Detail: err.Error(),
81 })
82 return
83 }
84
85 httpapi.Write(ctx, rw, http.StatusOK, slice.List(daemons, func(dbDaemon database.GetProvisionerDaemonsWithStatusByOrganizationRow) codersdk.ProvisionerDaemon {
86 pd := db2sdk.ProvisionerDaemon(dbDaemon.ProvisionerDaemon)
87 var currentJob, previousJob *codersdk.ProvisionerDaemonJob
88 if dbDaemon.CurrentJobID.Valid {
89 currentJob = &codersdk.ProvisionerDaemonJob{

Callers

nothing calls this directly

Calls 15

AuthorizeMethod · 0.95
PositiveInt32Method · 0.95
UUIDsMethod · 0.95
JSONStringMapMethod · 0.95
NullableBooleanMethod · 0.95
DurationMethod · 0.95
ErrorExcessParamsMethod · 0.95
OrganizationParamFunction · 0.92
ResourceNotFoundFunction · 0.92
NewQueryParamParserFunction · 0.92
WriteFunction · 0.92

Tested by

no test coverage detected