fix(region): resource apsara resource id not found error

This commit is contained in:
Qu Xuan
2021-09-08 15:55:07 +08:00
parent 9c800297b7
commit c4ba8aa63f
3 changed files with 43 additions and 17 deletions
+10
View File
@@ -226,13 +226,20 @@ func _jsonRequest(client *sdk.Client, domain string, version string, apiName str
req.Domain = domain
req.Version = version
req.ApiName = apiName
id := ""
if params != nil {
for k, v := range params {
req.QueryParams[k] = v
if strings.ToLower(k) != "regionid" && strings.HasSuffix(k, "Id") {
id = v
}
}
}
req.Scheme = "http"
req.GetHeaders()["User-Agent"] = "vendor/yunion-OneCloud@" + v.Get().GitVersion
if strings.HasPrefix(apiName, "Describe") && len(id) > 0 {
req.GetHeaders()["x-acs-instanceId"] = id
}
resp, err := processCommonRequest(client, req)
if err != nil {
@@ -250,6 +257,9 @@ func _jsonRequest(client *sdk.Client, domain string, version string, apiName str
return nil, fmt.Errorf(body.String())
}
}
if body.Contains("errorKey") {
return nil, errors.Errorf(body.String())
}
return body, nil
}
+18 -14
View File
@@ -274,25 +274,29 @@ func (self *SRegion) ImportImage(name string, osArch string, osType string, osDi
}
func (self *SRegion) GetImage(imageId string) (*SImage, error) {
images, _, err := self.GetImages("", "", []string{imageId}, "", 0, 1)
if err != nil {
return nil, err
for _, owner := range []ImageOwnerType{ImageOwnerSelf, ImageOwnerSystem} {
images, _, err := self.GetImages("", owner, []string{imageId}, "", 0, 1)
if err != nil {
return nil, err
}
if len(images) == 1 {
return &images[0], nil
}
}
if len(images) == 0 {
return nil, cloudprovider.ErrNotFound
}
return &images[0], nil
return nil, cloudprovider.ErrNotFound
}
func (self *SRegion) GetImageByName(name string) (*SImage, error) {
images, _, err := self.GetImages("", "", nil, name, 0, 1)
if err != nil {
return nil, err
for _, owner := range []ImageOwnerType{ImageOwnerSelf, ImageOwnerSystem} {
images, _, err := self.GetImages("", owner, nil, name, 0, 1)
if err != nil {
return nil, err
}
if len(images) == 1 {
return &images[0], nil
}
}
if len(images) == 0 {
return nil, cloudprovider.ErrNotFound
}
return &images[0], nil
return nil, cloudprovider.ErrNotFound
}
func (self *SRegion) GetImagesBySnapshot(snapshotId string, offset int, limit int) ([]SImage, int, error) {
+15 -3
View File
@@ -69,18 +69,30 @@ func (self *SStoragecache) IsEmulated() bool {
return false
}
func (self *SStoragecache) fetchImages() error {
func (self *SStoragecache) getImages(owner ImageOwnerType) ([]SImage, error) {
images := make([]SImage, 0)
for {
parts, total, err := self.region.GetImages(ImageStatusType(""), "", nil, "", len(images), 50)
parts, total, err := self.region.GetImages(ImageStatusType(""), owner, nil, "", len(images), 50)
if err != nil {
return err
return nil, err
}
images = append(images, parts...)
if len(images) >= total {
break
}
}
return images, nil
}
func (self *SStoragecache) fetchImages() error {
images := make([]SImage, 0)
for _, owner := range []ImageOwnerType{ImageOwnerSelf, ImageOwnerSystem} {
_images, err := self.getImages(owner)
if err != nil {
return errors.Wrapf(err, "GetImage(%s)", owner)
}
images = append(images, _images...)
}
self.iimages = make([]cloudprovider.ICloudImage, len(images))
for i := 0; i < len(images); i += 1 {
images[i].storageCache = self