Skip to content

Commit

Permalink
huawei fetch regions&projects fix
Browse files Browse the repository at this point in the history
  • Loading branch information
tangbin committed Jul 24, 2020
1 parent 7512e48 commit 5255df0
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
4 changes: 2 additions & 2 deletions pkg/multicloud/huawei/client/modules/manager_base.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,9 @@ func (self *SBaseManager) jsonRequest(request requests.IRequest) (http.Header, j

switch err := e.(type) {
case *HuaweiClientError:
if err.Code == 499 && retry > 0 && request.GetMethod() == "GET" {
if (err.Code == 499 || err.Code == 429 )&& retry > 0 && request.GetMethod() == "GET" {
retry -= 1
time.Sleep(time.Second * time.Duration(MAX_RETRY-retry))
time.Sleep(3 * time.Second * time.Duration(MAX_RETRY-retry))
} else if (err.Code == 404 || strings.Contains(err.Details, "could not be found") || strings.Contains(err.Details, "does not exist")) && request.GetMethod() != "POST" {
return h, b, errors.Wrap(cloudprovider.ErrNotFound, err.Error())
} else {
Expand Down
19 changes: 13 additions & 6 deletions pkg/multicloud/huawei/huawei.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ type SHuaweiClient struct {

iregions []cloudprovider.ICloudRegion
iBuckets []cloudprovider.ICloudBucket

projects []SProject
regions []SRegion
}

// 进行资源操作时参数account 对应数据库cloudprovider表中的account字段,由accessKey和projectID两部分组成,通过"/"分割。
Expand Down Expand Up @@ -163,10 +166,14 @@ func (self *SHuaweiClient) newGeneralAPIClient() (*client.Client, error) {

func (self *SHuaweiClient) fetchRegions() error {
huawei, _ := self.newGeneralAPIClient()
regions := make([]SRegion, 0)
err := doListAll(huawei.Regions.List, nil, &regions)
if err != nil {
return err
if self.regions == nil {
regions := make([]SRegion, 0)
err := doListAll(huawei.Regions.List, nil, &regions)
if err != nil {
return err
}

self.regions = regions
}

filtedRegions := make([]SRegion, 0)
Expand All @@ -177,7 +184,7 @@ func (self *SHuaweiClient) fetchRegions() error {
}

regionId := strings.Split(project.Name, "_")[0]
for _, region := range regions {
for _, region := range self.regions {
if region.ID == regionId {
filtedRegions = append(filtedRegions, region)
}
Expand All @@ -186,7 +193,7 @@ func (self *SHuaweiClient) fetchRegions() error {
self.isMainProject = true
}
} else {
filtedRegions = regions
filtedRegions = self.regions
}

self.iregions = make([]cloudprovider.ICloudRegion, len(filtedRegions))
Expand Down
8 changes: 8 additions & 0 deletions pkg/multicloud/huawei/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,17 @@ func (self *SProject) GetHealthStatus() string {
}

func (self *SHuaweiClient) fetchProjects() ([]SProject, error) {
if self.projects != nil {
return self.projects, nil
}

huawei, _ := self.newGeneralAPIClient()
projects := make([]SProject, 0)
err := doListAll(huawei.Projects.List, nil, &projects)
if err == nil {
self.projects = projects
}

return projects, err
}

Expand Down

0 comments on commit 5255df0

Please sign in to comment.