diff --git a/pkg/apis/compute/routetable_routesets.go b/pkg/apis/compute/routetable_routesets.go index ec0acd26cc..0d24bb5789 100644 --- a/pkg/apis/compute/routetable_routesets.go +++ b/pkg/apis/compute/routetable_routesets.go @@ -70,4 +70,7 @@ type RouteTableRouteSetListInput struct { apis.StatusStandaloneResourceListInput apis.ExternalizedResourceBaseListInput RouteTableFilterList + Type string `json:"type"` + NextHopType string `json:"next_hop_type"` + NextHopId string `json:"next_hop_id"` } diff --git a/pkg/compute/models/routetable_routesets.go b/pkg/compute/models/routetable_routesets.go index 0965f0787d..fd87aef320 100644 --- a/pkg/compute/models/routetable_routesets.go +++ b/pkg/compute/models/routetable_routesets.go @@ -188,6 +188,15 @@ func (manager *SRouteTableRouteSetManager) ListItemFilter( if err != nil { return nil, errors.Wrap(err, "SRouteTableResourceBaseManager.ListItemFilter") } + if len(query.Type) > 0 { + q = q.Equals("type", query.Type) + } + if len(query.NextHopType) > 0 { + q = q.Equals("next_hop_type", query.NextHopType) + } + if len(query.NextHopId) > 0 { + q = q.Equals("next_hop_id", query.NextHopId) + } return q, nil } diff --git a/pkg/mcclient/options/routetable_routeset.go b/pkg/mcclient/options/routetable_routeset.go index 5234dc559b..fb5552cf61 100644 --- a/pkg/mcclient/options/routetable_routeset.go +++ b/pkg/mcclient/options/routetable_routeset.go @@ -20,6 +20,9 @@ type RouteTableRouteSetListOptions struct { BaseListOptions RouteTableId string VpcId string + Type string + NextHopType string + NextHopId string } func (opts *RouteTableRouteSetListOptions) Params() (jsonutils.JSONObject, error) { diff --git a/pkg/multicloud/qcloud/vpc.go b/pkg/multicloud/qcloud/vpc.go index e688bba380..622468e9e3 100644 --- a/pkg/multicloud/qcloud/vpc.go +++ b/pkg/multicloud/qcloud/vpc.go @@ -228,10 +228,14 @@ func (self *SVpc) GetSVpcPeeringConnections() ([]SVpcPC, error) { if err != nil { return nil, errors.Wrapf(err, "self.region.GetAllVpcPeeringConnections(%s)", self.GetId()) } + ret := []SVpcPC{} for i := range svpcPCs { - svpcPCs[i].vpc = self + if svpcPCs[i].UnVpcID == self.VpcId { + svpcPCs[i].vpc = self + ret = append(ret, svpcPCs[i]) + } } - return svpcPCs, nil + return ret, nil } func (self *SVpc) GetAccepterSVpcPeeringConnections() ([]SVpcPC, error) {