github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/gaussdb/v3/util.go (about)

     1  package v3
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/opentelekomcloud/gophertelekomcloud"
     7  )
     8  
     9  func WaitForGaussJob(client *golangsdk.ServiceClient, jobId string, timeout int) (*GetJobInfoDetail, error) {
    10  	var res *GetJobInfoDetail
    11  
    12  	err := golangsdk.WaitFor(timeout, func() (bool, error) {
    13  		cur, err := ShowJobInfo(client, jobId)
    14  		if err != nil {
    15  			return false, err
    16  		}
    17  		res = cur
    18  
    19  		if cur.Status == "Completed" {
    20  			return true, nil
    21  		}
    22  
    23  		if cur.Status == "Failed" {
    24  			return false, fmt.Errorf("job %s failed: %s", jobId, cur.FailReason)
    25  		}
    26  
    27  		return false, nil
    28  	})
    29  
    30  	return res, err
    31  }