From b5461d344e6505835bea3c1f97f7314c8a0ed60e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Tue, 9 Jul 2024 11:11:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(region):=20=E9=81=BF=E5=85=8D=E9=9D=9EOneCl?= =?UTF-8?q?oud=E5=8C=BA=E5=9F=9Fcapability=E4=BE=9D=E7=84=B6=E8=BF=94?= =?UTF-8?q?=E5=9B=9EOneCloud=E7=9B=B8=E5=85=B3=E5=AD=97=E6=AE=B5=20(#20733?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/capabilities.go | 40 +++++++++++++++++------------ pkg/compute/models/cloudaccounts.go | 9 +------ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/pkg/compute/models/capabilities.go b/pkg/compute/models/capabilities.go index c6e462acb4..939d0e7f56 100644 --- a/pkg/compute/models/capabilities.go +++ b/pkg/compute/models/capabilities.go @@ -227,7 +227,13 @@ func GetCapabilities(ctx context.Context, userCred mcclient.TokenCredential, que } } } - getBrands(region, zone, domainId, &capa) + if zone != nil { + region, err = zone.GetRegion() + if err != nil { + return capa, errors.Wrapf(err, "GetRegion") + } + } + getBrands(region, domainId, &capa) capa.ResourceTypes = getResourceTypes(ctx, userCred, region, zone, domainId) capa.StorageInfos, err = getStorageTypes(ctx, userCred, region, zone, domainId) if err != nil { @@ -379,8 +385,8 @@ func getDBInstanceInfo(region *SCloudregion, zone *SZone) map[string]map[string] } // set all brands, compute engine brands, network manage brands, object storage brands -func getBrands(region *SCloudregion, zone *SZone, domainId string, capa *SCapabilities) { - brands, err := CloudaccountManager.getBrandsOfCapability(region, zone, domainId) +func getBrands(region *SCloudregion, domainId string, capa *SCapabilities) { + brands, err := CloudaccountManager.getBrandsOfCapability(region, domainId) if err != nil { log.Errorf("getBrandsOfCapability: %v", err) } @@ -399,21 +405,23 @@ func getBrands(region *SCloudregion, zone *SZone, domainId string, capa *SCapabi } } - if utils.IsInStringArray(api.HYPERVISOR_KVM, capa.Hypervisors) || utils.IsInStringArray(api.HYPERVISOR_BAREMETAL, capa.Hypervisors) { - capa.Brands = append(capa.Brands, api.ONECLOUD_BRAND_ONECLOUD) - capa.SecurityGroupBrands = append(capa.SecurityGroupBrands, api.ONECLOUD_BRAND_ONECLOUD) - capa.ComputeEngineBrands = append(capa.ComputeEngineBrands, api.ONECLOUD_BRAND_ONECLOUD) - capa.SnapshotPolicyBrands = append(capa.SnapshotPolicyBrands, api.ONECLOUD_BRAND_ONECLOUD) - } else if utils.IsInStringArray(api.HYPERVISOR_POD, capa.Hypervisors) { - capa.Brands = append(capa.Brands, api.ONECLOUD_BRAND_ONECLOUD) - capa.ComputeEngineBrands = append(capa.ComputeEngineBrands, api.ONECLOUD_BRAND_ONECLOUD) - } + if region == nil || region.Provider == api.ONECLOUD_BRAND_ONECLOUD { + if utils.IsInStringArray(api.HYPERVISOR_KVM, capa.Hypervisors) || utils.IsInStringArray(api.HYPERVISOR_BAREMETAL, capa.Hypervisors) { + capa.Brands = append(capa.Brands, api.ONECLOUD_BRAND_ONECLOUD) + capa.SecurityGroupBrands = append(capa.SecurityGroupBrands, api.ONECLOUD_BRAND_ONECLOUD) + capa.ComputeEngineBrands = append(capa.ComputeEngineBrands, api.ONECLOUD_BRAND_ONECLOUD) + capa.SnapshotPolicyBrands = append(capa.SnapshotPolicyBrands, api.ONECLOUD_BRAND_ONECLOUD) + } else if utils.IsInStringArray(api.HYPERVISOR_POD, capa.Hypervisors) { + capa.Brands = append(capa.Brands, api.ONECLOUD_BRAND_ONECLOUD) + capa.ComputeEngineBrands = append(capa.ComputeEngineBrands, api.ONECLOUD_BRAND_ONECLOUD) + } - if count, _ := LoadbalancerClusterManager.Query().Limit(1).CountWithError(); count > 0 { - capa.LoadbalancerEngineBrands = append(capa.LoadbalancerEngineBrands, api.ONECLOUD_BRAND_ONECLOUD) - } + if count, _ := LoadbalancerClusterManager.Query().Limit(1).CountWithError(); count > 0 { + capa.LoadbalancerEngineBrands = append(capa.LoadbalancerEngineBrands, api.ONECLOUD_BRAND_ONECLOUD) + } - capa.NetworkManageBrands = append(capa.NetworkManageBrands, api.ONECLOUD_BRAND_ONECLOUD) + capa.NetworkManageBrands = append(capa.NetworkManageBrands, api.ONECLOUD_BRAND_ONECLOUD) + } capa.EnabledBrands = []string{} capa.DisabledBrands = []string{} diff --git a/pkg/compute/models/cloudaccounts.go b/pkg/compute/models/cloudaccounts.go index b8405ca2d4..96d63a8eea 100644 --- a/pkg/compute/models/cloudaccounts.go +++ b/pkg/compute/models/cloudaccounts.go @@ -2869,7 +2869,7 @@ type sBrandCapability struct { Capability string } -func (manager *SCloudaccountManager) getBrandsOfCapability(region *SCloudregion, zone *SZone, domainId string) ([]sBrandCapability, error) { +func (manager *SCloudaccountManager) getBrandsOfCapability(region *SCloudregion, domainId string) ([]sBrandCapability, error) { accounts := manager.Query("id", "enabled", "brand") if len(domainId) > 0 { accounts = manager.filterByDomainId(accounts, domainId) @@ -2885,13 +2885,6 @@ func (manager *SCloudaccountManager) getBrandsOfCapability(region *SCloudregion, q = q.Join(providers, sqlchemy.Equals(q.Field("cloudprovider_id"), providers.Field("id"))) q = q.Join(accountSQ, sqlchemy.Equals(providers.Field("cloudaccount_id"), accountSQ.Field("id"))) - if zone != nil { - var err error - region, err = zone.GetRegion() - if err != nil { - return nil, errors.Wrapf(err, "GetRegion") - } - } if region != nil { providerregions := CloudproviderRegionManager.Query().SubQuery() q = q.Join(providerregions, sqlchemy.Equals(q.Field("cloudprovider_id"), providerregions.Field("cloudprovider_id"))).Filter(