mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-10-28 03:23:25 +08:00
fix: openstack glance image-list not list all images
This commit is contained in:
@@ -22,6 +22,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
billing_api "yunion.io/x/onecloud/pkg/apis/billing"
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
@@ -125,13 +126,33 @@ func (disk *SDisk) GetMetadata() *jsonutils.JSONDict {
|
||||
}
|
||||
|
||||
func (region *SRegion) GetDisks(category, volumeBackendName string) ([]SDisk, error) {
|
||||
_, resp, err := region.CinderList("/volumes/detail", "", nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
url := "/volumes/detail"
|
||||
disks := []SDisk{}
|
||||
if err := resp.Unmarshal(&disks, "volumes"); err != nil {
|
||||
return nil, err
|
||||
for len(url) > 0 {
|
||||
_, resp, err := region.CinderList(url, "", nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_disks := []SDisk{}
|
||||
err = resp.Unmarshal(&_disks, "volumes")
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, `resp.Unmarshal(&_disks, "volumes")`)
|
||||
}
|
||||
disks = append(disks, _disks...)
|
||||
url = ""
|
||||
if resp.Contains("volumes_links") {
|
||||
nextLink := []SNextLink{}
|
||||
err = resp.Unmarshal(&nextLink, "volumes_links")
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, `resp.Unmarshal(&nextLink, "volumes_links")`)
|
||||
}
|
||||
for _, next := range nextLink {
|
||||
if next.Rel == "next" {
|
||||
url = next.Href
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
result := []SDisk{}
|
||||
for _, disk := range disks {
|
||||
|
||||
Reference in New Issue
Block a user