From 6ea25e6fcc1aad62ac3c2bc703e6b7dd70839567 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Mon, 18 May 2020 11:26:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E6=A0=B9=E6=8D=AE=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E4=BA=91=E8=B4=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/climc/shell/compute/cloudaccounts.go | 4 ++++ pkg/apis/compute/cloudaccount.go | 5 +++++ pkg/compute/models/cloudaccounts.go | 11 +++++++++++ 3 files changed, 20 insertions(+) diff --git a/cmd/climc/shell/compute/cloudaccounts.go b/cmd/climc/shell/compute/cloudaccounts.go index ae72a354e9..7acdb0db3e 100644 --- a/cmd/climc/shell/compute/cloudaccounts.go +++ b/cmd/climc/shell/compute/cloudaccounts.go @@ -55,6 +55,7 @@ func init() { Capability []string `help:"capability filter" choices:"project|compute|network|loadbalancer|objectstore|rds|cache|event"` DistinctField string `help:"distinct field"` + ProxySetting string `help:"Proxy setting id or name"` } R(&CloudaccountListOptions{}, "cloud-account-list", "List cloud accounts", func(s *mcclient.ClientSession, args *CloudaccountListOptions) error { var params *jsonutils.JSONDict @@ -67,6 +68,9 @@ func init() { if len(args.Capability) > 0 { params.Add(jsonutils.NewStringArray(args.Capability), "capability") } + if len(args.ProxySetting) > 0 { + params.Add(jsonutils.NewString(args.ProxySetting), "proxy_setting") + } } if len(args.DistinctField) > 0 { params.Add(jsonutils.NewString(args.DistinctField), "extra_field") diff --git a/pkg/apis/compute/cloudaccount.go b/pkg/apis/compute/cloudaccount.go index 02bf0e5c0c..1e333a8421 100644 --- a/pkg/apis/compute/cloudaccount.go +++ b/pkg/apis/compute/cloudaccount.go @@ -223,6 +223,11 @@ type CloudaccountListInput struct { // 共享模式 ShareMode []string `json:"share_mode"` + + // 代理 + ProxySetting string `json:"proxy_setting"` + // swagger:ignore + ProxySettingId string `json:"proxy_setting_id" "yunion:deprecated-by":"proxy_setting"` } type ProviderProject struct { diff --git a/pkg/compute/models/cloudaccounts.go b/pkg/compute/models/cloudaccounts.go index e535c3c5fd..786beaab8a 100644 --- a/pkg/compute/models/cloudaccounts.go +++ b/pkg/compute/models/cloudaccounts.go @@ -1500,6 +1500,17 @@ func (manager *SCloudaccountManager) ListItemFilter( return nil, errors.Wrap(err, "SSyncableBaseResourceManager.ListItemFilter") } + if len(query.ProxySetting) > 0 { + proxy, err := proxy.ProxySettingManager.FetchByIdOrName(nil, query.ProxySetting) + if err != nil { + if errors.Cause(err) == sql.ErrNoRows { + return nil, httperrors.NewResourceNotFoundError2("proxy_setting", query.ProxySetting) + } + return nil, httperrors.NewGeneralError(err) + } + q = q.Equals("proxy_setting_id", proxy.GetId()) + } + managerStr := query.Cloudprovider if len(managerStr) > 0 { providerObj, err := CloudproviderManager.FetchByIdOrName(userCred, managerStr)