mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
35 lines
696 B
Go
35 lines
696 B
Go
package cloudprovider
|
|
|
|
import "time"
|
|
|
|
func WaitStatus(res ICloudResource, expect string, interval time.Duration, timeout time.Duration) error {
|
|
startTime := time.Now()
|
|
for time.Now().Sub(startTime) < timeout {
|
|
err := res.Refresh()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if res.GetStatus() == expect {
|
|
return nil
|
|
}
|
|
time.Sleep(interval)
|
|
}
|
|
return ErrTimeout
|
|
}
|
|
|
|
func WaitDeleted(res ICloudResource, interval time.Duration, timeout time.Duration) error {
|
|
startTime := time.Now()
|
|
for time.Now().Sub(startTime) < timeout {
|
|
err := res.Refresh()
|
|
if err != nil {
|
|
if err == ErrNotFound {
|
|
return nil
|
|
} else {
|
|
return err
|
|
}
|
|
}
|
|
time.Sleep(interval)
|
|
}
|
|
return ErrTimeout
|
|
}
|