diff --git a/builder/scaleway/builder.go b/builder/scaleway/builder.go index f2266576e..266b9e41b 100644 --- a/builder/scaleway/builder.go +++ b/builder/scaleway/builder.go @@ -4,6 +4,7 @@ package scaleway import ( + "errors" "fmt" "log" @@ -64,16 +65,24 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe new(stepImage), } - b.runner = common.NewRunner(steps, b.config.PackerConfig, ui) + b.runner = common.NewRunnerWithPauseFn(steps, b.config.PackerConfig, ui, state) b.runner.Run(state) if rawErr, ok := state.GetOk("error"); ok { return nil, rawErr.(error) } + // If we were interrupted or cancelled, then just exit. + if _, ok := state.GetOk(multistep.StateCancelled); ok { + return nil, errors.New("Build was cancelled.") + } + + if _, ok := state.GetOk(multistep.StateHalted); ok { + return nil, errors.New("Build was halted.") + } + if _, ok := state.GetOk("snapshot_name"); !ok { - log.Println("Failed to find snapshot_name in state. Bug?") - return nil, nil + return nil, errors.New("Cannot find snapshot_name in state.") } artifact := &Artifact{