github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/dataarts/v1.1/job/Get.go (about)

     1  package job
     2  
     3  import (
     4  	"github.com/opentelekomcloud/gophertelekomcloud"
     5  	"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
     6  	"github.com/opentelekomcloud/gophertelekomcloud/pagination"
     7  )
     8  
     9  type GetQuery struct {
    10  	Filter    string `q:"filter"`
    11  	PageNo    int    `q:"page_no"`
    12  	PageSize  int    `q:"page_size"`
    13  	JobType   string `q:"jobType"`
    14  	ClusterId string
    15  	JobName   string
    16  }
    17  
    18  // Get returns 500 error, not usable
    19  func Get(client *golangsdk.ServiceClient, opts GetQuery) ([]Job, error) {
    20  	url, err := golangsdk.NewURLBuilder().WithEndpoints("clusters", opts.ClusterId, "cdm", "job", opts.JobName).WithQueryParams(&opts).Build()
    21  	if err != nil {
    22  		return nil, err
    23  	}
    24  
    25  	pages, err := pagination.NewPager(client, client.ServiceURL(url.String()),
    26  		func(r pagination.PageResult) pagination.Page {
    27  			return JobPage{pagination.LinkedPageBase{PageResult: r}}
    28  		}).AllPages()
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	allJobs, err := ExtractJobs(pages)
    34  	if err != nil {
    35  		return nil, err
    36  	}
    37  
    38  	return allJobs, err
    39  }
    40  
    41  func ExtractJobs(r pagination.Page) ([]Job, error) {
    42  	var res []Job
    43  	err := extract.IntoSlicePtr(r.(JobPage).Result.BodyReader(), &res, "jobs")
    44  	if err != nil {
    45  		return nil, err
    46  	}
    47  	return res, nil
    48  }
    49  
    50  type Job struct {
    51  }
    52  
    53  type JobPage struct {
    54  	pagination.LinkedPageBase
    55  }