MCPcopy Index your code
hub / github.com/coder/coder / dynamicRenderer

Method dynamicRenderer

coderd/dynamicparameters/render.go:170–213  ·  view source on GitHub ↗

Renderer caches all the necessary files when rendering a template version's parameters. It must be closed after use to release the cached files.

(ctx context.Context, db database.Store, cache *files.CacheCloser)

Source from the content-addressed store, hash-verified

168// Renderer caches all the necessary files when rendering a template version's
169// parameters. It must be closed after use to release the cached files.
170func (r *loader) dynamicRenderer(ctx context.Context, db database.Store, cache *files.CacheCloser) (*dynamicRenderer, error) {
171 closeFiles := true // If the function returns with no error, this will toggle to false.
172 defer func() {
173 if closeFiles {
174 cache.Close()
175 }
176 }()
177
178 tfVarValues, err := VariableValues(*r.templateVariableValues)
179 if err != nil {
180 return nil, xerrors.Errorf("parse variable values: %w", err)
181 }
182
183 // If they can read the template version, then they can read the file for
184 // parameter loading purposes.
185 //nolint:gocritic
186 fileCtx := dbauthz.AsFileReader(ctx)
187
188 var templateFS fs.FS
189
190 templateFS, err = cache.Acquire(fileCtx, db, r.job.FileID)
191 if err != nil {
192 return nil, xerrors.Errorf("acquire template file: %w", err)
193 }
194
195 var moduleFilesFS *files.CloseFS
196 if r.terraformValues.CachedModuleFiles.Valid {
197 moduleFilesFS, err = cache.Acquire(fileCtx, db, r.terraformValues.CachedModuleFiles.UUID)
198 if err != nil {
199 return nil, xerrors.Errorf("acquire module files: %w", err)
200 }
201 templateFS = files.NewOverlayFS(templateFS, []files.Overlay{{Path: ".terraform/modules", FS: moduleFilesFS}})
202 }
203
204 closeFiles = false // Caller will have to call close
205 return &dynamicRenderer{
206 data: r,
207 templateFS: templateFS,
208 db: db,
209 ownerErrors: make(map[uuid.UUID]error),
210 close: cache.Close,
211 tfvarValues: tfVarValues,
212 }, nil
213}
214
215type dynamicRenderer struct {
216 db database.Store

Callers 1

RendererMethod · 0.95

Calls 6

AsFileReaderFunction · 0.92
NewOverlayFSFunction · 0.92
VariableValuesFunction · 0.85
CloseMethod · 0.65
AcquireMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected