From 8204944c0e1021afe4ddfcad3056775262013210 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sat, 28 Dec 2013 10:03:22 -0700 Subject: [PATCH] builder/amazon: handle cases when amazon SG isn't available [GH-494] --- CHANGELOG.md | 2 ++ builder/amazon/common/step_security_group.go | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df46f68f2..0c6b3d02c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,6 +78,8 @@ BUG FIXES: before a "/" [GH-716] * core: "{{timestamp}}" values will always be the same for the entire duration of a build. [GH-744] +* builder/amazon: Handle cases where security group isn't instantly + available. [GH-494] * builder/virtualbox: don't download guest additions if disabled. [GH-731] * post-processor/vsphere: Uploads VM properly. [GH-694] * post-processor/vsphere: Process user variables. diff --git a/builder/amazon/common/step_security_group.go b/builder/amazon/common/step_security_group.go index 28eb3134c..38ee00804 100644 --- a/builder/amazon/common/step_security_group.go +++ b/builder/amazon/common/step_security_group.go @@ -61,7 +61,17 @@ func (s *StepSecurityGroup) Run(state multistep.StateBag) multistep.StepAction { } ui.Say("Authorizing SSH access on the temporary security group...") - if _, err := ec2conn.AuthorizeSecurityGroup(groupResp.SecurityGroup, perms); err != nil { + for i := 0; i < 5; i++ { + _, err = ec2conn.AuthorizeSecurityGroup(groupResp.SecurityGroup, perms) + if err == nil { + break + } + + log.Printf("Error authorizing. Will sleep and retry. %s", err) + time.Sleep((time.Duration(i) * time.Second) + 1) + } + + if err != nil { err := fmt.Errorf("Error creating temporary security group: %s", err) state.Put("error", err) ui.Error(err.Error())