From 538c04535b486b15a821ec8178718fd06d89d895 Mon Sep 17 00:00:00 2001 From: Ernst-Christoph Schrewe Date: Fri, 6 Feb 2026 09:49:19 +0100 Subject: [PATCH 1/6] feat/con-x-edc-initial --- .../README.md | 9 + .../build.gradle.kts | 53 +++ .../local/README.md | 77 ++++ .../additional_config/logging.properties | 18 + .../local/additional_config/mc-cred-def.json | 10 + .../additional_config/pg_init/pg_init.sql | 8 + .../local/additional_config/vault-init.sh | 33 ++ .../local/bruno/fx-local-test/bruno.json | 9 + .../environments/local-con-x-env.bru | 35 ++ .../ShowConsumerCredentials.bru | 20 + .../ShowProviderCredentials copy.bru | 20 + .../identities/Inspect Outcome/folder.bru | 12 + .../CreateConsumerParticipant.bru | 59 +++ .../Get Consumer DID Doc.bru | 20 + .../RequestConsumerCredential.bru | 34 ++ .../Prepare Consumer ID/VaultSecret test.bru | 20 + .../Prepare Consumer ID/VaultSecret.bru | 28 ++ .../identities/Prepare Consumer ID/folder.bru | 13 + .../CreateIssuerParticipant.bru | 57 +++ .../Optionalconfig/GetConfig.bru | 26 ++ .../Optionalconfig/SetConfig.bru | 39 ++ .../Prepare Issuer/Optionalconfig/folder.bru | 16 + .../Prepare Issuer/addConsumerHolder.bru | 35 ++ .../Prepare Issuer/addProviderHolder.bru | 34 ++ .../Prepare Issuer/createAttestation.bru | 39 ++ .../Prepare Issuer/createCredentialDef.bru | 38 ++ .../identities/Prepare Issuer/folder.bru | 22 ++ .../CreateProviderParticipant.bru | 59 +++ .../Get Provider DID Doc.bru | 20 + .../RequestProviderCredential.bru | 35 ++ .../Prepare Provider ID/VaultSecret test.bru | 20 + .../Prepare Provider ID/VaultSecret.bru | 28 ++ .../identities/Prepare Provider ID/folder.bru | 13 + .../Simulated DCP Flow/Consumer Token.bru | 35 ++ .../Simulated DCP Flow/Get Credential.bru | 43 +++ .../Simulated DCP Flow/Provider Token.bru | 30 ++ .../identities/Simulated DCP Flow/folder.bru | 34 ++ .../bruno/fx-local-test/identities/folder.bru | 8 + .../consumer/CheckNegotiationResult.bru | 25 ++ .../transactions/consumer/Get EDR.bru | 25 ++ .../consumer/InitPullTransfer.bru | 35 ++ .../consumer/InitiateNegotiation.bru | 47 +++ .../transactions/consumer/PullAssetData.bru | 20 + .../consumer/RequestProviderCatalog.bru | 34 ++ .../transactions/consumer/folder.bru | 20 + .../fx-local-test/transactions/folder.bru | 11 + .../transactions/provider/CreateAsset.bru | 35 ++ .../provider/CreateContractDefinition.bru | 28 ++ .../transactions/provider/CreatePolicy.bru | 33 ++ .../transactions/provider/folder.bru | 12 + .../local/docker-compose.yaml | 364 ++++++++++++++++++ .../README.md | 9 + .../build.gradle.kts | 51 +++ settings.gradle.kts | 4 + 54 files changed, 1862 insertions(+) create mode 100644 edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/README.md create mode 100644 edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/build.gradle.kts create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/README.md create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/additional_config/logging.properties create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/additional_config/mc-cred-def.json create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/additional_config/pg_init/pg_init.sql create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/bruno.json create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/environments/local-con-x-env.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowConsumerCredentials.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/Get Consumer DID Doc.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/RequestConsumerCredential.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret test.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/GetConfig.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/SetConfig.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addConsumerHolder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addProviderHolder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createAttestation.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createCredentialDef.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/Get Provider DID Doc.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/RequestProviderCredential.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret test.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Consumer Token.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Get Credential.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Provider Token.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/CheckNegotiationResult.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/Get EDR.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitPullTransfer.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitiateNegotiation.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/PullAssetData.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/RequestProviderCatalog.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateAsset.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateContractDefinition.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreatePolicy.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/folder.bru create mode 100644 edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml create mode 100644 edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/README.md create mode 100644 edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/build.gradle.kts diff --git a/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/README.md b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/README.md new file mode 100644 index 0000000000..961933bd1c --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/README.md @@ -0,0 +1,9 @@ +# con-x-controlplane-postgresql-hashicorp-vault Module + +## Building + +From the project root directory, run + +```shell +./gradlew :edc-controlplane:edc-controlplane-construct-x:con-x-controlplane-postgres-hashicorp-vault:dockerize +``` diff --git a/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/build.gradle.kts b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/build.gradle.kts new file mode 100644 index 0000000000..29eaef2144 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/build.gradle.kts @@ -0,0 +1,53 @@ +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH + * Copyright (c) 2026 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) + * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation + * + * 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 + */ + +plugins { + `java-library` + id("application") + alias(libs.plugins.shadow) +} + +dependencies { + val edcVersion = "0.14.1" + val txVersion = "0.11.2" + implementation("org.eclipse.edc:controlplane-dcp-bom:$edcVersion") + implementation("org.eclipse.edc:controlplane-feature-sql-bom:$edcVersion") + + implementation("org.eclipse.edc:vault-hashicorp:$edcVersion") + implementation("org.eclipse.tractusx.edc:agreements:$txVersion") + implementation("org.eclipse.tractusx.edc:retirement-evaluation-store-sql:$txVersion") + implementation("org.eclipse.tractusx.edc:control-plane-migration:$txVersion") + implementation("org.eclipse.tractusx.edc:tx-dcp:${txVersion}") +} + +tasks.withType { + mergeServiceFiles() + archiveFileName.set("con-x-controlplane-postgresql-hashicorp-vault.jar") + transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) +} + +tasks.named("build") { + dependsOn(tasks.named("shadowJar")) +} + +application { + mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") +} \ No newline at end of file diff --git a/edc-controlplane/edc-controlplane-construct-x/local/README.md b/edc-controlplane/edc-controlplane-construct-x/local/README.md new file mode 100644 index 0000000000..a2c36375a3 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/README.md @@ -0,0 +1,77 @@ +# local docker based testbed + + +This docker-compose.yaml provides you a minimal environment for testing a pair of construct-x-edc's against each other. + +Before anything else, please make sure you have the docker images for con-x-controlplane-postgresql-hashicorp-vault in your local docker repository, see [here](../con-x-controlplane-postgresql-hashicorp-vault/README.md) and [here](../../../edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/README.md). + + +#### TO-DO +(provide access to identityhub and issuerservice docker images) + + +### Start the environment +Now we are ready to start the environment. For that, please run + +``` +docker compose up +``` + +Then please use the attached Bruno collection. ([Bruno](https://www.usebruno.com/) is a convenient http client, which +you should install, if you haven't already.) In order to this, choose the "open" (not "import") option item in the Bruno +UI and select the respective [folder](./bruno/fx-local-test). After that, please use the icon in the upper right corner +of the Bruno GUI to select the environment (which stores the variables, that the requests will need). + +In that collection you should first run the requests of the ´identities´ folder. +After you have completed all required steps, the provider and the consumer identity are onboarded in your own dataspace +and ready to interact with each other. + +Now you are ready to perform a simple contract negotiation and data transfer between these two actors. + +Be sure to also read the documentation that is attached to the folders in the Bruno collection. You may also want to +check the pre- and postrequest scripts of many requests, because they may give you further insights. + +In a nutshell, we are presenting the following workflows here: + +### Create an issuer-participant + +The issuer-participant will act as the dataspaces' trusted issuer. This issuer is mandated to sign and hand +out verifiable credentials, which the members of the dataspace can use to prove their membership (or potentially other +relevant properties of themselves) to other partners in the same dataspace. After the registration of the issuer we are +also providing the basic definition of the credential that shall be issued. And we also need register the expected ( +user-) members of the dataspace at the issuer service. + +### Create a consumer and a provider identity + +Somewhat similar to the creation of the issuer, we will now create a consumer and a provider identity on their +respective wallets (i.e. identity hubs). After the creation, we receive an api token and a sts secret from the identity +hub. The sts secret is essential for operating the edc. So we need to store that in the hashicorp vault under a given +secret alias, so that the edc can use it later. Also, we can take a look at the DID document, that was generated on the +identity hubs. And we need to tell our identity hub, that we want to request a membership token from the trusted issuer. + +When this is done, we can have a look at the credentials, that the issuer hopefully delivered to consumer and provider +respectively. And we can also do some kind of a simulated DCP flow with the just created credentials. Please see the +documentation in the Bruno collection if you are interested in learning some more details (though that is directed at +the more advanced members of the audience here, beginners can definitely skip that part). + +### Do a transaction between provider and consumer + +Finally, we are ready now to do a more or less 'normal' DSP/DCP protocol backed transaction between the consumer and the +provider. I.e. firstly we need the provider to prepare a data asset, which the consumer can negotiate with him for. Then +the consumer +can discover this asset via a catalog request towards the provider edc, initiate a negotiation and a transfer. If you +are interested +in a more detailed explanation of these interactions, please see +the [EDC Samples](https://github.com/eclipse-edc/Samples/tree/main/transfer). + +When you're done testing and want to end your session (using 'CTRL-C' on the terminal, where you started docker +compose), +you may want to run + +``` +docker compose down -v +``` + +This will delete the data from your previous session and ensure, that the next time, you are starting this, you will +have no data remnants in your containers, which may cause confusion or conflicts, when you start the docker-compose.yaml +and the requests of the Bruno collection later again. diff --git a/edc-controlplane/edc-controlplane-construct-x/local/additional_config/logging.properties b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/logging.properties new file mode 100644 index 0000000000..5c9a7fbcb3 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/logging.properties @@ -0,0 +1,18 @@ +handlers = java.util.logging.ConsoleHandler + +# Console Handler Config + +java.util.logging.ConsoleHandler.formatter = org.eclipse.tractusx.identityhub.monitor.ColorfulFormatter +java.util.logging.ConsoleHandler.level = FINE + +# Root level und Package-level + +.level = INFO +jakarta.json.level = OFF +jdk.event.level = OFF +okhttp3.internal.level = OFF +org.eclipse.edc.level = FINE +org.flywaydb.level = OFF +org.glassfish.level = OFF +org.jvnet.level = OFF +org.postgresql.level = OFF \ No newline at end of file diff --git a/edc-controlplane/edc-controlplane-construct-x/local/additional_config/mc-cred-def.json b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/mc-cred-def.json new file mode 100644 index 0000000000..9defee0bfa --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/mc-cred-def.json @@ -0,0 +1,10 @@ +{ + "MC-Cred-Def": { + "blackList": [], + "default": { + "credentialSubject": { + "isMember": true + } + } + } +} \ No newline at end of file diff --git a/edc-controlplane/edc-controlplane-construct-x/local/additional_config/pg_init/pg_init.sql b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/pg_init/pg_init.sql new file mode 100644 index 0000000000..398f848aac --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/pg_init/pg_init.sql @@ -0,0 +1,8 @@ + CREATE DATABASE iss_db; + CREATE DATABASE cons_ih_db; + CREATE DATABASE prov_ih_db; + CREATE DATABASE cons_cpl; + CREATE DATABASE cons_dpl; + CREATE DATABASE prov_cpl; + CREATE DATABASE prov_dpl; + diff --git a/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh new file mode 100644 index 0000000000..361682921c --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +VAULT="${VAULT_ADDR:-http://shared-vault:8200}" +TOKEN="${VAULT_TOKEN:?missing VAULT_TOKEN}" + +# function that creates and deploys a rsa keypair: + +create_and_store_keypair() { + local prefix=$1 + + # create rsa keypair + openssl genrsa -out /tmp/${prefix}_priv_pkcs1.pem 2048 + openssl pkcs8 -topk8 -nocrypt -in /tmp/${prefix}_priv_pkcs1.pem -out /tmp/${prefix}_priv.pem + openssl rsa -in /tmp/${prefix}_priv_pkcs1.pem -pubout -out /tmp/${prefix}_pub.pem + + # deploy secrets to vault + jq -n --rawfile content /tmp/${prefix}_priv.pem '{data:{content:$content}}' | \ + curl -fsS -H "X-Vault-Token: $TOKEN" -H "Content-Type: application/json" \ + -X POST --data-binary @- "$VAULT/v1/secret/data/${prefix}_priv" + + jq -n --rawfile content /tmp/${prefix}_pub.pem '{data:{content:$content}}' | \ + curl -fsS -H "X-Vault-Token: $TOKEN" -H "Content-Type: application/json" \ + -X POST --data-binary @- "$VAULT/v1/secret/data/${prefix}_pub" + + # cleanup temp files + rm -f /tmp/${prefix}_priv_pkcs1.pem /tmp/${prefix}_priv.pem /tmp/${prefix}_pub.pem +} + +# create keypair for consumer and provider dataplane: + +create_and_store_keypair "cons" +create_and_store_keypair "prov" \ No newline at end of file diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/bruno.json b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/bruno.json new file mode 100644 index 0000000000..6a1eba3dd3 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/bruno.json @@ -0,0 +1,9 @@ +{ + "version": "1", + "name": "con-x-local-test", + "type": "collection", + "ignore": [ + "node_modules", + ".git" + ] +} \ No newline at end of file diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/environments/local-con-x-env.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/environments/local-con-x-env.bru new file mode 100644 index 0000000000..09f0b73b0e --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/environments/local-con-x-env.bru @@ -0,0 +1,35 @@ +vars { + ISSUER_DID_API: http://localhost:10000 + ISSUER_ID_API: http://localhost:10100/api/identity + ISSUER_ISS_API: http://localhost:10200/api/issuer + CONSUMER_IDHUB_DID_API: http://localhost:20000 + CONSUMER_IDHUB_ID_API: http://localhost:20100/api/identity + CONSUMER_IDHUB_STS_API: http://localhost:20500/api/sts + CONSUMER_IDHUB_CREDS_API: http://localhost:20600/api/credentials + ISSUER_APIKEY: ZGlkOndlYjpsb2NhbC1pc3N1ZXItc2VydmljZTpmeC1pc3N1ZXI=.CmYgVcuzneJXqzcbj7vmld5feejy6OguIylflSrz6WTjG1HNQRvO62EafFrQjS/lVlZAwiwz2rwwZgXrbpyhcg== + CONSUMER_IH_APIKEY: ZGlkOndlYjpsb2NhbC11c2VyLWlkaHViOnVzZXI6Y29uc3VtZXI=.ObFly02OtymUNRE43uH9SblWVtsZH0NMddgm1dFYQXRekO3qXX+rHFV7NvM+DUW3lcA2PbILt5rwWYEqm7WNgw== + PROVIDER_IH_APIKEY: ZGlkOndlYjpsb2NhbC11c2VyLWlkaHViOnVzZXI6cHJvdmlkZXI=.Knip+hedL63qedBQfOvZhhrF2ooSCfP2YgjONvtmehofor2ejdw/en0MAXDBZEcXrCwYNppDMNFDsRlG5rB/Mw== + VAULTURL: http://localhost:8200 + CONSUMER_STS_SECRET: VD0q6jOEyslSeFV2 + PROVIDER_STS_SECRET: XjDk9ncaJSrSfkQW + PROVIDER_MANAGEMENT: http://localhost:39010/management + CONSUMER_MANAGEMENT: http://localhost:29010/management + PROVIDER_DATAPLANE_PUBLIC: http://localhost:9500/public + PROVIDER_IDHUB_DID_API: http://localhost:21000 + PROVIDER_IDHUB_ID_API: http://localhost:21100/api/identity + PROVIDER_IDHUB_STS_API: http://localhost:21500/api/sts + PROVIDER_IDHUB_CREDS_API: http://localhost:21600/api/credentials + ISS_ID: did:web:local-issuer-service:con-x-issuer + CONS_ID: did:web:consumer-idhub:user:consumer + PROV_ID: did:web:provider-idhub:user:provider + B64_ISS_ID: + B64_CONS_ID: + B64_PROV_ID: + cons_access_token: eyJraWQiOiJkaWQ6d2ViOmNvbnN1bWVyLWlkaHViOnVzZXI6Y29uc3VtZXIja2V5LTEiLCJhbGciOiJFZDI1NTE5In0.eyJhdWQiOiJkaWQ6d2ViOmNvbnN1bWVyLWlkaHViOnVzZXI6Y29uc3VtZXIiLCJzdWIiOiJkaWQ6d2ViOnByb3ZpZGVyLWlkaHViOnVzZXI6cHJvdmlkZXIiLCJuYmYiOjE3NzAyNzg5NTQsInNjb3BlIjoib3JnLmVjbGlwc2UudHJhY3R1c3gudmMudHlwZTpNZW1iZXJzaGlwQ3JlZGVudGlhbDpyZWFkIiwiaXNzIjoiZGlkOndlYjpjb25zdW1lci1pZGh1Yjp1c2VyOmNvbnN1bWVyIiwiZXhwIjoxNzcwMjc5MjU0LCJpYXQiOjE3NzAyNzg5NTQsImp0aSI6ImFjY2Vzc3Rva2VuLTcxYThmNTA5LTgwYTktNDMwZC1iMjU0LTMxNGFiYTBkNjY5OSJ9.ipRpdi_Ekh7y4IIqhqLgHU35Fn7NNkv6e6hILXy8pZObdy33y3MKppI61424eyHwqzmh7X2kwV2S5gDy3aOKCQ + prov_access_token: eyJraWQiOiJkaWQ6d2ViOnByb3ZpZGVyLWlkaHViOnVzZXI6cHJvdmlkZXIja2V5LTEiLCJhbGciOiJFZDI1NTE5In0.eyJzdWIiOiJkaWQ6d2ViOnByb3ZpZGVyLWlkaHViOnVzZXI6cHJvdmlkZXIiLCJhdWQiOiJkaWQ6d2ViOmNvbnN1bWVyLWlkaHViOnVzZXI6Y29uc3VtZXIiLCJuYmYiOjE3NzAyNzg5NTUsImlzcyI6ImRpZDp3ZWI6cHJvdmlkZXItaWRodWI6dXNlcjpwcm92aWRlciIsImV4cCI6MTc3MDI3OTI1NSwiaWF0IjoxNzcwMjc4OTU1LCJqdGkiOiJkNjA0MTVjOS1kMGM0LTRiNWQtYjI4My01ZmNmYjhlMDY2OGQiLCJ0b2tlbiI6ImV5SnJhV1FpT2lKa2FXUTZkMlZpT21OdmJuTjFiV1Z5TFdsa2FIVmlPblZ6WlhJNlkyOXVjM1Z0WlhJamEyVjVMVEVpTENKaGJHY2lPaUpGWkRJMU5URTVJbjAuZXlKaGRXUWlPaUprYVdRNmQyVmlPbU52Ym5OMWJXVnlMV2xrYUhWaU9uVnpaWEk2WTI5dWMzVnRaWElpTENKemRXSWlPaUprYVdRNmQyVmlPbkJ5YjNacFpHVnlMV2xrYUhWaU9uVnpaWEk2Y0hKdmRtbGtaWElpTENKdVltWWlPakUzTnpBeU56ZzVOVFFzSW5OamIzQmxJam9pYjNKbkxtVmpiR2x3YzJVdWRISmhZM1IxYzNndWRtTXVkSGx3WlRwTlpXMWlaWEp6YUdsd1EzSmxaR1Z1ZEdsaGJEcHlaV0ZrSWl3aWFYTnpJam9pWkdsa09uZGxZanBqYjI1emRXMWxjaTFwWkdoMVlqcDFjMlZ5T21OdmJuTjFiV1Z5SWl3aVpYaHdJam94Tnpjd01qYzVNalUwTENKcFlYUWlPakUzTnpBeU56ZzVOVFFzSW1wMGFTSTZJbUZqWTJWemMzUnZhMlZ1TFRjeFlUaG1OVEE1TFRnd1lUa3RORE13WkMxaU1qVTBMVE14TkdGaVlUQmtOalk1T1NKOS5pcFJwZGlfRWtoN3k0SUlxaHFMZ0hVMzVGbjdOTmt2NmU2aElMWHk4cFpPYmR5MzN5M01LcHBJNjE0MjRleUh3cXptaDdYMmt3VjJTNWdEeTNhT0tDUSJ9.42YDTnuzZ0RprqLjFw6hUoAXrgpPxyzKNFrqLdbWz6HXAiujkq32QAFU-M9gtQ0hMNcjshRZUX6DryBWxhGNDw + offerId: MQ==:YXNzZXRJZA==:MDFhN2ZjYWYtODgzOS00N2JmLTllZDAtM2Y0YjliMTFiOWM5 + negotiation-id: 3745ad50-6b99-4142-bf1a-509b3d0e313d + contractId: 3345f7f1-f735-4c92-8aa2-6e137203b2f9 + transferId: 3ebe55c6-900a-4c03-b213-20c5c3f0274d + pullSecret: eyJraWQiOiJwcm92X3B1YiIsImFsZyI6IlJTMjU2In0.eyJpc3MiOiJhbm9ueW1vdXMiLCJhdWQiOiJkaWQ6d2ViOmNvbnN1bWVyLWlkaHViOnVzZXI6Y29uc3VtZXIiLCJzdWIiOiJhbm9ueW1vdXMiLCJpYXQiOjE3NzAyNzg5ODgsImp0aSI6IjUwYWQxMjk3LWZhN2QtNDI0ZC1hNjBhLTg5M2MwMGE4OTZhYyJ9.GkSz0qXhFmqPaLQpfPLkAvODX-iekoAQvLh3Kglhm7DApNF3PsGnv-Qzm7m8eNAqTUTWB9XXkRng_XqWmuAd-FWvzwG8d7ZaAahuykkOgX1W7vHWBMdJa-zvNm0cnzm-TQLWYCU-tDSKk_g_UrDUaFf9Jdq-avCoer3wcZrEmrf0K4o_WWs-l5hZEfDIOYHRsgoCY3P8pMcZYRjV57zdLUDl9SvLuCRR0ex0fKxJ2pb7mlaCL5ooD6fRaqWyrLvrIKZaDYfwKrX7IRJT9ePKyls9VKA9JBakh676L0jBr5-2TYG3uE9Xhyv4CZlqyck-_NyiL4Jao8-lL5FVCbPDVQ +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowConsumerCredentials.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowConsumerCredentials.bru new file mode 100644 index 0000000000..679b88d710 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowConsumerCredentials.bru @@ -0,0 +1,20 @@ +meta { + name: ShowConsumerCredentials + type: http + seq: 1 +} + +get { + url: {{CONSUMER_IDHUB_ID_API}}/v1alpha/credentials + body: none + auth: none +} + +headers { + x-api-key: YWRtaW4.adminKey +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru new file mode 100644 index 0000000000..7f724a746d --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru @@ -0,0 +1,20 @@ +meta { + name: ShowProviderCredentials copy + type: http + seq: 2 +} + +get { + url: {{PROVIDER_IDHUB_ID_API}}/v1alpha/credentials + body: none + auth: none +} + +headers { + x-api-key: YWRtaW4.adminKey +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/folder.bru new file mode 100644 index 0000000000..d3d84605ee --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/folder.bru @@ -0,0 +1,12 @@ +meta { + name: Inspect Outcome + seq: 4 +} + +auth { + mode: inherit +} + +docs { + Here we are taking a look at the credentials, that the trusted issuer created for the participants. +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru new file mode 100644 index 0000000000..1096017b6e --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru @@ -0,0 +1,59 @@ +meta { + name: CreateConsumerParticipant + type: http + seq: 1 +} + +post { + url: {{CONSUMER_IDHUB_ID_API}}/v1alpha/participants + body: json + auth: inherit +} + +headers { + x-api-key: YWRtaW4.adminKey +} + +body:json { + { + "roles":[], + "serviceEndpoints":[{ + "id": "ConsumerCredentialService-ID", + "type": "CredentialService", + "serviceEndpoint": "http://consumer-idhub:13131/api/credentials/v1/participants/{{B64_CONS_ID}}" + }], + "active": true, + "participantId": "did:web:consumer-idhub:user:consumer", + "did": "did:web:consumer-idhub:user:consumer", + "key":{ + "keyId": "did:web:consumer-idhub:user:consumer#key-1", + "privateKeyAlias": "did:web:consumer-idhub:user:consumer-alias", + "keyGeneratorParams":{ + "algorithm": "EdDSA", + "curve": "Ed25519" + } + } + } +} + +script:pre-request { + const btoa = require("btoa"); + const cons_id = bru.getEnvVar("CONS_ID"); + bru.setEnvVar("B64_CONS_ID", btoa(cons_id)); +} + +script:post-response { + const apiKey = res.getBody().apiKey.trim(); + if (apiKey) { + bru.setEnvVar("CONSUMER_IH_APIKEY", apiKey); + } + const stsSecret = res.getBody().clientSecret.trim(); + if (stsSecret) { + bru.setEnvVar("CONSUMER_STS_SECRET", stsSecret) + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/Get Consumer DID Doc.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/Get Consumer DID Doc.bru new file mode 100644 index 0000000000..fdb531e548 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/Get Consumer DID Doc.bru @@ -0,0 +1,20 @@ +meta { + name: Get Consumer DID Doc + type: http + seq: 2 +} + +get { + url: {{CONSUMER_IDHUB_DID_API}}/user/consumer + body: none + auth: inherit +} + +headers { + Host: consumer-idhub +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/RequestConsumerCredential.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/RequestConsumerCredential.bru new file mode 100644 index 0000000000..caa59e2563 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/RequestConsumerCredential.bru @@ -0,0 +1,34 @@ +meta { + name: RequestConsumerCredential + type: http + seq: 3 +} + +post { + url: {{CONSUMER_IDHUB_ID_API}}/v1alpha/participants/{{B64_CONS_ID}}/credentials/request + body: json + auth: none +} + +body:json { + { + "issuerDid": "{{ISS_ID}}", + "credentials": [{ + "format": "VC1_0_JWT", + "type": "MembershipCredential", + "id": "MC-Cred-Def" + }] + } +} + +script:pre-request { + const btoa = require("btoa"); + const cons_id = bru.getEnvVar("CONS_ID"); + bru.setEnvVar("B64_CONS_ID", btoa(cons_id)); + req.setHeader("x-api-key", bru.getEnvVar("CONSUMER_IH_APIKEY")); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret test.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret test.bru new file mode 100644 index 0000000000..6e3a7833dc --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret test.bru @@ -0,0 +1,20 @@ +meta { + name: VaultSecret test + type: http + seq: 5 +} + +get { + url: {{VAULTURL}}/v1/secret/data/consumersecret + body: none + auth: inherit +} + +headers { + X-Vault-Token: vaultsecret0123456789 +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret.bru new file mode 100644 index 0000000000..b12519e226 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret.bru @@ -0,0 +1,28 @@ +meta { + name: VaultSecret + type: http + seq: 4 +} + +post { + url: {{VAULTURL}}/v1/secret/data/consumersecret + body: json + auth: inherit +} + +headers { + X-Vault-Token: vaultsecret0123456789 +} + +body:json { + { + "data": { + "content": "{{CONSUMER_STS_SECRET}}" + } + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/folder.bru new file mode 100644 index 0000000000..e92dbb38da --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/folder.bru @@ -0,0 +1,13 @@ +meta { + name: Prepare Consumer ID + seq: 2 +} + +auth { + mode: inherit +} + +docs { + The requests in this folder are necessary for creating the identity of the consumer participant. + We are doing an initial registration at the identity hub. Then we take a look at the created DID document. Then we trigger a credential request toward the trusted issuer. And also, we are storing the STS secret that the identity hub gave us, at the vault. +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru new file mode 100644 index 0000000000..dbd68a091e --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru @@ -0,0 +1,57 @@ +meta { + name: CreateIssuerParticipant + type: http + seq: 1 +} + +post { + url: {{ISSUER_ID_API}}/v1alpha/participants + body: json + auth: inherit +} + +headers { + x-api-key: YWRtaW4.adminKey +} + +body:json { + { + "roles": [], + "serviceEndpoints": [ + { + "id": "Issuer-IssuerService", + "type": "IssuerService", + "serviceEndpoint": "http://local-issuer-service:13132/api/issuance/v1alpha/participants/{{B64_ISS_ID}}" + } + ], + "active": true, + "participantId": "{{ISS_ID}}", + "did": "{{ISS_ID}}", + "key": { + "keyId": "{{ISS_ID}}#key-1", + "privateKeyAlias": "{{ISS_ID}}-alias", + "keyGeneratorParams": { + "algorithm": "EdDSA", + "curve": "Ed25519" + } + } + } +} + +script:pre-request { + const btoa = require("btoa"); + const iss_id = bru.getEnvVar("ISS_ID"); + bru.setEnvVar("B64_ISS_ID", btoa(iss_id)); +} + +script:post-response { + const apiKey = res.getBody().apiKey.trim(); + if (apiKey) { + bru.setEnvVar("ISSUER_APIKEY", apiKey); + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/GetConfig.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/GetConfig.bru new file mode 100644 index 0000000000..03b59dab22 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/GetConfig.bru @@ -0,0 +1,26 @@ +meta { + name: GetConfig + type: http + seq: 1 +} + +get { + url: {{ISSUER_ISS_API}}/v1alpha/credentialsetup/{{B64_ISS_ID}} + body: none + auth: inherit +} + +headers { + x-api-key: YWRtaW4.adminKey +} + +script:pre-request { + const btoa = require("btoa"); + const iss_id = bru.getEnvVar("ISS_ID"); + bru.setEnvVar("B64_ISS_ID", btoa(iss_id)); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/SetConfig.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/SetConfig.bru new file mode 100644 index 0000000000..b20210edde --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/SetConfig.bru @@ -0,0 +1,39 @@ +meta { + name: SetConfig + type: http + seq: 2 +} + +post { + url: {{ISSUER_ISS_API}}/v1alpha/credentialsetup/{{B64_ISS_ID}} + body: json + auth: inherit +} + +headers { + x-api-key: YWRtaW4.adminKey +} + +body:json { + { + "MC-Cred-Def": { + "blackList": [], + "default": { + "credentialSubject": { + "isMember": true + } + } + } + } +} + +script:pre-request { + const btoa = require("btoa"); + const iss_id = bru.getEnvVar("ISS_ID"); + bru.setEnvVar("B64_ISS_ID", btoa(iss_id)); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/folder.bru new file mode 100644 index 0000000000..b4adf7b488 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/folder.bru @@ -0,0 +1,16 @@ +meta { + name: Optionalconfig +} + +auth { + mode: inherit +} + +docs { + The requests in this folder are only for advanced users who are interested in creating different types of credentials. Other users can safely ignore this. + + Additional info can be found here: + + https://github.com/factory-x-contributions/fx-id-hub-charts/tree/feat/quickfix_main/extensions/quickfix + +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addConsumerHolder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addConsumerHolder.bru new file mode 100644 index 0000000000..2fed748a75 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addConsumerHolder.bru @@ -0,0 +1,35 @@ +meta { + name: addConsumerHolder + type: http + seq: 2 +} + +post { + url: {{ISSUER_ISS_API}}/v1alpha/participants/{{B64_ISS_ID}}/holders + body: json + auth: inherit +} + +body:json { + { + "holderId" : "{{CONS_ID}}", + "did" : "{{CONS_ID}}", + "name" : "{{CONS_ID}}" + } +} + +script:pre-request { + const btoa = require("btoa"); + const iss_id = bru.getEnvVar("ISS_ID"); + bru.setEnvVar("B64_ISS_ID", btoa(iss_id)); + + const cons_id = bru.getEnvVar("CONS_ID"); + bru.setEnvVar("B64_CONS_ID", btoa(cons_id)); + + req.setHeader("x-api-key", bru.getEnvVar("ISSUER_APIKEY")); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addProviderHolder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addProviderHolder.bru new file mode 100644 index 0000000000..d31390290d --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addProviderHolder.bru @@ -0,0 +1,34 @@ +meta { + name: addProviderHolder + type: http + seq: 3 +} + +post { + url: {{ISSUER_ISS_API}}/v1alpha/participants/{{B64_ISS_ID}}/holders + body: json + auth: inherit +} + +body:json { + { + "holderId" : "{{PROV_ID}}", + "did" : "{{PROV_ID}}", + "name" : "{{PROV_ID}}" + } +} + +script:pre-request { + const btoa = require("btoa"); + const iss_id = bru.getEnvVar("ISS_ID"); + bru.setEnvVar("B64_ISS_ID", btoa(iss_id)); + const prov_id = bru.getEnvVar("PROV_ID"); + bru.setEnvVar("B64_PROV_ID", btoa(prov_id)); + + req.setHeader("x-api-key", bru.getEnvVar("ISSUER_APIKEY")); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createAttestation.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createAttestation.bru new file mode 100644 index 0000000000..05874d6ee5 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createAttestation.bru @@ -0,0 +1,39 @@ +meta { + name: createAttestation + type: http + seq: 4 +} + +post { + url: {{ISSUER_ISS_API}}/v1alpha/participants/{{B64_ISS_ID}}/attestations + body: json + auth: none +} + +headers { + ~x-api-key: {{ISSUER_APIKEY}} +} + +body:json { + { + "attestationType": "presentation", + "configuration": { + "credentialType": "MembershipCredential", + "outputClaim": "isMember", + "required": false + }, + "id": "MC-Attestation" + } +} + +script:pre-request { + const btoa = require("btoa"); + const iss_id = bru.getEnvVar("ISS_ID"); + bru.setEnvVar("B64_ISS_ID", btoa(iss_id)); + req.setHeader("x-api-key", bru.getEnvVar("ISSUER_APIKEY")); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createCredentialDef.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createCredentialDef.bru new file mode 100644 index 0000000000..e188d5475e --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createCredentialDef.bru @@ -0,0 +1,38 @@ +meta { + name: createCredentialDef + type: http + seq: 5 +} + +post { + url: {{ISSUER_ISS_API}}/v1alpha/participants/{{B64_ISS_ID}}/credentialdefinitions + body: json + auth: inherit +} + +body:json { + { + "attestations": ["MC-Attestation"], + "credentialType": "MembershipCredential", + "format": "VC1_0_JWT", + "id": "MC-Cred-Def", + "jsonSchema": "{}", + "jsonSchemaUrl": "", + "mappings": [ + ], + "validity": 15552000 + } +} + +script:pre-request { + const btoa = require("btoa"); + const iss_id = bru.getEnvVar("ISS_ID"); + bru.setEnvVar("B64_ISS_ID", btoa(iss_id)); + + req.setHeader("x-api-key", bru.getEnvVar("ISSUER_APIKEY")); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/folder.bru new file mode 100644 index 0000000000..ddc334fb1d --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/folder.bru @@ -0,0 +1,22 @@ +meta { + name: Prepare Issuer + seq: 1 +} + +auth { + mode: inherit +} + +docs { + This folder contains the initial steps for setting up our own dataspace. First, we need to define the participant that is universally trusted by all regular dataspace members, the so-called "trusted issuer". + + First we register him under his own did:web id at the issuer service host. + + Then we will announce the existence of other regular members. This is done in the "addXXXHolder" requests. + + Then we have to tell to issuer participant that there shall be membership credentials, which can be handed out to the entities, which we had announced as holders. + + Since the primary motivation for this collection is not to be a guide for handling the administration of data space issuers, the details of the "createAttestation" and "createCredentialDef" requests don't matter much at this point. It suffices to say that they are technically required to enable the credential issuance process. + + +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru new file mode 100644 index 0000000000..1b9c01f037 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru @@ -0,0 +1,59 @@ +meta { + name: CreateProviderParticipant + type: http + seq: 1 +} + +post { + url: {{PROVIDER_IDHUB_ID_API}}/v1alpha/participants + body: json + auth: inherit +} + +headers { + x-api-key: YWRtaW4.adminKey +} + +body:json { + { + "roles":[], + "serviceEndpoints":[{ + "id": "ConsumerCredentialService-ID", + "type": "CredentialService", + "serviceEndpoint": "http://provider-idhub:13131/api/credentials/v1/participants/{{B64_PROV_ID}}" + }], + "active": true, + "participantId": "{{PROV_ID}}", + "did": "{{PROV_ID}}", + "key":{ + "keyId": "{{PROV_ID}}#key-1", + "privateKeyAlias": "{{PROV_ID}}-alias", + "keyGeneratorParams":{ + "algorithm": "EdDSA", + "curve": "Ed25519" + } + } + } +} + +script:pre-request { + const btoa = require("btoa"); + const prov_id = bru.getEnvVar("PROV_ID"); + bru.setEnvVar("B64_PROV_ID", btoa(prov_id)); +} + +script:post-response { + const apiKey = res.getBody().apiKey.trim(); + if (apiKey) { + bru.setEnvVar("PROVIDER_IH_APIKEY", apiKey); + } + const stsSecret = res.getBody().clientSecret.trim(); + if (stsSecret) { + bru.setEnvVar("PROVIDER_STS_SECRET", stsSecret) + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/Get Provider DID Doc.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/Get Provider DID Doc.bru new file mode 100644 index 0000000000..67dc6c4baa --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/Get Provider DID Doc.bru @@ -0,0 +1,20 @@ +meta { + name: Get Provider DID Doc + type: http + seq: 2 +} + +get { + url: {{PROVIDER_IDHUB_DID_API}}/user/provider + body: none + auth: inherit +} + +headers { + Host: provider-idhub +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/RequestProviderCredential.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/RequestProviderCredential.bru new file mode 100644 index 0000000000..364ca2a4a6 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/RequestProviderCredential.bru @@ -0,0 +1,35 @@ +meta { + name: RequestProviderCredential + type: http + seq: 3 +} + +post { + url: {{PROVIDER_IDHUB_ID_API}}/v1alpha/participants/{{B64_PROV_ID}}/credentials/request + body: json + auth: none +} + +body:json { + { + "issuerDid": "{{ISS_ID}}", + "credentials": [{ + "format": "VC1_0_JWT", + "type": "MembershipCredential", + "id": "MC-Cred-Def" + }] + } +} + +script:pre-request { + const btoa = require("btoa"); + const prov_id = bru.getEnvVar("PROV_ID"); + bru.setEnvVar("B64_PROV_ID", btoa(prov_id)); + + req.setHeader("x-api-key", bru.getEnvVar("PROVIDER_IH_APIKEY")); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret test.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret test.bru new file mode 100644 index 0000000000..03f3b64282 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret test.bru @@ -0,0 +1,20 @@ +meta { + name: VaultSecret test + type: http + seq: 5 +} + +get { + url: {{VAULTURL}}/v1/secret/data/providersecret + body: none + auth: inherit +} + +headers { + X-Vault-Token: vaultsecret0123456789 +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret.bru new file mode 100644 index 0000000000..b05fd6d48a --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret.bru @@ -0,0 +1,28 @@ +meta { + name: VaultSecret + type: http + seq: 4 +} + +post { + url: {{VAULTURL}}/v1/secret/data/providersecret + body: json + auth: inherit +} + +headers { + X-Vault-Token: vaultsecret0123456789 +} + +body:json { + { + "data": { + "content": "{{PROVIDER_STS_SECRET}}" + } + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/folder.bru new file mode 100644 index 0000000000..59be3175bb --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/folder.bru @@ -0,0 +1,13 @@ +meta { + name: Prepare Provider ID + seq: 3 +} + +auth { + mode: inherit +} + +docs { + The requests in this folder are necessary for creating the identity of the provider participant. + We are doing an initial registration at the identity hub. Then we take a look at the created DID document. Then we trigger a credential request toward the trusted issuer. And also, we are storing the STS secret that the identity hub gave us, at the vault. +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Consumer Token.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Consumer Token.bru new file mode 100644 index 0000000000..1cf237a75b --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Consumer Token.bru @@ -0,0 +1,35 @@ +meta { + name: Consumer Token + type: http + seq: 1 +} + +post { + url: {{CONSUMER_IDHUB_STS_API}}/token + body: formUrlEncoded + auth: inherit +} + +body:form-urlencoded { + grant_type: client_credentials + client_secret: {{CONSUMER_STS_SECRET}} + client_id: {{CONS_ID}} + audience: {{PROV_ID}} + bearer_access_scope: org.eclipse.tractusx.vc.type:MembershipCredential:read +} + +script:post-response { + const atob = require("atob"); + const accessToken = res.getBody().access_token.trim(); + const parts = accessToken.split("."); + const payload = atob(parts[1]); + const payloadObject = JSON.parse(payload); + const internalToken = payloadObject.token.trim(); + + bru.setEnvVar("cons_access_token", internalToken); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Get Credential.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Get Credential.bru new file mode 100644 index 0000000000..a8d2564895 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Get Credential.bru @@ -0,0 +1,43 @@ +meta { + name: Get Credential + type: http + seq: 3 +} + +post { + url: {{CONSUMER_IDHUB_CREDS_API}}/v1/participants/{{B64_CONS_ID}}/presentations/query + body: json + auth: bearer +} + +auth:bearer { + token: {{prov_access_token}} +} + +body:json { + { + "@context": [ + "https://w3id.org/tractusx-trust/v0.8", + "https://identity.foundation/presentation-exchange/submission/v1" + ], + "type": "PresentationQueryMessage", + "presentationDefinition": null, + "scope": [ + "org.eclipse.tractusx.vc.type:MembershipCredential:read" + ] + } +} + +tests { + test("contains presentation", function(){ + const presentation = res.getBody().presentation; + const isString = typeof(presentation) == "string"; + const success = isString && presentation.split(".").length == 3; + expect(success == true); + }) +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Provider Token.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Provider Token.bru new file mode 100644 index 0000000000..3ec92f6e2c --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Provider Token.bru @@ -0,0 +1,30 @@ +meta { + name: Provider Token + type: http + seq: 2 +} + +post { + url: {{PROVIDER_IDHUB_STS_API}}/token + body: formUrlEncoded + auth: inherit +} + +body:form-urlencoded { + grant_type: client_credentials + client_secret: {{PROVIDER_STS_SECRET}} + client_id: {{PROV_ID}} + audience: {{CONS_ID}} + token: {{cons_access_token}} +} + +script:post-response { + const accessToken = res.getBody().access_token.trim(); + + bru.setEnvVar("prov_access_token", accessToken); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/folder.bru new file mode 100644 index 0000000000..5e25d1602e --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/folder.bru @@ -0,0 +1,34 @@ +meta { + name: Simulated DCP Flow + seq: 5 +} + +auth { + mode: inherit +} + +docs { + This section is meant to show in principle, what happens during a DCP protocol validated interaction between two controlplanes. It also serves as a final test. If these requests do succeed, then we can be sure that all previous steps went well. + + Let's assume that the consumer intends to obtain the DSP catolog from the provider. + Then the consumer will request a self signed SI token from his own Identity-Hub's secure token service (STS), see the "Consumer Token" request. + + In that request body, the consumer informs the STS about the intended audience and the credential type he wants to show to the other side. + + In the request body, we should receive an access token in JWT format, the "consumer-access-token". + + Please feel free to decode the "consumer-access-token" with a tool of your choice and observe that token's payload. You will find, that this payload itself contains another JWT inside the "token" claim. + + The entire "consumer-access-token" will now be sent by the consumer-side-EDC to the provider-side-EDC via the "Authentication" header of a request to the according DSP-catolog request api endpoint. Since the "consumer-access-token" is signed with the consumer private key, the provider can now download the consumer's DID document, read the consumer's public key and use it to check that the JWT's signature is valid. + + We are not doing the signature check here in this small simulation, so let's just assume that it turned out positive. + + Now the provider wants to see, which credentials the consumer is going to show him. For that, he needs to retrieve it from the consumer's credential service. The URL can be found in the consumer's DID document. + + But first, he needs to talk to his own secure token service (STS). So he is unwrapping the "token" claim and sending it to his own STS, see the "Post Request Script" of the "Consumer Token" request and the request body in the "Provider Token" request. + + The response of the provider's STS will contain another access token, we are calling it "provider access token". This "provider access token" can now be attached as an "authorization" header to the provider's request to the consumer's credential service. + + The response of the consumer credential service contains the verifiable presentation, which itself now contains the verfiable credential, which the trusted issuer initially handed out to the consumer. + +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/folder.bru new file mode 100644 index 0000000000..9b98e35a2d --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/folder.bru @@ -0,0 +1,8 @@ +meta { + name: identities + seq: 1 +} + +auth { + mode: inherit +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/CheckNegotiationResult.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/CheckNegotiationResult.bru new file mode 100644 index 0000000000..d475666650 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/CheckNegotiationResult.bru @@ -0,0 +1,25 @@ +meta { + name: CheckNegotiationResult + type: http + seq: 3 +} + +get { + url: {{CONSUMER_MANAGEMENT}}/v3/contractnegotiations/{{negotiation-id}} + body: none + auth: inherit +} + +headers { + Accept: application/json +} + +script:post-response { + const contractId = res.getBody()['contractAgreementId']; + bru.setEnvVar("contractId", contractId); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/Get EDR.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/Get EDR.bru new file mode 100644 index 0000000000..cc00b204b0 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/Get EDR.bru @@ -0,0 +1,25 @@ +meta { + name: Get EDR + type: http + seq: 5 +} + +get { + url: {{CONSUMER_MANAGEMENT}}/v3/edrs/{{transferId}}/dataaddress + body: none + auth: inherit +} + +headers { + Accept: application/json +} + +script:post-response { + const authToken = res.getBody().authorization; + bru.setEnvVar("pullSecret", authToken); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitPullTransfer.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitPullTransfer.bru new file mode 100644 index 0000000000..fa82fb9d44 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitPullTransfer.bru @@ -0,0 +1,35 @@ +meta { + name: InitPullTransfer + type: http + seq: 4 +} + +post { + url: {{CONSUMER_MANAGEMENT}}/v3/transferprocesses + body: json + auth: inherit +} + +body:json { + { + "@context": { + "edc": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "TransferRequestDto", + "protocol": "dataspace-protocol-http", + "contractId": "{{contractId}}", + "counterPartyAddress": "http://provider-controlplane:9020/dsp", + "connectorId": "{{PROV_ID}}", + "transferType": "HttpData-PULL" + } +} + +script:post-response { + const transferId = res.getBody()['@id']; + bru.setEnvVar("transferId", transferId); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitiateNegotiation.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitiateNegotiation.bru new file mode 100644 index 0000000000..b4cb6316a2 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitiateNegotiation.bru @@ -0,0 +1,47 @@ +meta { + name: InitiateNegotiation + type: http + seq: 2 +} + +post { + url: {{CONSUMER_MANAGEMENT}}/v3/contractnegotiations + body: json + auth: inherit +} + +headers { + Accept: application/json +} + +body:json { + { + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/", + "odrl": "http://www.w3.org/ns/odrl/2/" + }, + "@type": "ContractRequest", + "counterPartyAddress": "http://provider-controlplane:9020/dsp", + "connectorId": "{{PROV_ID}}", + "protocol": "dataspace-protocol-http", + "policy": { + "@context": "http://www.w3.org/ns/odrl.jsonld", + "@id": "{{offerId}}", + "@type": "Offer", + "assigner": "{{PROV_ID}}", + "assignee": "{{CONS_ID}}", + "target": "assetId" + } + } +} + +script:post-response { + var x = res.getBody()['@id']; + console.log("id " + x); + bru.setEnvVar("negotiation-id", res.getBody()['@id']); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/PullAssetData.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/PullAssetData.bru new file mode 100644 index 0000000000..df33451a12 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/PullAssetData.bru @@ -0,0 +1,20 @@ +meta { + name: PullAssetData + type: http + seq: 6 +} + +get { + url: {{PROVIDER_DATAPLANE_PUBLIC}} + body: none + auth: inherit +} + +script:pre-request { + req.setHeader("Authorization", bru.getEnvVar("pullSecret")); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/RequestProviderCatalog.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/RequestProviderCatalog.bru new file mode 100644 index 0000000000..aab44ce5f5 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/RequestProviderCatalog.bru @@ -0,0 +1,34 @@ +meta { + name: RequestProviderCatalog + type: http + seq: 1 +} + +post { + url: {{CONSUMER_MANAGEMENT}}/v3/catalog/request + body: json + auth: inherit +} + +body:json { + { + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + }, + "counterPartyAddress": "http://provider-controlplane:9020/dsp", + "counterPartyId": "{{PROV_ID}}", + "protocol": "dataspace-protocol-http" + + } +} + +script:post-response { + const offerId = res.getBody()['dcat:dataset']['odrl:hasPolicy']['@id']; + + bru.setEnvVar("offerId", offerId); +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/folder.bru new file mode 100644 index 0000000000..c54282bb58 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/folder.bru @@ -0,0 +1,20 @@ +meta { + name: consumer + seq: 2 +} + +auth { + mode: inherit +} + +docs { + Here, we are taking the role of the consumer participant. + + First, we inspect the providers catalog. There we should find the asset, that was prepared in the previous stage. + + Then we trigger a negotiation process, and check its (hopefully positive) outcome. + + After that, we initiate a transfer process based on the previously negotiated contract. In the following step, we retrieve the authorization token, which the provider will give us. + + And finally, we are using that token to get access to the data, that was placed inside the provider's asset. +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/folder.bru new file mode 100644 index 0000000000..d3bae9f5a8 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/folder.bru @@ -0,0 +1,11 @@ +meta { + name: transactions +} + +auth { + mode: inherit +} + +docs { + This section showcases the typical negotiation and transfer flows between EDC connectors. +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateAsset.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateAsset.bru new file mode 100644 index 0000000000..96a4953cee --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateAsset.bru @@ -0,0 +1,35 @@ +meta { + name: CreateAsset + type: http + seq: 1 +} + +post { + url: {{PROVIDER_MANAGEMENT}}/v3/assets + body: json + auth: inherit +} + +body:json { + { + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@id": "assetId", + "properties": { + "name": "product description", + "contenttype": "application/json" + }, + "dataAddress": { + "type": "HttpData", + "name": "Test asset", + "baseUrl": "https://jsonplaceholder.typicode.com/users", + "proxyPath": "true" + } + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateContractDefinition.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateContractDefinition.bru new file mode 100644 index 0000000000..e7b3b069fa --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateContractDefinition.bru @@ -0,0 +1,28 @@ +meta { + name: CreateContractDefinition + type: http + seq: 3 +} + +post { + url: {{PROVIDER_MANAGEMENT}}/v3/contractdefinitions + body: json + auth: inherit +} + +body:json { + { + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@id": "1", + "accessPolicyId": "aPolicy", + "contractPolicyId": "aPolicy", + "assetsSelector": [] + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreatePolicy.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreatePolicy.bru new file mode 100644 index 0000000000..ede9c2a378 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreatePolicy.bru @@ -0,0 +1,33 @@ +meta { + name: CreatePolicy + type: http + seq: 2 +} + +post { + url: {{PROVIDER_MANAGEMENT}}/v3/policydefinitions + body: json + auth: inherit +} + +body:json { + { + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/", + "odrl": "http://www.w3.org/ns/odrl/2/" + }, + "@id": "aPolicy", + "policy": { + "@context": "http://www.w3.org/ns/odrl.jsonld", + "@type": "Set", + "permission": [], + "prohibition": [], + "obligation": [] + } + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/folder.bru new file mode 100644 index 0000000000..8c38fee8f1 --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/folder.bru @@ -0,0 +1,12 @@ +meta { + name: provider + seq: 1 +} + +auth { + mode: inherit +} + +docs { + In this section we are creating a simple data asset on the provider side, i.e. we register an asset, create a policy- and a contract definition. +} diff --git a/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml b/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml new file mode 100644 index 0000000000..789fc40eab --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml @@ -0,0 +1,364 @@ +services: + local-issuer-service: + container_name: local-issuer-service + image: issuerservice-dev:latest + pull_policy: missing + depends_on: + shared-postgres: + condition: service_healthy + shared-vault: + condition: service_healthy + ports: + - "1044:1044" # debugger + - "10000:80" # did API -> / + - "10100:15151" # identity API -> /api/identity + - "10200:15152" # issueradmin API -> /api/issuer +# - "9292:9292" # sts API -> /api/sts +# - "8181:8181" # default API -> /api +# - "9999:9999" # statuslist API -> /statuslist +# - "13132:13132" # issuance API -> /api/issuance + + environment: + - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:1044 + - edc.statuslist.callback.address=http://local-issuer-service:9999/statuslist + - edc.hostname=local-issuer-service + - edc.ih.issuer.dev.defaultconfig=/app/setup.json + - edc.issuer.issuance.send.retry.limit=0 + - edc.iam.did.web.use.https=false + - edc.ih.api.superuser.id=admin + - edc.ih.api.superuser.key=YWRtaW4.adminKey + - edc.issuer.statuslist.signing.key.alias=foo + - web.http.did.port=80 + - edc.sql.schema.autocreate=true + - edc.datasource.default.url=jdbc:postgresql://shared-postgres:5432/iss_db + - edc.datasource.default.user=admin + - edc.datasource.default.password=password + - edc.vault.hashicorp.url=http://shared-vault:8200 + - edc.vault.hashicorp.health.check.enabled=true + - edc.vault.hashicorp.token=vaultsecret0123456789 + volumes: + - ./additional_config/mc-cred-def.json:/app/setup.json + - ./additional_config/logging.properties:/app/logging.properties + networks: + - fx-test-network + + shared-postgres: + container_name: shared-postgres + image: postgres:16.4-alpine + environment: + - POSTGRES_USER=admin + - POSTGRES_PASSWORD=password + volumes: + - ./additional_config/pg_init:/docker-entrypoint-initdb.d + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -h 127.0.0.1 || exit 1"] + interval: 3s + timeout: 3s + retries: 20 + networks: + - fx-test-network + + shared-vault: + container_name: shared-vault + image: vault:1.13.3 + command: server -dev -dev-root-token-id=vaultsecret0123456789 -dev-listen-address=0.0.0.0:8200 + environment: + VAULT_ADDR: http://0.0.0.0:8200 + SKIP_SETCAP: true + SKIP_CHOWN: true + healthcheck: + test: ["CMD", "sh", "-c", "VAULT_ADDR=http://127.0.0.1:8200 vault status >/dev/null 2>&1"] + interval: 4s + timeout: 3s + retries: 20 + ports: + - "8200:8200" + networks: + - fx-test-network + + vault-init: + container_name: vault-init + image: alpine:3.19 + depends_on: + shared-vault: + condition: service_healthy + environment: + VAULT_ADDR: http://shared-vault:8200 + VAULT_TOKEN: vaultsecret0123456789 + volumes: + - ./additional_config/vault-init.sh:/scripts/init.sh:ro + entrypoint: [ "sh", "-c", "apk add --no-check-certificate --no-cache curl jq openssl && sh /scripts/init.sh" ] + restart: "no" + networks: + - fx-test-network + + consumer-idhub: + container_name: consumer-idhub + image: identityhub-dev:latest + pull_policy: missing + depends_on: + shared-postgres: + condition: service_healthy + shared-vault: + condition: service_healthy + ports: + - "1045:1045" # debugger + - "20000:80" # did API -> / + - "20100:15151" # identity API -> /api/identity + - "20500:9292" # sts API -> /api/sts + - "20600:13131" # credentials API -> /api/credentials +# - "8181:8181" # default API -> /api +# - "9999:9999" # statuslist API -> /statuslist + environment: + - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:1045 + - edc.hostname=consumer-idhub + - edc.iam.did.web.use.https=false + - edc.ih.api.superuser.id=admin + - edc.ih.api.superuser.key=YWRtaW4.adminKey + - web.http.did.port=80 + - edc.sql.schema.autocreate=true + - edc.datasource.default.url=jdbc:postgresql://shared-postgres:5432/cons_ih_db + - edc.datasource.default.user=admin + - edc.datasource.default.password=password + - edc.vault.hashicorp.url=http://shared-vault:8200 + - edc.vault.hashicorp.health.check.enabled=true + - edc.vault.hashicorp.token=vaultsecret0123456789 + volumes: + - ./additional_config/logging.properties:/app/logging.properties + networks: + - fx-test-network + + provider-idhub: + container_name: provider-idhub + image: identityhub-dev:latest + pull_policy: missing + depends_on: + shared-postgres: + condition: service_healthy + shared-vault: + condition: service_healthy + ports: + - "1046:1045" # debugger + - "21000:80" # did API -> / + - "21100:15151" # identity API -> /api/identity + - "21500:9292" # sts API -> /api/sts + - "21600:13131" # credentials API -> /api/credentials + # - "8181:8181" # default API -> /api + # - "9999:9999" # statuslist API -> /statuslist + environment: + - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:1045 + - edc.hostname=provider-idhub + - edc.iam.did.web.use.https=false + - edc.ih.api.superuser.id=admin + - edc.ih.api.superuser.key=YWRtaW4.adminKey + - web.http.did.port=80 + - edc.sql.schema.autocreate=true + - edc.datasource.default.url=jdbc:postgresql://shared-postgres:5432/prov_ih_db + - edc.datasource.default.user=admin + - edc.datasource.default.password=password + - edc.vault.hashicorp.url=http://shared-vault:8200 + - edc.vault.hashicorp.health.check.enabled=true + - edc.vault.hashicorp.token=vaultsecret0123456789 + volumes: + - ./additional_config/logging.properties:/app/logging.properties + networks: + - fx-test-network + + consumer-controlplane: + container_name: consumer-controlplane + image: con-x-controlplane-postgresql-hashicorp-vault:latest + pull_policy: missing + environment: + - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 + - tx.edc.postgresql.migration.asset.enabled=false + - tx.edc.postgresql.migration.contractdefinition.enabled=false + - tx.edc.postgresql.migration.contractnegotiation.enabled=false + - tx.edc.postgresql.migration.policy.enabled=false + - tx.edc.postgresql.migration.transferprocess.enabled=false + - edc.iam.trusted-issuer.example.id=did:web:local-issuer-service:con-x-issuer + - edc.iam.did.web.use.https=false + - edc.iam.sts.oauth.client.secret.alias=consumersecret + - edc.iam.credential.revocation.mimetype=application/json + - edc.iam.sts.oauth.token.url=http://consumer-idhub:9292/api/sts/token + - edc.iam.sts.oauth.client.id=did:web:consumer-idhub:user:consumer + - edc.iam.issuer.id=did:web:consumer-idhub:user:consumer + - web.http.port=9000 + - web.http.path=/api + - web.http.management.port=9010 + - web.http.management.path=/management + - web.http.protocol.port=9020 + - web.http.protocol.path=/dsp + - web.http.validation.port=9030 + - web.http.validation.path=/validation + - web.http.control.port=9050 + - web.http.control.path=/control + - edc.hostname=consumer-controlplane + - edc.participant.id=did:web:consumer-idhub:user:consumer + - edc.dsp.callback.address=http://consumer-controlplane:9020/dsp + - edc.sql.schema.autocreate=true + - edc.datasource.default.url=jdbc:postgresql://shared-postgres:5432/cons_cpl + - edc.datasource.default.user=admin + - edc.datasource.default.password=password + - edc.vault.hashicorp.url=http://shared-vault:8200 + - edc.vault.hashicorp.health.check.enabled=true + - edc.vault.hashicorp.token=vaultsecret0123456789 + volumes: + - ./additional_config/logging.properties:/app/dataspaceconnector-configuration.properties + depends_on: + shared-postgres: + condition: service_healthy + shared-vault: + condition: service_healthy + entrypoint: [ "java", "-jar", "edc-runtime.jar", "--log-level=DEBUG" ] + ports: + - "5005:5005" # Debugger + - "29000:9000" # Default port + - "29010:9010" # Management API + - "29020:9020" # DSP API + networks: + - fx-test-network + + consumer-dataplane: + container_name: consumer-dataplane + image: con-x-dataplane-postgresql-hashicorp-vault:latest + environment: + - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 + - web.http.public.port=9500 + - web.http.public.path=/public + - web.http.management.port=9510 + - web.http.management.path=/management + - web.http.control.port=9550 + - web.http.control.path=/control + - edc.hostname=consumer-dataplane + - edc.dpf.selector.url=http://consumer-controlplane:9050/control/v1/dataplanes + - edc.data.plane.self.unregistration=true + - edc.datasource.default.url=jdbc:postgresql://shared-postgres:5432/cons_dpl + - edc.datasource.default.user=admin + - edc.datasource.default.password=password + - edc.sql.schema.autocreate=true + - edc.transfer.proxy.token.signer.privatekey.alias=cons_priv + - edc.transfer.proxy.token.verifier.publickey.alias=cons_pub + - edc.vault.hashicorp.url=http://shared-vault:8200 + - edc.vault.hashicorp.health.check.enabled=true + - edc.vault.hashicorp.token=vaultsecret0123456789 + - edc.iam.trusted-issuer.example.id=did:web:local-issuer-service:con-x-issuer + - edc.iam.did.web.use.https=false + - edc.iam.sts.oauth.client.secret.alias=consumersecret + - edc.iam.credential.revocation.mimetype=application/json + - edc.iam.sts.oauth.token.url=http://consumer-idhub:9292/api/sts/token + - edc.iam.sts.oauth.client.id=did:web:consumer-idhub:user:consumer + - edc.iam.issuer.id=did:web:consumer-idhub:user:consumer + depends_on: + shared-postgres: + condition: service_healthy + shared-vault: + condition: service_healthy + entrypoint: [ "java", "-jar", "edc-runtime.jar", "--log-level=DEBUG" ] + ports: + - "5008:5005" # Debugger + - "9600:9500" # Public API + networks: + - fx-test-network + + provider-controlplane: + container_name: provider-controlplane + image: con-x-controlplane-postgresql-hashicorp-vault:latest + pull_policy: missing + environment: + - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 + - tx.edc.postgresql.migration.asset.enabled=false + - tx.edc.postgresql.migration.contractdefinition.enabled=false + - tx.edc.postgresql.migration.contractnegotiation.enabled=false + - tx.edc.postgresql.migration.policy.enabled=false + - tx.edc.postgresql.migration.transferprocess.enabled=false + - edc.iam.trusted-issuer.example.id=did:web:local-issuer-service:con-x-issuer + - edc.iam.did.web.use.https=false + - edc.iam.sts.oauth.client.secret.alias=providersecret + - edc.iam.credential.revocation.mimetype=application/json + - edc.iam.sts.oauth.token.url=http://provider-idhub:9292/api/sts/token + - edc.iam.sts.oauth.client.id=did:web:provider-idhub:user:provider + - edc.iam.issuer.id=did:web:provider-idhub:user:provider + - web.http.port=9000 + - web.http.path=/api + - web.http.management.port=9010 + - web.http.management.path=/management + - web.http.protocol.port=9020 + - web.http.protocol.path=/dsp + - web.http.validation.port=9030 + - web.http.validation.path=/validation + - web.http.control.port=9050 + - web.http.control.path=/control + - edc.hostname=provider-controlplane + - edc.participant.id=did:web:provider-idhub:user:provider + - edc.dsp.callback.address=http://provider-controlplane:9020/dsp + - edc.sql.schema.autocreate=true + - edc.datasource.default.url=jdbc:postgresql://shared-postgres:5432/prov_cpl + - edc.datasource.default.user=admin + - edc.datasource.default.password=password + - edc.vault.hashicorp.url=http://shared-vault:8200 + - edc.vault.hashicorp.health.check.enabled=true + - edc.vault.hashicorp.token=vaultsecret0123456789 + volumes: + - ./additional_config/logging.properties:/app/dataspaceconnector-configuration.properties + depends_on: + shared-postgres: + condition: service_healthy + shared-vault: + condition: service_healthy + entrypoint: [ "java", "-jar", "edc-runtime.jar", "--log-level=DEBUG" ] + ports: + - "5006:5005" # Debugger + - "39000:9000" # Default port + - "39010:9010" # Management API + - "39020:9020" # DSP API + + networks: + - fx-test-network + + provider-dataplane: + container_name: provider-dataplane + image: con-x-dataplane-postgresql-hashicorp-vault:latest + environment: + - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 + - web.http.public.port=9500 + - web.http.public.path=/public + - web.http.management.port=9510 + - web.http.management.path=/management + - web.http.control.port=9550 + - web.http.control.path=/control + - edc.hostname=provider-dataplane + - edc.dpf.selector.url=http://provider-controlplane:9050/control/v1/dataplanes + - edc.data.plane.self.unregistration=true + - edc.datasource.default.url=jdbc:postgresql://shared-postgres:5432/prov_dpl + - edc.datasource.default.user=admin + - edc.datasource.default.password=password + - edc.sql.schema.autocreate=true + - edc.transfer.proxy.token.signer.privatekey.alias=prov_priv + - edc.transfer.proxy.token.verifier.publickey.alias=prov_pub + - edc.vault.hashicorp.url=http://shared-vault:8200 + - edc.vault.hashicorp.health.check.enabled=true + - edc.vault.hashicorp.token=vaultsecret0123456789 + - edc.iam.trusted-issuer.example.id=did:web:local-issuer-service:con-x-issuer + - edc.iam.did.web.use.https=false + - edc.iam.sts.oauth.client.secret.alias=providersecret + - edc.iam.credential.revocation.mimetype=application/json + - edc.iam.sts.oauth.token.url=http://provider-idhub:9292/api/sts/token + - edc.iam.sts.oauth.client.id=did:web:provider-idhub:user:provider + - edc.iam.issuer.id=did:web:provider-idhub:user:provider + + depends_on: + shared-postgres: + condition: service_healthy + shared-vault: + condition: service_healthy + entrypoint: [ "java", "-jar", "edc-runtime.jar", "--log-level=DEBUG" ] + ports: + - "5007:5005" # Debugger + - "9500:9500" # Public API + networks: + - fx-test-network + +networks: + fx-test-network: + name: fx-test-network + driver: bridge \ No newline at end of file diff --git a/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/README.md b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/README.md new file mode 100644 index 0000000000..b0595fdfcd --- /dev/null +++ b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/README.md @@ -0,0 +1,9 @@ +# con-x-dataplane-postgresql-hashicorp-vault Module + +## Building + +From the project root directory, run + +```shell +./gradlew :edc-dataplane:edc-dataplane-construct-x:con-x-dataplane-postgres-hashicorp-vault:dockerize +``` diff --git a/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/build.gradle.kts b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/build.gradle.kts new file mode 100644 index 0000000000..e18b3c08d4 --- /dev/null +++ b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/build.gradle.kts @@ -0,0 +1,51 @@ +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH + * Copyright (c) 2026 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) + * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation + * + * 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 + */ + +plugins { + `java-library` + id("application") + alias(libs.plugins.shadow) +} + + +dependencies { + val edcVersion = "0.14.1" + val txVersion = "0.11.2" + implementation("org.eclipse.edc:dataplane-base-bom:$edcVersion") + implementation("org.eclipse.edc:dataplane-feature-sql-bom:${edcVersion}") + implementation("org.eclipse.edc:vault-hashicorp:${edcVersion}") + + implementation("org.eclipse.tractusx.edc:dataplane-public-api-v2:$txVersion") +} + +tasks.withType { + mergeServiceFiles() + archiveFileName.set("con-x-dataplane-postgresql-hashicorp-vault.jar") + transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) +} + +tasks.named("build") { + dependsOn(tasks.named("shadowJar")) +} + +application { + mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 27a0c60755..0aac527539 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -129,11 +129,15 @@ include(":edc-controlplane") include(":edc-controlplane:edc-controlplane-base") include(":edc-controlplane:edc-runtime-memory") include(":edc-controlplane:edc-controlplane-postgresql-hashicorp-vault") +include(":edc-controlplane:edc-controlplane-construct-x:con-x-controlplane-base") +include(":edc-controlplane:edc-controlplane-construct-x:con-x-controlplane-postgresql-hashicorp-vault") // modules for dataplane artifacts include(":edc-dataplane") include(":edc-dataplane:edc-dataplane-base") include(":edc-dataplane:edc-dataplane-hashicorp-vault") +include(":edc-dataplane:edc-dataplane-construct-x:con-x-dataplane-base") +include(":edc-dataplane:edc-dataplane-construct-x:con-x-dataplane-postgresql-hashicorp-vault") include(":samples:testing-with-mocked-connector") From b1b4571fba14be3b0a3a4a5379d7616be011ea17 Mon Sep 17 00:00:00 2001 From: Ernst-Christoph Schrewe Date: Tue, 10 Feb 2026 12:08:48 +0100 Subject: [PATCH 2/6] feat: handle upstream changes & update for local deployment --- .../con-x-controlplane-base/build.gradle.kts | 74 +++++++++++++++++++ .../build.gradle.kts | 1 + .../CreateConsumerParticipant.bru | 2 +- .../CreateIssuerParticipant.bru | 2 +- .../CreateProviderParticipant.bru | 2 +- .../local/docker-compose.yaml | 38 +++++++--- .../con-x-dataplane-base/build.gradle.kts | 45 +++++++++++ .../build.gradle.kts | 6 ++ 8 files changed, 155 insertions(+), 15 deletions(-) create mode 100644 edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-base/build.gradle.kts create mode 100644 edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-base/build.gradle.kts diff --git a/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-base/build.gradle.kts b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-base/build.gradle.kts new file mode 100644 index 0000000000..8c9c01cdee --- /dev/null +++ b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-base/build.gradle.kts @@ -0,0 +1,74 @@ +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH + * Copyright (c) 2026 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) + * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation + * + * 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 + */ + +plugins { + `java-library` + id("application") + alias(libs.plugins.shadow) +} + +dependencies { + val txGroup = "org.eclipse.tractusx.edc" + runtimeOnly("org.eclipse.tractusx.edc:edc-controlplane-base:0.11.2") { + + exclude(group = txGroup, module = "edr-core") // refresh token + exclude(group = txGroup, module = "json-ld-core") // tx specific + + exclude(group = txGroup, module = "agreements-bpns") // bpn specific + exclude(group = txGroup, module = "bdrs-client") // bpn specific + exclude(group = txGroup, module = "bpn-validation") // bpn specific + exclude(group = txGroup, module = "cx-policy") // tx specific + exclude(group = txGroup, module = "cx-policy-legacy") // tx specific + exclude(group = txGroup, module = "data-flow-properties-provider") // tx specific + exclude(group = txGroup, module = "dcp:tx-dcp") // tx specific, but currently needed! + exclude(group = txGroup, module = "dcp:tx-dcp-sts-dim") // tx specific + exclude(group = txGroup, module = "edr-api-v2") // related to refresh token + exclude(group = txGroup, module = "edr-callback") // related to refresh token + + exclude(group = txGroup, module = "provision-additional-headers") // tx specific + exclude(group = txGroup, module = "tokenrefresh-handler") // refresh token + exclude(group = txGroup, module = "empty-asset-selector") // restricts certain contract definition, unsure if needed + exclude(group = txGroup, module = "connector-discovery-api") // requires bdrs client + exclude(group = txGroup, module = "dataspace-protocol") // tx specific + + exclude(group = txGroup, module = "event-subscriber") // open-telemetry-related, unsure if needed + + } + runtimeOnly("org.eclipse.edc:controlplane-dcp-bom:0.14.1") + runtimeOnly("org.eclipse.edc:controlplane-base-bom:0.14.1") + runtimeOnly("org.eclipse.edc:edr-cache-api:0.14.1") + runtimeOnly("org.slf4j:slf4j-simple:2.0.17") + +} + +tasks.withType { + mergeServiceFiles() + archiveFileName.set("con-x-edc-controlplane.jar") + transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) +} + +tasks.named("build") { + dependsOn(tasks.named("shadowJar")) +} + +application { + mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") +} \ No newline at end of file diff --git a/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/build.gradle.kts b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/build.gradle.kts index 29eaef2144..073b26db84 100644 --- a/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-postgresql-hashicorp-vault/build.gradle.kts @@ -40,6 +40,7 @@ dependencies { tasks.withType { mergeServiceFiles() + duplicatesStrategy = DuplicatesStrategy.INCLUDE archiveFileName.set("con-x-controlplane-postgresql-hashicorp-vault.jar") transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) } diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru index 1096017b6e..cf4cd0ae28 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru @@ -23,7 +23,7 @@ body:json { "serviceEndpoint": "http://consumer-idhub:13131/api/credentials/v1/participants/{{B64_CONS_ID}}" }], "active": true, - "participantId": "did:web:consumer-idhub:user:consumer", + "participantContextId": "did:web:consumer-idhub:user:consumer", "did": "did:web:consumer-idhub:user:consumer", "key":{ "keyId": "did:web:consumer-idhub:user:consumer#key-1", diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru index dbd68a091e..92ac1fc389 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru @@ -25,7 +25,7 @@ body:json { } ], "active": true, - "participantId": "{{ISS_ID}}", + "participantContextId": "{{ISS_ID}}", "did": "{{ISS_ID}}", "key": { "keyId": "{{ISS_ID}}#key-1", diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru index 1b9c01f037..2c43e1e115 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru @@ -23,7 +23,7 @@ body:json { "serviceEndpoint": "http://provider-idhub:13131/api/credentials/v1/participants/{{B64_PROV_ID}}" }], "active": true, - "participantId": "{{PROV_ID}}", + "participantContextId": "{{PROV_ID}}", "did": "{{PROV_ID}}", "key":{ "keyId": "{{PROV_ID}}#key-1", diff --git a/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml b/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml index 789fc40eab..5be605c1d6 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml +++ b/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml @@ -40,7 +40,7 @@ services: - ./additional_config/mc-cred-def.json:/app/setup.json - ./additional_config/logging.properties:/app/logging.properties networks: - - fx-test-network + - con-x-test-network shared-postgres: container_name: shared-postgres @@ -56,7 +56,7 @@ services: timeout: 3s retries: 20 networks: - - fx-test-network + - con-x-test-network shared-vault: container_name: shared-vault @@ -74,7 +74,7 @@ services: ports: - "8200:8200" networks: - - fx-test-network + - con-x-test-network vault-init: container_name: vault-init @@ -90,7 +90,7 @@ services: entrypoint: [ "sh", "-c", "apk add --no-check-certificate --no-cache curl jq openssl && sh /scripts/init.sh" ] restart: "no" networks: - - fx-test-network + - con-x-test-network consumer-idhub: container_name: consumer-idhub @@ -126,7 +126,7 @@ services: volumes: - ./additional_config/logging.properties:/app/logging.properties networks: - - fx-test-network + - con-x-test-network provider-idhub: container_name: provider-idhub @@ -162,7 +162,7 @@ services: volumes: - ./additional_config/logging.properties:/app/logging.properties networks: - - fx-test-network + - con-x-test-network consumer-controlplane: container_name: consumer-controlplane @@ -171,8 +171,15 @@ services: environment: - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 - tx.edc.postgresql.migration.asset.enabled=false + - tx.edc.postgresql.migration.agreementbpns.enabled=false + - tx.edc.postgresql.migration.bpn.enabled=false - tx.edc.postgresql.migration.contractdefinition.enabled=false - tx.edc.postgresql.migration.contractnegotiation.enabled=false + - tx.edc.postgresql.migration.dataplaneinstance.enabled=false + - tx.edc.postgresql.migration.edr.enabled=false + - tx.edc.postgresql.migration.federatedcatalog.enabled=false + - tx.edc.postgresql.migration.jti-validation.enabled=false + - tx.edc.postgresql.migration.policy-monitor.enabled=false - tx.edc.postgresql.migration.policy.enabled=false - tx.edc.postgresql.migration.transferprocess.enabled=false - edc.iam.trusted-issuer.example.id=did:web:local-issuer-service:con-x-issuer @@ -216,7 +223,7 @@ services: - "29010:9010" # Management API - "29020:9020" # DSP API networks: - - fx-test-network + - con-x-test-network consumer-dataplane: container_name: consumer-dataplane @@ -258,7 +265,7 @@ services: - "5008:5005" # Debugger - "9600:9500" # Public API networks: - - fx-test-network + - con-x-test-network provider-controlplane: container_name: provider-controlplane @@ -267,8 +274,15 @@ services: environment: - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 - tx.edc.postgresql.migration.asset.enabled=false + - tx.edc.postgresql.migration.agreementbpns.enabled=false + - tx.edc.postgresql.migration.bpn.enabled=false - tx.edc.postgresql.migration.contractdefinition.enabled=false - tx.edc.postgresql.migration.contractnegotiation.enabled=false + - tx.edc.postgresql.migration.dataplaneinstance.enabled=false + - tx.edc.postgresql.migration.edr.enabled=false + - tx.edc.postgresql.migration.federatedcatalog.enabled=false + - tx.edc.postgresql.migration.jti-validation.enabled=false + - tx.edc.postgresql.migration.policy-monitor.enabled=false - tx.edc.postgresql.migration.policy.enabled=false - tx.edc.postgresql.migration.transferprocess.enabled=false - edc.iam.trusted-issuer.example.id=did:web:local-issuer-service:con-x-issuer @@ -313,7 +327,7 @@ services: - "39020:9020" # DSP API networks: - - fx-test-network + - con-x-test-network provider-dataplane: container_name: provider-dataplane @@ -356,9 +370,9 @@ services: - "5007:5005" # Debugger - "9500:9500" # Public API networks: - - fx-test-network + - con-x-test-network networks: - fx-test-network: - name: fx-test-network + con-x-test-network: + name: con-x-test-network driver: bridge \ No newline at end of file diff --git a/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-base/build.gradle.kts b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-base/build.gradle.kts new file mode 100644 index 0000000000..fef5feaf16 --- /dev/null +++ b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-base/build.gradle.kts @@ -0,0 +1,45 @@ +plugins { + `java-library` + id("application") + alias(libs.plugins.shadow) +} + +dependencies { + val txGroup = "org.eclipse.tractusx.edc" + runtimeOnly("org.eclipse.tractusx.edc:edc-dataplane-base:0.11.2") { + + exclude(group = txGroup, module = "edr-core") // refresh token related + + exclude(group = txGroup, module = "edc-dataplane-proxy-consumer-api") // refresh token related + + exclude(group = txGroup, module = "token-refresh-api") // refresh token related + exclude(group = txGroup, module = "token-refresh-core") // refresh token related + exclude(group = txGroup, module = "tx-dcp-sts-dim") // tx specific + exclude(group = txGroup, module = "tokenrefresh-handler") // refresh token related + exclude(group = txGroup, module = "event-subscriber") + + + exclude(group = "io.opentelemetry.instrumentation", module = "opentelemetry-log4j-appender") + + } + + implementation("org.eclipse.edc:dataplane-base-bom:0.14.1") +// runtimeOnly("org.eclipse.edc:edr-cache-api:0.14.1") +// implementation("org.eclipse.edc:data-plane-self-registration:0.14.1") // temporary quickfix? + runtimeOnly("org.slf4j:slf4j-simple:2.0.17") + +} + +tasks.withType { + mergeServiceFiles() + archiveFileName.set("con-x-edc-dataplane.jar") + transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) +} + +tasks.named("build") { + dependsOn(tasks.named("shadowJar")) +} + +application { + mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") +} \ No newline at end of file diff --git a/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/build.gradle.kts b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/build.gradle.kts index e18b3c08d4..d4248bb096 100644 --- a/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/build.gradle.kts @@ -25,6 +25,9 @@ plugins { alias(libs.plugins.shadow) } +configurations.all { + exclude(group = "org.eclipse.edc", module = "data-plane-util") +} dependencies { val edcVersion = "0.14.1" @@ -34,10 +37,13 @@ dependencies { implementation("org.eclipse.edc:vault-hashicorp:${edcVersion}") implementation("org.eclipse.tractusx.edc:dataplane-public-api-v2:$txVersion") + implementation("org.eclipse.tractusx.edc:dataplane-util:${txVersion}") } + tasks.withType { mergeServiceFiles() + duplicatesStrategy = DuplicatesStrategy.INCLUDE archiveFileName.set("con-x-dataplane-postgresql-hashicorp-vault.jar") transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) } From ace57bbf7e14e94221b09249b0f5f6ad1c9200c8 Mon Sep 17 00:00:00 2001 From: Ernst-Christoph Schrewe Date: Tue, 10 Feb 2026 12:13:39 +0100 Subject: [PATCH 3/6] fix: README & remove obsolete bases --- .../con-x-controlplane-base/build.gradle.kts | 74 ------------------- .../local/README.md | 5 +- .../con-x-dataplane-base/build.gradle.kts | 45 ----------- settings.gradle.kts | 2 - 4 files changed, 2 insertions(+), 124 deletions(-) delete mode 100644 edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-base/build.gradle.kts delete mode 100644 edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-base/build.gradle.kts diff --git a/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-base/build.gradle.kts b/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-base/build.gradle.kts deleted file mode 100644 index 8c9c01cdee..0000000000 --- a/edc-controlplane/edc-controlplane-construct-x/con-x-controlplane-base/build.gradle.kts +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH - * Copyright (c) 2026 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) - * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation - * - * 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 - */ - -plugins { - `java-library` - id("application") - alias(libs.plugins.shadow) -} - -dependencies { - val txGroup = "org.eclipse.tractusx.edc" - runtimeOnly("org.eclipse.tractusx.edc:edc-controlplane-base:0.11.2") { - - exclude(group = txGroup, module = "edr-core") // refresh token - exclude(group = txGroup, module = "json-ld-core") // tx specific - - exclude(group = txGroup, module = "agreements-bpns") // bpn specific - exclude(group = txGroup, module = "bdrs-client") // bpn specific - exclude(group = txGroup, module = "bpn-validation") // bpn specific - exclude(group = txGroup, module = "cx-policy") // tx specific - exclude(group = txGroup, module = "cx-policy-legacy") // tx specific - exclude(group = txGroup, module = "data-flow-properties-provider") // tx specific - exclude(group = txGroup, module = "dcp:tx-dcp") // tx specific, but currently needed! - exclude(group = txGroup, module = "dcp:tx-dcp-sts-dim") // tx specific - exclude(group = txGroup, module = "edr-api-v2") // related to refresh token - exclude(group = txGroup, module = "edr-callback") // related to refresh token - - exclude(group = txGroup, module = "provision-additional-headers") // tx specific - exclude(group = txGroup, module = "tokenrefresh-handler") // refresh token - exclude(group = txGroup, module = "empty-asset-selector") // restricts certain contract definition, unsure if needed - exclude(group = txGroup, module = "connector-discovery-api") // requires bdrs client - exclude(group = txGroup, module = "dataspace-protocol") // tx specific - - exclude(group = txGroup, module = "event-subscriber") // open-telemetry-related, unsure if needed - - } - runtimeOnly("org.eclipse.edc:controlplane-dcp-bom:0.14.1") - runtimeOnly("org.eclipse.edc:controlplane-base-bom:0.14.1") - runtimeOnly("org.eclipse.edc:edr-cache-api:0.14.1") - runtimeOnly("org.slf4j:slf4j-simple:2.0.17") - -} - -tasks.withType { - mergeServiceFiles() - archiveFileName.set("con-x-edc-controlplane.jar") - transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) -} - -tasks.named("build") { - dependsOn(tasks.named("shadowJar")) -} - -application { - mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") -} \ No newline at end of file diff --git a/edc-controlplane/edc-controlplane-construct-x/local/README.md b/edc-controlplane/edc-controlplane-construct-x/local/README.md index a2c36375a3..e0813b1189 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/README.md +++ b/edc-controlplane/edc-controlplane-construct-x/local/README.md @@ -5,9 +5,8 @@ This docker-compose.yaml provides you a minimal environment for testing a pair o Before anything else, please make sure you have the docker images for con-x-controlplane-postgresql-hashicorp-vault in your local docker repository, see [here](../con-x-controlplane-postgresql-hashicorp-vault/README.md) and [here](../../../edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/README.md). - -#### TO-DO -(provide access to identityhub and issuerservice docker images) +Beyond that, you need to obtain the docker images needed to run the identity hub and the issuer services. In order to do so, please checckout this [repository](https://github.com/FraunhoferISST/dev-identity-services) and clone it onto your local machine. The upper section of this [README](https://github.com/FraunhoferISST/dev-identity-services/blob/main/runtimes/dev/README.md) informs +you about the steps necessary to create the docker images. ### Start the environment diff --git a/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-base/build.gradle.kts b/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-base/build.gradle.kts deleted file mode 100644 index fef5feaf16..0000000000 --- a/edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-base/build.gradle.kts +++ /dev/null @@ -1,45 +0,0 @@ -plugins { - `java-library` - id("application") - alias(libs.plugins.shadow) -} - -dependencies { - val txGroup = "org.eclipse.tractusx.edc" - runtimeOnly("org.eclipse.tractusx.edc:edc-dataplane-base:0.11.2") { - - exclude(group = txGroup, module = "edr-core") // refresh token related - - exclude(group = txGroup, module = "edc-dataplane-proxy-consumer-api") // refresh token related - - exclude(group = txGroup, module = "token-refresh-api") // refresh token related - exclude(group = txGroup, module = "token-refresh-core") // refresh token related - exclude(group = txGroup, module = "tx-dcp-sts-dim") // tx specific - exclude(group = txGroup, module = "tokenrefresh-handler") // refresh token related - exclude(group = txGroup, module = "event-subscriber") - - - exclude(group = "io.opentelemetry.instrumentation", module = "opentelemetry-log4j-appender") - - } - - implementation("org.eclipse.edc:dataplane-base-bom:0.14.1") -// runtimeOnly("org.eclipse.edc:edr-cache-api:0.14.1") -// implementation("org.eclipse.edc:data-plane-self-registration:0.14.1") // temporary quickfix? - runtimeOnly("org.slf4j:slf4j-simple:2.0.17") - -} - -tasks.withType { - mergeServiceFiles() - archiveFileName.set("con-x-edc-dataplane.jar") - transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) -} - -tasks.named("build") { - dependsOn(tasks.named("shadowJar")) -} - -application { - mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") -} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 2b4edfddc3..3e3e63f26e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -138,14 +138,12 @@ include(":edc-controlplane") include(":edc-controlplane:edc-controlplane-base") include(":edc-controlplane:edc-runtime-memory") include(":edc-controlplane:edc-controlplane-postgresql-hashicorp-vault") -include(":edc-controlplane:edc-controlplane-construct-x:con-x-controlplane-base") include(":edc-controlplane:edc-controlplane-construct-x:con-x-controlplane-postgresql-hashicorp-vault") // modules for dataplane artifacts include(":edc-dataplane") include(":edc-dataplane:edc-dataplane-base") include(":edc-dataplane:edc-dataplane-hashicorp-vault") -include(":edc-dataplane:edc-dataplane-construct-x:con-x-dataplane-base") include(":edc-dataplane:edc-dataplane-construct-x:con-x-dataplane-postgresql-hashicorp-vault") include(":samples:testing-with-mocked-connector") From 1b0955e5f7fdd53475147148b1d5e70055281d43 Mon Sep 17 00:00:00 2001 From: Ernst-Christoph Schrewe Date: Tue, 10 Feb 2026 13:45:04 +0100 Subject: [PATCH 4/6] fix: rename bruno folder --- edc-controlplane/edc-controlplane-construct-x/local/README.md | 3 +-- .../local/bruno/{fx-local-test => con-x-local-test}/bruno.json | 0 .../environments/local-con-x-env.bru | 0 .../identities/Inspect Outcome/ShowConsumerCredentials.bru | 0 .../Inspect Outcome/ShowProviderCredentials copy.bru | 0 .../identities/Inspect Outcome/folder.bru | 0 .../Prepare Consumer ID/CreateConsumerParticipant.bru | 0 .../identities/Prepare Consumer ID/Get Consumer DID Doc.bru | 0 .../Prepare Consumer ID/RequestConsumerCredential.bru | 0 .../identities/Prepare Consumer ID/VaultSecret test.bru | 0 .../identities/Prepare Consumer ID/VaultSecret.bru | 0 .../identities/Prepare Consumer ID/folder.bru | 0 .../identities/Prepare Issuer/CreateIssuerParticipant.bru | 0 .../identities/Prepare Issuer/Optionalconfig/GetConfig.bru | 0 .../identities/Prepare Issuer/Optionalconfig/SetConfig.bru | 0 .../identities/Prepare Issuer/Optionalconfig/folder.bru | 0 .../identities/Prepare Issuer/addConsumerHolder.bru | 0 .../identities/Prepare Issuer/addProviderHolder.bru | 0 .../identities/Prepare Issuer/createAttestation.bru | 0 .../identities/Prepare Issuer/createCredentialDef.bru | 0 .../identities/Prepare Issuer/folder.bru | 0 .../Prepare Provider ID/CreateProviderParticipant.bru | 0 .../identities/Prepare Provider ID/Get Provider DID Doc.bru | 0 .../Prepare Provider ID/RequestProviderCredential.bru | 0 .../identities/Prepare Provider ID/VaultSecret test.bru | 0 .../identities/Prepare Provider ID/VaultSecret.bru | 0 .../identities/Prepare Provider ID/folder.bru | 0 .../identities/Simulated DCP Flow/Consumer Token.bru | 0 .../identities/Simulated DCP Flow/Get Credential.bru | 0 .../identities/Simulated DCP Flow/Provider Token.bru | 0 .../identities/Simulated DCP Flow/folder.bru | 0 .../{fx-local-test => con-x-local-test}/identities/folder.bru | 0 .../transactions/consumer/CheckNegotiationResult.bru | 0 .../transactions/consumer/Get EDR.bru | 0 .../transactions/consumer/InitPullTransfer.bru | 0 .../transactions/consumer/InitiateNegotiation.bru | 0 .../transactions/consumer/PullAssetData.bru | 0 .../transactions/consumer/RequestProviderCatalog.bru | 0 .../transactions/consumer/folder.bru | 0 .../transactions/folder.bru | 0 .../transactions/provider/CreateAsset.bru | 0 .../transactions/provider/CreateContractDefinition.bru | 0 .../transactions/provider/CreatePolicy.bru | 0 .../transactions/provider/folder.bru | 0 44 files changed, 1 insertion(+), 2 deletions(-) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/bruno.json (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/environments/local-con-x-env.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Inspect Outcome/ShowConsumerCredentials.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Inspect Outcome/ShowProviderCredentials copy.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Inspect Outcome/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Consumer ID/CreateConsumerParticipant.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Consumer ID/Get Consumer DID Doc.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Consumer ID/RequestConsumerCredential.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Consumer ID/VaultSecret test.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Consumer ID/VaultSecret.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Consumer ID/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/CreateIssuerParticipant.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/Optionalconfig/GetConfig.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/Optionalconfig/SetConfig.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/Optionalconfig/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/addConsumerHolder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/addProviderHolder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/createAttestation.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/createCredentialDef.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Issuer/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Provider ID/CreateProviderParticipant.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Provider ID/Get Provider DID Doc.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Provider ID/RequestProviderCredential.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Provider ID/VaultSecret test.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Provider ID/VaultSecret.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Prepare Provider ID/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Simulated DCP Flow/Consumer Token.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Simulated DCP Flow/Get Credential.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Simulated DCP Flow/Provider Token.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/Simulated DCP Flow/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/identities/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/consumer/CheckNegotiationResult.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/consumer/Get EDR.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/consumer/InitPullTransfer.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/consumer/InitiateNegotiation.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/consumer/PullAssetData.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/consumer/RequestProviderCatalog.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/consumer/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/folder.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/provider/CreateAsset.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/provider/CreateContractDefinition.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/provider/CreatePolicy.bru (100%) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/{fx-local-test => con-x-local-test}/transactions/provider/folder.bru (100%) diff --git a/edc-controlplane/edc-controlplane-construct-x/local/README.md b/edc-controlplane/edc-controlplane-construct-x/local/README.md index e0813b1189..3437480e05 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/README.md +++ b/edc-controlplane/edc-controlplane-construct-x/local/README.md @@ -17,8 +17,7 @@ docker compose up ``` Then please use the attached Bruno collection. ([Bruno](https://www.usebruno.com/) is a convenient http client, which -you should install, if you haven't already.) In order to this, choose the "open" (not "import") option item in the Bruno -UI and select the respective [folder](./bruno/fx-local-test). After that, please use the icon in the upper right corner +you should install, if you haven't already.) In order to this, choose the "open" (not "import") option item in the Bruno UI and select the respective [folder](bruno/con-x-local-test). After that, please use the icon in the upper right corner of the Bruno GUI to select the environment (which stores the variables, that the requests will need). In that collection you should first run the requests of the ´identities´ folder. diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/bruno.json b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/bruno.json similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/bruno.json rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/bruno.json diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/environments/local-con-x-env.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/environments/local-con-x-env.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/environments/local-con-x-env.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/environments/local-con-x-env.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowConsumerCredentials.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowConsumerCredentials.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowConsumerCredentials.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowConsumerCredentials.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Inspect Outcome/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/CreateConsumerParticipant.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/Get Consumer DID Doc.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/Get Consumer DID Doc.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/Get Consumer DID Doc.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/Get Consumer DID Doc.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/RequestConsumerCredential.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/RequestConsumerCredential.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/RequestConsumerCredential.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/RequestConsumerCredential.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret test.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/VaultSecret test.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret test.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/VaultSecret test.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/VaultSecret.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/VaultSecret.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/VaultSecret.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Consumer ID/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Consumer ID/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/CreateIssuerParticipant.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/GetConfig.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/Optionalconfig/GetConfig.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/GetConfig.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/Optionalconfig/GetConfig.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/SetConfig.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/Optionalconfig/SetConfig.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/SetConfig.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/Optionalconfig/SetConfig.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/Optionalconfig/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/Optionalconfig/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/Optionalconfig/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addConsumerHolder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/addConsumerHolder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addConsumerHolder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/addConsumerHolder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addProviderHolder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/addProviderHolder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/addProviderHolder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/addProviderHolder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createAttestation.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/createAttestation.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createAttestation.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/createAttestation.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createCredentialDef.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/createCredentialDef.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/createCredentialDef.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/createCredentialDef.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Issuer/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Issuer/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/CreateProviderParticipant.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/Get Provider DID Doc.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/Get Provider DID Doc.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/Get Provider DID Doc.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/Get Provider DID Doc.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/RequestProviderCredential.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/RequestProviderCredential.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/RequestProviderCredential.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/RequestProviderCredential.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret test.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/VaultSecret test.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret test.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/VaultSecret test.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/VaultSecret.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/VaultSecret.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/VaultSecret.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Prepare Provider ID/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Prepare Provider ID/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Consumer Token.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Simulated DCP Flow/Consumer Token.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Consumer Token.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Simulated DCP Flow/Consumer Token.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Get Credential.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Simulated DCP Flow/Get Credential.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Get Credential.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Simulated DCP Flow/Get Credential.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Provider Token.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Simulated DCP Flow/Provider Token.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/Provider Token.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Simulated DCP Flow/Provider Token.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Simulated DCP Flow/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/Simulated DCP Flow/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Simulated DCP Flow/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/identities/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/CheckNegotiationResult.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/CheckNegotiationResult.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/CheckNegotiationResult.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/CheckNegotiationResult.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/Get EDR.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/Get EDR.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/Get EDR.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/Get EDR.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitPullTransfer.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/InitPullTransfer.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitPullTransfer.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/InitPullTransfer.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitiateNegotiation.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/InitiateNegotiation.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/InitiateNegotiation.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/InitiateNegotiation.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/PullAssetData.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/PullAssetData.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/PullAssetData.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/PullAssetData.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/RequestProviderCatalog.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/RequestProviderCatalog.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/RequestProviderCatalog.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/RequestProviderCatalog.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/consumer/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/consumer/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/folder.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateAsset.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/provider/CreateAsset.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateAsset.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/provider/CreateAsset.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateContractDefinition.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/provider/CreateContractDefinition.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreateContractDefinition.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/provider/CreateContractDefinition.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreatePolicy.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/provider/CreatePolicy.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/CreatePolicy.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/provider/CreatePolicy.bru diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/folder.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/provider/folder.bru similarity index 100% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/fx-local-test/transactions/provider/folder.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/transactions/provider/folder.bru From ddb698287bea1d4c74176d85a87cc30b4373e4e5 Mon Sep 17 00:00:00 2001 From: Ernst-Christoph Schrewe Date: Thu, 12 Feb 2026 09:37:51 +0100 Subject: [PATCH 5/6] fix: review issues --- .../local/README.md | 58 +++++++++++++++---- .../local/additional_config/vault-init.sh | 21 +++++++ ...s copy.bru => ShowProviderCredentials.bru} | 2 +- .../local/docker-compose.yaml | 39 ++++++++++--- 4 files changed, 101 insertions(+), 19 deletions(-) rename edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/{ShowProviderCredentials copy.bru => ShowProviderCredentials.bru} (84%) diff --git a/edc-controlplane/edc-controlplane-construct-x/local/README.md b/edc-controlplane/edc-controlplane-construct-x/local/README.md index 3437480e05..c47ca28e34 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/README.md +++ b/edc-controlplane/edc-controlplane-construct-x/local/README.md @@ -1,7 +1,19 @@ -# local docker based testbed +# Construct-X Local Docker Testbed + + +This `docker-compose.yaml` provides you a minimal environment for testing a pair of construct-x-edc's against each other. + +It will start the following containers on your local machine: + +- one instance of an issuer-service +- two instances of identity-hubs (for consumer and provider each) +- two instances of our current Construct-X controlplanes (as above) +- two instances of our current Construct-X dataplanes (as above) +- one Postgres DB (which is, for the sake of saving you resources on your local machine, shared by all aforementioned containers) +- one HashiCorp Vault (also shared) +- one (very short-lived) init-container, whose only job is to create edr-signing keys for the dataplanes, store them on the vault and then to terminate -This docker-compose.yaml provides you a minimal environment for testing a pair of construct-x-edc's against each other. Before anything else, please make sure you have the docker images for con-x-controlplane-postgresql-hashicorp-vault in your local docker repository, see [here](../con-x-controlplane-postgresql-hashicorp-vault/README.md) and [here](../../../edc-dataplane/edc-dataplane-construct-x/con-x-dataplane-postgresql-hashicorp-vault/README.md). @@ -10,34 +22,49 @@ you about the steps necessary to create the docker images. ### Start the environment -Now we are ready to start the environment. For that, please run +Now we are ready to start the environment. For that, please run (from the `local` folder of this README file!) + +Optionally (from the project root) +``` +cd edc-controlplane/edc-controlplane-construct-x/local +``` +Then: ``` docker compose up ``` Then please use the attached Bruno collection. ([Bruno](https://www.usebruno.com/) is a convenient http client, which -you should install, if you haven't already.) In order to this, choose the "open" (not "import") option item in the Bruno UI and select the respective [folder](bruno/con-x-local-test). After that, please use the icon in the upper right corner -of the Bruno GUI to select the environment (which stores the variables, that the requests will need). +you should install, if you haven't already). In order to this, choose the "open" (not "import") option item in the Bruno UI and select the respective [folder](bruno/con-x-local-test). If prompted by a popup if you want to choose "Safe Mode" or "Developer Mode", then just select "Safe Mode". + +After that, please use the icon in the upper right corner +of the Bruno GUI to select the `local-con-x-env` environment (which stores the variables that the requests will need). -In that collection you should first run the requests of the ´identities´ folder. +In that collection you should first run the requests of the `identities` folder. These request can also be safely executed from top to bottom in batch mode, especially if you are more interested in doing the "normal" `transactions` between the two edc's. Though can find more details one the `identities` folder below, if you're interested. After you have completed all required steps, the provider and the consumer identity are onboarded in your own dataspace -and ready to interact with each other. +and ready to interact with each other. -Now you are ready to perform a simple contract negotiation and data transfer between these two actors. +Now you are ready to perform a simple contract negotiation and data transfer between these two actors. Be sure to also read the documentation that is attached to the folders in the Bruno collection. You may also want to -check the pre- and postrequest scripts of many requests, because they may give you further insights. +check the pre- and postrequest scripts of many requests, because they may give you further insights. You can find the docs content +in the Bruno GUI on the far right side of the menu bar, where the "Headers", "Auth", "Vars", etc. items are located. You may have to unwrap the +menu using the ">>" icon. In a nutshell, we are presenting the following workflows here: -### Create an issuer-participant +### Create an issuer-participant (`Prepare Issuer` folder) The issuer-participant will act as the dataspaces' trusted issuer. This issuer is mandated to sign and hand out verifiable credentials, which the members of the dataspace can use to prove their membership (or potentially other relevant properties of themselves) to other partners in the same dataspace. After the registration of the issuer we are also providing the basic definition of the credential that shall be issued. And we also need register the expected ( -user-) members of the dataspace at the issuer service. +user-) members of the dataspace at the issuer service as holders at the trusted issuer's participant context. + +Assuming that the majority of users does not (at least in the beginning) want to get into the details of designing credentials, you can most probably skip the `Optionalconfig` folder (though it does no harm, if you run these requests, as long as you don't edit these requests in any way). If you're interested in the (rather advanced) topic of using customized credential subject contents in your credentials, you can take a further look at this [README](https://github.com/FraunhoferISST/dev-identity-services/blob/main/runtimes/dev/README.md). + +Pretty much the same goes for the `createAttestation` and the `createCredentialDef` requests. If you're an average user, you just need to know that +they are a technical necessity at this point and you just to need to run them to ensure that rest of the requests in this collection can be executed properly. ### Create a consumer and a provider identity @@ -52,6 +79,15 @@ respectively. And we can also do some kind of a simulated DCP flow with the just documentation in the Bruno collection if you are interested in learning some more details (though that is directed at the more advanced members of the audience here, beginners can definitely skip that part). +#### Known issue / validating the identity setup +In rare cases (chances seem to be below 0.5 %) there is currently a possibility, that one of the `CreateParticipant` calls may (silently) fail. We assume that this is something that needs to be fixed on the upstream EDC identity hub project. See this [issue](https://github.com/eclipse-edc/IdentityHub/issues/913) for details. If you are unfortunate enough encounter this bug, you should notice that one of the calls in the `InspectOutcome` folder shows an empty response and that (at least) the last call of `Simulated DCP Flow` shows a negative test result. + +If one encounter one these symptoms, we would suggest that you cleanly restart the entire docker compose (see below). Chances +are near 99 % that on your next attempt, you won't encounter this problem again. + +Also, if you're interested in some more details + + ### Do a transaction between provider and consumer Finally, we are ready now to do a more or less 'normal' DSP/DCP protocol backed transaction between the consumer and the diff --git a/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh index 361682921c..46ae80d087 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh +++ b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh @@ -1,4 +1,25 @@ #!/usr/bin/env bash + +# +# Copyright (c) 2026 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# 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 +# + set -euo pipefail VAULT="${VAULT_ADDR:-http://shared-vault:8200}" diff --git a/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowProviderCredentials.bru similarity index 84% rename from edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru rename to edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowProviderCredentials.bru index 7f724a746d..6f276a3a00 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowProviderCredentials copy.bru +++ b/edc-controlplane/edc-controlplane-construct-x/local/bruno/con-x-local-test/identities/Inspect Outcome/ShowProviderCredentials.bru @@ -1,5 +1,5 @@ meta { - name: ShowProviderCredentials copy + name: ShowProviderCredentials type: http seq: 2 } diff --git a/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml b/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml index 5be605c1d6..8f17c638f9 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml +++ b/edc-controlplane/edc-controlplane-construct-x/local/docker-compose.yaml @@ -1,8 +1,28 @@ +# +# Copyright (c) 2026 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# 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 +# + services: local-issuer-service: container_name: local-issuer-service image: issuerservice-dev:latest - pull_policy: missing + pull_policy: never depends_on: shared-postgres: condition: service_healthy @@ -45,6 +65,7 @@ services: shared-postgres: container_name: shared-postgres image: postgres:16.4-alpine + pull_policy: if_not_present environment: - POSTGRES_USER=admin - POSTGRES_PASSWORD=password @@ -61,11 +82,12 @@ services: shared-vault: container_name: shared-vault image: vault:1.13.3 + pull_policy: if_not_present command: server -dev -dev-root-token-id=vaultsecret0123456789 -dev-listen-address=0.0.0.0:8200 environment: VAULT_ADDR: http://0.0.0.0:8200 - SKIP_SETCAP: true - SKIP_CHOWN: true + SKIP_SETCAP: "true" + SKIP_CHOWN: "true" healthcheck: test: ["CMD", "sh", "-c", "VAULT_ADDR=http://127.0.0.1:8200 vault status >/dev/null 2>&1"] interval: 4s @@ -79,6 +101,7 @@ services: vault-init: container_name: vault-init image: alpine:3.19 + pull_policy: if_not_present depends_on: shared-vault: condition: service_healthy @@ -95,7 +118,7 @@ services: consumer-idhub: container_name: consumer-idhub image: identityhub-dev:latest - pull_policy: missing + pull_policy: never depends_on: shared-postgres: condition: service_healthy @@ -131,7 +154,7 @@ services: provider-idhub: container_name: provider-idhub image: identityhub-dev:latest - pull_policy: missing + pull_policy: never depends_on: shared-postgres: condition: service_healthy @@ -167,7 +190,7 @@ services: consumer-controlplane: container_name: consumer-controlplane image: con-x-controlplane-postgresql-hashicorp-vault:latest - pull_policy: missing + pull_policy: never environment: - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 - tx.edc.postgresql.migration.asset.enabled=false @@ -228,6 +251,7 @@ services: consumer-dataplane: container_name: consumer-dataplane image: con-x-dataplane-postgresql-hashicorp-vault:latest + pull_policy: never environment: - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 - web.http.public.port=9500 @@ -270,7 +294,7 @@ services: provider-controlplane: container_name: provider-controlplane image: con-x-controlplane-postgresql-hashicorp-vault:latest - pull_policy: missing + pull_policy: never environment: - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 - tx.edc.postgresql.migration.asset.enabled=false @@ -332,6 +356,7 @@ services: provider-dataplane: container_name: provider-dataplane image: con-x-dataplane-postgresql-hashicorp-vault:latest + pull_policy: if_not_present environment: - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 - web.http.public.port=9500 From 8f65e13c7bbe8b443f09d037dadeb7ea72a49678 Mon Sep 17 00:00:00 2001 From: Ernst-Christoph Schrewe Date: Thu, 19 Feb 2026 16:30:07 +0100 Subject: [PATCH 6/6] fix: lessons learned from support cases --- .../edc-controlplane-construct-x/local/README.md | 7 +++++++ .../local/additional_config/vault-init.sh | 2 -- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/edc-controlplane/edc-controlplane-construct-x/local/README.md b/edc-controlplane/edc-controlplane-construct-x/local/README.md index c47ca28e34..72ccb8a0b7 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/README.md +++ b/edc-controlplane/edc-controlplane-construct-x/local/README.md @@ -98,6 +98,13 @@ are interested in a more detailed explanation of these interactions, please see the [EDC Samples](https://github.com/eclipse-edc/Samples/tree/main/transfer). +NOTE: The requests in the `transactions/consumer` folder are definitely not suited for being run in batch mode. Instead, +especially before you run the `InitiateNegotiation` or the `Get EDR` requests, it is strongly recommended that you make sure +that a healthy timespan (like 2 seconds) lies between them and the respective previous request. This is because the +EDC controlplane needs some time to complete the negotiation process respectively retrieve the EDR token from the provider side. + + +### Clean restart When you're done testing and want to end your session (using 'CTRL-C' on the terminal, where you started docker compose), you may want to run diff --git a/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh index 46ae80d087..996c237bba 100644 --- a/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh +++ b/edc-controlplane/edc-controlplane-construct-x/local/additional_config/vault-init.sh @@ -20,8 +20,6 @@ # SPDX-License-Identifier: Apache-2.0 # -set -euo pipefail - VAULT="${VAULT_ADDR:-http://shared-vault:8200}" TOKEN="${VAULT_TOKEN:?missing VAULT_TOKEN}"