fix(region): 避免非OneCloud区域capability依然返回OneCloud相关字段 (#20733)

This commit is contained in:
屈轩
2024-07-09 11:11:07 +08:00
committed by GitHub
parent da2e6faa4f
commit b5461d344e
2 changed files with 25 additions and 24 deletions
+24 -16
View File
@@ -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{}
+1 -8
View File
@@ -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(