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

Skip to content

Commit 71cbf73

Browse files
authored
feat(coderd): add support for presets to the coder API (coder#16526)
This pull request builds on the existing migrations and queries to add support for presets to the coder API.
1 parent ec50a35 commit 71cbf73

18 files changed

+447
-47
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ provisioner/terraform/testdata/version:
809809
.PHONY: provisioner/terraform/testdata/version
810810

811811
test:
812-
$(GIT_FLAGS) gotestsum --format standard-quiet -- -v -short -count=1 ./...
812+
$(GIT_FLAGS) gotestsum --format standard-quiet -- -v -short -count=1 ./... $(if $(RUN),-run $(RUN))
813813
.PHONY: test
814814

815815
test-cli:

coderd/apidoc/docs.go

+66
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

+62
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/coderd.go

+1
Original file line numberDiff line numberDiff line change
@@ -1058,6 +1058,7 @@ func New(options *Options) *API {
10581058
r.Get("/rich-parameters", api.templateVersionRichParameters)
10591059
r.Get("/external-auth", api.templateVersionExternalAuth)
10601060
r.Get("/variables", api.templateVersionVariables)
1061+
r.Get("/presets", api.templateVersionPresets)
10611062
r.Get("/resources", api.templateVersionResources)
10621063
r.Get("/logs", api.templateVersionLogs)
10631064
r.Route("/dry-run", func(r chi.Router) {

coderd/database/dbauthz/dbauthz_test.go

-3
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,6 @@ func (s *MethodTestSuite) TestOrganization() {
886886
JobID: job.ID,
887887
})
888888
insertPresetParams := database.InsertPresetParams{
889-
ID: uuid.New(),
890889
TemplateVersionID: workspaceBuild.TemplateVersionID,
891890
Name: "test",
892891
}
@@ -3817,13 +3816,11 @@ func (s *MethodTestSuite) TestSystemFunctions() {
38173816
CreatedBy: user.ID,
38183817
})
38193818
preset, err := db.InsertPreset(ctx, database.InsertPresetParams{
3820-
ID: uuid.New(),
38213819
TemplateVersionID: templateVersion.ID,
38223820
Name: "test",
38233821
})
38243822
require.NoError(s.T(), err)
38253823
_, err = db.InsertPresetParameters(ctx, database.InsertPresetParametersParams{
3826-
ID: uuid.New(),
38273824
TemplateVersionPresetID: preset.ID,
38283825
Names: []string{"test"},
38293826
Values: []string{"test"},

coderd/database/dbmem/dbmem.go

+1
Original file line numberDiff line numberDiff line change
@@ -8149,6 +8149,7 @@ func (q *FakeQuerier) InsertPreset(_ context.Context, arg database.InsertPresetP
81498149
q.mutex.Lock()
81508150
defer q.mutex.Unlock()
81518151

8152+
//nolint:gosimple // arg needs to keep its type for interface reasons and that type is not appropriate for preset below.
81528153
preset := database.TemplateVersionPreset{
81538154
ID: uuid.New(),
81548155
TemplateVersionID: arg.TemplateVersionID,

coderd/database/dump.sql

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
ALTER TABLE template_version_presets
2+
ALTER COLUMN id DROP DEFAULT;
3+
4+
ALTER TABLE template_version_preset_parameters
5+
ALTER COLUMN id DROP DEFAULT;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
ALTER TABLE template_version_presets
2+
ALTER COLUMN id SET DEFAULT gen_random_uuid();
3+
4+
ALTER TABLE template_version_preset_parameters
5+
ALTER COLUMN id SET DEFAULT gen_random_uuid();

coderd/database/queries.sql.go

+7-20
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/presets.sql

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
-- name: InsertPreset :one
22
INSERT INTO
3-
template_version_presets (id, template_version_id, name, created_at)
3+
template_version_presets (template_version_id, name, created_at)
44
VALUES
5-
(@id, @template_version_id, @name, @created_at) RETURNING *;
5+
(@template_version_id, @name, @created_at) RETURNING *;
66

77
-- name: InsertPresetParameters :many
88
INSERT INTO
9-
template_version_preset_parameters (id, template_version_preset_id, name, value)
9+
template_version_preset_parameters (template_version_preset_id, name, value)
1010
SELECT
11-
@id,
1211
@template_version_preset_id,
1312
unnest(@names :: TEXT[]),
1413
unnest(@values :: TEXT[])

coderd/presets.go

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package coderd
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/coder/coder/v2/coderd/httpapi"
7+
"github.com/coder/coder/v2/coderd/httpmw"
8+
"github.com/coder/coder/v2/codersdk"
9+
)
10+
11+
// @Summary Get template version presets
12+
// @ID get-template-version-presets
13+
// @Security CoderSessionToken
14+
// @Produce json
15+
// @Tags Templates
16+
// @Param templateversion path string true "Template version ID" format(uuid)
17+
// @Success 200 {array} codersdk.Preset
18+
// @Router /templateversions/{templateversion}/presets [get]
19+
func (api *API) templateVersionPresets(rw http.ResponseWriter, r *http.Request) {
20+
ctx := r.Context()
21+
templateVersion := httpmw.TemplateVersionParam(r)
22+
23+
presets, err := api.Database.GetPresetsByTemplateVersionID(ctx, templateVersion.ID)
24+
if err != nil {
25+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
26+
Message: "Internal error fetching template version presets.",
27+
Detail: err.Error(),
28+
})
29+
return
30+
}
31+
32+
presetParams, err := api.Database.GetPresetParametersByTemplateVersionID(ctx, templateVersion.ID)
33+
if err != nil {
34+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
35+
Message: "Internal error fetching template version presets.",
36+
Detail: err.Error(),
37+
})
38+
return
39+
}
40+
41+
var res []codersdk.Preset
42+
for _, preset := range presets {
43+
sdkPreset := codersdk.Preset{
44+
ID: preset.ID,
45+
Name: preset.Name,
46+
}
47+
for _, presetParam := range presetParams {
48+
sdkPreset.Parameters = append(sdkPreset.Parameters, codersdk.PresetParameter{
49+
Name: presetParam.Name,
50+
Value: presetParam.Value,
51+
})
52+
}
53+
res = append(res, sdkPreset)
54+
}
55+
56+
httpapi.Write(ctx, rw, http.StatusOK, res)
57+
}

0 commit comments

Comments
 (0)