builder/amazon/common: if instance query returns none, ignore

This commit is contained in:
Mitchell Hashimoto 2013-09-05 17:19:23 -07:00
parent 535d2a7cfc
commit 67c71aa836
2 changed files with 29 additions and 17 deletions

View File

@ -25,6 +25,8 @@ BUG FIXES:
* builder/amazon/all: When copying AMI to multiple regions, copy
the metadata (tags and attributes) as well. [GH-388]
* builder/amazon/all: Fix panic case where eventually consistent
instance state caused an index out of bounds.
* builder/vmware: Autoanswer VMware dialogs. [GH-393]
* command/inspect: Fix weird output for default values for optional vars.

View File

@ -40,6 +40,12 @@ func InstanceStateRefreshFunc(conn *ec2.EC2, i *ec2.Instance) StateRefreshFunc {
return nil, "", err
}
if len(resp.Reservations) == 0 || len(resp.Reservations[0].Instances) == 0 {
// Sometimes AWS just has consistency issues and doesn't see
// our instance yet. Return an empty state.
return nil, "", nil
}
i = &resp.Reservations[0].Instances[0]
return i, i.State.Name, nil
}
@ -57,6 +63,9 @@ func WaitForState(conf *StateChangeConf) (i interface{}, err error) {
return
}
// Check states only if we were able to refresh to an instance
// that exists.
if i != nil {
if currentState == conf.Target {
return
}
@ -79,6 +88,7 @@ func WaitForState(conf *StateChangeConf) (i interface{}, err error) {
fmt.Errorf("unexpected state '%s', wanted target '%s'", currentState, conf.Target)
return
}
}
time.Sleep(2 * time.Second)
}