Content-Length: 836519 | pFad | https://github.com/coder/coder/commit/#start-of-content

68888A0E feat: make dynamic parameters opt-in by default for new templates (#1… · coder/coder@1320b8d · GitHub
Skip to content

Commit 1320b8d

Browse files
jaaydenhEmyrkblink-so[bot]
authored
feat: make dynamic parameters opt-in by default for new templates (#19006)
resolves #18975 --------- Co-authored-by: Steven Masley <stevenmasley@gmail.com> Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
1 parent faac753 commit 1320b8d

35 files changed

+476
-91
lines changed

cli/restart.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,17 @@ func (r *RootCmd) restart() *serpent.Command {
5151
return err
5252
}
5353

54+
stopParamValues, err := asWorkspaceBuildParameters(parameterFlags.ephemeralParameters)
55+
if err != nil {
56+
return xerrors.Errorf("parse ephemeral parameters: %w", err)
57+
}
5458
wbr := codersdk.CreateWorkspaceBuildRequest{
5559
Transition: codersdk.WorkspaceTransitionStop,
60+
// Ephemeral parameters should be passed to both stop and start builds.
61+
// TODO: maybe these values should be sourced from the previous build?
62+
// It has to be manually sourced, as ephemeral parameters do not carry across
63+
// builds.
64+
RichParameterValues: stopParamValues,
5665
}
5766
if bflags.provisionerLogDebug {
5867
wbr.LogLevel = codersdk.ProvisionerLogLevelDebug

cli/restart_test.go

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"github.com/coder/coder/v2/cli/clitest"
1212
"github.com/coder/coder/v2/coderd/coderdtest"
13+
"github.com/coder/coder/v2/coderd/util/ptr"
1314
"github.com/coder/coder/v2/codersdk"
1415
"github.com/coder/coder/v2/provisioner/echo"
1516
"github.com/coder/coder/v2/provisionersdk/proto"
@@ -70,8 +71,14 @@ func TestRestart(t *testing.T) {
7071
member, memberUser := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
7172
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, echoResponses())
7273
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
73-
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
74-
workspace := coderdtest.CreateWorkspace(t, member, template.ID)
74+
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID, func(request *codersdk.CreateTemplateRequest) {
75+
request.UseClassicParameterFlow = ptr.Ref(true) // TODO: Remove when dynamic parameters prompt missing ephemeral parameters.
76+
})
77+
workspace := coderdtest.CreateWorkspace(t, member, template.ID, func(request *codersdk.CreateWorkspaceRequest) {
78+
request.RichParameterValues = []codersdk.WorkspaceBuildParameter{
79+
{Name: ephemeralParameterName, Value: "placeholder"},
80+
}
81+
})
7582
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
7683

7784
inv, root := clitest.New(t, "restart", workspace.Name, "--prompt-ephemeral-parameters")
@@ -125,7 +132,11 @@ func TestRestart(t *testing.T) {
125132
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, echoResponses())
126133
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
127134
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
128-
workspace := coderdtest.CreateWorkspace(t, member, template.ID)
135+
workspace := coderdtest.CreateWorkspace(t, member, template.ID, func(request *codersdk.CreateWorkspaceRequest) {
136+
request.RichParameterValues = []codersdk.WorkspaceBuildParameter{
137+
{Name: ephemeralParameterName, Value: "placeholder"},
138+
}
139+
})
129140
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
130141

131142
inv, root := clitest.New(t, "restart", workspace.Name,
@@ -178,8 +189,14 @@ func TestRestart(t *testing.T) {
178189
member, memberUser := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
179190
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, echoResponses())
180191
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
181-
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
182-
workspace := coderdtest.CreateWorkspace(t, member, template.ID)
192+
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID, func(request *codersdk.CreateTemplateRequest) {
193+
request.UseClassicParameterFlow = ptr.Ref(true) // TODO: Remove when dynamic parameters prompts missing ephemeral parameters
194+
})
195+
workspace := coderdtest.CreateWorkspace(t, member, template.ID, func(request *codersdk.CreateWorkspaceRequest) {
196+
request.RichParameterValues = []codersdk.WorkspaceBuildParameter{
197+
{Name: ephemeralParameterName, Value: "placeholder"},
198+
}
199+
})
183200
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
184201

185202
inv, root := clitest.New(t, "restart", workspace.Name, "--build-options")
@@ -233,7 +250,11 @@ func TestRestart(t *testing.T) {
233250
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, echoResponses())
234251
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
235252
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
236-
workspace := coderdtest.CreateWorkspace(t, member, template.ID)
253+
workspace := coderdtest.CreateWorkspace(t, member, template.ID, func(request *codersdk.CreateWorkspaceRequest) {
254+
request.RichParameterValues = []codersdk.WorkspaceBuildParameter{
255+
{Name: ephemeralParameterName, Value: "placeholder"},
256+
}
257+
})
237258
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
238259

239260
inv, root := clitest.New(t, "restart", workspace.Name,

cli/start_test.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,18 @@ func TestStart(t *testing.T) {
113113
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, echoResponses())
114114
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
115115
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
116-
workspace := coderdtest.CreateWorkspace(t, member, template.ID)
116+
workspace := coderdtest.CreateWorkspace(t, member, template.ID, func(request *codersdk.CreateWorkspaceRequest) {
117+
request.RichParameterValues = []codersdk.WorkspaceBuildParameter{
118+
{Name: ephemeralParameterName, Value: "foo"}, // Value is required, set it to something
119+
}
120+
})
117121
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
118122
// Stop the workspace
119-
workspaceBuild := coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStop)
123+
workspaceBuild := coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStop, func(request *codersdk.CreateWorkspaceBuildRequest) {
124+
request.RichParameterValues = []codersdk.WorkspaceBuildParameter{
125+
{Name: ephemeralParameterName, Value: "foo"}, // Value is required, set it to something
126+
}
127+
})
120128
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspaceBuild.ID)
121129

