github.com/gophercloud/gophercloud@v1.11.0/openstack/clustering/v1/events/requests.go (about) 1 package events 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 ToEventListQuery() (string, error) 12 } 13 14 // ListOpts represents options used to list events. 15 type ListOpts struct { 16 Limit int `q:"limit,omitempty"` 17 Level int `q:"level,omitempty"` 18 Marker string `q:"marker,omitempty"` 19 Sort string `q:"sort,omitempty"` 20 GlobalProject *bool `q:"global_project,omitempty"` 21 OID string `q:"oid,omitempty"` 22 OType string `q:"otype,omitempty"` 23 OName string `q:"oname,omitempty"` 24 ClusterID string `q:"cluster_id,omitempty"` 25 Action string `q:"action"` 26 } 27 28 // ToEventListQuery builds a query string from ListOpts. 29 func (opts ListOpts) ToEventListQuery() (string, error) { 30 q, err := gophercloud.BuildQueryString(opts) 31 return q.String(), err 32 } 33 34 // List instructs OpenStack to provide a list of events. 35 func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { 36 url := listURL(client) 37 if opts != nil { 38 query, err := opts.ToEventListQuery() 39 if err != nil { 40 return pagination.Pager{Err: err} 41 } 42 url += query 43 } 44 return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { 45 return EventPage{pagination.LinkedPageBase{PageResult: r}} 46 }) 47 } 48 49 // Get retrieves details of a single event. 50 func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { 51 resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) 52 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 53 return 54 }