mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
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:
co-authored by
blink-so[bot]
jaaydenh
Steven Masley
parent
70723d3b51
commit
f126931219
Generated
-3
@@ -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"
|
||||
|
||||
Generated
-3
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Generated
+1
-1
@@ -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
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user