chore: remove dynamic-parameters experiment (#18290)

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: jaaydenh <1858163+jaaydenh@users.noreply.github.com>
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
This commit is contained in:
Jaayden Halko
2025-06-12 12:15:05 -04:00
committed by GitHub
co-authored by blink-so[bot] jaaydenh Steven Masley
parent 70723d3b51
commit f126931219
30 changed files with 144 additions and 198 deletions
-3
View File
@@ -12745,7 +12745,6 @@ const docTemplate = `{
"notifications",
"workspace-usage",
"web-push",
"dynamic-parameters",
"workspace-prebuilds",
"agentic-chat",
"ai-tasks"
@@ -12754,7 +12753,6 @@ const docTemplate = `{
"ExperimentAITasks": "Enables the new AI tasks feature.",
"ExperimentAgenticChat": "Enables the new agentic AI chat feature.",
"ExperimentAutoFillParameters": "This should not be taken out of experiments until we have redesigned the feature.",
"ExperimentDynamicParameters": "Enables dynamic parameters when creating a workspace.",
"ExperimentExample": "This isn't used for anything.",
"ExperimentNotifications": "Sends notifications via SMTP and webhooks following certain events.",
"ExperimentWebPush": "Enables web push notifications through the browser.",
@@ -12767,7 +12765,6 @@ const docTemplate = `{
"ExperimentNotifications",
"ExperimentWorkspaceUsage",
"ExperimentWebPush",
"ExperimentDynamicParameters",
"ExperimentWorkspacePrebuilds",
"ExperimentAgenticChat",
"ExperimentAITasks"
-3
View File
@@ -11438,7 +11438,6 @@
"notifications",
"workspace-usage",
"web-push",
"dynamic-parameters",
"workspace-prebuilds",
"agentic-chat",
"ai-tasks"
@@ -11447,7 +11446,6 @@
"ExperimentAITasks": "Enables the new AI tasks feature.",
"ExperimentAgenticChat": "Enables the new agentic AI chat feature.",
"ExperimentAutoFillParameters": "This should not be taken out of experiments until we have redesigned the feature.",
"ExperimentDynamicParameters": "Enables dynamic parameters when creating a workspace.",
"ExperimentExample": "This isn't used for anything.",
"ExperimentNotifications": "Sends notifications via SMTP and webhooks following certain events.",
"ExperimentWebPush": "Enables web push notifications through the browser.",
@@ -11460,7 +11458,6 @@
"ExperimentNotifications",
"ExperimentWorkspaceUsage",
"ExperimentWebPush",
"ExperimentDynamicParameters",
"ExperimentWorkspacePrebuilds",
"ExperimentAgenticChat",
"ExperimentAITasks"
-3
View File
@@ -1153,9 +1153,6 @@ func New(options *Options) *API {
})
r.Group(func(r chi.Router) {
r.Use(
httpmw.RequireExperiment(api.Experiments, codersdk.ExperimentDynamicParameters),
)
r.Route("/dynamic-parameters", func(r chi.Router) {
r.Post("/evaluate", api.templateVersionDynamicParametersEvaluate)
r.Get("/", api.templateVersionDynamicParametersWebsocket)
+1
View File
@@ -9345,6 +9345,7 @@ func (q *FakeQuerier) InsertTemplate(_ context.Context, arg database.InsertTempl
AllowUserAutostart: true,
AllowUserAutostop: true,
MaxPortSharingLevel: arg.MaxPortSharingLevel,
UseClassicParameterFlow: true,
}
q.templates = append(q.templates, template)
return nil
+1 -1
View File
@@ -1626,7 +1626,7 @@ CREATE TABLE templates (
deprecated text DEFAULT ''::text NOT NULL,
activity_bump bigint DEFAULT '3600000000000'::bigint NOT NULL,
max_port_sharing_level app_sharing_level DEFAULT 'owner'::app_sharing_level NOT NULL,
use_classic_parameter_flow boolean DEFAULT false NOT NULL
use_classic_parameter_flow boolean DEFAULT true NOT NULL
);
COMMENT ON COLUMN templates.default_ttl IS 'The default duration for autostop for workspaces created from this template.';
@@ -0,0 +1,3 @@
ALTER TABLE templates ALTER COLUMN use_classic_parameter_flow SET DEFAULT false;
UPDATE templates SET use_classic_parameter_flow = false
@@ -0,0 +1,4 @@
-- All templates should opt out of dynamic parameters by default.
ALTER TABLE templates ALTER COLUMN use_classic_parameter_flow SET DEFAULT true;
UPDATE templates SET use_classic_parameter_flow = true
+7 -6
View File
@@ -29,9 +29,7 @@ import (
func TestDynamicParametersOwnerSSHPublicKey(t *testing.T) {
t.Parallel()
cfg := coderdtest.DeploymentValues(t)
cfg.Experiments = []string{string(codersdk.ExperimentDynamicParameters)}
ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, DeploymentValues: cfg})
ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
owner := coderdtest.CreateFirstUser(t, ownerClient)
templateAdmin, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())
@@ -354,14 +352,11 @@ type dynamicParamsTest struct {
}
func setupDynamicParamsTest(t *testing.T, args setupDynamicParamsTestParams) dynamicParamsTest {
cfg := coderdtest.DeploymentValues(t)
cfg.Experiments = []string{string(codersdk.ExperimentDynamicParameters)}
ownerClient, _, api := coderdtest.NewWithAPI(t, &coderdtest.Options{
Database: args.db,
Pubsub: args.ps,
IncludeProvisionerDaemon: true,
ProvisionerDaemonVersion: args.provisionerDaemonVersion,
DeploymentValues: cfg,
})
owner := coderdtest.CreateFirstUser(t, ownerClient)
@@ -384,6 +379,12 @@ func setupDynamicParamsTest(t *testing.T, args setupDynamicParamsTestParams) dyn
coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, version.ID)
tpl := coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, version.ID)
var err error
tpl, err = templateAdmin.UpdateTemplateMeta(t.Context(), tpl.ID, codersdk.UpdateTemplateMeta{
UseClassicParameterFlow: ptr.Ref(false),
})
require.NoError(t, err)
ctx := testutil.Context(t, testutil.WaitShort)
stream, err := templateAdmin.TemplateVersionDynamicParameters(ctx, version.ID)
if args.expectWebsocketError {
+1 -1
View File
@@ -1548,7 +1548,7 @@ func TestPatchTemplateMeta(t *testing.T) {
user := coderdtest.CreateFirstUser(t, client)
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
require.False(t, template.UseClassicParameterFlow, "default is false")
require.True(t, template.UseClassicParameterFlow, "default is true")
bTrue := true
bFalse := false
+2 -14
View File
@@ -384,20 +384,8 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
builder = builder.State(createBuild.ProvisionerState)
}
// Only defer to dynamic parameters if the experiment is enabled.
if api.Experiments.Enabled(codersdk.ExperimentDynamicParameters) {
if createBuild.EnableDynamicParameters != nil {
// Explicit opt-in
builder = builder.DynamicParameters(*createBuild.EnableDynamicParameters)
}
} else {
if createBuild.EnableDynamicParameters != nil {
api.Logger.Warn(ctx, "ignoring dynamic parameter field sent by request, the experiment is not enabled",
slog.F("field", *createBuild.EnableDynamicParameters),
slog.F("user", apiKey.UserID.String()),
slog.F("transition", string(createBuild.Transition)),
)
}
if createBuild.EnableDynamicParameters != nil {
builder = builder.DynamicParameters(*createBuild.EnableDynamicParameters)
}
workspaceBuild, provisionerJob, provisionerDaemons, err = builder.Build(
+1 -1
View File
@@ -717,7 +717,7 @@ func createWorkspace(
builder = builder.MarkPrebuiltWorkspaceClaim()
}
if req.EnableDynamicParameters && api.Experiments.Enabled(codersdk.ExperimentDynamicParameters) {
if req.EnableDynamicParameters {
builder = builder.DynamicParameters(req.EnableDynamicParameters)
}
+10 -11
View File
@@ -1042,8 +1042,15 @@ func (b *Builder) checkRunningBuild() error {
}
func (b *Builder) usingDynamicParameters() bool {
if !b.experiments.Enabled(codersdk.ExperimentDynamicParameters) {
// Experiment required
if b.dynamicParametersEnabled != nil {
return *b.dynamicParametersEnabled
}
tpl, err := b.getTemplate()
if err != nil {
return false // Let another part of the code get this error
}
if tpl.UseClassicParameterFlow {
return false
}
@@ -1056,15 +1063,7 @@ func (b *Builder) usingDynamicParameters() bool {
return false
}
if b.dynamicParametersEnabled != nil {
return *b.dynamicParametersEnabled
}
tpl, err := b.getTemplate()
if err != nil {
return false // Let another part of the code get this error
}
return !tpl.UseClassicParameterFlow
return true
}
func ProvisionerVersionSupportsDynamicParameters(version string) bool {
+5 -4
View File
@@ -894,10 +894,11 @@ func withTemplate(mTx *dbmock.MockStore) {
mTx.EXPECT().GetTemplateByID(gomock.Any(), templateID).
Times(1).
Return(database.Template{
ID: templateID,
OrganizationID: orgID,
Provisioner: database.ProvisionerTypeTerraform,
ActiveVersionID: activeVersionID,
ID: templateID,
OrganizationID: orgID,
Provisioner: database.ProvisionerTypeTerraform,
ActiveVersionID: activeVersionID,
UseClassicParameterFlow: true,
}, nil)
}