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

Method templateVersion

coderd/templateversions.go:57–107  ·  view source on GitHub ↗

@Summary Get template version by ID @ID get-template-version-by-id @Security CoderSessionToken @Produce json @Tags Templates @Param templateversion path string true "Template version ID" format(uuid) @Success 200 {object} codersdk.TemplateVersion @Router /api/v2/templateversions/{templateversion} [g

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

Source from the content-addressed store, hash-verified

55// @Success 200 {object} codersdk.TemplateVersion
56// @Router /api/v2/templateversions/{templateversion} [get]
57func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) {
58 ctx := r.Context()
59 templateVersion := httpmw.TemplateVersionParam(r)
60
61 jobs, err := api.Database.GetProvisionerJobsByIDsWithQueuePosition(ctx, database.GetProvisionerJobsByIDsWithQueuePositionParams{
62 IDs: []uuid.UUID{templateVersion.JobID},
63 StaleIntervalMS: provisionerdserver.StaleInterval.Milliseconds(),
64 })
65 if err != nil || len(jobs) == 0 {
66 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
67 Message: "Internal error fetching provisioner job.",
68 Detail: err.Error(),
69 })
70 return
71 }
72
73 var matchedProvisioners *codersdk.MatchedProvisioners
74 if jobs[0].ProvisionerJob.JobStatus == database.ProvisionerJobStatusPending {
75 // nolint: gocritic // The user hitting this endpoint may not have
76 // permission to read provisioner daemons, but we want to show them
77 // information about the provisioner daemons that are available.
78 provisioners, err := api.Database.GetProvisionerDaemonsByOrganization(dbauthz.AsSystemReadProvisionerDaemons(ctx), database.GetProvisionerDaemonsByOrganizationParams{
79 OrganizationID: jobs[0].ProvisionerJob.OrganizationID,
80 WantTags: jobs[0].ProvisionerJob.Tags,
81 })
82 if err != nil {
83 api.Logger.Error(ctx, "failed to fetch provisioners for job id", slog.F("job_id", jobs[0].ProvisionerJob.ID), slog.Error(err))
84 } else {
85 matchedProvisioners = ptr.Ref(db2sdk.MatchedProvisioners(provisioners, dbtime.Now(), provisionerdserver.StaleInterval))
86 }
87 }
88
89 schemas, err := api.Database.GetParameterSchemasByJobID(ctx, jobs[0].ProvisionerJob.ID)
90 if errors.Is(err, sql.ErrNoRows) {
91 err = nil
92 }
93 if err != nil {
94 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
95 Message: "Internal error listing parameter schemas.",
96 Detail: err.Error(),
97 })
98 return
99 }
100
101 var warnings []codersdk.TemplateVersionWarning
102 if len(schemas) > 0 {
103 warnings = append(warnings, codersdk.TemplateVersionWarningUnsupportedWorkspaces)
104 }
105
106 httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(templateVersion, convertProvisionerJob(jobs[0]), matchedProvisioners, warnings))
107}
108
109// @Summary Patch template version by ID
110// @ID patch-template-version-by-id

Callers

nothing calls this directly

Calls 14

TemplateVersionParamFunction · 0.92
WriteFunction · 0.92
RefFunction · 0.92
MatchedProvisionersFunction · 0.92
NowFunction · 0.92
convertTemplateVersionFunction · 0.85
convertProvisionerJobFunction · 0.85
ContextMethod · 0.65

Tested by

no test coverage detected