mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #12116 from tb365/automated-cherry-pick-of-#12114-upstream-release-3.8
Automated cherry pick of #12114: NetworkUsableZoneIds remove duplicate zone ids
This commit is contained in:
@@ -510,9 +510,9 @@ func usableFilter(q *sqlchemy.SQuery, public_cloud bool) (*sqlchemy.SQuery, erro
|
||||
providerTable := usableCloudProviders().SubQuery()
|
||||
providerRegionTable := CloudproviderRegionManager.Query().SubQuery()
|
||||
|
||||
subq := providerRegionTable.Query(sqlchemy.DISTINCT("cloudregion_id", providerRegionTable.Field("cloudregion_id")))
|
||||
subq = subq.Join(providerTable, sqlchemy.Equals(providerRegionTable.Field("cloudprovider_id"), providerTable.Field("id")))
|
||||
q = q.Filter(sqlchemy.In(q.Field("cloudregion_id"), subq.SubQuery()))
|
||||
_subq := providerRegionTable.Query(sqlchemy.DISTINCT("cloudregion_id", providerRegionTable.Field("cloudregion_id")))
|
||||
subq := _subq.Join(providerTable, sqlchemy.Equals(providerRegionTable.Field("cloudprovider_id"), providerTable.Field("id"))).SubQuery()
|
||||
q.Join(subq, sqlchemy.Equals(q.Field("cloudregion_id"), subq.Field("cloudregion_id")))
|
||||
}
|
||||
|
||||
// 过滤出network usable的sku
|
||||
@@ -701,10 +701,12 @@ func (manager *SServerSkuManager) ListItemFilter(
|
||||
cloudEnvStr := query.CloudEnv
|
||||
if cloudEnvStr == api.CLOUD_ENV_PUBLIC_CLOUD {
|
||||
publicCloud = true
|
||||
q = q.Filter(sqlchemy.In(q.Field("provider"), CloudproviderManager.GetPublicProviderProvidersQuery()))
|
||||
pq := CloudproviderManager.GetPublicProviderProvidersQuery()
|
||||
q = q.Join(pq, sqlchemy.Equals(q.Field("provider"), pq.Field("provider")))
|
||||
}
|
||||
if cloudEnvStr == api.CLOUD_ENV_PRIVATE_CLOUD {
|
||||
q = q.Filter(sqlchemy.In(q.Field("provider"), CloudproviderManager.GetPrivateProviderProvidersQuery()))
|
||||
pq := CloudproviderManager.GetPrivateProviderProvidersQuery()
|
||||
q = q.Join(pq, sqlchemy.Equals(q.Field("provider"), pq.Field("provider")))
|
||||
}
|
||||
if cloudEnvStr == api.CLOUD_ENV_ON_PREMISE {
|
||||
q = q.Filter(
|
||||
|
||||
@@ -560,7 +560,7 @@ func NetworkUsableZoneIds(usableNet, usableVpc bool, query *api.ZoneListInput) (
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "zoneUsableVpc")
|
||||
}
|
||||
ret, err := usableZoneQ1(vpcs, usableNet)
|
||||
r1, err := usableZoneQ1(vpcs, usableNet)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "usableZoneQ1")
|
||||
}
|
||||
@@ -569,7 +569,16 @@ func NetworkUsableZoneIds(usableNet, usableVpc bool, query *api.ZoneListInput) (
|
||||
return nil, errors.Wrap(err, "usableZoneQ2")
|
||||
}
|
||||
|
||||
ret = append(ret, r2...)
|
||||
r1 = append(r1, r2...)
|
||||
// remove dupliates
|
||||
ret := make([]string, 0)
|
||||
rm := make(map[string]bool)
|
||||
for _, zone := range r1 {
|
||||
if _, ok := rm[zone]; !ok {
|
||||
rm[zone] = true
|
||||
ret = append(ret, zone)
|
||||
}
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user