Wire context through misc steps

Some steps actually need to pass the context around, so let's create
a ctx variable and pass it.
This commit is contained in:
Matthew Hooker 2018-01-22 15:29:42 -08:00
parent 7a189a83a1
commit 5d48d658b4
No known key found for this signature in database
GPG Key ID: 7B5F933D9CE8C6A1
3 changed files with 12 additions and 11 deletions

View File

@ -37,7 +37,7 @@ type StepDownloadGuestAdditions struct {
Ctx interpolate.Context Ctx interpolate.Context
} }
func (s *StepDownloadGuestAdditions) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { func (s *StepDownloadGuestAdditions) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction {
var action multistep.StepAction var action multistep.StepAction
driver := state.Get("driver").(Driver) driver := state.Get("driver").(Driver)
ui := state.Get("ui").(packer.Ui) ui := state.Get("ui").(packer.Ui)
@ -114,7 +114,7 @@ func (s *StepDownloadGuestAdditions) Run(_ context.Context, state multistep.Stat
if s.GuestAdditionsSHA256 != "" { if s.GuestAdditionsSHA256 != "" {
checksum = s.GuestAdditionsSHA256 checksum = s.GuestAdditionsSHA256
} else { } else {
checksum, action = s.downloadAdditionsSHA256(state, version, additionsName) checksum, action = s.downloadAdditionsSHA256(ctx, state, version, additionsName)
if action != multistep.ActionContinue { if action != multistep.ActionContinue {
return action return action
} }
@ -141,12 +141,12 @@ func (s *StepDownloadGuestAdditions) Run(_ context.Context, state multistep.Stat
Url: []string{url}, Url: []string{url},
} }
return downStep.Run(state) return downStep.Run(ctx, state)
} }
func (s *StepDownloadGuestAdditions) Cleanup(state multistep.StateBag) {} func (s *StepDownloadGuestAdditions) Cleanup(state multistep.StateBag) {}
func (s *StepDownloadGuestAdditions) downloadAdditionsSHA256(state multistep.StateBag, additionsVersion string, additionsName string) (string, multistep.StepAction) { func (s *StepDownloadGuestAdditions) downloadAdditionsSHA256(ctx context.Context, state multistep.StateBag, additionsVersion string, additionsName string) (string, multistep.StepAction) {
// First things first, we get the list of checksums for the files available // First things first, we get the list of checksums for the files available
// for this version. // for this version.
checksumsUrl := fmt.Sprintf( checksumsUrl := fmt.Sprintf(
@ -170,7 +170,7 @@ func (s *StepDownloadGuestAdditions) downloadAdditionsSHA256(state multistep.Sta
Url: []string{checksumsUrl}, Url: []string{checksumsUrl},
} }
action := downStep.Run(state) action := downStep.Run(ctx, state)
if action == multistep.ActionHalt { if action == multistep.ActionHalt {
return "", action return "", action
} }

View File

@ -1,6 +1,7 @@
package common package common
import ( import (
"context"
"fmt" "fmt"
"log" "log"
"os" "os"
@ -65,8 +66,8 @@ func (s abortStep) InnerStepName() string {
return typeName(s.step) return typeName(s.step)
} }
func (s abortStep) Run(state multistep.StateBag) multistep.StepAction { func (s abortStep) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction {
return s.step.Run(state) return s.step.Run(ctx, state)
} }
func (s abortStep) Cleanup(state multistep.StateBag) { func (s abortStep) Cleanup(state multistep.StateBag) {
@ -90,9 +91,9 @@ func (s askStep) InnerStepName() string {
return typeName(s.step) return typeName(s.step)
} }
func (s askStep) Run(state multistep.StateBag) (action multistep.StepAction) { func (s askStep) Run(ctx context.Context, state multistep.StateBag) (action multistep.StepAction) {
for { for {
action = s.step.Run(state) action = s.step.Run(ctx, state)
if action != multistep.ActionHalt { if action != multistep.ActionHalt {
return return

View File

@ -44,7 +44,7 @@ type StepConnect struct {
substep multistep.Step substep multistep.Step
} }
func (s *StepConnect) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { func (s *StepConnect) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction {
typeMap := map[string]multistep.Step{ typeMap := map[string]multistep.Step{
"none": nil, "none": nil,
"ssh": &StepConnectSSH{ "ssh": &StepConnectSSH{
@ -85,7 +85,7 @@ func (s *StepConnect) Run(_ context.Context, state multistep.StateBag) multistep
} }
s.substep = step s.substep = step
return s.substep.Run(state) return s.substep.Run(ctx, state)
} }
func (s *StepConnect) Cleanup(state multistep.StateBag) { func (s *StepConnect) Cleanup(state multistep.StateBag) {