mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
fix(region): 避免非OneCloud区域capability依然返回OneCloud相关字段 (#20733)
This commit is contained in:
@@ -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{}
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user