Merge pull request #12683 from ioito/hotfix/qx-user-tag-export

fix(region): export user_tags
This commit is contained in:
Zexi Li
2021-11-16 09:11:26 +08:00
committed by GitHub
3 changed files with 29 additions and 15 deletions
+25
View File
@@ -97,6 +97,31 @@ func (manager *SStandaloneResourceBaseManager) ListItemFilter(
return q, nil
}
func (manager *SStandaloneResourceBaseManager) ListItemExportKeys(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, keys stringutils2.SSortedStrings) (*sqlchemy.SQuery, error) {
var err error
q, err = manager.SResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys)
if err != nil {
return nil, errors.Wrap(err, "SResourceBaseManager.ListItemExportKeys")
}
if keys.Contains("user_tags") {
userTagsQuery := Metadata.Query().Startswith("id", manager.keyword+"::").
Startswith("key", USER_TAG_PREFIX).GroupBy("id")
userTagsQuery.AppendField(sqlchemy.SubStr("resource_id", userTagsQuery.Field("id"), len(manager.keyword)+3, 0))
userTagsQuery.AppendField(
sqlchemy.GROUP_CONCAT("user_tags", sqlchemy.CONCAT("",
sqlchemy.SubStr("", userTagsQuery.Field("key"), len(USER_TAG_PREFIX)+1, 0),
sqlchemy.NewStringField(":"),
userTagsQuery.Field("value"),
)))
subQ := userTagsQuery.SubQuery()
q.LeftJoin(subQ, sqlchemy.Equals(q.Field("id"), subQ.Field("resource_id")))
q.AppendField(subQ.Field("user_tags"))
}
return q, nil
}
func (manager *SStandaloneResourceBaseManager) OrderByExtraFields(
ctx context.Context,
q *sqlchemy.SQuery,
-15
View File
@@ -732,21 +732,6 @@ func (manager *SVirtualResourceBaseManager) ListItemExportKeys(ctx context.Conte
return nil, errors.Wrap(err, "SProjectizedResourceBaseManager.ListItemExportKeys")
}
if keys.Contains("user_tags") {
guestUserTagsQuery := Metadata.Query().Startswith("id", manager.keyword+"::").
Startswith("key", USER_TAG_PREFIX).GroupBy("id")
guestUserTagsQuery.AppendField(sqlchemy.SubStr("resource_id", guestUserTagsQuery.Field("id"), len(manager.keyword)+3, 0))
guestUserTagsQuery.AppendField(
sqlchemy.GROUP_CONCAT("user_tags", sqlchemy.CONCAT("",
sqlchemy.SubStr("", guestUserTagsQuery.Field("key"), len(USER_TAG_PREFIX)+1, 0),
sqlchemy.NewStringField(":"),
guestUserTagsQuery.Field("value"),
)))
subQ := guestUserTagsQuery.SubQuery()
q.LeftJoin(subQ, sqlchemy.Equals(q.Field("id"), subQ.Field("resource_id")))
q.AppendField(subQ.Field("user_tags"))
}
return q, nil
}
+4
View File
@@ -315,6 +315,10 @@ func (self *SConfigManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQue
return q, nil
}
func (manager *SConfigManager) ListItemExportKeys(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, keys stringutils2.SSortedStrings) (*sqlchemy.SQuery, error) {
return manager.SStandaloneResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys)
}
func (cm *SConfigManager) FetchCustomizeColumns(
ctx context.Context,
userCred mcclient.TokenCredential,