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 }