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 }