post-processor/vagrant-cloud: retry uploads [GH-2167]
This commit is contained in:
parent
d9fceaf39d
commit
f6660e8a4f
|
@ -2,6 +2,8 @@ package vagrantcloud
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/mitchellh/multistep"
|
||||
"github.com/mitchellh/packer/packer"
|
||||
)
|
||||
|
@ -17,13 +19,38 @@ func (s *stepUpload) Run(state multistep.StateBag) multistep.StepAction {
|
|||
url := upload.UploadPath
|
||||
|
||||
ui.Say(fmt.Sprintf("Uploading box: %s", artifactFilePath))
|
||||
ui.Message(
|
||||
"Depending on your internet connection and the size of the box,\n" +
|
||||
"this may take some time")
|
||||
|
||||
ui.Message("Depending on your internet connection and the size of the box, this may take some time")
|
||||
var finalErr error
|
||||
for i := 0; i < 3; i++ {
|
||||
if i > 0 {
|
||||
ui.Message(fmt.Sprintf("Uploading box, attempt %d", i+1))
|
||||
}
|
||||
|
||||
resp, err := client.Upload(artifactFilePath, url)
|
||||
resp, err := client.Upload(artifactFilePath, url)
|
||||
if err != nil {
|
||||
finalErr = err
|
||||
ui.Message(fmt.Sprintf(
|
||||
"Error uploading box! Will retry in 10 seconds. Error: %s", err))
|
||||
time.Sleep(10 * time.Second)
|
||||
continue
|
||||
}
|
||||
if resp.StatusCode != 200 {
|
||||
finalErr = fmt.Errorf("bad HTTP status: %d", resp.StatusCode)
|
||||
ui.Message(fmt.Sprintf(
|
||||
"Error uploading box! Will retry in 10 seconds. Status: %d",
|
||||
resp.StatusCode))
|
||||
time.Sleep(10 * time.Second)
|
||||
continue
|
||||
}
|
||||
|
||||
if err != nil || (resp.StatusCode != 200) {
|
||||
state.Put("error", fmt.Errorf("Error uploading Box: %s", err))
|
||||
finalErr = nil
|
||||
}
|
||||
|
||||
if finalErr != nil {
|
||||
state.Put("error", finalErr)
|
||||
return multistep.ActionHalt
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue