Skip to content

Commit a414314

Browse files
committed
Add new template parameter endpoint
1 parent 120a70a commit a414314

21 files changed

+1307
-873
lines changed

coderd/coderd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ func New(options *Options) *API {
336336

337337
r.Get("/", api.templateVersion)
338338
r.Patch("/cancel", api.patchCancelTemplateVersion)
339+
r.Get("/parameters", api.templateVersionParameters)
339340
r.Get("/deprecated-schema", api.deprecatedTemplateVersionSchema)
340341
r.Get("/deprecated-parameters", api.deprecatedTemplateVersionParameters)
341342
r.Get("/resources", api.templateVersionResources)

coderd/coderdtest/authorize.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,10 @@ func AGPLRoutes(a *AuthTester) (map[string]string, map[string]RouteCheck) {
179179
AssertAction: rbac.ActionRead,
180180
AssertObject: rbac.ResourceTemplate.InOrg(a.Template.OrganizationID),
181181
},
182+
"GET:/api/v2/templateversions/{templateversion}/parameters": {
183+
AssertAction: rbac.ActionRead,
184+
AssertObject: rbac.ResourceTemplate.InOrg(a.Template.OrganizationID),
185+
},
182186
"GET:/api/v2/templateversions/{templateversion}/deprecated-parameters": {
183187
AssertAction: rbac.ActionRead,
184188
AssertObject: rbac.ResourceTemplate.InOrg(a.Template.OrganizationID),

coderd/database/databasefake/databasefake.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ func New() database.Store {
4141
provisionerJobResourceMetadata: make([]database.WorkspaceResourceMetadatum, 0),
4242
provisionerJobs: make([]database.ProvisionerJob, 0),
4343
templateVersions: make([]database.TemplateVersion, 0),
44+
templateVersionParameters: make([]database.TemplateVersionParameter, 0),
4445
templates: make([]database.Template, 0),
4546
workspaceBuilds: make([]database.WorkspaceBuild, 0),
4647
workspaceApps: make([]database.WorkspaceApp, 0),
@@ -93,6 +94,7 @@ type data struct {
9394
provisionerJobResourceMetadata []database.WorkspaceResourceMetadatum
9495
provisionerJobs []database.ProvisionerJob
9596
templateVersions []database.TemplateVersion
97+
templateVersionParameters []database.TemplateVersionParameter
9698
templates []database.Template
9799
workspaceBuilds []database.WorkspaceBuild
98100
workspaceApps []database.WorkspaceApp
@@ -1136,6 +1138,20 @@ func (q *fakeQuerier) GetTemplateVersionByTemplateIDAndName(_ context.Context, a
11361138
return database.TemplateVersion{}, sql.ErrNoRows
11371139
}
11381140

1141+
func (q *fakeQuerier) GetTemplateVersionParameters(ctx context.Context, templateVersionID uuid.UUID) ([]database.TemplateVersionParameter, error) {
1142+
q.mutex.RLock()
1143+
defer q.mutex.RUnlock()
1144+
1145+
parameters := make([]database.TemplateVersionParameter, 0)
1146+
for _, param := range q.templateVersionParameters {
1147+
if param.TemplateVersionID != templateVersionID {
1148+
continue
1149+
}
1150+
parameters = append(parameters, param)
1151+
}
1152+
return parameters, nil
1153+
}
1154+
11391155
func (q *fakeQuerier) GetTemplateVersionByID(_ context.Context, templateVersionID uuid.UUID) (database.TemplateVersion, error) {
11401156
q.mutex.RLock()
11411157
defer q.mutex.RUnlock()
@@ -1733,6 +1749,27 @@ func (q *fakeQuerier) InsertTemplateVersion(_ context.Context, arg database.Inse
17331749
return version, nil
17341750
}
17351751

1752+
func (q *fakeQuerier) InsertTemplateVersionParameter(ctx context.Context, arg database.InsertTemplateVersionParameterParams) (database.TemplateVersionParameter, error) {
1753+
q.mutex.Lock()
1754+
defer q.mutex.Unlock()
1755+
1756+
param := database.TemplateVersionParameter{
1757+
TemplateVersionID: arg.TemplateVersionID,
1758+
Name: arg.Name,
1759+
Description: arg.Description,
1760+
Type: arg.Type,
1761+
Mutable: arg.Mutable,
1762+
DefaultValue: arg.DefaultValue,
1763+
Icon: arg.Icon,
1764+
Options: arg.Options,
1765+
ValidationRegex: arg.ValidationRegex,
1766+
ValidationMin: arg.ValidationMin,
1767+
ValidationMax: arg.ValidationMax,
1768+
}
1769+
q.templateVersionParameters = append(q.templateVersionParameters, param)
1770+
return param, nil
1771+
}
1772+
17361773
func (q *fakeQuerier) InsertProvisionerJobLogs(_ context.Context, arg database.InsertProvisionerJobLogsParams) ([]database.ProvisionerJobLog, error) {
17371774
q.mutex.Lock()
17381775
defer q.mutex.Unlock()

coderd/database/dump.sql

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/migrations/000055_parameters.up.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
CREATE TABLE template_version_parameters (
2-
template_version_id uuid not null references template_versions (id) on delete cascade,
2+
template_version_id uuid not null references provisioner_jobs (id) on delete cascade,
33
name text not null,
44
description text not null,
55
type text not null,
66
mutable boolean not null,
77
default_value text not null,
88
icon text not null,
99
options jsonb not null default '[]'::jsonb,
10-
validation_regex text,
11-
validation_min integer,
12-
validation_max integer,
10+
validation_regex text not null,
11+
validation_min integer not null,
12+
validation_max integer not null,
1313
unique (template_version_id, name)
1414
);
1515

coderd/database/models.go

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)