Merge pull request #1062 from hashicorp/configure-wait-checks

providers/digitalocean: Configure wait checks
This commit is contained in:
Jack Pearkes 2015-02-26 14:55:24 -08:00
commit 5c74a63f3d
2 changed files with 18 additions and 7 deletions

View File

@ -366,6 +366,11 @@ func WaitForDropletAttribute(
Timeout: 60 * time.Minute,
Delay: 10 * time.Second,
MinTimeout: 3 * time.Second,
// This is a hack around DO API strangeness.
// https://github.com/hashicorp/terraform/issues/481
//
NotFoundChecks: 60,
}
return stateConf.WaitForState()

View File

@ -22,12 +22,13 @@ type StateRefreshFunc func() (result interface{}, state string, err error)
// StateChangeConf is the configuration struct used for `WaitForState`.
type StateChangeConf struct {
Delay time.Duration // Wait this time before starting checks
Pending []string // States that are "allowed" and will continue trying
Refresh StateRefreshFunc // Refreshes the current state
Target string // Target state
Timeout time.Duration // The amount of time to wait before timeout
MinTimeout time.Duration // Smallest time to wait before refreshes
Delay time.Duration // Wait this time before starting checks
Pending []string // States that are "allowed" and will continue trying
Refresh StateRefreshFunc // Refreshes the current state
Target string // Target state
Timeout time.Duration // The amount of time to wait before timeout
MinTimeout time.Duration // Smallest time to wait before refreshes
NotFoundChecks int // Number of times to allow not found
}
// WaitForState watches an object and waits for it to achieve the state
@ -38,6 +39,11 @@ func (conf *StateChangeConf) WaitForState() (interface{}, error) {
notfoundTick := 0
// Set a default for times to check for not found
if conf.NotFoundChecks == 0 {
conf.NotFoundChecks = 20
}
var result interface{}
var resulterr error
@ -78,7 +84,7 @@ func (conf *StateChangeConf) WaitForState() (interface{}, error) {
// If we didn't find the resource, check if we have been
// not finding it for awhile, and if so, report an error.
notfoundTick += 1
if notfoundTick > 20 {
if notfoundTick > conf.NotFoundChecks {
resulterr = errors.New("couldn't find resource")
return
}