github.com/huaweicloud/golangsdk@v0.0.0-20210831081626-d823fe11ceba/openstack/blockstorage/v1/snapshots/util.go (about)

     1  package snapshots
     2  
     3  import (
     4  	"github.com/huaweicloud/golangsdk"
     5  )
     6  
     7  // WaitForStatus will continually poll the resource, checking for a particular
     8  // status. It will do this for the amount of seconds defined.
     9  func WaitForStatus(c *golangsdk.ServiceClient, id, status string, secs int) error {
    10  	return golangsdk.WaitFor(secs, func() (bool, error) {
    11  		current, err := Get(c, id).Extract()
    12  		if err != nil {
    13  			return false, err
    14  		}
    15  
    16  		if current.Status == status {
    17  			return true, nil
    18  		}
    19  
    20  		return false, nil
    21  	})
    22  }