github.com/gophercloud/gophercloud@v1.11.0/openstack/blockstorage/v3/attachments/util.go (about)

     1  package attachments
     2  
     3  import (
     4  	"github.com/gophercloud/gophercloud"
     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 *gophercloud.ServiceClient, id, status string, secs int) error {
    10  	return gophercloud.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  }