Skip to content

Instantly share code, notes, and snippets.

@kayrus
Created January 25, 2021 12:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kayrus/f03c3bcb5b803f8a5df7d572a859aa23 to your computer and use it in GitHub Desktop.
Save kayrus/f03c3bcb5b803f8a5df7d572a859aa23 to your computer and use it in GitHub Desktop.
gophercloud volumes list test
package main
import (
"fmt"
"net/http"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/openstack"
"github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes"
"github.com/gophercloud/gophercloud/pagination"
"github.com/gophercloud/utils/client"
"github.com/gophercloud/utils/openstack/clientconfig"
)
func main() {
ao, err := clientconfig.AuthOptions(nil)
if err != nil {
panic(err)
}
provider, err := openstack.NewClient(ao.IdentityEndpoint)
if err != nil {
panic(err)
}
provider.HTTPClient = http.Client{
Transport: &client.RoundTripper{
Rt: &http.Transport{},
Logger: &client.DefaultLogger{},
},
}
err = openstack.Authenticate(provider, *ao)
if err != nil {
panic(err)
}
c, err := openstack.NewBlockStorageV3(provider, gophercloud.EndpointOpts{})
if err != nil {
panic(err)
}
var vols []volumes.Volume
var count int
listOpts := volumes.ListOpts{
//Limit: 10,
Marker: "",
}
//pages, err := volumes.List(c, listOpts).AllPages()
err = volumes.List(c, listOpts).EachPage(func(page pagination.Page) (bool, error) {
count = count + 1
var err error
vols, err = volumes.ExtractVolumes(page)
if err != nil {
return false, err
}
next, err := page.NextPageURL()
if err != nil {
return false, err
}
fmt.Println(next)
if count > 2 {
return false, nil
}
return true, nil
})
if err != nil {
panic(err)
}
/*
vols, err := volumes.ExtractVolumes(pages)
if err != nil {
panic(err)
}
*/
fmt.Printf("%+#v", vols)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment