mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #5139 from ioito/automated-cherry-pick-of-#5138-upstream-release-3.1
Automated cherry pick of #5138: fix: 避免未过滤掉同一个network底下的guest
This commit is contained in:
@@ -284,20 +284,14 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
|
||||
sqlchemy.Equals(zoneTable.Field("id"), hostTable.Field("zone_id"))).Equals("manager_id", eip.ManagerId)
|
||||
|
||||
if len(eip.NetworkId) > 0 {
|
||||
network, err := eip.GetNetwork()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
zone := network.getZone()
|
||||
sq := hostQ.Filter(sqlchemy.Equals(zoneTable.Field("id"), zone.GetId())).SubQuery()
|
||||
q = q.In("host_id", sq)
|
||||
} else {
|
||||
region := eip.GetRegion()
|
||||
regionTable := CloudregionManager.Query().SubQuery()
|
||||
sq := hostQ.Join(regionTable, sqlchemy.Equals(zoneTable.Field("cloudregion_id"), regionTable.Field("id"))).
|
||||
Filter(sqlchemy.Equals(regionTable.Field("id"), region.GetId())).SubQuery()
|
||||
q = q.In("host_id", sq)
|
||||
sq := GuestnetworkManager.Query("guest_id").Equals("network_id", eip.NetworkId).SubQuery()
|
||||
q = q.NotIn("id", sq)
|
||||
}
|
||||
region := eip.GetRegion()
|
||||
regionTable := CloudregionManager.Query().SubQuery()
|
||||
sq := hostQ.Join(regionTable, sqlchemy.Equals(zoneTable.Field("cloudregion_id"), regionTable.Field("id"))).
|
||||
Filter(sqlchemy.Equals(regionTable.Field("id"), region.GetId())).SubQuery()
|
||||
q = q.In("host_id", sq)
|
||||
}
|
||||
|
||||
q, err = managedResourceFilterByRegion(q, query.RegionalFilterListInput, "host_id", func() *sqlchemy.SQuery {
|
||||
|
||||
Reference in New Issue
Block a user