From 121d024ef492d4d7e81538cfa440324433a3ea93 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Fri, 10 Sep 2021 15:02:35 +0800 Subject: [PATCH 1/2] fix(region): huawei region id with project name --- pkg/multicloud/huawei/huawei.go | 12 ++++++++---- pkg/multicloud/huawei/region.go | 5 ++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pkg/multicloud/huawei/huawei.go b/pkg/multicloud/huawei/huawei.go index 38f656f9fc..9645f0be6c 100644 --- a/pkg/multicloud/huawei/huawei.go +++ b/pkg/multicloud/huawei/huawei.go @@ -206,17 +206,21 @@ func (self *SHuaweiClient) fetchRegions() error { regionId := strings.Split(project.Name, "_")[0] for _, region := range self.regions { - if region.ID == regionId { + if region.ID == regionId || project.Name == region.ID { filtedRegions = append(filtedRegions, region) } - } - if regionId == project.Name { - self.isMainProject = true + if project.Name == region.ID { + self.isMainProject = true + } } } else { filtedRegions = self.regions } + if len(filtedRegions) == 0 { + return errors.Wrapf(cloudprovider.ErrNotFound, "empty regions") + } + self.iregions = make([]cloudprovider.ICloudRegion, len(filtedRegions)) for i := 0; i < len(filtedRegions); i += 1 { filtedRegions[i].client = self diff --git a/pkg/multicloud/huawei/region.go b/pkg/multicloud/huawei/region.go index 4d650a2c54..5a51bb1b75 100644 --- a/pkg/multicloud/huawei/region.go +++ b/pkg/multicloud/huawei/region.go @@ -74,9 +74,8 @@ func (self *SRegion) getECSClient() (*client.Client, error) { } regionId := strings.Split(project.Name, "_")[0] - if regionId != self.ID { - // log.Debugf("project %s not in region %s", self.client.projectId, self.ID) - return nil, errors.Error("region and project mismatch") + if regionId != self.ID && project.Name != self.ID { + return nil, errors.Errorf("region %s and project %s mismatch", self.ID, project.Name) } } From d2335970176be1f17b763eb211e436e539d3ba7d Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Fri, 10 Sep 2021 16:27:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(region):=20=E4=B8=8D=E8=83=BD=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E5=8D=8E=E4=B8=BA=E4=BA=91=E7=94=A8=E6=88=B7=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=97=B6=E9=97=B4=E5=88=A4=E6=96=AD=E4=BA=91=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E6=B3=A8=E5=86=8C=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/multicloud/huawei/huawei.go | 18 +++++++++--------- pkg/multicloud/huawei/region.go | 3 +-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/pkg/multicloud/huawei/huawei.go b/pkg/multicloud/huawei/huawei.go index 9645f0be6c..21f8c17aee 100644 --- a/pkg/multicloud/huawei/huawei.go +++ b/pkg/multicloud/huawei/huawei.go @@ -204,9 +204,8 @@ func (self *SHuaweiClient) fetchRegions() error { return err } - regionId := strings.Split(project.Name, "_")[0] for _, region := range self.regions { - if region.ID == regionId || project.Name == region.ID { + if strings.Count(project.Name, region.ID) >= 1 { filtedRegions = append(filtedRegions, region) } if project.Name == region.ID { @@ -331,14 +330,15 @@ func (self *SHuaweiClient) GetSubAccounts() ([]cloudprovider.SSubAccount, error) continue } // https://www.huaweicloud.com/notice/2018/20190618171312411.html - expiredAt, _ := timeutils.ParseTimeStr("2020-09-16 00:00:00") - if !self.ownerCreateTime.IsZero() && self.ownerCreateTime.After(expiredAt) && strings.ToLower(project.Name) == "cn-north-1" { - continue - } + // expiredAt, _ := timeutils.ParseTimeStr("2020-09-16 00:00:00") + // if !self.ownerCreateTime.IsZero() && self.ownerCreateTime.After(expiredAt) && strings.ToLower(project.Name) == "cn-north-1" { + // continue + // } s := cloudprovider.SSubAccount{ - Name: fmt.Sprintf("%s-%s", self.cpcfg.Name, project.Name), - Account: fmt.Sprintf("%s/%s", self.accessKey, project.ID), - HealthStatus: project.GetHealthStatus(), + Name: fmt.Sprintf("%s-%s", self.cpcfg.Name, project.Name), + Account: fmt.Sprintf("%s/%s", self.accessKey, project.ID), + HealthStatus: project.GetHealthStatus(), + DefaultProjectId: "0", } subAccounts = append(subAccounts, s) diff --git a/pkg/multicloud/huawei/region.go b/pkg/multicloud/huawei/region.go index 5a51bb1b75..f2885810d7 100644 --- a/pkg/multicloud/huawei/region.go +++ b/pkg/multicloud/huawei/region.go @@ -73,8 +73,7 @@ func (self *SRegion) getECSClient() (*client.Client, error) { return nil, err } - regionId := strings.Split(project.Name, "_")[0] - if regionId != self.ID && project.Name != self.ID { + if !strings.Contains(project.Name, self.ID) { return nil, errors.Errorf("region %s and project %s mismatch", self.ID, project.Name) } }