mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix(region): filter cloudproviders by regional network zone (#21287)
This commit is contained in:
@@ -1275,13 +1275,20 @@ func (manager *SCloudproviderManager) ListItemFilter(
|
||||
var region *SCloudregion
|
||||
|
||||
if len(query.ZoneId) > 0 {
|
||||
_, err := validators.ValidateModel(ctx, userCred, ZoneManager, &query.ZoneId)
|
||||
zoneObj, err := validators.ValidateModel(ctx, userCred, ZoneManager, &query.ZoneId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
vpcs := VpcManager.Query("manager_id").Distinct()
|
||||
wires := WireManager.Query().Equals("zone_id", query.ZoneId).SubQuery()
|
||||
vpcs = vpcs.Join(wires, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id")))
|
||||
zone = zoneObj.(*SZone)
|
||||
region, err = zone.GetRegion()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
vpcs := VpcManager.Query("manager_id").Equals("cloudregion_id", region.Id).Distinct()
|
||||
if !utils.IsInStringArray(region.Provider, api.REGIONAL_NETWORK_PROVIDERS) {
|
||||
wires := WireManager.Query().Equals("zone_id", query.ZoneId).SubQuery()
|
||||
vpcs = vpcs.Join(wires, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id")))
|
||||
}
|
||||
wireManager := WireManager.Query("manager_id").Equals("zone_id", query.ZoneId).Distinct().SubQuery()
|
||||
q = q.Filter(
|
||||
sqlchemy.OR(
|
||||
|
||||
Reference in New Issue
Block a user