package servers | |
import "github.com/rackspace/gophercloud" | |
// WaitForStatus will continually poll a server until it successfully transitions to a specified | |
// status. It will do this for at most the number of seconds specified. | |
func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { | |
return gophercloud.WaitFor(secs, func() (bool, error) { | |
current, err := Get(c, id).Extract() | |
if err != nil { | |
return false, err | |
} | |
if current.Status == status { | |
return true, nil | |
} | |
return false, nil | |
}) | |
} |