(rawP *template.Provisioner, rawName string, provisioner packersdk.Provisioner)
| 267 | } |
| 268 | |
| 269 | func (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. |
no test coverage detected