From 62f9243ba20b7fe93b59f2e7c5a67f8565fc42c8 Mon Sep 17 00:00:00 2001 From: TangBin Date: Fri, 23 Apr 2021 19:13:24 +0800 Subject: [PATCH] fix(cloudproxy): ssh proxy endpoint&match query --- pkg/apis/cloudproxy/proxy_endpoints.go | 2 +- pkg/apis/cloudproxy/proxy_matches.go | 14 +++++++++++++ pkg/cloudproxy/models/proxy_endpoints.go | 5 +++++ pkg/cloudproxy/models/proxy_matches.go | 25 ++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 pkg/apis/cloudproxy/proxy_matches.go diff --git a/pkg/apis/cloudproxy/proxy_endpoints.go b/pkg/apis/cloudproxy/proxy_endpoints.go index ae5a35cf3d..38d23f60e4 100644 --- a/pkg/apis/cloudproxy/proxy_endpoints.go +++ b/pkg/apis/cloudproxy/proxy_endpoints.go @@ -45,7 +45,7 @@ type ProxyEndpointUpdateInput struct { } type ProxyEndpointListInput struct { - apis.VirtualResourceBaseUpdateInput + apis.VirtualResourceListInput VpcId string NetworkId string diff --git a/pkg/apis/cloudproxy/proxy_matches.go b/pkg/apis/cloudproxy/proxy_matches.go new file mode 100644 index 0000000000..9fc5651e18 --- /dev/null +++ b/pkg/apis/cloudproxy/proxy_matches.go @@ -0,0 +1,14 @@ +package cloudproxy + +import "yunion.io/x/onecloud/pkg/apis" + +type ProxyMatchListInput struct { + apis.VirtualResourceListInput + + // 代理节点(ID或Name) + ProxyEndpointId string `json:"proxy_endpoint_id"` + // swagger:ignore + // Deprecated + // Filter by proxy endpoint Id + ProxyEndpoint string `json:"proxy_endpoint" yunion-deprecated-by:"proxy_endpoint_id"` +} diff --git a/pkg/cloudproxy/models/proxy_endpoints.go b/pkg/cloudproxy/models/proxy_endpoints.go index 445dfaf7a7..df7204ec63 100644 --- a/pkg/cloudproxy/models/proxy_endpoints.go +++ b/pkg/cloudproxy/models/proxy_endpoints.go @@ -252,6 +252,11 @@ func (man *SProxyEndpointManager) ListItemFilter( userCred mcclient.TokenCredential, input cloudproxy_api.ProxyEndpointListInput, ) (*sqlchemy.SQuery, error) { + q, err := man.SVirtualResourceBaseManager.ListItemFilter(ctx, q, userCred, input.VirtualResourceListInput) + if err != nil { + return nil, errors.Wrap(err, "SVirtualResourceBaseManager.ListItemFilter") + } + filters := [][2]string{ [2]string{cloudproxy_api.PM_SCOPE_VPC, input.VpcId}, [2]string{cloudproxy_api.PM_SCOPE_NETWORK, input.NetworkId}, diff --git a/pkg/cloudproxy/models/proxy_matches.go b/pkg/cloudproxy/models/proxy_matches.go index d43326350e..1dbc2c11bb 100644 --- a/pkg/cloudproxy/models/proxy_matches.go +++ b/pkg/cloudproxy/models/proxy_matches.go @@ -18,9 +18,11 @@ import ( "context" "yunion.io/x/jsonutils" + "yunion.io/x/pkg/errors" "yunion.io/x/sqlchemy" api "yunion.io/x/onecloud/pkg/apis/cloudproxy" + cloudproxy_api "yunion.io/x/onecloud/pkg/apis/cloudproxy" "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/cloudcommon/validators" "yunion.io/x/onecloud/pkg/mcclient" @@ -111,3 +113,26 @@ func (man *SProxyMatchManager) findMatch(ctx context.Context, networkId, vpcId s } return r } + +func (man *SProxyMatchManager) ListItemFilter( + ctx context.Context, + q *sqlchemy.SQuery, + userCred mcclient.TokenCredential, + input cloudproxy_api.ProxyMatchListInput, +) (*sqlchemy.SQuery, error) { + q, err := man.SVirtualResourceBaseManager.ListItemFilter(ctx, q, userCred, input.VirtualResourceListInput) + if err != nil { + return nil, errors.Wrap(err, "SVirtualResourceBaseManager.ListItemFilter") + } + + if len(input.ProxyEndpointId) > 0 { + _, err := validators.ValidateModel(userCred, ProxyEndpointManager, &input.ProxyEndpointId) + if err != nil { + return nil, err + } + + q = q.Equals("proxy_endpoint_id", input.ProxyEndpointId) + } + + return q, nil +}