diff --git a/DEPENDENCIES b/DEPENDENCIES index cb5bda37d..3b245758d 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -341,8 +341,8 @@ maven/mavencentral/org.eclipse.edc.aws/aws-spi/0.10.0-20240929-SNAPSHOT, Apache- maven/mavencentral/org.eclipse.edc.aws/data-plane-aws-s3/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc.aws/validator-data-address-s3/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc.azure/azure-blob-core/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc.azure/azure-test/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc.azure/data-plane-azure-storage/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc.azure/provision-blob/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc.azure/vault-azure/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/accesstoken-lib/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/accesstokendata-store-sql/0.10.0-20240929-SNAPSHOT, Apache-2.0, approved, technology.edc @@ -592,7 +592,6 @@ maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.10, Apache-2.0, approv maven/mavencentral/org.jetbrains/annotations/13.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains/annotations/17.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains/annotations/25.0.0, , restricted, clearlydefined -maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.1, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.11.0, EPL-2.0, approved, #15935 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.11.1, EPL-2.0, approved, #15935 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.11.1, EPL-2.0, approved, #15939 @@ -620,7 +619,6 @@ maven/mavencentral/org.ow2.asm/asm/9.1, BSD-3-Clause, approved, CQ23029 maven/mavencentral/org.ow2.asm/asm/9.5, BSD-3-Clause, approved, #7554 maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776 maven/mavencentral/org.ow2.asm/asm/9.7, BSD-3-Clause, approved, #14076 -maven/mavencentral/org.postgresql/postgresql/42.7.2, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.postgresql/postgresql/42.7.4, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.reactivestreams/reactive-streams/1.0.4, CC0-1.0, approved, CQ16332 maven/mavencentral/org.reflections/reflections/0.10.2, Apache-2.0 AND WTFPL, approved, clearlydefined diff --git a/edc-controlplane/edc-controlplane-base/build.gradle.kts b/edc-controlplane/edc-controlplane-base/build.gradle.kts index d1d85969c..1bba1f9de 100644 --- a/edc-controlplane/edc-controlplane-base/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-base/build.gradle.kts @@ -80,7 +80,7 @@ dependencies { runtimeOnly(libs.edc.controlplane.callback.dispatcher.http) // cloud provisioner extensions - runtimeOnly(project(":edc-extensions:backport:azblob-provisioner")) + runtimeOnly(libs.edc.azure.blob.provision) // Federated Catalog Crawler + Query API runtimeOnly(project(":edc-extensions:federated-catalog")) diff --git a/edc-extensions/backport/azblob-provisioner/build.gradle.kts b/edc-extensions/backport/azblob-provisioner/build.gradle.kts deleted file mode 100644 index 45db9bccb..000000000 --- a/edc-extensions/backport/azblob-provisioner/build.gradle.kts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2020, 2021 Microsoft Corporation - * - * 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: - * Microsoft Corporation - initial API and implementation - * - */ - -plugins { - `java-library` -} - -dependencies { - api(libs.edc.spi.core) - api(libs.edc.azure.blob.core) - - implementation(libs.azure.storage.blob) -// implementation(libs.failsafe.core) - - testImplementation(testFixtures(libs.edc.azure.test)) -} - - diff --git a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/AzureProvisionExtension.java b/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/AzureProvisionExtension.java deleted file mode 100644 index bed0067fe..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/AzureProvisionExtension.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure; - -import dev.failsafe.RetryPolicy; -import org.eclipse.edc.azure.blob.AzureSasToken; -import org.eclipse.edc.azure.blob.api.BlobStoreApi; -import org.eclipse.edc.connector.controlplane.transfer.spi.provision.ProvisionManager; -import org.eclipse.edc.connector.controlplane.transfer.spi.provision.Provisioner; -import org.eclipse.edc.connector.controlplane.transfer.spi.provision.ResourceManifestGenerator; -import org.eclipse.edc.connector.provision.azure.blob.ObjectContainerProvisionedResource; -import org.eclipse.edc.connector.provision.azure.blob.ObjectStorageConsumerResourceDefinitionGenerator; -import org.eclipse.edc.connector.provision.azure.blob.ObjectStorageProvisioner; -import org.eclipse.edc.connector.provision.azure.blob.ObjectStorageResourceDefinition; -import org.eclipse.edc.runtime.metamodel.annotation.Inject; -import org.eclipse.edc.spi.system.ServiceExtension; -import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.types.TypeManager; - -/** - * Provides data transfer {@link Provisioner}s backed by Azure services. - */ -public class AzureProvisionExtension implements ServiceExtension { - - @Inject - private BlobStoreApi blobStoreApi; - - @Inject - private RetryPolicy retryPolicy; - - @Inject - private ResourceManifestGenerator manifestGenerator; - - @Inject - private TypeManager typeManager; - - @Override - public String name() { - return "Azure Provision"; - } - - @Override - public void initialize(ServiceExtensionContext context) { - - var monitor = context.getMonitor(); - var provisionManager = context.getService(ProvisionManager.class); - - provisionManager.register(new ObjectStorageProvisioner(retryPolicy, monitor, blobStoreApi)); - - // register the generator - manifestGenerator.registerGenerator(new ObjectStorageConsumerResourceDefinitionGenerator()); - - registerTypes(typeManager); - } - - private void registerTypes(TypeManager typeManager) { - typeManager.registerTypes(ObjectContainerProvisionedResource.class, ObjectStorageResourceDefinition.class, AzureSasToken.class); - } - -} diff --git a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectContainerProvisionedResource.java b/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectContainerProvisionedResource.java deleted file mode 100644 index 9aa1dd24e..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectContainerProvisionedResource.java +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure.blob; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; -import org.eclipse.edc.azure.blob.AzureBlobStoreSchema; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.ProvisionedDataDestinationResource; - -import static org.eclipse.edc.azure.blob.AzureBlobStoreSchema.ACCOUNT_NAME; -import static org.eclipse.edc.azure.blob.AzureBlobStoreSchema.CONTAINER_NAME; -import static org.eclipse.edc.azure.blob.AzureBlobStoreSchema.FOLDER_NAME; -import static org.eclipse.edc.spi.constants.CoreConstants.EDC_NAMESPACE; - -@JsonDeserialize(builder = ObjectContainerProvisionedResource.Builder.class) -@JsonTypeName("dataspaceconnector:objectcontainerprovisionedresource") -public class ObjectContainerProvisionedResource extends ProvisionedDataDestinationResource { - - private ObjectContainerProvisionedResource() { - } - - public String getAccountName() { - return getDataAddress().getStringProperty(ACCOUNT_NAME); - } - - public String getContainerName() { - return getDataAddress().getStringProperty(CONTAINER_NAME); - } - - @JsonPOJOBuilder(withPrefix = "") - public static class Builder extends ProvisionedDataDestinationResource.Builder { - - private Builder() { - super(new ObjectContainerProvisionedResource()); - dataAddressBuilder.type(AzureBlobStoreSchema.TYPE); - } - - @JsonCreator - public static Builder newInstance() { - return new Builder(); - } - - public Builder accountName(String accountName) { - dataAddressBuilder.property(EDC_NAMESPACE + ACCOUNT_NAME, accountName); - return this; - } - - public Builder containerName(String containerName) { - dataAddressBuilder.property(EDC_NAMESPACE + CONTAINER_NAME, containerName); - return this; - } - - @Override - public Builder resourceName(String name) { - dataAddressBuilder.keyName(name); - super.resourceName(name); - return this; - } - - public Builder folderName(String folderName) { - if (folderName != null) { - dataAddressBuilder.property(EDC_NAMESPACE + FOLDER_NAME, folderName); - } - return this; - } - } -} diff --git a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageConsumerResourceDefinitionGenerator.java b/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageConsumerResourceDefinitionGenerator.java deleted file mode 100644 index d06e47cfa..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageConsumerResourceDefinitionGenerator.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure.blob; - -import org.eclipse.edc.azure.blob.AzureBlobStoreSchema; -import org.eclipse.edc.connector.controlplane.transfer.spi.provision.ConsumerResourceDefinitionGenerator; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.ResourceDefinition; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.TransferProcess; -import org.eclipse.edc.policy.model.Policy; -import org.eclipse.edc.spi.types.domain.DataAddress; -import org.jetbrains.annotations.Nullable; - -import static java.util.Optional.ofNullable; -import static java.util.UUID.randomUUID; - -public class ObjectStorageConsumerResourceDefinitionGenerator implements ConsumerResourceDefinitionGenerator { - - @Override - public @Nullable ResourceDefinition generate(TransferProcess transferProcess, Policy policy) { - var destination = transferProcess.getDataDestination(); - var id = randomUUID().toString(); - var account = destination.getStringProperty(AzureBlobStoreSchema.ACCOUNT_NAME); - var container = destination.getStringProperty(AzureBlobStoreSchema.CONTAINER_NAME); - var folderName = destination.getStringProperty(AzureBlobStoreSchema.FOLDER_NAME); - - if (container == null) { - container = randomUUID().toString(); - } - return ObjectStorageResourceDefinition.Builder.newInstance() - .id(id) - .accountName(account) - .containerName(container) - .folderName(folderName) - .build(); - } - - @Override - public boolean canGenerate(TransferProcess dataRequest, Policy policy) { - var type = ofNullable(dataRequest.getDataDestination()).map(DataAddress::getType).orElse(null); - return AzureBlobStoreSchema.TYPE.equals(type); - } -} diff --git a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageProvisioner.java b/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageProvisioner.java deleted file mode 100644 index 5b5807dba..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageProvisioner.java +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure.blob; - -import dev.failsafe.RetryPolicy; -import org.eclipse.edc.azure.blob.AzureSasToken; -import org.eclipse.edc.azure.blob.api.BlobStoreApi; -import org.eclipse.edc.connector.controlplane.transfer.spi.provision.Provisioner; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.DeprovisionedResource; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.ProvisionResponse; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.ProvisionedResource; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.ResourceDefinition; -import org.eclipse.edc.policy.model.Policy; -import org.eclipse.edc.spi.monitor.Monitor; -import org.eclipse.edc.spi.response.StatusResult; -import org.jetbrains.annotations.NotNull; - -import java.time.OffsetDateTime; -import java.util.concurrent.CompletableFuture; - -import static dev.failsafe.Failsafe.with; - -public class ObjectStorageProvisioner implements Provisioner { - private final RetryPolicy retryPolicy; - private final Monitor monitor; - private final BlobStoreApi blobStoreApi; - - public ObjectStorageProvisioner(RetryPolicy retryPolicy, Monitor monitor, BlobStoreApi blobStoreApi) { - this.retryPolicy = retryPolicy; - this.monitor = monitor; - this.blobStoreApi = blobStoreApi; - } - - @Override - public boolean canProvision(ResourceDefinition resourceDefinition) { - return resourceDefinition instanceof ObjectStorageResourceDefinition; - } - - @Override - public boolean canDeprovision(ProvisionedResource resourceDefinition) { - return resourceDefinition instanceof ObjectContainerProvisionedResource; - } - - @Override - public CompletableFuture> provision(ObjectStorageResourceDefinition resourceDefinition, Policy policy) { - String containerName = resourceDefinition.getContainerName(); - String accountName = resourceDefinition.getAccountName(); - String folderName = resourceDefinition.getFolderName(); - - monitor.debug("Azure Storage Container request submitted: " + containerName); - - OffsetDateTime expiryTime = OffsetDateTime.now().plusHours(1); - - return with(retryPolicy).getAsync(() -> blobStoreApi.exists(accountName, containerName)) - .thenCompose(exists -> { - if (exists) { - return reusingExistingContainer(containerName); - } else { - return createContainer(containerName, accountName); - } - }) - .thenCompose(empty -> createContainerSasToken(containerName, accountName, expiryTime)) - .thenApply(writeOnlySas -> { - // Ensure resource name is unique to avoid key collisions in local and remote vaults - String resourceName = resourceDefinition.getId() + "-container"; - var resource = ObjectContainerProvisionedResource.Builder.newInstance() - .id(containerName) - .accountName(accountName) - .containerName(containerName) - .folderName(folderName) - .resourceDefinitionId(resourceDefinition.getId()) - .transferProcessId(resourceDefinition.getTransferProcessId()) - .resourceName(resourceName) - .hasToken(true) - .build(); - - var secretToken = new AzureSasToken("?" + writeOnlySas, expiryTime.toInstant().toEpochMilli()); - - var response = ProvisionResponse.Builder.newInstance().resource(resource).secretToken(secretToken).build(); - return StatusResult.success(response); - }); - } - - @Override - public CompletableFuture> deprovision(ObjectContainerProvisionedResource provisionedResource, Policy policy) { - return with(retryPolicy).runAsync(() -> blobStoreApi.deleteContainer(provisionedResource.getAccountName(), provisionedResource.getContainerName())) - //the sas token will expire automatically. there is no way of revoking them other than a stored access policy - .thenApply(empty -> StatusResult.success(DeprovisionedResource.Builder.newInstance().provisionedResourceId(provisionedResource.getId()).build())); - } - - @NotNull - private CompletableFuture reusingExistingContainer(String containerName) { - monitor.debug("ObjectStorageProvisioner: re-use existing container " + containerName); - return CompletableFuture.completedFuture(null); - } - - @NotNull - private CompletableFuture createContainer(String containerName, String accountName) { - return with(retryPolicy) - .runAsync(() -> { - blobStoreApi.createContainer(accountName, containerName); - monitor.debug("ObjectStorageProvisioner: created a new container " + containerName); - }); - } - - @NotNull - private CompletableFuture createContainerSasToken(String containerName, String accountName, OffsetDateTime expiryTime) { - return with(retryPolicy) - .getAsync(() -> { - monitor.debug("ObjectStorageProvisioner: obtained temporary SAS token (write-only)"); - return blobStoreApi.createContainerSasToken(accountName, containerName, "w", expiryTime); - }); - } -} diff --git a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageResourceDefinition.java b/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageResourceDefinition.java deleted file mode 100644 index abec2cc4f..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/main/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageResourceDefinition.java +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure.blob; - - -import org.eclipse.edc.connector.controlplane.transfer.spi.types.ResourceDefinition; - -import java.util.Objects; - -public class ObjectStorageResourceDefinition extends ResourceDefinition { - - private String containerName; - private String accountName; - private String folderName; - - public String getContainerName() { - return containerName; - } - - public String getAccountName() { - return accountName; - } - - @Override - public Builder toBuilder() { - return initializeBuilder(new Builder()) - .containerName(containerName) - .folderName(folderName) - .accountName(accountName); - } - - public String getFolderName() { - return folderName; - } - - public static class Builder extends ResourceDefinition.Builder { - - private Builder() { - super(new ObjectStorageResourceDefinition()); - } - - public static Builder newInstance() { - return new Builder(); - } - - public Builder containerName(String id) { - resourceDefinition.containerName = id; - return this; - } - - public Builder accountName(String accountName) { - resourceDefinition.accountName = accountName; - return this; - } - - public Builder folderName(String folderName) { - resourceDefinition.folderName = folderName; - return this; - } - - @Override - protected void verify() { - super.verify(); - Objects.requireNonNull(resourceDefinition.containerName, "containerName"); - Objects.requireNonNull(resourceDefinition.accountName, "accountName"); - } - } - -} diff --git a/edc-extensions/backport/azblob-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/backport/azblob-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension deleted file mode 100644 index 13293b18a..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ /dev/null @@ -1,21 +0,0 @@ -################################################################################# -# Copyright (c) 2020,2021 Microsoft Corporation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# 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. -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# -# SPDX-License-Identifier: Apache-2.0 -################################################################################# - -org.eclipse.edc.connector.provision.azure.AzureProvisionExtension - diff --git a/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectContainerProvisionedResourceTest.java b/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectContainerProvisionedResourceTest.java deleted file mode 100644 index 40d94dfea..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectContainerProvisionedResourceTest.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure.blob; - -import org.eclipse.edc.azure.blob.AzureBlobStoreSchema; -import org.eclipse.edc.json.JacksonTypeManager; -import org.eclipse.edc.spi.types.TypeManager; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.azure.blob.AzureBlobStoreSchema.ACCOUNT_NAME; -import static org.eclipse.edc.azure.blob.AzureBlobStoreSchema.CONTAINER_NAME; -import static org.eclipse.edc.azure.blob.AzureBlobStoreSchema.FOLDER_NAME; - -class ObjectContainerProvisionedResourceTest { - - private final TypeManager typeManager = new JacksonTypeManager(); - private ObjectContainerProvisionedResource.Builder builder; - - @BeforeEach - void setUp() { - typeManager.registerTypes(ObjectContainerProvisionedResource.class); - - builder = ObjectContainerProvisionedResource.Builder.newInstance() - .containerName("test-container") - .accountName("test-account") - .transferProcessId("test-process-id") - .resourceDefinitionId("test-resdef-id") - .resourceName("test-container") - .id("test-id"); - } - - @Test - void createDataDestination() { - var dest = builder.build().getDataAddress(); - - assertThat(dest.getType()).isEqualTo(AzureBlobStoreSchema.TYPE); - assertThat(dest.getKeyName()).isEqualTo("test-container"); - assertThat(dest.getStringProperty(CONTAINER_NAME)).isEqualTo("test-container"); - assertThat(dest.getStringProperty(ACCOUNT_NAME)).isEqualTo("test-account"); - assertThat(dest.getProperties()).doesNotContainKey(FOLDER_NAME); - } - - @Test - void createDataDestination_withFolder() { - var dest = builder.folderName("testfolder").build().getDataAddress(); - - assertThat(dest.getType()).isEqualTo(AzureBlobStoreSchema.TYPE); - assertThat(dest.getKeyName()).isEqualTo("test-container"); - assertThat(dest.getStringProperty(CONTAINER_NAME)).isEqualTo("test-container"); - assertThat(dest.getStringProperty(ACCOUNT_NAME)).isEqualTo("test-account"); - assertThat(dest.getStringProperty(FOLDER_NAME)).isEqualTo("testfolder"); - } - - - @Test - void getResourceName() { - assertThat(builder.build().getResourceName()).isEqualTo("test-container"); - } - - @Test - void verifySerialization() { - var json = typeManager.writeValueAsString(builder.build()); - - assertThat(json).isNotNull() - .contains("accountName") - .contains("containerName"); - } - - @Test - void verifyDeserialization() { - var serialized = Map.of( - "id", "test-id", - "edctype", "dataspaceconnector:objectcontainerprovisionedresource", - "transferProcessId", "test-process-id", - "resourceDefinitionId", "test-resdef-id", - "accountName", "test-account", - "containerName", "test-container", - "resourceName", "test-container" - ); - - var res = typeManager.readValue(typeManager.writeValueAsBytes(serialized), ObjectContainerProvisionedResource.class); - - assertThat(res).isNotNull(); - assertThat(res.getContainerName()).isEqualTo("test-container"); - assertThat(res.getAccountName()).isEqualTo("test-account"); - assertThat(res).usingRecursiveComparison().isEqualTo(builder.build()); - } -} diff --git a/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageConsumerResourceDefinitionGeneratorTest.java b/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageConsumerResourceDefinitionGeneratorTest.java deleted file mode 100644 index c1f5c476a..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageConsumerResourceDefinitionGeneratorTest.java +++ /dev/null @@ -1,132 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure.blob; - -import org.eclipse.edc.azure.blob.AzureBlobStoreSchema; -import org.eclipse.edc.connector.controlplane.asset.spi.domain.Asset; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.TransferProcess; -import org.eclipse.edc.policy.model.Policy; -import org.eclipse.edc.spi.types.domain.DataAddress; -import org.junit.jupiter.api.Test; - -import java.util.UUID; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatExceptionOfType; - -class ObjectStorageConsumerResourceDefinitionGeneratorTest { - - private final ObjectStorageConsumerResourceDefinitionGenerator generator = - new ObjectStorageConsumerResourceDefinitionGenerator(); - - @Test - void generate_withContainerName() { - var destination = DataAddress.Builder.newInstance().type(AzureBlobStoreSchema.TYPE) - .property(AzureBlobStoreSchema.CONTAINER_NAME, "test-container") - .property(AzureBlobStoreSchema.ACCOUNT_NAME, "test-account") - .build(); - var asset = Asset.Builder.newInstance().build(); - var transferProcess = TransferProcess.Builder.newInstance().dataDestination(destination).assetId(asset.getId()).build(); - var policy = Policy.Builder.newInstance().build(); - - var definition = generator.generate(transferProcess, policy); - - assertThat(definition).isInstanceOf(ObjectStorageResourceDefinition.class); - var objectDef = (ObjectStorageResourceDefinition) definition; - assertThat(objectDef.getAccountName()).isEqualTo("test-account"); - assertThat(objectDef.getContainerName()).isEqualTo("test-container"); - assertThat(objectDef.getId()).satisfies(UUID::fromString); - assertThat(objectDef.getFolderName()).isNull(); - } - - @Test - void generate_withContainerName_andFolder() { - var destination = DataAddress.Builder.newInstance().type(AzureBlobStoreSchema.TYPE) - .property(AzureBlobStoreSchema.CONTAINER_NAME, "test-container") - .property(AzureBlobStoreSchema.ACCOUNT_NAME, "test-account") - .property(AzureBlobStoreSchema.FOLDER_NAME, "test-folder") - .build(); - var asset = Asset.Builder.newInstance().build(); - var transferProcess = TransferProcess.Builder.newInstance().dataDestination(destination).assetId(asset.getId()).build(); - var policy = Policy.Builder.newInstance().build(); - - var definition = generator.generate(transferProcess, policy); - - assertThat(definition).isInstanceOf(ObjectStorageResourceDefinition.class); - var objectDef = (ObjectStorageResourceDefinition) definition; - assertThat(objectDef.getAccountName()).isEqualTo("test-account"); - assertThat(objectDef.getContainerName()).isEqualTo("test-container"); - assertThat(objectDef.getId()).satisfies(UUID::fromString); - assertThat(objectDef.getFolderName()).isEqualTo("test-folder"); - } - - @Test - void generate_noDataRequestAsParameter() { - var policy = Policy.Builder.newInstance().build(); - assertThatExceptionOfType(NullPointerException.class).isThrownBy(() -> generator.generate(null, policy)); - } - - @Test - void generate_withoutContainerName() { - var destination = DataAddress.Builder.newInstance().type(AzureBlobStoreSchema.TYPE) - .property(AzureBlobStoreSchema.ACCOUNT_NAME, "test-account") - .build(); - var asset = Asset.Builder.newInstance().build(); - var transferProcess = TransferProcess.Builder.newInstance().dataDestination(destination).assetId(asset.getId()).build(); - var policy = Policy.Builder.newInstance().build(); - - var definition = generator.generate(transferProcess, policy); - - assertThat(definition).isInstanceOf(ObjectStorageResourceDefinition.class); - var objectDef = (ObjectStorageResourceDefinition) definition; - assertThat(objectDef.getAccountName()).isEqualTo("test-account"); - assertThat(objectDef.getContainerName()).satisfies(UUID::fromString); - assertThat(objectDef.getId()).satisfies(UUID::fromString); - } - - @Test - void canGenerate() { - var destination = DataAddress.Builder.newInstance().type(AzureBlobStoreSchema.TYPE) - .property(AzureBlobStoreSchema.ACCOUNT_NAME, "test-account") - .build(); - var asset = Asset.Builder.newInstance().build(); - var transferProcess = TransferProcess.Builder.newInstance().dataDestination(destination).assetId(asset.getId()).build(); - var policy = Policy.Builder.newInstance().build(); - - var definition = generator.canGenerate(transferProcess, policy); - - assertThat(definition).isTrue(); - } - - @Test - void canGenerate_isNotTypeAzureBlobStoreSchema() { - var destination = DataAddress.Builder.newInstance().type("aNonGoogleCloudStorage") - .property(AzureBlobStoreSchema.ACCOUNT_NAME, "test-account") - .build(); - var asset = Asset.Builder.newInstance().build(); - var transferProcess = TransferProcess.Builder.newInstance().dataDestination(destination).assetId(asset.getId()).build(); - var policy = Policy.Builder.newInstance().build(); - - var definition = generator.canGenerate(transferProcess, policy); - - assertThat(definition).isFalse(); - } - -} diff --git a/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageProvisionerTest.java b/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageProvisionerTest.java deleted file mode 100644 index 5a06f8356..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageProvisionerTest.java +++ /dev/null @@ -1,206 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure.blob; - -import com.azure.storage.blob.models.BlobStorageException; -import dev.failsafe.RetryPolicy; -import org.eclipse.edc.azure.blob.AzureSasToken; -import org.eclipse.edc.azure.blob.api.BlobStoreApi; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.ProvisionedResource; -import org.eclipse.edc.connector.controlplane.transfer.spi.types.ResourceDefinition; -import org.eclipse.edc.policy.model.Policy; -import org.eclipse.edc.spi.monitor.Monitor; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.eclipse.edc.azure.blob.AzureBlobStoreSchema.FOLDER_NAME; -import static org.eclipse.edc.spi.constants.CoreConstants.EDC_NAMESPACE; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -class ObjectStorageProvisionerTest { - - private final BlobStoreApi blobStoreApiMock = mock(BlobStoreApi.class); - private ObjectStorageProvisioner provisioner; - private Policy policy; - - @BeforeEach - void setup() { - RetryPolicy retryPolicy = RetryPolicy.builder().withMaxRetries(0).build(); - provisioner = new ObjectStorageProvisioner(retryPolicy, mock(Monitor.class), blobStoreApiMock); - policy = Policy.Builder.newInstance().build(); - } - - @Test - void canProvision() { - assertThat(provisioner.canProvision(new ObjectStorageResourceDefinition())).isTrue(); - assertThat(provisioner.canProvision(new ResourceDefinition() { - @Override - public > B toBuilder() { - return null; - } - })).isFalse(); - } - - @Test - void canDeprovision() { - var resource = createProvisionedResource(); - assertThat(provisioner.canDeprovision(resource)).isTrue(); - assertThat(provisioner.canDeprovision(new ProvisionedResource() { - })).isFalse(); - } - - @Test - void deprovision_should_not_do_anything() { - ObjectContainerProvisionedResource resource = createProvisionedResource(); - var result = provisioner.deprovision(resource, policy); - - assertThat(result).succeedsWithin(1, SECONDS); - } - - @Test - void provision_withFolder_success() { - var resourceDef = createResourceDefinitionBuilder().transferProcessId("tpId").folderName("test-folder").build(); - String accountName = resourceDef.getAccountName(); - String containerName = resourceDef.getContainerName(); - when(blobStoreApiMock.exists(anyString(), anyString())).thenReturn(false); - when(blobStoreApiMock.createContainerSasToken(eq(accountName), eq(containerName), eq("w"), any())).thenReturn("some-sas"); - - var response = provisioner.provision(resourceDef, policy).join().getContent(); - - assertThat(response.getResource()).isInstanceOfSatisfying(ObjectContainerProvisionedResource.class, resource -> { - assertThat(resource.getTransferProcessId()).isEqualTo("tpId"); - assertThat(resource.getDataAddress().getStringProperty(EDC_NAMESPACE + FOLDER_NAME)).isEqualTo("test-folder"); - }); - assertThat(response.getSecretToken()).isInstanceOfSatisfying(AzureSasToken.class, secretToken -> { - assertThat(secretToken.getSas()).isEqualTo("?some-sas"); - }); - - verify(blobStoreApiMock).exists(anyString(), anyString()); - verify(blobStoreApiMock).createContainer(accountName, containerName); - } - - @Test - void provision_success() { - var resourceDef = createResourceDefinitionBuilder().transferProcessId("tpId").build(); - String accountName = resourceDef.getAccountName(); - String containerName = resourceDef.getContainerName(); - when(blobStoreApiMock.exists(anyString(), anyString())).thenReturn(false); - when(blobStoreApiMock.createContainerSasToken(eq(accountName), eq(containerName), eq("w"), any())).thenReturn("some-sas"); - - var response = provisioner.provision(resourceDef, policy).join().getContent(); - - assertThat(response.getResource()).isInstanceOfSatisfying(ObjectContainerProvisionedResource.class, resource -> { - assertThat(resource.getTransferProcessId()).isEqualTo("tpId"); - assertThat(resource.getDataAddress().getStringProperty(EDC_NAMESPACE + FOLDER_NAME)).isNull(); - }); - assertThat(response.getSecretToken()).isInstanceOfSatisfying(AzureSasToken.class, secretToken -> { - assertThat(secretToken.getSas()).isEqualTo("?some-sas"); - }); - - verify(blobStoreApiMock).exists(anyString(), anyString()); - verify(blobStoreApiMock).createContainer(accountName, containerName); - } - - @Test - void provision_unique_name() { - var resourceDef = createResourceDefinitionBuilder().id("id").transferProcessId("tpId").build(); - String accountName = resourceDef.getAccountName(); - String containerName = resourceDef.getContainerName(); - when(blobStoreApiMock.exists(accountName, containerName)).thenReturn(true); - when(blobStoreApiMock.createContainerSasToken(eq(accountName), eq(containerName), eq("w"), any())).thenReturn("some-sas"); - - var response = provisioner.provision(resourceDef, policy).join().getContent(); - - var resourceDef2 = createResourceDefinitionBuilder().id("id2").transferProcessId("tpId2").build(); - var response2 = provisioner.provision(resourceDef2, policy).join().getContent(); - var resource1 = (ObjectContainerProvisionedResource) response.getResource(); - var resource2 = (ObjectContainerProvisionedResource) response2.getResource(); - assertThat(resource2.getResourceName()).isNotEqualTo(resource1.getResourceName()); - } - - @Test - void provision_container_already_exists() { - var resourceDef = createResourceDefinitionBuilder().transferProcessId("tpId").build(); - String accountName = resourceDef.getAccountName(); - String containerName = resourceDef.getContainerName(); - when(blobStoreApiMock.exists(accountName, containerName)).thenReturn(true); - when(blobStoreApiMock.createContainerSasToken(eq(accountName), eq(containerName), eq("w"), any())).thenReturn("some-sas"); - - var response = provisioner.provision(resourceDef, policy).join().getContent(); - - assertThat(response.getResource()).isInstanceOfSatisfying(ObjectContainerProvisionedResource.class, resource -> { - assertThat(resource.getTransferProcessId()).isEqualTo("tpId"); - }); - assertThat(response.getSecretToken()).isInstanceOfSatisfying(AzureSasToken.class, secretToken -> { - assertThat(secretToken.getSas()).isEqualTo("?some-sas"); - }); - verify(blobStoreApiMock).exists(anyString(), anyString()); - verify(blobStoreApiMock).createContainerSasToken(eq(accountName), eq(containerName), eq("w"), any()); - } - - @Test - void provision_no_key_found_in_vault() { - var resourceDefinition = createResourceDefinitionBuilder().build(); - when(blobStoreApiMock.exists(any(), anyString())) - .thenThrow(new IllegalArgumentException("No Object Storage credential found in vault")); - - assertThatThrownBy(() -> provisioner.provision(resourceDefinition, policy).join()).hasCauseInstanceOf(IllegalArgumentException.class); - verify(blobStoreApiMock).exists(any(), any()); - } - - @Test - void provision_key_not_authorized() { - var resourceDef = createResourceDefinitionBuilder().build(); - when(blobStoreApiMock.exists(anyString(), anyString())).thenReturn(false); - doThrow(new BlobStorageException("not authorized", null, null)) - .when(blobStoreApiMock).createContainer(resourceDef.getAccountName(), resourceDef.getContainerName()); - - assertThatThrownBy(() -> provisioner.provision(resourceDef, policy).join()).hasCauseInstanceOf(BlobStorageException.class); - verify(blobStoreApiMock).exists(anyString(), anyString()); - } - - private ObjectStorageResourceDefinition.Builder createResourceDefinitionBuilder() { - return ObjectStorageResourceDefinition.Builder - .newInstance() - .accountName("test-account-name") - .containerName("test-container-name") - .transferProcessId("test-process-id") - .id("test-id"); - } - - private ObjectContainerProvisionedResource createProvisionedResource() { - return ObjectContainerProvisionedResource.Builder.newInstance() - .id("1") - .transferProcessId("2") - .resourceDefinitionId("3") - .resourceName("resource") - .build(); - } - -} diff --git a/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageResourceDefinitionTest.java b/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageResourceDefinitionTest.java deleted file mode 100644 index 433f93d4f..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/test/java/org/eclipse/edc/connector/provision/azure/blob/ObjectStorageResourceDefinitionTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2020,2021 Microsoft Corporation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.connector.provision.azure.blob; - -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.NullAndEmptySource; -import org.junit.jupiter.params.provider.ValueSource; - -import static org.assertj.core.api.Assertions.assertThat; - -class ObjectStorageResourceDefinitionTest { - - @ParameterizedTest - @ValueSource(strings = { "test-folder" }) - @NullAndEmptySource - void toBuilder_verifyEqualResourceDefinition(String folder) { - var definition = ObjectStorageResourceDefinition.Builder.newInstance() - .id("id") - .transferProcessId("tp-id") - .accountName("account") - .containerName("container") - .folderName(folder) - .build(); - var builder = definition.toBuilder(); - var rebuiltDefinition = builder.build(); - - assertThat(rebuiltDefinition).usingRecursiveComparison().isEqualTo(definition); - } - -} diff --git a/edc-extensions/backport/azblob-provisioner/src/test/resources/hello.txt b/edc-extensions/backport/azblob-provisioner/src/test/resources/hello.txt deleted file mode 100644 index bc7774a7b..000000000 --- a/edc-extensions/backport/azblob-provisioner/src/test/resources/hello.txt +++ /dev/null @@ -1 +0,0 @@ -hello world! \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a7e8f7742..2356b19e8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -108,11 +108,7 @@ edc-azure-vault = { module = "org.eclipse.edc.azure:vault-azure", version.ref = azure-storage-blob = { module = "com.azure:azure-storage-blob", version.ref = "azure-storage-blob" } edc-azure-identity = { module = "com.azure:azure-identity", version.ref = "azure-identity" } edc-dpf-azblob = { module = "org.eclipse.edc.azure:data-plane-azure-storage", version.ref = "edc" } -edc-azure-blob-core = { module = "org.eclipse.edc.azure:azure-blob-core", version.ref = "edc" } -edc-azure-test = { module = "org.eclipse.edc.azure:azure-test", version.ref = "edc" } - -# commented, because this module has been backported temporarily -#edc-azure-blob-provision = { module = "org.eclipse.edc.azure:provision-blob", version.ref = "edc" } +edc-azure-blob-provision = { module = "org.eclipse.edc.azure:provision-blob", version.ref = "edc" } # EDC aws s3 stuff edc-aws-s3-core = { module = "org.eclipse.edc.aws:aws-s3-core", version.ref = "edc" } diff --git a/settings.gradle.kts b/settings.gradle.kts index fe245c0d1..2833708c6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -51,7 +51,6 @@ include(":edc-extensions:cx-policy") include(":edc-extensions:dcp:tx-dcp") include(":edc-extensions:dcp:tx-dcp-sts-dim") include(":edc-extensions:data-flow-properties-provider") -include(":edc-extensions:backport:azblob-provisioner") // extensions - data plane