github.com/hashicorp/packer@v1.14.3/provisioner/sleep/provisioner.go (about)

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  //go:generate packer-sdc mapstructure-to-hcl2 -type Provisioner
     5  
     6  package sleep
     7  
     8  import (
     9  	"context"
    10  	"time"
    11  
    12  	"github.com/hashicorp/hcl/v2/hcldec"
    13  	packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
    14  	"github.com/hashicorp/packer-plugin-sdk/template/config"
    15  )
    16  
    17  type Provisioner struct {
    18  	Duration time.Duration
    19  }
    20  
    21  var _ packersdk.Provisioner = new(Provisioner)
    22  
    23  func (p *Provisioner) ConfigSpec() hcldec.ObjectSpec { return p.FlatMapstructure().HCL2Spec() }
    24  
    25  func (p *Provisioner) FlatConfig() interface{} { return p.FlatMapstructure() }
    26  
    27  func (p *Provisioner) Prepare(raws ...interface{}) error {
    28  	return config.Decode(&p, &config.DecodeOpts{}, raws...)
    29  }
    30  
    31  func (p *Provisioner) Provision(ctx context.Context, _ packersdk.Ui, _ packersdk.Communicator, _ map[string]interface{}) error {
    32  	select {
    33  	case <-ctx.Done():
    34  		return ctx.Err()
    35  	case <-time.After(p.Duration):
    36  		return nil
    37  	}
    38  }