MCPcopy
hub / github.com/hashicorp/packer / generateCoreBuildProvisionerWithProvisioner

Method generateCoreBuildProvisionerWithProvisioner

packer/core.go:269–323  ·  view source on GitHub ↗
(rawP *template.Provisioner, rawName string, provisioner packersdk.Provisioner)

Source from the content-addressed store, hash-verified

267}
268
269func (c *Core) generateCoreBuildProvisionerWithProvisioner(rawP *template.Provisioner, rawName string, provisioner packersdk.Provisioner) (CoreBuildProvisioner, error) {
270 cbp := CoreBuildProvisioner{}
271
272 // Get the configuration
273 config := make([]interface{}, 1, 2)
274 config[0] = rawP.Config
275 if rawP.Override != nil {
276 if override, ok := rawP.Override[rawName]; ok {
277 config = append(config, override)
278 }
279 }
280 // If we're pausing, we wrap the provisioner in a special pauser.
281 if rawP.PauseBefore != 0 {
282 provisioner = &PausedProvisioner{
283 PauseBefore: rawP.PauseBefore,
284 Provisioner: provisioner,
285 }
286 } else if rawP.Timeout != 0 {
287 provisioner = &TimeoutProvisioner{
288 Timeout: rawP.Timeout,
289 Provisioner: provisioner,
290 }
291 }
292 maxRetries := 0
293 if rawP.MaxRetries != "" {
294 renderedMaxRetries, err := interpolate.Render(rawP.MaxRetries, c.Context())
295 if err != nil {
296 return cbp, fmt.Errorf("failed to interpolate `max_retries`: %s", err.Error())
297 }
298 maxRetries, err = strconv.Atoi(renderedMaxRetries)
299 if err != nil {
300 return cbp, fmt.Errorf("`max_retries` must be a valid integer: %s", err.Error())
301 }
302 }
303 if maxRetries != 0 {
304 provisioner = &RetriedProvisioner{
305 MaxRetries: maxRetries,
306 Provisioner: provisioner,
307 }
308 }
309
310 if rawP.Type == "hcp-sbom" {
311 provisioner = &SBOMInternalProvisioner{
312 Provisioner: provisioner,
313 }
314 }
315
316 cbp = CoreBuildProvisioner{
317 PType: rawP.Type,
318 Provisioner: provisioner,
319 config: config,
320 }
321
322 return cbp, nil
323}
324
325// GenerateCoreBuildProvisionerFromHCLBody converts a parsed enforced provisioner body into
326// a legacy JSON core build provisioner, using the same runtime behavior as normal JSON templates.

Calls 3

ContextMethod · 0.95
ErrorMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected