diff --git a/.github/actions/publish-docker-image/action.yml b/.github/actions/publish-docker-image/action.yml index bf2e274ac..ad3d893a4 100644 --- a/.github/actions/publish-docker-image/action.yml +++ b/.github/actions/publish-docker-image/action.yml @@ -49,7 +49,7 @@ inputs: runs: using: "composite" steps: - - uses: actions/checkout@v3.3.0 + - uses: actions/checkout@v4 - name: Download OpenTelemetry shell: bash diff --git a/.github/actions/run-deployment-test/action.yml b/.github/actions/run-deployment-test/action.yml index a8dd85a18..eb7aa820e 100644 --- a/.github/actions/run-deployment-test/action.yml +++ b/.github/actions/run-deployment-test/action.yml @@ -48,7 +48,7 @@ inputs: runs: using: "composite" steps: - - uses: actions/checkout@v3.3.0 + - uses: actions/checkout@v4 - uses: ./.github/actions/setup-java - name: Setup Helm @@ -84,6 +84,10 @@ runs: shell: bash run: ${{ inputs.helm_command }} + - name: Print logs + if: failure() + shell: bash + run: kubectl get deployments | tail -n +2 | awk '{print $1}' | sed 's/^/deployment\//' | xargs -n1 kubectl logs ################# ### Tear Down ### diff --git a/.github/actions/setup-memory-runtime/action.yml b/.github/actions/setup-memory-runtime/action.yml index 303d2994b..c2969d0f8 100644 --- a/.github/actions/setup-memory-runtime/action.yml +++ b/.github/actions/setup-memory-runtime/action.yml @@ -49,7 +49,7 @@ runs: max_attempts: 3 command: | code=$(curl -IL -sw "%{http_code}" http://localhost:8181/api/check/health -o /dev/null) - if [ "$code" -ne "401" ]; then + if [ "$code" -ne "200" ]; then echo "TractusX EDC not ready yet, status = $code" docker logs dast-edc-runtime-1 exit 1; diff --git a/.github/workflows/draft-new-release.yaml b/.github/workflows/draft-new-release.yaml index 318011de0..af8f37d6a 100644 --- a/.github/workflows/draft-new-release.yaml +++ b/.github/workflows/draft-new-release.yaml @@ -54,7 +54,7 @@ jobs: GITHUB_PACKAGE_USERNAME: ${{ github.actor }} GITHUB_PACKAGE_PASSWORD: ${{ secrets.GITHUB_TOKEN }} - name: Bump version in /charts - uses: mikefarah/yq@v4.44.1 + uses: mikefarah/yq@v4.44.2 with: cmd: |- find charts -name Chart.yaml -maxdepth 3 | xargs -n1 yq -i '.appVersion = "${{ github.event.inputs.version }}" | .version = "${{ github.event.inputs.version }}"' diff --git a/.github/workflows/verify-dim.yaml b/.github/workflows/publish-context.yaml similarity index 59% rename from .github/workflows/verify-dim.yaml rename to .github/workflows/publish-context.yaml index 091c788f8..5705800da 100644 --- a/.github/workflows/verify-dim.yaml +++ b/.github/workflows/publish-context.yaml @@ -17,20 +17,33 @@ # SPDX-License-Identifier: Apache-2.0 ################################################################################# -name: "Verify DIM" + +--- +name: Publish JSON-LD context on: - schedule: - - cron: '0 0 * * *' - workflow_dispatch: + push: + branches: [main] + paths: + - 'core/json-ld-core/src/main/resources/document/**' jobs: - dim-integration-tests: + build: runs-on: ubuntu-latest + permissions: + contents: write + pages: write steps: - uses: actions/checkout@v4 + - name: copy contexts into public folder + run: | + mkdir -p public/context + cp core/json-ld-core/src/main/resources/document/tx-auth-v1.jsonld public/context/ + cp core/json-ld-core/src/main/resources/document/tx-v1.jsonld public/context/ - - uses: ./.github/actions/setup-java - - - name: Run DIM Integration tests - run: ./gradlew test -DincludeTags="DimIntegrationTest" \ No newline at end of file + - name: deploy to gh-pages + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./public + keep_files: true \ No newline at end of file diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index b3fdb049d..96ea5885d 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -58,7 +58,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@0.20.0 + uses: aquasecurity/trivy-action@0.23.0 with: scan-type: "config" # ignore-unfixed: true @@ -102,7 +102,7 @@ jobs: ## the next two steps will only execute if the image exists check was successful - name: Run Trivy vulnerability scanner if: success() && steps.imageCheck.outcome != 'failure' - uses: aquasecurity/trivy-action@0.20.0 + uses: aquasecurity/trivy-action@0.23.0 with: image-ref: "tractusx/${{ matrix.image }}:sha-${{ needs.git-sha7.outputs.value }}" format: "sarif" diff --git a/.github/workflows/upgradeability-test.yaml b/.github/workflows/upgradeability-test.yaml index 6d7741b9e..6e111793a 100644 --- a/.github/workflows/upgradeability-test.yaml +++ b/.github/workflows/upgradeability-test.yaml @@ -117,6 +117,11 @@ jobs: # execute the helm test helm test tx-prod + - name: Print logs + if: failure() + shell: bash + run: kubectl get deployments | tail -n +2 | awk '{print $1}' | sed 's/^/deployment\//' | xargs -n1 kubectl logs + - name: Destroy the kind cluster if: always() shell: bash diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 88bf8d850..e1fe8fbe9 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -77,6 +77,15 @@ jobs: run: | ./gradlew checkstyleMain checkstyleTest + verify-javadoc: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup-java + + - name: Run Javadoc + run: ./gradlew javadoc + unit-tests: runs-on: ubuntu-latest steps: @@ -128,7 +137,7 @@ jobs: - name: Run E2E tests (${{ matrix.variant.dir }}) run: | ./gradlew compileJava compileTestJava --refresh-dependencies - ./gradlew -p ${{ matrix.variant.dir }} test -DincludeTags="EndToEndTest" + ./gradlew -p ${{ matrix.variant.dir }} test -DincludeTags="EndToEndTest" -PverboseTest=true postgres-tests: runs-on: ubuntu-latest @@ -147,7 +156,7 @@ jobs: - name: Run Postgresql E2E tests run: ./gradlew test -DincludeTags="PostgresqlIntegrationTest" --refresh-dependencies - dataplane-tests: + cloud-transfer-tests: runs-on: ubuntu-latest steps: @@ -157,4 +166,4 @@ jobs: - name: Run Azure/S3 dataplane tests run: | ./gradlew compileJava compileTestJava - ./gradlew -p edc-tests/edc-dataplane test -DincludeTags="AzureCosmosDbIntegrationTest,AwsS3IntegrationTest" + ./gradlew -p edc-tests/edc-dataplane test -DincludeTags="CloudTransferTest" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7163eaf9b..f9cbd3448 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,31 +16,48 @@ Catena-X alliance focusing on parts traceability. * +## Project licenses + +The Tractus-X project uses the following licenses: + +* Apache-2.0 for code +* CC-BY-4.0 for non-code + +## Terms of Use + +This repository is subject to the Terms of Use of the Eclipse Foundation + +* https://www.eclipse.org/legal/termsofuse.php + ## Developer resources Information regarding source code management, builds, coding standards, and more. -* +* https://projects.eclipse.org/projects/automotive.tractusx/developer + +Getting started: + +* https://eclipse-tractusx.github.io/docs/developer The project maintains the source code repositories in the following GitHub organization: -* +* https://github.com/eclipse-tractusx/ ## Eclipse Development Process This Eclipse Foundation open project is governed by the Eclipse Foundation Development Process and operates under the terms of the Eclipse IP Policy. -* -* +* https://eclipse.org/projects/dev_process +* https://www.eclipse.org/org/documents/Eclipse_IP_Policy.pdf ## Eclipse Contributor Agreement In order to be able to contribute to Eclipse Foundation projects you must electronically sign the Eclipse Contributor Agreement (ECA). -* +* http://www.eclipse.org/legal/ECA.php The ECA provides the Eclipse Foundation with a permanent record that you agree that each of your contributions will comply with the commitments documented in @@ -49,10 +66,10 @@ the email address matching the "Author" field of your contribution's Git commits fulfills the DCO's requirement that you sign-off on your contributions. For more information, please see the Eclipse Committer Handbook: - +https://www.eclipse.org/projects/handbook/#resources-commit ## Contact Contact the project developers via the project's "dev" list. -* +* https://accounts.eclipse.org/mailing-list/tractusx-dev diff --git a/DEPENDENCIES b/DEPENDENCIES index 53bce631c..0693da7b6 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -4,21 +4,24 @@ maven/mavencentral/com.apicatalog/copper-multicodec/0.1.1, Apache-2.0, approved, maven/mavencentral/com.apicatalog/iron-ed25519-cryptosuite-2020/0.14.0, Apache-2.0, approved, #14503 maven/mavencentral/com.apicatalog/iron-verifiable-credentials/0.14.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.apicatalog/titanium-json-ld/1.0.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.apicatalog/titanium-json-ld/1.4.0, Apache-2.0, approved, #13683 +maven/mavencentral/com.apicatalog/titanium-json-ld/1.4.0, Apache-2.0, approved, #15200 maven/mavencentral/com.azure/azure-core-http-netty/1.13.11, MIT AND Apache-2.0, approved, #7948 -maven/mavencentral/com.azure/azure-core-http-netty/1.14.0, MIT AND Apache-2.0, approved, #13238 maven/mavencentral/com.azure/azure-core-http-netty/1.15.0, MIT, approved, clearlydefined +maven/mavencentral/com.azure/azure-core-http-netty/1.15.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-core/1.45.1, MIT AND Apache-2.0, approved, #11845 -maven/mavencentral/com.azure/azure-core/1.46.0, MIT AND Apache-2.0, approved, #13234 maven/mavencentral/com.azure/azure-core/1.49.0, MIT, approved, clearlydefined -maven/mavencentral/com.azure/azure-identity/1.11.2, MIT AND Apache-2.0, approved, #13237 +maven/mavencentral/com.azure/azure-core/1.49.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-identity/1.12.1, MIT AND Apache-2.0, approved, #14412 +maven/mavencentral/com.azure/azure-identity/1.13.0, , restricted, clearlydefined maven/mavencentral/com.azure/azure-json/1.1.0, MIT AND Apache-2.0, approved, #10547 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.3, MIT, approved, #10868 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.8.3, MIT, approved, #13690 -maven/mavencentral/com.azure/azure-storage-blob/12.25.2, MIT, approved, #13400 -maven/mavencentral/com.azure/azure-storage-common/12.24.2, MIT, approved, #13402 -maven/mavencentral/com.azure/azure-storage-internal-avro/12.10.2, MIT, approved, #13399 +maven/mavencentral/com.azure/azure-storage-blob/12.26.0, MIT, approved, clearlydefined +maven/mavencentral/com.azure/azure-storage-blob/12.26.1, MIT, approved, clearlydefined +maven/mavencentral/com.azure/azure-storage-common/12.25.0, MIT, approved, clearlydefined +maven/mavencentral/com.azure/azure-storage-common/12.25.1, MIT, approved, clearlydefined +maven/mavencentral/com.azure/azure-storage-internal-avro/12.11.0, MIT, approved, clearlydefined +maven/mavencentral/com.azure/azure-storage-internal-avro/12.11.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-xml/1.0.0, MIT, approved, #14410 maven/mavencentral/com.ethlo.time/itu/1.7.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.10.3, Apache-2.0, approved, CQ21280 @@ -36,11 +39,11 @@ maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.11.0, Apache-2. maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.4.2, Apache-2.0, approved, #2134 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.5, Apache-2.0, approved, #2134 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.0, Apache-2.0, approved, #4105 -maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.1, Apache-2.0, approved, #4105 +maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.1, Apache-2.0, approved, #15232 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.2, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.17.0, Apache-2.0, approved, #13671 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.17.1, Apache-2.0, approved, #13671 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.2, Apache-2.0, approved, #9160 +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.2, Apache-2.0, approved, #15241 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.17.1, Apache-2.0, approved, #14192 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.13.5, Apache-2.0, approved, #3768 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.17.1, Apache-2.0, approved, #13666 @@ -63,19 +66,19 @@ maven/mavencentral/com.fasterxml.uuid/java-uuid-generator/4.1.0, Apache-2.0, app maven/mavencentral/com.fasterxml.woodstox/woodstox-core/6.6.2, Apache-2.0, approved, #12789 maven/mavencentral/com.github.cliftonlabs/json-simple/3.0.2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.github.docker-java/docker-java-api/3.3.6, Apache-2.0, approved, #10346 -maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.3.6, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #7946 +maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.3.6, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #15251 maven/mavencentral/com.github.docker-java/docker-java-transport/3.3.6, Apache-2.0, approved, #7942 -maven/mavencentral/com.github.java-json-tools/btf/1.3, Apache-2.0 OR LGPL-3.0-or-later, approved, #2721 +maven/mavencentral/com.github.java-json-tools/btf/1.3, Apache-2.0 AND GPL-1.0-or-later AND LGPL-3.0-only AND Apache-2.0 AND LGPL-3.0-only, restricted, #15201 maven/mavencentral/com.github.java-json-tools/jackson-coreutils-equivalence/1.0, LGPL-3.0 OR Apache-2.0, approved, clearlydefined -maven/mavencentral/com.github.java-json-tools/jackson-coreutils/2.0, Apache-2.0 OR LGPL-3.0-or-later, approved, #2719 +maven/mavencentral/com.github.java-json-tools/jackson-coreutils/2.0, Apache-2.0 OR LGPL-3.0-or-later, approved, #15186 maven/mavencentral/com.github.java-json-tools/json-patch/1.13, Apache-2.0 OR LGPL-3.0-or-later, approved, CQ23929 -maven/mavencentral/com.github.java-json-tools/json-schema-core/1.2.14, Apache-2.0 OR LGPL-3.0-or-later, approved, #2722 +maven/mavencentral/com.github.java-json-tools/json-schema-core/1.2.14, Apache-2.0 AND LGPL-2.1-or-later AND LGPL-3.0-only AND (Apache-2.0 AND GPL-1.0-or-later AND LGPL-3.0-only) AND Apache-2.0 AND LGPL-3.0-only, restricted, #15282 maven/mavencentral/com.github.java-json-tools/json-schema-validator/2.2.14, Apache-2.0 OR LGPL-3.0-or-later, approved, CQ20779 -maven/mavencentral/com.github.java-json-tools/msg-simple/1.2, Apache-2.0 OR LGPL-3.0-or-later, approved, #2720 -maven/mavencentral/com.github.java-json-tools/uri-template/0.10, Apache-2.0 OR LGPL-3.0-only, approved, #2723 +maven/mavencentral/com.github.java-json-tools/msg-simple/1.2, Apache-2.0 AND LGPL-2.1-or-later AND LGPL-3.0-only AND (Apache-2.0 AND GPL-1.0-or-later AND LGPL-3.0-only) AND Apache-2.0 AND LGPL-3.0-only, restricted, #15239 +maven/mavencentral/com.github.java-json-tools/uri-template/0.10, Apache-2.0 AND LGPL-3.0-only AND (Apache-2.0 AND GPL-1.0-or-later AND LGPL-3.0-only), restricted, #15288 maven/mavencentral/com.github.stephenc.jcip/jcip-annotations/1.0-1, Apache-2.0, approved, CQ21949 maven/mavencentral/com.google.code.findbugs/jsr305/2.0.1, BSD-3-Clause AND CC-BY-2.5 AND LGPL-2.1+, approved, CQ13390 -maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, Apache-2.0, approved, #20 +maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, CC-BY-2.5, approved, #15220 maven/mavencentral/com.google.code.gson/gson/2.10.1, Apache-2.0, approved, #6159 maven/mavencentral/com.google.crypto.tink/tink/1.13.0, Apache-2.0, approved, #14502 maven/mavencentral/com.google.errorprone/error_prone_annotations/2.11.0, Apache-2.0, approved, clearlydefined @@ -87,7 +90,7 @@ maven/mavencentral/com.google.guava/guava/28.1-android, Apache-2.0, approved, cl maven/mavencentral/com.google.guava/guava/28.2-android, Apache-2.0 AND LicenseRef-Public-Domain, approved, CQ22437 maven/mavencentral/com.google.guava/guava/31.0.1-android, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.guava/guava/31.1-jre, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.google.guava/guava/33.1.0-jre, Apache-2.0 AND CC0-1.0, approved, #13675 +maven/mavencentral/com.google.guava/guava/33.2.0-jre, Apache-2.0 AND CC0-1.0 AND (Apache-2.0 AND CC-PDDC), approved, #14607 maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657 maven/mavencentral/com.google.j2objc/j2objc-annotations/1.3, Apache-2.0, approved, CQ21195 maven/mavencentral/com.google.protobuf/protobuf-java/3.25.1, BSD-3-Clause, approved, clearlydefined @@ -95,26 +98,20 @@ maven/mavencentral/com.googlecode.libphonenumber/libphonenumber/8.11.1, Apache-2 maven/mavencentral/com.jayway.jsonpath/json-path/2.7.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.jcraft/jzlib/1.1.3, BSD-2-Clause, approved, CQ6218 maven/mavencentral/com.lmax/disruptor/3.4.4, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.microsoft.azure/msal4j-persistence-extension/1.2.0, MIT, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j-persistence-extension/1.3.0, MIT, approved, #14411 -maven/mavencentral/com.microsoft.azure/msal4j/1.14.0, MIT, approved, #14159 maven/mavencentral/com.microsoft.azure/msal4j/1.15.0, MIT, approved, clearlydefined -maven/mavencentral/com.microsoft.azure/msal4j/1.4.0, MIT, approved, clearlydefined +maven/mavencentral/com.microsoft.azure/msal4j/1.15.1, MIT, approved, clearlydefined maven/mavencentral/com.networknt/json-schema-validator/1.0.76, Apache-2.0, approved, CQ22638 -maven/mavencentral/com.nimbusds/content-type/2.2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/content-type/2.3, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/lang-tag/1.7, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.28, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.30.2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.3, Apache-2.0, approved, #11701 -maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.38, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.39.1, Apache-2.0, approved, #14830 -maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/10.7.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.40, Apache-2.0, approved, #15156 maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/11.9.1, Apache-2.0, approved, #12667 -maven/mavencentral/com.puppycrawl.tools/checkstyle/10.16.0, LGPL-2.1-or-later AND (Apache-2.0 AND LGPL-2.1-or-later) AND Apache-2.0, approved, #14689 +maven/mavencentral/com.puppycrawl.tools/checkstyle/10.17.0, LGPL-2.1-or-later AND (Apache-2.0 AND LGPL-2.1-or-later) AND Apache-2.0, approved, #15077 maven/mavencentral/com.samskivert/jmustache/1.15, BSD-2-Clause, approved, clearlydefined maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.12.0, Apache-2.0, approved, #11159 -maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #11156 +maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #15227 maven/mavencentral/com.squareup.okhttp3/okhttp/4.9.3, Apache-2.0 AND MPL-2.0, approved, #3225 maven/mavencentral/com.squareup.okio/okio-jvm/3.6.0, Apache-2.0, approved, #11158 maven/mavencentral/com.squareup.okio/okio/3.6.0, Apache-2.0, approved, #11155 @@ -126,94 +123,103 @@ maven/mavencentral/commons-beanutils/commons-beanutils/1.8.3, Apache-2.0, approv maven/mavencentral/commons-beanutils/commons-beanutils/1.9.4, Apache-2.0, approved, CQ12654 maven/mavencentral/commons-codec/commons-codec/1.11, Apache-2.0 AND BSD-3-Clause, approved, CQ15971 maven/mavencentral/commons-codec/commons-codec/1.15, Apache-2.0 AND BSD-3-Clause AND LicenseRef-Public-Domain, approved, CQ22641 -maven/mavencentral/commons-collections/commons-collections/3.2.2, Apache-2.0, approved, CQ10385 +maven/mavencentral/commons-collections/commons-collections/3.2.2, Apache-2.0, approved, #15185 maven/mavencentral/commons-io/commons-io/2.11.0, Apache-2.0, approved, CQ23745 maven/mavencentral/commons-logging/commons-logging/1.1.1, Apache-2.0, approved, CQ1907 maven/mavencentral/commons-logging/commons-logging/1.2, Apache-2.0, approved, CQ10162 -maven/mavencentral/dev.failsafe/failsafe-okhttp/3.3.2, Apache-2.0, approved, #9178 +maven/mavencentral/dev.failsafe/failsafe-okhttp/3.3.2, Apache-2.0, approved, #15208 maven/mavencentral/dev.failsafe/failsafe/3.3.1, Apache-2.0, approved, #9268 maven/mavencentral/dev.failsafe/failsafe/3.3.2, Apache-2.0, approved, #9268 -maven/mavencentral/info.picocli/picocli/4.7.5, Apache-2.0, approved, #4365 +maven/mavencentral/info.picocli/picocli/4.7.6, Apache-2.0, approved, #4365 maven/mavencentral/io.github.classgraph/classgraph/4.8.154, MIT, approved, CQ22530 maven/mavencentral/io.github.classgraph/classgraph/4.8.165, MIT, approved, CQ22530 -maven/mavencentral/io.micrometer/micrometer-commons/1.13.0, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #14826 -maven/mavencentral/io.micrometer/micrometer-core/1.13.0, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #14827 -maven/mavencentral/io.micrometer/micrometer-observation/1.13.0, Apache-2.0, approved, #14829 -maven/mavencentral/io.netty/netty-buffer/4.1.101.Final, Apache-2.0, approved, CQ21842 +maven/mavencentral/io.micrometer/micrometer-commons/1.13.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #14826 +maven/mavencentral/io.micrometer/micrometer-core/1.13.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #14827 +maven/mavencentral/io.micrometer/micrometer-observation/1.13.1, Apache-2.0, approved, #14829 maven/mavencentral/io.netty/netty-buffer/4.1.107.Final, Apache-2.0, approved, CQ21842 maven/mavencentral/io.netty/netty-buffer/4.1.108.Final, Apache-2.0, approved, CQ21842 +maven/mavencentral/io.netty/netty-buffer/4.1.109.Final, Apache-2.0, approved, CQ21842 +maven/mavencentral/io.netty/netty-buffer/4.1.110.Final, Apache-2.0, approved, CQ21842 maven/mavencentral/io.netty/netty-buffer/4.1.86.Final, Apache-2.0, approved, CQ21842 -maven/mavencentral/io.netty/netty-codec-dns/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-dns/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-http/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-dns/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-http/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-http/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-http2/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http2/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http2/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-http2/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-http2/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http2/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-socks/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-socks/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-socks/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-socks/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-common/4.1.101.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 maven/mavencentral/io.netty/netty-common/4.1.107.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 maven/mavencentral/io.netty/netty-common/4.1.108.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 +maven/mavencentral/io.netty/netty-common/4.1.109.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 +maven/mavencentral/io.netty/netty-common/4.1.110.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 maven/mavencentral/io.netty/netty-common/4.1.86.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 -maven/mavencentral/io.netty/netty-handler-proxy/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler-proxy/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler-proxy/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-handler-proxy/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-handler-proxy/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler-proxy/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-handler/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-handler/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-handler/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.101.Final, Apache-2.0, approved, #6367 maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.107.Final, Apache-2.0, approved, #6367 -maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.101.Final, Apache-2.0, approved, #7004 +maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.109.Final, Apache-2.0, approved, #6367 maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.107.Final, Apache-2.0, approved, #7004 -maven/mavencentral/io.netty/netty-resolver-dns/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.109.Final, Apache-2.0, approved, #7004 maven/mavencentral/io.netty/netty-resolver-dns/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-resolver/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-resolver-dns/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-resolver/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-resolver/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-tcnative-boringssl-static/2.0.56.Final, Apache-2.0 OR LicenseRef-Public-Domain OR BSD-2-Clause OR MIT, approved, CQ15280 -maven/mavencentral/io.netty/netty-tcnative-boringssl-static/2.0.62.Final, Apache-2.0 OR LicenseRef-Public-Domain OR BSD-2-Clause OR MIT, approved, CQ15280 maven/mavencentral/io.netty/netty-tcnative-boringssl-static/2.0.65.Final, Apache-2.0 OR LicenseRef-Public-Domain OR BSD-2-Clause OR MIT, approved, CQ15280 maven/mavencentral/io.netty/netty-tcnative-classes/2.0.56.Final, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.netty/netty-tcnative-classes/2.0.62.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/io.netty/netty-tcnative-classes/2.0.65.Final, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.101.Final, Apache-2.0, approved, #6366 maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.108.Final, Apache-2.0, approved, #6366 -maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.101.Final, Apache-2.0, approved, #4107 +maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.110.Final, Apache-2.0, approved, #6366 maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.108.Final, Apache-2.0, approved, #4107 -maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.110.Final, Apache-2.0, approved, #4107 maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport/4.1.107.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport/4.1.108.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport/4.1.109.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport/4.1.110.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport/4.1.86.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.opentelemetry.instrumentation/opentelemetry-instrumentation-annotations/1.32.0, Apache-2.0, approved, #11684 maven/mavencentral/io.opentelemetry/opentelemetry-api/1.32.0, Apache-2.0, approved, #11682 maven/mavencentral/io.opentelemetry/opentelemetry-context/1.32.0, Apache-2.0, approved, #11683 -maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.40, Apache-2.0, approved, #9687 maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.43, Apache-2.0, approved, #9687 -maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.40, Apache-2.0, approved, #11661 +maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.45, Apache-2.0, approved, #9687 maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.43, Apache-2.0, approved, #11661 -maven/mavencentral/io.projectreactor/reactor-core/3.4.34, Apache-2.0, approved, #7517 +maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.45, Apache-2.0, approved, #11661 maven/mavencentral/io.projectreactor/reactor-core/3.4.36, Apache-2.0, approved, #7517 +maven/mavencentral/io.projectreactor/reactor-core/3.4.38, Apache-2.0, approved, #7517 maven/mavencentral/io.prometheus/simpleclient/0.16.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.prometheus/simpleclient_common/0.16.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.prometheus/simpleclient_httpserver/0.16.0, Apache-2.0, approved, clearlydefined @@ -222,7 +228,7 @@ maven/mavencentral/io.prometheus/simpleclient_tracer_otel/0.16.0, Apache-2.0, ap maven/mavencentral/io.prometheus/simpleclient_tracer_otel_agent/0.16.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.rest-assured/json-path/5.4.0, Apache-2.0, approved, #12042 maven/mavencentral/io.rest-assured/rest-assured-common/5.4.0, Apache-2.0, approved, #12039 -maven/mavencentral/io.rest-assured/rest-assured/5.4.0, Apache-2.0, approved, #12040 +maven/mavencentral/io.rest-assured/rest-assured/5.4.0, Apache-2.0, approved, #15190 maven/mavencentral/io.rest-assured/xml-path/5.4.0, Apache-2.0, approved, #12038 maven/mavencentral/io.setl/rdf-urdna/1.1, Apache-2.0, approved, clearlydefined maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.21, Apache-2.0, approved, #5947 @@ -272,15 +278,14 @@ maven/mavencentral/junit/junit/4.13.2, EPL-2.0, approved, CQ23636 maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.1, Apache-2.0, approved, #7164 maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.15, Apache-2.0, approved, #7164 maven/mavencentral/net.bytebuddy/byte-buddy/1.14.1, Apache-2.0 AND BSD-3-Clause, approved, #7163 -maven/mavencentral/net.bytebuddy/byte-buddy/1.14.11, Apache-2.0 AND BSD-3-Clause, approved, #7163 maven/mavencentral/net.bytebuddy/byte-buddy/1.14.15, Apache-2.0 AND BSD-3-Clause, approved, #7163 +maven/mavencentral/net.bytebuddy/byte-buddy/1.14.16, Apache-2.0 AND BSD-3-Clause, approved, #7163 maven/mavencentral/net.java.dev.jna/jna-platform/5.13.0, Apache-2.0 OR LGPL-2.1-or-later, approved, #6707 maven/mavencentral/net.java.dev.jna/jna-platform/5.6.0, Apache-2.0 OR LGPL-2.1-or-later, approved, CQ22390 -maven/mavencentral/net.java.dev.jna/jna/5.13.0, Apache-2.0 AND LGPL-2.1-or-later, approved, #6709 +maven/mavencentral/net.java.dev.jna/jna/5.13.0, Apache-2.0 AND LGPL-2.1-or-later, approved, #15196 maven/mavencentral/net.javacrumbs.json-unit/json-unit-core/2.36.0, Apache-2.0, approved, clearlydefined maven/mavencentral/net.minidev/accessors-smart/2.4.7, Apache-2.0, approved, #7515 maven/mavencentral/net.minidev/accessors-smart/2.5.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/net.minidev/json-smart/2.4.10, Apache-2.0, approved, #3288 maven/mavencentral/net.minidev/json-smart/2.4.7, Apache-2.0, approved, #3288 maven/mavencentral/net.minidev/json-smart/2.5.0, Apache-2.0, approved, clearlydefined maven/mavencentral/net.minidev/json-smart/2.5.1, Apache-2.0, approved, clearlydefined @@ -305,7 +310,7 @@ maven/mavencentral/org.apache.groovy/groovy/4.0.16, Apache-2.0 AND BSD-3-Clause maven/mavencentral/org.apache.httpcomponents.client5/httpclient5/5.1.3, Apache-2.0, approved, #6276 maven/mavencentral/org.apache.httpcomponents.core5/httpcore5-h2/5.1.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.httpcomponents.core5/httpcore5/5.1.3, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.apache.httpcomponents/httpclient/4.5.13, Apache-2.0 AND LicenseRef-Public-Domain, approved, CQ23527 +maven/mavencentral/org.apache.httpcomponents/httpclient/4.5.13, Apache-2.0, approved, #15248 maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.13, Apache-2.0, approved, CQ23528 maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.14, Apache-2.0, approved, CQ23528 maven/mavencentral/org.apache.httpcomponents/httpmime/4.5.13, Apache-2.0, approved, CQ11718 @@ -318,7 +323,7 @@ maven/mavencentral/org.apache.velocity/velocity-engine-core/2.3, Apache-2.0, app maven/mavencentral/org.apache.velocity/velocity-engine-scripting/2.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.xbean/xbean-reflect/3.7, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.assertj/assertj-core/3.25.3, Apache-2.0, approved, #12585 +maven/mavencentral/org.assertj/assertj-core/3.26.0, Apache-2.0, approved, #14886 maven/mavencentral/org.awaitility/awaitility/4.2.1, Apache-2.0, approved, #14178 maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.72, MIT, approved, #3789 maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.78.1, MIT, approved, #14434 @@ -329,6 +334,7 @@ maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.78.1, MIT, approved, #14435 maven/mavencentral/org.ccil.cowan.tagsoup/tagsoup/1.2.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.42.0, MIT, approved, clearlydefined +maven/mavencentral/org.checkerframework/checker-qual/3.43.0, MIT, approved, clearlydefined maven/mavencentral/org.codehaus.plexus/plexus-classworlds/2.6.0, Apache-2.0 AND Plexus, approved, CQ22821 maven/mavencentral/org.codehaus.plexus/plexus-component-annotations/2.1.0, Apache-2.0, approved, #809 maven/mavencentral/org.codehaus.plexus/plexus-container-default/2.1.0, Apache-2.0, approved, clearlydefined @@ -336,188 +342,204 @@ maven/mavencentral/org.codehaus.plexus/plexus-utils/3.1.1, , approved, CQ16492 maven/mavencentral/org.codehaus.plexus/plexus-utils/3.3.0, , approved, CQ21066 maven/mavencentral/org.codehaus.woodstox/stax2-api/4.2.2, BSD-2-Clause, approved, #2670 maven/mavencentral/org.eclipse.angus/angus-activation/1.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.angus -maven/mavencentral/org.eclipse.edc/accesstoken-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/accesstokendata-store-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/api-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/api-observability/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-index-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/autodoc-processor/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-test/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-blob-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-test/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/boot-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/boot-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/boot/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-static-endpoint/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/connector-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-api-configuration/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-catalog/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-contract/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-policies-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-transfer/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-transform/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/credential-query-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/crypto-common-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-client-embedded/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-public-api-v2/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-signaling-api-configuration/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-signaling-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-signaling-client/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-signaling-transform/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-store-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-util/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/did-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-api-configuration/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-version-http-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/edr-index-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/edr-store-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/edr-store-receiver/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/edr-store-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/iam-mock/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-web/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-did/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-keypairs/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-participants/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-service/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-client/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/junit-base/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/junit/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jws2020-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/keypair-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/keypair-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/keys-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/keys-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-configuration/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/micrometer-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-client/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/participant-context-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-evaluator-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/presentation-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/query-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/secrets-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-lease/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/state-machine-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/store-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/token-core/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/token-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-local/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-signaling/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-api/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-azure/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/verifiable-credential-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/verifiable-credentials-spi/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/verifiable-credentials/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/verifiable-presentation-lib/0.7.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/web-spi/0.7.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc.aws/aws-s3-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc.aws/aws-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc.aws/data-plane-aws-s3/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc.azure/azure-blob-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc.azure/data-plane-azure-storage/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc.azure/vault-azure/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/accesstoken-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/accesstokendata-store-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-observability/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-index-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/autodoc-processor/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-static-endpoint/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/connector-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-api-configuration/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-catalog/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-contract/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-policies-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-transfer/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-transform/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/credential-query-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/crypto-common-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-client-embedded/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-public-api-v2/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-client/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-control-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-self-registration/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-signaling-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-signaling-client/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-signaling-transform/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-store-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-util/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-util/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/did-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-http-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-api-configuration/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-version-http-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/edr-index-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/edr-store-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/edr-store-receiver/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/edr-store-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/iam-mock/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-web/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-did/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-keypairs/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-participants/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-service/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-client/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-providers-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/junit-base/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/junit/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jws2020-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/keypair-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/keypair-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/keys-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/keys-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-configuration/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/micrometer-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-client/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/participant-context-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-evaluator-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/presentation-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/query-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/secrets-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-lease/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/state-machine-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/store-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-core/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-local/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane-signaling/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-api/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util-lib/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-spi/0.7.1-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/verifiable-credential-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/verifiable-credentials-spi/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/verifiable-credentials/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/verifiable-presentation-lib/0.7.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/web-spi/0.7.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.21, EPL-2.0 OR Apache-2.0, approved, rt.jetty @@ -540,28 +562,29 @@ maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.21, EPL-2.0 OR Apache-2. maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.21, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.21, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.21, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.flywaydb/flyway-core/10.13.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.flywaydb/flyway-database-postgresql/10.13.0, , restricted, clearlydefined +maven/mavencentral/org.eclipse.parsson/parsson/1.1.6, EPL-2.0, approved, ee4j.parsson +maven/mavencentral/org.flywaydb/flyway-core/10.15.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.flywaydb/flyway-database-postgresql/10.15.0, NOASSERTION, restricted, clearlydefined maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish maven/mavencentral/org.glassfish.hk2/hk2-locator/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish maven/mavencentral/org.glassfish.hk2/hk2-utils/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish maven/mavencentral/org.glassfish.hk2/osgi-resource-locator/1.0.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.7, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish/jakarta.json/2.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp maven/mavencentral/org.hamcrest/hamcrest-core/1.3, BSD-2-Clause, approved, CQ11429 maven/mavencentral/org.hamcrest/hamcrest-core/2.2, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.hamcrest/hamcrest/2.1, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.hamcrest/hamcrest/2.2, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/org.hdrhistogram/HdrHistogram/2.2.1, BSD-2-Clause AND CC0-1.0 AND CC0-1.0, approved, #14828 +maven/mavencentral/org.hdrhistogram/HdrHistogram/2.2.2, BSD-2-Clause AND CC0-1.0 AND CC0-1.0, approved, #14828 maven/mavencentral/org.jacoco/org.jacoco.agent/0.8.9, EPL-2.0, approved, CQ23285 maven/mavencentral/org.jacoco/org.jacoco.ant/0.8.9, EPL-2.0, approved, #1068 maven/mavencentral/org.jacoco/org.jacoco.core/0.8.9, EPL-2.0, approved, CQ23283 @@ -581,15 +604,15 @@ maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.1, EPL-2.0, approved maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.2, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.1, EPL-2.0, approved, #9711 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.2, EPL-2.0, approved, #9711 -maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.1, EPL-2.0, approved, #9708 -maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.2, EPL-2.0, approved, #9708 +maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.1, EPL-2.0, approved, #15304 +maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.2, EPL-2.0, approved, #15250 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.2, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.2, EPL-2.0, approved, #9709 -maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.2, EPL-2.0, approved, #9704 +maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.2, EPL-2.0, approved, #15216 maven/mavencentral/org.junit/junit-bom/5.10.2, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711 maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, CQ21484 -maven/mavencentral/org.latencyutils/LatencyUtils/2.0.3, BSD-2-Clause, approved, CQ17408 +maven/mavencentral/org.latencyutils/LatencyUtils/2.0.3, CC0-1.0, approved, #15280 maven/mavencentral/org.mock-server/mockserver-client-java/5.15.0, Apache-2.0 AND LGPL-3.0-only, approved, #9324 maven/mavencentral/org.mock-server/mockserver-core/5.15.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.mock-server/mockserver-netty/5.15.0, Apache-2.0, approved, #9276 @@ -606,7 +629,6 @@ maven/mavencentral/org.ow2.asm/asm/9.1, BSD-3-Clause, approved, CQ23029 maven/mavencentral/org.ow2.asm/asm/9.5, BSD-3-Clause, approved, #7554 maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776 maven/mavencentral/org.ow2.asm/asm/9.7, BSD-3-Clause, approved, #14076 -maven/mavencentral/org.postgresql/postgresql/42.7.2, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.postgresql/postgresql/42.7.3, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.reactivestreams/reactive-streams/1.0.4, CC0-1.0, approved, CQ16332 maven/mavencentral/org.reflections/reflections/0.10.2, Apache-2.0 AND WTFPL, approved, clearlydefined @@ -631,59 +653,61 @@ maven/mavencentral/org.xmlunit/xmlunit-core/2.9.1, Apache-2.0, approved, #6272 maven/mavencentral/org.xmlunit/xmlunit-placeholders/2.9.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.yaml/snakeyaml/1.33, Apache-2.0, approved, clearlydefined maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 -maven/mavencentral/software.amazon.awssdk/annotations/2.25.48, Apache-2.0, approved, #13691 -maven/mavencentral/software.amazon.awssdk/annotations/2.25.55, Apache-2.0, approved, #13691 -maven/mavencentral/software.amazon.awssdk/apache-client/2.25.48, Apache-2.0, approved, #13687 -maven/mavencentral/software.amazon.awssdk/apache-client/2.25.55, Apache-2.0, approved, #13687 -maven/mavencentral/software.amazon.awssdk/arns/2.25.48, Apache-2.0, approved, #13695 -maven/mavencentral/software.amazon.awssdk/arns/2.25.55, Apache-2.0, approved, #13695 -maven/mavencentral/software.amazon.awssdk/auth/2.25.48, Apache-2.0, approved, #13692 -maven/mavencentral/software.amazon.awssdk/auth/2.25.55, Apache-2.0, approved, #13692 -maven/mavencentral/software.amazon.awssdk/aws-core/2.25.48, Apache-2.0, approved, #13702 -maven/mavencentral/software.amazon.awssdk/aws-core/2.25.55, Apache-2.0, approved, #13702 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.25.48, Apache-2.0, approved, #13701 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.25.55, Apache-2.0, approved, #13701 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.25.48, Apache-2.0, approved, #13684 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.25.55, Apache-2.0, approved, #13684 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.25.48, Apache-2.0, approved, #13686 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.25.55, Apache-2.0, approved, #13686 -maven/mavencentral/software.amazon.awssdk/checksums/2.25.48, Apache-2.0, approved, #13677 -maven/mavencentral/software.amazon.awssdk/checksums/2.25.55, Apache-2.0, approved, #13677 -maven/mavencentral/software.amazon.awssdk/crt-core/2.25.48, Apache-2.0, approved, #13705 -maven/mavencentral/software.amazon.awssdk/crt-core/2.25.55, Apache-2.0, approved, #13705 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.25.48, Apache-2.0, approved, #13681 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.25.55, Apache-2.0, approved, #13681 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.25.48, Apache-2.0, approved, #13696 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.25.55, Apache-2.0, approved, #13696 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.25.48, Apache-2.0, approved, #13704 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.25.55, Apache-2.0, approved, #13704 -maven/mavencentral/software.amazon.awssdk/http-auth/2.25.48, Apache-2.0, approved, #13682 -maven/mavencentral/software.amazon.awssdk/http-auth/2.25.55, Apache-2.0, approved, #13682 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.25.48, Apache-2.0, approved, #13706 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.25.55, Apache-2.0, approved, #13706 -maven/mavencentral/software.amazon.awssdk/iam/2.25.48, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.awssdk/identity-spi/2.25.48, Apache-2.0, approved, #13685 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.25.55, Apache-2.0, approved, #13685 -maven/mavencentral/software.amazon.awssdk/json-utils/2.25.48, Apache-2.0, approved, #13698 -maven/mavencentral/software.amazon.awssdk/json-utils/2.25.55, Apache-2.0, approved, #13698 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.25.48, Apache-2.0, approved, #13680 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.25.55, Apache-2.0, approved, #13680 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.25.48, Apache-2.0, approved, #13693 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.25.55, Apache-2.0, approved, #13693 -maven/mavencentral/software.amazon.awssdk/profiles/2.25.48, Apache-2.0, approved, #13697 -maven/mavencentral/software.amazon.awssdk/profiles/2.25.55, Apache-2.0, approved, #13697 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.25.48, Apache-2.0, approved, #13679 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.25.55, Apache-2.0, approved, #13679 -maven/mavencentral/software.amazon.awssdk/regions/2.25.48, Apache-2.0, approved, #13694 -maven/mavencentral/software.amazon.awssdk/regions/2.25.55, Apache-2.0, approved, #13694 -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.25.55, Apache-2.0, approved, #13699 -maven/mavencentral/software.amazon.awssdk/s3/2.25.48, Apache-2.0, approved, #13688 -maven/mavencentral/software.amazon.awssdk/s3/2.25.55, Apache-2.0, approved, #13688 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.25.48, Apache-2.0, approved, #13700 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.25.55, Apache-2.0, approved, #13700 -maven/mavencentral/software.amazon.awssdk/sts/2.25.48, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.25.48, Apache-2.0, approved, #13703 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.25.55, Apache-2.0, approved, #13703 -maven/mavencentral/software.amazon.awssdk/utils/2.25.48, Apache-2.0, approved, #13689 -maven/mavencentral/software.amazon.awssdk/utils/2.25.55, Apache-2.0, approved, #13689 +maven/mavencentral/software.amazon.awssdk/annotations/2.25.66, Apache-2.0, approved, #13691 +maven/mavencentral/software.amazon.awssdk/annotations/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/apache-client/2.25.66, Apache-2.0, approved, #13687 +maven/mavencentral/software.amazon.awssdk/apache-client/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/arns/2.25.66, Apache-2.0, approved, #13695 +maven/mavencentral/software.amazon.awssdk/arns/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/auth/2.25.66, Apache-2.0, approved, #13692 +maven/mavencentral/software.amazon.awssdk/auth/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-core/2.25.66, Apache-2.0, approved, #13702 +maven/mavencentral/software.amazon.awssdk/aws-core/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.25.66, Apache-2.0, approved, #13701 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.25.66, Apache-2.0, approved, #13684 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.25.66, Apache-2.0, approved, #13686 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums/2.25.66, Apache-2.0, approved, #13677 +maven/mavencentral/software.amazon.awssdk/checksums/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/crt-core/2.25.66, Apache-2.0, approved, #13705 +maven/mavencentral/software.amazon.awssdk/crt-core/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.25.66, Apache-2.0, approved, #13681 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.25.66, Apache-2.0, approved, #13696 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.25.66, Apache-2.0, approved, #13704 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth/2.25.66, Apache-2.0, approved, #13682 +maven/mavencentral/software.amazon.awssdk/http-auth/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.25.66, Apache-2.0, approved, #13706 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/iam/2.25.66, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.25.66, Apache-2.0, approved, #13685 +maven/mavencentral/software.amazon.awssdk/identity-spi/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/json-utils/2.25.66, Apache-2.0, approved, #13698 +maven/mavencentral/software.amazon.awssdk/json-utils/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.25.66, Apache-2.0, approved, #13680 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.25.66, Apache-2.0, approved, #13693 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/profiles/2.25.66, Apache-2.0, approved, #13697 +maven/mavencentral/software.amazon.awssdk/profiles/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/protocol-core/2.25.66, Apache-2.0, approved, #13679 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/regions/2.25.66, Apache-2.0, approved, #13694 +maven/mavencentral/software.amazon.awssdk/regions/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/retries-spi/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/retries/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.26.7, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.25.66, Apache-2.0, approved, #13688 +maven/mavencentral/software.amazon.awssdk/s3/2.26.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/sdk-core/2.25.66, Apache-2.0, approved, #13700 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.26.7, Apache-2.0, restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sts/2.25.66, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.25.66, Apache-2.0, approved, #13703 +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.26.7, Apache-2.0 AND BSD-2-Clause, restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/utils/2.25.66, Apache-2.0, approved, #13689 +maven/mavencentral/software.amazon.awssdk/utils/2.26.7, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/LICENSE_non-code b/LICENSE_non-code new file mode 100644 index 000000000..8e4d8772c --- /dev/null +++ b/LICENSE_non-code @@ -0,0 +1,395 @@ +Creative Commons Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/NOTICE.md b/NOTICE.md index bd0807935..b09dae9cf 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -18,12 +18,19 @@ source code repository logs. ## Declared Project Licenses -This program and the accompanying materials are made available under the terms -of the Apache License, Version 2.0 which is available at -. +The Tractus-X project uses the following licenses: +- Apache-2.0 for code +- CC-BY-4.0 for non-code + +Apache-2.0: +This program and the accompanying materials are made available under the terms of the Apache License, Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0. SPDX-License-Identifier: Apache-2.0 +CC-BY-4.0: +The materials in this repository are made available under the terms of the Creative Commons Attribution 4.0 International License, which is available at https://spdx.org/licenses/CC-BY-4.0.html. +SPDX-License-Identifier: CC-BY-4.0 + ## Source Code The project maintains the following source code repositories diff --git a/charts/tractusx-connector-azure-vault/Chart.yaml b/charts/tractusx-connector-azure-vault/Chart.yaml index 359b7a4d4..4b5e2ad87 100644 --- a/charts/tractusx-connector-azure-vault/Chart.yaml +++ b/charts/tractusx-connector-azure-vault/Chart.yaml @@ -42,14 +42,13 @@ type: application # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.7.2 +version: 0.7.3 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.7.2" - +appVersion: "0.7.3" home: https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector sources: - https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector diff --git a/charts/tractusx-connector-azure-vault/README.md b/charts/tractusx-connector-azure-vault/README.md index 73bbef67b..7abd3a3e0 100644 --- a/charts/tractusx-connector-azure-vault/README.md +++ b/charts/tractusx-connector-azure-vault/README.md @@ -1,6 +1,6 @@ # tractusx-connector-azure-vault -![Version: 0.7.2](https://img.shields.io/badge/Version-0.7.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.7.2](https://img.shields.io/badge/AppVersion-0.7.2-informational?style=flat-square) +![Version: 0.7.3](https://img.shields.io/badge/Version-0.7.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.7.3](https://img.shields.io/badge/AppVersion-0.7.3-informational?style=flat-square) A Helm chart for Tractus-X Eclipse Data Space Connector. The connector deployment consists of two runtime consists of a Control Plane and a Data Plane. Note that _no_ external dependencies such as a PostgreSQL database and Azure KeyVault are included. @@ -44,7 +44,7 @@ Combined, run this shell command to start the in-memory Tractus-X EDC runtime: ```shell helm repo add tractusx-edc https://eclipse-tractusx.github.io/charts/dev -helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0.7.2 \ +helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0.7.3 \ -f /tractusx-connector-azure-vault-test.yaml \ --set vault.azure.name=$AZURE_VAULT_NAME \ --set vault.azure.client=$AZURE_CLIENT_ID \ @@ -66,18 +66,17 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | Key | Type | Default | Description | |-----|------|---------|-------------| -| controlplane.affinity | object | `{}` | | +| controlplane.affinity | object | `{}` | [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on | | controlplane.autoscaling.enabled | bool | `false` | Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | | controlplane.autoscaling.maxReplicas | int | `100` | Maximum replicas if resource consumption exceeds resource threshholds | | controlplane.autoscaling.minReplicas | int | `1` | Minimal replicas if resource consumption falls below resource threshholds | | controlplane.autoscaling.targetCPUUtilizationPercentage | int | `80` | targetAverageUtilization of cpu provided to a pod | | controlplane.autoscaling.targetMemoryUtilizationPercentage | int | `80` | targetAverageUtilization of memory provided to a pod | -| controlplane.bdrs.cache_validity_seconds | int | `600` | | -| controlplane.bdrs.server.url | string | `nil` | | -| controlplane.businessPartnerValidation.log.agreementValidation | bool | `true` | | -| controlplane.debug.enabled | bool | `false` | | -| controlplane.debug.port | int | `1044` | | -| controlplane.debug.suspendOnStart | bool | `false` | | +| controlplane.bdrs.cache_validity_seconds | int | `600` | Time that a cached BPN/DID resolution map is valid in seconds, default is 600 seconds (10 min) | +| controlplane.bdrs.server.url | string | `nil` | URL of the BPN/DID Resolution Service | +| controlplane.debug.enabled | bool | `false` | Enables java debugging mode. | +| controlplane.debug.port | int | `1044` | Port where the debuggee can connect to. | +| controlplane.debug.suspendOnStart | bool | `false` | Defines if the JVM should wait with starting the application until someone connected to the debugging port. | | controlplane.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"metrics":{"path":"/metrics","port":9090},"protocol":{"path":"/api/v1/dsp","port":8084}}` | endpoints of the control plane | | controlplane.endpoints.control | object | `{"path":"/control","port":8083}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | | controlplane.endpoints.control.path | string | `"/control"` | path for incoming api calls | @@ -86,7 +85,7 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | controlplane.endpoints.default.path | string | `"/api"` | path for incoming api calls | | controlplane.endpoints.default.port | int | `8080` | port for incoming api calls | | controlplane.endpoints.management | object | `{"authKey":"password","path":"/management","port":8081}` | data management api, used by internal users, can be added to an ingress and must not be internet facing | -| controlplane.endpoints.management.authKey | string | `"password"` | authentication key, must be attached to each 'X-Api-Key' request header | +| controlplane.endpoints.management.authKey | string | `"password"` | authentication key, must be attached to each request as `X-Api-Key` header | | controlplane.endpoints.management.path | string | `"/management"` | path for incoming api calls | | controlplane.endpoints.management.port | int | `8081` | port for incoming api calls | | controlplane.endpoints.metrics | object | `{"path":"/metrics","port":9090}` | metrics api, used for application metrics, must not be internet facing | @@ -96,9 +95,9 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | controlplane.endpoints.protocol.path | string | `"/api/v1/dsp"` | path for incoming api calls | | controlplane.endpoints.protocol.port | int | `8084` | port for incoming api calls | | controlplane.env | object | `{}` | | -| controlplane.envConfigMapNames | list | `[]` | | -| controlplane.envSecretNames | list | `[]` | | -| controlplane.envValueFrom | object | `{}` | | +| controlplane.envConfigMapNames | list | `[]` | [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from | +| controlplane.envSecretNames | list | `[]` | [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from | +| controlplane.envValueFrom | object | `{}` | "valueFrom" environment variable references that will be added to deployment pods. Name is templated. ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core | | controlplane.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | | controlplane.image.repository | string | `""` | Which derivate of the control plane to use. when left empty the deployment will select the correct image automatically | | controlplane.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion | @@ -123,8 +122,6 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | controlplane.ingresses[1].tls.enabled | bool | `false` | Enables TLS on the ingress resource | | controlplane.ingresses[1].tls.secretName | string | `""` | If present overwrites the default secret name | | controlplane.initContainers | list | `[]` | | -| controlplane.limits.cpu | float | `1.5` | | -| controlplane.limits.memory | string | `"512Mi"` | | | controlplane.livenessProbe.enabled | bool | `true` | Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | | controlplane.livenessProbe.failureThreshold | int | `6` | when a probe fails kubernetes will try 6 times before giving up | | controlplane.livenessProbe.initialDelaySeconds | int | `30` | seconds to wait before performing the first liveness check | @@ -132,7 +129,7 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | controlplane.livenessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | controlplane.livenessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | controlplane.logging | string | `".level=INFO\norg.eclipse.edc.level=ALL\nhandlers=java.util.logging.ConsoleHandler\njava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter\njava.util.logging.ConsoleHandler.level=ALL\njava.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n"` | configuration of the [Java Util Logging Facade](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) | -| controlplane.nodeSelector | object | `{}` | | +| controlplane.nodeSelector | object | `{}` | [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes | | controlplane.opentelemetry | string | `"otel.javaagent.enabled=false\notel.javaagent.debug=false"` | configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics | | controlplane.podAnnotations | object | `{}` | additional annotations for the pod | | controlplane.podLabels | object | `{}` | additional labels for the pod | @@ -148,24 +145,27 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | controlplane.readinessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | controlplane.readinessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | controlplane.replicaCount | int | `1` | | -| controlplane.requests.cpu | string | `"500m"` | | -| controlplane.requests.memory | string | `"128Mi"` | | -| controlplane.resources | object | `{}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| controlplane.resources | object | `{"limits":{"cpu":1.5,"memory":"1024Mi"},"requests":{"cpu":"500m","memory":"1024Mi"}}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| controlplane.resources.limits.cpu | float | `1.5` | Maximum CPU limit | +| controlplane.resources.limits.memory | string | `"1024Mi"` | Maximum memory limit | +| controlplane.resources.requests.cpu | string | `"500m"` | Initial CPU request | +| controlplane.resources.requests.memory | string | `"1024Mi"` | Initial memory request | | controlplane.securityContext.allowPrivilegeEscalation | bool | `false` | Controls [Privilege Escalation](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privilege-escalation) enabling setuid binaries changing the effective user ID | | controlplane.securityContext.capabilities.add | list | `[]` | Specifies which capabilities to add to issue specialized syscalls | | controlplane.securityContext.capabilities.drop | list | `["ALL"]` | Specifies which capabilities to drop to reduce syscall attack surface | | controlplane.securityContext.readOnlyRootFilesystem | bool | `true` | Whether the root filesystem is mounted in read-only mode | | controlplane.securityContext.runAsNonRoot | bool | `true` | Requires the container to run without root privileges | | controlplane.securityContext.runAsUser | int | `10001` | The container's process will run with the specified uid | -| controlplane.service.annotations | object | `{}` | | +| controlplane.service.annotations | object | `{}` | additional annotations for the service | +| controlplane.service.labels | object | `{}` | additional labels for the service | | controlplane.service.type | string | `"ClusterIP"` | [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. | -| controlplane.tolerations | list | `[]` | | +| controlplane.tolerations | list | `[]` | [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes | | controlplane.url.protocol | string | `""` | Explicitly declared url for reaching the dsp api (e.g. if ingresses not used) | | controlplane.volumeMounts | string | `nil` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | | controlplane.volumes | string | `nil` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | customCaCerts | object | `{}` | Add custom ca certificates to the truststore | -| customLabels | object | `{}` | To add some custom labels | -| dataplane.affinity | object | `{}` | | +| customLabels | object | `{}` | Add some custom labels | +| dataplane.affinity | object | `{}` | [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on | | dataplane.autoscaling.enabled | bool | `false` | Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | | dataplane.autoscaling.maxReplicas | int | `100` | Maximum replicas if resource consumption exceeds resource threshholds | | dataplane.autoscaling.minReplicas | int | `1` | Minimal replicas if resource consumption falls below resource threshholds | @@ -174,26 +174,29 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | dataplane.aws.accessKeyId | string | `""` | | | dataplane.aws.endpointOverride | string | `""` | | | dataplane.aws.secretAccessKey | string | `""` | | -| dataplane.debug.enabled | bool | `false` | | -| dataplane.debug.port | int | `1044` | | -| dataplane.debug.suspendOnStart | bool | `false` | | -| dataplane.endpoints.control.path | string | `"/api/control"` | | -| dataplane.endpoints.control.port | int | `8084` | | -| dataplane.endpoints.default.path | string | `"/api"` | | -| dataplane.endpoints.default.port | int | `8080` | | -| dataplane.endpoints.metrics.path | string | `"/metrics"` | | -| dataplane.endpoints.metrics.port | int | `9090` | | -| dataplane.endpoints.proxy.authKey | string | `"password"` | | -| dataplane.endpoints.proxy.path | string | `"/proxy"` | | -| dataplane.endpoints.proxy.port | int | `8186` | | -| dataplane.endpoints.public.path | string | `"/api/public"` | | -| dataplane.endpoints.public.port | int | `8081` | | -| dataplane.endpoints.signaling.path | string | `"/api/signaling"` | | -| dataplane.endpoints.signaling.port | int | `8083` | | -| dataplane.env | object | `{}` | | -| dataplane.envConfigMapNames | list | `[]` | | -| dataplane.envSecretNames | list | `[]` | | -| dataplane.envValueFrom | object | `{}` | | +| dataplane.debug.enabled | bool | `false` | Enables java debugging mode. | +| dataplane.debug.port | int | `1044` | Port where the debuggee can connect to. | +| dataplane.debug.suspendOnStart | bool | `false` | Defines if the JVM should wait with starting the application until someone connected to the debugging port. | +| dataplane.endpoints | object | `{"control":{"path":"/control","port":8084},"default":{"path":"/api","port":8080},"metrics":{"path":"/metrics","port":9090},"proxy":{"authKey":"password","path":"/proxy","port":8186},"public":{"path":"/api/public","port":8081}}` | endpoints of the dataplane | +| dataplane.endpoints.control | object | `{"path":"/control","port":8084}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | +| dataplane.endpoints.control.path | string | `"/control"` | path for incoming api calls | +| dataplane.endpoints.control.port | int | `8084` | port for incoming api calls | +| dataplane.endpoints.default | object | `{"path":"/api","port":8080}` | default api for health checks, should not be added to any ingress | +| dataplane.endpoints.default.path | string | `"/api"` | path for incoming api calls | +| dataplane.endpoints.default.port | int | `8080` | port for incoming api calls | +| dataplane.endpoints.metrics | object | `{"path":"/metrics","port":9090}` | metrics api, used for application metrics, must not be internet facing | +| dataplane.endpoints.metrics.path | string | `"/metrics"` | path for incoming api calls | +| dataplane.endpoints.metrics.port | int | `9090` | port for incoming api calls | +| dataplane.endpoints.proxy.authKey | string | `"password"` | authentication key, must be attached to each request as `X-Api-Key` header | +| dataplane.endpoints.proxy.path | string | `"/proxy"` | path for incoming api calls | +| dataplane.endpoints.proxy.port | int | `8186` | port for incoming api calls | +| dataplane.endpoints.public | object | `{"path":"/api/public","port":8081}` | public endpoint where the data can be fetched from if HttpPull was used. Must be internet facing. | +| dataplane.endpoints.public.path | string | `"/api/public"` | path for incoming api calls | +| dataplane.endpoints.public.port | int | `8081` | port for incoming api calls | +| dataplane.env | object | `{}` | Extra environment variables that will be pass onto deployment pods | +| dataplane.envConfigMapNames | list | `[]` | [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from | +| dataplane.envSecretNames | list | `[]` | [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from | +| dataplane.envValueFrom | object | `{}` | "valueFrom" environment variable references that will be added to deployment pods. Name is templated. ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core | | dataplane.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | | dataplane.image.repository | string | `""` | Which derivate of the data plane to use. when left empty the deployment will select the correct image automatically | | dataplane.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion | @@ -208,8 +211,6 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | dataplane.ingresses[0].tls.enabled | bool | `false` | Enables TLS on the ingress resource | | dataplane.ingresses[0].tls.secretName | string | `""` | If present overwrites the default secret name | | dataplane.initContainers | list | `[]` | | -| dataplane.limits.cpu | float | `1.5` | | -| dataplane.limits.memory | string | `"1024Mi"` | | | dataplane.livenessProbe.enabled | bool | `true` | Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | | dataplane.livenessProbe.failureThreshold | int | `6` | when a probe fails kubernetes will try 6 times before giving up | | dataplane.livenessProbe.initialDelaySeconds | int | `30` | seconds to wait before performing the first liveness check | @@ -217,7 +218,7 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | dataplane.livenessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | dataplane.livenessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | dataplane.logging | string | `".level=INFO\norg.eclipse.edc.level=ALL\nhandlers=java.util.logging.ConsoleHandler\njava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter\njava.util.logging.ConsoleHandler.level=ALL\njava.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n"` | configuration of the [Java Util Logging Facade](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) | -| dataplane.nodeSelector | object | `{}` | | +| dataplane.nodeSelector | object | `{}` | [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes | | dataplane.opentelemetry | string | `"otel.javaagent.enabled=false\notel.javaagent.debug=false"` | configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics | | dataplane.podAnnotations | object | `{}` | additional annotations for the pod | | dataplane.podLabels | object | `{}` | additional labels for the pod | @@ -233,35 +234,38 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | dataplane.readinessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | dataplane.readinessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | dataplane.replicaCount | int | `1` | | -| dataplane.requests.cpu | string | `"500m"` | | -| dataplane.requests.memory | string | `"128Mi"` | | -| dataplane.resources | object | `{}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| dataplane.resources | object | `{"limits":{"cpu":1.5,"memory":"1024Mi"},"requests":{"cpu":"500m","memory":"1024Mi"}}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| dataplane.resources.limits.cpu | float | `1.5` | Maximum CPU limit | +| dataplane.resources.limits.memory | string | `"1024Mi"` | Maximum memory limit | +| dataplane.resources.requests.cpu | string | `"500m"` | Initial CPU request | +| dataplane.resources.requests.memory | string | `"1024Mi"` | Initial memory request | | dataplane.securityContext.allowPrivilegeEscalation | bool | `false` | Controls [Privilege Escalation](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privilege-escalation) enabling setuid binaries changing the effective user ID | | dataplane.securityContext.capabilities.add | list | `[]` | Specifies which capabilities to add to issue specialized syscalls | | dataplane.securityContext.capabilities.drop | list | `["ALL"]` | Specifies which capabilities to drop to reduce syscall attack surface | | dataplane.securityContext.readOnlyRootFilesystem | bool | `true` | Whether the root filesystem is mounted in read-only mode | | dataplane.securityContext.runAsNonRoot | bool | `true` | Requires the container to run without root privileges | | dataplane.securityContext.runAsUser | int | `10001` | The container's process will run with the specified uid | -| dataplane.service.port | int | `80` | | +| dataplane.service.annotations | object | `{}` | additional annotations for the service | +| dataplane.service.labels | object | `{}` | additional labels for the service | | dataplane.service.type | string | `"ClusterIP"` | [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. | -| dataplane.token.refresh.expiry_seconds | int | `300` | | -| dataplane.token.refresh.expiry_tolerance_seconds | int | `10` | | -| dataplane.token.refresh.refresh_endpoint | string | `nil` | | -| dataplane.token.signer.privatekey_alias | string | `nil` | | -| dataplane.token.verifier.publickey_alias | string | `nil` | | -| dataplane.tolerations | list | `[]` | | +| dataplane.token.refresh.expiry_seconds | int | `300` | TTL in seconds for access tokens (also known as EDR token) | +| dataplane.token.refresh.expiry_tolerance_seconds | int | `10` | Tolerance for token expiry in seconds | +| dataplane.token.refresh.refresh_endpoint | string | `nil` | Optional endpoint for an OAuth2 token refresh. Default endpoint is `/token` | +| dataplane.token.signer.privatekey_alias | string | `nil` | Alias under which the private key (JWK or PEM format) is stored in the vault | +| dataplane.token.verifier.publickey_alias | string | `nil` | Alias under which the public key (JWK or PEM format) is stored in the vault, that belongs to the private key which was referred to at `dataplane.token.signer.privatekey_alias` | +| dataplane.tolerations | list | `[]` | [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes | | dataplane.url.public | string | `""` | Explicitly declared url for reaching the public api (e.g. if ingresses not used) | | dataplane.volumeMounts | string | `nil` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | | dataplane.volumes | string | `nil` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | fullnameOverride | string | `""` | | -| iatp.id | string | `"did:web:changeme"` | | -| iatp.sts.dim.url | string | `nil` | | -| iatp.sts.oauth.client.id | string | `nil` | | -| iatp.sts.oauth.client.secret_alias | string | `nil` | | -| iatp.sts.oauth.token_url | string | `nil` | | +| iatp.id | string | `"did:web:changeme"` | Decentralized IDentifier (DID) of the connector | +| iatp.sts.dim.url | string | `nil` | URL where connectors can request SI tokens | +| iatp.sts.oauth.client.id | string | `nil` | Client ID for requesting OAuth2 access token for DIM access | +| iatp.sts.oauth.client.secret_alias | string | `nil` | Alias under which the client secret is stored in the vault for requesting OAuth2 access token for DIM access | +| iatp.sts.oauth.token_url | string | `nil` | URL where connectors can request OAuth2 access tokens for DIM access | | iatp.trustedIssuers | list | `[]` | Configures the trusted issuers for this runtime | | imagePullSecrets | list | `[]` | Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) | -| install.postgresql | bool | `true` | | +| install.postgresql | bool | `true` | Deploying a PostgreSQL instance | | nameOverride | string | `""` | | | networkPolicy.controlplane | object | `{"from":[{"namespaceSelector":{}}]}` | Configuration of the controlplane component | | networkPolicy.controlplane.from | list | `[{"namespaceSelector":{}}]` | Specify from rule network policy for cp (defaults to all namespaces) | @@ -275,10 +279,10 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | postgresql.jdbcUrl | string | `"jdbc:postgresql://{{ .Release.Name }}-postgresql:5432/edc"` | | | postgresql.primary.persistence.enabled | bool | `false` | | | postgresql.readReplicas.persistence.enabled | bool | `false` | | -| serviceAccount.annotations | object | `{}` | | -| serviceAccount.create | bool | `true` | | +| serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| serviceAccount.create | bool | `true` | Specifies whether a service account should be created | | serviceAccount.imagePullSecrets | list | `[]` | Existing image pull secret bound to the service account to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) | -| serviceAccount.name | string | `""` | | +| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | | tests | object | `{"hookDeletePolicy":"before-hook-creation,hook-succeeded"}` | Configurations for Helm tests | | tests.hookDeletePolicy | string | `"before-hook-creation,hook-succeeded"` | Configure the hook-delete-policy for Helm tests | | vault.azure.certificate | string | `nil` | | @@ -286,9 +290,6 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | vault.azure.name | string | `""` | | | vault.azure.secret | string | `nil` | | | vault.azure.tenant | string | `nil` | | -| vault.secretNames.transferProxyTokenEncryptionAesKey | string | `"transfer-proxy-token-encryption-aes-key"` | | -| vault.secretNames.transferProxyTokenSignerPrivateKey | string | `nil` | | -| vault.secretNames.transferProxyTokenSignerPublicKey | string | `nil` | | ---------------------------------------------- -Autogenerated from chart metadata using [helm-docs v1.10.0](https://github.com/norwoodj/helm-docs/releases/v1.10.0) +Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs/) diff --git a/charts/tractusx-connector-azure-vault/README.md.gotmpl b/charts/tractusx-connector-azure-vault/README.md.gotmpl index cb5cc10e6..352cd8f13 100644 --- a/charts/tractusx-connector-azure-vault/README.md.gotmpl +++ b/charts/tractusx-connector-azure-vault/README.md.gotmpl @@ -60,4 +60,5 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version {{ {{ template "chart.valuesSection" . }} -{{ template "helm-docs.versionFooter" . }} +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs/) diff --git a/charts/tractusx-connector-azure-vault/templates/_helpers.tpl b/charts/tractusx-connector-azure-vault/templates/_helpers.tpl index 17bcddc86..fdc58cce1 100644 --- a/charts/tractusx-connector-azure-vault/templates/_helpers.tpl +++ b/charts/tractusx-connector-azure-vault/templates/_helpers.tpl @@ -137,17 +137,17 @@ Validation URL {{- end }} {{/* -Control Plane URL +Control Plane Control URL */}} {{- define "txdc.controlplane.url.control" -}} {{- printf "http://%s-controlplane:%v%s" ( include "txdc.fullname" $ ) $.Values.controlplane.endpoints.control.port $.Values.controlplane.endpoints.control.path -}} {{- end }} {{/* -Data Signaling URL +Data Plane Control URL */}} -{{- define "txdc.dataplane.url.signaling" -}} -{{- printf "http://%s-dataplane:%v%s" (include "txdc.fullname" . ) .Values.dataplane.endpoints.signaling.port .Values.dataplane.endpoints.signaling.path -}} +{{- define "txdc.dataplane.url.control" -}} +{{- printf "http://%s-dataplane:%v%s" ( include "txdc.fullname" $ ) $.Values.dataplane.endpoints.control.port $.Values.dataplane.endpoints.control.path -}} {{- end }} {{/* diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml index 9dec5c1e4..17d3dbdec 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml @@ -272,12 +272,12 @@ spec: ## IATP / STS / DIM CONFIG ## ############################# - name: "EDC_IAM_STS_OAUTH_TOKEN_URL" - value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.oauth.token_url is required" | quote}} + value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.sts.oauth.token_url is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_ID" value: {{ .Values.iatp.sts.oauth.client.id | required ".Values.iatp.sts.oauth.client.id is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_SECRET_ALIAS" value: {{ .Values.iatp.sts.oauth.client.secret_alias | required ".Values.iatp.sts.oauth.client.secret_alias is required" | quote}} - - name: "EDC_IAM_STS_DIM_URL" + - name: "TX_EDC_IAM_STS_DIM_URL" value: {{ .Values.iatp.sts.dim.url | required ".Values.iatp.sts.dim.url is required" | quote}} {{- range $index, $issuer := .Values.iatp.trustedIssuers }} @@ -289,34 +289,13 @@ spec: ## BDRS CLIENT ## ################# - {{- if .Values.controlplane.bdrs.server.url }} - name: "TX_IAM_IATP_BDRS_SERVER_URL" value: {{ .Values.controlplane.bdrs.server.url | required ".Values.controlplane.bdrs.server.url is required" | quote }} - {{- end }} {{- if .Values.controlplane.bdrs.cache_validity_seconds }} - name: "TX_IAM_IATP_BDRS_CACHE_VALIDITY" value: {{ .Values.controlplane.bdrs.cache_validity_seconds | quote}} {{- end}} - ################ - ## DATA PLANE ## - ################ - - # see extension https://github.com/eclipse-tractusx/tractusx-edc/tree/main/edc-extensions/dataplane-selector-configuration - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_URL" - value: {{ include "txdc.dataplane.url.signaling" . }}/v1/dataflows - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_TRANSFERTYPES" - value: "HttpData-PULL,HttpData-PUSH,AmazonS3-PUSH,AzureStorage-PUSH" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_SOURCETYPES" - value: "HttpData,AmazonS3,AzureStorage" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_DESTINATIONTYPES" - value: "HttpData,HttpProxy,AmazonS3,AzureStorage" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_PROPERTIES" - value: |- - {{ printf "{ \"publicApiUrl\": \"%s\" }" (include "txdc.dataplane.url.public" . ) }} - - - ########### ## VAULT ## ########### @@ -341,18 +320,10 @@ spec: value: {{ .Values.vault.azure.certificate | quote }} {{- end }} - - - ########################### - ## BUSINESS PARTNER NUMBER VALIDATION EXTENSION ## - ########################### - - name: "TRACTUSX_BUSINESSPARTNERVALIDATION_LOG_AGREEMENT_VALIDATION" - value: {{ .Values.controlplane.businessPartnerValidation.log.agreementValidation | quote }} - ###################################### ## Additional environment variables ## ###################################### - - name: "EDC_CONNECTOR_NAME" + - name: "EDC_RUNTIME_ID" value: {{ include "txdc.fullname" .}}-controlplane {{- range $key, $value := .Values.controlplane.envValueFrom }} - name: {{ $key | quote }} diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml index 1f2619596..298d66c0e 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml @@ -151,16 +151,12 @@ spec: ####### # API # ####### - - name: "EDC_API_AUTH_KEY" - value: {{ .Values.dataplane.endpoints.proxy.authKey | required ".Values.proxy.endpoints.proxy.authKey is required" | quote }} + - name: "TX_EDC_DPF_CONSUMER_PROXY_AUTH_APIKEY" + value: {{ .Values.dataplane.endpoints.proxy.authKey | required ".Values.dataplane.endpoints.proxy.authKey is required" | quote }} - name: "WEB_HTTP_DEFAULT_PORT" value: {{ .Values.dataplane.endpoints.default.port | quote }} - name: "WEB_HTTP_DEFAULT_PATH" value: {{ .Values.dataplane.endpoints.default.path | quote }} - - name: "WEB_HTTP_SIGNALING_PORT" - value: {{ .Values.dataplane.endpoints.signaling.port | quote }} - - name: "WEB_HTTP_SIGNALING_PATH" - value: {{ .Values.dataplane.endpoints.signaling.path | quote }} - name: "WEB_HTTP_CONTROL_PORT" value: {{ .Values.dataplane.endpoints.control.port | quote }} - name: "WEB_HTTP_CONTROL_PATH" @@ -169,8 +165,10 @@ spec: value: {{ .Values.dataplane.endpoints.public.port | quote }} - name: "WEB_HTTP_PUBLIC_PATH" value: {{ .Values.dataplane.endpoints.public.path | quote }} - - name: "EDC_DATAPLANE_TOKEN_VALIDATION_ENDPOINT" - value: {{ include "txdc.controlplane.url.validation" .}} + - name: "EDC_CONTROL_ENDPOINT" + value: {{ include "txdc.dataplane.url.control" . }} + - name: "EDC_DPF_SELECTOR_URL" + value: {{ include "txdc.controlplane.url.control" . }}/v1/dataplanes ####### # AWS # @@ -212,16 +210,16 @@ spec: value: {{ .Values.vault.azure.certificate | quote }} {{- end }} - ############################# + ############################# ## IATP / STS / DIM CONFIG ## ############################# - name: "EDC_IAM_STS_OAUTH_TOKEN_URL" - value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.oauth.token_url is required" | quote}} + value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.sts.oauth.token_url is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_ID" value: {{ .Values.iatp.sts.oauth.client.id | required ".Values.iatp.sts.oauth.client.id is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_SECRET_ALIAS" value: {{ .Values.iatp.sts.oauth.client.secret_alias | required ".Values.iatp.sts.oauth.client.secret_alias is required" | quote}} - - name: "EDC_IAM_STS_DIM_URL" + - name: "TX_EDC_IAM_STS_DIM_URL" value: {{ .Values.iatp.sts.dim.url | required ".Values.iatp.sts.dim.url is required" | quote}} ################ @@ -269,20 +267,20 @@ spec: ## TOKEN REFRESH ################## {{- if .Values.dataplane.token.refresh.expiry_seconds }} - - name: "EDC_DATAPLANE_TOKEN_EXPIRY" + - name: "TX_EDC_DATAPLANE_TOKEN_EXPIRY" value: {{ .Values.dataplane.token.refresh.expiry_seconds | quote}} {{- end}} {{- if .Values.dataplane.token.refresh.expiry_tolerance_seconds }} - - name: "EDC_DATAPLANE_TOKEN_EXPIRY_TOLERANCE" + - name: "TX_EDC_DATAPLANE_TOKEN_EXPIRY_TOLERANCE" value: {{ .Values.dataplane.token.refresh.expiry_tolerance_seconds | quote }} {{- end}} {{- if .Values.dataplane.token.refresh.refresh_endpoint }} - - name: "EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" + - name: "TX_EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" value: {{ .Values.dataplane.token.refresh.refresh_endpoint }} {{- else}} - - name: "EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" + - name: "TX_EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" value: {{ include "txdc.dataplane.url.public" . }}/token {{- end}} @@ -296,7 +294,7 @@ spec: ###################################### ## Additional environment variables ## ###################################### - - name: "EDC_CONNECTOR_NAME" + - name: "EDC_RUNTIME_ID" value: {{ include "txdc.fullname" .}}-dataplane {{- range $key, $value := .Values.dataplane.envValueFrom }} - name: {{ $key | quote }} diff --git a/charts/tractusx-connector-azure-vault/templates/networkpolicy.yaml b/charts/tractusx-connector-azure-vault/templates/networkpolicy.yaml new file mode 100644 index 000000000..183af9b48 --- /dev/null +++ b/charts/tractusx-connector-azure-vault/templates/networkpolicy.yaml @@ -0,0 +1,46 @@ +################################################################################# +# Copyright (c) 2024 ZF Friedrichshafen AG +# Copyright (c) 2024 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 +################################################################################# + +{{- if eq (.Values.networkPolicy.enabled | toString) "true" }} +{{- range tuple "controlplane" "dataplane" }} +{{- $name := . }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ include "txdc.fullname" $ }}-{{ $name }} + labels: + {{- include (printf "txdc.%s.labels" $name) $ | nindent 4 }} +spec: + podSelector: + matchLabels: + {{- include (printf "txdc.%s.selectorLabels" $name) $ | nindent 6 }} + ingress: + - from: + {{- toYaml (index $.Values.networkPolicy $name "from") | nindent 6 }} + ports: + {{- range $key,$value := (index $.Values $name "endpoints") }} + - port: {{ $value.port }} + protocol: TCP + {{- end }} + policyTypes: + - Ingress +--- +{{- end }} +{{- end }} diff --git a/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml index f39a69538..bf0a83cea 100644 --- a/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml @@ -1,8 +1,8 @@ ################################################################################# -# Copyright (c) 2023 ZF Friedrichshafen AG +# Copyright (c) 2023,2024 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -26,9 +26,16 @@ apiVersion: v1 kind: Service metadata: name: {{ include "txdc.fullname" . }}-controlplane - namespace: {{ .Release.Namespace | default "default" | quote }} + namespace: {{ .Release.Namespace }} + {{- with .Values.controlplane.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} labels: {{- include "txdc.controlplane.labels" . | nindent 4 }} + {{- with .Values.controlplane.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: type: {{ .Values.controlplane.service.type }} ports: diff --git a/charts/tractusx-connector-azure-vault/templates/service-dataplane.yaml b/charts/tractusx-connector-azure-vault/templates/service-dataplane.yaml index 807eba45f..6700191a8 100644 --- a/charts/tractusx-connector-azure-vault/templates/service-dataplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/service-dataplane.yaml @@ -1,30 +1,38 @@ +################################################################################# +# Copyright (c) 2024 ZF Friedrichshafen AG +# Copyright (c) 2023,2024 Contributors to the Eclipse Foundation # - # Copyright (c) 2023 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 - # +# 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 +################################################################################# --- apiVersion: v1 kind: Service metadata: name: {{ include "txdc.fullname" . }}-dataplane - namespace: {{ .Release.Namespace | default "default" | quote }} + namespace: {{ .Release.Namespace }} + {{- with .Values.dataplane.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} labels: {{- include "txdc.dataplane.labels" . | nindent 4 }} + {{- with .Values.dataplane.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: type: {{ .Values.dataplane.service.type }} ports: @@ -32,10 +40,10 @@ spec: targetPort: default protocol: TCP name: default - - port: {{ .Values.dataplane.endpoints.signaling.port }} - targetPort: signaling + - port: {{ .Values.dataplane.endpoints.control.port }} + targetPort: control protocol: TCP - name: signaling + name: control - port: {{ .Values.dataplane.endpoints.public.port }} targetPort: public protocol: TCP diff --git a/charts/tractusx-connector-azure-vault/values.yaml b/charts/tractusx-connector-azure-vault/values.yaml index 2e1adbbea..702d448e7 100644 --- a/charts/tractusx-connector-azure-vault/values.yaml +++ b/charts/tractusx-connector-azure-vault/values.yaml @@ -1,8 +1,8 @@ ################################################################################# -# Copyright (c) 2023 ZF Friedrichshafen AG +# Copyright (c) 2023,2024 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -20,41 +20,47 @@ # SPDX-License-Identifier: Apache-2.0 ################################################################################# - --- # Default values for eclipse-dataspace-connector. # This is a YAML-formatted file. # Declare variables to be passed into your templates. install: + # -- Deploying a PostgreSQL instance postgresql: true + fullnameOverride: "" nameOverride: "" # -- Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) imagePullSecrets: [] -# -- To add some custom labels +# -- Add some custom labels customLabels: {} participant: # -- BPN Number id: "BPNLCHANGEME" - iatp: - # Decentralized IDentifier + # -- Decentralized IDentifier (DID) of the connector id: "did:web:changeme" # -- Configures the trusted issuers for this runtime trustedIssuers: [] sts: dim: + # -- URL where connectors can request SI tokens url: oauth: + # -- URL where connectors can request OAuth2 access tokens for DIM access token_url: client: + # -- Client ID for requesting OAuth2 access token for DIM access id: + # -- Alias under which the client secret is stored in the vault for requesting OAuth2 access token for DIM access secret_alias: +# -- Add custom ca certificates to the truststore +customCaCerts: {} controlplane: image: @@ -66,9 +72,13 @@ controlplane: tag: "" initContainers: [] debug: + # -- Enables java debugging mode. enabled: false + # -- Port where the debuggee can connect to. port: 1044 + # -- Defines if the JVM should wait with starting the application until someone connected to the debugging port. suspendOnStart: false + livenessProbe: # -- Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) enabled: true @@ -95,6 +105,7 @@ controlplane: failureThreshold: 6 # -- number of consecutive successes for the probe to be considered successful after having failed successThreshold: 1 + # -- endpoints of the control plane endpoints: # -- default api for health checks, should not be added to any ingress @@ -109,7 +120,7 @@ controlplane: port: 8081 # -- path for incoming api calls path: /management - # -- authentication key, must be attached to each 'X-Api-Key' request header + # -- authentication key, must be attached to each request as `X-Api-Key` header authKey: "password" # -- control api, used for internal control calls. can be added to the internal ingress, but should probably not control: @@ -130,21 +141,21 @@ controlplane: # -- path for incoming api calls path: /metrics - businessPartnerValidation: - log: - agreementValidation: true - bdrs: - # time that a cached BPN/DID resolution map is valid in seconds, default is 10 min + # -- Time that a cached BPN/DID resolution map is valid in seconds, default is 600 seconds (10 min) cache_validity_seconds: 600 server: - # URL of the BPN/DID Resolution Service - required: + # -- URL of the BPN/DID Resolution Service url: service: # -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. type: ClusterIP + # -- additional labels for the service + labels: {} + # -- additional annotations for the service annotations: {} + # -- additional labels for the pod podLabels: {} # -- additional annotations for the pod @@ -176,11 +187,12 @@ controlplane: runAsNonRoot: true # -- The container's process will run with the specified uid runAsUser: 10001 + # Extra environment variables that will be pass onto deployment pods env: {} # ENV_NAME: value - # "valueFrom" environment variable references that will be added to deployment pods. Name is templated. + # -- "valueFrom" environment variable references that will be added to deployment pods. Name is templated. # ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core envValueFrom: {} # ENV_NAME: @@ -191,12 +203,12 @@ controlplane: # name: secret-name # key: value_key - # [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from + # -- [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from envSecretNames: [] # - first-secret # - second-secret - # [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from + # -- [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from envConfigMapNames: [] # - first-config-map # - second-config-map @@ -250,23 +262,27 @@ controlplane: issuer: "" # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" + # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container volumeMounts: # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories volumes: + # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: - cpu: 1.5 - memory: 512Mi - requests: - cpu: 500m - memory: 128Mi + resources: + limits: + # -- Maximum CPU limit + cpu: 1.5 + # -- Maximum memory limit + memory: 1024Mi + requests: + # -- Initial CPU request + cpu: 500m + # -- Initial memory request + memory: 1024Mi + replicaCount: 1 + autoscaling: # -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) enabled: false @@ -278,6 +294,7 @@ controlplane: targetCPUUtilizationPercentage: 80 # -- targetAverageUtilization of memory provided to a pod targetMemoryUtilizationPercentage: 80 + # -- configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics opentelemetry: |- otel.javaagent.enabled=false @@ -291,20 +308,17 @@ controlplane: java.util.logging.ConsoleHandler.level=ALL java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n - # [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes + # -- [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes nodeSelector: {} - # [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes + # -- [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes tolerations: [] - # [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on + # -- [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on affinity: {} url: # -- Explicitly declared url for reaching the dsp api (e.g. if ingresses not used) protocol: "" -# -- Add custom ca certificates to the truststore -customCaCerts: {} - dataplane: image: # -- Which derivate of the data plane to use. when left empty the deployment will select the correct image automatically @@ -315,9 +329,13 @@ dataplane: tag: "" initContainers: [] debug: + # -- Enables java debugging mode. enabled: false + # -- Port where the debuggee can connect to. port: 1044 + # -- Defines if the JVM should wait with starting the application until someone connected to the debugging port. suspendOnStart: false + livenessProbe: # -- Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) enabled: true @@ -344,48 +362,69 @@ dataplane: failureThreshold: 6 # -- number of consecutive successes for the probe to be considered successful after having failed successThreshold: 1 + service: # -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. type: ClusterIP - port: 80 + # -- additional labels for the service + labels: {} + # -- additional annotations for the service + annotations: {} + + # -- endpoints of the dataplane endpoints: + # -- default api for health checks, should not be added to any ingress default: + # -- port for incoming api calls port: 8080 + # -- path for incoming api calls path: /api + # -- public endpoint where the data can be fetched from if HttpPull was used. Must be internet facing. public: + # -- port for incoming api calls port: 8081 + # -- path for incoming api calls path: /api/public - signaling: - port: 8083 - path: /api/signaling + # -- control api, used for internal control calls. can be added to the internal ingress, but should probably not control: + # -- port for incoming api calls port: 8084 - path: /api/control + # -- path for incoming api calls + path: /control proxy: + # -- port for incoming api calls port: 8186 + # -- path for incoming api calls path: /proxy + # -- authentication key, must be attached to each request as `X-Api-Key` header authKey: "password" + # -- metrics api, used for application metrics, must not be internet facing metrics: + # -- port for incoming api calls port: 9090 + # -- path for incoming api calls path: /metrics token: refresh: + # -- TTL in seconds for access tokens (also known as EDR token) expiry_seconds: 300 + # -- Tolerance for token expiry in seconds expiry_tolerance_seconds: 10 - # optional URL that can be provided where clients go to refresh tokens. + # -- Optional endpoint for an OAuth2 token refresh. Default endpoint is `/token` refresh_endpoint: signer: - # alias under which the private key is stored in the vault (JWK or PEM format) + # -- Alias under which the private key (JWK or PEM format) is stored in the vault privatekey_alias: verifier: - # alias under which the public key is stored in the vault, that belongs to the private key ("privatekey_alias", JWK or PEM format) + # -- Alias under which the public key (JWK or PEM format) is stored in the vault, that belongs to the private key which was referred to at `dataplane.token.signer.privatekey_alias` publickey_alias: aws: endpointOverride: "" accessKeyId: "" secretAccessKey: "" + # -- additional labels for the pod podLabels: {} # -- additional annotations for the pod @@ -417,11 +456,12 @@ dataplane: runAsNonRoot: true # -- The container's process will run with the specified uid runAsUser: 10001 - # Extra environment variables that will be pass onto deployment pods + + # -- Extra environment variables that will be pass onto deployment pods env: {} # ENV_NAME: value - # "valueFrom" environment variable references that will be added to deployment pods. Name is templated. + # -- "valueFrom" environment variable references that will be added to deployment pods. Name is templated. # ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core envValueFrom: {} # ENV_NAME: @@ -432,12 +472,12 @@ dataplane: # name: secret-name # key: value_key - # [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from + # -- [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from envSecretNames: [] # - first-secret # - second-secret - # [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from + # -- [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from envConfigMapNames: [] # - first-config-map # - second-config-map @@ -467,23 +507,27 @@ dataplane: issuer: "" # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" + # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container volumeMounts: # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories volumes: + # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: - cpu: 1.5 - memory: 1024Mi - requests: - cpu: 500m - memory: 128Mi + resources: + limits: + # -- Maximum CPU limit + cpu: 1.5 + # -- Maximum memory limit + memory: 1024Mi + requests: + # -- Initial CPU request + cpu: 500m + # -- Initial memory request + memory: 1024Mi + replicaCount: 1 + autoscaling: # -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) enabled: false @@ -495,6 +539,7 @@ dataplane: targetCPUUtilizationPercentage: 80 # -- targetAverageUtilization of memory provided to a pod targetMemoryUtilizationPercentage: 80 + # -- configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics opentelemetry: |- otel.javaagent.enabled=false @@ -507,11 +552,12 @@ dataplane: java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter java.util.logging.ConsoleHandler.level=ALL java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n - # [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes + + # -- [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes nodeSelector: {} - # [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes + # -- [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes tolerations: [] - # [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on + # -- [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on affinity: {} url: @@ -530,6 +576,7 @@ postgresql: database: "edc" username: "user" password: "password" + vault: azure: name: "" @@ -538,11 +585,6 @@ vault: secret: certificate: - secretNames: - transferProxyTokenSignerPrivateKey: - transferProxyTokenSignerPublicKey: - transferProxyTokenEncryptionAesKey: transfer-proxy-token-encryption-aes-key - networkPolicy: # -- If `true` network policy will be created to restrict access to control- and dataplane enabled: false @@ -558,11 +600,11 @@ networkPolicy: - namespaceSelector: {} serviceAccount: - # Specifies whether a service account should be created + # -- Specifies whether a service account should be created create: true - # Annotations to add to the service account + # -- Annotations to add to the service account annotations: {} - # The name of the service account to use. + # -- The name of the service account to use. # If not set and create is true, a name is generated using the fullname template name: "" # -- Existing image pull secret bound to the service account to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) diff --git a/charts/tractusx-connector-memory/Chart.yaml b/charts/tractusx-connector-memory/Chart.yaml index 1e0e29f6f..80ef98b35 100644 --- a/charts/tractusx-connector-memory/Chart.yaml +++ b/charts/tractusx-connector-memory/Chart.yaml @@ -35,12 +35,12 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.7.2 +version: 0.7.3 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.7.2" +appVersion: "0.7.3" home: https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector-memory sources: - https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector-memory diff --git a/charts/tractusx-connector-memory/README.md b/charts/tractusx-connector-memory/README.md index e979c39b5..adc8d79d3 100644 --- a/charts/tractusx-connector-memory/README.md +++ b/charts/tractusx-connector-memory/README.md @@ -1,6 +1,6 @@ # tractusx-connector-memory -![Version: 0.7.2](https://img.shields.io/badge/Version-0.7.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.7.2](https://img.shields.io/badge/AppVersion-0.7.2-informational?style=flat-square) +![Version: 0.7.3](https://img.shields.io/badge/Version-0.7.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.7.3](https://img.shields.io/badge/AppVersion-0.7.3-informational?style=flat-square) A Helm chart for Tractus-X Eclipse Data Space Connector based on memory. Please only use this for development or testing purposes, never in production workloads! @@ -41,7 +41,7 @@ Combined, run this shell command to start the in-memory Tractus-X EDC runtime: ```shell helm repo add tractusx-edc https://eclipse-tractusx.github.io/charts/dev -helm install my-release tractusx-edc/tractusx-connector-memory --version 0.7.2 \ +helm install my-release tractusx-edc/tractusx-connector-memory --version 0.7.3 \ -f /tractusx-connector-memory-test.yaml \ --set vault.secrets="client-secret:$YOUR_CLIENT_SECRET" ``` @@ -54,32 +54,30 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version 0.7.2 \ | Key | Type | Default | Description | |-----|------|---------|-------------| -| backendService.httpProxyTokenReceiverUrl | string | `"https://example.com"` | Specifies a backend service which will receive the EDR | | customCaCerts | object | `{}` | Add custom ca certificates to the truststore | -| customLabels | object | `{}` | To add some custom labels | +| customLabels | object | `{}` | Add some custom labels | | fullnameOverride | string | `""` | | -| iatp.id | string | `"did:web:changeme"` | | -| iatp.sts.dim.url | string | `nil` | | -| iatp.sts.oauth.client.id | string | `nil` | | -| iatp.sts.oauth.client.secret_alias | string | `nil` | | -| iatp.sts.oauth.token_url | string | `nil` | | +| iatp.id | string | `"did:web:changeme"` | Decentralized IDentifier (DID) of the connector | +| iatp.sts.dim.url | string | `nil` | URL where connectors can request SI tokens | +| iatp.sts.oauth.client.id | string | `nil` | Client ID for requesting OAuth2 access token for DIM access | +| iatp.sts.oauth.client.secret_alias | string | `nil` | Alias under which the client secret is stored in the vault for requesting OAuth2 access token for DIM access | +| iatp.sts.oauth.token_url | string | `nil` | URL where connectors can request OAuth2 access tokens for DIM access | | iatp.trustedIssuers | list | `[]` | Configures the trusted issuers for this runtime | | imagePullSecrets | list | `[]` | Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) | | nameOverride | string | `""` | | | participant.id | string | `"BPNLCHANGEME"` | BPN Number | -| runtime.affinity | object | `{}` | | +| runtime.affinity | object | `{}` | [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on | | runtime.autoscaling.enabled | bool | `false` | Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | | runtime.autoscaling.maxReplicas | int | `100` | Maximum replicas if resource consumption exceeds resource threshholds | | runtime.autoscaling.minReplicas | int | `1` | Minimal replicas if resource consumption falls below resource threshholds | | runtime.autoscaling.targetCPUUtilizationPercentage | int | `80` | targetAverageUtilization of cpu provided to a pod | | runtime.autoscaling.targetMemoryUtilizationPercentage | int | `80` | targetAverageUtilization of memory provided to a pod | -| runtime.bdrs.cache_validity_seconds | int | `600` | | -| runtime.bdrs.server.url | string | `nil` | | -| runtime.businessPartnerValidation.log.agreementValidation | bool | `true` | | -| runtime.debug.enabled | bool | `false` | | -| runtime.debug.port | int | `1044` | | -| runtime.debug.suspendOnStart | bool | `false` | | -| runtime.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"protocol":{"path":"/api/v1/dsp","port":8084},"proxy":{"path":"/proxy","port":8186},"public":{"path":"/api/public","port":8086},"signaling":{"path":"/api/signaling","port":8087}}` | endpoints of the control plane | +| runtime.bdrs.cache_validity_seconds | int | `600` | Time that a cached BPN/DID resolution map is valid in seconds, default is 600 seconds (10 min) | +| runtime.bdrs.server.url | string | `nil` | URL of the BPN/DID Resolution Service | +| runtime.debug.enabled | bool | `false` | Enables java debugging mode. | +| runtime.debug.port | int | `1044` | Port where the debuggee can connect to. | +| runtime.debug.suspendOnStart | bool | `false` | Defines if the JVM should wait with starting the application until someone connected to the debugging port. | +| runtime.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"protocol":{"path":"/api/v1/dsp","port":8084},"proxy":{"authKey":"password","path":"/proxy","port":8186},"public":{"path":"/api/public","port":8086}}` | endpoints of the controlplane | | runtime.endpoints.control | object | `{"path":"/control","port":8083}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | | runtime.endpoints.control.path | string | `"/control"` | path for incoming api calls | | runtime.endpoints.control.port | int | `8083` | port for incoming api calls | @@ -87,20 +85,25 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version 0.7.2 \ | runtime.endpoints.default.path | string | `"/api"` | path for incoming api calls | | runtime.endpoints.default.port | int | `8080` | port for incoming api calls | | runtime.endpoints.management | object | `{"authKey":"password","path":"/management","port":8081}` | data management api, used by internal users, can be added to an ingress and must not be internet facing | -| runtime.endpoints.management.authKey | string | `"password"` | authentication key, must be attached to each 'X-Api-Key' request header | +| runtime.endpoints.management.authKey | string | `"password"` | authentication key, must be attached to each request as `X-Api-Key` header | | runtime.endpoints.management.path | string | `"/management"` | path for incoming api calls | | runtime.endpoints.management.port | int | `8081` | port for incoming api calls | | runtime.endpoints.protocol | object | `{"path":"/api/v1/dsp","port":8084}` | dsp api, used for inter connector communication and must be internet facing | | runtime.endpoints.protocol.path | string | `"/api/v1/dsp"` | path for incoming api calls | | runtime.endpoints.protocol.port | int | `8084` | port for incoming api calls | -| runtime.endpoints.signaling.path | string | `"/api/signaling"` | path for incoming api calls | -| runtime.endpoints.signaling.port | int | `8087` | port for incoming api calls | +| runtime.endpoints.proxy | object | `{"authKey":"password","path":"/proxy","port":8186}` | proxy API | +| runtime.endpoints.proxy.authKey | string | `"password"` | authentication key, must be attached to each request as `X-Api-Key` header | +| runtime.endpoints.proxy.path | string | `"/proxy"` | path for incoming api calls | +| runtime.endpoints.proxy.port | int | `8186` | port for incoming api calls | +| runtime.endpoints.public | object | `{"path":"/api/public","port":8086}` | public endpoint where the data can be fetched from if HttpPull was used. Must be internet facing. | +| runtime.endpoints.public.path | string | `"/api/public"` | path for incoming api calls | +| runtime.endpoints.public.port | int | `8086` | port for incoming api calls | | runtime.env | object | `{}` | | -| runtime.envConfigMapNames | list | `[]` | | -| runtime.envSecretNames | list | `[]` | | -| runtime.envValueFrom | object | `{}` | | +| runtime.envConfigMapNames | list | `[]` | [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from | +| runtime.envSecretNames | list | `[]` | [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from | +| runtime.envValueFrom | object | `{}` | "valueFrom" environment variable references that will be added to deployment pods. Name is templated. ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core | | runtime.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | -| runtime.image.repository | string | `""` | | +| runtime.image.repository | string | `""` | Which derivate of the control plane to use. When left empty the deployment will select the correct image automatically | | runtime.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion | | runtime.ingresses[0].annotations | object | `{}` | Additional ingress annotations to add | | runtime.ingresses[0].certManager.clusterIssuer | string | `""` | If preset enables certificate generation via cert-manager cluster-wide issuer | @@ -123,8 +126,6 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version 0.7.2 \ | runtime.ingresses[1].tls.enabled | bool | `false` | Enables TLS on the ingress resource | | runtime.ingresses[1].tls.secretName | string | `""` | If present overwrites the default secret name | | runtime.initContainers | list | `[]` | | -| runtime.limits.cpu | float | `1.5` | | -| runtime.limits.memory | string | `"512Mi"` | | | runtime.livenessProbe.enabled | bool | `true` | Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | | runtime.livenessProbe.failureThreshold | int | `6` | when a probe fails kubernetes will try 6 times before giving up | | runtime.livenessProbe.initialDelaySeconds | int | `30` | seconds to wait before performing the first liveness check | @@ -132,7 +133,7 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version 0.7.2 \ | runtime.livenessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | runtime.livenessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | runtime.logging | string | `".level=INFO\norg.eclipse.edc.level=ALL\nhandlers=java.util.logging.ConsoleHandler\njava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter\njava.util.logging.ConsoleHandler.level=ALL\njava.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n"` | configuration of the [Java Util Logging Facade](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) | -| runtime.nodeSelector | object | `{}` | | +| runtime.nodeSelector | object | `{}` | [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes | | runtime.podAnnotations | object | `{}` | additional annotations for the pod | | runtime.podLabels | object | `{}` | additional labels for the pod | | runtime.podSecurityContext | object | `{"fsGroup":10001,"runAsGroup":10001,"runAsUser":10001,"seccompProfile":{"type":"RuntimeDefault"}}` | The [pod security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod) defines privilege and access control settings for a Pod within the deployment | @@ -147,37 +148,38 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version 0.7.2 \ | runtime.readinessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | runtime.readinessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | runtime.replicaCount | int | `1` | | -| runtime.requests.cpu | string | `"500m"` | | -| runtime.requests.memory | string | `"128Mi"` | | -| runtime.resources | object | `{}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| runtime.resources | object | `{"limits":{"cpu":1.5,"memory":"1024Mi"},"requests":{"cpu":"500m","memory":"1024Mi"}}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| runtime.resources.limits.cpu | float | `1.5` | Maximum CPU limit | +| runtime.resources.limits.memory | string | `"1024Mi"` | Maximum memory limit | +| runtime.resources.requests.cpu | string | `"500m"` | Initial CPU request | +| runtime.resources.requests.memory | string | `"1024Mi"` | Initial memory request | | runtime.securityContext.allowPrivilegeEscalation | bool | `false` | Controls [Privilege Escalation](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privilege-escalation) enabling setuid binaries changing the effective user ID | | runtime.securityContext.capabilities.add | list | `[]` | Specifies which capabilities to add to issue specialized syscalls | | runtime.securityContext.capabilities.drop | list | `["ALL"]` | Specifies which capabilities to drop to reduce syscall attack surface | | runtime.securityContext.readOnlyRootFilesystem | bool | `true` | Whether the root filesystem is mounted in read-only mode | | runtime.securityContext.runAsNonRoot | bool | `true` | Requires the container to run without root privileges | | runtime.securityContext.runAsUser | int | `10001` | The container's process will run with the specified uid | -| runtime.service.annotations | object | `{}` | | +| runtime.service.annotations | object | `{}` | additional annotations for the service | +| runtime.service.labels | object | `{}` | additional labels for the service | | runtime.service.type | string | `"ClusterIP"` | [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. | -| runtime.token.refresh.expiry_seconds | int | `300` | | -| runtime.token.refresh.expiry_tolerance_seconds | int | `10` | | -| runtime.token.refresh.refresh_endpoint | string | `nil` | | -| runtime.token.signer.privatekey_alias | string | `nil` | | -| runtime.token.verifier.publickey_alias | string | `nil` | | -| runtime.tolerations | list | `[]` | | +| runtime.token.refresh.expiry_seconds | int | `300` | TTL in seconds for access tokens (also known as EDR token) | +| runtime.token.refresh.expiry_tolerance_seconds | int | `10` | Tolerance for token expiry in seconds | +| runtime.token.refresh.refresh_endpoint | string | `nil` | Optional endpoint for an OAuth2 token refresh. Default endpoint is `/token` | +| runtime.token.signer.privatekey_alias | string | `nil` | Alias under which the private key (JWK or PEM format) is stored in the vault | +| runtime.token.verifier.publickey_alias | string | `nil` | Alias under which the public key (JWK or PEM format) is stored in the vault, that belongs to the private key which was referred to at `dataplane.token.signer.privatekey_alias` | +| runtime.tolerations | list | `[]` | [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes | | runtime.url.protocol | string | `""` | Explicitly declared url for reaching the dsp api (e.g. if ingresses not used) | -| runtime.url.public | string | `""` | | -| runtime.url.readiness | string | `""` | | +| runtime.url.public | string | `""` | Explicitly declared url for reaching the public api (e.g. if ingresses not used) | | runtime.volumeMounts | list | `[]` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | | runtime.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | -| serviceAccount.annotations | object | `{}` | | -| serviceAccount.create | bool | `true` | | +| serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| serviceAccount.create | bool | `true` | Specifies whether a service account should be created | | serviceAccount.imagePullSecrets | list | `[]` | Existing image pull secret bound to the service account to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) | -| serviceAccount.name | string | `""` | | +| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | | tests | object | `{"hookDeletePolicy":"before-hook-creation,hook-succeeded"}` | Configurations for Helm tests | | tests.hookDeletePolicy | string | `"before-hook-creation,hook-succeeded"` | Configure the hook-delete-policy for Helm tests | -| vault.secretNames.transferProxyTokenEncryptionAesKey | string | `"transfer-proxy-token-encryption-aes-key"` | | | vault.secrets | string | `""` | | | vault.server.postStart | string | `""` | | ---------------------------------------------- -Autogenerated from chart metadata using [helm-docs v1.10.0](https://github.com/norwoodj/helm-docs/releases/v1.10.0) +Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs/) diff --git a/charts/tractusx-connector-memory/README.md.gotmpl b/charts/tractusx-connector-memory/README.md.gotmpl index fd4b05c2c..3484c4f84 100644 --- a/charts/tractusx-connector-memory/README.md.gotmpl +++ b/charts/tractusx-connector-memory/README.md.gotmpl @@ -57,4 +57,5 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version {{ .Ver {{ template "chart.valuesSection" . }} -{{ template "helm-docs.versionFooter" . }} +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs/) diff --git a/charts/tractusx-connector-memory/templates/_helpers.tpl b/charts/tractusx-connector-memory/templates/_helpers.tpl index 84f590f08..4451da9ca 100644 --- a/charts/tractusx-connector-memory/templates/_helpers.tpl +++ b/charts/tractusx-connector-memory/templates/_helpers.tpl @@ -117,13 +117,6 @@ Control URL {{- printf "http://%s-runtime:%v%s" ( include "txdc.fullname" $ ) $.Values.runtime.endpoints.control.port $.Values.runtime.endpoints.control.path -}} {{- end }} -{{/* -Data Signaling URL -*/}} -{{- define "txdc.dataplane.url.signaling" -}} -{{- printf "http://%s-dataplane:%v%s" (include "txdc.fullname" . ) .Values.runtime.endpoints.signaling.port .Values.runtime.endpoints.signaling.path -}} -{{- end }} - {{/* Data Public URL */}} diff --git a/charts/tractusx-connector-memory/templates/deployment-runtime.yaml b/charts/tractusx-connector-memory/templates/deployment-runtime.yaml index 8a75324bf..b63a6ff80 100644 --- a/charts/tractusx-connector-memory/templates/deployment-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/deployment-runtime.yaml @@ -154,6 +154,8 @@ spec: ####### - name: "EDC_API_AUTH_KEY" value: {{ .Values.runtime.endpoints.management.authKey | required ".Values.runtime.endpoints.management.authKey is required" | quote }} + - name: "TX_EDC_DPF_CONSUMER_PROXY_AUTH_APIKEY" + value: {{ .Values.runtime.endpoints.proxy.authKey | required ".Values.runtime.endpoints.proxy.authKey is required" | quote }} - name: "WEB_HTTP_DEFAULT_PORT" value: {{ .Values.runtime.endpoints.default.port | quote }} - name: "WEB_HTTP_DEFAULT_PATH" @@ -177,10 +179,6 @@ spec: value: {{ .Values.runtime.endpoints.control.port | quote }} - name: "WEB_HTTP_CONTROL_PATH" value: {{ .Values.runtime.endpoints.control.path | quote }} - - name: "WEB_HTTP_SIGNALING_PORT" - value: {{ .Values.runtime.endpoints.signaling.port | quote }} - - name: "WEB_HTTP_SIGNALING_PATH" - value: {{ .Values.runtime.endpoints.signaling.path | quote }} - name: "WEB_HTTP_PROTOCOL_PORT" value: {{ .Values.runtime.endpoints.protocol.port | quote }} - name: "WEB_HTTP_PROTOCOL_PATH" @@ -189,8 +187,6 @@ spec: value: {{ .Values.runtime.endpoints.public.port | quote }} - name: "WEB_HTTP_PUBLIC_PATH" value: {{ .Values.runtime.endpoints.public.path | quote }} - - name: "EDC_DATAPLANE_TOKEN_VALIDATION_ENDPOINT" - value: {{ include "txdc.runtime.url.validation" .}} ######### ## DSP ## @@ -207,27 +203,25 @@ spec: ## IATP / STS / DIM CONFIG ## ############################# - name: "EDC_IAM_STS_OAUTH_TOKEN_URL" - value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.oauth.token_url is required" | quote}} + value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.sts.oauth.token_url is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_ID" value: {{ .Values.iatp.sts.oauth.client.id | required ".Values.iatp.sts.oauth.client.id is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_SECRET_ALIAS" value: {{ .Values.iatp.sts.oauth.client.secret_alias | required ".Values.iatp.sts.oauth.client.secret_alias is required" | quote}} - - name: "EDC_IAM_STS_DIM_URL" + - name: "TX_EDC_IAM_STS_DIM_URL" value: {{ .Values.iatp.sts.dim.url | required ".Values.iatp.sts.dim.url is required" | quote}} {{- range $index, $issuer := .Values.iatp.trustedIssuers }} - name: "EDC_IAM_TRUSTED-ISSUER_{{$index}}-ISSUER_ID" - value: { { $issuer | quote } } + value: {{ $issuer | quote }} {{- end }} ################# ## BDRS CLIENT ## ################# - {{- if .Values.runtime.bdrs.server.url }} - name: "TX_IAM_IATP_BDRS_SERVER_URL" value: {{ .Values.runtime.bdrs.server.url | required ".Values.runtime.bdrs.server.url is required" | quote }} - {{- end }} {{- if .Values.runtime.bdrs.cache_validity_seconds }} - name: "TX_IAM_IATP_BDRS_CACHE_VALIDITY" value: {{ .Values.runtime.bdrs.cache_validity_seconds | quote}} @@ -236,21 +230,6 @@ spec: ################ ## DATA PLANE ## ################ - - # see extension https://github.com/eclipse-tractusx/tractusx-edc/tree/develop/edc-extensions/dataplane-selector-configuration - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_URL" - value: {{ include "txdc.dataplane.url.signaling" . }}/v1/dataflows - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_TRANSFERTYPES" - value: "HttpData-PULL,HttpData-PUSH,AmazonS3-PUSH,AzureStorage-PUSH" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_SOURCETYPES" - value: "HttpData,AmazonS3,AzureStorage" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_DESTINATIONTYPES" - value: "HttpData,HttpProxy,AmazonS3,AzureStorage" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_PROPERTIES" - value: |- - {{ printf "{ \"publicApiUrl\": \"%s\" }" (include "txdc.dataplane.url.public" . ) }} - - - name: "EDC_DATAPLANE_API_PUBLIC_BASEURL" value: {{ include "txdc.dataplane.url.public" . }} @@ -259,20 +238,20 @@ spec: ## TOKEN REFRESH ################## {{- if .Values.runtime.token.refresh.expiry_seconds }} - - name: "EDC_DATAPLANE_TOKEN_EXPIRY" + - name: "TX_EDC_DATAPLANE_TOKEN_EXPIRY" value: {{ .Values.runtime.token.refresh.expiry_seconds | quote}} {{- end}} {{- if .Values.runtime.token.refresh.expiry_tolerance_seconds }} - - name: "EDC_DATAPLANE_TOKEN_EXPIRY_TOLERANCE" + - name: "TX_EDC_DATAPLANE_TOKEN_EXPIRY_TOLERANCE" value: {{ .Values.runtime.token.refresh.expiry_tolerance_seconds | quote }} {{- end}} {{- if .Values.runtime.token.refresh.refresh_endpoint }} - - name: "EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" + - name: "TX_EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" value: {{ .Values.runtime.token.refresh.refresh_endpoint }} {{- else }} - - name: "EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" + - name: "TX_EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" value: {{ include "txdc.dataplane.url.public" . }}/token {{- end}} @@ -299,12 +278,6 @@ spec: - name: "EDC_CP_ADAPTER_REUSE_CONTRACT_AGREEMENT" value: "0" - ########################### - ## BUSINESS PARTNER NUMBER VALIDATION EXTENSION ## - ########################### - - name: "TRACTUSX_BUSINESSPARTNERVALIDATION_LOG_AGREEMENT_VALIDATION" - value: {{ .Values.runtime.businessPartnerValidation.log.agreementValidation | quote }} - ###################################### ## Additional environment variables ## ###################################### diff --git a/charts/tractusx-connector-memory/templates/service-runtime.yaml b/charts/tractusx-connector-memory/templates/service-runtime.yaml index e7536bbcb..0767c0d06 100644 --- a/charts/tractusx-connector-memory/templates/service-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/service-runtime.yaml @@ -1,33 +1,40 @@ +################################################################################# +# Copyright (c) 2023,2024 ZF Friedrichshafen AG +# Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# Copyright (c) 2021,2024 Contributors to the Eclipse Foundation # - # Copyright (c) 2023 ZF Friedrichshafen AG - # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH - # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # Copyright (c) 2021,2023 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 - # +# 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 +################################################################################# --- apiVersion: v1 kind: Service metadata: name: {{ include "txdc.fullname" . }}-runtime - namespace: {{ .Release.Namespace | default "default" | quote }} + namespace: {{ .Release.Namespace }} + {{- with .Values.runtime.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} labels: {{- include "txdc.runtime.labels" . | nindent 4 }} + {{- with .Values.runtime.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: type: {{ .Values.runtime.service.type }} ports: @@ -51,9 +58,5 @@ spec: targetPort: public protocol: TCP name: public - - port: {{ .Values.runtime.endpoints.signaling.port }} - targetPort: signaling - protocol: TCP - name: signaling selector: {{- include "txdc.runtime.selectorLabels" . | nindent 4 }} diff --git a/charts/tractusx-connector-memory/values.yaml b/charts/tractusx-connector-memory/values.yaml index 71a4bd2fb..c7c4ad63b 100644 --- a/charts/tractusx-connector-memory/values.yaml +++ b/charts/tractusx-connector-memory/values.yaml @@ -1,6 +1,7 @@ ################################################################################# +# Copyright (c) 2024 ZF Friedrichshafen AG # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -25,9 +26,10 @@ fullnameOverride: "" nameOverride: "" + # -- Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) imagePullSecrets: [] -# -- To add some custom labels +# -- Add some custom labels customLabels: {} participant: @@ -35,17 +37,21 @@ participant: id: "BPNLCHANGEME" iatp: - # Decentralized IDentifier + # -- Decentralized IDentifier (DID) of the connector id: "did:web:changeme" # -- Configures the trusted issuers for this runtime trustedIssuers: [] sts: dim: + # -- URL where connectors can request SI tokens url: oauth: + # -- URL where connectors can request OAuth2 access tokens for DIM access token_url: client: + # -- Client ID for requesting OAuth2 access token for DIM access id: + # -- Alias under which the client secret is stored in the vault for requesting OAuth2 access token for DIM access secret_alias: # -- Add custom ca certificates to the truststore @@ -53,6 +59,7 @@ customCaCerts: {} runtime: image: + # -- Which derivate of the control plane to use. When left empty the deployment will select the correct image automatically repository: "" # -- [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use pullPolicy: IfNotPresent @@ -60,9 +67,13 @@ runtime: tag: "" initContainers: [] debug: + # -- Enables java debugging mode. enabled: false + # -- Port where the debuggee can connect to. port: 1044 + # -- Defines if the JVM should wait with starting the application until someone connected to the debugging port. suspendOnStart: false + livenessProbe: # -- Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) enabled: true @@ -89,7 +100,8 @@ runtime: failureThreshold: 6 # -- number of consecutive successes for the probe to be considered successful after having failed successThreshold: 1 - # -- endpoints of the control plane + + # -- endpoints of the controlplane endpoints: # -- default api for health checks, should not be added to any ingress default: @@ -103,7 +115,7 @@ runtime: port: 8081 # -- path for incoming api calls path: /management - # -- authentication key, must be attached to each 'X-Api-Key' request header + # -- authentication key, must be attached to each request as `X-Api-Key` header authKey: "password" # -- control api, used for internal control calls. can be added to the internal ingress, but should probably not control: @@ -117,45 +129,51 @@ runtime: port: 8084 # -- path for incoming api calls path: /api/v1/dsp + # -- public endpoint where the data can be fetched from if HttpPull was used. Must be internet facing. public: + # -- port for incoming api calls port: 8086 + # -- path for incoming api calls path: /api/public + # -- proxy API proxy: - port: 8186 - path: /proxy - signaling: # -- port for incoming api calls - port: 8087 + port: 8186 # -- path for incoming api calls - path: /api/signaling + path: /proxy + # -- authentication key, must be attached to each request as `X-Api-Key` header + authKey: "password" - businessPartnerValidation: - log: - agreementValidation: true token: refresh: + # -- TTL in seconds for access tokens (also known as EDR token) expiry_seconds: 300 + # -- Tolerance for token expiry in seconds expiry_tolerance_seconds: 10 - # optional URL that can be provided where clients go to refresh tokens. + # -- Optional endpoint for an OAuth2 token refresh. Default endpoint is `/token` refresh_endpoint: signer: - # alias under which the private key is stored in the vault (JWK or PEM format) + # -- Alias under which the private key (JWK or PEM format) is stored in the vault privatekey_alias: verifier: - # alias under which the public key is stored in the vault, that belongs to the private key ("privatekey_alias", JWK or PEM format) + # -- Alias under which the public key (JWK or PEM format) is stored in the vault, that belongs to the private key which was referred to at `dataplane.token.signer.privatekey_alias` publickey_alias: bdrs: - # time that a cached BPN/DID resolution map is valid in seconds, default is 10 min + # -- Time that a cached BPN/DID resolution map is valid in seconds, default is 600 seconds (10 min) cache_validity_seconds: 600 server: - # URL of the BPN/DID Resolution Service - required: + # -- URL of the BPN/DID Resolution Service url: service: # -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. type: ClusterIP + # -- additional labels for the service + labels: {} + # -- additional annotations for the service annotations: {} + # -- additional labels for the pod podLabels: {} # -- additional annotations for the pod @@ -187,11 +205,12 @@ runtime: runAsNonRoot: true # -- The container's process will run with the specified uid runAsUser: 10001 + # Extra environment variables that will be pass onto deployment pods env: {} # ENV_NAME: value - # "valueFrom" environment variable references that will be added to deployment pods. Name is templated. + # -- "valueFrom" environment variable references that will be added to deployment pods. Name is templated. # ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core envValueFrom: {} # ENV_NAME: @@ -202,12 +221,12 @@ runtime: # name: secret-name # key: value_key - # [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from + # -- [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from envSecretNames: [] # - first-secret # - second-secret - # [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from + # -- [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from envConfigMapNames: [] # - first-config-map # - second-config-map @@ -262,23 +281,27 @@ runtime: issuer: "" # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" + # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container volumeMounts: [] # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories volumes: [] + # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: - cpu: 1.5 - memory: 512Mi - requests: - cpu: 500m - memory: 128Mi + resources: + limits: + # -- Maximum CPU limit + cpu: 1.5 + # -- Maximum memory limit + memory: 1024Mi + requests: + # -- Initial CPU request + cpu: 500m + # -- Initial memory request + memory: 1024Mi + replicaCount: 1 + autoscaling: # -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) enabled: false @@ -290,6 +313,7 @@ runtime: targetCPUUtilizationPercentage: 80 # -- targetAverageUtilization of memory provided to a pod targetMemoryUtilizationPercentage: 80 + # -- configuration of the [Java Util Logging Facade](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) logging: |- .level=INFO @@ -298,37 +322,37 @@ runtime: java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter java.util.logging.ConsoleHandler.level=ALL java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n - # [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes + + # -- [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes nodeSelector: {} - # [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes + # -- [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes tolerations: [] - # [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on + # -- [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on affinity: {} + url: # -- Explicitly declared url for reaching the dsp api (e.g. if ingresses not used) protocol: "" + # -- Explicitly declared url for reaching the public api (e.g. if ingresses not used) public: "" - readiness: "" + vault: # secrets can be seeded by supplying them in a semicolon separated list key1:secret2;key2:secret2 secrets: "" - secretNames: - transferProxyTokenEncryptionAesKey: transfer-proxy-token-encryption-aes-key server: postStart: |- -backendService: - # -- Specifies a backend service which will receive the EDR - httpProxyTokenReceiverUrl: "https://example.com" + serviceAccount: - # Specifies whether a service account should be created + # -- Specifies whether a service account should be created create: true - # Annotations to add to the service account + # -- Annotations to add to the service account annotations: {} - # The name of the service account to use. + # -- The name of the service account to use. # If not set and create is true, a name is generated using the fullname template name: "" # -- Existing image pull secret bound to the service account to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) imagePullSecrets: [] + # -- Configurations for Helm tests tests: # -- Configure the hook-delete-policy for Helm tests diff --git a/charts/tractusx-connector/Chart.yaml b/charts/tractusx-connector/Chart.yaml index c2c6abd07..9034a3471 100644 --- a/charts/tractusx-connector/Chart.yaml +++ b/charts/tractusx-connector/Chart.yaml @@ -41,12 +41,12 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.7.2 +version: 0.7.3 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.7.2" +appVersion: "0.7.3" home: https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector sources: - https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector diff --git a/charts/tractusx-connector/README.md b/charts/tractusx-connector/README.md index a76a0aa0a..7168d2bce 100644 --- a/charts/tractusx-connector/README.md +++ b/charts/tractusx-connector/README.md @@ -1,6 +1,6 @@ # tractusx-connector -![Version: 0.7.2](https://img.shields.io/badge/Version-0.7.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.7.2](https://img.shields.io/badge/AppVersion-0.7.2-informational?style=flat-square) +![Version: 0.7.3](https://img.shields.io/badge/Version-0.7.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.7.3](https://img.shields.io/badge/AppVersion-0.7.3-informational?style=flat-square) A Helm chart for Tractus-X Eclipse Data Space Connector. The connector deployment consists of two runtime consists of a Control Plane and a Data Plane. Note that _no_ external dependencies such as a PostgreSQL database and HashiCorp Vault are included. @@ -44,7 +44,7 @@ Combined, run this shell command to start the in-memory Tractus-X EDC runtime: ```shell helm repo add tractusx-edc https://eclipse-tractusx.github.io/charts/dev -helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ +helm install my-release tractusx-edc/tractusx-connector --version 0.7.3 \ -f /tractusx-connector-test.yaml ``` @@ -63,18 +63,17 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | Key | Type | Default | Description | |-----|------|---------|-------------| -| controlplane.affinity | object | `{}` | | +| controlplane.affinity | object | `{}` | [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on | | controlplane.autoscaling.enabled | bool | `false` | Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | | controlplane.autoscaling.maxReplicas | int | `100` | Maximum replicas if resource consumption exceeds resource threshholds | | controlplane.autoscaling.minReplicas | int | `1` | Minimal replicas if resource consumption falls below resource threshholds | | controlplane.autoscaling.targetCPUUtilizationPercentage | int | `80` | targetAverageUtilization of cpu provided to a pod | | controlplane.autoscaling.targetMemoryUtilizationPercentage | int | `80` | targetAverageUtilization of memory provided to a pod | -| controlplane.bdrs.cache_validity_seconds | int | `600` | | -| controlplane.bdrs.server.url | string | `nil` | | -| controlplane.businessPartnerValidation.log.agreementValidation | bool | `true` | | -| controlplane.debug.enabled | bool | `false` | | -| controlplane.debug.port | int | `1044` | | -| controlplane.debug.suspendOnStart | bool | `false` | | +| controlplane.bdrs.cache_validity_seconds | int | `600` | Time that a cached BPN/DID resolution map is valid in seconds, default is 600 seconds (10 min) | +| controlplane.bdrs.server.url | string | `nil` | URL of the BPN/DID Resolution Service | +| controlplane.debug.enabled | bool | `false` | Enables java debugging mode. | +| controlplane.debug.port | int | `1044` | Port where the debuggee can connect to. | +| controlplane.debug.suspendOnStart | bool | `false` | Defines if the JVM should wait with starting the application until someone connected to the debugging port. | | controlplane.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"metrics":{"path":"/metrics","port":9090},"protocol":{"path":"/api/v1/dsp","port":8084}}` | endpoints of the control plane | | controlplane.endpoints.control | object | `{"path":"/control","port":8083}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | | controlplane.endpoints.control.path | string | `"/control"` | path for incoming api calls | @@ -83,7 +82,7 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | controlplane.endpoints.default.path | string | `"/api"` | path for incoming api calls | | controlplane.endpoints.default.port | int | `8080` | port for incoming api calls | | controlplane.endpoints.management | object | `{"authKey":"password","path":"/management","port":8081}` | data management api, used by internal users, can be added to an ingress and must not be internet facing | -| controlplane.endpoints.management.authKey | string | `"password"` | authentication key, must be attached to each 'X-Api-Key' request header | +| controlplane.endpoints.management.authKey | string | `"password"` | authentication key, must be attached to each request as `X-Api-Key` header | | controlplane.endpoints.management.path | string | `"/management"` | path for incoming api calls | | controlplane.endpoints.management.port | int | `8081` | port for incoming api calls | | controlplane.endpoints.metrics | object | `{"path":"/metrics","port":9090}` | metrics api, used for application metrics, must not be internet facing | @@ -92,12 +91,12 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | controlplane.endpoints.protocol | object | `{"path":"/api/v1/dsp","port":8084}` | dsp api, used for inter connector communication and must be internet facing | | controlplane.endpoints.protocol.path | string | `"/api/v1/dsp"` | path for incoming api calls | | controlplane.endpoints.protocol.port | int | `8084` | port for incoming api calls | -| controlplane.env | object | `{}` | | -| controlplane.envConfigMapNames | list | `[]` | | -| controlplane.envSecretNames | list | `[]` | | -| controlplane.envValueFrom | object | `{}` | | +| controlplane.env | object | `{}` | Extra environment variables that will be pass onto deployment pods | +| controlplane.envConfigMapNames | list | `[]` | [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from | +| controlplane.envSecretNames | list | `[]` | [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from | +| controlplane.envValueFrom | object | `{}` | "valueFrom" environment variable references that will be added to deployment pods. Name is templated. ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core | | controlplane.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | -| controlplane.image.repository | string | `""` | Which derivate of the control plane to use. when left empty the deployment will select the correct image automatically | +| controlplane.image.repository | string | `""` | Which derivate of the control plane to use. When left empty the deployment will select the correct image automatically | | controlplane.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion | | controlplane.ingresses[0].annotations | object | `{}` | Additional ingress annotations to add | | controlplane.ingresses[0].certManager.clusterIssuer | string | `""` | If preset enables certificate generation via cert-manager cluster-wide issuer | @@ -120,8 +119,6 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | controlplane.ingresses[1].tls.enabled | bool | `false` | Enables TLS on the ingress resource | | controlplane.ingresses[1].tls.secretName | string | `""` | If present overwrites the default secret name | | controlplane.initContainers | list | `[]` | | -| controlplane.limits.cpu | float | `1.5` | | -| controlplane.limits.memory | string | `"512Mi"` | | | controlplane.livenessProbe.enabled | bool | `true` | Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | | controlplane.livenessProbe.failureThreshold | int | `6` | when a probe fails kubernetes will try 6 times before giving up | | controlplane.livenessProbe.initialDelaySeconds | int | `30` | seconds to wait before performing the first liveness check | @@ -129,7 +126,7 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | controlplane.livenessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | controlplane.livenessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | controlplane.logging | string | `".level=INFO\norg.eclipse.edc.level=ALL\nhandlers=java.util.logging.ConsoleHandler\njava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter\njava.util.logging.ConsoleHandler.level=ALL\njava.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n"` | configuration of the [Java Util Logging Facade](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) | -| controlplane.nodeSelector | object | `{}` | | +| controlplane.nodeSelector | object | `{}` | [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes | | controlplane.opentelemetry | string | `"otel.javaagent.enabled=false\notel.javaagent.debug=false"` | configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics | | controlplane.podAnnotations | object | `{}` | additional annotations for the pod | | controlplane.podLabels | object | `{}` | additional labels for the pod | @@ -145,24 +142,27 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | controlplane.readinessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | controlplane.readinessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | controlplane.replicaCount | int | `1` | | -| controlplane.requests.cpu | string | `"500m"` | | -| controlplane.requests.memory | string | `"128Mi"` | | -| controlplane.resources | object | `{}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| controlplane.resources | object | `{"limits":{"cpu":1.5,"memory":"1024Mi"},"requests":{"cpu":"500m","memory":"1024Mi"}}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| controlplane.resources.limits.cpu | float | `1.5` | Maximum CPU limit | +| controlplane.resources.limits.memory | string | `"1024Mi"` | Maximum memory limit | +| controlplane.resources.requests.cpu | string | `"500m"` | Initial CPU request | +| controlplane.resources.requests.memory | string | `"1024Mi"` | Initial memory request | | controlplane.securityContext.allowPrivilegeEscalation | bool | `false` | Controls [Privilege Escalation](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privilege-escalation) enabling setuid binaries changing the effective user ID | | controlplane.securityContext.capabilities.add | list | `[]` | Specifies which capabilities to add to issue specialized syscalls | | controlplane.securityContext.capabilities.drop | list | `["ALL"]` | Specifies which capabilities to drop to reduce syscall attack surface | | controlplane.securityContext.readOnlyRootFilesystem | bool | `true` | Whether the root filesystem is mounted in read-only mode | | controlplane.securityContext.runAsNonRoot | bool | `true` | Requires the container to run without root privileges | | controlplane.securityContext.runAsUser | int | `10001` | The container's process will run with the specified uid | -| controlplane.service.annotations | object | `{}` | | +| controlplane.service.annotations | object | `{}` | additional annotations for the service | +| controlplane.service.labels | object | `{}` | additional labels for the service | | controlplane.service.type | string | `"ClusterIP"` | [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. | -| controlplane.tolerations | list | `[]` | | +| controlplane.tolerations | list | `[]` | [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes | | controlplane.url.protocol | string | `""` | Explicitly declared url for reaching the dsp api (e.g. if ingresses not used) | | controlplane.volumeMounts | string | `nil` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | | controlplane.volumes | string | `nil` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | customCaCerts | object | `{}` | Add custom ca certificates to the truststore | -| customLabels | object | `{}` | To add some custom labels | -| dataplane.affinity | object | `{}` | | +| customLabels | object | `{}` | Add some custom labels | +| dataplane.affinity | object | `{}` | [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on | | dataplane.autoscaling.enabled | bool | `false` | Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | | dataplane.autoscaling.maxReplicas | int | `100` | Maximum replicas if resource consumption exceeds resource threshholds | | dataplane.autoscaling.minReplicas | int | `1` | Minimal replicas if resource consumption falls below resource threshholds | @@ -171,26 +171,29 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | dataplane.aws.accessKeyId | string | `""` | | | dataplane.aws.endpointOverride | string | `""` | | | dataplane.aws.secretAccessKey | string | `""` | | -| dataplane.debug.enabled | bool | `false` | | -| dataplane.debug.port | int | `1044` | | -| dataplane.debug.suspendOnStart | bool | `false` | | -| dataplane.endpoints.control.path | string | `"/api/control"` | | -| dataplane.endpoints.control.port | int | `8084` | | -| dataplane.endpoints.default.path | string | `"/api"` | | -| dataplane.endpoints.default.port | int | `8080` | | -| dataplane.endpoints.metrics.path | string | `"/metrics"` | | -| dataplane.endpoints.metrics.port | int | `9090` | | -| dataplane.endpoints.proxy.authKey | string | `"password"` | | -| dataplane.endpoints.proxy.path | string | `"/proxy"` | | -| dataplane.endpoints.proxy.port | int | `8186` | | -| dataplane.endpoints.public.path | string | `"/api/public"` | | -| dataplane.endpoints.public.port | int | `8081` | | -| dataplane.endpoints.signaling.path | string | `"/api/signaling"` | | -| dataplane.endpoints.signaling.port | int | `8083` | | -| dataplane.env | object | `{}` | | -| dataplane.envConfigMapNames | list | `[]` | | -| dataplane.envSecretNames | list | `[]` | | -| dataplane.envValueFrom | object | `{}` | | +| dataplane.debug.enabled | bool | `false` | Enables java debugging mode. | +| dataplane.debug.port | int | `1044` | Port where the debuggee can connect to. | +| dataplane.debug.suspendOnStart | bool | `false` | Defines if the JVM should wait with starting the application until someone connected to the debugging port. | +| dataplane.endpoints | object | `{"control":{"path":"/api/control","port":8084},"default":{"path":"/api","port":8080},"metrics":{"path":"/metrics","port":9090},"proxy":{"authKey":"password","path":"/proxy","port":8186},"public":{"path":"/api/public","port":8081}}` | endpoints of the dataplane | +| dataplane.endpoints.control | object | `{"path":"/api/control","port":8084}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | +| dataplane.endpoints.control.path | string | `"/api/control"` | path for incoming api calls | +| dataplane.endpoints.control.port | int | `8084` | port for incoming api calls | +| dataplane.endpoints.default | object | `{"path":"/api","port":8080}` | default api for health checks, should not be added to any ingress | +| dataplane.endpoints.default.path | string | `"/api"` | path for incoming api calls | +| dataplane.endpoints.default.port | int | `8080` | port for incoming api calls | +| dataplane.endpoints.metrics | object | `{"path":"/metrics","port":9090}` | metrics api, used for application metrics, must not be internet facing | +| dataplane.endpoints.metrics.path | string | `"/metrics"` | path for incoming api calls | +| dataplane.endpoints.metrics.port | int | `9090` | port for incoming api calls | +| dataplane.endpoints.proxy.authKey | string | `"password"` | authentication key, must be attached to each request as `X-Api-Key` header | +| dataplane.endpoints.proxy.path | string | `"/proxy"` | path for incoming api calls | +| dataplane.endpoints.proxy.port | int | `8186` | port for incoming api calls | +| dataplane.endpoints.public | object | `{"path":"/api/public","port":8081}` | public endpoint where the data can be fetched from if HttpPull was used. Must be internet facing. | +| dataplane.endpoints.public.path | string | `"/api/public"` | path for incoming api calls | +| dataplane.endpoints.public.port | int | `8081` | port for incoming api calls | +| dataplane.env | object | `{}` | Extra environment variables that will be pass onto deployment pods | +| dataplane.envConfigMapNames | list | `[]` | [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from | +| dataplane.envSecretNames | list | `[]` | [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from | +| dataplane.envValueFrom | object | `{}` | "valueFrom" environment variable references that will be added to deployment pods. Name is templated. ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core | | dataplane.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | | dataplane.image.repository | string | `""` | Which derivate of the data plane to use. when left empty the deployment will select the correct image automatically | | dataplane.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion | @@ -205,8 +208,6 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | dataplane.ingresses[0].tls.enabled | bool | `false` | Enables TLS on the ingress resource | | dataplane.ingresses[0].tls.secretName | string | `""` | If present overwrites the default secret name | | dataplane.initContainers | list | `[]` | | -| dataplane.limits.cpu | float | `1.5` | | -| dataplane.limits.memory | string | `"1024Mi"` | | | dataplane.livenessProbe.enabled | bool | `true` | Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | | dataplane.livenessProbe.failureThreshold | int | `6` | when a probe fails kubernetes will try 6 times before giving up | | dataplane.livenessProbe.initialDelaySeconds | int | `30` | seconds to wait before performing the first liveness check | @@ -214,7 +215,7 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | dataplane.livenessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | dataplane.livenessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | dataplane.logging | string | `".level=INFO\norg.eclipse.edc.level=ALL\nhandlers=java.util.logging.ConsoleHandler\njava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter\njava.util.logging.ConsoleHandler.level=ALL\njava.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n"` | configuration of the [Java Util Logging Facade](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) | -| dataplane.nodeSelector | object | `{}` | | +| dataplane.nodeSelector | object | `{}` | [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes | | dataplane.opentelemetry | string | `"otel.javaagent.enabled=false\notel.javaagent.debug=false"` | configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics | | dataplane.podAnnotations | object | `{}` | additional annotations for the pod | | dataplane.podLabels | object | `{}` | additional labels for the pod | @@ -230,36 +231,40 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | dataplane.readinessProbe.successThreshold | int | `1` | number of consecutive successes for the probe to be considered successful after having failed | | dataplane.readinessProbe.timeoutSeconds | int | `5` | number of seconds after which the probe times out | | dataplane.replicaCount | int | `1` | | -| dataplane.requests.cpu | string | `"500m"` | | -| dataplane.requests.memory | string | `"128Mi"` | | -| dataplane.resources | object | `{}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| dataplane.resources | object | `{"limits":{"cpu":1.5,"memory":"1024Mi"},"requests":{"cpu":"500m","memory":"1024Mi"}}` | [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container | +| dataplane.resources.limits.cpu | float | `1.5` | Maximum CPU limit | +| dataplane.resources.limits.memory | string | `"1024Mi"` | Maximum memory limit | +| dataplane.resources.requests.cpu | string | `"500m"` | Initial CPU request | +| dataplane.resources.requests.memory | string | `"1024Mi"` | Initial memory request | +| dataplane.securityContext | object | `{"allowPrivilegeEscalation":false,"capabilities":{"add":[],"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsNonRoot":true,"runAsUser":10001}` | The [container security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) defines privilege and access control settings for a Container within a pod | | dataplane.securityContext.allowPrivilegeEscalation | bool | `false` | Controls [Privilege Escalation](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privilege-escalation) enabling setuid binaries changing the effective user ID | | dataplane.securityContext.capabilities.add | list | `[]` | Specifies which capabilities to add to issue specialized syscalls | | dataplane.securityContext.capabilities.drop | list | `["ALL"]` | Specifies which capabilities to drop to reduce syscall attack surface | | dataplane.securityContext.readOnlyRootFilesystem | bool | `true` | Whether the root filesystem is mounted in read-only mode | | dataplane.securityContext.runAsNonRoot | bool | `true` | Requires the container to run without root privileges | | dataplane.securityContext.runAsUser | int | `10001` | The container's process will run with the specified uid | -| dataplane.service.port | int | `80` | | +| dataplane.service.annotations | object | `{}` | additional annotations for the service | +| dataplane.service.labels | object | `{}` | additional labels for the service | | dataplane.service.type | string | `"ClusterIP"` | [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. | -| dataplane.token.refresh.expiry_seconds | int | `300` | | -| dataplane.token.refresh.expiry_tolerance_seconds | int | `10` | | -| dataplane.token.refresh.refresh_endpoint | string | `nil` | | -| dataplane.token.signer.privatekey_alias | string | `nil` | | -| dataplane.token.verifier.publickey_alias | string | `nil` | | -| dataplane.tolerations | list | `[]` | | +| dataplane.token.refresh.expiry_seconds | int | `300` | TTL in seconds for access tokens (also known as EDR token) | +| dataplane.token.refresh.expiry_tolerance_seconds | int | `10` | Tolerance for token expiry in seconds | +| dataplane.token.refresh.refresh_endpoint | string | `nil` | Optional endpoint for an OAuth2 token refresh. Default endpoint is `/token` | +| dataplane.token.signer.privatekey_alias | string | `nil` | Alias under which the private key (JWK or PEM format) is stored in the vault | +| dataplane.token.verifier.publickey_alias | string | `nil` | Alias under which the public key (JWK or PEM format) is stored in the vault, that belongs to the private key which was referred to at `dataplane.token.signer.privatekey_alias` | +| dataplane.tolerations | list | `[]` | [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes | | dataplane.url.public | string | `""` | Explicitly declared url for reaching the public api (e.g. if ingresses not used) | | dataplane.volumeMounts | string | `nil` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | | dataplane.volumes | string | `nil` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | fullnameOverride | string | `""` | | -| iatp.id | string | `"did:web:changeme"` | | -| iatp.sts.dim.url | string | `nil` | | -| iatp.sts.oauth.client.id | string | `nil` | | -| iatp.sts.oauth.client.secret_alias | string | `nil` | | -| iatp.sts.oauth.token_url | string | `nil` | | +| iatp.id | string | `"did:web:changeme"` | Decentralized IDentifier (DID) of the connector | +| iatp.sts.dim.url | string | `nil` | URL where connectors can request SI tokens | +| iatp.sts.oauth.client.id | string | `nil` | Client ID for requesting OAuth2 access token for DIM access | +| iatp.sts.oauth.client.secret_alias | string | `nil` | Alias under which the client secret is stored in the vault for requesting OAuth2 access token for DIM access | +| iatp.sts.oauth.token_url | string | `nil` | URL where connectors can request OAuth2 access tokens for DIM access | | iatp.trustedIssuers | list | `[]` | Configures the trusted issuers for this runtime | | imagePullSecrets | list | `[]` | Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) | -| install.postgresql | bool | `true` | | -| install.vault | bool | `true` | | +| install.postgresql | bool | `true` | Deploying a PostgreSQL instance | +| install.vault | bool | `true` | Deploying a HashiCorp Vault instance | | nameOverride | string | `""` | | | networkPolicy.controlplane | object | `{"from":[{"namespaceSelector":{}}]}` | Configuration of the controlplane component | | networkPolicy.controlplane.from | list | `[{"namespaceSelector":{}}]` | Specify from rule network policy for cp (defaults to all namespaces) | @@ -273,10 +278,10 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | postgresql.jdbcUrl | string | `"jdbc:postgresql://{{ .Release.Name }}-postgresql:5432/edc"` | | | postgresql.primary.persistence.enabled | bool | `false` | | | postgresql.readReplicas.persistence.enabled | bool | `false` | | -| serviceAccount.annotations | object | `{}` | | -| serviceAccount.create | bool | `true` | | +| serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| serviceAccount.create | bool | `true` | Specifies whether a service account should be created | | serviceAccount.imagePullSecrets | list | `[]` | Existing image pull secret bound to the service account to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) | -| serviceAccount.name | string | `""` | | +| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | | tests | object | `{"hookDeletePolicy":"before-hook-creation,hook-succeeded"}` | Configurations for Helm tests | | tests.hookDeletePolicy | string | `"before-hook-creation,hook-succeeded"` | Configure the hook-delete-policy for Helm tests | | vault.hashicorp.healthCheck.enabled | bool | `true` | | @@ -287,12 +292,9 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.7.2 \ | vault.hashicorp.token | string | `"root"` | | | vault.hashicorp.url | string | `"http://{{ .Release.Name }}-vault:8200"` | | | vault.injector.enabled | bool | `false` | | -| vault.secretNames.transferProxyTokenEncryptionAesKey | string | `"transfer-proxy-token-encryption-aes-key"` | | -| vault.secretNames.transferProxyTokenSignerPrivateKey | string | `nil` | | -| vault.secretNames.transferProxyTokenSignerPublicKey | string | `nil` | | | vault.server.dev.devRootToken | string | `"root"` | | | vault.server.dev.enabled | bool | `true` | | | vault.server.postStart | string | `nil` | | ---------------------------------------------- -Autogenerated from chart metadata using [helm-docs v1.10.0](https://github.com/norwoodj/helm-docs/releases/v1.10.0) +Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs/) diff --git a/charts/tractusx-connector/README.md.gotmpl b/charts/tractusx-connector/README.md.gotmpl index 05b0f0f93..de3ef9149 100644 --- a/charts/tractusx-connector/README.md.gotmpl +++ b/charts/tractusx-connector/README.md.gotmpl @@ -56,4 +56,5 @@ helm install my-release tractusx-edc/tractusx-connector --version {{ .Version }} {{ template "chart.valuesSection" . }} -{{ template "helm-docs.versionFooter" . }} +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs/) diff --git a/charts/tractusx-connector/templates/_helpers.tpl b/charts/tractusx-connector/templates/_helpers.tpl index 21581f158..a115b2215 100644 --- a/charts/tractusx-connector/templates/_helpers.tpl +++ b/charts/tractusx-connector/templates/_helpers.tpl @@ -136,17 +136,17 @@ Validation URL {{- end }} {{/* -Control Plane URL +Control Plane Control URL */}} {{- define "txdc.controlplane.url.control" -}} {{- printf "http://%s-controlplane:%v%s" ( include "txdc.fullname" $ ) $.Values.controlplane.endpoints.control.port $.Values.controlplane.endpoints.control.path -}} {{- end }} {{/* -Data Signaling URL +Data Plane Control URL */}} -{{- define "txdc.dataplane.url.signaling" -}} -{{- printf "http://%s-dataplane:%v%s" (include "txdc.fullname" . ) .Values.dataplane.endpoints.signaling.port .Values.dataplane.endpoints.signaling.path -}} +{{- define "txdc.dataplane.url.control" -}} +{{- printf "http://%s-dataplane:%v%s" ( include "txdc.fullname" $ ) $.Values.dataplane.endpoints.control.port $.Values.dataplane.endpoints.control.path -}} {{- end }} {{/* diff --git a/charts/tractusx-connector/templates/deployment-controlplane.yaml b/charts/tractusx-connector/templates/deployment-controlplane.yaml index 423225045..9cf9e6c4b 100644 --- a/charts/tractusx-connector/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector/templates/deployment-controlplane.yaml @@ -273,12 +273,12 @@ spec: ## IATP / STS / DIM CONFIG ## ############################# - name: "EDC_IAM_STS_OAUTH_TOKEN_URL" - value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.oauth.token_url is required" | quote}} + value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.sts.oauth.token_url is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_ID" value: {{ .Values.iatp.sts.oauth.client.id | required ".Values.iatp.sts.oauth.client.id is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_SECRET_ALIAS" value: {{ .Values.iatp.sts.oauth.client.secret_alias | required ".Values.iatp.sts.oauth.client.secret_alias is required" | quote}} - - name: "EDC_IAM_STS_DIM_URL" + - name: "TX_EDC_IAM_STS_DIM_URL" value: {{ .Values.iatp.sts.dim.url | required ".Values.iatp.sts.dim.url is required" | quote}} {{- range $index, $issuer := .Values.iatp.trustedIssuers }} @@ -290,35 +290,13 @@ spec: ## BDRS CLIENT ## ################# - {{- if .Values.controlplane.bdrs.server.url }} - name: "TX_IAM_IATP_BDRS_SERVER_URL" value: {{ .Values.controlplane.bdrs.server.url | required ".Values.controlplane.bdrs.server.url is required" | quote }} - {{- end }} {{- if .Values.controlplane.bdrs.cache_validity_seconds }} - name: "TX_IAM_IATP_BDRS_CACHE_VALIDITY" value: {{ .Values.controlplane.bdrs.cache_validity_seconds | quote}} {{- end}} - ################ - ## DATA PLANE ## - ################ - - # see extension https://github.com/eclipse-tractusx/tractusx-edc/tree/main/edc-extensions/dataplane-selector-configuration - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_URL" - value: {{ include "txdc.dataplane.url.signaling" . }}/v1/dataflows - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_TRANSFERTYPES" - value: "HttpData-PULL,HttpData-PUSH,AmazonS3-PUSH,AzureStorage-PUSH" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_SOURCETYPES" - value: "HttpData,AmazonS3,AzureStorage" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_DESTINATIONTYPES" - value: "HttpData,HttpProxy,AmazonS3,AzureStorage" - - name: "EDC_DATAPLANE_SELECTOR_DEFAULTPLANE_PROPERTIES" - value: |- - {{ printf "{ \"publicApiUrl\": \"%s\" }" (include "txdc.dataplane.url.public" . ) }} - - - - ########### ## VAULT ## ########### @@ -339,16 +317,10 @@ spec: - name: "EDC_VAULT_HASHICORP_API_HEALTH_CHECK_PATH" value: {{ .Values.vault.hashicorp.paths.health | quote }} - ########################### - ## BUSINESS PARTNER NUMBER VALIDATION EXTENSION ## - ########################### - - name: "TRACTUSX_BUSINESSPARTNERVALIDATION_LOG_AGREEMENT_VALIDATION" - value: {{ .Values.controlplane.businessPartnerValidation.log.agreementValidation | quote }} - ###################################### ## Additional environment variables ## ###################################### - - name: "EDC_CONNECTOR_NAME" + - name: "EDC_RUNTIME_ID" value: {{ include "txdc.fullname" .}}-controlplane {{- range $key, $value := .Values.controlplane.envValueFrom }} - name: {{ $key | quote }} diff --git a/charts/tractusx-connector/templates/deployment-dataplane.yaml b/charts/tractusx-connector/templates/deployment-dataplane.yaml index 16f2b8059..d84c9fc83 100644 --- a/charts/tractusx-connector/templates/deployment-dataplane.yaml +++ b/charts/tractusx-connector/templates/deployment-dataplane.yaml @@ -151,16 +151,12 @@ spec: ####### # API # ####### - - name: "EDC_API_AUTH_KEY" - value: {{ .Values.dataplane.endpoints.proxy.authKey | required ".Values.proxy.endpoints.proxy.authKey is required" | quote }} + - name: "TX_EDC_DPF_CONSUMER_PROXY_AUTH_APIKEY" + value: {{ .Values.dataplane.endpoints.proxy.authKey | required ".Values.dataplane.endpoints.proxy.authKey is required" | quote }} - name: "WEB_HTTP_DEFAULT_PORT" value: {{ .Values.dataplane.endpoints.default.port | quote }} - name: "WEB_HTTP_DEFAULT_PATH" value: {{ .Values.dataplane.endpoints.default.path | quote }} - - name: "WEB_HTTP_SIGNALING_PORT" - value: {{ .Values.dataplane.endpoints.signaling.port | quote }} - - name: "WEB_HTTP_SIGNALING_PATH" - value: {{ .Values.dataplane.endpoints.signaling.path | quote }} - name: "WEB_HTTP_CONTROL_PORT" value: {{ .Values.dataplane.endpoints.control.port | quote }} - name: "WEB_HTTP_CONTROL_PATH" @@ -169,8 +165,10 @@ spec: value: {{ .Values.dataplane.endpoints.public.port | quote }} - name: "WEB_HTTP_PUBLIC_PATH" value: {{ .Values.dataplane.endpoints.public.path | quote }} - - name: "EDC_DATAPLANE_TOKEN_VALIDATION_ENDPOINT" - value: {{ include "txdc.controlplane.url.validation" .}} + - name: "EDC_CONTROL_ENDPOINT" + value: {{ include "txdc.dataplane.url.control" . }} + - name: "EDC_DPF_SELECTOR_URL" + value: {{ include "txdc.controlplane.url.control" . }}/v1/dataplanes ####### # AWS # @@ -212,12 +210,12 @@ spec: ## IATP / STS / DIM CONFIG ## ############################# - name: "EDC_IAM_STS_OAUTH_TOKEN_URL" - value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.oauth.token_url is required" | quote}} + value: {{ .Values.iatp.sts.oauth.token_url | required ".Values.iatp.sts.oauth.token_url is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_ID" value: {{ .Values.iatp.sts.oauth.client.id | required ".Values.iatp.sts.oauth.client.id is required" | quote}} - name: "EDC_IAM_STS_OAUTH_CLIENT_SECRET_ALIAS" value: {{ .Values.iatp.sts.oauth.client.secret_alias | required ".Values.iatp.sts.oauth.client.secret_alias is required" | quote}} - - name: "EDC_IAM_STS_DIM_URL" + - name: "TX_EDC_IAM_STS_DIM_URL" value: {{ .Values.iatp.sts.dim.url | required ".Values.iatp.sts.dim.url is required" | quote}} ################ @@ -265,20 +263,20 @@ spec: ## TOKEN REFRESH ################## {{- if .Values.dataplane.token.refresh.expiry_seconds }} - - name: "EDC_DATAPLANE_TOKEN_EXPIRY" + - name: "TX_EDC_DATAPLANE_TOKEN_EXPIRY" value: {{ .Values.dataplane.token.refresh.expiry_seconds | quote}} {{- end}} {{- if .Values.dataplane.token.refresh.expiry_tolerance_seconds }} - - name: "EDC_DATAPLANE_TOKEN_EXPIRY_TOLERANCE" + - name: "TX_EDC_DATAPLANE_TOKEN_EXPIRY_TOLERANCE" value: {{ .Values.dataplane.token.refresh.expiry_tolerance_seconds | quote }} {{- end}} {{- if .Values.dataplane.token.refresh.refresh_endpoint }} - - name: "EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" + - name: "TX_EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" value: {{ .Values.dataplane.token.refresh.refresh_endpoint }} {{- else}} - - name: "EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" + - name: "TX_EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT" value: {{ include "txdc.dataplane.url.public" . }}/token {{- end}} @@ -291,7 +289,7 @@ spec: ###################################### ## Additional environment variables ## ###################################### - - name: "EDC_CONNECTOR_NAME" + - name: "EDC_RUNTIME_ID" value: {{ include "txdc.fullname" .}}-dataplane {{- range $key, $value := .Values.dataplane.envValueFrom }} - name: {{ $key | quote }} diff --git a/charts/tractusx-connector/templates/service-controlplane.yaml b/charts/tractusx-connector/templates/service-controlplane.yaml index f39a69538..400a5d80c 100644 --- a/charts/tractusx-connector/templates/service-controlplane.yaml +++ b/charts/tractusx-connector/templates/service-controlplane.yaml @@ -1,8 +1,8 @@ ################################################################################# -# Copyright (c) 2023 ZF Friedrichshafen AG +# Copyright (c) 2023.2024 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -26,9 +26,16 @@ apiVersion: v1 kind: Service metadata: name: {{ include "txdc.fullname" . }}-controlplane - namespace: {{ .Release.Namespace | default "default" | quote }} + namespace: {{ .Release.Namespace }} + {{- with .Values.controlplane.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} labels: {{- include "txdc.controlplane.labels" . | nindent 4 }} + {{- with .Values.controlplane.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: type: {{ .Values.controlplane.service.type }} ports: diff --git a/charts/tractusx-connector/templates/service-dataplane.yaml b/charts/tractusx-connector/templates/service-dataplane.yaml index 97e8c07ea..6b6e35a70 100644 --- a/charts/tractusx-connector/templates/service-dataplane.yaml +++ b/charts/tractusx-connector/templates/service-dataplane.yaml @@ -1,8 +1,8 @@ ################################################################################# -# Copyright (c) 2023 ZF Friedrichshafen AG +# Copyright (c) 2023,2024 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -26,9 +26,16 @@ apiVersion: v1 kind: Service metadata: name: {{ include "txdc.fullname" . }}-dataplane - namespace: {{ .Release.Namespace | default "default" | quote }} + namespace: {{ .Release.Namespace }} + {{- with .Values.dataplane.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} labels: {{- include "txdc.dataplane.labels" . | nindent 4 }} + {{- with .Values.dataplane.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: type: {{ .Values.dataplane.service.type }} ports: @@ -36,10 +43,10 @@ spec: targetPort: default protocol: TCP name: default - - port: {{ .Values.dataplane.endpoints.signaling.port }} - targetPort: signaling + - port: {{ .Values.dataplane.endpoints.control.port }} + targetPort: control protocol: TCP - name: signaling + name: control - port: {{ .Values.dataplane.endpoints.public.port }} targetPort: public protocol: TCP diff --git a/charts/tractusx-connector/values.yaml b/charts/tractusx-connector/values.yaml index 063e444ec..48e32fda8 100644 --- a/charts/tractusx-connector/values.yaml +++ b/charts/tractusx-connector/values.yaml @@ -1,8 +1,8 @@ ################################################################################# -# Copyright (c) 2023 ZF Friedrichshafen AG +# Copyright (c) 2023,2024 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -20,45 +20,53 @@ # SPDX-License-Identifier: Apache-2.0 ################################################################################# - --- # Default values for eclipse-dataspace-connector. # This is a YAML-formatted file. # Declare variables to be passed into your templates. install: + # -- Deploying a PostgreSQL instance postgresql: true + # -- Deploying a HashiCorp Vault instance vault: true + fullnameOverride: "" nameOverride: "" + # -- Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) imagePullSecrets: [] -# -- To add some custom labels +# -- Add some custom labels customLabels: {} participant: # -- BPN Number id: "BPNLCHANGEME" - iatp: - # Decentralized IDentifier + # -- Decentralized IDentifier (DID) of the connector id: "did:web:changeme" # -- Configures the trusted issuers for this runtime trustedIssuers: [] sts: dim: + # -- URL where connectors can request SI tokens url: oauth: + # -- URL where connectors can request OAuth2 access tokens for DIM access token_url: client: + # -- Client ID for requesting OAuth2 access token for DIM access id: + # -- Alias under which the client secret is stored in the vault for requesting OAuth2 access token for DIM access secret_alias: +# -- Add custom ca certificates to the truststore +customCaCerts: {} controlplane: image: - # -- Which derivate of the control plane to use. when left empty the deployment will select the correct image automatically + # -- Which derivate of the control plane to use. When left empty the deployment will select the correct image automatically repository: "" # -- [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use pullPolicy: IfNotPresent @@ -66,9 +74,13 @@ controlplane: tag: "" initContainers: [] debug: + # -- Enables java debugging mode. enabled: false + # -- Port where the debuggee can connect to. port: 1044 + # -- Defines if the JVM should wait with starting the application until someone connected to the debugging port. suspendOnStart: false + livenessProbe: # -- Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) enabled: true @@ -95,6 +107,7 @@ controlplane: failureThreshold: 6 # -- number of consecutive successes for the probe to be considered successful after having failed successThreshold: 1 + # -- endpoints of the control plane endpoints: # -- default api for health checks, should not be added to any ingress @@ -109,7 +122,7 @@ controlplane: port: 8081 # -- path for incoming api calls path: /management - # -- authentication key, must be attached to each 'X-Api-Key' request header + # -- authentication key, must be attached to each request as `X-Api-Key` header authKey: "password" # -- control api, used for internal control calls. can be added to the internal ingress, but should probably not control: @@ -130,21 +143,21 @@ controlplane: # -- path for incoming api calls path: /metrics - businessPartnerValidation: - log: - agreementValidation: true - bdrs: - # time that a cached BPN/DID resolution map is valid in seconds, default is 10 min + # -- Time that a cached BPN/DID resolution map is valid in seconds, default is 600 seconds (10 min) cache_validity_seconds: 600 server: - # URL of the BPN/DID Resolution Service - required: + # -- URL of the BPN/DID Resolution Service url: service: # -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. type: ClusterIP + # -- additional labels for the service + labels: {} + # -- additional annotations for the service annotations: {} + # -- additional labels for the pod podLabels: {} # -- additional annotations for the pod @@ -176,11 +189,12 @@ controlplane: runAsNonRoot: true # -- The container's process will run with the specified uid runAsUser: 10001 - # Extra environment variables that will be pass onto deployment pods + + # -- Extra environment variables that will be pass onto deployment pods env: {} # ENV_NAME: value - # "valueFrom" environment variable references that will be added to deployment pods. Name is templated. + # -- "valueFrom" environment variable references that will be added to deployment pods. Name is templated. # ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core envValueFrom: {} # ENV_NAME: @@ -191,12 +205,12 @@ controlplane: # name: secret-name # key: value_key - # [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from + # -- [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from envSecretNames: [] # - first-secret # - second-secret - # [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from + # -- [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from envConfigMapNames: [] # - first-config-map # - second-config-map @@ -250,23 +264,27 @@ controlplane: issuer: "" # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" + # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container volumeMounts: # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories volumes: + # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: - cpu: 1.5 - memory: 512Mi - requests: - cpu: 500m - memory: 128Mi + resources: + limits: + # -- Maximum CPU limit + cpu: 1.5 + # -- Maximum memory limit + memory: 1024Mi + requests: + # -- Initial CPU request + cpu: 500m + # -- Initial memory request + memory: 1024Mi + replicaCount: 1 + autoscaling: # -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) enabled: false @@ -278,6 +296,7 @@ controlplane: targetCPUUtilizationPercentage: 80 # -- targetAverageUtilization of memory provided to a pod targetMemoryUtilizationPercentage: 80 + # -- configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics opentelemetry: |- otel.javaagent.enabled=false @@ -290,19 +309,18 @@ controlplane: java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter java.util.logging.ConsoleHandler.level=ALL java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n - # [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes + + # -- [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes nodeSelector: {} - # [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes + # -- [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes tolerations: [] - # [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on + # -- [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on affinity: {} + url: # -- Explicitly declared url for reaching the dsp api (e.g. if ingresses not used) protocol: "" -# -- Add custom ca certificates to the truststore -customCaCerts: {} - dataplane: image: # -- Which derivate of the data plane to use. when left empty the deployment will select the correct image automatically @@ -313,9 +331,13 @@ dataplane: tag: "" initContainers: [] debug: + # -- Enables java debugging mode. enabled: false + # -- Port where the debuggee can connect to. port: 1044 + # -- Defines if the JVM should wait with starting the application until someone connected to the debugging port. suspendOnStart: false + livenessProbe: # -- Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) enabled: true @@ -342,48 +364,69 @@ dataplane: failureThreshold: 6 # -- number of consecutive successes for the probe to be considered successful after having failed successThreshold: 1 + service: # -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. type: ClusterIP - port: 80 + # -- additional labels for the service + labels: {} + # -- additional annotations for the service + annotations: {} + + # -- endpoints of the dataplane endpoints: + # -- default api for health checks, should not be added to any ingress default: + # -- port for incoming api calls port: 8080 + # -- path for incoming api calls path: /api + # -- public endpoint where the data can be fetched from if HttpPull was used. Must be internet facing. public: + # -- port for incoming api calls port: 8081 + # -- path for incoming api calls path: /api/public - signaling: - port: 8083 - path: /api/signaling + # -- control api, used for internal control calls. can be added to the internal ingress, but should probably not control: + # -- port for incoming api calls port: 8084 + # -- path for incoming api calls path: /api/control proxy: + # -- port for incoming api calls port: 8186 + # -- path for incoming api calls path: /proxy + # -- authentication key, must be attached to each request as `X-Api-Key` header authKey: "password" + # -- metrics api, used for application metrics, must not be internet facing metrics: + # -- port for incoming api calls port: 9090 + # -- path for incoming api calls path: /metrics token: refresh: + # -- TTL in seconds for access tokens (also known as EDR token) expiry_seconds: 300 + # -- Tolerance for token expiry in seconds expiry_tolerance_seconds: 10 - # optional URL that can be provided where clients go to refresh tokens. + # -- Optional endpoint for an OAuth2 token refresh. Default endpoint is `/token` refresh_endpoint: signer: - # alias under which the private key is stored in the vault (JWK or PEM format) + # -- Alias under which the private key (JWK or PEM format) is stored in the vault privatekey_alias: verifier: - # alias under which the public key is stored in the vault, that belongs to the private key ("privatekey_alias", JWK or PEM format) + # -- Alias under which the public key (JWK or PEM format) is stored in the vault, that belongs to the private key which was referred to at `dataplane.token.signer.privatekey_alias` publickey_alias: aws: endpointOverride: "" accessKeyId: "" secretAccessKey: "" + # -- additional labels for the pod podLabels: {} # -- additional annotations for the pod @@ -399,7 +442,7 @@ dataplane: runAsGroup: 10001 # -- The owner for volumes and any files created within volumes will belong to this guid fsGroup: 10001 - # The [container security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) defines privilege and access control settings for a Container within a pod + # -- The [container security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) defines privilege and access control settings for a Container within a pod securityContext: capabilities: # -- Specifies which capabilities to drop to reduce syscall attack surface @@ -415,11 +458,12 @@ dataplane: runAsNonRoot: true # -- The container's process will run with the specified uid runAsUser: 10001 - # Extra environment variables that will be pass onto deployment pods + + # -- Extra environment variables that will be pass onto deployment pods env: {} # ENV_NAME: value - # "valueFrom" environment variable references that will be added to deployment pods. Name is templated. + # -- "valueFrom" environment variable references that will be added to deployment pods. Name is templated. # ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core envValueFrom: {} # ENV_NAME: @@ -430,12 +474,12 @@ dataplane: # name: secret-name # key: value_key - # [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from + # -- [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from envSecretNames: [] # - first-secret # - second-secret - # [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from + # -- [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from envConfigMapNames: [] # - first-config-map # - second-config-map @@ -465,23 +509,27 @@ dataplane: issuer: "" # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" + # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container volumeMounts: # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories volumes: + # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: - cpu: 1.5 - memory: 1024Mi - requests: - cpu: 500m - memory: 128Mi + resources: + limits: + # -- Maximum CPU limit + cpu: 1.5 + # -- Maximum memory limit + memory: 1024Mi + requests: + # -- Initial CPU request + cpu: 500m + # -- Initial memory request + memory: 1024Mi + replicaCount: 1 + autoscaling: # -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) enabled: false @@ -493,6 +541,7 @@ dataplane: targetCPUUtilizationPercentage: 80 # -- targetAverageUtilization of memory provided to a pod targetMemoryUtilizationPercentage: 80 + # -- configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics opentelemetry: |- otel.javaagent.enabled=false @@ -505,15 +554,17 @@ dataplane: java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter java.util.logging.ConsoleHandler.level=ALL java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n - # [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes + + # -- [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes nodeSelector: {} - # [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes + # -- [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes tolerations: [] - # [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on + # -- [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on affinity: {} url: # -- Explicitly declared url for reaching the public api (e.g. if ingresses not used) public: "" + postgresql: jdbcUrl: "jdbc:postgresql://{{ .Release.Name }}-postgresql:5432/edc" primary: @@ -526,6 +577,7 @@ postgresql: database: "edc" username: "user" password: "password" + vault: injector: enabled: false @@ -544,10 +596,6 @@ vault: paths: secret: /v1/secret health: /v1/sys/health - secretNames: - transferProxyTokenSignerPrivateKey: - transferProxyTokenSignerPublicKey: - transferProxyTokenEncryptionAesKey: transfer-proxy-token-encryption-aes-key networkPolicy: # -- If `true` network policy will be created to restrict access to control- and dataplane @@ -564,11 +612,11 @@ networkPolicy: - namespaceSelector: {} serviceAccount: - # Specifies whether a service account should be created + # -- Specifies whether a service account should be created create: true - # Annotations to add to the service account + # -- Annotations to add to the service account annotations: {} - # The name of the service account to use. + # -- The name of the service account to use. # If not set and create is true, a name is generated using the fullname template name: "" # -- Existing image pull secret bound to the service account to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) diff --git a/docs/migration/Version_0.5.x_0.7.x.md b/docs/migration/Version_0.5.x_0.7.x.md index 4586c30e1..18b7ab5d2 100644 --- a/docs/migration/Version_0.5.x_0.7.x.md +++ b/docs/migration/Version_0.5.x_0.7.x.md @@ -64,14 +64,11 @@ participant's control plane and data plane. | Helm value | Environment value | required | default value | description | |----------------------------------------------------|-----------------------------------------------------|----------|----------------------|-----------------------------------------------------------| -| `dataplane.token.refresh.expiry_seconds` | `EDC_DATAPLANE_TOKEN_EXPIRY` | | 30 | TTL for access tokens | -| `dataplane.token.refresh.expiry_tolerance_seconds` | `EDC_DATAPLANE_TOKEN_EXPIRY_TOLERANCE` | | 10 | tolerance for token expiry | -| `dataplane.token.refresh.refresh_endpoint` | `EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT` | | `/token` | endpoint for an OAuth2 token refresh request | -| `dataplane.token.refresh.refresh_endpoint` | `EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT` | | `/token` | endpoint for an OAuth2 token refresh request | +| `dataplane.token.refresh.expiry_seconds` | `TX_EDC_DATAPLANE_TOKEN_EXPIRY` | | 30 | TTL for access tokens | +| `dataplane.token.refresh.expiry_tolerance_seconds` | `TX_EDC_DATAPLANE_TOKEN_EXPIRY_TOLERANCE` | | 10 | tolerance for token expiry | +| `dataplane.token.refresh.refresh_endpoint` | `TX_EDC_DATAPLANE_TOKEN_REFRESH_ENDPOINT` | | `/token` | endpoint for an OAuth2 token refresh request | | `dataplane.token.signer.privatekey_alias` | `EDC_TRANSFER_PROXY_TOKEN_SIGNER_PRIVATEKEY_ALIAS` | x | | alias, under which the private key is stored in the vault | | `dataplane.token.verifier.publickey_alias` | `EDC_TRANSFER_PROXY_TOKEN_VERIFIER_PUBLICKEY_ALIAS` | x | | alias, under which the public key is stored in the vault | -| `dataplane.endpoints.signaling.port` | `WEB_HTTP_SIGNALING_PORT` | | 8083 | port where the Signaling API is exposed | -| `dataplane.endpoints.signaling.path` | `WEB_HTTP_SIGNALING_PATH` | | `/api/signaling` | path where the Signaling API is exposed | ### 1.6 Further references @@ -89,7 +86,8 @@ participant's control plane and data plane. The setting `backendService.httpProxyTokenReceiverUrl`, which configured an EDR receiver backend using the upstream EDC [extension](https://github.com/eclipse-edc/Connector/tree/main/extensions/control-plane/transfer/transfer-pull-http-dynamic-receiver) is no longer available as well as the extension is not shipped in the Tractus-X EDC 0.7.x distributions. -Likewise, the option to dynamically register a consumer-side HTTP-callback via `receiverHttpEndpoint` in the POST /transferprocesses call was removed. Consumer apps should use the /v2/edrs API instead. +Likewise, the option to dynamically register a consumer-side HTTP-callback via `receiverHttpEndpoint` in the POST +/transferprocesses call was removed. Consumer apps should use the /v2/edrs API instead. The main reason is that EDC/Tractus-X-EDC switched to Dataplane Signaling for handling transfers and the EDR format specified in @@ -174,7 +172,7 @@ the connector. |--------------------------------------|-----------------------------------------------|----------|---------------|---------------------------------------------------------------| | `iatp.id` | `EDC_IAM_ISSUER_ID` | x | | DID, e.g. `did:web:your connector` | | `iatp.trustedIssuers` | `EDC_IAM_TRUSTED-ISSUER_{{$index}}-ISSUER_ID` | x | | a list of DIDs, each representing an issuer of VCs | -| `iatp.sts.dim.url` | `EDC_IAM_STS_DIM_URL` | x | | URL where connectors can request SI tokens | +| `iatp.sts.dim.url` | `TX_EDC_IAM_STS_DIM_URL` | x | | URL where connectors can request SI tokens | | `iatp.sts.oauth.token_url` | `EDC_IAM_STS_OAUTH_TOKEN_URL` | x | | URL where connectors can request OAuth2 access tokens for DIM | | `iatp.sts.oauth.client.id` | `EDC_IAM_STS_OAUTH_CLIENT_ID` | x | | Client ID issued by DIM | | `iatp.sts.oauth.client.secret_alias` | `EDC_IAM_STS_OAUTH_CLIENT_SECRET_ALIAS` | x | | alias under which the client secret is stored in the vault | @@ -238,7 +236,8 @@ this [test class](https://github.com/eclipse-tractusx/tractusx-edc/blob/main/edc ### 5.0 Policies -Due to [#4192](https://github.com/eclipse-edc/Connector/issues/4192) and [#4179](https://github.com/eclipse-edc/Connector/issues/4179) +Due to [#4192](https://github.com/eclipse-edc/Connector/issues/4192) +and [#4179](https://github.com/eclipse-edc/Connector/issues/4179) The `action` and the `leftOperand` field are now represented as `@id` instead of `value` in JSON-LD. @@ -253,6 +252,7 @@ The `action` and the `leftOperand` field are now represented as `@id` instead of } } ``` + to: ```json @@ -271,7 +271,7 @@ to: } ``` -to: +to: ```json { @@ -288,8 +288,6 @@ This is reflected in the `Catalog` as well as in `PolicyDefinition` API. - `counterPartyId` is a **required** property for the catalog request in Tractus-X EDC. It's not enforced currently ( backward compatibility) but if not provided, the IATP flows won't work and thus the catalog request will fail. - - ### 5.2 Transfer Process - `transferType` is a needed property for the transfer request to be working in tx-edc. `transferTypes` are the @@ -334,4 +332,4 @@ the [EDR API documentation](https://github.com/eclipse-tractusx/tractusx-edc/blo - `EDC_VAULT_CLIENTID` was replaced by `AZURE_CLIENT_ID` - `EDC_VAULT_TENANTID` was replaced by `AZURE_TENANT_ID` - `EDC_VAULT_CLIENTSECRET` was replaced by `AZURE_CLIENT_SECRET` - - `EDC_VAULT_CERTIFICATE` was replaced by `AZURE_CLIENT_CERTIFICATE_PATH` \ No newline at end of file + - `EDC_VAULT_CERTIFICATE` was replaced by `AZURE_CLIENT_CERTIFICATE_PATH` diff --git a/docs/usage/management-api-walkthrough/07_edrs.md b/docs/usage/management-api-walkthrough/07_edrs.md index 64b55a9fe..ee32a5bff 100644 --- a/docs/usage/management-api-walkthrough/07_edrs.md +++ b/docs/usage/management-api-walkthrough/07_edrs.md @@ -32,7 +32,7 @@ Example of negotiating a contract for an asset with a framework agreement policy ```http request POST /v2/edrs HTTP/1.1 -Host: https://consumer-control.plane/api/management +Host: https://consumer-control.plane/management X-Api-Key: password Content-Type: application/json ``` @@ -124,7 +124,7 @@ Here's an example of querying with `assetId`: ```http request POST /v2/edrs/request HTTP/1.1 -Host: https://consumer-control.plane/api/management +Host: https://consumer-control.plane/management X-Api-Key: password Content-Type: application/json ``` @@ -162,7 +162,7 @@ then locating in the Consumer Control Plane's cache, they can be retrieved using ```http request GET /v2/edrs/myTransferProcessId/dataaddress HTTP/1.1 -Host: https://consumer-control.plane/api/management +Host: https://consumer-control.plane/management X-Api-Key: password Content-Type: application/json ``` @@ -209,7 +209,7 @@ will be done automatically if necessary transparently. ```http request GET /v2/edrs/myTransferProcessId/dataaddress?auto_refresh=true HTTP/1.1 -Host: https://consumer-control.plane/api/management +Host: https://consumer-control.plane/management X-Api-Key: password Content-Type: application/json ``` @@ -222,7 +222,7 @@ A explicit refresh API is available for users; ```http POST /v2/edrs/myTransferProcessId/refresh HTTP/1.1 -Host: https://consumer-control.plane/api/management +Host: https://consumer-control.plane/management X-Api-Key: password Content-Type: application/json ``` @@ -241,7 +241,7 @@ from the vault. ```http request DELETE /v2/edrs/myTransferProcessId HTTP/1.1 -Host: https://consumer-control.plane/api/management +Host: https://consumer-control.plane/management X-Api-Key: password Content-Type: application/json ``` diff --git a/edc-controlplane/edc-controlplane-base/build.gradle.kts b/edc-controlplane/edc-controlplane-base/build.gradle.kts index 6febbd242..e17edd8e0 100644 --- a/edc-controlplane/edc-controlplane-base/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-base/build.gradle.kts @@ -25,7 +25,6 @@ plugins { dependencies { runtimeOnly(project(":core:edr-core")) runtimeOnly(project(":edc-extensions:dataplane:dataplane-selector-configuration")) - runtimeOnly(project(":edc-extensions:provision-additional-headers")) runtimeOnly(project(":edc-extensions:edr:edr-api-v2")) runtimeOnly(project(":edc-extensions:edr:edr-callback")) @@ -58,10 +57,12 @@ dependencies { runtimeOnly(libs.edc.config.filesystem) runtimeOnly(libs.edc.auth.tokenbased) runtimeOnly(libs.edc.validator.data.address.http.data) + runtimeOnly(libs.edc.data.plane.selector.control.api) runtimeOnly(libs.edc.api.management) runtimeOnly(libs.edc.api.controlplane) runtimeOnly(libs.edc.api.management.config) + runtimeOnly(libs.edc.api.control.config) runtimeOnly(libs.edc.api.core) runtimeOnly(libs.edc.api.observability) runtimeOnly(libs.edc.dsp) diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md index 99bb8af11..662454948 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md @@ -5,7 +5,7 @@ This version of the EDC Control-Plane is backed by [PostgreSQL](https://www.post ## Building ```shell -./gardlew :edc-controlplane:edc-controlplane-postgresql-hashicorp-vault:dockerize +./gradlew :edc-controlplane:edc-controlplane-postgresql-hashicorp-vault:dockerize ``` ## Configuration diff --git a/edc-controlplane/edc-runtime-memory/build.gradle.kts b/edc-controlplane/edc-runtime-memory/build.gradle.kts index fb20ab45c..34c05b3dd 100644 --- a/edc-controlplane/edc-runtime-memory/build.gradle.kts +++ b/edc-controlplane/edc-runtime-memory/build.gradle.kts @@ -27,7 +27,9 @@ dependencies { implementation(project(":core:core-utils")) implementation(libs.edc.spi.core) runtimeOnly(project(":edc-controlplane:edc-controlplane-base")) - runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) + runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) { + exclude("org.eclipse.edc", "data-plane-selector-client") + } runtimeOnly(libs.edc.core.controlplane) testImplementation(libs.edc.junit) testImplementation(libs.edc.lib.boot) diff --git a/edc-dataplane/edc-dataplane-azure-vault/README.md b/edc-dataplane/edc-dataplane-azure-vault/README.md index 6fedc1823..2eb593f0d 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/README.md +++ b/edc-dataplane/edc-dataplane-azure-vault/README.md @@ -5,7 +5,7 @@ This build of the EDC Data-Plane utilizes [Azure Key Vault](https://azure.micros ## Building ```shell -./gardlew :edc-dataplane:edc-dataplane-azure-vault:dockerize +./gradlew :edc-dataplane:edc-dataplane-azure-vault:dockerize ``` ## Configuration diff --git a/edc-dataplane/edc-dataplane-base/README.md b/edc-dataplane/edc-dataplane-base/README.md index 89ec91506..b7edeeece 100644 --- a/edc-dataplane/edc-dataplane-base/README.md +++ b/edc-dataplane/edc-dataplane-base/README.md @@ -3,5 +3,5 @@ ## Building ```shell -./gardlew :edc-dataplane:edc-dataplane-base:build +./gradlew :edc-dataplane:edc-dataplane-base:build ``` diff --git a/edc-dataplane/edc-dataplane-base/build.gradle.kts b/edc-dataplane/edc-dataplane-base/build.gradle.kts index e7285164f..ca2b2a112 100644 --- a/edc-dataplane/edc-dataplane-base/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-base/build.gradle.kts @@ -34,7 +34,6 @@ dependencies { runtimeOnly(libs.edc.core.did) // for the DID Public Key Resolver runtimeOnly(libs.edc.identity.did.web) runtimeOnly(libs.edc.config.filesystem) - runtimeOnly(libs.edc.auth.tokenbased) runtimeOnly(libs.edc.dpf.awss3) runtimeOnly(libs.edc.dpf.azblob) runtimeOnly(libs.edc.dpf.oauth2) @@ -43,9 +42,12 @@ dependencies { runtimeOnly(libs.edc.dpf.core) runtimeOnly(libs.edc.controlplane.apiclient) + runtimeOnly(libs.edc.data.plane.selector.client) + runtimeOnly(libs.edc.data.plane.self.registration) runtimeOnly(libs.edc.dpf.api.control) runtimeOnly(libs.edc.dpf.api.signaling) + runtimeOnly(libs.edc.api.control.config) runtimeOnly(libs.edc.dpf.api.public.v2) runtimeOnly(libs.edc.core.connector) runtimeOnly(libs.edc.boot) @@ -54,4 +56,5 @@ dependencies { runtimeOnly(libs.bundles.edc.monitoring) runtimeOnly(libs.edc.ext.http) runtimeOnly(libs.edc.api.observability) + runtimeOnly(libs.edc.api.core) } diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/README.md b/edc-dataplane/edc-dataplane-hashicorp-vault/README.md index a4ee253f0..ab15775d5 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/README.md +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/README.md @@ -5,7 +5,7 @@ This build of the EDC Data-Plane utilizes [Hashicorp Vault](https://www.vaultpro ## Building ```shell -./gardlew :edc-dataplane:edc-dataplane-hashicorp-vault:dockerize +./gradlew :edc-dataplane:edc-dataplane-hashicorp-vault:dockerize ``` ## Configuration diff --git a/edc-extensions/bdrs-client/src/main/java/org/eclipse/tractusx/edc/identity/mapper/BdrsClientAudienceMapper.java b/edc-extensions/bdrs-client/src/main/java/org/eclipse/tractusx/edc/identity/mapper/BdrsClientAudienceMapper.java index fbfa0b434..813b83df3 100644 --- a/edc-extensions/bdrs-client/src/main/java/org/eclipse/tractusx/edc/identity/mapper/BdrsClientAudienceMapper.java +++ b/edc-extensions/bdrs-client/src/main/java/org/eclipse/tractusx/edc/identity/mapper/BdrsClientAudienceMapper.java @@ -20,9 +20,12 @@ package org.eclipse.tractusx.edc.identity.mapper; import org.eclipse.edc.spi.iam.AudienceResolver; +import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.spi.types.domain.message.RemoteMessage; import org.eclipse.tractusx.edc.spi.identity.mapper.BdrsClient; +import java.util.Optional; + /** * An incoming {@link RemoteMessage} is mapped to a DID by calling {@link BdrsClient#resolve(String)} with the {@link RemoteMessage#getCounterPartyId()} */ @@ -35,8 +38,8 @@ class BdrsClientAudienceMapper implements AudienceResolver { } @Override - public String resolve(RemoteMessage remoteMessage) { - return client.resolve(remoteMessage.getCounterPartyId()); + public Result resolve(RemoteMessage remoteMessage) { + return Result.from(Optional.ofNullable(client.resolve(remoteMessage.getCounterPartyId()))); } } diff --git a/edc-extensions/bdrs-client/src/test/java/org/eclipse/tractusx/edc/identity/mapper/BdrsClientAudienceMapperTest.java b/edc-extensions/bdrs-client/src/test/java/org/eclipse/tractusx/edc/identity/mapper/BdrsClientAudienceMapperTest.java index 4f6cc2649..42c524f98 100644 --- a/edc-extensions/bdrs-client/src/test/java/org/eclipse/tractusx/edc/identity/mapper/BdrsClientAudienceMapperTest.java +++ b/edc-extensions/bdrs-client/src/test/java/org/eclipse/tractusx/edc/identity/mapper/BdrsClientAudienceMapperTest.java @@ -23,7 +23,7 @@ import org.eclipse.tractusx.edc.spi.identity.mapper.BdrsClient; import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.edc.junit.assertions.AbstractResultAssert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -40,7 +40,7 @@ void resolve() { var did = clientAudienceMapper.resolve(new TestMessage("bpn1")); - assertThat(did).isEqualTo("did:web:did1"); + assertThat(did).isSucceeded().isEqualTo("did:web:did1"); } @@ -51,7 +51,7 @@ void resolve_notFound() { var did = clientAudienceMapper.resolve(new TestMessage("bpn1")); - assertThat(did).isNull(); + assertThat(did).isFailed(); } diff --git a/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java index f6bef816f..d0cef588f 100644 --- a/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java @@ -19,13 +19,13 @@ package org.eclipse.tractusx.edc.api.bpn; -import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration; import org.eclipse.edc.jsonld.spi.JsonLd; import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.web.spi.WebService; +import org.eclipse.edc.web.spi.configuration.ApiContext; import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.TX_NAMESPACE; @@ -37,8 +37,6 @@ public class BusinessPartnerGroupApiExtension implements ServiceExtension { @Inject private WebService webService; @Inject - private ManagementApiConfiguration apiConfiguration; - @Inject private JsonLd jsonLdService; @Inject private BusinessPartnerStore businessPartnerStore; @@ -47,7 +45,7 @@ public class BusinessPartnerGroupApiExtension implements ServiceExtension { public void initialize(ServiceExtensionContext context) { jsonLdService.registerNamespace(TX_PREFIX, TX_NAMESPACE); - webService.registerResource(apiConfiguration.getContextAlias(), new BusinessPartnerGroupApiController(businessPartnerStore)); + webService.registerResource(ApiContext.MANAGEMENT, new BusinessPartnerGroupApiController(businessPartnerStore)); } } diff --git a/edc-extensions/dataplane/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/DataPlaneProxyConsumerApiExtension.java b/edc-extensions/dataplane/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/DataPlaneProxyConsumerApiExtension.java index 43af0b59f..4aea357ac 100644 --- a/edc-extensions/dataplane/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/DataPlaneProxyConsumerApiExtension.java +++ b/edc-extensions/dataplane/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/DataPlaneProxyConsumerApiExtension.java @@ -21,11 +21,13 @@ import org.eclipse.edc.api.auth.spi.AuthenticationRequestFilter; import org.eclipse.edc.api.auth.spi.AuthenticationService; +import org.eclipse.edc.api.auth.spi.registry.ApiAuthenticationRegistry; import org.eclipse.edc.connector.dataplane.spi.pipeline.PipelineService; import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Setting; import org.eclipse.edc.spi.monitor.Monitor; +import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.web.spi.WebServer; @@ -36,8 +38,10 @@ import org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.asset.ConsumerAssetRequestController; import org.eclipse.tractusx.edc.edr.spi.service.EdrService; +import java.util.UUID; import java.util.concurrent.ExecutorService; +import static java.util.Optional.ofNullable; import static java.util.concurrent.Executors.newFixedThreadPool; import static org.eclipse.tractusx.edc.core.utils.ConfigUtil.propertyCompatibility; @@ -47,6 +51,10 @@ @Extension(value = DataPlaneProxyConsumerApiExtension.NAME) public class DataPlaneProxyConsumerApiExtension implements ServiceExtension { public static final int DEFAULT_THREAD_POOL = 10; + @Setting("Vault alias for the Consumer Proxy API key") + public static final String AUTH_SETTING_CONSUMER_PROXY_APIKEY_ALIAS = "tx.edc.dpf.consumer.proxy.auth.apikey.alias"; + @Setting("API key for the Consumer Proxy API") + public static final String AUTH_SETTING_CONSUMER_PROXY_APIKEY = "tx.edc.dpf.consumer.proxy.auth.apikey"; static final String NAME = "Data Plane Proxy Consumer API"; private static final int DEFAULT_PROXY_PORT = 8186; private static final String CONSUMER_API_ALIAS = "consumer.api"; @@ -60,6 +68,10 @@ public class DataPlaneProxyConsumerApiExtension implements ServiceExtension { private static final String THREAD_POOL_SIZE = "tx.edc.dpf.consumer.proxy.thread.pool"; @Deprecated(since = "0.7.1") private static final String THREAD_POOL_SIZE_DEPRECATED = "tx.dpf.consumer.proxy.thread.pool"; + @Deprecated(since = "0.7.1") + private static final String AUTH_SETTING_APIKEY_ALIAS_DEPRECATED = "edc.api.auth.key.alias"; + @Deprecated(since = "0.7.1") + private static final String AUTH_SETTING_APIKEY_DEPRECATED = "edc.api.auth.key"; @Inject private WebService webService; @@ -76,7 +88,10 @@ public class DataPlaneProxyConsumerApiExtension implements ServiceExtension { private WebServiceConfigurer configurer; @Inject - private AuthenticationService authenticationService; + private Vault vault; + + @Inject + private ApiAuthenticationRegistry apiAuthenticationRegistry; @Inject private Monitor monitor; @@ -91,13 +106,19 @@ public String name() { @Override public void initialize(ServiceExtensionContext context) { var port = propertyCompatibility(context, CONSUMER_PORT, CONSUMER_PORT_DEPRECATED, DEFAULT_PROXY_PORT); + var config = context.getConfig(CONSUMER_CONFIG_KEY); - configurer.configure(context, webServer, createApiContext(port)); + configurer.configure(config, webServer, createApiContext(port)); var poolSize = propertyCompatibility(context, THREAD_POOL_SIZE, THREAD_POOL_SIZE_DEPRECATED, DEFAULT_THREAD_POOL); executorService = newFixedThreadPool(poolSize); - webService.registerResource(CONSUMER_API_ALIAS, new AuthenticationRequestFilter(authenticationService)); + var authenticationService = createAuthenticationService(context); + apiAuthenticationRegistry.register(CONSUMER_API_ALIAS, authenticationService); + + var authenticationFilter = new AuthenticationRequestFilter(apiAuthenticationRegistry, CONSUMER_API_ALIAS); + webService.registerResource(CONSUMER_API_ALIAS, authenticationFilter); + webService.registerResource(CONSUMER_API_ALIAS, new ClientErrorExceptionMapper()); webService.registerResource(CONSUMER_API_ALIAS, new ConsumerAssetRequestController(edrService, pipelineService, executorService, monitor)); } @@ -109,6 +130,14 @@ public void shutdown() { } } + private AuthenticationService createAuthenticationService(ServiceExtensionContext context) { + + var apiKey = ofNullable(propertyCompatibility(context, AUTH_SETTING_CONSUMER_PROXY_APIKEY_ALIAS, AUTH_SETTING_APIKEY_ALIAS_DEPRECATED, null)) + .map(alias -> vault.resolveSecret(alias)) + .orElseGet(() -> propertyCompatibility(context, AUTH_SETTING_CONSUMER_PROXY_APIKEY, AUTH_SETTING_APIKEY_DEPRECATED, UUID.randomUUID().toString())); + return new TokenBasedAuthenticationService(context.getMonitor().withPrefix("ConsumerProxyAPI"), apiKey); + } + private WebServiceSettings createApiContext(int port) { return WebServiceSettings.Builder.newInstance() .apiConfigKey(CONSUMER_CONFIG_KEY) diff --git a/edc-extensions/dataplane/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/TokenBasedAuthenticationService.java b/edc-extensions/dataplane/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/TokenBasedAuthenticationService.java new file mode 100644 index 000000000..14ecbbdb7 --- /dev/null +++ b/edc-extensions/dataplane/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/TokenBasedAuthenticationService.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api; + +import org.eclipse.edc.api.auth.spi.AuthenticationService; +import org.eclipse.edc.spi.monitor.Monitor; +import org.eclipse.edc.web.spi.exception.AuthenticationFailedException; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * This is a carbon-copy of the upstream EDC org.eclipse.edc.api.auth.token.TokenBasedAuthenticationService. + * + * @deprecated this is a shim that we need to use until upstream EDC has made the TokenBasedAuthenticationService available for standalone use. + */ +@Deprecated(since = "0.7.2") +public class TokenBasedAuthenticationService implements AuthenticationService { + + public static final String TEMPORARY_USE_WARNING = "The '%s' is only here temporarily and should be replaced with the upstream variant once that is available for standalone use!".formatted(TokenBasedAuthenticationService.class); + private static final String API_KEY_HEADER_NAME = "x-api-key"; + private final Monitor monitor; + private final String hardCodedApiKey; //todo: have a list of API keys? + + public TokenBasedAuthenticationService(Monitor monitor, String hardCodedApiKey) { + this.monitor = monitor; + this.hardCodedApiKey = hardCodedApiKey; + monitor.warning(TEMPORARY_USE_WARNING); + } + + /** + * Checks whether a particular request is authorized based on the "X-Api-Key" header. + * + * @param headers The headers, that have to contain the "X-Api-Key" header. + * @throws IllegalArgumentException The map of headers did not contain the "X-Api-Key" header + */ + @Override + public boolean isAuthenticated(Map> headers) { + monitor.warning(TEMPORARY_USE_WARNING); + + Objects.requireNonNull(headers, "headers"); + + var apiKey = headers.keySet().stream() + .filter(k -> k.equalsIgnoreCase(API_KEY_HEADER_NAME)) + .map(headers::get) + .findFirst(); + + return apiKey.map(this::checkApiKeyValid).orElseThrow(() -> new AuthenticationFailedException(API_KEY_HEADER_NAME + " not found")); + } + + private boolean checkApiKeyValid(List apiKeys) { + return apiKeys.size() == 1 && apiKeys.stream().allMatch(hardCodedApiKey::equalsIgnoreCase); + } +} diff --git a/edc-extensions/dataplane/dataplane-selector-configuration/src/main/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtension.java b/edc-extensions/dataplane/dataplane-selector-configuration/src/main/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtension.java index a1f175d58..af3301554 100644 --- a/edc-extensions/dataplane/dataplane-selector-configuration/src/main/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtension.java +++ b/edc-extensions/dataplane/dataplane-selector-configuration/src/main/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtension.java @@ -40,6 +40,7 @@ import static java.lang.String.format; import static java.lang.String.join; +@Deprecated(since = "0.7.2") @Requires({ DataPlaneSelectorService.class }) public class DataPlaneSelectorConfigurationServiceExtension implements ServiceExtension { @@ -51,7 +52,7 @@ public class DataPlaneSelectorConfigurationServiceExtension implements ServiceEx public static final String PROPERTIES_SUFFIX = "properties"; public static final String PUBLIC_API_URL_PROPERTY = "publicApiUrl"; - private static final String NAME = "Data Plane Selector Configuration Extension"; + private static final String NAME = "DEPRECATED: Data Plane Selector Configuration Extension"; private static final String COMMA = ","; private static final String LOG_MISSING_CONFIGURATION = NAME + ": Missing configuration for " + CONFIG_PREFIX + ".%s.%s"; private static final String LOG_SKIP_BC_MISSING_CONFIGURATION = NAME + ": Configuration issues. Skip registering of Data Plane Instance '%s'"; @@ -66,12 +67,11 @@ public String name() { } @Override - public void initialize(final ServiceExtensionContext serviceExtensionContext) { - this.dataPlaneSelectorService = - serviceExtensionContext.getService(DataPlaneSelectorService.class); - this.monitor = serviceExtensionContext.getMonitor(); + public void initialize(ServiceExtensionContext context) { + this.dataPlaneSelectorService = context.getService(DataPlaneSelectorService.class); + this.monitor = context.getMonitor(); - var config = serviceExtensionContext.getConfig(CONFIG_PREFIX); + var config = context.getConfig(CONFIG_PREFIX); config.partition().forEach(this::configureDataPlaneInstance); } @@ -79,6 +79,12 @@ public void initialize(final ServiceExtensionContext serviceExtensionContext) { private void configureDataPlaneInstance(final Config config) { var id = config.currentNode(); + monitor.warning(""" + The dataplane-selector-configuration has been deprecated, as now data-planes can register themselves + through the data-plane-self-registration extension. Please remove the 'edc.dataplane.selector.%s' config + group and configure your data-plane accordingly + """.formatted(id)); + var url = config.getString(URL_SUFFIX, ""); var sourceTypes = Arrays.stream(config.getString(SOURCE_TYPES_SUFFIX, "").split(COMMA)) diff --git a/edc-extensions/dataplane/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionTest.java b/edc-extensions/dataplane/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionTest.java index 5d6efdd89..45e0176f1 100644 --- a/edc-extensions/dataplane/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionTest.java +++ b/edc-extensions/dataplane/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionTest.java @@ -38,6 +38,7 @@ import java.util.Map; import java.util.stream.Stream; +import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.tractusx.edc.dataplane.selector.configuration.DataPlaneSelectorConfigurationServiceExtension.CONFIG_PREFIX; import static org.eclipse.tractusx.edc.dataplane.selector.configuration.DataPlaneSelectorConfigurationServiceExtension.DESTINATION_TYPES_SUFFIX; import static org.eclipse.tractusx.edc.dataplane.selector.configuration.DataPlaneSelectorConfigurationServiceExtension.PROPERTIES_SUFFIX; @@ -45,8 +46,6 @@ import static org.eclipse.tractusx.edc.dataplane.selector.configuration.DataPlaneSelectorConfigurationServiceExtension.SOURCE_TYPES_SUFFIX; import static org.eclipse.tractusx.edc.dataplane.selector.configuration.DataPlaneSelectorConfigurationServiceExtension.TRANSFER_TYPES_SUFFIX; import static org.eclipse.tractusx.edc.dataplane.selector.configuration.DataPlaneSelectorConfigurationServiceExtension.URL_SUFFIX; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.argThat; @@ -87,8 +86,7 @@ void setup() { void testName() { var extension = new DataPlaneSelectorConfigurationServiceExtension(); - assertNotNull(extension.name()); - assertEquals("Data Plane Selector Configuration Extension", extension.name()); + assertThat(extension.name()).contains("Data Plane Selector Configuration Extension"); } @Test @@ -124,8 +122,8 @@ void testWarningOnPropertyMissing(String configKey, String configValue) { when(serviceExtensionContext.getConfig(CONFIG_PREFIX)).thenReturn(config); extension.initialize(serviceExtensionContext); - // one warning config missing, one warning data plane instance skipped - verify(monitor, times(2)).warning(anyString()); + // one warning deprecation, one warning config missing, one warning data plane instance skipped + verify(monitor, times(3)).warning(anyString()); } @Test diff --git a/edc-extensions/dataplane/dataplane-token-refresh/token-refresh-core/src/main/java/org/eclipse/tractusx/edc/dataplane/tokenrefresh/core/DataPlaneTokenRefreshServiceExtension.java b/edc-extensions/dataplane/dataplane-token-refresh/token-refresh-core/src/main/java/org/eclipse/tractusx/edc/dataplane/tokenrefresh/core/DataPlaneTokenRefreshServiceExtension.java index 4754d07e5..bc2eb90e1 100644 --- a/edc-extensions/dataplane/dataplane-token-refresh/token-refresh-core/src/main/java/org/eclipse/tractusx/edc/dataplane/tokenrefresh/core/DataPlaneTokenRefreshServiceExtension.java +++ b/edc-extensions/dataplane/dataplane-token-refresh/token-refresh-core/src/main/java/org/eclipse/tractusx/edc/dataplane/tokenrefresh/core/DataPlaneTokenRefreshServiceExtension.java @@ -63,14 +63,10 @@ public class DataPlaneTokenRefreshServiceExtension implements ServiceExtension { public static final String REFRESH_ENDPOINT_PROPERTY_DEPRECATED = "edc.dataplane.token.refresh.endpoint"; @Setting(value = "Alias of private key used for signing tokens, retrieved from private key resolver") - public static final String TOKEN_SIGNER_PRIVATE_KEY_ALIAS = "tx.edc.transfer.proxy.token.signer.privatekey.alias"; - @Deprecated(since = "0.7.1") - public static final String TOKEN_SIGNER_PRIVATE_KEY_ALIAS_DEPRECATED = "edc.transfer.proxy.token.signer.privatekey.alias"; + public static final String TOKEN_SIGNER_PRIVATE_KEY_ALIAS = "edc.transfer.proxy.token.signer.privatekey.alias"; @Setting(value = "Alias of public key used for verifying the tokens, retrieved from the vault") - public static final String TOKEN_VERIFIER_PUBLIC_KEY_ALIAS = "tx.edc.transfer.proxy.token.verifier.publickey.alias"; - @Deprecated(since = "0.7.1") - public static final String TOKEN_VERIFIER_PUBLIC_KEY_ALIAS_DEPRECATED = "edc.transfer.proxy.token.verifier.publickey.alias"; + public static final String TOKEN_VERIFIER_PUBLIC_KEY_ALIAS = "edc.transfer.proxy.token.verifier.publickey.alias"; @Setting(value = "Expiry time of access token in seconds", defaultValue = DEFAULT_TOKEN_EXPIRY_SECONDS + "") public static final String TOKEN_EXPIRY_SECONDS_PROPERTY = "tx.edc.dataplane.token.expiry"; @@ -133,7 +129,7 @@ private DataPlaneTokenRefreshServiceImpl getTokenRefreshService(ServiceExtension monitor.debug("Token refresh time tolerance: %d s".formatted(expiryTolerance)); tokenRefreshService = new DataPlaneTokenRefreshServiceImpl(clock, tokenValidationService, didPkResolver, localPublicKeyService, accessTokenDataStore, new JwtGenerationService(), getPrivateKeySupplier(context), context.getMonitor(), refreshEndpoint, getOwnDid(context), expiryTolerance, tokenExpiry, - () -> propertyCompatibility(context, TOKEN_VERIFIER_PUBLIC_KEY_ALIAS, TOKEN_VERIFIER_PUBLIC_KEY_ALIAS_DEPRECATED), vault, typeManager.getMapper()); + () -> context.getConfig().getString(TOKEN_VERIFIER_PUBLIC_KEY_ALIAS), vault, typeManager.getMapper()); } return tokenRefreshService; } @@ -164,7 +160,7 @@ private String getOwnDid(ServiceExtensionContext context) { @NotNull private Supplier getPrivateKeySupplier(ServiceExtensionContext context) { return () -> { - var alias = propertyCompatibility(context, TOKEN_SIGNER_PRIVATE_KEY_ALIAS, TOKEN_SIGNER_PRIVATE_KEY_ALIAS_DEPRECATED); + var alias = context.getConfig().getString(TOKEN_SIGNER_PRIVATE_KEY_ALIAS); return privateKeyResolver.resolvePrivateKey(alias) .orElse(f -> { context.getMonitor().warning("Cannot resolve private key: " + f.getFailureDetail()); diff --git a/edc-extensions/edr/edr-api-v2/src/main/java/org/eclipse/tractusx/edc/api/edr/v2/EdrCacheApi.java b/edc-extensions/edr/edr-api-v2/src/main/java/org/eclipse/tractusx/edc/api/edr/v2/EdrCacheApi.java index 0a4783503..d52441f82 100644 --- a/edc-extensions/edr/edr-api-v2/src/main/java/org/eclipse/tractusx/edc/api/edr/v2/EdrCacheApi.java +++ b/edc-extensions/edr/edr-api-v2/src/main/java/org/eclipse/tractusx/edc/api/edr/v2/EdrCacheApi.java @@ -31,7 +31,7 @@ import jakarta.json.JsonArray; import jakarta.json.JsonObject; import org.eclipse.edc.api.model.ApiCoreSchema; -import org.eclipse.edc.connector.controlplane.api.management.contractnegotiation.ContractNegotiationApi; +import org.eclipse.edc.connector.controlplane.api.management.contractnegotiation.v3.ContractNegotiationApiV3; import org.eclipse.edc.edr.spi.types.EndpointDataReferenceEntry; import org.eclipse.edc.web.spi.ApiErrorDetail; @@ -50,7 +50,7 @@ public interface EdrCacheApi { @ApiResponse(responseCode = "400", description = "Request body was malformed", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ApiErrorDetail.class)))), }) - JsonObject initiateEdrNegotiation(@Schema(implementation = ContractNegotiationApi.ContractRequestSchema.class) JsonObject dto); + JsonObject initiateEdrNegotiation(@Schema(implementation = ContractNegotiationApiV3.ContractRequestSchema.class) JsonObject dto); @Operation(description = "Request all Edr entries according to a particular query", requestBody = @RequestBody( diff --git a/edc-extensions/edr/edr-api-v2/src/main/java/org/eclipse/tractusx/edc/api/edr/v2/EdrCacheApiExtension.java b/edc-extensions/edr/edr-api-v2/src/main/java/org/eclipse/tractusx/edc/api/edr/v2/EdrCacheApiExtension.java index 585c0fcc7..c3e351d6d 100644 --- a/edc-extensions/edr/edr-api-v2/src/main/java/org/eclipse/tractusx/edc/api/edr/v2/EdrCacheApiExtension.java +++ b/edc-extensions/edr/edr-api-v2/src/main/java/org/eclipse/tractusx/edc/api/edr/v2/EdrCacheApiExtension.java @@ -20,7 +20,6 @@ package org.eclipse.tractusx.edc.api.edr.v2; import jakarta.json.Json; -import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration; import org.eclipse.edc.connector.controlplane.services.spi.contractnegotiation.ContractNegotiationService; import org.eclipse.edc.edr.spi.store.EndpointDataReferenceStore; import org.eclipse.edc.jsonld.spi.JsonLd; @@ -31,6 +30,7 @@ import org.eclipse.edc.transform.spi.TypeTransformerRegistry; import org.eclipse.edc.validator.spi.JsonObjectValidatorRegistry; import org.eclipse.edc.web.spi.WebService; +import org.eclipse.edc.web.spi.configuration.ApiContext; import org.eclipse.tractusx.edc.api.edr.v2.transform.JsonObjectFromEndpointDataReferenceEntryTransformer; import org.eclipse.tractusx.edc.edr.spi.service.EdrService; @@ -43,8 +43,6 @@ public class EdrCacheApiExtension implements ServiceExtension { @Inject private WebService webService; - @Inject - private ManagementApiConfiguration apiConfig; @Inject private EdrService edrService; @@ -71,6 +69,6 @@ public void initialize(ServiceExtensionContext context) { jsonLdService.registerNamespace(TX_PREFIX, TX_NAMESPACE); var mgmtApiTransformerRegistry = transformerRegistry.forContext("management-api"); mgmtApiTransformerRegistry.register(new JsonObjectFromEndpointDataReferenceEntryTransformer(Json.createBuilderFactory(Map.of()))); - webService.registerResource(apiConfig.getContextAlias(), new EdrCacheApiController(edrStore, mgmtApiTransformerRegistry, validatorRegistry, monitor, edrService, contractNegotiationService)); + webService.registerResource(ApiContext.MANAGEMENT, new EdrCacheApiController(edrStore, mgmtApiTransformerRegistry, validatorRegistry, monitor, edrService, contractNegotiationService)); } } diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java index b9e2afda0..b401b2887 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java @@ -58,7 +58,6 @@ private Result initiateTransfer(ContractNegotiationFinalized negotiationFi var transferRequest = TransferRequest.Builder.newInstance() .id(UUID.randomUUID().toString()) - .assetId(negotiationFinalized.getContractAgreement().getAssetId()) .contractId(negotiationFinalized.getContractAgreement().getId()) .counterPartyAddress(negotiationFinalized.getCounterPartyAddress()) .protocol(negotiationFinalized.getProtocol()) diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java index 9247bda85..88f6983f7 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java @@ -105,7 +105,6 @@ void invoke_shouldStartTransferProcess() { assertThat(transferRequest).satisfies(tp -> { assertThat(tp.getContractId()).isEqualTo(event.getContractAgreement().getId()); - assertThat(tp.getAssetId()).isEqualTo(event.getContractAgreement().getAssetId()); assertThat(tp.getCounterPartyAddress()).isEqualTo(event.getCounterPartyAddress()); assertThat(tp.getProtocol()).isEqualTo(event.getProtocol()); assertThat(tp.getDataDestination()).usingRecursiveComparison().isEqualTo(DATA_DESTINATION); diff --git a/edc-extensions/tokenrefresh-handler/src/main/java/org/eclipse/tractusx/edc/common/tokenrefresh/TokenRefreshHandlerImpl.java b/edc-extensions/tokenrefresh-handler/src/main/java/org/eclipse/tractusx/edc/common/tokenrefresh/TokenRefreshHandlerImpl.java index 7ede6ca8e..ee0eef952 100644 --- a/edc-extensions/tokenrefresh-handler/src/main/java/org/eclipse/tractusx/edc/common/tokenrefresh/TokenRefreshHandlerImpl.java +++ b/edc-extensions/tokenrefresh-handler/src/main/java/org/eclipse/tractusx/edc/common/tokenrefresh/TokenRefreshHandlerImpl.java @@ -178,6 +178,7 @@ private Result createTokenRefreshRequest(String refreshEndpoint, String return success(new Request.Builder() .addHeader("Authorization", bearerToken) + .addHeader("Content-Type", "application/x-www-form-urlencoded") .url(url) .post(RequestBody.create(new byte[0])) .build()); diff --git a/edc-extensions/tokenrefresh-handler/src/test/java/org/eclipse/tractusx/edc/common/tokenrefresh/TokenRefreshHandlerImplTest.java b/edc-extensions/tokenrefresh-handler/src/test/java/org/eclipse/tractusx/edc/common/tokenrefresh/TokenRefreshHandlerImplTest.java index e210ecbad..4676ed378 100644 --- a/edc-extensions/tokenrefresh-handler/src/test/java/org/eclipse/tractusx/edc/common/tokenrefresh/TokenRefreshHandlerImplTest.java +++ b/edc-extensions/tokenrefresh-handler/src/test/java/org/eclipse/tractusx/edc/common/tokenrefresh/TokenRefreshHandlerImplTest.java @@ -64,6 +64,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyMap; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.mock; @@ -116,6 +117,10 @@ void refresh_validateCorrectRequest() throws IOException { Assertions.assertThat(tr.getProperties()).containsEntry(EDR_PROPERTY_REFRESH_TOKEN, "new-refresh-token"); Assertions.assertThat(tr.getProperties()).containsEntry(EDR_PROPERTY_REFRESH_ENDPOINT, REFRESH_ENDPOINT); }); + verify(mockedHttpClient).execute(argThat(r -> { + var hdr = r.header("Content-Type"); + return hdr != null && hdr.equalsIgnoreCase("application/x-www-form-urlencoded"); + })); } @Test @@ -179,7 +184,7 @@ void refresh_ioException() throws IOException { assertThat(tokenRefreshHandler.refreshToken("token-id")).isFailed() .detail().isEqualTo("Error executing token refresh request: java.io.IOException: test exception"); } - + @Test void refresh_tokenGenerationFailed() { when(edrCache.get(anyString())).thenReturn(StoreResult.success(createEdr().build())); diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml index 0b9e0e5e6..deed97dce 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml @@ -84,14 +84,7 @@ vault: tenant: '' secret: certificate: - secretNames: - transferProxyTokenEncryptionAesKey: aes-keys - # this must be set through CLI args: --set vault.secrets=$YOUR_VAULT_SECRETS where YOUR_VAULT_SECRETS should - # be a string in the format "key1:secret1;key2:secret2;..." - secrets: server: postStart: -backendService: - httpProxyTokenReceiverUrl: "http://backend:8080" tests: hookDeletePolicy: before-hook-creation diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml index 9032eab3a..2953caf29 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml @@ -55,10 +55,5 @@ runtime: privatekey_alias: "key-1" verifier: publickey_alias: "key-1" -vault: - secretNames: - secrets: -backendService: - httpProxyTokenReceiverUrl: "http://backend:8080" tests: hookDeletePolicy: before-hook-creation diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-test.yaml index dc6c63bf8..410a656f4 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-test.yaml @@ -36,15 +36,6 @@ iatp: id: "test-client-id" secret_alias: "test-alias" controlplane: - # the ssi object is still needed for the upgradeability test - # todo: remove this after 0.7.0 is released - ssi: - miw: - url: "http://localhost:8080" - authorityId: "authorityId" - oauth: - client: - secretAlias: "client-secret" service: type: NodePort endpoints: @@ -61,6 +52,10 @@ controlplane: server: url: "https://bdrs.test.org" dataplane: + debug: + enabled: true + port: 1044 + suspendOnStart: false endpoints: proxy: authKey: password @@ -89,11 +84,6 @@ vault: hashicorp: url: http://{{ .Release.Name }}-vault:8200 token: root - secretNames: - transferProxyTokenEncryptionAesKey: aes-keys - # this must be set through CLI args: --set vault.secrets=$YOUR_VAULT_SECRETS where YOUR_VAULT_SECRETS should - # be a string in the format "key1:secret1;key2:secret2;..." - secrets: # the post-start object is still needed for the upgradeability test # todo: remove this after 0.7.0 is released @@ -109,7 +99,5 @@ vault: /bin/vault kv put secret/aes-keys content=YWVzX2VuY2tleV90ZXN0Cg== } -backendService: - httpProxyTokenReceiverUrl: "http://backend:8080" tests: hookDeletePolicy: before-hook-creation diff --git a/edc-tests/e2e-tests/README.md b/edc-tests/e2e-tests/README.md deleted file mode 100644 index f204147c3..000000000 --- a/edc-tests/e2e-tests/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# E2E-Tests - -This module contains JUnit tests that spin up multiple runtimes in one JVM. diff --git a/edc-tests/e2e-tests/build.gradle.kts b/edc-tests/e2e-tests/build.gradle.kts deleted file mode 100644 index 5897084e1..000000000 --- a/edc-tests/e2e-tests/build.gradle.kts +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * 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` - `java-test-fixtures` -} - -dependencies { - testImplementation(libs.restAssured) - testImplementation(libs.nimbus.jwt) - testImplementation(libs.awaitility) - testImplementation(libs.edc.lib.boot) - testImplementation(testFixtures(libs.edc.sql.core)) - testImplementation(testFixtures(libs.edc.api.management.test.fixtures)) - testImplementation(project(":edc-extensions:bpn-validation:bpn-validation-spi")) - testImplementation(project(":spi:core-spi")) - testImplementation(testFixtures(project(":edc-tests:edc-controlplane:fixtures"))) - - testCompileOnly(project(":edc-tests:runtime:extensions")) - testCompileOnly(project(":edc-tests:runtime:iatp:runtime-memory-iatp-dim")) - -} - -// do not publish -edcBuild { - publish.set(false) -} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/DimHelper.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/DimHelper.java deleted file mode 100644 index 08c0d1210..000000000 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/DimHelper.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.helpers; - -import org.eclipse.tractusx.edc.lifecycle.DimParticipant; - -import java.net.URI; -import java.util.Objects; - -import static java.lang.String.format; -import static java.lang.System.getenv; - -public interface DimHelper { - - /** - * Configure a {@link DimParticipant} from env variables - * - * @param name The participant name - * @return The composed {@link DimParticipant} - */ - static DimParticipant configureParticipant(String name, String bdrsUrl) { - var bpn = getEnv(format("DIM_%s_BPN", name)); - var dimUrl = getEnv(format("DIM_%s_DIM_URL", name)); - var stsUrl = getEnv(format("DIM_%s_STS_URL", name)); - var stsClientId = getEnv(format("DIM_%s_STS_CLIENT_ID", name)); - var stsClientSecret = getEnv(format("DIM_%s_STS_CLIENT_SECRET", name)); - var did = getEnv(format("DIM_%s_DID", name)); - var trustedIssuer = getEnv("DIM_TRUSTED_ISSUER"); - return DimParticipant.Builder.newInstance().id(bpn) - .name(name) - .stsUri(URI.create(stsUrl)) - .stsClientId(stsClientId) - .stsClientSecret(stsClientSecret) - .dimUri(URI.create(dimUrl)) - .trustedIssuer(trustedIssuer) - .did(did) - .bdrsUri(URI.create(bdrsUrl)) - .build(); - } - - private static String getEnv(String env) { - return Objects.requireNonNull(getenv(env), "%s env variable not present".formatted(env)); - } - -} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DataWiper.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DataWiper.java deleted file mode 100644 index 74ba5535d..000000000 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DataWiper.java +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.lifecycle; - -import org.eclipse.edc.connector.controlplane.asset.spi.index.AssetIndex; -import org.eclipse.edc.connector.controlplane.contract.spi.offer.store.ContractDefinitionStore; -import org.eclipse.edc.connector.controlplane.policy.spi.store.PolicyDefinitionStore; -import org.eclipse.edc.edr.spi.store.EndpointDataReferenceStore; -import org.eclipse.edc.spi.query.QuerySpec; -import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; - -import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.CONSUMER_BPN; -import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_BPN; - -/** - * Helper class to delete all objects from a runtime's data stores. - */ -public class DataWiper { - - private final ServiceExtensionContext context; - - public DataWiper(ServiceExtensionContext context) { - this.context = context; - } - - public void clearPersistence() { - clearAssetIndex(); - clearPolicies(); - clearContractDefinitions(); - clearEdrCache(); - clearBusinessPartnerStore(); - } - - public void clearBusinessPartnerStore() { - var bps = context.getService(BusinessPartnerStore.class); - bps.delete(CONSUMER_BPN); - bps.delete(PROVIDER_BPN); - } - - public void clearContractDefinitions() { - var cds = context.getService(ContractDefinitionStore.class); - cds.findAll(QuerySpec.max()).forEach(cd -> cds.deleteById(cd.getId())); - } - - public void clearPolicies() { - var ps = context.getService(PolicyDefinitionStore.class); - // must .collect() here, otherwise we'll get a ConcurrentModificationException - ps.findAll(QuerySpec.max()).toList().forEach(p -> ps.delete(p.getId())); - } - - public void clearAssetIndex() { - var index = context.getService(AssetIndex.class); - index.queryAssets(QuerySpec.max()).forEach(asset -> index.deleteById(asset.getId())); - } - - public void clearEdrCache() { - var edrCache = context.getService(EndpointDataReferenceStore.class); - edrCache.query(QuerySpec.max()).getContent().forEach(entry -> { - try { - edrCache.delete(entry.getTransferProcessId()); - } catch (Exception e) { - context.getMonitor().warning("Failed to clean up the cache", e); - } - }); - } -} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DimParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DimParticipant.java deleted file mode 100644 index 6cdcd7f55..000000000 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DimParticipant.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.lifecycle; - -import org.eclipse.tractusx.edc.tests.participant.TractusxIatpParticipantBase; - -import java.net.URI; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -/** - * Extension of {@link TractusxIatpParticipantBase} with DIM specific configuration - */ -public class DimParticipant extends TractusxIatpParticipantBase { - - protected URI dimUri; - - protected URI bdrsUri; - - @Override - public Map iatpConfiguration(TractusxIatpParticipantBase... others) { - var config = new HashMap<>(super.iatpConfiguration(others)); - config.put("edc.iam.sts.dim.url", dimUri.toString()); - config.put("tx.edc.iam.iatp.bdrs.server.url", bdrsUri.toString()); - config.put("edc.transfer.proxy.token.verifier.publickey.alias", getKeyId()); - return config; - } - - public static class Builder extends TractusxIatpParticipantBase.Builder { - - protected Builder() { - super(new DimParticipant()); - } - - public static Builder newInstance() { - return new Builder(); - } - - public Builder dimUri(URI dimUri) { - participant.dimUri = dimUri; - return self(); - } - - public Builder bdrsUri(URI bdrsUri) { - participant.bdrsUri = bdrsUri; - return self(); - } - - @Override - public DimParticipant build() { - super.build(); - Objects.requireNonNull(participant.dimUri, "DIM URI should not be null"); - Objects.requireNonNull(participant.bdrsUri, "BDRS URI should not be null"); - return participant; - } - } -} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java deleted file mode 100644 index 9ba359c1e..000000000 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.lifecycle; - -import com.nimbusds.jose.JOSEException; -import com.nimbusds.jose.jwk.Curve; -import com.nimbusds.jose.jwk.gen.ECKeyGenerator; -import org.eclipse.edc.boot.system.injection.InjectionContainer; -import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; -import org.eclipse.edc.spi.security.Vault; -import org.eclipse.edc.spi.system.ServiceExtension; -import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.junit.jupiter.api.extension.AfterAllCallback; -import org.junit.jupiter.api.extension.BeforeAllCallback; -import org.junit.jupiter.api.extension.ExtensionContext; - -import java.util.List; -import java.util.Map; - -public class ParticipantRuntime extends EdcRuntimeExtension implements BeforeAllCallback, AfterAllCallback { - - private final Map properties; - private DataWiper wiper; - - - public ParticipantRuntime(String moduleName, String runtimeName, Map properties) { - super(moduleName, runtimeName, properties); - this.properties = properties; - } - - public ParticipantRuntime(String runtimeName, Map properties, String... modules) { - super(runtimeName, properties, modules); - this.properties = properties; - } - - - @Override - public void beforeTestExecution(ExtensionContext extensionContext) { - //do nothing - we only want to start the runtime once - wiper.clearPersistence(); - } - - @Override - public void afterTestExecution(ExtensionContext context) { - } - - @Override - public void beforeAll(ExtensionContext context) throws Exception { - //only run this once - super.beforeTestExecution(context); - } - - @Override - public void afterAll(ExtensionContext context) throws Exception { - super.afterTestExecution(context); - } - - @Override - protected void bootExtensions(ServiceExtensionContext context, List> serviceExtensions) { - super.bootExtensions(context, serviceExtensions); - wiper = new DataWiper(context); - registerConsumerPullKeys(properties); - } - - private void registerConsumerPullKeys(Map properties) { - var privateAlias = properties.get("edc.transfer.proxy.token.signer.privatekey.alias"); - var publicAlias = properties.get("edc.transfer.proxy.token.verifier.publickey.alias"); - if (privateAlias != null && publicAlias != null) { - try { - var ecKey = new ECKeyGenerator(Curve.P_256).keyID(publicAlias).generate(); - var vault = getContext().getService(Vault.class); - vault.storeSecret(privateAlias, ecKey.toJSONString()); - vault.storeSecret(publicAlias, ecKey.toPublicJWK().toJSONString()); - } catch (JOSEException e) { - throw new RuntimeException(e); - } - - } - } - -} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Runtimes.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Runtimes.java deleted file mode 100644 index 6b265ddb4..000000000 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Runtimes.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.lifecycle; - -import java.util.Map; - -public interface Runtimes { - - static ParticipantRuntime dimRuntime(String name, Map configuration) { - return new ParticipantRuntime(name, configuration, - ":edc-tests:runtime:iatp:runtime-memory-iatp-dim" - ); - } -} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/DimCatalogIntegrationTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/DimCatalogIntegrationTest.java deleted file mode 100644 index 486981db1..000000000 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/DimCatalogIntegrationTest.java +++ /dev/null @@ -1,127 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.tests.catalog; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.eclipse.tractusx.edc.lifecycle.DimParticipant; -import org.eclipse.tractusx.edc.lifecycle.ParticipantRuntime; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.mockserver.integration.ClientAndServer; -import org.mockserver.model.HttpResponse; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Map; -import java.util.zip.GZIPOutputStream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.connector.controlplane.test.system.utils.PolicyFixtures.noConstraintPolicy; -import static org.eclipse.edc.util.io.Ports.getFreePort; -import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.CX_POLICY_NS; -import static org.eclipse.tractusx.edc.helpers.DimHelper.configureParticipant; -import static org.eclipse.tractusx.edc.lifecycle.Runtimes.dimRuntime; -import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.CONSUMER_NAME; -import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_NAME; -import static org.eclipse.tractusx.edc.tests.helpers.CatalogHelperFunctions.getDatasetAssetId; -import static org.eclipse.tractusx.edc.tests.helpers.PolicyHelperFunctions.frameworkPolicy; -import static org.mockserver.model.HttpRequest.request; - -//@DimIntegrationTest -//@Disabled -public class DimCatalogIntegrationTest { - - private static final ObjectMapper MAPPER = new ObjectMapper(); - private static final Integer BDRS_PORT = getFreePort(); - private static final String BDRS_URL = "http://localhost:%s/api".formatted(BDRS_PORT); - - protected static final DimParticipant CONSUMER = configureParticipant(CONSUMER_NAME, BDRS_URL); - protected static final DimParticipant PROVIDER = configureParticipant(PROVIDER_NAME, BDRS_URL); - - @RegisterExtension - protected static final ParticipantRuntime PROVIDER_RUNTIME = dimRuntime(PROVIDER.getName(), PROVIDER.iatpConfiguration(CONSUMER)); - - @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = dimRuntime(CONSUMER.getName(), CONSUMER.iatpConfiguration(PROVIDER)); - private static ClientAndServer bdrsServer; - - @BeforeAll - static void beforeAll() { - bdrsServer = ClientAndServer.startClientAndServer(BDRS_PORT); - bdrsServer.when(request() - .withMethod("GET") - .withPath("/api/bpn-directory")) - .respond(HttpResponse.response() - .withHeader("Content-Encoding", "gzip") - .withBody(createGzipStream()) - .withStatusCode(200)); - - } - - private static byte[] createGzipStream() { - var data = Map.of(CONSUMER.getBpn(), CONSUMER.getDid(), - PROVIDER.getBpn(), PROVIDER.getDid()); - - var bas = new ByteArrayOutputStream(); - try (var gzip = new GZIPOutputStream(bas)) { - gzip.write(MAPPER.writeValueAsBytes(data)); - } catch (IOException e) { - throw new RuntimeException(e); - } - return bas.toByteArray(); - } - - @AfterAll - static void afterAll() { - bdrsServer.stop(); - } - - //@Test - @DisplayName("Verify that the consumer receives only the offers he is permitted to") - void requestCatalog_filteredByDismantler_shouldReturnOffer() { - // arrange - PROVIDER.createAsset("test-asset"); - PROVIDER.createAsset("test-asset-1"); - - var bpnAccessPolicy = frameworkPolicy(Map.of(CX_POLICY_NS + "Membership", "active")); - var dismantlerAccessPolicy = frameworkPolicy(Map.of(CX_POLICY_NS + "Dismantler", "active")); - - var bpnAccessId = PROVIDER.createPolicyDefinition(bpnAccessPolicy); - var contractPolicyId = PROVIDER.createPolicyDefinition(noConstraintPolicy()); - var dismantlerAccessPolicyId = PROVIDER.createPolicyDefinition(dismantlerAccessPolicy); - - PROVIDER.createContractDefinition("test-asset", "test-def", bpnAccessId, contractPolicyId); - PROVIDER.createContractDefinition("test-asset-1", "test-def-2", dismantlerAccessPolicyId, contractPolicyId); - - // act - var catalog = CONSUMER.getCatalogDatasets(PROVIDER); - - // assert - assertThat(catalog).isNotEmpty() - .hasSize(1) - .allSatisfy(co -> { - assertThat(getDatasetAssetId(co.asJsonObject())).isEqualTo("test-asset"); - }); - - } - -} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/DimHttpPullTransferIntegrationTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/DimHttpPullTransferIntegrationTest.java deleted file mode 100644 index 5b7ea0587..000000000 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/DimHttpPullTransferIntegrationTest.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.tests.transfer; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.eclipse.tractusx.edc.lifecycle.DimParticipant; -import org.eclipse.tractusx.edc.lifecycle.ParticipantRuntime; -import org.eclipse.tractusx.edc.tag.DimIntegrationTest; -import org.eclipse.tractusx.edc.tests.participant.TractusxParticipantBase; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.mockserver.integration.ClientAndServer; -import org.mockserver.model.HttpResponse; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Map; -import java.util.zip.GZIPOutputStream; - -import static org.eclipse.edc.util.io.Ports.getFreePort; -import static org.eclipse.tractusx.edc.helpers.DimHelper.configureParticipant; -import static org.eclipse.tractusx.edc.lifecycle.Runtimes.dimRuntime; -import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.CONSUMER_NAME; -import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_NAME; -import static org.mockserver.model.HttpRequest.request; - -@DimIntegrationTest -@Disabled -public class DimHttpPullTransferIntegrationTest extends HttpConsumerPullBaseTest { - - private static final ObjectMapper MAPPER = new ObjectMapper(); - private static final Integer BDRS_PORT = getFreePort(); - private static final String BDRS_URL = "http://localhost:%s/api".formatted(BDRS_PORT); - protected static final DimParticipant CONSUMER = configureParticipant(CONSUMER_NAME, BDRS_URL); - protected static final DimParticipant PROVIDER = configureParticipant(PROVIDER_NAME, BDRS_URL); - @RegisterExtension - protected static final ParticipantRuntime PROVIDER_RUNTIME = dimRuntime(PROVIDER.getName(), PROVIDER.iatpConfiguration(CONSUMER)); - @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = dimRuntime(CONSUMER.getName(), CONSUMER.iatpConfiguration(PROVIDER)); - private static ClientAndServer bdrsServer; - - @BeforeAll - static void beforeAll() { - bdrsServer = ClientAndServer.startClientAndServer(BDRS_PORT); - bdrsServer.when(request() - .withMethod("GET") - .withPath("/api/bpn-directory")) - .respond(HttpResponse.response() - .withHeader("Content-Encoding", "gzip") - .withBody(createGzipStream()) - .withStatusCode(200)); - - } - - private static byte[] createGzipStream() { - var data = Map.of(CONSUMER.getBpn(), CONSUMER.getDid(), - PROVIDER.getBpn(), PROVIDER.getDid()); - - var bas = new ByteArrayOutputStream(); - try (var gzip = new GZIPOutputStream(bas)) { - gzip.write(MAPPER.writeValueAsBytes(data)); - } catch (IOException e) { - throw new RuntimeException(e); - } - return bas.toByteArray(); - } - - @AfterAll - static void afterAll() { - bdrsServer.stop(); - } - - @Override - public TractusxParticipantBase provider() { - return PROVIDER; - } - - @Override - public TractusxParticipantBase consumer() { - return CONSUMER; - } -} diff --git a/edc-tests/e2e-tests/src/test/resources/framework-policy.json b/edc-tests/e2e-tests/src/test/resources/framework-policy.json deleted file mode 100644 index 321aecbe5..000000000 --- a/edc-tests/e2e-tests/src/test/resources/framework-policy.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@context": [ - "https://w3id.org/edc/v0.0.1", - "https://w3id.org/tractusx/edc/v0.0.1", - "http://www.w3.org/ns/odrl.jsonld" - ], - "@type": "PolicyDefinitionRequest", - "@id": "${POLICY_ID}", - "policy": { - "@type": "Set", - "permission": [ - { - "action": "use", - "constraint": [ - { - "leftOperand": "${FRAMEWORK_CREDENTIAL}", - "operator": "eq", - "rightOperand": "active" - } - ] - } - ] - } -} diff --git a/edc-tests/edc-controlplane/catalog-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogTest.java b/edc-tests/edc-controlplane/catalog-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogTest.java index da802cb99..6f0a04221 100644 --- a/edc-tests/edc-controlplane/catalog-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogTest.java +++ b/edc-tests/edc-controlplane/catalog-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogTest.java @@ -21,10 +21,9 @@ import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.edc.policy.model.Operator; import org.eclipse.tractusx.edc.tests.participant.TransferParticipant; -import org.eclipse.tractusx.edc.tests.runtimes.ParticipantRuntime; -import org.eclipse.tractusx.edc.tests.runtimes.PgParticipantRuntime; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -213,10 +212,10 @@ void requestCatalog_of1000Assets_shouldContainAll() { class InMemory extends Tests { @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final ParticipantRuntime PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } @@ -225,10 +224,10 @@ class InMemory extends Tests { class Postgres extends Tests { @RegisterExtension - protected static final PgParticipantRuntime CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final PgParticipantRuntime PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } diff --git a/edc-tests/edc-controlplane/edr-api-tests/src/test/java/org/eclipse/tractusx/edc/tests/edrv2/EdrCacheApiEndToEndTest.java b/edc-tests/edc-controlplane/edr-api-tests/src/test/java/org/eclipse/tractusx/edc/tests/edrv2/EdrCacheApiEndToEndTest.java index f7dec1e3b..41097357e 100644 --- a/edc-tests/edc-controlplane/edr-api-tests/src/test/java/org/eclipse/tractusx/edc/tests/edrv2/EdrCacheApiEndToEndTest.java +++ b/edc-tests/edc-controlplane/edr-api-tests/src/test/java/org/eclipse/tractusx/edc/tests/edrv2/EdrCacheApiEndToEndTest.java @@ -35,10 +35,10 @@ import org.eclipse.edc.edr.spi.store.EndpointDataReferenceStore; import org.eclipse.edc.edr.spi.types.EndpointDataReferenceEntry; import org.eclipse.edc.junit.annotations.EndToEndTest; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.edc.spi.types.domain.DataAddress; import org.eclipse.tractusx.edc.spi.tokenrefresh.dataplane.model.TokenResponse; import org.eclipse.tractusx.edc.tests.participant.TransferParticipant; -import org.eclipse.tractusx.edc.tests.runtimes.ParticipantRuntime; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -63,6 +63,7 @@ import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.EDR_PROPERTY_REFRESH_TOKEN; import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.CONSUMER_BPN; import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.CONSUMER_NAME; +import static org.eclipse.tractusx.edc.tests.runtimes.Runtimes.memoryRuntime; import static org.mockserver.integration.ClientAndServer.startClientAndServer; import static org.mockserver.matchers.Times.exactly; import static org.mockserver.model.HttpRequest.request; @@ -81,11 +82,7 @@ public class EdrCacheApiEndToEndTest { .id(CONSUMER_BPN) .build(); @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = new ParticipantRuntime( - ":edc-tests:runtime:runtime-memory", - CONSUMER.getName(), - CONSUMER.getId(), - with(CONSUMER.getConfiguration(), Map.of("edc.iam.issuer.id", "did:web:consumer"))); + protected static final RuntimeExtension CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getId(), with(CONSUMER.getConfiguration(), Map.of("edc.iam.issuer.id", "did:web:consumer"))); private final ObjectMapper mapper = new ObjectMapper(); private String refreshEndpoint; private String refreshAudience; diff --git a/edc-tests/edc-controlplane/edr-api-tests/src/test/java/org/eclipse/tractusx/edc/tests/edrv2/NegotiateEdrTest.java b/edc-tests/edc-controlplane/edr-api-tests/src/test/java/org/eclipse/tractusx/edc/tests/edrv2/NegotiateEdrTest.java index b798fbf01..608de68da 100644 --- a/edc-tests/edc-controlplane/edr-api-tests/src/test/java/org/eclipse/tractusx/edc/tests/edrv2/NegotiateEdrTest.java +++ b/edc-tests/edc-controlplane/edr-api-tests/src/test/java/org/eclipse/tractusx/edc/tests/edrv2/NegotiateEdrTest.java @@ -31,13 +31,12 @@ import org.eclipse.edc.connector.controlplane.transfer.spi.event.TransferProcessStarted; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.edc.policy.model.Operator; import org.eclipse.tractusx.edc.tests.helpers.EdrNegotiationHelperFunctions; import org.eclipse.tractusx.edc.tests.helpers.PolicyHelperFunctions; import org.eclipse.tractusx.edc.tests.helpers.ReceivedEvent; import org.eclipse.tractusx.edc.tests.participant.TransferParticipant; -import org.eclipse.tractusx.edc.tests.runtimes.ParticipantRuntime; -import org.eclipse.tractusx.edc.tests.runtimes.PgParticipantRuntime; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -191,10 +190,10 @@ void teardown() throws IOException { class InMemory extends Tests { @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final ParticipantRuntime PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } @@ -203,10 +202,10 @@ class InMemory extends Tests { class Postgres extends Tests { @RegisterExtension - protected static final PgParticipantRuntime CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final PgParticipantRuntime PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } } diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/ParticipantEdrApi.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/ParticipantEdrApi.java index 7e6ffc088..028b77bcb 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/ParticipantEdrApi.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/ParticipantEdrApi.java @@ -42,7 +42,6 @@ import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.ODRL_TARGET_ATTRIBUTE; import static org.eclipse.edc.spi.constants.CoreConstants.EDC_NAMESPACE; import static org.eclipse.tractusx.edc.tests.helpers.CatalogHelperFunctions.getDatasetFirstPolicy; -import static org.eclipse.tractusx.edc.tests.helpers.CatalogHelperFunctions.getDatasetOfferId; import static org.eclipse.tractusx.edc.tests.helpers.EdrNegotiationHelperFunctions.createEdrNegotiationRequest; /** @@ -122,9 +121,8 @@ public String negotiateEdr(TransferParticipant other, String assetId, JsonArray .add(ODRL_TARGET_ATTRIBUTE, createObjectBuilder().add(ID, dataset.get(ID))) .add(ODRL_ASSIGNER_ATTRIBUTE, createObjectBuilder().add(ID, other.getBpn())) .build(); - var offerId = getDatasetOfferId(dataset); - var requestBody = createEdrNegotiationRequest(other.getProtocolEndpoint().getUrl().toString(), other.getBpn(), offerId, assetId, policy, callbacks); + var requestBody = createEdrNegotiationRequest(other.getProtocolEndpoint().getUrl().toString(), policy, callbacks); var response = baseEdrRequest() diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/helpers/EdrNegotiationHelperFunctions.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/helpers/EdrNegotiationHelperFunctions.java index 425331fd9..8a77728f7 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/helpers/EdrNegotiationHelperFunctions.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/helpers/EdrNegotiationHelperFunctions.java @@ -38,17 +38,12 @@ public class EdrNegotiationHelperFunctions { private static final JsonLd JSON_LD = new TitaniumJsonLd(new ConsoleMonitor()); - public static JsonObject createEdrNegotiationRequest(String connectorAddress, String providerId, String offerId, String assetId, JsonObject policy, JsonArray callbacks) { + public static JsonObject createEdrNegotiationRequest(String connectorAddress, JsonObject policy, JsonArray callbacks) { return Json.createObjectBuilder() .add(TYPE, ContractRequest.CONTRACT_REQUEST_TYPE) - .add(EDC_NAMESPACE + "counterPartyId", providerId) .add(EDC_NAMESPACE + "counterPartyAddress", connectorAddress) .add(EDC_NAMESPACE + "protocol", "dataspace-protocol-http") - .add(EDC_NAMESPACE + "offer", Json.createObjectBuilder() - .add(EDC_NAMESPACE + "offerId", offerId) - .add(EDC_NAMESPACE + "assetId", assetId) - .add(EDC_NAMESPACE + "policy", JSON_LD.compact(policy).getContent()) - ) + .add(EDC_NAMESPACE + "policy", policy) .add(EDC_NAMESPACE + "callbackAddresses", callbacks) .build(); } diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/helpers/TransferProcessHelperFunctions.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/helpers/TransferProcessHelperFunctions.java deleted file mode 100644 index 82cafae36..000000000 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/helpers/TransferProcessHelperFunctions.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.tests.helpers; - -import jakarta.json.Json; -import jakarta.json.JsonObject; - -import static jakarta.json.Json.createObjectBuilder; -import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID; -import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; -import static org.eclipse.edc.spi.constants.CoreConstants.EDC_NAMESPACE; - -public class TransferProcessHelperFunctions { - - public static JsonObject createTransferRequest(String dataRequestId, String counterPartyAddress, String contractId, String assetId, boolean managedResources, JsonObject destination) { - return Json.createObjectBuilder() - .add(TYPE, EDC_NAMESPACE + "TransferRequestDto") - .add(ID, dataRequestId) - .add(EDC_NAMESPACE + "connectorId", "connectorId") - .add(EDC_NAMESPACE + "dataDestination", destination) - .add(EDC_NAMESPACE + "protocol", "dataspace-protocol-http") - .add(EDC_NAMESPACE + "assetId", assetId) - .add(EDC_NAMESPACE + "contractId", contractId) - .add(EDC_NAMESPACE + "counterPartyAddress", counterPartyAddress) - .add(EDC_NAMESPACE + "managedResources", managedResources) - .build(); - - } - - public static JsonObject createProxyRequest() { - return Json.createObjectBuilder() - .add(TYPE, EDC_NAMESPACE + "DataAddress") - .add(EDC_NAMESPACE + "type", "HttpProxy") - .build(); - - } - - public static JsonObject httpDataAddress(String baseUrl) { - return createObjectBuilder() - .add(TYPE, EDC_NAMESPACE + "DataAddress") - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "properties", createObjectBuilder() - .add(EDC_NAMESPACE + "baseUrl", baseUrl) - .build()) - .build(); - } -} diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/participant/TractusxIatpParticipantBase.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/participant/TractusxIatpParticipantBase.java index 69dfaf4d0..eb17e0667 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/participant/TractusxIatpParticipantBase.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/participant/TractusxIatpParticipantBase.java @@ -44,7 +44,7 @@ public Map iatpConfiguration(TractusxIatpParticipantBase... othe put("edc.iam.sts.oauth.client.id", stsClientId); put("edc.iam.sts.oauth.client.secret.alias", "client_secret_alias"); put("edc.ih.iam.id", getDid()); - put("tx.vault.seed.secrets", "client_secret_alias:%s".formatted(stsClientSecret)); + put("tx.edc.vault.seed.secrets", "client_secret_alias:%s".formatted(stsClientSecret)); put("edc.ih.iam.publickey.alias", getFullKeyId()); put("edc.agent.identity.key", "client_id"); put("edc.iam.trusted-issuer.issuer.id", trustedIssuer); diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/participant/TractusxParticipantBase.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/participant/TractusxParticipantBase.java index 1ffe39b8b..0d260e475 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/participant/TractusxParticipantBase.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/participant/TractusxParticipantBase.java @@ -54,9 +54,10 @@ */ public abstract class TractusxParticipantBase extends IdentityParticipant { - public static final String API_KEY = "testkey"; - public static final Duration ASYNC_TIMEOUT = ofSeconds(60); + public static final String MANAGEMENT_API_KEY = "testkey"; + public static final Duration ASYNC_TIMEOUT = ofSeconds(120); public static final Duration ASYNC_POLL_INTERVAL = ofSeconds(1); + private static final String CONSUMER_PROXY_API_KEY = "consumerProxyKey"; protected final URI dataPlaneProxy = URI.create("http://localhost:" + getFreePort()); private final URI controlPlaneDefault = URI.create("http://localhost:" + getFreePort()); private final URI controlPlaneControl = URI.create("http://localhost:" + getFreePort() + "/control"); @@ -83,7 +84,7 @@ public String getBpn() { public Map getConfiguration() { return new HashMap<>() { { - put("edc.connector.name", name); + put("edc.runtime.id", name); put("edc.participant.id", id); put("web.http.port", String.valueOf(controlPlaneDefault.getPort())); put("web.http.path", "/api"); @@ -94,20 +95,15 @@ public Map getConfiguration() { put("web.http.control.port", String.valueOf(controlPlaneControl.getPort())); put("web.http.control.path", controlPlaneControl.getPath()); put("edc.dsp.callback.address", protocolEndpoint.getUrl().toString()); - put("edc.api.auth.key", "testkey"); + put("edc.api.auth.key", MANAGEMENT_API_KEY); put("web.http.public.path", "/api/public"); put("web.http.public.port", String.valueOf(dataPlanePublic.getPort())); put("edc.transfer.proxy.token.signer.privatekey.alias", getPrivateKeyAlias()); put("edc.transfer.proxy.token.verifier.publickey.alias", getFullKeyId()); put("edc.transfer.send.retry.limit", "1"); put("edc.transfer.send.retry.base-delay.ms", "100"); - put("tx.dpf.consumer.proxy.port", String.valueOf(dataPlaneProxy.getPort())); - put("edc.dataplane.token.validation.endpoint", controlPlaneControl + "/token"); - put("edc.dataplane.selector.httpplane.url", controlPlaneControl.toString()); - put("edc.dataplane.selector.httpplane.sourcetypes", "HttpData"); - put("edc.dataplane.selector.httpplane.destinationtypes", "HttpProxy"); - put("edc.dataplane.selector.httpplane.transfertypes", "HttpProxy-PULL"); - put("edc.dataplane.selector.httpplane.properties", "{\"publicApiUrl\":\"http://localhost:" + dataPlanePublic.getPort() + "/api/public/v2\"}"); + put("tx.edc.dpf.consumer.proxy.port", String.valueOf(dataPlaneProxy.getPort())); + put("tx.edc.dpf.consumer.proxy.auth.apikey", CONSUMER_PROXY_API_KEY); put("edc.receiver.http.dynamic.endpoint", "http://localhost:" + controlPlaneDefault.getPort() + "/api/consumer/datareference"); put("tractusx.businesspartnervalidation.log.agreement.validation", "true"); put("edc.agent.identity.key", "BusinessPartnerNumber"); @@ -117,7 +113,7 @@ public Map getConfiguration() { put("edc.iam.sts.oauth.token.url", "http://sts.example.com/token"); put("edc.iam.sts.oauth.client.id", "test-clientid"); put("edc.iam.sts.oauth.client.secret.alias", "test-clientid-alias"); - put("edc.iam.sts.dim.url", "http://sts.example.com"); + put("tx.edc.iam.sts.dim.url", "http://sts.example.com"); put("tx.edc.iam.iatp.bdrs.server.url", "http://sts.example.com"); put("edc.dataplane.api.public.baseurl", "http://localhost:%d/api/public/v2/data".formatted(dataPlanePublic.getPort())); } @@ -202,7 +198,7 @@ public ValidatableResponse getCatalog(TractusxParticipantBase provider) { .contentType(JSON) .when() .body(requestBodyBuilder.build()) - .post("/v2/catalog/request") + .post("/v3/catalog/request") .then(); } @@ -224,14 +220,14 @@ public TractusxParticipantBase build() { participant.did = "did:web:" + participant.name.toLowerCase(); } - super.managementEndpoint(new Endpoint(URI.create("http://localhost:" + getFreePort() + "/api/management"), Map.of("x-api-key", API_KEY))); + super.managementEndpoint(new Endpoint(URI.create("http://localhost:" + getFreePort() + "/api/management"), Map.of("x-api-key", MANAGEMENT_API_KEY))); super.protocolEndpoint(new Endpoint(URI.create("http://localhost:" + getFreePort() + "/protocol"))); super.timeout(ASYNC_TIMEOUT); super.build(); this.participant.edrs = new ParticipantEdrApi(participant); this.participant.data = new ParticipantDataApi(); - this.participant.dataPlane = new ParticipantConsumerDataPlaneApi(new Endpoint(this.participant.dataPlaneProxy, Map.of("x-api-key", API_KEY))); + this.participant.dataPlane = new ParticipantConsumerDataPlaneApi(new Endpoint(this.participant.dataPlaneProxy, Map.of("x-api-key", CONSUMER_PROXY_API_KEY))); return participant; } } diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/BeforeInitCallback.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/BeforeInitCallback.java index 1fe184957..a4633ae15 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/BeforeInitCallback.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/BeforeInitCallback.java @@ -19,14 +19,15 @@ package org.eclipse.tractusx.edc.tests.runtimes; -import org.eclipse.edc.junit.extensions.EdcExtension; +import org.eclipse.edc.junit.extensions.EmbeddedRuntime; +import org.eclipse.edc.junit.extensions.RuntimeExtension; /** - * Callback invoked before the runtime boots with extensions of {@link EdcExtension}. This will allow injecting - * custom mock services directly in the tests rather than extending the {@link EdcExtension} with custom mocks + * Callback invoked before the runtime boots with extensions of {@link RuntimeExtension}. This will allow injecting + * custom mock services directly in the tests rather than extending the {@link RuntimeExtension} with custom mocks */ @FunctionalInterface public interface BeforeInitCallback { - void beforeInit(EdcExtension runtime); + void beforeInit(EmbeddedRuntime runtime); } diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/DataWiper.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/DataWiper.java index e5503761e..ee117bb5b 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/DataWiper.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/DataWiper.java @@ -35,7 +35,7 @@ */ public class DataWiper { - private final ServiceExtensionContext context; + protected final ServiceExtensionContext context; public DataWiper(ServiceExtensionContext context) { this.context = context; diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/ParticipantRuntime.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/ParticipantRuntime.java index 9207153fe..29834cdcc 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/ParticipantRuntime.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/ParticipantRuntime.java @@ -27,28 +27,26 @@ import org.eclipse.edc.iam.did.spi.resolution.DidPublicKeyResolver; import org.eclipse.edc.iam.identitytrust.spi.SecureTokenService; import org.eclipse.edc.iam.identitytrust.sts.embedded.EmbeddedSecureTokenService; -import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; +import org.eclipse.edc.junit.extensions.EmbeddedRuntime; import org.eclipse.edc.spi.iam.AudienceResolver; import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.types.domain.message.RemoteMessage; import org.eclipse.edc.token.JwtGenerationService; import org.eclipse.tractusx.edc.spi.identity.mapper.BdrsClient; import org.eclipse.tractusx.edc.tests.MockBpnIdentityService; -import org.junit.jupiter.api.extension.AfterAllCallback; -import org.junit.jupiter.api.extension.BeforeAllCallback; -import org.junit.jupiter.api.extension.ExtensionContext; import java.time.Clock; import java.time.Duration; import java.util.List; import java.util.Map; - -public class ParticipantRuntime extends EdcRuntimeExtension implements BeforeAllCallback, AfterAllCallback { +/** + * Extends the {@link EmbeddedRuntime} adding a key pair to the runtime as well as adding a facility to purge the database ({@link DataWiper}). + */ +public class ParticipantRuntime extends EmbeddedRuntime { private final Map properties; private final ECKey runtimeKeyPair; @@ -59,10 +57,10 @@ public ParticipantRuntime(String moduleName, String runtimeName, String bpn, Map } public ParticipantRuntime(String moduleName, String runtimeName, String bpn, Map properties, BeforeInitCallback beforeInitCallback) { - super(moduleName, runtimeName, properties); + super(runtimeName, properties, moduleName); this.properties = properties; this.registerServiceMock(IdentityService.class, new MockBpnIdentityService(bpn)); - this.registerServiceMock(AudienceResolver.class, RemoteMessage::getCounterPartyAddress); + this.registerServiceMock(AudienceResolver.class, remoteMessage -> Result.success(remoteMessage.getCounterPartyAddress())); this.registerServiceMock(BdrsClient.class, (s) -> s); var kid = properties.get("edc.iam.issuer.id") + "#key-1"; try { @@ -81,25 +79,8 @@ public ParticipantRuntime(String moduleName, String runtimeName, String bpn, Map } } - @Override - public void beforeTestExecution(ExtensionContext extensionContext) { - //do nothing - we only want to start the runtime once - wiper.clearPersistence(); - } - - @Override - public void afterTestExecution(ExtensionContext context) { - } - - @Override - public void beforeAll(ExtensionContext context) throws Exception { - //only run this once - super.beforeTestExecution(context); - } - - @Override - public void afterAll(ExtensionContext context) throws Exception { - super.afterTestExecution(context); + public DataWiper getWiper() { + return wiper; } @Override diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/ParticipantRuntimeExtension.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/ParticipantRuntimeExtension.java new file mode 100644 index 000000000..3931f00bb --- /dev/null +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/ParticipantRuntimeExtension.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.tractusx.edc.tests.runtimes; + +import org.eclipse.edc.junit.extensions.EmbeddedRuntime; +import org.eclipse.edc.junit.extensions.RuntimePerClassExtension; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; + +import java.util.Map; + +/** + * Cleans up the database after every test to create a clean slate. This is faster than using a {@link org.eclipse.edc.junit.extensions.RuntimePerMethodExtension}, + * especially with postgres + */ +public class ParticipantRuntimeExtension extends RuntimePerClassExtension implements AfterEachCallback { + + public ParticipantRuntimeExtension(String moduleName, String runtimeName, String bpn, Map properties, BeforeInitCallback beforeInitCallback) { + super(new ParticipantRuntime(moduleName, runtimeName, bpn, properties)); + + if (beforeInitCallback != null) { + beforeInitCallback.beforeInit(runtime); + } + } + + public ParticipantRuntimeExtension(EmbeddedRuntime embeddedRuntime) { + super(embeddedRuntime); + } + + @Override + public void afterEach(ExtensionContext extensionContext) { + ((ParticipantRuntime) runtime).getWiper().clearPersistence(); + } +} diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/PgParticipantRuntime.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/PgParticipantRuntime.java index cd1a396a0..88855d876 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/PgParticipantRuntime.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/PgParticipantRuntime.java @@ -19,98 +19,19 @@ package org.eclipse.tractusx.edc.tests.runtimes; -import org.eclipse.edc.boot.system.injection.InjectionContainer; import org.eclipse.edc.boot.vault.InMemoryVault; import org.eclipse.edc.spi.monitor.ConsoleMonitor; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.spi.security.Vault; -import org.eclipse.edc.spi.system.ServiceExtension; -import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.sql.testfixtures.PostgresqlLocalInstance; -import org.junit.jupiter.api.extension.AfterAllCallback; -import org.junit.jupiter.api.extension.BeforeAllCallback; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.containers.wait.strategy.Wait; -import java.util.HashMap; -import java.util.List; import java.util.Map; -import static java.lang.String.format; -import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.DB_SCHEMA_NAME; - -public class PgParticipantRuntime extends ParticipantRuntime implements AfterAllCallback, BeforeAllCallback { - - private static final String POSTGRES_IMAGE_NAME = "postgres:16.2"; - private static final String USER = "postgres"; - private static final String PASSWORD = "password"; - private static final List DATASOURCES = List.of("asset", "contractdefinition", - "contractnegotiation", "policy", "transferprocess", "bpn", - "policy-monitor", "edr", "dataplane", "accesstokendata"); - private final String dbName; - public PostgreSQLContainer postgreSqlContainer; +class PgParticipantRuntime extends ParticipantRuntime { public PgParticipantRuntime(String moduleName, String runtimeName, String bpn, Map properties) { super(moduleName, runtimeName, bpn, properties); - this.dbName = runtimeName.toLowerCase(); mockVault(); - - postgreSqlContainer = new PostgreSQLContainer<>(POSTGRES_IMAGE_NAME) - .withLabel("runtime", dbName) - .withExposedPorts(5432) - .withUsername(USER) - .withPassword(PASSWORD) - .withDatabaseName(dbName); - } - - @Override - public void beforeAll(ExtensionContext context) throws Exception { - postgreSqlContainer.start(); - postgreSqlContainer.waitingFor(Wait.forHealthcheck()); - var config = postgresqlConfiguration(dbName); - config.forEach(System::setProperty); - super.beforeAll(context); - } - - @Override - public void afterAll(ExtensionContext context) throws Exception { - super.afterAll(context); - postgreSqlContainer.stop(); - postgreSqlContainer.close(); - } - - @Override - protected void bootExtensions(ServiceExtensionContext context, List> serviceExtensions) { - PostgresqlLocalInstance helper = new PostgresqlLocalInstance(postgreSqlContainer.getUsername(), postgreSqlContainer.getPassword(), baseJdbcUrl(), postgreSqlContainer.getDatabaseName()); - helper.createDatabase(); - super.bootExtensions(context, serviceExtensions); - } - - public Map postgresqlConfiguration(String name) { - var jdbcUrl = jdbcUrl(name); - return new HashMap<>() { - { - DATASOURCES.forEach(context -> { - var group = "edc.datasource." + context; - put(group + ".name", context); - put(group + ".url", jdbcUrl); - put(group + ".user", USER); - put(group + ".password", PASSWORD); - }); - // use non-default schema name to test usage of non-default schema - put("org.eclipse.tractusx.edc.postgresql.migration.schema", DB_SCHEMA_NAME); - } - }; - } - - public String jdbcUrl(String name) { - return baseJdbcUrl() + name + "?currentSchema=" + DB_SCHEMA_NAME; - } - - public String baseJdbcUrl() { - return format("jdbc:postgresql://%s:%s/", postgreSqlContainer.getHost(), postgreSqlContainer.getFirstMappedPort()); } protected void mockVault() { diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/PgRuntimeExtension.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/PgRuntimeExtension.java new file mode 100644 index 000000000..6472aebee --- /dev/null +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/PgRuntimeExtension.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.tractusx.edc.tests.runtimes; + +import org.eclipse.edc.sql.testfixtures.PostgresqlLocalInstance; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.containers.wait.strategy.Wait; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static java.lang.String.format; +import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.DB_SCHEMA_NAME; + +/** + * Instantiates the Postgres docker container and configures the runtime accordingly + */ +public class PgRuntimeExtension extends ParticipantRuntimeExtension { + private static final String POSTGRES_IMAGE_NAME = "postgres:16.2"; + private static final String USER = "postgres"; + private static final String PASSWORD = "password"; + private static final List DATASOURCES = List.of("asset", "contractdefinition", + "contractnegotiation", "policy", "transferprocess", "bpn", + "policy-monitor", "edr", "dataplane", "accesstokendata"); + private final PostgreSQLContainer postgreSqlContainer; + private final String dbName; + + public PgRuntimeExtension(String moduleName, String runtimeName, String bpn, Map properties) { + super(new ParticipantRuntime(moduleName, runtimeName, bpn, properties)); + this.dbName = runtimeName.toLowerCase(); + postgreSqlContainer = new PostgreSQLContainer<>(POSTGRES_IMAGE_NAME) + .withLabel("runtime", dbName) + .withExposedPorts(5432) + .withUsername(USER) + .withPassword(PASSWORD) + .withDatabaseName(dbName); + } + + @Override + public void beforeAll(ExtensionContext context) { + + postgreSqlContainer.start(); + postgreSqlContainer.waitingFor(Wait.forHealthcheck()); + var config = postgresqlConfiguration(dbName); + config.forEach(System::setProperty); + PostgresqlLocalInstance helper = new PostgresqlLocalInstance(postgreSqlContainer.getUsername(), postgreSqlContainer.getPassword(), baseJdbcUrl(), postgreSqlContainer.getDatabaseName()); + helper.createDatabase(); + super.beforeAll(context); + } + + @Override + public void afterAll(ExtensionContext context) { + super.afterAll(context); + postgreSqlContainer.stop(); + postgreSqlContainer.close(); + } + + public Map postgresqlConfiguration(String name) { + var jdbcUrl = jdbcUrl(name); + return new HashMap<>() { + { + DATASOURCES.forEach(context -> { + var group = "edc.datasource." + context; + put(group + ".name", context); + put(group + ".url", jdbcUrl); + put(group + ".user", USER); + put(group + ".password", PASSWORD); + }); + // use non-default schema name to test usage of non-default schema + put("org.eclipse.tractusx.edc.postgresql.migration.schema", DB_SCHEMA_NAME); + } + }; + } + + public String jdbcUrl(String name) { + return baseJdbcUrl() + name + "?currentSchema=" + DB_SCHEMA_NAME; + } + + public String baseJdbcUrl() { + return format("jdbc:postgresql://%s:%s/", postgreSqlContainer.getHost(), postgreSqlContainer.getFirstMappedPort()); + } +} diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/Runtimes.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/Runtimes.java index a033ed718..9ba5f7ab0 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/Runtimes.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/runtimes/Runtimes.java @@ -19,19 +19,21 @@ package org.eclipse.tractusx.edc.tests.runtimes; +import org.eclipse.edc.junit.extensions.RuntimeExtension; + import java.util.Map; public interface Runtimes { - static ParticipantRuntime memoryRuntime(String runtimeName, String bpn, Map properties) { + static RuntimeExtension memoryRuntime(String runtimeName, String bpn, Map properties) { return memoryRuntime(runtimeName, bpn, properties, null); } - static ParticipantRuntime memoryRuntime(String runtimeName, String bpn, Map properties, BeforeInitCallback callback) { - return new ParticipantRuntime(":edc-tests:runtime:runtime-memory", runtimeName, bpn, properties, callback); + static RuntimeExtension memoryRuntime(String runtimeName, String bpn, Map properties, BeforeInitCallback callback) { + return new ParticipantRuntimeExtension(":edc-tests:runtime:runtime-memory", runtimeName, bpn, properties, callback); } - static PgParticipantRuntime pgRuntime(String runtimeName, String bpn, Map properties) { - return new PgParticipantRuntime(":edc-tests:runtime:runtime-postgresql", runtimeName, bpn, properties); + static RuntimeExtension pgRuntime(String runtimeName, String bpn, Map properties) { + return new PgRuntimeExtension(":edc-tests:runtime:runtime-postgresql", runtimeName, bpn, properties); } } diff --git a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullBaseTest.java b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullBaseTest.java index 0ea951065..6f56156ba 100644 --- a/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullBaseTest.java +++ b/edc-tests/edc-controlplane/fixtures/src/testFixtures/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullBaseTest.java @@ -19,7 +19,6 @@ package org.eclipse.tractusx.edc.tests.transfer; -import jakarta.json.Json; import jakarta.json.JsonObject; import org.eclipse.edc.connector.controlplane.transfer.spi.types.TransferProcessStates; import org.eclipse.tractusx.edc.tests.ParticipantAwareTest; @@ -37,7 +36,6 @@ import static org.awaitility.pollinterval.FibonacciPollInterval.fibonacci; import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.eclipse.tractusx.edc.tests.helpers.PolicyHelperFunctions.bnpPolicy; -import static org.eclipse.tractusx.edc.tests.helpers.TransferProcessHelperFunctions.createProxyRequest; import static org.eclipse.tractusx.edc.tests.participant.TractusxParticipantBase.ASYNC_TIMEOUT; import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpResponse.response; @@ -53,7 +51,6 @@ public abstract class HttpConsumerPullBaseTest implements ParticipantAwareTest { protected String privateBackendUrl; - @BeforeEach void setup() { server = ClientAndServer.startClientAndServer(MOCK_BACKEND_REMOTE_HOST, getFreePort()); @@ -76,7 +73,7 @@ void transferData_privateBackend() { var accessPolicyId = provider().createPolicyDefinition(createAccessPolicy(consumer().getBpn())); var contractPolicyId = provider().createPolicyDefinition(createContractPolicy(consumer().getBpn())); provider().createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); - var transferProcessId = consumer().requestAsset(provider(), assetId, Json.createObjectBuilder().build(), createProxyRequest(), "HttpData-PULL"); + var transferProcessId = consumer().requestAssetFrom(assetId, provider()).withTransferType("HttpData-PULL").execute(); var edr = new AtomicReference(); @@ -125,7 +122,7 @@ void transferData_privateBackend_withConsumerDataPlane() { var accessPolicyId = provider().createPolicyDefinition(createAccessPolicy(consumer().getBpn())); var contractPolicyId = provider().createPolicyDefinition(createContractPolicy(consumer().getBpn())); provider().createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); - var transferProcessId = consumer().requestAsset(provider(), assetId, Json.createObjectBuilder().build(), createProxyRequest(), "HttpData-PULL"); + var transferProcessId = consumer().requestAssetFrom(assetId, provider()).withTransferType("HttpData-PULL").execute(); var edr = new AtomicReference(); diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractIatpConsumerPullTest.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractIatpConsumerPullTest.java index fa3da5a30..45551ac38 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractIatpConsumerPullTest.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractIatpConsumerPullTest.java @@ -29,6 +29,7 @@ import org.eclipse.edc.identityhub.spi.store.CredentialStore; import org.eclipse.edc.identityhub.spi.verifiablecredentials.model.VerifiableCredentialResource; import org.eclipse.edc.jsonld.spi.JsonLd; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.edc.policy.model.Operator; import org.eclipse.edc.spi.query.Criterion; import org.eclipse.edc.spi.query.QuerySpec; @@ -37,7 +38,6 @@ import org.eclipse.tractusx.edc.tests.transfer.iatp.harness.IatpParticipant; import org.eclipse.tractusx.edc.tests.transfer.iatp.harness.StatusList2021; import org.eclipse.tractusx.edc.tests.transfer.iatp.harness.StsParticipant; -import org.eclipse.tractusx.edc.tests.transfer.iatp.runtime.IatpParticipantRuntime; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; @@ -66,7 +66,6 @@ import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_BPN; import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_NAME; import static org.eclipse.tractusx.edc.tests.helpers.PolicyHelperFunctions.frameworkPolicy; -import static org.eclipse.tractusx.edc.tests.helpers.TransferProcessHelperFunctions.createProxyRequest; import static org.eclipse.tractusx.edc.tests.participant.TractusxParticipantBase.ASYNC_TIMEOUT; import static org.eclipse.tractusx.edc.tests.transfer.iatp.harness.IatpHelperFunctions.createVcBuilder; import static org.eclipse.tractusx.edc.tests.transfer.iatp.harness.IatpHelperFunctions.membershipSubject; @@ -141,7 +140,7 @@ void transferData_whenContractPolicyFulfilled(JsonObject contractPolicy, String var accessPolicyId = PROVIDER.createPolicyDefinition(createAccessPolicy(CONSUMER.getBpn())); var contractPolicyId = PROVIDER.createPolicyDefinition(contractPolicy); PROVIDER.createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); - var transferProcessId = CONSUMER.requestAsset(PROVIDER, assetId, Json.createObjectBuilder().build(), createProxyRequest(), "HttpData-PULL"); + var transferProcessId = CONSUMER.requestAssetFrom(assetId, PROVIDER).withTransferType("HttpData-PULL").execute(); var edr = new AtomicReference(); @@ -210,7 +209,6 @@ void transferData_whenContractPolicyNotFulfilled(JsonObject contractPolicy, Stri void catalogRequest_whenCredentialExpired() { //update the membership credential to an expirationDate that is in the past var store = consumerRuntime().getService(CredentialStore.class); - var jsonLd = consumerRuntime().getService(JsonLd.class); var existingCred = store.query(QuerySpec.Builder.newInstance().filter(new Criterion("verifiableCredential.credential.type", "contains", "MembershipCredential")).build()) .orElseThrow(f -> new RuntimeException(f.getFailureDetail())) @@ -272,10 +270,10 @@ void catalogRequest_whenCredentialRevoked() { .id(existingCred.getVerifiableCredential().credential().getId()) .types(existingCred.getVerifiableCredential().credential().getType()) .credentialSubjects(existingCred.getVerifiableCredential().credential().getCredentialSubject()) - .credentialStatus(new CredentialStatus("https://localhost:%s/status/list/7#12345".formatted(port), "StatusList2021", + .credentialStatus(new CredentialStatus("http://localhost:%s/status/list/7#12345".formatted(port), "StatusList2021", Map.of("statusPurpose", "revocation", "statusListIndex", "12345", - "statusListCredential", "https://localhost:%d/status/list/7".formatted(port) + "statusListCredential", "http://localhost:%d/status/list/7".formatted(port) ) )) .issuer(existingCred.getVerifiableCredential().credential().getIssuer()) @@ -325,9 +323,9 @@ protected JsonObject createContractPolicy(String bpn) { return frameworkPolicy(Map.of(CX_CREDENTIAL_NS + "Membership", "active")); } - protected abstract IatpParticipantRuntime consumerRuntime(); + protected abstract RuntimeExtension consumerRuntime(); - protected abstract IatpParticipantRuntime providerRuntime(); + protected abstract RuntimeExtension providerRuntime(); private static class ValidContractPolicyProvider implements ArgumentsProvider { @Override diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/CredentialSpoofTest.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/CredentialSpoofTest.java index a16e7cf2e..1718d1985 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/CredentialSpoofTest.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/CredentialSpoofTest.java @@ -28,14 +28,13 @@ import org.eclipse.edc.identityhub.spi.verifiablecredentials.model.VerifiableCredentialResource; import org.eclipse.edc.jsonld.spi.JsonLd; import org.eclipse.edc.junit.annotations.EndToEndTest; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.edc.spi.EdcException; import org.eclipse.edc.spi.query.QuerySpec; import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.transform.spi.TypeTransformerRegistry; import org.eclipse.tractusx.edc.tests.transfer.iatp.harness.IatpParticipant; -import org.eclipse.tractusx.edc.tests.transfer.iatp.runtime.IatpParticipantRuntime; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -74,33 +73,16 @@ public class CredentialSpoofTest implements IatpParticipants { .build(); @RegisterExtension - protected static final IatpParticipantRuntime MALICIOUS_ACTOR_RUNTIME = iatpRuntime(MALICIOUS_ACTOR.getName(), MALICIOUS_ACTOR.iatpConfiguration(PROVIDER, CONSUMER), MALICIOUS_ACTOR.getKeyPair()); + protected static final RuntimeExtension MALICIOUS_ACTOR_RUNTIME = iatpRuntime(MALICIOUS_ACTOR.getName(), MALICIOUS_ACTOR.iatpConfiguration(PROVIDER, CONSUMER), MALICIOUS_ACTOR.getKeyPair()); @RegisterExtension - protected static final IatpParticipantRuntime CONSUMER_RUNTIME = iatpRuntime(CONSUMER.getName(), CONSUMER.iatpConfiguration(PROVIDER, MALICIOUS_ACTOR), CONSUMER.getKeyPair()); + protected static final RuntimeExtension CONSUMER_RUNTIME = iatpRuntime(CONSUMER.getName(), CONSUMER.iatpConfiguration(PROVIDER, MALICIOUS_ACTOR), CONSUMER.getKeyPair()); @RegisterExtension - protected static final IatpParticipantRuntime PROVIDER_RUNTIME = iatpRuntime(PROVIDER.getName(), PROVIDER.iatpConfiguration(CONSUMER, MALICIOUS_ACTOR), PROVIDER.getKeyPair()); + protected static final RuntimeExtension PROVIDER_RUNTIME = iatpRuntime(PROVIDER.getName(), PROVIDER.iatpConfiguration(CONSUMER, MALICIOUS_ACTOR), PROVIDER.getKeyPair()); @RegisterExtension - protected static final IatpParticipantRuntime STS_RUNTIME = stsRuntime(STS.getName(), STS.stsConfiguration(CONSUMER, PROVIDER, MALICIOUS_ACTOR), STS.getKeyPair()); + protected static final RuntimeExtension STS_RUNTIME = stsRuntime(STS.getName(), STS.stsConfiguration(CONSUMER, PROVIDER, MALICIOUS_ACTOR), STS.getKeyPair()); private static final Integer MOCKED_CS_SERVICE_PORT = getFreePort(); protected ClientAndServer server; - - @BeforeAll - static void prepare() { - - // create the DIDs cache - var dids = new HashMap(); - dids.put(DATASPACE_ISSUER_PARTICIPANT.didUrl(), DATASPACE_ISSUER_PARTICIPANT.didDocument()); - dids.put(CONSUMER.getDid(), CONSUMER.getDidDocument()); - dids.put(PROVIDER.getDid(), PROVIDER.getDidDocument()); - dids.put(MALICIOUS_ACTOR.getDid(), maliciousActorDidDocument(MALICIOUS_ACTOR.getDidDocument())); - - configureParticipant(DATASPACE_ISSUER_PARTICIPANT, CONSUMER, CONSUMER_RUNTIME, dids, STS_RUNTIME); - configureParticipant(DATASPACE_ISSUER_PARTICIPANT, PROVIDER, PROVIDER_RUNTIME, dids, STS_RUNTIME); - configureParticipant(DATASPACE_ISSUER_PARTICIPANT, MALICIOUS_ACTOR, MALICIOUS_ACTOR_RUNTIME, dids, STS_RUNTIME); - - } - private static DidDocument maliciousActorDidDocument(DidDocument didDocument) { var service = new Service(); service.setId("#credential-service"); @@ -116,6 +98,17 @@ private static DidDocument maliciousActorDidDocument(DidDocument didDocument) { @BeforeEach void setup() { server = ClientAndServer.startClientAndServer("localhost", getFreePort(), MOCKED_CS_SERVICE_PORT); + + // create the DIDs cache + var dids = new HashMap(); + dids.put(DATASPACE_ISSUER_PARTICIPANT.didUrl(), DATASPACE_ISSUER_PARTICIPANT.didDocument()); + dids.put(CONSUMER.getDid(), CONSUMER.getDidDocument()); + dids.put(PROVIDER.getDid(), PROVIDER.getDidDocument()); + dids.put(MALICIOUS_ACTOR.getDid(), maliciousActorDidDocument(MALICIOUS_ACTOR.getDidDocument())); + + configureParticipant(DATASPACE_ISSUER_PARTICIPANT, CONSUMER, CONSUMER_RUNTIME, dids, STS_RUNTIME); + configureParticipant(DATASPACE_ISSUER_PARTICIPANT, PROVIDER, PROVIDER_RUNTIME, dids, STS_RUNTIME); + configureParticipant(DATASPACE_ISSUER_PARTICIPANT, MALICIOUS_ACTOR, MALICIOUS_ACTOR_RUNTIME, dids, STS_RUNTIME); } @AfterEach @@ -128,7 +121,6 @@ void shutdown() { void shouldNotImpersonateConsumer_withWrappedConsumerCredential() { var assetId = "api-asset-1"; - Map dataAddress = Map.of( "baseUrl", "http://mock", "type", "HttpData", @@ -149,7 +141,6 @@ void shouldNotImpersonateConsumer_withWrappedConsumerCredential() { MALICIOUS_ACTOR.getCatalog(PROVIDER) .log().ifError() .statusCode(not(200)); - } @Test diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/DimHttpConsumerPullTest.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/DimHttpConsumerPullTest.java index f1212a162..b4d98f912 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/DimHttpConsumerPullTest.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/DimHttpConsumerPullTest.java @@ -23,19 +23,19 @@ import org.eclipse.edc.iam.identitytrust.sts.embedded.EmbeddedSecureTokenService; import org.eclipse.edc.json.JacksonTypeManager; import org.eclipse.edc.junit.annotations.EndToEndTest; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.edc.spi.types.TypeManager; import org.eclipse.edc.token.JwtGenerationService; import org.eclipse.edc.token.spi.TokenGenerationService; import org.eclipse.tractusx.edc.tests.transfer.iatp.dispatchers.DimDispatcher; import org.eclipse.tractusx.edc.tests.transfer.iatp.harness.IatpParticipant; -import org.eclipse.tractusx.edc.tests.transfer.iatp.runtime.IatpParticipantRuntime; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.RegisterExtension; import org.mockserver.integration.ClientAndServer; import org.mockserver.model.HttpResponse; -import java.io.IOException; import java.security.PrivateKey; import java.time.Clock; import java.util.HashMap; @@ -50,13 +50,31 @@ public class DimHttpConsumerPullTest extends AbstractIatpConsumerPullTest { @RegisterExtension - protected static final IatpParticipantRuntime CONSUMER_RUNTIME = dimRuntime(CONSUMER.getName(), CONSUMER.iatpConfiguration(PROVIDER), CONSUMER.getKeyPair()); + protected static final RuntimeExtension CONSUMER_RUNTIME = dimRuntime(CONSUMER.getName(), CONSUMER.iatpConfiguration(PROVIDER), CONSUMER.getKeyPair()); @RegisterExtension - protected static final IatpParticipantRuntime PROVIDER_RUNTIME = dimRuntime(PROVIDER.getName(), PROVIDER.iatpConfiguration(CONSUMER), PROVIDER.getKeyPair()); + protected static final RuntimeExtension PROVIDER_RUNTIME = dimRuntime(PROVIDER.getName(), PROVIDER.iatpConfiguration(CONSUMER), PROVIDER.getKeyPair()); private static final TypeManager MAPPER = new JacksonTypeManager(); private static ClientAndServer oauthServer; private static ClientAndServer dimServer; + @AfterAll + static void unwind() { + oauthServer.stop(); + dimServer.stop(); + } + + private static EmbeddedSecureTokenService tokenServiceFor(TokenGenerationService tokenGenerationService, IatpParticipant iatpDimParticipant) { + return new EmbeddedSecureTokenService(tokenGenerationService, privateKeySupplier(iatpDimParticipant), publicIdSupplier(iatpDimParticipant), Clock.systemUTC(), 60 * 60); + } + + private static Supplier privateKeySupplier(IatpParticipant participant) { + return () -> participant.getKeyPair().getPrivate(); + } + + private static Supplier publicIdSupplier(IatpParticipant participant) { + return participant::verificationId; + } + @BeforeAll static void prepare() { @@ -74,6 +92,11 @@ static void prepare() { dimServer = ClientAndServer.startClientAndServer(DIM_URI.getPort()); dimServer.when(request().withMethod("POST")).respond(new DimDispatcher(generatorServices)); + } + + // credentials etc get wiped after every, so the need to be created before every test + @BeforeEach + void setupParticipants() { // create the DIDs cache var dids = new HashMap(); dids.put(DATASPACE_ISSUER_PARTICIPANT.didUrl(), DATASPACE_ISSUER_PARTICIPANT.didDocument()); @@ -82,34 +105,15 @@ static void prepare() { configureParticipant(DATASPACE_ISSUER_PARTICIPANT, CONSUMER, CONSUMER_RUNTIME, dids, null); configureParticipant(DATASPACE_ISSUER_PARTICIPANT, PROVIDER, PROVIDER_RUNTIME, dids, null); - - } - - @AfterAll - static void unwind() throws IOException { - oauthServer.stop(); - dimServer.stop(); - } - - private static EmbeddedSecureTokenService tokenServiceFor(TokenGenerationService tokenGenerationService, IatpParticipant iatpDimParticipant) { - return new EmbeddedSecureTokenService(tokenGenerationService, privateKeySupplier(iatpDimParticipant), publicIdSupplier(iatpDimParticipant), Clock.systemUTC(), 60 * 60); - } - - private static Supplier privateKeySupplier(IatpParticipant participant) { - return () -> participant.getKeyPair().getPrivate(); - } - - private static Supplier publicIdSupplier(IatpParticipant participant) { - return participant::verificationId; } @Override - protected IatpParticipantRuntime consumerRuntime() { + protected RuntimeExtension consumerRuntime() { return CONSUMER_RUNTIME; } @Override - protected IatpParticipantRuntime providerRuntime() { - return CONSUMER_RUNTIME; + protected RuntimeExtension providerRuntime() { + return PROVIDER_RUNTIME; } } diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/StsHttpConsumerPullTest.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/StsHttpConsumerPullTest.java index b4a6665b9..70fe07775 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/StsHttpConsumerPullTest.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/StsHttpConsumerPullTest.java @@ -21,8 +21,8 @@ import org.eclipse.edc.iam.did.spi.document.DidDocument; import org.eclipse.edc.junit.annotations.EndToEndTest; -import org.eclipse.tractusx.edc.tests.transfer.iatp.runtime.IatpParticipantRuntime; -import org.junit.jupiter.api.BeforeAll; +import org.eclipse.edc.junit.extensions.RuntimeExtension; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.RegisterExtension; import java.util.HashMap; @@ -36,16 +36,16 @@ public class StsHttpConsumerPullTest extends AbstractIatpConsumerPullTest { @RegisterExtension - protected static final IatpParticipantRuntime CONSUMER_RUNTIME = iatpRuntime(CONSUMER.getName(), CONSUMER.iatpConfiguration(PROVIDER), CONSUMER.getKeyPair()); + protected static final RuntimeExtension CONSUMER_RUNTIME = iatpRuntime(CONSUMER.getName(), CONSUMER.iatpConfiguration(PROVIDER), CONSUMER.getKeyPair()); @RegisterExtension - protected static final IatpParticipantRuntime PROVIDER_RUNTIME = iatpRuntime(PROVIDER.getName(), PROVIDER.iatpConfiguration(CONSUMER), PROVIDER.getKeyPair()); + protected static final RuntimeExtension PROVIDER_RUNTIME = iatpRuntime(PROVIDER.getName(), PROVIDER.iatpConfiguration(CONSUMER), PROVIDER.getKeyPair()); @RegisterExtension - protected static final IatpParticipantRuntime STS_RUNTIME = stsRuntime(STS.getName(), STS.stsConfiguration(CONSUMER, PROVIDER), STS.getKeyPair()); + protected static final RuntimeExtension STS_RUNTIME = stsRuntime(STS.getName(), STS.stsConfiguration(CONSUMER, PROVIDER), STS.getKeyPair()); - @BeforeAll - static void prepare() { + @BeforeEach + void prepare() { // create the DIDs cache var dids = new HashMap(); @@ -59,12 +59,12 @@ static void prepare() { } @Override - protected IatpParticipantRuntime consumerRuntime() { + protected RuntimeExtension consumerRuntime() { return CONSUMER_RUNTIME; } @Override - protected IatpParticipantRuntime providerRuntime() { + protected RuntimeExtension providerRuntime() { return PROVIDER_RUNTIME; } } diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/IatpHelperFunctions.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/IatpHelperFunctions.java index 65eb18b3f..a186215b7 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/IatpHelperFunctions.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/IatpHelperFunctions.java @@ -31,7 +31,7 @@ import org.eclipse.edc.identityhub.spi.store.CredentialStore; import org.eclipse.edc.identityhub.spi.verifiablecredentials.model.VerifiableCredentialResource; import org.eclipse.edc.jsonld.spi.JsonLd; -import org.eclipse.edc.junit.extensions.EdcExtension; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.edc.spi.security.Vault; import java.time.Instant; @@ -89,14 +89,14 @@ private static JsonArray context() { .build(); } - public static void configureParticipant(DataspaceIssuer issuer, IatpParticipant participant, EdcExtension runtime, Map didDocs, EdcExtension stsRuntime) { + public static void configureParticipant(DataspaceIssuer issuer, IatpParticipant participant, RuntimeExtension runtimeExtension, Map didDocs, RuntimeExtension stsRuntimeExtension) { - if (stsRuntime != null) { - stsRuntime.getContext().getService(Vault.class).storeSecret(participant.verificationId(), participant.getPrivateKeyAsString()); + if (stsRuntimeExtension != null) { + stsRuntimeExtension.getService(Vault.class).storeSecret(participant.verificationId(), participant.getPrivateKeyAsString()); } - var participantContextService = runtime.getContext().getService(ParticipantContextService.class); - var vault = runtime.getContext().getService(Vault.class); - var didResolverRegistry = runtime.getContext().getService(DidResolverRegistry.class); + var participantContextService = runtimeExtension.getService(ParticipantContextService.class); + var vault = runtimeExtension.getService(Vault.class); + var didResolverRegistry = runtimeExtension.getService(DidResolverRegistry.class); var didResolver = new DidExampleResolver(); didDocs.forEach(didResolver::addCached); didResolverRegistry.register(didResolver); @@ -117,12 +117,12 @@ public static void configureParticipant(DataspaceIssuer issuer, IatpParticipant participantContextService.createParticipantContext(participantManifest); vault.storeSecret(participant.getPrivateKeyAlias(), participant.getPrivateKeyAsString()); - storeCredentials(issuer, participant, runtime); + storeCredentials(issuer, participant, runtimeExtension); } - private static void storeCredentials(DataspaceIssuer issuer, IatpParticipant participant, EdcExtension runtime) { - var credentialStore = runtime.getContext().getService(CredentialStore.class); - var jsonLd = runtime.getContext().getService(JsonLd.class); + private static void storeCredentials(DataspaceIssuer issuer, IatpParticipant participant, RuntimeExtension runtime) { + var credentialStore = runtime.getService(CredentialStore.class); + var jsonLd = runtime.getService(JsonLd.class); issueCredentials(issuer, participant, jsonLd).forEach(credentialStore::create); } diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/IatpParticipant.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/IatpParticipant.java index b4edf7502..bddc6b8a3 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/IatpParticipant.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/IatpParticipant.java @@ -53,7 +53,7 @@ public Map getConfiguration() { cfg.put("web.http.resolution.port", String.valueOf(csService.getPort())); cfg.put("web.http.resolution.path", csService.getPath()); if (dimUri != null) { - cfg.put("edc.iam.sts.dim.url", dimUri.toString()); + cfg.put("tx.edc.iam.sts.dim.url", dimUri.toString()); } return cfg; } diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/StsParticipant.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/StsParticipant.java index 3671cb60e..8b57c255f 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/StsParticipant.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/harness/StsParticipant.java @@ -46,7 +46,6 @@ public Map stsConfiguration(IatpParticipant... participants) { stsConfiguration.put("web.http.sts.port", String.valueOf(stsUri.getPort())); stsConfiguration.put("web.http.sts.path", stsUri.getPath()); - stsConfiguration.put("edc.dataplane.token.validation.endpoint", ""); stsConfiguration.put("tx.vault.seed.secrets", "client_secret_alias:client_secret"); Arrays.stream(participants).forEach(participant -> { diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/CredentialWiper.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/CredentialWiper.java new file mode 100644 index 000000000..0d249e4b0 --- /dev/null +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/CredentialWiper.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.tractusx.edc.tests.transfer.iatp.runtime; + +import org.eclipse.edc.identityhub.spi.store.CredentialStore; +import org.eclipse.edc.spi.query.QuerySpec; +import org.eclipse.edc.spi.result.StoreResult; +import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.tractusx.edc.tests.runtimes.DataWiper; + +/** + * Extends the functionality of the {@link DataWiper} by also deleting everything from the {@link CredentialStore} + */ +public class CredentialWiper extends DataWiper { + public CredentialWiper(ServiceExtensionContext context) { + super(context); + } + + @Override + public void clearPersistence() { + super.clearPersistence(); + if (context.hasService(CredentialStore.class)) { + var store = context.getService(CredentialStore.class); + var creds = store.query(QuerySpec.none()).orElseThrow(f -> new RuntimeException(f.getFailureDetail())); + var hasFailed = creds.stream().map(cred -> store.deleteById(cred.getId())) + .anyMatch(StoreResult::failed); + + if (hasFailed) { + throw new RuntimeException("Could not delete some credentials!"); + } + } + } +} diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/IatpParticipantRuntime.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/IatpParticipantRuntime.java index b94368687..934a6192b 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/IatpParticipantRuntime.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/IatpParticipantRuntime.java @@ -21,60 +21,40 @@ import com.nimbusds.jose.jwk.JWK; import org.eclipse.edc.boot.system.injection.InjectionContainer; -import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; +import org.eclipse.edc.junit.extensions.EmbeddedRuntime; import org.eclipse.edc.security.token.jwt.CryptoConverter; import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.tractusx.edc.spi.identity.mapper.BdrsClient; import org.eclipse.tractusx.edc.tests.runtimes.DataWiper; -import org.junit.jupiter.api.extension.AfterAllCallback; -import org.junit.jupiter.api.extension.BeforeAllCallback; -import org.junit.jupiter.api.extension.ExtensionContext; import java.security.KeyPair; import java.util.List; import java.util.Map; -public class IatpParticipantRuntime extends EdcRuntimeExtension implements BeforeAllCallback, AfterAllCallback { - +public class IatpParticipantRuntime extends EmbeddedRuntime { private final Map properties; private final JWK runtimeKeyPair; private DataWiper wiper; public IatpParticipantRuntime(String moduleName, String runtimeName, Map properties, KeyPair runtimeKeypair) { - super(moduleName, runtimeName, properties); + super(runtimeName, properties, moduleName); this.properties = properties; runtimeKeyPair = CryptoConverter.createJwk(runtimeKeypair); this.registerServiceMock(BdrsClient.class, (s) -> s); } - @Override - public void beforeTestExecution(ExtensionContext extensionContext) { - //do nothing - we only want to start the runtime once - wiper.clearPersistence(); - } - - @Override - public void afterTestExecution(ExtensionContext context) { - } - - @Override - public void beforeAll(ExtensionContext context) throws Exception { - //only run this once - super.beforeTestExecution(context); + public DataWiper getWiper() { + return wiper; } - @Override - public void afterAll(ExtensionContext context) throws Exception { - super.afterTestExecution(context); - } @Override protected void bootExtensions(ServiceExtensionContext context, List> serviceExtensions) { super.bootExtensions(context, serviceExtensions); - wiper = new DataWiper(context); + wiper = new CredentialWiper(getContext()); registerConsumerPullKeys(runtimeKeyPair); } @@ -83,7 +63,7 @@ private void registerConsumerPullKeys(JWK ecKey) { var publicAlias = properties.get("edc.transfer.proxy.token.verifier.publickey.alias"); if (privateAlias != null && publicAlias != null) { - var vault = getContext().getService(Vault.class); + var vault = getService(Vault.class); vault.storeSecret(privateAlias, ecKey.toJSONString()); vault.storeSecret(publicAlias, ecKey.toPublicJWK().toJSONString()); } diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/IatpParticipantRuntimeExtension.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/IatpParticipantRuntimeExtension.java new file mode 100644 index 000000000..90bd06232 --- /dev/null +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/IatpParticipantRuntimeExtension.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.tractusx.edc.tests.transfer.iatp.runtime; + +import org.eclipse.edc.junit.extensions.RuntimePerClassExtension; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; + +import java.security.KeyPair; +import java.util.Map; + +public class IatpParticipantRuntimeExtension extends RuntimePerClassExtension implements AfterEachCallback { + + public IatpParticipantRuntimeExtension(String modulename, String name, Map properties, KeyPair keyPair) { + super(new IatpParticipantRuntime(modulename, name, properties, keyPair)); + } + + @Override + public void afterEach(ExtensionContext extensionContext) { + ((IatpParticipantRuntime) runtime).getWiper().clearPersistence(); + } +} diff --git a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/Runtimes.java b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/Runtimes.java index 8dcce0fdc..32e353972 100644 --- a/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/Runtimes.java +++ b/edc-tests/edc-controlplane/iatp-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/iatp/runtime/Runtimes.java @@ -19,27 +19,29 @@ package org.eclipse.tractusx.edc.tests.transfer.iatp.runtime; +import org.eclipse.edc.junit.extensions.RuntimeExtension; + import java.security.KeyPair; import java.util.Map; public interface Runtimes { - static IatpParticipantRuntime dimRuntime(String name, Map properties, KeyPair keyPair) { - return new IatpParticipantRuntime(":edc-tests:runtime:iatp:runtime-memory-iatp-dim-ih", + static RuntimeExtension dimRuntime(String name, Map properties, KeyPair keyPair) { + return new IatpParticipantRuntimeExtension(":edc-tests:runtime:iatp:runtime-memory-iatp-dim-ih", name, properties, keyPair); } - static IatpParticipantRuntime iatpRuntime(String name, Map properties, KeyPair keyPair) { - return new IatpParticipantRuntime(":edc-tests:runtime:iatp:runtime-memory-iatp-ih", + static RuntimeExtension iatpRuntime(String name, Map properties, KeyPair keyPair) { + return new IatpParticipantRuntimeExtension(":edc-tests:runtime:iatp:runtime-memory-iatp-ih", name, properties, keyPair); } - static IatpParticipantRuntime stsRuntime(String name, Map properties, KeyPair keyPair) { - return new IatpParticipantRuntime( + static RuntimeExtension stsRuntime(String name, Map properties, KeyPair keyPair) { + return new IatpParticipantRuntimeExtension( ":edc-tests:runtime:iatp:runtime-memory-sts", name, properties, diff --git a/edc-tests/edc-controlplane/policy-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorEndToEndTest.java b/edc-tests/edc-controlplane/policy-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorEndToEndTest.java index 6dc9d28c7..c7db01938 100644 --- a/edc-tests/edc-controlplane/policy-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorEndToEndTest.java +++ b/edc-tests/edc-controlplane/policy-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorEndToEndTest.java @@ -19,12 +19,10 @@ package org.eclipse.tractusx.edc.tests.policy; -import jakarta.json.Json; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.tractusx.edc.tests.participant.TransferParticipant; -import org.eclipse.tractusx.edc.tests.runtimes.ParticipantRuntime; -import org.eclipse.tractusx.edc.tests.runtimes.PgParticipantRuntime; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -41,7 +39,6 @@ import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.CONSUMER_NAME; import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_BPN; import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_NAME; -import static org.eclipse.tractusx.edc.tests.helpers.TransferProcessHelperFunctions.createProxyRequest; import static org.eclipse.tractusx.edc.tests.participant.TractusxParticipantBase.ASYNC_TIMEOUT; import static org.eclipse.tractusx.edc.tests.runtimes.Runtimes.memoryRuntime; import static org.eclipse.tractusx.edc.tests.runtimes.Runtimes.pgRuntime; @@ -79,7 +76,7 @@ void shouldTerminateTransfer_whenPolicyExpires() { PROVIDER.createContractDefinition(assetId, UUID.randomUUID().toString(), policyId, policyId); - var transferProcessId = CONSUMER.requestAsset(PROVIDER, assetId, Json.createObjectBuilder().build(), createProxyRequest(), "HttpData-PULL"); + var transferProcessId = CONSUMER.requestAssetFrom(assetId, PROVIDER).withTransferType("HttpData-PULL").execute(); await().atMost(ASYNC_TIMEOUT).untilAsserted(() -> { var state = CONSUMER.getTransferProcessState(transferProcessId); assertThat(state).isEqualTo(STARTED.name()); @@ -98,10 +95,10 @@ void shouldTerminateTransfer_whenPolicyExpires() { class InMemory extends Tests { @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final ParticipantRuntime PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } @@ -110,10 +107,10 @@ class InMemory extends Tests { class Postgres extends Tests { @RegisterExtension - protected static final PgParticipantRuntime CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final PgParticipantRuntime PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } } diff --git a/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferPullEndToEndTest.java b/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferPullEndToEndTest.java index 6dfc2bf7a..00dfda52a 100644 --- a/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferPullEndToEndTest.java +++ b/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferPullEndToEndTest.java @@ -19,15 +19,13 @@ package org.eclipse.tractusx.edc.tests.transfer; -import jakarta.json.Json; import jakarta.json.JsonObject; import org.eclipse.edc.connector.controlplane.transfer.spi.types.TransferProcessStates; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.tractusx.edc.tests.participant.TractusxParticipantBase; import org.eclipse.tractusx.edc.tests.participant.TransferParticipant; -import org.eclipse.tractusx.edc.tests.runtimes.ParticipantRuntime; -import org.eclipse.tractusx.edc.tests.runtimes.PgParticipantRuntime; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -41,7 +39,6 @@ import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.CONSUMER_NAME; import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_BPN; import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_NAME; -import static org.eclipse.tractusx.edc.tests.helpers.TransferProcessHelperFunctions.createProxyRequest; import static org.eclipse.tractusx.edc.tests.runtimes.Runtimes.memoryRuntime; import static org.eclipse.tractusx.edc.tests.runtimes.Runtimes.pgRuntime; import static org.mockserver.model.HttpRequest.request; @@ -88,7 +85,7 @@ void transferData_withSuspendResume() { var accessPolicyId = PROVIDER.createPolicyDefinition(createAccessPolicy(CONSUMER.getBpn())); var contractPolicyId = PROVIDER.createPolicyDefinition(createContractPolicy(CONSUMER.getBpn())); PROVIDER.createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); - var transferProcessId = CONSUMER.requestAsset(PROVIDER, assetId, Json.createObjectBuilder().build(), createProxyRequest(), "HttpData-PULL"); + var transferProcessId = CONSUMER.requestAssetFrom(assetId, PROVIDER).withTransferType("HttpData-PULL").execute(); CONSUMER.waitForTransferProcess(transferProcessId, TransferProcessStates.STARTED); @@ -144,7 +141,7 @@ void transferData_withTerminate() { var accessPolicyId = PROVIDER.createPolicyDefinition(createAccessPolicy(CONSUMER.getBpn())); var contractPolicyId = PROVIDER.createPolicyDefinition(inForcePolicy()); PROVIDER.createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); - var transferProcessId = CONSUMER.requestAsset(PROVIDER, assetId, Json.createObjectBuilder().build(), createProxyRequest(), "HttpData-PULL"); + var transferProcessId = CONSUMER.requestAssetFrom(assetId, PROVIDER).withTransferType("HttpData-PULL").execute(); CONSUMER.waitForTransferProcess(transferProcessId, TransferProcessStates.STARTED); @@ -178,10 +175,10 @@ protected JsonObject inForcePolicy() { class InMemory extends Tests { @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final ParticipantRuntime PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } @@ -190,10 +187,10 @@ class InMemory extends Tests { class Postgres extends Tests { @RegisterExtension - protected static final PgParticipantRuntime CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final PgParticipantRuntime PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } -} \ No newline at end of file +} diff --git a/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferPushEndToEndTest.java b/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferPushEndToEndTest.java index c316949ca..c57ce9470 100644 --- a/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferPushEndToEndTest.java +++ b/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferPushEndToEndTest.java @@ -21,10 +21,9 @@ import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.tractusx.edc.tests.participant.TractusxParticipantBase; import org.eclipse.tractusx.edc.tests.participant.TransferParticipant; -import org.eclipse.tractusx.edc.tests.runtimes.ParticipantRuntime; -import org.eclipse.tractusx.edc.tests.runtimes.PgParticipantRuntime; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.extension.RegisterExtension; @@ -65,10 +64,10 @@ public TractusxParticipantBase consumer() { class InMemory extends Tests { @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final ParticipantRuntime PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } @@ -77,10 +76,10 @@ class InMemory extends Tests { class Postgres extends Tests { @RegisterExtension - protected static final PgParticipantRuntime CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = pgRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); @RegisterExtension - protected static final PgParticipantRuntime PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); + protected static final RuntimeExtension PROVIDER_RUNTIME = pgRuntime(PROVIDER.getName(), PROVIDER.getBpn(), PROVIDER.getConfiguration()); } } \ No newline at end of file diff --git a/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferWithTokenRefreshTest.java b/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferWithTokenRefreshTest.java index 81a46a962..2e6dc374a 100644 --- a/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferWithTokenRefreshTest.java +++ b/edc-tests/edc-controlplane/transfer-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/TransferWithTokenRefreshTest.java @@ -19,14 +19,13 @@ package org.eclipse.tractusx.edc.tests.transfer; -import jakarta.json.Json; import jakarta.json.JsonObject; import org.eclipse.edc.connector.controlplane.transfer.spi.types.TransferProcessStates; import org.eclipse.edc.junit.annotations.EndToEndTest; -import org.eclipse.edc.junit.extensions.EdcExtension; +import org.eclipse.edc.junit.extensions.EmbeddedRuntime; +import org.eclipse.edc.junit.extensions.RuntimeExtension; import org.eclipse.tractusx.edc.spi.identity.mapper.BdrsClient; import org.eclipse.tractusx.edc.tests.participant.TransferParticipant; -import org.eclipse.tractusx.edc.tests.runtimes.ParticipantRuntime; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -48,7 +47,6 @@ import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_BPN; import static org.eclipse.tractusx.edc.tests.TestRuntimeConfiguration.PROVIDER_NAME; import static org.eclipse.tractusx.edc.tests.helpers.PolicyHelperFunctions.bnpPolicy; -import static org.eclipse.tractusx.edc.tests.helpers.TransferProcessHelperFunctions.createProxyRequest; import static org.eclipse.tractusx.edc.tests.participant.TractusxParticipantBase.ASYNC_TIMEOUT; import static org.eclipse.tractusx.edc.tests.runtimes.Runtimes.memoryRuntime; import static org.mockserver.model.HttpRequest.request; @@ -74,11 +72,11 @@ public class TransferWithTokenRefreshTest { .build(); @RegisterExtension - protected static final ParticipantRuntime CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); + protected static final RuntimeExtension CONSUMER_RUNTIME = memoryRuntime(CONSUMER.getName(), CONSUMER.getBpn(), CONSUMER.getConfiguration()); private static final Long VERY_SHORT_TOKEN_EXPIRY = 3L; @RegisterExtension - protected static final ParticipantRuntime PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), forConfig(PROVIDER.getConfiguration()), TransferWithTokenRefreshTest::providerInitiator); + protected static final RuntimeExtension PROVIDER_RUNTIME = memoryRuntime(PROVIDER.getName(), PROVIDER.getBpn(), forConfig(PROVIDER.getConfiguration()), TransferWithTokenRefreshTest::providerInitiator); protected ClientAndServer server; private String privateBackendUrl; @@ -90,7 +88,7 @@ private static Map forConfig(Map originalConfig) return newConfig; } - private static void providerInitiator(EdcExtension runtime) { + private static void providerInitiator(EmbeddedRuntime runtime) { runtime.registerServiceMock(BdrsClient.class, (c) -> CONSUMER.getDid()); } @@ -115,7 +113,7 @@ void transferData_withExpiredEdr_shouldReturn4xx() { var accessPolicyId = PROVIDER.createPolicyDefinition(createAccessPolicy(CONSUMER.getBpn())); var contractPolicyId = PROVIDER.createPolicyDefinition(createContractPolicy(CONSUMER.getBpn())); PROVIDER.createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); - var transferProcessId = CONSUMER.requestAsset(PROVIDER, assetId, Json.createObjectBuilder().build(), createProxyRequest(), "HttpData-PULL"); + var transferProcessId = CONSUMER.requestAssetFrom(assetId, PROVIDER).withTransferType("HttpData-PULL").execute(); CONSUMER.waitForTransferProcess(transferProcessId, TransferProcessStates.STARTED); @@ -173,7 +171,7 @@ void transferData_withAutomaticRefresh() { var accessPolicyId = PROVIDER.createPolicyDefinition(createAccessPolicy(CONSUMER.getBpn())); var contractPolicyId = PROVIDER.createPolicyDefinition(createContractPolicy(CONSUMER.getBpn())); PROVIDER.createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); - var transferProcessId = CONSUMER.requestAsset(PROVIDER, assetId, Json.createObjectBuilder().build(), createProxyRequest(), "HttpData-PULL"); + var transferProcessId = CONSUMER.requestAssetFrom(assetId, PROVIDER).withTransferType("HttpData-PULL").execute(); CONSUMER.waitForTransferProcess(transferProcessId, TransferProcessStates.STARTED); diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/build.gradle.kts b/edc-tests/edc-dataplane/cloud-transfer-tests/build.gradle.kts index aa7bbb5e7..8a5a15e06 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/build.gradle.kts +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/build.gradle.kts @@ -25,7 +25,6 @@ plugins { dependencies { - testImplementation(project(":edc-tests:e2e-tests")) testImplementation(libs.edc.junit) testImplementation(libs.restAssured) @@ -33,12 +32,12 @@ dependencies { testImplementation(libs.edc.config.filesystem) testImplementation(libs.edc.dpf.http) testImplementation(libs.edc.auth.tokenbased) + testImplementation(libs.edc.dpf.selector.spi) testImplementation(libs.testcontainers.junit) - testImplementation(testFixtures(libs.edc.azure.test)) testImplementation(libs.edc.aws.s3.core) - testImplementation(testFixtures(libs.edc.aws.s3.test)) testImplementation(libs.aws.s3) testImplementation(libs.aws.s3transfer) + testImplementation(libs.azure.storage.blob) } diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureBlobHelper.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureBlobHelper.java index c53ecb35c..5a7221c49 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureBlobHelper.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureBlobHelper.java @@ -22,15 +22,16 @@ import com.azure.core.util.BinaryData; import com.azure.storage.blob.BlobContainerClient; import com.azure.storage.blob.BlobServiceClient; +import com.azure.storage.blob.BlobServiceClientBuilder; import com.azure.storage.blob.models.BlobItem; import com.azure.storage.blob.sas.BlobContainerSasPermission; import com.azure.storage.blob.sas.BlobServiceSasSignatureValues; +import com.azure.storage.common.StorageSharedKeyCredential; import java.io.InputStream; import java.time.OffsetDateTime; import java.util.List; -import static org.eclipse.edc.azure.testfixtures.TestFunctions.getBlobServiceClient; /** * Helper class that internally uses Azure SDK classes to create containers, upload blobs, generate SAS tokens, etc. @@ -56,7 +57,10 @@ public BlobContainerClient createContainer(String containerName) { private BlobServiceClient blobClient() { if (blobServiceClient == null) { var endpoint = "http://%s:%s/%s".formatted(host, port, accountName); - blobServiceClient = getBlobServiceClient(accountName, key, endpoint); + blobServiceClient = new BlobServiceClientBuilder() + .credential(new StorageSharedKeyCredential(accountName, key)) + .endpoint(endpoint) + .buildClient(); } return blobServiceClient; } @@ -88,4 +92,3 @@ public String generateAccountSas(String containerName) { return blobClient().getBlobContainerClient(containerName).generateSas(vals); } } - \ No newline at end of file diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureToAzureTest.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureToAzureTest.java index ee4762bcd..d9dc67905 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureToAzureTest.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureToAzureTest.java @@ -21,8 +21,8 @@ import com.azure.core.util.BinaryData; import io.restassured.http.ContentType; -import org.eclipse.edc.azure.testfixtures.annotations.AzureStorageIntegrationTest; import org.eclipse.edc.junit.testfixtures.TestUtils; +import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.types.domain.DataAddress; import org.eclipse.edc.spi.types.domain.transfer.DataFlowStartMessage; import org.junit.jupiter.api.BeforeEach; @@ -69,7 +69,7 @@ */ @SuppressWarnings("resource") @Testcontainers -@AzureStorageIntegrationTest +@CloudTransferTest public class AzureToAzureTest { private static final int PROVIDER_CONTROL_PORT = getFreePort(); private static final int AZURITE_HOST_PORT = getFreePort(); @@ -79,7 +79,7 @@ public class AzureToAzureTest { protected static final ParticipantRuntime DATAPLANE_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:dataplane-cloud", "AzureBlob-Dataplane", - RuntimeConfig.Azure.createDataplane("/control", PROVIDER_CONTROL_PORT, AZURITE_HOST_PORT) + RuntimeConfig.Azure.blobstoreDataplaneConfig("/control", PROVIDER_CONTROL_PORT, AZURITE_HOST_PORT) ); /** * Currently we have to use one container to host both consumer and provider accounts, because we cannot handle @@ -252,7 +252,7 @@ void transferFile_targetContainerNotExist_shouldFail() { await().pollInterval(Duration.ofSeconds(2)) .atMost(Duration.ofSeconds(10)) - .untilAsserted(() -> verify(DATAPLANE_RUNTIME.getContext().getMonitor()) + .untilAsserted(() -> verify(DATAPLANE_RUNTIME.getService(Monitor.class)) .severe(contains("Error creating blob %s on account %s".formatted(TESTFILE_NAME, AZBLOB_CONSUMER_ACCOUNT_NAME)), isA(IOException.class))); } @@ -280,4 +280,3 @@ private DataFlowStartMessage createMultipleFileFlowRequest(String blobPrefix) { .processId("test-process-multiple-file-id").build(); } } - \ No newline at end of file diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tag/DimIntegrationTest.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/CloudTransferTest.java similarity index 75% rename from edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tag/DimIntegrationTest.java rename to edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/CloudTransferTest.java index 267814b79..7adafa32f 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tag/DimIntegrationTest.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/CloudTransferTest.java @@ -1,5 +1,5 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. @@ -15,9 +15,9 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ + */ -package org.eclipse.tractusx.edc.tag; +package org.eclipse.tractusx.edc.dataplane.transfer.test; import org.eclipse.edc.junit.annotations.IntegrationTest; import org.junit.jupiter.api.Tag; @@ -30,7 +30,6 @@ @Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @IntegrationTest -@Tag("DimIntegrationTest") -public @interface DimIntegrationTest { +@Tag("CloudTransferTest") +public @interface CloudTransferTest { } - diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/MultiCloudTest.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/MultiCloudTest.java index dd5748814..21770bb82 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/MultiCloudTest.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/MultiCloudTest.java @@ -23,10 +23,8 @@ import io.restassured.http.ContentType; import org.eclipse.edc.aws.s3.AwsClientProviderConfiguration; import org.eclipse.edc.aws.s3.AwsClientProviderImpl; -import org.eclipse.edc.aws.s3.S3BucketSchema; import org.eclipse.edc.aws.s3.S3ClientRequest; -import org.eclipse.edc.aws.s3.testfixtures.annotations.AwsS3IntegrationTest; -import org.eclipse.edc.azure.testfixtures.annotations.AzureStorageIntegrationTest; +import org.eclipse.edc.aws.s3.spi.S3BucketSchema; import org.eclipse.edc.junit.testfixtures.TestUtils; import org.eclipse.edc.spi.types.domain.DataAddress; import org.eclipse.edc.spi.types.domain.transfer.DataFlowStartMessage; @@ -68,8 +66,7 @@ import static org.testcontainers.shaded.org.awaitility.Awaitility.await; @Testcontainers -@AzureStorageIntegrationTest -@AwsS3IntegrationTest +@CloudTransferTest public class MultiCloudTest { // S3 test constants public static final String REGION = Region.US_WEST_2.id(); @@ -90,7 +87,7 @@ public class MultiCloudTest { protected static final ParticipantRuntime DATAPLANE_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:dataplane-cloud", "MultiCloud-Dataplane", - RuntimeConfig.Azure.createDataplane("/control", PROVIDER_CONTROL_PORT, AZURITE_HOST_PORT) + RuntimeConfig.Azure.blobstoreDataplaneConfig("/control", PROVIDER_CONTROL_PORT, AZURITE_HOST_PORT) ); @Container diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/ParticipantRuntime.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/ParticipantRuntime.java index a3662b2b0..137fa94c1 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/ParticipantRuntime.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/ParticipantRuntime.java @@ -19,25 +19,20 @@ package org.eclipse.tractusx.edc.dataplane.transfer.test; -import org.eclipse.edc.boot.system.injection.InjectionContainer; import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; import org.eclipse.edc.spi.monitor.ConsoleMonitor; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.security.Vault; -import org.eclipse.edc.spi.system.ServiceExtension; -import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; -import java.util.List; import java.util.Map; import static org.mockito.Mockito.spy; public class ParticipantRuntime extends EdcRuntimeExtension implements BeforeAllCallback, AfterAllCallback { - public ParticipantRuntime(String moduleName, String runtimeName, Map properties) { super(moduleName, runtimeName, properties); var monitor = spy(new ConsoleMonitor(runtimeName, ConsoleMonitor.Level.DEBUG)); @@ -65,12 +60,8 @@ public void afterAll(ExtensionContext context) throws Exception { } public Vault getVault() { - return getContext().getService(Vault.class); + return getService(Vault.class); } - @Override - protected void bootExtensions(ServiceExtensionContext context, List> serviceExtensions) { - super.bootExtensions(context, serviceExtensions); - } } diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/RuntimeConfig.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/RuntimeConfig.java index 0d4b4121b..bf6b5542b 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/RuntimeConfig.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/RuntimeConfig.java @@ -35,21 +35,20 @@ public class RuntimeConfig { public static Map baseConfig(String controlPath, int controlPort) { return new HashMap<>() { { - put("edc.dataplane.token.validation.endpoint", "http://token-validation.com"); put("web.http.path", "/api"); put("web.http.port", String.valueOf(getFreePort())); + put("web.http.control.path", controlPath); + put("web.http.control.port", String.valueOf(controlPort)); put("web.http.public.path", "/public"); put("web.http.public.port", String.valueOf(getFreePort())); put("web.http.consumer.api.path", "/api/consumer"); put("web.http.consumer.api.port", String.valueOf(getFreePort())); put("tx.dpf.consumer.proxy.port", String.valueOf(getFreePort())); - put("web.http.control.path", controlPath); - put("web.http.control.port", String.valueOf(controlPort)); put("edc.iam.issuer.id", "did:web:" + UUID.randomUUID()); put("edc.iam.sts.oauth.token.url", "http://sts.example.com/token"); put("edc.iam.sts.oauth.client.id", "test-clientid"); put("edc.iam.sts.oauth.client.secret.alias", "test-clientid-alias"); - put("edc.iam.sts.dim.url", "http://sts.example.com"); + put("tx.edc.iam.sts.dim.url", "http://sts.example.com"); put("tx.edc.iam.iatp.bdrs.server.url", "http://sts.example.com"); } }; @@ -66,7 +65,7 @@ public static class Azure { * @param controlPort the port of the control API * @param mappedAzuritePort the host port for the Blob endpoint template. */ - public static Map createDataplane(String controlPath, int controlPort, Integer mappedAzuritePort) { + public static Map blobstoreDataplaneConfig(String controlPath, int controlPort, Integer mappedAzuritePort) { var base = baseConfig(controlPath, controlPort); base.putAll(new HashMap<>() { @@ -80,7 +79,7 @@ public static Map createDataplane(String controlPath, int contro public static class S3 { - public static Map createDataplane(String controlPath, int controlPort) { + public static Map s3dataplaneConfig(String controlPath, int controlPort) { return baseConfig(controlPath, controlPort); } } diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/S3ToS3Test.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/S3ToS3Test.java index df4e46b45..c69393c9f 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/S3ToS3Test.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/S3ToS3Test.java @@ -22,10 +22,10 @@ import io.restassured.http.ContentType; import org.eclipse.edc.aws.s3.AwsClientProviderConfiguration; import org.eclipse.edc.aws.s3.AwsClientProviderImpl; -import org.eclipse.edc.aws.s3.S3BucketSchema; import org.eclipse.edc.aws.s3.S3ClientRequest; -import org.eclipse.edc.aws.s3.testfixtures.annotations.AwsS3IntegrationTest; +import org.eclipse.edc.aws.s3.spi.S3BucketSchema; import org.eclipse.edc.junit.testfixtures.TestUtils; +import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.types.domain.DataAddress; import org.eclipse.edc.spi.types.domain.transfer.DataFlowStartMessage; import org.junit.jupiter.api.BeforeEach; @@ -78,7 +78,7 @@ * It spins up a fully-fledged dataplane and issues the DataFlowStartMessage via the data plane's Control API */ @Testcontainers -@AwsS3IntegrationTest +@CloudTransferTest public class S3ToS3Test { private static final String SECRET_ACCESS_KEY = UUID.randomUUID().toString(); // password private static final int PROVIDER_CONTROL_PORT = getFreePort(); // port of the control api @@ -86,7 +86,7 @@ public class S3ToS3Test { protected static final ParticipantRuntime DATAPLANE_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:dataplane-cloud", "AwsS3-Dataplane", - RuntimeConfig.S3.createDataplane("/control", PROVIDER_CONTROL_PORT) + RuntimeConfig.S3.s3dataplaneConfig("/control", PROVIDER_CONTROL_PORT) ); @Container private final GenericContainer providerContainer = new GenericContainer<>(MINIO_DOCKER_IMAGE) @@ -223,7 +223,7 @@ void transferFile_targetContainerNotExist_shouldFail() { // wait until the data plane logs an exception that it cannot transfer the file await().pollInterval(Duration.ofSeconds(2)) .atMost(Duration.ofSeconds(10)) - .untilAsserted(() -> verify(DATAPLANE_RUNTIME.getContext().getMonitor()).severe(startsWith("Failed to upload the %s object: The specified bucket does not exist".formatted(TESTFILE_NAME)), + .untilAsserted(() -> verify(DATAPLANE_RUNTIME.getService(Monitor.class)).severe(startsWith("Failed to upload the %s object: The specified bucket does not exist".formatted(TESTFILE_NAME)), isA(NoSuchBucketException.class))); } @@ -343,4 +343,4 @@ private DataFlowStartMessage createMultipleFileFlowRequest() { .build(); } -} \ No newline at end of file +} diff --git a/edc-tests/edc-dataplane/edc-dataplane-tokenrefresh-tests/build.gradle.kts b/edc-tests/edc-dataplane/edc-dataplane-tokenrefresh-tests/build.gradle.kts index cd5b341a9..bcd94d93e 100644 --- a/edc-tests/edc-dataplane/edc-dataplane-tokenrefresh-tests/build.gradle.kts +++ b/edc-tests/edc-dataplane/edc-dataplane-tokenrefresh-tests/build.gradle.kts @@ -24,7 +24,6 @@ plugins { dependencies { testImplementation(project(":spi:tokenrefresh-spi")) - testImplementation(project(":edc-tests:e2e-tests")) testImplementation(libs.edc.junit) testImplementation(libs.restAssured) diff --git a/edc-tests/edc-dataplane/edc-dataplane-tokenrefresh-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/tokenrefresh/e2e/DataPlaneTokenRefreshEndToEndTest.java b/edc-tests/edc-dataplane/edc-dataplane-tokenrefresh-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/tokenrefresh/e2e/DataPlaneTokenRefreshEndToEndTest.java index 9e3440725..51ef68a9e 100644 --- a/edc-tests/edc-dataplane/edc-dataplane-tokenrefresh-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/tokenrefresh/e2e/DataPlaneTokenRefreshEndToEndTest.java +++ b/edc-tests/edc-dataplane/edc-dataplane-tokenrefresh-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/tokenrefresh/e2e/DataPlaneTokenRefreshEndToEndTest.java @@ -31,7 +31,9 @@ import org.eclipse.edc.connector.dataplane.spi.iam.DataPlaneAuthorizationService; import org.eclipse.edc.iam.did.spi.resolution.DidPublicKeyResolver; import org.eclipse.edc.junit.annotations.EndToEndTest; -import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; +import org.eclipse.edc.junit.extensions.EmbeddedRuntime; +import org.eclipse.edc.junit.extensions.RuntimeExtension; +import org.eclipse.edc.junit.extensions.RuntimePerMethodExtension; import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.types.domain.DataAddress; @@ -60,19 +62,20 @@ @EndToEndTest public class DataPlaneTokenRefreshEndToEndTest { + public static final RuntimeConfig ARUNTIME_CONFIG = new RuntimeConfig(); public static final String CONSUMER_DID = "did:web:alice"; public static final String PROVIDER_DID = "did:web:bob"; public static final String PROVIDER_KEY_ID = PROVIDER_DID + "#key-1"; public static final String PROVIDER_KEY_ID_PUBLIC = PROVIDER_DID + "#key-1-public"; - public static final String CONSUMER_KEY_ID = CONSUMER_DID + "#cons-1"; - private static final RuntimeConfig RUNTIME_CONFIG = new RuntimeConfig(); @RegisterExtension - protected static final EdcRuntimeExtension DATAPLANE_RUNTIME = new EdcRuntimeExtension( - ":edc-tests:runtime:dataplane-cloud", - "Token-Refresh-Dataplane", - with(RUNTIME_CONFIG.baseConfig(), Map.of("edc.transfer.proxy.token.signer.privatekey.alias", PROVIDER_KEY_ID, - "edc.transfer.proxy.token.verifier.publickey.alias", PROVIDER_KEY_ID_PUBLIC)) + private static final RuntimeExtension DATAPLANE_RUNTIME = new RuntimePerMethodExtension( + new EmbeddedRuntime("Token-Refresh-Dataplane", + with(ARUNTIME_CONFIG.baseConfig(), Map.of("edc.transfer.proxy.token.signer.privatekey.alias", PROVIDER_KEY_ID, + "edc.transfer.proxy.token.verifier.publickey.alias", PROVIDER_KEY_ID_PUBLIC)), + ":edc-tests:runtime:dataplane-cloud") + ); + public static final String CONSUMER_KEY_ID = CONSUMER_DID + "#cons-1"; private ECKey providerKey; private ECKey consumerKey; @@ -81,7 +84,6 @@ private static Map with(Map baseConfig, Map baseConfig() { return new HashMap<>() { { - put("edc.dataplane.token.validation.endpoint", "http://token-validation.com"); put("web.http.path", defaultApi.url().getPath()); put("web.http.port", String.valueOf(defaultApi.url().getPort())); put("web.http.public.path", publicApi.url().getPath()); put("web.http.public.port", String.valueOf(publicApi.url().getPort())); put("web.http.control.path", controlApi.url().getPath()); put("web.http.control.port", String.valueOf(controlApi.url().getPort())); + put("edc.dpf.selector.url", "http://not-used/feature"); put("edc.iam.issuer.id", "did:web:" + UUID.randomUUID()); put("edc.iam.sts.oauth.token.url", "http://sts.example.com/token"); put("edc.iam.sts.oauth.client.id", "test-clientid"); put("edc.iam.sts.oauth.client.secret.alias", "test-clientid-alias"); - put("edc.iam.sts.dim.url", "http://sts.example.com"); + put("tx.edc.iam.sts.dim.url", "http://sts.example.com"); put("tx.edc.iam.iatp.bdrs.server.url", "http://sts.example.com"); } }; diff --git a/edc-tests/runtime/dataplane-cloud/build.gradle.kts b/edc-tests/runtime/dataplane-cloud/build.gradle.kts index 2ebe40727..dc71a1292 100644 --- a/edc-tests/runtime/dataplane-cloud/build.gradle.kts +++ b/edc-tests/runtime/dataplane-cloud/build.gradle.kts @@ -28,6 +28,8 @@ dependencies { // use basic (all in-mem) data plane runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) { exclude("org.eclipse.edc", "api-observability") + exclude("org.eclipse.edc", "data-plane-selector-client") + exclude("org.eclipse.edc", "data-plane-self-registration") } } diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java index f37c7efbf..db1e54f51 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java @@ -20,6 +20,7 @@ package org.eclipse.tractusx.edc.iatp; import org.eclipse.edc.spi.iam.AudienceResolver; +import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.spi.types.domain.message.RemoteMessage; import java.util.Map; @@ -37,7 +38,7 @@ public TestAudienceMapper(Map audienceMapping) { } @Override - public String resolve(RemoteMessage remoteMessage) { - return Optional.ofNullable(audienceMapping.get(remoteMessage.getCounterPartyId())).orElse(remoteMessage.getCounterPartyId()); + public Result resolve(RemoteMessage remoteMessage) { + return Result.success(Optional.ofNullable(audienceMapping.get(remoteMessage.getCounterPartyId())).orElse(remoteMessage.getCounterPartyId())); } } diff --git a/edc-tests/runtime/iatp/runtime-memory-iatp-dim-ih/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-iatp-dim-ih/build.gradle.kts index e3ebeed3d..be7394f9b 100644 --- a/edc-tests/runtime/iatp/runtime-memory-iatp-dim-ih/build.gradle.kts +++ b/edc-tests/runtime/iatp/runtime-memory-iatp-dim-ih/build.gradle.kts @@ -40,6 +40,7 @@ dependencies { // use basic (all in-mem) data plane runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) { exclude("org.eclipse.edc", "api-observability") + exclude("org.eclipse.edc", "data-plane-selector-client") } implementation(libs.edc.core.controlplane) diff --git a/edc-tests/runtime/iatp/runtime-memory-iatp-dim/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-iatp-dim/build.gradle.kts index c9ebd1ba2..00f90c973 100644 --- a/edc-tests/runtime/iatp/runtime-memory-iatp-dim/build.gradle.kts +++ b/edc-tests/runtime/iatp/runtime-memory-iatp-dim/build.gradle.kts @@ -37,6 +37,7 @@ dependencies { // use basic (all in-mem) data plane runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) { exclude("org.eclipse.edc", "api-observability") + exclude("org.eclipse.edc", "data-plane-selector-client") } implementation(libs.edc.core.controlplane) diff --git a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts index 821f5b032..edaf8fa71 100644 --- a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts +++ b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts @@ -40,6 +40,7 @@ dependencies { // use basic (all in-mem) data plane runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) { exclude("org.eclipse.edc", "api-observability") + exclude("org.eclipse.edc", "data-plane-selector-client") } implementation(libs.edc.core.controlplane) diff --git a/edc-tests/runtime/runtime-memory-signaling/README.md b/edc-tests/runtime/runtime-memory-signaling/README.md deleted file mode 100644 index 2f9593a75..000000000 --- a/edc-tests/runtime/runtime-memory-signaling/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# In-Memory Runtime for Testing Purposes - -This module provides a very small, purely in-mem runtime to execute tests against. Not intended for anything other than testing! diff --git a/edc-tests/runtime/runtime-memory-signaling/build.gradle.kts b/edc-tests/runtime/runtime-memory-signaling/build.gradle.kts deleted file mode 100644 index 518aabfcd..000000000 --- a/edc-tests/runtime/runtime-memory-signaling/build.gradle.kts +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * 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") -} - - -dependencies { - - // use basic (all in-mem) control plane - implementation(project(":edc-tests:runtime:runtime-memory")) -} - -application { - mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") -} - -edcBuild { - publish.set(false) -} diff --git a/edc-tests/runtime/runtime-memory/build.gradle.kts b/edc-tests/runtime/runtime-memory/build.gradle.kts index b2ff89caf..5c59cd5e7 100644 --- a/edc-tests/runtime/runtime-memory/build.gradle.kts +++ b/edc-tests/runtime/runtime-memory/build.gradle.kts @@ -44,6 +44,7 @@ dependencies { // use basic (all in-mem) data plane runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) { exclude("org.eclipse.edc", "api-observability") + exclude("org.eclipse.edc", "data-plane-selector-client") } implementation(libs.edc.core.controlplane) diff --git a/edc-tests/runtime/runtime-postgresql/build.gradle.kts b/edc-tests/runtime/runtime-postgresql/build.gradle.kts index 39f49763d..092f087d1 100644 --- a/edc-tests/runtime/runtime-postgresql/build.gradle.kts +++ b/edc-tests/runtime/runtime-postgresql/build.gradle.kts @@ -42,7 +42,8 @@ dependencies { // use basic (all in-mem) data plane runtimeOnly(project(":edc-dataplane:edc-dataplane-hashicorp-vault")) { exclude("org.eclipse.edc", "api-observability") - exclude(group = "org.eclipse.edc", "vault-hashicorp") + exclude("org.eclipse.edc", "data-plane-selector-client") + exclude("org.eclipse.edc", "vault-hashicorp") } implementation(libs.edc.core.controlplane) diff --git a/gradle.properties b/gradle.properties index 60a8856fd..317ad85a5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=org.eclipse.tractusx.edc -version=0.7.2 +version=0.7.3 # configure the build: txScmConnection=scm:git:git@github.com:eclipse-tractusx/tractusx-edc.git txWebsiteUrl=https://github.com/eclipse-tractusx/tractusx-edc.git diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d0e3180bd..05e62372c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,18 +2,18 @@ format.version = "1.1" [versions] -edc = "0.7.0" -apache-sshd = "2.12.1" -assertj = "3.25.3" +edc = "0.7.1" +assertj = "3.26.0" awaitility = "4.2.1" -aws = "2.25.55" -azure-identity = "1.12.1" +aws = "2.26.7" +azure-identity = "1.13.0" +azure-storage-blob = "12.26.1" bouncyCastle-jdk18on = "1.78.1" -flyway = "10.13.0" +flyway = "10.15.0" jackson = "2.17.1" jakarta-json = "2.0.1" jupiter = "5.10.2" -nimbus = "9.38" +nimbus = "9.40" netty-mockserver = "5.15.0" okhttp = "4.12.0" postgres = "42.7.3" @@ -67,6 +67,7 @@ edc-core-edrstore = { module = "org.eclipse.edc:edr-store-core", version.ref = " edc-controlplane-callback-staticendpoint = { module = "org.eclipse.edc:callback-static-endpoint", version.ref = "edc" } edc-junit = { module = "org.eclipse.edc:junit", version.ref = "edc" } edc-api-management-config = { module = "org.eclipse.edc:management-api-configuration", version.ref = "edc" } +edc-api-control-config = { module = "org.eclipse.edc:control-api-configuration", version.ref = "edc" } edc-api-management = { module = "org.eclipse.edc:management-api", version.ref = "edc" } edc-api-core = { module = "org.eclipse.edc:api-core", version.ref = "edc" } edc-api-management-test-fixtures = { module = "org.eclipse.edc:management-api-test-fixtures", version.ref = "edc" } @@ -83,7 +84,6 @@ edc-auth-oauth2-client = { module = "org.eclipse.edc:oauth2-client", version.ref edc-transaction-local = { module = "org.eclipse.edc:transaction-local", version.ref = "edc" } edc-ext-http = { module = "org.eclipse.edc:http", version.ref = "edc" } edc-ext-azure-cosmos-core = { module = "org.eclipse.edc:azure-cosmos-core", version.ref = "edc" } -edc-ext-azure-test = { module = "org.eclipse.edc:azure-test", version.ref = "edc" } edc-ext-jsonld = { module = "org.eclipse.edc:json-ld", version.ref = "edc" } edc-validator-data-address-http-data = { module = "org.eclipse.edc:validator-data-address-http-data", version.ref = "edc" } edc-runtime-metamodel = { module = "org.eclipse.edc:runtime-metamodel", version.ref = "edc" } @@ -119,14 +119,14 @@ edc-sql-accesstokendata = { module = "org.eclipse.edc:accesstokendata-store-sql" edc-sql-dataplane = { module = "org.eclipse.edc:data-plane-store-sql", version.ref = "edc" } # azure stuff -edc-azure-vault = { module = "org.eclipse.edc:vault-azure", version.ref = "edc" } +edc-azure-vault = { module = "org.eclipse.edc.azure:vault-azure", version.ref = "edc" } +azure-storage-blob = { module = "com.azure:azure-storage-blob", version.ref = "azure-storage-blob" } edc-azure-identity = { module = "com.azure:azure-identity", version.ref = "azure-identity" } -edc-azure-test = { module = "org.eclipse.edc:azure-test", version.ref = "edc" } +edc-dpf-azblob = { module = "org.eclipse.edc.azure:data-plane-azure-storage", version.ref = "edc" } # EDC aws s3 stuff -edc-aws-s3-core = { module = "org.eclipse.edc:aws-s3-core", version.ref = "edc" } -edc-aws-s3-test = { module = "org.eclipse.edc:aws-s3-test", version.ref = "edc" } -edc-dpf-awss3 = { module = "org.eclipse.edc:data-plane-aws-s3", version.ref = "edc" } +edc-aws-s3-core = { module = "org.eclipse.edc.aws:aws-s3-core", version.ref = "edc" } +edc-dpf-awss3 = { module = "org.eclipse.edc.aws:data-plane-aws-s3", version.ref = "edc" } # Control Plane implementations edc-controlplane-callback-dispatcher-event = { module = "org.eclipse.edc:callback-event-dispatcher", version.ref = "edc" } @@ -177,13 +177,15 @@ edc-dpf-transfer-signaling = { module = "org.eclipse.edc:transfer-data-plane-sig edc-dpf-core = { module = "org.eclipse.edc:data-plane-core", version.ref = "edc" } edc-dpf-util = { module = "org.eclipse.edc:data-plane-util", version.ref = "edc" } -edc-dpf-azblob = { module = "org.eclipse.edc:data-plane-azure-storage", version.ref = "edc" } edc-dpf-http = { module = "org.eclipse.edc:data-plane-http", version.ref = "edc" } edc-dpf-oauth2 = { module = "org.eclipse.edc:data-plane-http-oauth2", version.ref = "edc" } edc-dpf-api-control = { module = "org.eclipse.edc:data-plane-control-api", version.ref = "edc" } edc-dpf-api-public-v2 = { module = "org.eclipse.edc:data-plane-public-api-v2", version.ref = "edc" } edc-dpf-api-signaling = { module = "org.eclipse.edc:data-plane-signaling-api", version.ref = "edc" } +edc-data-plane-selector-control-api = { module = "org.eclipse.edc:data-plane-selector-control-api", version.ref = "edc" } +edc-data-plane-selector-client = { module = "org.eclipse.edc:data-plane-selector-client", version.ref = "edc" } +edc-data-plane-self-registration = { module = "org.eclipse.edc:data-plane-self-registration", version.ref = "edc" } # micrometer and other infra stuff edc-micrometer-core = { module = "org.eclipse.edc:micrometer-core", version.ref = "edc" } @@ -196,8 +198,6 @@ edc-edr-store-receiver = { module = "org.eclipse.edc:edr-store-receiver", versio # other deps -apache-sshd-core = { module = "org.apache.sshd:sshd-core", version.ref = "apache-sshd" } -apache-sshd-sftp = { module = "org.apache.sshd:sshd-sftp", version.ref = "apache-sshd" } assertj = { module = "org.assertj:assertj-core", version.ref = "assertj" } awaitility = { module = "org.awaitility:awaitility", version.ref = "awaitility" } aws-s3 = { module = "software.amazon.awssdk:s3", version.ref = "aws" } diff --git a/samples/edc-dast/edc-dast-extensions/src/main/java/org/eclipse/tractusx/edc/dast/DastSeedExtension.java b/samples/edc-dast/edc-dast-extensions/src/main/java/org/eclipse/tractusx/edc/dast/DastSeedExtension.java index 714c440d0..1a8a30321 100644 --- a/samples/edc-dast/edc-dast-extensions/src/main/java/org/eclipse/tractusx/edc/dast/DastSeedExtension.java +++ b/samples/edc-dast/edc-dast-extensions/src/main/java/org/eclipse/tractusx/edc/dast/DastSeedExtension.java @@ -79,6 +79,7 @@ public class DastSeedExtension implements ServiceExtension { private static final String DID = "did:example:participant"; private static final String KEY = "key1"; private static final String METHOD_ID = DID + "#" + KEY; + private static final String PRIVATE_METHOD_ID = "private." + DID + "#" + KEY; @Inject private ParticipantContextService participantContextService; @Inject @@ -108,10 +109,10 @@ private static JsonArray types(String type) { public void initialize(ServiceExtensionContext context) { ServiceExtension.super.initialize(context); var keyPair = generateKeyPair(); - var jwkString = getJwkAsString(keyPair); var participantKey = getKeyPairAsJwk(keyPair, METHOD_ID); - vault.storeSecret(METHOD_ID, jwkString); + vault.storeSecret(METHOD_ID, participantKey.toPublicJWK().toJSONString()); + vault.storeSecret(PRIVATE_METHOD_ID, participantKey.toJSONString()); vault.storeSecret("public_key_alias", participantKey.toPublicJWK().toJSONString()); var exampleResolver = new DidExampleResolver(); @@ -162,7 +163,7 @@ private DidDocument boostrap(ParticipantContextService participantContextService var key = KeyDescriptor.Builder.newInstance() .keyId(KEY) .publicKeyJwk(participantKey.toPublicJWK().toJSONObject()) - .privateKeyAlias(METHOD_ID) + .privateKeyAlias(PRIVATE_METHOD_ID) .build(); var participantManifest = ParticipantManifest.Builder.newInstance() @@ -205,11 +206,7 @@ private DidDocument generateDidDocument(JWK jwk) { private String toBase64(String s) { return Base64.getUrlEncoder().encodeToString(s.getBytes()); } - - private String getJwkAsString(KeyPair keyPair) { - return CryptoConverter.createJwk(keyPair).toJSONString(); - } - + private KeyPair generateKeyPair() { try { KeyPairGenerator gen = KeyPairGenerator.getInstance("EC", new BouncyCastleProvider()); diff --git a/samples/edc-dast/edc-dast-runtime/configuration.properties b/samples/edc-dast/edc-dast-runtime/configuration.properties index 0c884464b..2208e61ff 100644 --- a/samples/edc-dast/edc-dast-runtime/configuration.properties +++ b/samples/edc-dast/edc-dast-runtime/configuration.properties @@ -3,20 +3,24 @@ edc.iam.issuer.id=did:example:participant edc.ih.iam.id=did:example:participant edc.iam.publickey.alias=public_key_alias edc.ih.iam.publickey.alias=public_key_alias -edc.iam.sts.privatekey.alias=did:example:participant#key1 +edc.iam.sts.privatekey.alias=private.did:example:participant#key1 edc.iam.sts.publickey.id=did:example:participant#key1 edc.iam.sts.clients.participant.name=participant edc.iam.sts.clients.participant.id=participant edc.iam.sts.clients.participant.client_id=participant edc.iam.sts.clients.participant.did=did:example:participant edc.iam.sts.clients.participant.secret.alias=client_secret_alias -edc.iam.sts.clients.participant.private-key.alias=did:example:participant#key1 +edc.iam.sts.clients.participant.private-key.alias=private.did:example:participant#key1 edc.iam.sts.clients.participant.public-key.reference=did:example:participant#key1 edc.iam.trusted-issuer.participant.id=did:example:participant web.http.resolution.port=8989 web.http.resolution.path=/api/resolution web.http.default.port=8181 web.http.default.path=/api +web.http.management.port=8182 +web.http.management.path=/management +web.http.control.port=8183 +web.http.control.path=/control web.http.sts.port=8990 web.http.sts.path=/v1/sts edc.api.auth.key=password diff --git a/samples/multi-tenancy/src/main/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntime.java b/samples/multi-tenancy/src/main/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntime.java index b4c8c0025..567433587 100644 --- a/samples/multi-tenancy/src/main/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntime.java +++ b/samples/multi-tenancy/src/main/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntime.java @@ -44,11 +44,11 @@ public class MultiTenantRuntime extends BaseRuntime { public static void main(String[] args) { var runtime = new MultiTenantRuntime(); - runtime.boot(); + runtime.boot(false); } @Override - public void boot() { + public void boot(boolean shutdownHook) { loadTenantsConfig().getConfig("edc.tenants").partition().forEach(this::bootTenant); } @@ -64,7 +64,7 @@ private void bootTenant(Config tenantConfig) { runtimeThread = new Thread(() -> { try { Thread.currentThread().setContextClassLoader(classLoader); - super.boot(); + super.boot(false); } catch (Exception e) { throw new EdcException(e); } diff --git a/samples/multi-tenancy/src/test/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntimeTest.java b/samples/multi-tenancy/src/test/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntimeTest.java index 2e9e1e9d4..8b4272de6 100644 --- a/samples/multi-tenancy/src/test/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntimeTest.java +++ b/samples/multi-tenancy/src/test/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntimeTest.java @@ -45,7 +45,7 @@ class MultiTenantRuntimeTest { @Test void throwsExceptionIfNoTenantsPropertyProvided() { - assertThrows(EdcException.class, runtime::boot); + assertThrows(EdcException.class, () -> runtime.boot(false)); verify(monitor, never()).info(argThat(connectorIsReady())); } @@ -53,7 +53,7 @@ void throwsExceptionIfNoTenantsPropertyProvided() { void throwsExceptionIfTenantsFileDoesNotExist() { System.setProperty("edc.tenants.path", "unexistentfile"); - assertThrows(EdcException.class, runtime::boot); + assertThrows(EdcException.class, () -> runtime.boot(false)); verify(monitor, never()).info(argThat(connectorIsReady())); } @@ -61,7 +61,7 @@ void throwsExceptionIfTenantsFileDoesNotExist() { void threadForEveryTenant() { System.setProperty("edc.tenants.path", "./src/test/resources/tenants.properties"); - runtime.boot(); + runtime.boot(false); verify(monitor, times(2)).info(argThat(connectorIsReady())); } diff --git a/samples/multi-tenancy/src/test/resources/tenants.properties b/samples/multi-tenancy/src/test/resources/tenants.properties index 5100eb12d..edaece1d6 100644 --- a/samples/multi-tenancy/src/test/resources/tenants.properties +++ b/samples/multi-tenancy/src/test/resources/tenants.properties @@ -24,6 +24,8 @@ edc.tenants.one.web.http.protocol.port=18282 edc.tenants.one.web.http.protocol.path=/protocol edc.tenants.one.web.http.control.port=18283 edc.tenants.one.web.http.control.path=/control +edc.tenants.one.web.http.management.port=18284 +edc.tenants.one.web.http.management.path=/management edc.tenants.one.tx.edc.iam.iatp.bdrs.server.url=http://bdrs.test.com edc.tenants.one.edc.iam.issuer.id=did:web:tenant1 edc.tenants.two.edc.any=any @@ -33,5 +35,7 @@ edc.tenants.two.web.http.protocol.port=28282 edc.tenants.two.web.http.protocol.path=/protocol edc.tenants.two.web.http.control.port=28283 edc.tenants.two.web.http.control.path=/control +edc.tenants.two.web.http.management.port=28284 +edc.tenants.two.web.http.management.path=/management edc.tenants.two.tx.edc.iam.iatp.bdrs.server.url=http://bdrs.test.com edc.tenants.two.edc.iam.issuer.id=did:web:tenant2 diff --git a/settings.gradle.kts b/settings.gradle.kts index a316a8afd..a71c70a96 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -58,7 +58,6 @@ include(":edc-extensions:dataplane:dataplane-token-refresh:token-refresh-core") include(":edc-extensions:dataplane:dataplane-token-refresh:token-refresh-api") // test modules -include(":edc-tests:e2e-tests") include(":edc-tests:edc-controlplane:edr-api-tests") include(":edc-tests:edc-controlplane:catalog-tests") include(":edc-tests:edc-controlplane:transfer-tests")