From ddde11f4f93b8d3e2e2e430600bf5d03f1450b9f Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Wed, 30 Jan 2019 20:50:22 +0800 Subject: [PATCH] 1. network-list add is_private/is_public filter 2. set default image quota to 10 --- cmd/climc/shell/networks.go | 2 ++ pkg/compute/models/networks.go | 18 ++++++++++++++++++ pkg/image/options/options.go | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/cmd/climc/shell/networks.go b/cmd/climc/shell/networks.go index 0ea837eabf..b06da9c57b 100644 --- a/cmd/climc/shell/networks.go +++ b/cmd/climc/shell/networks.go @@ -18,6 +18,8 @@ func init() { Vpc string `help:"search networks belongs to a VPC"` Region string `help:"search networks belongs to a CloudRegion" json:"cloudregion"` ServerType string `help:"search networks belongs to a ServerType"` + Private *bool `help:"show private cloud networks only" json:"is_private"` + Public *bool `help:"show public cloud networks only" json:"is_public"` } R(&NetworkListOptions{}, "network-list", "List networks", func(s *mcclient.ClientSession, opts *NetworkListOptions) error { params, err := options.ListStructToParams(opts) diff --git a/pkg/compute/models/networks.go b/pkg/compute/models/networks.go index def6785461..e3e9120395 100644 --- a/pkg/compute/models/networks.go +++ b/pkg/compute/models/networks.go @@ -1447,6 +1447,24 @@ func (manager *SNetworkManager) ListItemFilter(ctx context.Context, q *sqlchemy. q = q.Filter(sqlchemy.In(q.Field("wire_id"), subq.SubQuery())) } + if query.Contains("is_private") && jsonutils.QueryBoolean(query, "is_private", false) { + wires := WireManager.Query().SubQuery() + vpcs := VpcManager.Query().SubQuery() + subq := wires.Query(wires.Field("id")) + subq = subq.Join(vpcs, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id"))) + subq = subq.Filter(sqlchemy.IsNullOrEmpty(vpcs.Field("manager_id"))) + q = q.Filter(sqlchemy.In(q.Field("wire_id"), subq.SubQuery())) + } + + if query.Contains("is_public") && jsonutils.QueryBoolean(query, "is_public", false) { + wires := WireManager.Query().SubQuery() + vpcs := VpcManager.Query().SubQuery() + subq := wires.Query(wires.Field("id")) + subq = subq.Join(vpcs, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id"))) + subq = subq.Filter(sqlchemy.IsNotEmpty(vpcs.Field("manager_id"))) + q = q.Filter(sqlchemy.In(q.Field("wire_id"), subq.SubQuery())) + } + return q, nil } diff --git a/pkg/image/options/options.go b/pkg/image/options/options.go index 7cf2ea593f..edc4fcf17e 100644 --- a/pkg/image/options/options.go +++ b/pkg/image/options/options.go @@ -12,7 +12,7 @@ type SImageOptions struct { pending_delete.SPendingDeleteOptions - DefaultImageQuota int `default:"5" help:"Common image quota per tenant, default 5"` + DefaultImageQuota int `default:"10" help:"Common image quota per tenant, default 10"` PortV2 int `help:"Listening port for region V2"`