fix(glance): image fuzzy match by distro

This commit is contained in:
Zexi Li
2021-08-27 18:01:26 +08:00
parent 4573622ba5
commit 0a4ad0a305
+5 -2
View File
@@ -1271,11 +1271,14 @@ func (manager *SImageManager) ListItemFilter(
propQ := ImagePropertyManager.Query().In("name", nameKeys)
conds := make([]sqlchemy.ICondition, 0)
for _, val := range vals {
conds = append(conds, sqlchemy.Like(propQ.Field("value"), val))
field := propQ.Field("value")
conds = append(conds,
sqlchemy.Like(field, val),
sqlchemy.Contains(field, val))
}
propQ.Filter(sqlchemy.OR(conds...))
propSq := propQ.SubQuery()
q = q.Join(propSq, sqlchemy.Equals(q.Field("id"), propSq.Field("image_id")))
q = q.Join(propSq, sqlchemy.Equals(q.Field("id"), propSq.Field("image_id"))).Distinct()
}
propFilter([]string{api.IMAGE_OS_TYPE}, query.OsTypes)
propFilter([]string{api.IMAGE_OS_DISTRO, "distro"}, query.Distributions)