chore: per template opt into cached terraform directories (#20609)

For experimental and dogfood purposes, this adds the ability to opt in a single template. 
Leaving the rest of the templates as is. 

For GA, this setting might be removed or changed.
This commit is contained in:
Steven Masley
2025-11-13 14:04:12 -06:00
committed by GitHub
parent edf056babc
commit fe3b825b86
22 changed files with 221 additions and 53 deletions
+15 -7
View File
@@ -773,6 +773,11 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
classicTemplateFlow = *req.UseClassicParameterFlow
}
useTerraformWorkspaceCache := template.UseTerraformWorkspaceCache
if req.UseTerraformWorkspaceCache != nil {
useTerraformWorkspaceCache = *req.UseTerraformWorkspaceCache
}
displayName := ptr.NilToDefault(req.DisplayName, template.DisplayName)
description := ptr.NilToDefault(req.Description, template.Description)
icon := ptr.NilToDefault(req.Icon, template.Icon)
@@ -798,7 +803,8 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
(deprecationMessage == template.Deprecated) &&
(classicTemplateFlow == template.UseClassicParameterFlow) &&
maxPortShareLevel == template.MaxPortSharingLevel &&
corsBehavior == template.CorsBehavior {
corsBehavior == template.CorsBehavior &&
useTerraformWorkspaceCache == template.UseTerraformWorkspaceCache {
return nil
}
@@ -841,6 +847,7 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
MaxPortSharingLevel: maxPortShareLevel,
UseClassicParameterFlow: classicTemplateFlow,
CorsBehavior: corsBehavior,
UseTerraformWorkspaceCache: useTerraformWorkspaceCache,
})
if err != nil {
return xerrors.Errorf("update template metadata: %w", err)
@@ -1119,12 +1126,13 @@ func (api *API) convertTemplate(
DaysOfWeek: codersdk.BitmapToWeekdays(template.AutostartAllowedDays()),
},
// These values depend on entitlements and come from the templateAccessControl
RequireActiveVersion: templateAccessControl.RequireActiveVersion,
Deprecated: templateAccessControl.IsDeprecated(),
DeprecationMessage: templateAccessControl.Deprecated,
MaxPortShareLevel: maxPortShareLevel,
UseClassicParameterFlow: template.UseClassicParameterFlow,
CORSBehavior: codersdk.CORSBehavior(template.CorsBehavior),
RequireActiveVersion: templateAccessControl.RequireActiveVersion,
Deprecated: templateAccessControl.IsDeprecated(),
DeprecationMessage: templateAccessControl.Deprecated,
MaxPortShareLevel: maxPortShareLevel,
UseClassicParameterFlow: template.UseClassicParameterFlow,
UseTerraformWorkspaceCache: template.UseTerraformWorkspaceCache,
CORSBehavior: codersdk.CORSBehavior(template.CorsBehavior),
}
}