From fcc53fd3e1f30139c882a2b411dba614fd9d84ff Mon Sep 17 00:00:00 2001 From: ioito Date: Mon, 22 Apr 2019 16:27:07 +0800 Subject: [PATCH] =?UTF-8?q?ip=E5=AD=90=E7=BD=91=E6=94=AF=E6=8C=81city?= =?UTF-8?q?=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/climc/shell/networks.go | 1 + pkg/compute/models/networks.go | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/cmd/climc/shell/networks.go b/cmd/climc/shell/networks.go index 8c476d8955..f907ff3450 100644 --- a/cmd/climc/shell/networks.go +++ b/cmd/climc/shell/networks.go @@ -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 { diff --git a/pkg/compute/models/networks.go b/pkg/compute/models/networks.go index d8193eb493..2ecfeb46a6 100644 --- a/pkg/compute/models/networks.go +++ b/pkg/compute/models/networks.go @@ -1430,6 +1430,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 }