122130
inv, root := clitest.New(t, "start", workspace.Name, "--prompt-ephemeral-parameters")
@@ -167,10 +175,18 @@ func TestStart(t *testing.T) {
167175
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, echoResponses())
168176
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
169177
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
170-
workspace := coderdtest.CreateWorkspace(t, member, template.ID)
178+
workspace := coderdtest.CreateWorkspace(t, member, template.ID, func(request *codersdk.CreateWorkspaceRequest) {
179+
request.RichParameterValues = []codersdk.WorkspaceBuildParameter{
180+
{Name: ephemeralParameterName, Value: "foo"}, // Value is required, set it to something
181+
}
182+
})
171183
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
172184
// Stop the workspace
173-
workspaceBuild := coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStop)
185+
workspaceBuild := coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStop, func(request *codersdk.CreateWorkspaceBuildRequest) {
186+
request.RichParameterValues = []codersdk.WorkspaceBuildParameter{
187+
{Name: ephemeralParameterName, Value: "foo"}, // Value is required, set it to something
188+
}
189+
})
174190
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspaceBuild.ID)
175191

176192
inv, root := clitest.New(t, "start", workspace.Name,

cli/templatepush_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,7 @@ func TestTemplatePush(t *testing.T) {
509509
default = "1"
510510
}
511511
data "coder_parameter" "b" {
512+
name = "b"
512513
type = string
513514
default = "2"
514515
}

cli/testdata/coder_list_--output_json.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"template_allow_user_cancel_workspace_jobs": false,
1616
"template_active_version_id": "============[version ID]============",
1717
"template_require_active_version": false,
18-
"template_use_classic_parameter_flow": true,
18+
"template_use_classic_parameter_flow": false,
1919
"latest_build": {
2020
"id": "========[workspace build ID]========",
2121
"created_at": "====[timestamp]=====",

cli/update_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
182182
{Name: firstParameterName, Description: firstParameterDescription, Mutable: true},
183183
{Name: immutableParameterName, Description: immutableParameterDescription, Mutable: false},
184184
{Name: secondParameterName, Description: secondParameterDescription, Mutable: true},
185-
{Name: ephemeralParameterName, Description: ephemeralParameterDescription, Mutable: true, Ephemeral: true},
185+
{Name: ephemeralParameterName, Description: ephemeralParameterDescription, Mutable: true, Ephemeral: true, DefaultValue: "unset"},
186186
})
187187
}
188188

@@ -811,7 +811,9 @@ func TestUpdateValidateRichParameters(t *testing.T) {
811811
}
812812
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, prepareEchoResponses(templateParameters))
813813
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
814-
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
814+
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID, func(request *codersdk.CreateTemplateRequest) {
815+
request.UseClassicParameterFlow = ptr.Ref(true) // TODO: Remove when dynamic parameters can pass this test
816+
})
815817

816818
// Create new workspace
817819
inv, root := clitest.New(t, "create", "my-workspace", "--yes", "--template", template.Name, "--parameter", fmt.Sprintf("%s=%s", numberParameterName, tempVal))

coderd/database/dbgen/dbgen.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func Template(t testing.TB, db database.Store, seed database.Template) database.
147147
DisplayName: takeFirst(seed.DisplayName, testutil.GetRandomName(t)),
148148
AllowUserCancelWorkspaceJobs: seed.AllowUserCancelWorkspaceJobs,
149149
MaxPortSharingLevel: takeFirst(seed.MaxPortSharingLevel, database.AppSharingLevelOwner),
150-
UseClassicParameterFlow: takeFirst(seed.UseClassicParameterFlow, true),
150+
UseClassicParameterFlow: takeFirst(seed.UseClassicParameterFlow, false),
151151
})
152152
require.NoError(t, err, "insert template")
153153

coderd/database/dump.sql

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE templates ALTER COLUMN use_classic_parameter_flow SET DEFAULT true;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE templates ALTER COLUMN use_classic_parameter_flow SET DEFAULT false;

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://github.com/coder/coder/commit/#start-of-content

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy