diff --git a/pkg/cloudprovider/subaccount.go b/pkg/cloudprovider/subaccount.go index b19fa0a533..c2939f744d 100644 --- a/pkg/cloudprovider/subaccount.go +++ b/pkg/cloudprovider/subaccount.go @@ -24,6 +24,8 @@ import ( type SSubAccount struct { // 若Account不为空,可不传 Name string + // 描述信息 + Desc string // 输入必填,若为空,需要指定子账号名称 Account string HealthStatus string // 云端服务健康状态。例如欠费、项目冻结都属于不健康状态。 diff --git a/pkg/compute/models/cloudaccounts.go b/pkg/compute/models/cloudaccounts.go index 5b8ac93a9b..2bc90ef8ab 100644 --- a/pkg/compute/models/cloudaccounts.go +++ b/pkg/compute/models/cloudaccounts.go @@ -1010,7 +1010,7 @@ func (self *SCloudaccount) importSubAccount(ctx context.Context, userCred mcclie return nil, isNew, errors.Wrapf(err, "q.First") } provider.markProviderConnected(ctx, userCred, subAccount.HealthStatus) - provider.updateName(ctx, userCred, subAccount.Name) + provider.updateName(ctx, userCred, subAccount.Name, subAccount.Desc) return provider, isNew, nil } // not found, create a new cloudprovider @@ -1024,6 +1024,7 @@ func (self *SCloudaccount) importSubAccount(ctx context.Context, userCred mcclie newCloudprovider.Provider = self.Provider newCloudprovider.AccessUrl = self.AccessUrl newCloudprovider.HealthStatus = subAccount.HealthStatus + newCloudprovider.Description = subAccount.Desc if !options.Options.CloudaccountHealthStatusCheck { newCloudprovider.HealthStatus = api.CLOUD_PROVIDER_HEALTH_NORMAL } diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index 66655da008..7b92e4ff28 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -1276,10 +1276,13 @@ func (provider *SCloudprovider) markProviderDisconnected(ctx context.Context, us return provider.ClearSchedDescCache() } -func (self *SCloudprovider) updateName(ctx context.Context, userCred mcclient.TokenCredential, name string) error { - if self.Name != name { +func (self *SCloudprovider) updateName(ctx context.Context, userCred mcclient.TokenCredential, name, desc string) error { + if self.Name != name || self.Description != desc { diff, err := db.Update(self, func() error { self.Name = name + if len(self.Description) == 0 { + self.Description = desc + } return nil }) if err != nil { diff --git a/pkg/multicloud/huawei/huawei.go b/pkg/multicloud/huawei/huawei.go index 04636123a0..e0d4b62a95 100644 --- a/pkg/multicloud/huawei/huawei.go +++ b/pkg/multicloud/huawei/huawei.go @@ -511,6 +511,13 @@ func (self *SHuaweiClient) GetSubAccounts() ([]cloudprovider.SSubAccount, error) HealthStatus: project.GetHealthStatus(), DefaultProjectId: "0", } + for j := range self.iregions { + region := self.iregions[j].(*SRegion) + if strings.Contains(project.Name, region.ID) { + s.Desc = region.Locales.ZhCN + break + } + } subAccounts = append(subAccounts, s) }