Skip to content

Commit cfe2120

Browse files
committed
PR suggestions, mostly comments
1 parent 1e4c183 commit cfe2120

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

coderd/workspacebuilds.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -385,10 +385,19 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
385385
}
386386

387387
// Only defer to dynamic parameters if the experiment is enabled.
388-
if api.Experiments.Enabled(codersdk.ExperimentDynamicParameters) &&
389-
createBuild.EnableDynamicParameters != nil {
390-
// Explicit opt-in
391-
builder = builder.DynamicParameters(*createBuild.EnableDynamicParameters)
388+
if api.Experiments.Enabled(codersdk.ExperimentDynamicParameters) {
389+
if createBuild.EnableDynamicParameters != nil {
390+
// Explicit opt-in
391+
builder = builder.DynamicParameters(*createBuild.EnableDynamicParameters)
392+
}
393+
} else {
394+
if createBuild.EnableDynamicParameters != nil {
395+
api.Logger.Warn(ctx, "ignoring dynamic parameter field sent by request, the experiment is not enabled",
396+
slog.F("field", *createBuild.EnableDynamicParameters),
397+
slog.F("user", apiKey.UserID.String()),
398+
slog.F("transition", string(createBuild.Transition)),
399+
)
400+
}
392401
}
393402

394403
workspaceBuild, provisionerJob, provisionerDaemons, err = builder.Build(

coderd/wsbuilder/wsbuilder.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,9 @@ func (b Builder) DeploymentValues(dv *codersdk.DeploymentValues) Builder {
162162

163163
func (b Builder) Experiments(exp codersdk.Experiments) Builder {
164164
// nolint: revive
165-
b.experiments = exp
165+
cpy := make(codersdk.Experiments, len(exp))
166+
copy(cpy, exp)
167+
b.experiments = cpy
166168
return b
167169
}
168170

codersdk/workspaces.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ type CreateWorkspaceBuildRequest struct {
112112
TemplateVersionPresetID uuid.UUID `json:"template_version_preset_id,omitempty" format:"uuid"`
113113
// EnableDynamicParameters skips some of the static parameter checking.
114114
// It will default to whatever the template has marked as the default experience.
115+
// Requires the "dynamic-experiment" to be used.
115116
EnableDynamicParameters *bool `json:"enable_dynamic_parameters,omitempty"`
116117
}
117118

enterprise/coderd/workspaces_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1738,7 +1738,9 @@ func TestWorkspaceTemplateParamsChange(t *testing.T) {
17381738
tpl := coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, tv.ID)
17391739
require.False(t, tpl.UseClassicParameterFlow, "template to use dynamic parameters")
17401740

1741-
// Creating a workspace as a non-privileged user must succeed
1741+
// When: we create a workspace build using the above template but with
1742+
// parameter values that are different from those defined in the template.
1743+
// The new values are not valid according to the original plan, but are valid.
17421744
ws, err := member.CreateUserWorkspace(ctx, memberUser.Username, codersdk.CreateWorkspaceRequest{
17431745
TemplateID: tpl.ID,
17441746
Name: coderdtest.RandomUsername(t),
@@ -1754,11 +1756,14 @@ func TestWorkspaceTemplateParamsChange(t *testing.T) {
17541756
},
17551757
EnableDynamicParameters: true,
17561758
})
1759+
1760+
// Then: the build should succeed. The updated value of param_min should be
1761+
// used to validate param instead of the value defined in the temp
17571762
require.NoError(t, err, "failed to create workspace")
17581763
createBuild := coderdtest.AwaitWorkspaceBuildJobCompleted(t, member, ws.LatestBuild.ID)
17591764
require.Equal(t, createBuild.Status, codersdk.WorkspaceStatusRunning)
17601765

1761-
// Now restart the workspace
1766+
// Now delete the workspace
17621767
build, err := member.CreateWorkspaceBuild(ctx, ws.ID, codersdk.CreateWorkspaceBuildRequest{
17631768
Transition: codersdk.WorkspaceTransitionDelete,
17641769
})

0 commit comments

Comments
 (0)