Minor: Fix Policy rule migration due to owner -> owners (#17285)

This commit is contained in:
Sriharsha Chintalapani 2024-08-04 19:51:55 -07:00 committed by GitHub
parent dd8158552c
commit 9fcbf6a5b9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 43 additions and 0 deletions

View File

@ -3,6 +3,7 @@ package org.openmetadata.service.migration.mysql.v150;
import static org.openmetadata.service.migration.utils.v150.MigrationUtil.createSystemDICharts;
import static org.openmetadata.service.migration.utils.v150.MigrationUtil.deleteLegacyDataInsightPipelines;
import static org.openmetadata.service.migration.utils.v150.MigrationUtil.migrateAutomatorOwner;
import static org.openmetadata.service.migration.utils.v150.MigrationUtil.migratePolicies;
import static org.openmetadata.service.migration.utils.v150.MigrationUtil.migrateTestCaseDimension;
import static org.openmetadata.service.migration.utils.v150.MigrationUtil.updateDataInsightsApplication;
@ -19,6 +20,7 @@ public class Migration extends MigrationProcessImpl {
@Override
@SneakyThrows
public void runDataMigration() {
migratePolicies(handle, collectionDAO);
migrateTestCaseDimension(handle, collectionDAO);
createSystemDICharts();
deleteLegacyDataInsightPipelines(pipelineServiceClient);

View File

@ -1,5 +1,8 @@
package org.openmetadata.service.migration.utils.v150;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
@ -13,6 +16,7 @@ import org.jdbi.v3.core.Handle;
import org.openmetadata.schema.dataInsight.custom.DataInsightCustomChart;
import org.openmetadata.schema.dataInsight.custom.LineChart;
import org.openmetadata.schema.dataInsight.custom.SummaryCard;
import org.openmetadata.schema.entity.policies.Policy;
import org.openmetadata.schema.entity.services.ingestionPipelines.IngestionPipeline;
import org.openmetadata.schema.tests.TestDefinition;
import org.openmetadata.schema.type.DataQualityDimensions;
@ -150,6 +154,43 @@ public class MigrationUtil {
}
}
public static void migratePolicies(Handle handle, CollectionDAO collectionDAO) {
String DB_POLICY_QUERY = "SELECT json FROM policy_entity";
try {
handle
.createQuery(DB_POLICY_QUERY)
.mapToMap()
.forEach(
row -> {
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(row.get("json").toString());
ArrayNode rulesArray = (ArrayNode) rootNode.path("rules");
rulesArray.forEach(
ruleNode -> {
ArrayNode operationsArray = (ArrayNode) ruleNode.get("operations");
for (int i = 0; i < operationsArray.size(); i++) {
if ("EditOwner".equals(operationsArray.get(i).asText())) {
operationsArray.set(i, operationsArray.textNode("EditOwners"));
}
}
});
String updatedJsonString =
objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
Policy policy = JsonUtils.readValue(updatedJsonString, Policy.class);
policy.setUpdatedBy("ingestion-bot");
policy.setUpdatedAt(System.currentTimeMillis());
collectionDAO.policyDAO().update(policy);
} catch (Exception e) {
LOG.warn("Error migrating policies", e);
}
});
} catch (Exception e) {
LOG.warn("Error running the policy migration ", e);
}
}
public static void migrateTestCaseDimension(Handle handle, CollectionDAO collectionDAO) {
String MYSQL_TEST_CASE_DIMENSION_QUERY =
"SELECT json FROM test_definition WHERE JSON_CONTAINS(json -> '$.testPlatforms', '\"OpenMetadata\"')";