diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/ServiceEntityResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/ServiceEntityResource.java index 5858ded843a..083e3c3d0fe 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/ServiceEntityResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/ServiceEntityResource.java @@ -53,9 +53,11 @@ public abstract class ServiceEntityResource< } protected T decryptOrNullify(SecurityContext securityContext, T service) { - service - .getConnection() - .setConfig(retrieveServiceConnectionConfig(service, authorizer.shouldMaskPasswords(securityContext))); + if (service.getConnection() != null) { + service + .getConnection() + .setConfig(retrieveServiceConnectionConfig(service, authorizer.shouldMaskPasswords(securityContext))); + } return service; } 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 bdace02fca3..7e85ac319b0 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 @@ -1,5 +1,6 @@ package org.openmetadata.service.resources.services.metadata; +import static org.openmetadata.common.utils.CommonUtil.nullOrEmpty; import static org.openmetadata.service.Entity.ADMIN_USER_NAME; import io.swagger.v3.oas.annotations.ExternalDocumentation; @@ -84,36 +85,32 @@ public class MetadataServiceResource public static final String FIELDS = "pipelines,owner,tags"; @Override - public void initialize(OpenMetadataApplicationConfig config) { + public void initialize(OpenMetadataApplicationConfig config) throws IOException { registerMetadataServices(config); } - private void registerMetadataServices(OpenMetadataApplicationConfig config) { - try { + private void registerMetadataServices(OpenMetadataApplicationConfig config) throws IOException { + List servicesList = + repository.getEntitiesFromSeedData(".*json/data/metadataService/OpenmetadataService.json$"); + if (!nullOrEmpty(servicesList)) { + MetadataService openMetadataService = servicesList.get(0); + openMetadataService.setId(UUID.randomUUID()); + openMetadataService.setUpdatedBy(ADMIN_USER_NAME); + openMetadataService.setUpdatedAt(System.currentTimeMillis()); if (config.getElasticSearchConfiguration() != null) { OpenMetadataConnection openMetadataServerConnection = new OpenMetadataConnectionBuilder(config) .build() .withElasticsSearch(getElasticSearchConnectionSink(config.getElasticSearchConfiguration())); MetadataConnection metadataConnection = new MetadataConnection().withConfig(openMetadataServerConnection); - List servicesList = - repository.getEntitiesFromSeedData(".*json/data/metadataService/.*\\.json$"); - if (servicesList.size() == 1) { - MetadataService service = servicesList.get(0); - service.setId(UUID.randomUUID()); - service.setConnection(metadataConnection); - service.setUpdatedBy(ADMIN_USER_NAME); - service.setUpdatedAt(System.currentTimeMillis()); - repository.setFullyQualifiedName(service); - repository.createOrUpdate(null, service); - } else { - throw new IOException("Only one Openmetadata Service can be initialized from the Data."); - } + openMetadataService.setConnection(metadataConnection); } else { LOG.error("[MetadataService] Missing Elastic Search Config."); } - } catch (Exception ex) { - LOG.error("[MetadataService] Error in creating Metadata Services.", ex); + repository.setFullyQualifiedName(openMetadataService); + repository.createOrUpdate(null, openMetadataService); + } else { + throw new IOException("Failed to initialize OpenMetadata Service."); } } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/MetadataServiceResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/MetadataServiceResourceTest.java index e41223dfc8c..2dc52f0218e 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/MetadataServiceResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/MetadataServiceResourceTest.java @@ -38,6 +38,8 @@ import org.openmetadata.service.util.TestUtils; @Slf4j public class MetadataServiceResourceTest extends EntityResourceTest { + public static final String DEFAULT_OPENMETADATA_SERVICE_NAME = "OpenMetadata"; + public MetadataServiceResourceTest() { super( Entity.METADATA_SERVICE, @@ -69,6 +71,12 @@ public class MetadataServiceResourceTest extends EntityResourceTest