From 70e172925aeba2e0f4512022ca7ab8392d9e391e Mon Sep 17 00:00:00 2001 From: "GRUPOGMV\\ssis" Date: Tue, 25 Jun 2024 11:07:23 +0200 Subject: [PATCH 1/8] Upgrade --- gradle/libs.versions.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a5a776f..52eeda9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,14 +3,14 @@ format.version = "1.1" [versions] assertj = "3.26.0" -aws = "2.25.66" -edc = "0.7.0" +aws = "2.26.7" +edc = "0.7.1" jakarta-json = "2.0.1" -jersey = "3.0.0" +jersey = "3.1.7" junit-pioneer = "2.2.0" jupiter = "5.10.2" mockito = "5.2.0" -parsson = "1.1.4" +parsson = "1.1.6" postgres = "42.7.3" rsApi = "4.0.0" rseeApi = "10.0.0" From 411ef92b4dc9a80da8ed1d9d1b995540a2e337d3 Mon Sep 17 00:00:00 2001 From: "GRUPOGMV\\ssis" Date: Tue, 25 Jun 2024 13:21:10 +0200 Subject: [PATCH 2/8] Upgrade 0.7.1 --- .../inesdata/countelements/CountElementsApiExtension.java | 8 +++----- .../federated/FederatedCatalogCacheApiExtension.java | 8 +++----- .../sql/index/SqlFederatedCacheServiceExtension.java | 6 +++--- .../federated/sql/index/SqlFederatedCacheStore.java | 5 ++--- .../inesdata/storageasset/StorageAssetApiExtension.java | 7 ++----- .../upm/inesdata/vocabulary/VocabularyApiExtension.java | 7 ++----- gradle/libs.versions.toml | 5 +++-- .../index/PaginatedFederatedCacheStoreIndex.java | 4 ++-- 8 files changed, 20 insertions(+), 30 deletions(-) diff --git a/extensions/count-elements-api/src/main/java/org/upm/inesdata/countelements/CountElementsApiExtension.java b/extensions/count-elements-api/src/main/java/org/upm/inesdata/countelements/CountElementsApiExtension.java index f11392f..a36615c 100644 --- a/extensions/count-elements-api/src/main/java/org/upm/inesdata/countelements/CountElementsApiExtension.java +++ b/extensions/count-elements-api/src/main/java/org/upm/inesdata/countelements/CountElementsApiExtension.java @@ -1,7 +1,6 @@ package org.upm.inesdata.countelements; import jakarta.json.Json; -import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration; import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provider; @@ -12,6 +11,8 @@ import org.eclipse.edc.transaction.spi.TransactionContext; import org.eclipse.edc.transform.spi.TypeTransformerRegistry; import org.eclipse.edc.web.spi.WebService; +import org.eclipse.edc.web.spi.configuration.ApiContext; +import org.eclipse.edc.web.spi.configuration.context.ManagementApiUrl; import org.upm.inesdata.countelements.controller.CountElementsApiController; import org.upm.inesdata.countelements.service.CountElementsServiceImpl; import org.upm.inesdata.countelements.transformer.JsonObjectFromCountElementTransformer; @@ -39,9 +40,6 @@ public class CountElementsApiExtension implements ServiceExtension { @Inject(required = false) private HealthCheckService healthCheckService; - @Inject - private ManagementApiConfiguration config; - @Inject private TypeManager typeManager; @@ -75,6 +73,6 @@ public void initialize(ServiceExtensionContext context) { managementApiTransformerRegistry.register(new JsonObjectFromCountElementTransformer(factory, jsonLdMapper)); var countElementsApiController = new CountElementsApiController(countElementsService(), managementApiTransformerRegistry); - webService.registerResource(config.getContextAlias(), countElementsApiController); + webService.registerResource(ApiContext.MANAGEMENT, countElementsApiController); } } diff --git a/extensions/federated-catalog-cache-api/src/main/java/org/upm/inesdata/federated/FederatedCatalogCacheApiExtension.java b/extensions/federated-catalog-cache-api/src/main/java/org/upm/inesdata/federated/FederatedCatalogCacheApiExtension.java index 7931ea4..620fd80 100644 --- a/extensions/federated-catalog-cache-api/src/main/java/org/upm/inesdata/federated/FederatedCatalogCacheApiExtension.java +++ b/extensions/federated-catalog-cache-api/src/main/java/org/upm/inesdata/federated/FederatedCatalogCacheApiExtension.java @@ -1,7 +1,7 @@ package org.upm.inesdata.federated; import jakarta.json.Json; -import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration; +import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfigurationExtension; import org.eclipse.edc.connector.controlplane.transform.edc.from.JsonObjectFromAssetTransformer; import org.eclipse.edc.connector.controlplane.transform.edc.to.JsonObjectToAssetTransformer; import org.eclipse.edc.jsonld.spi.JsonLd; @@ -16,6 +16,7 @@ import org.eclipse.edc.transform.spi.TypeTransformerRegistry; import org.eclipse.edc.validator.spi.JsonObjectValidatorRegistry; import org.eclipse.edc.web.spi.WebService; +import org.eclipse.edc.web.spi.configuration.ApiContext; import org.upm.inesdata.federated.controller.FederatedCatalogCacheApiController; import org.upm.inesdata.federated.service.FederatedCatalogCacheServiceImpl; import org.upm.inesdata.spi.federated.FederatedCatalogCacheService; @@ -34,9 +35,6 @@ public class FederatedCatalogCacheApiExtension implements ServiceExtension { @Inject private WebService webService; - @Inject - private ManagementApiConfiguration config; - @Inject private TypeManager typeManager; @@ -85,6 +83,6 @@ public void initialize(ServiceExtensionContext context) { var federatedCatalogCacheApiController = new FederatedCatalogCacheApiController(this.federatedCatalogCacheService(), managementApiTransformerRegistry, validator,monitor); - webService.registerResource(config.getContextAlias(), federatedCatalogCacheApiController); + webService.registerResource(ApiContext.MANAGEMENT, federatedCatalogCacheApiController); } } diff --git a/extensions/federated-catalog-cache-sql/src/main/java/org/upm/inesdata/federated/sql/index/SqlFederatedCacheServiceExtension.java b/extensions/federated-catalog-cache-sql/src/main/java/org/upm/inesdata/federated/sql/index/SqlFederatedCacheServiceExtension.java index 5cf3f50..9e6570b 100644 --- a/extensions/federated-catalog-cache-sql/src/main/java/org/upm/inesdata/federated/sql/index/SqlFederatedCacheServiceExtension.java +++ b/extensions/federated-catalog-cache-sql/src/main/java/org/upm/inesdata/federated/sql/index/SqlFederatedCacheServiceExtension.java @@ -1,7 +1,7 @@ package org.upm.inesdata.federated.sql.index; import com.fasterxml.jackson.databind.ObjectMapper; -import org.eclipse.edc.catalog.spi.FederatedCacheStore; +import org.eclipse.edc.catalog.spi.FederatedCatalogCache; import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provider; @@ -20,7 +20,7 @@ /** * Extension that stores federatedCatalogs in SQL databases */ -@Provides({ FederatedCacheStore.class, PaginatedFederatedCacheStoreIndex.class }) +@Provides({ FederatedCatalogCache.class, PaginatedFederatedCacheStoreIndex.class }) @Extension(value = "SQL federatedCatalog index") public class SqlFederatedCacheServiceExtension implements ServiceExtension { @@ -64,7 +64,7 @@ public void initialize(ServiceExtensionContext context) { getDialect(), queryExecutor); context.registerService(PaginatedFederatedCacheStoreIndex.class, sqlFederatedCacheStore); - context.registerService(FederatedCacheStore.class, sqlFederatedCacheStore); + context.registerService(FederatedCatalogCache.class, sqlFederatedCacheStore); } private SqlFederatedCatalogStatements getDialect() { diff --git a/extensions/federated-catalog-cache-sql/src/main/java/org/upm/inesdata/federated/sql/index/SqlFederatedCacheStore.java b/extensions/federated-catalog-cache-sql/src/main/java/org/upm/inesdata/federated/sql/index/SqlFederatedCacheStore.java index 3ccc864..0f37e3b 100644 --- a/extensions/federated-catalog-cache-sql/src/main/java/org/upm/inesdata/federated/sql/index/SqlFederatedCacheStore.java +++ b/extensions/federated-catalog-cache-sql/src/main/java/org/upm/inesdata/federated/sql/index/SqlFederatedCacheStore.java @@ -98,11 +98,10 @@ public void save(Catalog catalog) { * @throws EdcPersistenceException if a SQL error occurs during the query. */ @Override - public Collection query(List query) { + public Collection query(QuerySpec query) { return transactionContext.execute(() -> { try (var connection = getConnection()) { - QuerySpec querySpec = QuerySpec.Builder.newInstance().filter(query).build(); - SqlQueryStatement queryStatement = databaseStatements.createQuery(querySpec); + SqlQueryStatement queryStatement = databaseStatements.createQuery(query); return queryExecutor.query(connection, true, this::mapResultSetToCatalog, queryStatement.getQueryAsString(), queryStatement.getParameters()).collect(Collectors.toList()); } catch (SQLException e) { diff --git a/extensions/store-asset-api/src/main/java/org/upm/inesdata/storageasset/StorageAssetApiExtension.java b/extensions/store-asset-api/src/main/java/org/upm/inesdata/storageasset/StorageAssetApiExtension.java index 319249e..3b248f8 100644 --- a/extensions/store-asset-api/src/main/java/org/upm/inesdata/storageasset/StorageAssetApiExtension.java +++ b/extensions/store-asset-api/src/main/java/org/upm/inesdata/storageasset/StorageAssetApiExtension.java @@ -2,7 +2,6 @@ import jakarta.json.Json; import org.eclipse.edc.api.validation.DataAddressValidator; -import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration; import org.eclipse.edc.connector.controlplane.api.management.asset.validation.AssetValidator; import org.eclipse.edc.connector.controlplane.services.spi.asset.AssetService; import org.eclipse.edc.connector.controlplane.transform.edc.from.JsonObjectFromAssetTransformer; @@ -18,6 +17,7 @@ import org.eclipse.edc.transform.spi.TypeTransformerRegistry; import org.eclipse.edc.validator.spi.JsonObjectValidatorRegistry; import org.eclipse.edc.web.spi.WebService; +import org.eclipse.edc.web.spi.configuration.ApiContext; import org.upm.inesdata.storageasset.controller.StorageAssetApiController; import org.upm.inesdata.storageasset.service.S3Service; import software.amazon.awssdk.regions.Region; @@ -47,9 +47,6 @@ public class StorageAssetApiExtension implements ServiceExtension { @Inject private WebService webService; - @Inject - private ManagementApiConfiguration config; - @Inject private TypeManager typeManager; @@ -104,6 +101,6 @@ public void initialize(ServiceExtensionContext context) { var storageAssetApiController = new StorageAssetApiController(assetService, managementApiTransformerRegistry, validator,s3Service, jsonLd, bucketName, regionName); - webService.registerResource(config.getContextAlias(), storageAssetApiController); + webService.registerResource(ApiContext.MANAGEMENT, storageAssetApiController); } } diff --git a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/VocabularyApiExtension.java b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/VocabularyApiExtension.java index febe52e..c2d774a 100644 --- a/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/VocabularyApiExtension.java +++ b/extensions/vocabulary-api/src/main/java/org/upm/inesdata/vocabulary/VocabularyApiExtension.java @@ -1,7 +1,6 @@ package org.upm.inesdata.vocabulary; import jakarta.json.Json; -import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration; import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provider; @@ -14,6 +13,7 @@ import org.eclipse.edc.transform.spi.TypeTransformerRegistry; import org.eclipse.edc.validator.spi.JsonObjectValidatorRegistry; import org.eclipse.edc.web.spi.WebService; +import org.eclipse.edc.web.spi.configuration.ApiContext; import org.upm.inesdata.spi.vocabulary.VocabularyIndex; import org.upm.inesdata.spi.vocabulary.VocabularyService; import org.upm.inesdata.vocabulary.controller.VocabularyApiController; @@ -46,9 +46,6 @@ public class VocabularyApiExtension implements ServiceExtension { @Inject(required = false) private HealthCheckService healthCheckService; - @Inject - private ManagementApiConfiguration config; - @Inject private TypeManager typeManager; @@ -90,7 +87,7 @@ public void initialize(ServiceExtensionContext context) { validator.register(EDC_VOCABULARY_TYPE, VocabularyValidator.instance()); var vocabularyApiController = new VocabularyApiController(this.vocabularyService(), managementApiTransformerRegistry, monitor, validator); - webService.registerResource(config.getContextAlias(), vocabularyApiController); + webService.registerResource(ApiContext.MANAGEMENT, vocabularyApiController); // contribute to the liveness probe if (healthCheckService != null) { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 52eeda9..b8252b2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,6 +5,7 @@ format.version = "1.1" assertj = "3.26.0" aws = "2.26.7" edc = "0.7.1" +edc-aws = "0.7.1-SNAPSHOT" jakarta-json = "2.0.1" jersey = "3.1.7" junit-pioneer = "2.2.0" @@ -76,8 +77,8 @@ edc-sql-transfer-process-store = { module = "org.eclipse.edc:transfer-process-st edc-sql-data-plane-store = { module = "org.eclipse.edc:data-plane-store-sql", version.ref = "edc" } # EDC aws s3 stuff -edc-aws-s3-core = { module = "org.eclipse.edc:aws-s3-core", version.ref = "edc" } -edc-data-plane-aws-s3 = { module = "org.eclipse.edc:data-plane-aws-s3", version.ref = "edc" } +edc-aws-s3-core = { module = "org.eclipse.edc:aws-s3-core", version.ref = "edc-aws" } +edc-data-plane-aws-s3 = { module = "org.eclipse.edc:data-plane-aws-s3", version.ref = "edc-aws" } # EDC Observability edc-observability-api = { module = "org.eclipse.edc:api-observability", version.ref = "edc" } diff --git a/spi/federated-catalog-cache-spi/src/main/java/org/upm/inesdata/spi/federated/index/PaginatedFederatedCacheStoreIndex.java b/spi/federated-catalog-cache-spi/src/main/java/org/upm/inesdata/spi/federated/index/PaginatedFederatedCacheStoreIndex.java index 7cc8192..499ae68 100644 --- a/spi/federated-catalog-cache-spi/src/main/java/org/upm/inesdata/spi/federated/index/PaginatedFederatedCacheStoreIndex.java +++ b/spi/federated-catalog-cache-spi/src/main/java/org/upm/inesdata/spi/federated/index/PaginatedFederatedCacheStoreIndex.java @@ -1,6 +1,6 @@ package org.upm.inesdata.spi.federated.index; -import org.eclipse.edc.catalog.spi.FederatedCacheStore; +import org.eclipse.edc.catalog.spi.FederatedCatalogCache; import org.eclipse.edc.connector.controlplane.catalog.spi.Catalog; import org.eclipse.edc.runtime.metamodel.annotation.ExtensionPoint; import org.eclipse.edc.spi.query.QuerySpec; @@ -11,7 +11,7 @@ * Datastore interface for objects. */ @ExtensionPoint -public interface PaginatedFederatedCacheStoreIndex extends FederatedCacheStore { +public interface PaginatedFederatedCacheStoreIndex extends FederatedCatalogCache { /** * Queries the store for {@code Catalog}s From 344f0cdf0c77da5b48e32d33c586b919cecbab73 Mon Sep 17 00:00:00 2001 From: ppel Date: Wed, 26 Jun 2024 13:19:38 +0200 Subject: [PATCH 3/8] Added dependencies --- gradle/libs.versions.toml | 3 +++ launchers/connector/build.gradle.kts | 1 + 2 files changed, 4 insertions(+) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b8252b2..2875eef 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,6 +21,7 @@ swagger-annotations-jakarta = "2.2.21" edc-api-asset = { module = "org.eclipse.edc:asset-api", version.ref = "edc" } edc-api-core = { module = "org.eclipse.edc:api-core", version.ref = "edc" } edc-api-management-config = { module = "org.eclipse.edc:management-api-configuration", version.ref = "edc" } +edc-api-control-config = { module = "org.eclipse.edc:control-api-configuration", version.ref = "edc" } edc-auth-spi = { module = "org.eclipse.edc:auth-spi", version.ref = "edc" } edc-build-plugin = { module = "org.eclipse.edc.edc-build:org.eclipse.edc.edc-build.gradle.plugin", version.ref = "edc" } edc-configuration-filesystem = { module = "org.eclipse.edc:configuration-filesystem", version.ref = "edc" } @@ -36,6 +37,8 @@ edc-data-plane-core = { module = "org.eclipse.edc:data-plane-core", version.ref edc-data-plane-http = { module = "org.eclipse.edc:data-plane-http", version.ref = "edc" } edc-data-plane-selector-api = { module = "org.eclipse.edc:data-plane-selector-api", version.ref = "edc" } edc-data-plane-selector-core = { module = "org.eclipse.edc:data-plane-selector-core", version.ref = "edc" } +edc-data-plane-selector-control-api = { module = "org.eclipse.edc:data-plane-selector-control-api", version.ref = "edc" } +edc-data-plane-selector-client = { module = "org.eclipse.edc:data-plane-selector-client", version.ref = "edc" } edc-data-plane-self-registration = { module = "org.eclipse.edc:data-plane-self-registration", version.ref = "edc" } edc-dsp = { module = "org.eclipse.edc:dsp", version.ref = "edc" } edc-dsp-api-configuration = { module = "org.eclipse.edc:dsp-http-api-configuration", version.ref = "edc" } diff --git a/launchers/connector/build.gradle.kts b/launchers/connector/build.gradle.kts index 7773377..fefcab5 100644 --- a/launchers/connector/build.gradle.kts +++ b/launchers/connector/build.gradle.kts @@ -9,6 +9,7 @@ dependencies { // Common libs implementation(libs.edc.dsp) implementation(libs.edc.management.api) + implementation(libs.edc.api.control.config) // Temporary libs implementation(libs.edc.configuration.filesystem) From ffd607a4c081ca39b12c835be0a3c73eee76b467 Mon Sep 17 00:00:00 2001 From: "GRUPOGMV\\ssis" Date: Thu, 27 Jun 2024 14:00:27 +0200 Subject: [PATCH 4/8] =?UTF-8?q?extensi=C3=B3n=20para=20a=C3=B1adir=20gener?= =?UTF-8?q?ator=20function=20de=20AmazonS3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extended-data-plane-public-api/README.md | 3 + .../build.gradle.kts | 9 ++ .../ExtendedDataPlanePublicApiExtension.java | 115 ++++++++++++++++++ ...rg.eclipse.edc.spi.system.ServiceExtension | 1 + launchers/connector/build.gradle.kts | 3 + settings.gradle.kts | 1 + 6 files changed, 132 insertions(+) create mode 100644 extensions/extended-data-plane-public-api/README.md create mode 100644 extensions/extended-data-plane-public-api/build.gradle.kts create mode 100644 extensions/extended-data-plane-public-api/src/main/java/org/upm/inesdata/extendeddataplanepublic/ExtendedDataPlanePublicApiExtension.java create mode 100644 extensions/extended-data-plane-public-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension diff --git a/extensions/extended-data-plane-public-api/README.md b/extensions/extended-data-plane-public-api/README.md new file mode 100644 index 0000000..dcf14cf --- /dev/null +++ b/extensions/extended-data-plane-public-api/README.md @@ -0,0 +1,3 @@ +# Extended data plane public API + +Provides an extension of 'DataPlanePublicApiV2Extension'. diff --git a/extensions/extended-data-plane-public-api/build.gradle.kts b/extensions/extended-data-plane-public-api/build.gradle.kts new file mode 100644 index 0000000..37a6aca --- /dev/null +++ b/extensions/extended-data-plane-public-api/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + `java-library` + id("com.gmv.inesdata.edc-application") +} + +dependencies { + api(libs.edc.spi.core) + implementation(libs.edc.data.plane.public.api) +} diff --git a/extensions/extended-data-plane-public-api/src/main/java/org/upm/inesdata/extendeddataplanepublic/ExtendedDataPlanePublicApiExtension.java b/extensions/extended-data-plane-public-api/src/main/java/org/upm/inesdata/extendeddataplanepublic/ExtendedDataPlanePublicApiExtension.java new file mode 100644 index 0000000..5b77525 --- /dev/null +++ b/extensions/extended-data-plane-public-api/src/main/java/org/upm/inesdata/extendeddataplanepublic/ExtendedDataPlanePublicApiExtension.java @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.upm.inesdata.extendeddataplanepublic; + +import org.eclipse.edc.connector.dataplane.api.controller.DataPlanePublicApiV2Controller; +import org.eclipse.edc.connector.dataplane.spi.Endpoint; +import org.eclipse.edc.connector.dataplane.spi.iam.DataPlaneAuthorizationService; +import org.eclipse.edc.connector.dataplane.spi.iam.PublicEndpointGeneratorService; +import org.eclipse.edc.connector.dataplane.spi.pipeline.PipelineService; +import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Inject; +import org.eclipse.edc.runtime.metamodel.annotation.Setting; +import org.eclipse.edc.runtime.metamodel.annotation.SettingContext; +import org.eclipse.edc.spi.system.ExecutorInstrumentation; +import org.eclipse.edc.spi.system.Hostname; +import org.eclipse.edc.spi.system.ServiceExtension; +import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.edc.web.spi.WebServer; +import org.eclipse.edc.web.spi.WebService; +import org.eclipse.edc.web.spi.configuration.ApiContext; +import org.eclipse.edc.web.spi.configuration.WebServiceConfigurer; +import org.eclipse.edc.web.spi.configuration.WebServiceSettings; + +import java.util.concurrent.Executors; + +/** + * This extension provides generic endpoints which are open to public participants of the Dataspace to execute + * requests on the actual data source. + */ +@Extension(value = ExtendedDataPlanePublicApiExtension.NAME) +public class ExtendedDataPlanePublicApiExtension implements ServiceExtension { + public static final String NAME = "Data Plane Public API"; + + private static final int DEFAULT_PUBLIC_PORT = 8185; + private static final String PUBLIC_CONTEXT_PATH = "/api/v2/public"; + + @SettingContext("Public API context setting key") + private static final String PUBLIC_CONFIG_KEY = "web.http." + ApiContext.PUBLIC; + + @Setting(value = "Base url of the public API endpoint without the trailing slash. This should correspond to the values configured " + + "in '" + DEFAULT_PUBLIC_PORT + "' and '" + PUBLIC_CONTEXT_PATH + "'.", defaultValue = "http://:" + DEFAULT_PUBLIC_PORT + PUBLIC_CONTEXT_PATH) + private static final String PUBLIC_ENDPOINT = "edc.dataplane.api.public.baseurl"; + + private static final int DEFAULT_THREAD_POOL = 10; + private static final WebServiceSettings PUBLIC_SETTINGS = WebServiceSettings.Builder.newInstance() + .apiConfigKey(PUBLIC_CONFIG_KEY) + .contextAlias(ApiContext.PUBLIC) + .defaultPath(PUBLIC_CONTEXT_PATH) + .defaultPort(DEFAULT_PUBLIC_PORT) + .name(NAME) + .build(); + + @Inject + private WebServer webServer; + + @Inject + private WebServiceConfigurer webServiceConfigurer; + + @Inject + private PipelineService pipelineService; + + @Inject + private WebService webService; + + @Inject + private ExecutorInstrumentation executorInstrumentation; + + @Inject + private DataPlaneAuthorizationService authorizationService; + + @Inject + private PublicEndpointGeneratorService generatorService; + + @Inject + private Hostname hostname; + + @Override + public String name() { + return NAME; + } + + @Override + public void initialize(ServiceExtensionContext context) { + var config = context.getConfig(PUBLIC_CONFIG_KEY); + var configuration = webServiceConfigurer.configure(config, webServer, PUBLIC_SETTINGS); + var executorService = executorInstrumentation.instrument( + Executors.newFixedThreadPool(DEFAULT_THREAD_POOL), + "Data plane proxy transfers" + ); + + var publicEndpoint = context.getSetting(PUBLIC_ENDPOINT, null); + if (publicEndpoint == null) { + publicEndpoint = "http://%s:%d%s".formatted(hostname.get(), configuration.getPort(), configuration.getPath()); + context.getMonitor().warning("Config property '%s' was not specified, the default '%s' will be used.".formatted(PUBLIC_ENDPOINT, publicEndpoint)); + } + var endpoint = Endpoint.url(publicEndpoint); + generatorService.addGeneratorFunction("HttpData", dataAddress -> endpoint); + generatorService.addGeneratorFunction("AmazonS3", dataAddress -> endpoint); + + var publicApiController = new DataPlanePublicApiV2Controller(pipelineService, executorService, authorizationService); + webService.registerResource(ApiContext.PUBLIC, publicApiController); + } +} diff --git a/extensions/extended-data-plane-public-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/extensions/extended-data-plane-public-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension new file mode 100644 index 0000000..d33192c --- /dev/null +++ b/extensions/extended-data-plane-public-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -0,0 +1 @@ +org.upm.inesdata.extendeddataplanepublic.ExtendedDataPlanePublicApiExtension \ No newline at end of file diff --git a/launchers/connector/build.gradle.kts b/launchers/connector/build.gradle.kts index fefcab5..7d485ea 100644 --- a/launchers/connector/build.gradle.kts +++ b/launchers/connector/build.gradle.kts @@ -90,6 +90,9 @@ dependencies { // Count elements implementation(project(":extensions:count-elements-api")) + //Data plane public api + implementation(project(":extensions:extended-data-plane-public-api")) + runtimeOnly(libs.edc.transaction.local) runtimeOnly(libs.postgres) } diff --git a/settings.gradle.kts b/settings.gradle.kts index 9943ffb..7803ccb 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -22,6 +22,7 @@ include(":extensions:federated-catalog-cache-sql") include(":extensions:federated-catalog-cache-api") include(":extensions:count-elements-api") include(":extensions:count-elements-sql") +include(":extensions:extended-data-plane-public-api") // Connector include(":launchers:connector") From 0186aeeb3f939782646d93fb51efb70dc5e40ce0 Mon Sep 17 00:00:00 2001 From: "GRUPOGMV\\ssis" Date: Thu, 27 Jun 2024 16:01:24 +0200 Subject: [PATCH 5/8] Inesdata store transferencia solucionada --- .../storageasset/controller/StorageAssetApiController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/store-asset-api/src/main/java/org/upm/inesdata/storageasset/controller/StorageAssetApiController.java b/extensions/store-asset-api/src/main/java/org/upm/inesdata/storageasset/controller/StorageAssetApiController.java index 8e208fa..04af4df 100644 --- a/extensions/store-asset-api/src/main/java/org/upm/inesdata/storageasset/controller/StorageAssetApiController.java +++ b/extensions/store-asset-api/src/main/java/org/upm/inesdata/storageasset/controller/StorageAssetApiController.java @@ -118,7 +118,7 @@ private long getFileSize(InputStream inputStream) throws IOException { private void setStorageProperties(Asset asset, String fileName) { asset.getPrivateProperties().put("storageAssetFile", fileName); asset.getDataAddress().setKeyName(fileName); - asset.getDataAddress().setType("InesDataStore"); + asset.getDataAddress().setType("AmazonS3"); asset.getDataAddress().getProperties().put(CoreConstants.EDC_NAMESPACE+ "bucketName", bucketName); asset.getDataAddress().getProperties().put(CoreConstants.EDC_NAMESPACE+"region", region); } From 9934e9dd96437d6cd5aa6fa4a9efe8a7cc7482d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n?= Date: Fri, 28 Jun 2024 08:31:07 +0200 Subject: [PATCH 6/8] suppress false positives --- suppressions.xml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/suppressions.xml b/suppressions.xml index 7e1a11b..6cb7b22 100644 --- a/suppressions.xml +++ b/suppressions.xml @@ -30,4 +30,32 @@ ^pkg:maven/org\.eclipse\.edc/vault\-hashicorp@.*$ cpe:/a:hashicorp:vault + + + ^pkg:maven/org\.eclipse\.edc/control\-plane\-spi@.*$ + cpe:2.3:a:plane:plane + + + + ^pkg:maven/org\.eclipse\.edc/control\-plane\-transform@.*$ + cpe:2.3:a:plane:plane + + + + ^pkg:maven/org\.eclipse\.edc/data\-plane\-selector\-spi@.*$ + cpe:2.3:a:plane:plane + + + + ^pkg:maven/org\.eclipse\.edc/data\-plane\-spi@.*$ + cpe:2.3:a:plane:plane + From 413ce26fefb52ba9f6f11dc6ede0be84437c1b71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n?= Date: Fri, 28 Jun 2024 08:45:09 +0200 Subject: [PATCH 7/8] suppress plane:plane false positives --- suppressions.xml | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/suppressions.xml b/suppressions.xml index 6cb7b22..31f715d 100644 --- a/suppressions.xml +++ b/suppressions.xml @@ -33,29 +33,11 @@ - ^pkg:maven/org\.eclipse\.edc/control\-plane\-spi@.*$ - cpe:2.3:a:plane:plane - - - - ^pkg:maven/org\.eclipse\.edc/control\-plane\-transform@.*$ - cpe:2.3:a:plane:plane - - - - ^pkg:maven/org\.eclipse\.edc/data\-plane\-selector\-spi@.*$ - cpe:2.3:a:plane:plane - - - - ^pkg:maven/org\.eclipse\.edc/data\-plane\-spi@.*$ - cpe:2.3:a:plane:plane + ^pkg:maven/org\.eclipse\.edc/.*@.*$ + cpe:/a:plane:plane From bd26b6e89f7dc6c13b4a1b61ad04f34bf5b8d7a3 Mon Sep 17 00:00:00 2001 From: "GRUPOGMV\\ssis" Date: Fri, 28 Jun 2024 09:38:19 +0200 Subject: [PATCH 8/8] README --- extensions/extended-data-plane-public-api/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/extended-data-plane-public-api/README.md b/extensions/extended-data-plane-public-api/README.md index dcf14cf..377ec9a 100644 --- a/extensions/extended-data-plane-public-api/README.md +++ b/extensions/extended-data-plane-public-api/README.md @@ -1,3 +1,3 @@ # Extended data plane public API -Provides an extension of 'DataPlanePublicApiV2Extension'. +Provides an extension of 'DataPlanePublicApiV2Extension' that allows performing HTTP-PULL from AmazonS3 destinations. \ No newline at end of file