diff --git a/pkg/apis/compute/dbinstance.go b/pkg/apis/compute/dbinstance.go index 471c86767c..db9b0624e3 100644 --- a/pkg/apis/compute/dbinstance.go +++ b/pkg/apis/compute/dbinstance.go @@ -217,6 +217,9 @@ type DBInstanceListInput struct { EngineVersion string `json:"engine_version"` InstanceType string `json:"instance_type"` + + // 通过IP搜索RDS实例 + IpAddr string `json:"ip_addr"` } type DBInstanceBackupListInput struct { diff --git a/pkg/compute/models/dbinstances.go b/pkg/compute/models/dbinstances.go index 8c8582a481..3955c0a54f 100644 --- a/pkg/compute/models/dbinstances.go +++ b/pkg/compute/models/dbinstances.go @@ -227,6 +227,11 @@ func (man *SDBInstanceManager) ListItemFilter( q = q.Equals("instance_type", query.InstanceType) } + if len(query.IpAddr) > 0 { + dn := DBInstanceNetworkManager.Query("dbinstance_id").Contains("ip_addr", query.IpAddr) + q = q.Filter(sqlchemy.In(q.Field("id"), dn.SubQuery())) + } + return q, nil } diff --git a/pkg/mcclient/options/compute/dbinstances.go b/pkg/mcclient/options/compute/dbinstances.go index bf0c8f2beb..8d795492d9 100644 --- a/pkg/mcclient/options/compute/dbinstances.go +++ b/pkg/mcclient/options/compute/dbinstances.go @@ -75,6 +75,7 @@ func (opts *DBInstanceCreateOptions) Params() (jsonutils.JSONObject, error) { type DBInstanceListOptions struct { options.BaseListOptions BillingType string `help:"billing type" choices:"postpaid|prepaid"` + IpAddr string } func (opts *DBInstanceListOptions) Params() (jsonutils.JSONObject, error) {