blob: 9976a54f26c06023a74621459e844ae949d1fe2e [file] [log] [blame]
Ash Wilson93757df2014-10-21 09:36:27 -04001package servers
2
Krzysztof Szukiełojć3f41d082017-05-07 14:43:06 +02003import "gerrit.mcp.mirantis.net/debian/gophercloud.git"
Ash Wilson93757df2014-10-21 09:36:27 -04004
5// WaitForStatus will continually poll a server until it successfully transitions to a specified
6// status. It will do this for at most the number of seconds specified.
7func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error {
8 return gophercloud.WaitFor(secs, func() (bool, error) {
9 current, err := Get(c, id).Extract()
10 if err != nil {
11 return false, err
12 }
13
14 if current.Status == status {
15 return true, nil
16 }
17
18 return false, nil
19 })
20}