github.com/gophercloud/gophercloud@v1.11.0/openstack/clustering/v1/actions/requests.go (about)

     1  package actions
     2  
     3  import (
     4  	"github.com/gophercloud/gophercloud"
     5  	"github.com/gophercloud/gophercloud/pagination"
     6  )
     7  
     8  // ListOptsBuilder allows extensions to add additional parameters to the
     9  // List request.
    10  type ListOptsBuilder interface {
    11  	ToActionListQuery() (string, error)
    12  }
    13  
    14  // ListOpts represents options used to list actions.
    15  type ListOpts struct {
    16  	Limit         int    `q:"limit"`
    17  	Marker        string `q:"marker"`
    18  	Sort          string `q:"sort"`
    19  	GlobalProject *bool  `q:"global_project"`
    20  	Name          string `q:"name"`
    21  	Target        string `q:"target"`
    22  	Action        string `q:"action"`
    23  	Status        string `q:"status"`
    24  }
    25  
    26  // ToClusterListQuery builds a query string from ListOpts.
    27  func (opts ListOpts) ToActionListQuery() (string, error) {
    28  	q, err := gophercloud.BuildQueryString(opts)
    29  	return q.String(), err
    30  }
    31  
    32  // List instructs OpenStack to provide a list of actions.
    33  func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager {
    34  	url := listURL(client)
    35  	if opts != nil {
    36  		query, err := opts.ToActionListQuery()
    37  		if err != nil {
    38  			return pagination.Pager{Err: err}
    39  		}
    40  		url += query
    41  	}
    42  	return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
    43  		return ActionPage{pagination.LinkedPageBase{PageResult: r}}
    44  	})
    45  }
    46  
    47  // Get retrieves details of a single action.
    48  func Get(client *gophercloud.ServiceClient, id string) (r GetResult) {
    49  	resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}})
    50  	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
    51  	return
    52  }