Merge pull request #537 from ioito/hotfix/qx-network-filter-by-city

ip子网支持city过滤
This commit is contained in:
yunion-ci-robot
2019-04-23 16:25:11 +08:00
committed by GitHub
2 changed files with 13 additions and 0 deletions
+1
View File
@@ -34,6 +34,7 @@ func init() {
Host string `help:"search networks attached to a host"`
Vpc string `help:"search networks belongs to a VPC"`
Region string `help:"search networks belongs to a CloudRegion" json:"cloudregion"`
City string `help:"search networks belongs to a city"`
ServerType string `help:"search networks belongs to a ServerType" choices:"guest|baremetal|container|pxe|ipmi"`
}
R(&NetworkListOptions{}, "network-list", "List networks", func(s *mcclient.ClientSession, opts *NetworkListOptions) error {
+12
View File
@@ -1469,6 +1469,18 @@ func (manager *SNetworkManager) ListItemFilter(ctx context.Context, q *sqlchemy.
q = q.Filter(sqlchemy.In(q.Field("wire_id"), sq.SubQuery()))
}
cityStr, _ := query.GetString("city")
if len(cityStr) > 0 {
regions := CloudregionManager.Query().SubQuery()
wires := WireManager.Query().SubQuery()
vpcs := VpcManager.Query().SubQuery()
sq := wires.Query(wires.Field("id")).
Join(vpcs, sqlchemy.Equals(wires.Field("vpc_id"), vpcs.Field("id"))).
Join(regions, sqlchemy.Equals(regions.Field("id"), vpcs.Field("cloudregion_id"))).
Filter(sqlchemy.Equals(regions.Field("city"), cityStr))
q = q.Filter(sqlchemy.In(q.Field("wire_id"), sq.SubQuery()))
}
return q, nil
}