From c180487af621c66ed801bd871c0aa419907aa3ac Mon Sep 17 00:00:00 2001 From: Jack Pearkes Date: Thu, 26 Feb 2015 09:59:42 -0800 Subject: [PATCH] helper/resource: allow configuration of not found checks in state change --- helper/resource/state.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/helper/resource/state.go b/helper/resource/state.go index 8c5ec4b273..7a71f11546 100644 --- a/helper/resource/state.go +++ b/helper/resource/state.go @@ -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 }