@@ -13,6 +13,7 @@ import (
13
13
14
14
"github.com/coder/coder/v2/coderd/database"
15
15
"github.com/coder/coder/v2/coderd/database/dbauthz"
16
+ "github.com/coder/coder/v2/coderd/files"
16
17
"github.com/coder/coder/v2/coderd/httpapi"
17
18
"github.com/coder/coder/v2/coderd/httpmw"
18
19
"github.com/coder/coder/v2/codersdk"
@@ -68,7 +69,7 @@ func (api *API) templateVersionDynamicParameters(rw http.ResponseWriter, r *http
68
69
return
69
70
}
70
71
71
- fs , err := api .FileCache .Acquire (fileCtx , fileID )
72
+ templateFS , err := api .FileCache .Acquire (fileCtx , fileID )
72
73
defer api .FileCache .Release (fileID )
73
74
if err != nil {
74
75
httpapi .Write (ctx , rw , http .StatusNotFound , codersdk.Response {
@@ -85,6 +86,19 @@ func (api *API) templateVersionDynamicParameters(rw http.ResponseWriter, r *http
85
86
tf , err := api .Database .GetTemplateVersionTerraformValues (ctx , templateVersion .ID )
86
87
if err == nil {
87
88
plan = tf .CachedPlan
89
+
90
+ if tf .CachedModuleFiles .Valid {
91
+ moduleFilesFS , err := api .FileCache .Acquire (fileCtx , tf .CachedModuleFiles .UUID )
92
+ defer api .FileCache .Release (tf .CachedModuleFiles .UUID )
93
+ if err != nil {
94
+ httpapi .Write (ctx , rw , http .StatusNotFound , codersdk.Response {
95
+ Message : "Internal error fetching Terraform modules." ,
96
+ Detail : err .Error (),
97
+ })
98
+ return
99
+ }
100
+ templateFS = files .NewOverlayFS (templateFS , moduleFilesFS , ".terraform/modules" )
101
+ }
88
102
} else if ! xerrors .Is (err , sql .ErrNoRows ) {
89
103
httpapi .Write (ctx , rw , http .StatusInternalServerError , codersdk.Response {
90
104
Message : "Failed to retrieve Terraform values for template version" ,
@@ -124,7 +138,7 @@ func (api *API) templateVersionDynamicParameters(rw http.ResponseWriter, r *http
124
138
)
125
139
126
140
// Send an initial form state, computed without any user input.
127
- result , diagnostics := preview .Preview (ctx , input , fs )
141
+ result , diagnostics := preview .Preview (ctx , input , templateFS )
128
142
response := codersdk.DynamicParametersResponse {
129
143
ID : - 1 ,
130
144
Diagnostics : previewtypes .Diagnostics (diagnostics ),
@@ -152,7 +166,7 @@ func (api *API) templateVersionDynamicParameters(rw http.ResponseWriter, r *http
152
166
return
153
167
}
154
168
input .ParameterValues = update .Inputs
155
- result , diagnostics := preview .Preview (ctx , input , fs )
169
+ result , diagnostics := preview .Preview (ctx , input , templateFS )
156
170
response := codersdk.DynamicParametersResponse {
157
171
ID : update .ID ,
158
172
Diagnostics : previewtypes .Diagnostics (diagnostics ),
0 commit comments