From bdb438d12d8c21078cb977a307fbff51b51c3ebd Mon Sep 17 00:00:00 2001 From: Sriharsha Chintalapani Date: Mon, 3 Jul 2023 03:18:40 -0700 Subject: [PATCH] Fix migrations to handle entities with mal-formed FQN due to . in their name (#12217) --- .../java/org/openmetadata/service/jdbi3/ListFilter.java | 3 ++- .../services/dashboard/DashboardServiceResource.java | 6 ++++-- .../services/database/DatabaseServiceResource.java | 6 ++++-- .../services/messaging/MessagingServiceResource.java | 4 +++- .../services/metadata/MetadataServiceResource.java | 6 ++++-- .../resources/services/mlmodel/MlModelServiceResource.java | 6 ++++-- .../services/pipeline/PipelineServiceResource.java | 6 ++++-- .../resources/services/storage/StorageServiceResource.java | 6 ++++-- 8 files changed, 29 insertions(+), 14 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/ListFilter.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/ListFilter.java index 3e87d9ff294..025e2277526 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/ListFilter.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/ListFilter.java @@ -8,6 +8,7 @@ import java.util.Map; import lombok.Getter; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.Relationship; +import org.openmetadata.schema.utils.EntityInterfaceUtil; import org.openmetadata.service.Entity; import org.openmetadata.service.resources.databases.DatasourceConfig; import org.openmetadata.service.util.FullyQualifiedName; @@ -81,7 +82,7 @@ public class ListFilter { public String getServiceCondition(String tableName) { String service = queryParams.get("service"); - return service == null ? "" : getFqnPrefixCondition(tableName, service); + return service == null ? "" : getFqnPrefixCondition(tableName, EntityInterfaceUtil.quoteName(service)); } public String getParentCondition(String tableName) { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/dashboard/DashboardServiceResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/dashboard/DashboardServiceResource.java index dfbb0da102a..2de355c64c6 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/dashboard/DashboardServiceResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/dashboard/DashboardServiceResource.java @@ -58,6 +58,7 @@ import org.openmetadata.schema.type.DashboardConnection; import org.openmetadata.schema.type.EntityHistory; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.MetadataOperation; +import org.openmetadata.schema.utils.EntityInterfaceUtil; import org.openmetadata.service.Entity; import org.openmetadata.service.jdbi3.CollectionDAO; import org.openmetadata.service.jdbi3.DashboardServiceRepository; @@ -206,7 +207,8 @@ public class DashboardServiceResource @DefaultValue("non-deleted") Include include) throws IOException { - DashboardService dashboardService = getByNameInternal(uriInfo, securityContext, name, fieldsParam, include); + DashboardService dashboardService = + getByNameInternal(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), fieldsParam, include); return decryptOrNullify(securityContext, dashboardService); } @@ -420,7 +422,7 @@ public class DashboardServiceResource @Parameter(description = "Name of the dashboard service", schema = @Schema(type = "string")) @PathParam("name") String name) throws IOException { - return deleteByName(uriInfo, securityContext, name, false, hardDelete); + return deleteByName(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), false, hardDelete); } @PUT diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/database/DatabaseServiceResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/database/DatabaseServiceResource.java index 512e154abc1..1aef41f4a56 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/database/DatabaseServiceResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/database/DatabaseServiceResource.java @@ -56,6 +56,7 @@ import org.openmetadata.schema.entity.services.connections.TestConnectionResult; import org.openmetadata.schema.type.EntityHistory; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.MetadataOperation; +import org.openmetadata.schema.utils.EntityInterfaceUtil; import org.openmetadata.service.Entity; import org.openmetadata.service.jdbi3.CollectionDAO; import org.openmetadata.service.jdbi3.DatabaseServiceRepository; @@ -220,7 +221,8 @@ public class DatabaseServiceResource @DefaultValue("non-deleted") Include include) throws IOException { - DatabaseService databaseService = getByNameInternal(uriInfo, securityContext, name, fieldsParam, include); + DatabaseService databaseService = + getByNameInternal(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), fieldsParam, include); return decryptOrNullify(securityContext, databaseService); } @@ -434,7 +436,7 @@ public class DatabaseServiceResource @Parameter(description = "Name of the database service", schema = @Schema(type = "string")) @PathParam("name") String name) throws IOException { - return deleteByName(uriInfo, securityContext, name, false, hardDelete); + return deleteByName(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), false, hardDelete); } @PUT diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/messaging/MessagingServiceResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/messaging/MessagingServiceResource.java index 55cb9417208..9b331445d2e 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/messaging/MessagingServiceResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/messaging/MessagingServiceResource.java @@ -58,6 +58,7 @@ import org.openmetadata.schema.type.EntityHistory; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.MessagingConnection; import org.openmetadata.schema.type.MetadataOperation; +import org.openmetadata.schema.utils.EntityInterfaceUtil; import org.openmetadata.service.Entity; import org.openmetadata.service.jdbi3.CollectionDAO; import org.openmetadata.service.jdbi3.ListFilter; @@ -207,7 +208,8 @@ public class MessagingServiceResource @DefaultValue("non-deleted") Include include) throws IOException { - MessagingService messagingService = getByNameInternal(uriInfo, securityContext, name, fieldsParam, include); + MessagingService messagingService = + getByNameInternal(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), fieldsParam, include); return decryptOrNullify(securityContext, messagingService); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/metadata/MetadataServiceResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/metadata/MetadataServiceResource.java index 7e85ac319b0..8b63b1f73fa 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/metadata/MetadataServiceResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/metadata/MetadataServiceResource.java @@ -53,6 +53,7 @@ import org.openmetadata.schema.services.connections.metadata.OpenMetadataConnect import org.openmetadata.schema.type.EntityHistory; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.MetadataOperation; +import org.openmetadata.schema.utils.EntityInterfaceUtil; import org.openmetadata.service.Entity; import org.openmetadata.service.OpenMetadataApplicationConfig; import org.openmetadata.service.jdbi3.CollectionDAO; @@ -252,7 +253,8 @@ public class MetadataServiceResource @DefaultValue("non-deleted") Include include) throws IOException { - MetadataService metadataService = getByNameInternal(uriInfo, securityContext, name, fieldsParam, include); + MetadataService metadataService = + getByNameInternal(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), fieldsParam, include); return decryptOrNullify(securityContext, metadataService); } @@ -464,7 +466,7 @@ public class MetadataServiceResource @Parameter(description = "Name of the metadata service", schema = @Schema(type = "string")) @PathParam("name") String name) throws IOException { - return deleteByName(uriInfo, securityContext, name, false, hardDelete); + return deleteByName(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), false, hardDelete); } @PUT diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/mlmodel/MlModelServiceResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/mlmodel/MlModelServiceResource.java index fdea179d7ff..ad45e5eb4e7 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/mlmodel/MlModelServiceResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/mlmodel/MlModelServiceResource.java @@ -58,6 +58,7 @@ import org.openmetadata.schema.type.EntityHistory; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.MetadataOperation; import org.openmetadata.schema.type.MlModelConnection; +import org.openmetadata.schema.utils.EntityInterfaceUtil; import org.openmetadata.service.Entity; import org.openmetadata.service.jdbi3.CollectionDAO; import org.openmetadata.service.jdbi3.ListFilter; @@ -214,7 +215,8 @@ public class MlModelServiceResource @DefaultValue("non-deleted") Include include) throws IOException { - MlModelService mlModelService = getByNameInternal(uriInfo, securityContext, name, fieldsParam, include); + MlModelService mlModelService = + getByNameInternal(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), fieldsParam, include); return decryptOrNullify(securityContext, mlModelService); } @@ -426,7 +428,7 @@ public class MlModelServiceResource @Parameter(description = "Name of the ML Model service", schema = @Schema(type = "string")) @PathParam("name") String name) throws IOException { - return deleteByName(uriInfo, securityContext, name, false, hardDelete); + return deleteByName(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), false, hardDelete); } @PUT diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/pipeline/PipelineServiceResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/pipeline/PipelineServiceResource.java index e81084f7196..80a72070589 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/pipeline/PipelineServiceResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/pipeline/PipelineServiceResource.java @@ -56,6 +56,7 @@ import org.openmetadata.schema.type.EntityHistory; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.MetadataOperation; import org.openmetadata.schema.type.PipelineConnection; +import org.openmetadata.schema.utils.EntityInterfaceUtil; import org.openmetadata.service.Entity; import org.openmetadata.service.jdbi3.CollectionDAO; import org.openmetadata.service.jdbi3.ListFilter; @@ -213,7 +214,8 @@ public class PipelineServiceResource @DefaultValue("non-deleted") Include include) throws IOException { - PipelineService pipelineService = getByNameInternal(uriInfo, securityContext, fqn, fieldsParam, include); + PipelineService pipelineService = + getByNameInternal(uriInfo, securityContext, EntityInterfaceUtil.quoteName(fqn), fieldsParam, include); return decryptOrNullify(securityContext, pipelineService); } @@ -426,7 +428,7 @@ public class PipelineServiceResource @PathParam("fqn") String fqn) throws IOException { - return deleteByName(uriInfo, securityContext, fqn, false, hardDelete); + return deleteByName(uriInfo, securityContext, EntityInterfaceUtil.quoteName(fqn), false, hardDelete); } @PUT diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/storage/StorageServiceResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/storage/StorageServiceResource.java index 1bb9a877f91..8c6893e78b2 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/storage/StorageServiceResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/storage/StorageServiceResource.java @@ -44,6 +44,7 @@ import org.openmetadata.schema.type.EntityHistory; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.MetadataOperation; import org.openmetadata.schema.type.StorageConnection; +import org.openmetadata.schema.utils.EntityInterfaceUtil; import org.openmetadata.service.Entity; import org.openmetadata.service.jdbi3.CollectionDAO; import org.openmetadata.service.jdbi3.ListFilter; @@ -205,7 +206,8 @@ public class StorageServiceResource @DefaultValue("non-deleted") Include include) throws IOException { - StorageService storageService = getByNameInternal(uriInfo, securityContext, name, fieldsParam, include); + StorageService storageService = + getByNameInternal(uriInfo, securityContext, EntityInterfaceUtil.quoteName(name), fieldsParam, include); return decryptOrNullify(securityContext, storageService); } @@ -414,7 +416,7 @@ public class StorageServiceResource @Parameter(description = "Name of the StorageService", schema = @Schema(type = "string")) @PathParam("fqn") String fqn) throws IOException { - return deleteByName(uriInfo, securityContext, fqn, false, hardDelete); + return deleteByName(uriInfo, securityContext, EntityInterfaceUtil.quoteName(fqn), false, hardDelete); } @PUT