diff --git a/pkg/compute/models/secgroupresource.go b/pkg/compute/models/secgroupresource.go index 04765211da..c3f8beb99a 100644 --- a/pkg/compute/models/secgroupresource.go +++ b/pkg/compute/models/secgroupresource.go @@ -132,15 +132,19 @@ func (manager *SSecurityGroupResourceBaseManager) ListItemFilter( } var err error - q, err = manager.SManagedResourceBaseManager.ListItemFilter(ctx, q, userCred, query.ManagedResourceListInput) + subq := SecurityGroupManager.Query("id").Snapshot() + subq, err = manager.SManagedResourceBaseManager.ListItemFilter(ctx, subq, userCred, query.ManagedResourceListInput) if err != nil { return nil, errors.Wrap(err, "SManagedResourceBaseManager.ListItemFilter") } - q, err = manager.SCloudregionResourceBaseManager.ListItemFilter(ctx, q, userCred, query.RegionalFilterListInput) + subq, err = manager.SCloudregionResourceBaseManager.ListItemFilter(ctx, subq, userCred, query.RegionalFilterListInput) if err != nil { return nil, errors.Wrap(err, "SCloudregionResourceBaseManager.ListItemFilter") } + if subq.IsAltered() { + q = q.Filter(sqlchemy.In(q.Field("secgroup_id"), subq.SubQuery())) + } return q, nil }