diff --git a/.github/argo/argo_config.sh b/.github/argo/argo_config.sh index 0a7334fd1d..bedc19ef7e 100644 --- a/.github/argo/argo_config.sh +++ b/.github/argo/argo_config.sh @@ -119,6 +119,42 @@ DELETE_INT_RESOURCES=( "$ARGO_INT_B_SUBMODELSERVER/resource?group=apps&force=false&orphan=false&resourceName=tracex-int-b-submodelserver-submodelservers&version=v1&kind=Deployment&namespace=product-traceability-foss" ) + + +DELETE_ASSOCIATION_INT_RESOURCES=( + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE/resource?force=false&orphan=false&resourceName=data-tx-backend-postgresql-int-a-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-backend-postgresql-int-a&version=v1&kind=StatefulSet&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE/resource?force=false&orphan=false&resourceName=data-tx-edc-consumer-postgresql-int-a-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-edc-consumer-postgresql-int-a&version=v1&kind=StatefulSet&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE/resource?group=apps&force=false&orphan=false&resourceName=tx-backend-int-a&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE/resource?group=apps&force=false&orphan=false&resourceName=tx-edc-consumer-int-a-controlplane&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-edc-consumer-int-a-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_EDC_PROVIDER/resource?force=false&orphan=false&resourceName=data-tx-edc-provider-postgresql-int-a-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_EDC_PROVIDER/resource?group=apps&force=true&orphan=false&resourceName=tx-edc-provider-postgresql-int-a&version=v1&kind=StatefulSet&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tx-edc-provider-int-a-controlplane&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tx-edc-provider-int-a-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_REGISTRY/resource?force=false&orphan=false&resourceName=data-tracex-registry-int-a-postgresql-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_REGISTRY/resource?group=apps&force=true&orphan=false&resourceName=tracex-registry-int-a-postgresql&version=v1&kind=StatefulSet&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=tracex-registry-int-a&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_A_SUBMODELSERVER/resource?group=apps&force=false&orphan=false&resourceName=trace-x-int-a-submodelserver-submodelservers&version=v1&kind=Deployment&namespace=product-traceability-foss" + + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE/resource?force=false&orphan=false&resourceName=data-tx-backend-postgresql-int-b-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-backend-postgresql-int-b&version=v1&kind=StatefulSet&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE/resource?force=false&orphan=false&resourceName=data-tx-edc-consumer-postgresql-int-b-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-edc-consumer-postgresql-int-b&version=v1&kind=StatefulSet&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE/resource?group=apps&force=false&orphan=false&resourceName=tx-backend-int-b&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE/resource?group=apps&force=false&orphan=false&resourceName=tx-edc-consumer-int-b-controlplane&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-edc-consumer-int-b-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_EDC_PROVIDER/resource?force=false&orphan=false&resourceName=data-tx-edc-provider-postgresql-int-b-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_EDC_PROVIDER/resource?group=apps&force=true&orphan=false&resourceName=tx-edc-provider-postgresql-int-b&version=v1&kind=StatefulSet&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tx-edc-provider-int-b-controlplane&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tx-edc-provider-int-b-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_REGISTRY/resource?force=false&orphan=false&resourceName=data-tracex-registry-int-b-postgresql-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_REGISTRY/resource?group=apps&force=true&orphan=false&resourceName=tracex-registry-int-b-postgresql&version=v1&kind=StatefulSet&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=tracex-registry-int-b&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_ASSOCIATION_INT_B_SUBMODELSERVER/resource?group=apps&force=false&orphan=false&resourceName=trace-x-int-b-submodelserver-submodelservers&version=v1&kind=Deployment&namespace=product-traceability-foss" + + ) SYNC_DEV_TEST_RESOURCES=( "$ARGO_TEST_REGISTRY/sync" "$ARGO_TEST_EDC_PROVIDER/sync" @@ -152,6 +188,18 @@ SYNC_INT_RESOURCES=( "$ARGO_INT_B_SUBMODELSERVER/sync" "$ARGO_INT_B_TRACE_X_INSTANCE/sync" ) + +SYNC_ASSOCIATION_INT_RESOURCES=( + "$ARGO_ASSOCIATION_INT_A_REGISTRY/sync" + "$ARGO_ASSOCIATION_INT_A_EDC_PROVIDER/sync" + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE/sync" + "$ARGO_ASSOCIATION_INT_A_SUBMODELSERVER/sync" + + "$ARGO_ASSOCIATION_INT_B_REGISTRY/sync" + "$ARGO_ASSOCIATION_INT_B_EDC_PROVIDER/sync" + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE/sync" + "$ARGO_ASSOCIATION_INT_B_SUBMODELSERVER/sync" +) DEV_TEST_RESOURCES=( "$ARGO_TEST_REGISTRY" "$ARGO_TEST_EDC_PROVIDER" @@ -187,3 +235,16 @@ INT_RESOURCES=( ) +ASSOCIATION_INT_RESOURCES=( + "$ARGO_ASSOCIATION_INT_A_REGISTRY" + "$ARGO_ASSOCIATION_INT_A_EDC_PROVIDER" + "$ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE" + "$ARGO_ASSOCIATION_INT_A_SUBMODELSERVER" + + "$ARGO_ASSOCIATION_INT_B_REGISTRY" + "$ARGO_ASSOCIATION_INT_B_EDC_PROVIDER" + "$ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE" + "$ARGO_ASSOCIATION_INT_B_SUBMODELSERVER" +) + + diff --git a/.github/workflows/argo.yml b/.github/workflows/argo.yml index 2440a73783..fe4505bce4 100644 --- a/.github/workflows/argo.yml +++ b/.github/workflows/argo.yml @@ -34,6 +34,8 @@ on: - Dev/Test - E2E-A/E2E-B - int-a/int-b + - association int-a/int-b + testdata_version: description: Which Testdata Version CX_Testdata_MessagingTest_v.json e.g., 0.0.14" required: true @@ -84,16 +86,29 @@ env: ARGO_INT_A_EDC_PROVIDER: "https://argo.int.demo.catena-x.net/api/v1/applications/tx-edc-provider-int-a" ARGO_INT_A_TRACE_X_INSTANCE: "https://argo.int.demo.catena-x.net/api/v1/applications/traceability-foss-int-a" ARGO_INT_A_SUBMODELSERVER: "https://argo.int.demo.catena-x.net/api/v1/applications/tracex-int-a-submodelserver" - ARGO_INT_A_RegistryReload: "https://traceability-int-a.int.demo.catena-x.net/api/registry/reload" ARGO_INT_B_REGISTRY: "https://argo.int.demo.catena-x.net/api/v1/applications/tx-registry-int-b" ARGO_INT_B_EDC_PROVIDER: "https://argo.int.demo.catena-x.net/api/v1/applications/tx-edc-provider-int-b" ARGO_INT_B_TRACE_X_INSTANCE: "https://argo.int.demo.catena-x.net/api/v1/applications/traceability-foss-int-b" ARGO_INT_B_SUBMODELSERVER: "https://argo.int.demo.catena-x.net/api/v1/applications/tracex-int-b-submodelserver" - ARGO_INT_B_RegistryReload: "https://traceability-int-b.int.demo.catena-x.net/api/registry/reload" + ARGO_ASSOCIATION_INT_A_REGISTRY: "https://argocd.int.catena-x.net/api/v1/applications/tracex-registry-int-a" + ARGO_ASSOCIATION_INT_A_EDC_PROVIDER: "https://argocd.int.catena-x.net/api/v1/applications/tx-edc-provider-int-a" + ARGO_ASSOCIATION_INT_A_TRACE_X_INSTANCE: "https://argocd.int.catena-x.net/api/v1/applications/traceability-foss-int-a" + ARGO_ASSOCIATION_INT_A_SUBMODELSERVER: "https://argocd.int.catena-x.net/api/v1/applications/trace-x-int-a-submodelserver-submodelservers" + + ARGO_ASSOCIATION_INT_B_REGISTRY: "https://argocd.int.catena-x.net/api/v1/applications/tracex-registry-int-b" + ARGO_ASSOCIATION_INT_B_EDC_PROVIDER: "https://argocd.int.catena-x.net/api/v1/applications/tx-edc-provider-int-b" + ARGO_ASSOCIATION_INT_B_TRACE_X_INSTANCE: "https://argocd.int.catena-x.net/api/v1/applications/traceability-foss-int-b" + ARGO_ASSOCIATION_INT_B_SUBMODELSERVER: "https://argocd.int.catena-x.net/api/v1/applications/trace-x-int-b-submodelserver-submodelservers" + + + + + + jobs: test_input: runs-on: ubuntu-latest @@ -126,6 +141,8 @@ jobs: resources="${E2E_RESOURCES[2]}" elif [ "${{ github.event.inputs.environment }}" == "int-a/int-b" ]; then resources="${INT_RESOURCES[2]}" + elif [ "${{ github.event.inputs.environment }}" == "association int-a/int-b" ]; then + resources="${ASSOCIATION_INT_RESOURCES[2]}" fi data=$(curl -X GET -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" "$resources") @@ -175,6 +192,8 @@ jobs: resources=("${E2E_RESOURCES[@]}") elif [ "${{ github.event.inputs.environment }}" == "int-a/int-b" ]; then resources=("${INT_RESOURCES[@]}") + elif [ "${{ github.event.inputs.environment }}" == "association int-a/int-b" ]; then + resources=("${ASSOCIATION_INT_RESOURCES[@]}") fi for resource in "${resources[@]}"; do @@ -209,10 +228,12 @@ jobs: resources=("${DELETE_E2E_RESOURCES[@]}") elif [ "${{ github.event.inputs.environment }}" == "int-a/int-b" ]; then resources=("${DELETE_INT_RESOURCES[@]}") + elif [ "${{ github.event.inputs.environment }}" == "association int-a/int-b" ]; then + resources=("${DELETE_ASSOCIATION_INT_RESOURCES[@]}") fi for resource in "${resources[@]}"; do - curl -X DELETE -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" "$resource" + curl -X DELETE -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" -H "Content-Type: application/json" "$resource" sleep 2 done sleep 10 @@ -297,10 +318,12 @@ jobs: resources=("${SYNC_E2E_RESOURCES[@]}") elif [ "${{ github.event.inputs.environment }}" == "int-a/int-b" ]; then resources=("${SYNC_INT_RESOURCES[@]}") + elif [ "${{ github.event.inputs.environment }}" == "association int-a/int-b" ]; then + resources=("${SYNC_ASSOCIATION_INT_RESOURCES[@]}") fi for resource in "${resources[@]}"; do - curl -X POST -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" "$resource" + curl -X POST -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" -H "Content-Type: application/json" "$resource" done sleep 20 @@ -329,6 +352,8 @@ jobs: resources=("${E2E_RESOURCES[@]}") elif [ "${{ github.event.inputs.environment }}" == "int-a/int-b" ]; then resources=("${INT_RESOURCES[@]}") + elif [ "${{ github.event.inputs.environment }}" == "association int-a/int-b" ]; then + resources=("${ASSOCIATION_INT_RESOURCES[@]}") fi for resource in "${resources[@]}"; do @@ -342,13 +367,13 @@ jobs: break elif [ "$operationState" == "Failed" ] || ([ "$status" == "OutOfSync" ] && [ "$operationState" == "Failed" ]) || ([ "$status" == "OutOfSync" ] && [ "$operationState" == "Succeeded" ]); then echo "Another sync" - curl -X POST -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" "$resource/sync" + curl -X POST -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" -H "Content-Type: application/json" "$resource/sync" sleep 10 elif [ "$status" == "OutOfSync" ] && [ "$operationState" == "Running" ]; then echo "First terminate sync then start another sync" - curl -X DELETE -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" "$resource/operation?appNamespace=argocd" + curl -X DELETE -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" -H "Content-Type: application/json" "$resource/operation?appNamespace=argocd" sleep 10 - curl -X POST -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" "$resource/sync" + curl -X POST -H "Authorization: Bearer ${{ env.ARGO_TOKEN }}" -H "Content-Type: application/json" "$resource/sync" sleep 10 else echo "Wait" @@ -391,6 +416,11 @@ jobs: sleep 10 python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://tracex-int-b-submodel-server.int.demo.catena-x.net -edc https://trace-x-edc-int-b.int.demo.catena-x.net -a https://trace-x-registry-int-b.int.demo.catena-x.net/semantics/registry/api/v3 -d https://trace-x-edc-int-b-dataplane.int.demo.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_INT_B }} --aas3 --edcBPN BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV sleep 10 + elif [ "${{ github.event.inputs.environment }}" == "association int-a/int-b" ]; then + python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://tracex-int-a-submodel-server.int.catena-x.net -edc https://trace-x-edc-int-a.int.catena-x.net -a https://trace-x-registry-int-a.int.catena-x.net/semantics/registry/api/v3 -d https://trace-x-edc-int-a-dataplane.int.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_ASSOCIATION_INT }} --aas3 --edcBPN BPNL00000003CML1 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV + sleep 10 + python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://tracex-int-b-submodel-server.int.catena-x.net -edc https://trace-x-edc-int-b.int.catena-x.net -a https://trace-x-registry-int-b.int.catena-x.net/semantics/registry/api/v3 -d https://trace-x-edc-int-b-dataplane.int.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_ASSOCIATION_INT }} --aas3 --edcBPN BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV + sleep 10 fi elif [ "${{ github.event.inputs.testdata_upload }}" == "false" ]; then echo "Testdata upload skipped" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 675b8c70e4..9b83ddf5d4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -83,22 +83,22 @@ jobs: Please check whether the Chart was updated correctly and that the CHANGELOG contains the relevant information for this release. Also, make sure that the values.yaml is correct before merging this PR. - - name: Update OpenAPI spec - run: mvn test -Dsurefire.failIfNoSpecifiedTests=false -Dtest=OpenApiDocumentationIT -Dopenapi-doc.generate=true - - - name: Create pull request - uses: peter-evans/create-pull-request@v6 - with: - token: ${{ secrets.GITHUB_TOKEN }} - branch: action/update-openapi-spec - title: "chore(OpenAPI): updated OpenAPI spec" - labels: automated - delete-branch: true - body: | - This PR updates the OpenAPI spec. Please check whether the spec was updated correctly. Unfortunately, this - action causes a lot of nonsensical changes which should, however, be clearly recognizable. - You can safely ignore these. - + # - name: Update OpenAPI spec + # run: mvn test -Dsurefire.failIfNoSpecifiedTests=false -Dtest=OpenApiDocumentationIT -Dopenapi-doc.generate=true +# + # - name: Create pull request + # uses: peter-evans/create-pull-request@v6 + # with: + # token: ${{ secrets.GITHUB_TOKEN }} + # branch: action/update-openapi-spec + # title: "chore(OpenAPI): updated OpenAPI spec" + # labels: automated + # delete-branch: true + # body: | + # This PR updates the OpenAPI spec. Please check whether the spec was updated correctly. Unfortunately, this + # action causes a lot of nonsensical changes which should, however, be clearly recognizable. + # You can safely ignore these. +# - name: Get previous version run: echo PREVIOUS_VERSION=$(git tag | grep -E ^[0-9]+\\.[0-9]+\\.[0-9]+ | tail -2 | head -n +1) >> $GITHUB_ENV diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index 32848a7c7b..ea1e1b7e1a 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -72,7 +72,7 @@ jobs: run: docker build -t localhost:5000/traceability-foss:fe_${{ github.sha }} -f ./frontend/Dockerfile . - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.23.0 + uses: aquasecurity/trivy-action@0.24.0 with: trivyignores: "./.github/workflows/.trivyignore" image-ref: 'localhost:5000/traceability-foss:fe_${{ github.sha }}' @@ -132,7 +132,7 @@ jobs: ref: ${{needs.prepare-env.outputs.check_sha}} - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@0.23.0 + uses: aquasecurity/trivy-action@0.24.0 with: trivyignores: "./.github/workflows/.trivyignore" scan-type: "config" @@ -178,7 +178,7 @@ jobs: tags: localhost:5000/traceability-foss:trivy - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.23.0 + uses: aquasecurity/trivy-action@0.24.0 with: image-ref: localhost:5000/traceability-foss:trivy trivyignores: "./.github/workflows/.trivyignore" diff --git a/CHANGELOG.md b/CHANGELOG.md index 67883af8c3..f1c9167baa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,25 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). _**For better traceability add the corresponding GitHub issue number in each changelog entry, please.**_ ## [UNRELEASED - DD.MM.YYYY] +### Changed +- #1173 Update IRS-Helm from 7.1.4 to 7.2.0 - updated Compatibility Matrix +- #1082 fix duplicate key errors when synchronizing assets with IRS +- #970 fixed bug where the right operand of policies was not showing up in table and detailed view + +## [12.0.0 - 05.07.2024] + +### Added +- #832 added policymanagement list view, creator and editor +- #737 Added concept: Contract table -> parts link action +- XXX Added interceptor to EdcRestTemplates to log requests +- #915 Added section to documentation: EDC-BPN configuration +- #1037 Added link from contracts view to the corresponding filtered part table view +- #1017 added file for CC BY 4.0 license for TRG 7 +- #985 Added reference to part/notification under contract +- #786 Added icons on part table to let admin reload registry / sync assets via IRS +- #520 Added Attribute BPN to DetailView +- #1112 Added association int-a/int-b environment to argo workflow + ### Changed - #965 Implement proxy functionality of the IRS policy store - #962 Changed notification model to new one in frontend/backend @@ -33,22 +52,9 @@ _**For better traceability add the corresponding GitHub issue number in each cha - #875 owasp dependency check tool is now used from github action image instead of maven plugin - XXX fixed display of semantic data model in parts as planned table - -### Added -- #832 added policymanagement list view, creator and editor -- #737 Added concept: Contract table -> parts link action -- XXX Added interceptor to EdcRestTemplates to log requests -- #915 Added section to documentation: EDC-BPN configuration -- #1037 Added link from contracts view to the corresponding filtered part table view -- #1017 added file for CC BY 4.0 license for TRG 7 -- #985 Added reference to part/notification under contract -- #786 Added icons on part table to let admin reload registry / sync assets via IRS - ### Known knowns - - #786 Implemented short term solution for securing EDC Callback APIs - ### Removed - XXX Removed EdcNotifiactionMockServiceImpl class and replaced with mocks diff --git a/COMPATIBILITY_MATRIX.md b/COMPATIBILITY_MATRIX.md index dcd68ecaff..25d7e64333 100644 --- a/COMPATIBILITY_MATRIX.md +++ b/COMPATIBILITY_MATRIX.md @@ -1,4 +1,64 @@ # Compatibility matrix Trace-X +## Trace-X UNRELEASED [xx.x.x](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/x.x.x) - 2024-xx-xx + +### Catena-X Release? + +- [] yes +- [] no + +### Helm Version [x.x.x](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/helm-charts-x.x.x) + +| Dependency | Name of Service | Version | Helm | Comments | +|------------------|------------------------------|----------------------|----------|-----------------------------------------------------| +| EDC | edc-postgresql | 15.4.0-debian-11-r45 | 12.12.10 | Enterprise Data Connector for PostgreSQL | +| IRS | item-relationship-service | 5.2.0 | 7.2.1 | Helm charts for Item Relationship Service | +| EDC | tractusx-connector | 0.7.0 | 0.7.0 | Connector for Data Transfer and Registration | +| Discovery Finder | discovery service | 0.2.5 | - | Service for discovering and registering artifacts | +| Portal | portal | 1.8.0 | - | Web portal for interacting with Trace-X | +| SD-Factory | SD-Factory | 2.1.7 | - | Service Discovery Factory for managing dependencies | +| Registry | sldt-digital-twin-registry | 0.4.1 | 0.4.9 | Digital Twin Registry | +| Submodel Server | submodelservers | 0.1.0 | 0.0.1 | Submodel Server | +| Aspect Model | SerialPart | 3.0.0 | - | | +| Aspect Model | Batch | 3.0.0 | - | | +| Aspect Model | PartAsPlanned | 2.0.0 | - | | +| Aspect Model | PartSiteInformationAsPlanned | 1.0.0 | - | | +| Aspect Model | JustInSequencePart | 3.0.0 | - | | +| Aspect Model | TractionBatteryCode | 2.0.0 | - | | +| Aspect Model | SingleLevelUsageAsBuilt | 3.0.0 | - | | +| Aspect Model | SingleLevelBomAsBuilt | 3.0.0 | - | | +| Aspect Model | SingleLevelBomAsPlanned | 3.0.0 | - | + +## Trace-X version [12.0.0](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/12.0.0) - 2024-07-05 + +### Catena-X Release? + +- [] yes +- [x] no + +### Helm Version [1.3.40](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/helm-charts-1.3.40) + +| Dependency | Name of Service | Version | Helm | Comments | +|------------------|------------------------------|----------------------|----------|-----------------------------------------------------| +| EDC | edc-postgresql | 15.4.0-debian-11-r45 | 12.12.10 | Enterprise Data Connector for PostgreSQL | +| IRS | item-relationship-service | 5.1.4 | 7.1.4 | Helm charts for Item Relationship Service | +| EDC | tractusx-connector | 0.7.0 | 0.7.0 | Connector for Data Transfer and Registration | +| Discovery Finder | discovery service | 0.2.5 | - | Service for discovering and registering artifacts | +| Portal | portal | 1.8.0 | - | Web portal for interacting with Trace-X | +| SD-Factory | SD-Factory | 2.1.7 | - | Service Discovery Factory for managing dependencies | +| Registry | sldt-digital-twin-registry | 0.4.1 | 0.4.9 | Digital Twin Registry | +| Submodel Server | submodelservers | 0.1.0 | 0.0.1 | Submodel Server | +| Aspect Model | SerialPart | 3.0.0 | - | | +| Aspect Model | Batch | 3.0.0 | - | | +| Aspect Model | PartAsPlanned | 2.0.0 | - | | +| Aspect Model | PartSiteInformationAsPlanned | 1.0.0 | - | | +| Aspect Model | JustInSequencePart | 3.0.0 | - | | +| Aspect Model | TractionBatteryCode | 2.0.0 | - | | +| Aspect Model | SingleLevelUsageAsBuilt | 3.0.0 | - | | +| Aspect Model | SingleLevelBomAsBuilt | 3.0.0 | - | | +| Aspect Model | SingleLevelBomAsPlanned | 3.0.0 | - | + + + ## Trace-X version [11.0.2](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/11.0.2) - 2024-05-29 ### Catena-X Release? diff --git a/DEPENDENCIES_BACKEND b/DEPENDENCIES_BACKEND index 77f8077f49..1982aa4241 100644 --- a/DEPENDENCIES_BACKEND +++ b/DEPENDENCIES_BACKEND @@ -267,10 +267,10 @@ maven/mavencentral/org.eclipse.tractusx.edc/callback-spi/0.6.0, Apache-2.0, appr maven/mavencentral/org.eclipse.tractusx.edc/core-spi/0.6.0, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.eclipse.tractusx.edc/edr-api/0.6.0, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.eclipse.tractusx.edc/edr-spi/0.6.0, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-common/2.1.1, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/2.1.1, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-models/2.1.1, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/2.1.1, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-common/2.1.4, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/2.1.4, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-models/2.1.4, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/2.1.4, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.eclipse.tractusx.traceability/tx-backend/0.0.1-SNAPSHOT, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.eclipse.tractusx.traceability/tx-models/0.0.1-SNAPSHOT, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.flywaydb/flyway-core/9.22.3, Apache-2.0, approved, #15215 diff --git a/charts/traceability-foss/CHANGELOG.md b/charts/traceability-foss/CHANGELOG.md index 100ebe8f3b..d6d45dba35 100644 --- a/charts/traceability-foss/CHANGELOG.md +++ b/charts/traceability-foss/CHANGELOG.md @@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.3.41] - 2024-07-10 +### No changes + +## [1.3.40] - 2024-05-29 +### No changes ## [1.3.39] - 2024-05-29 ### No changes diff --git a/charts/traceability-foss/Chart.yaml b/charts/traceability-foss/Chart.yaml index aa77cb1181..eba7c2c5da 100644 --- a/charts/traceability-foss/Chart.yaml +++ b/charts/traceability-foss/Chart.yaml @@ -23,15 +23,15 @@ home: https://eclipse-tractusx.github.io/ sources: - https://github.com/eclipse-tractusx/traceability-foss type: application -version: 1.3.39 -appVersion: "11.0.2" +version: 1.3.41 +appVersion: "12.0.0" dependencies: - name: frontend repository: "file://charts/frontend" - version: 1.3.39 + version: 1.3.41 - name: backend repository: "file://charts/backend" - version: 1.3.39 + version: 1.3.41 - name: postgresql repository: https://charts.bitnami.com/bitnami version: 12.12.10 @@ -42,7 +42,7 @@ dependencies: condition: pgadmin4.enabled - name: item-relationship-service repository: https://eclipse-tractusx.github.io/item-relationship-service - version: 7.1.4 + version: 7.2.1 condition: item-relationship-service.enabled - name: tractusx-connector repository: https://eclipse-tractusx.github.io/tractusx-edc diff --git a/charts/traceability-foss/charts/backend/Chart.yaml b/charts/traceability-foss/charts/backend/Chart.yaml index 2f2449d55f..6f3c924c13 100644 --- a/charts/traceability-foss/charts/backend/Chart.yaml +++ b/charts/traceability-foss/charts/backend/Chart.yaml @@ -20,8 +20,8 @@ apiVersion: v2 name: backend description: A Helm chart for Traceability backend application. type: application -version: 1.3.39 -appVersion: "11.0.2" +version: 1.3.41 +appVersion: "12.0.0" dependencies: - name: postgresql repository: https://charts.bitnami.com/bitnami diff --git a/charts/traceability-foss/charts/backend/values.yaml b/charts/traceability-foss/charts/backend/values.yaml index b182475eb3..c8be65c114 100644 --- a/charts/traceability-foss/charts/backend/values.yaml +++ b/charts/traceability-foss/charts/backend/values.yaml @@ -21,7 +21,7 @@ replicaCount: 1 image: - repository: tractusx/tx-traceability-foss + repository: tractusx/traceability-foss pullPolicy: Always ## diff --git a/charts/traceability-foss/charts/frontend/Chart.yaml b/charts/traceability-foss/charts/frontend/Chart.yaml index 91cdcd20ef..b91437c034 100644 --- a/charts/traceability-foss/charts/frontend/Chart.yaml +++ b/charts/traceability-foss/charts/frontend/Chart.yaml @@ -20,5 +20,5 @@ apiVersion: v2 name: frontend description: A Helm chart for Traceability frontend application. type: application -version: 1.3.39 -appVersion: "11.0.2" +version: 1.3.41 +appVersion: "12.0.0" diff --git a/charts/traceability-foss/charts/frontend/values.yaml b/charts/traceability-foss/charts/frontend/values.yaml index 30e1e31c68..151b62b12d 100644 --- a/charts/traceability-foss/charts/frontend/values.yaml +++ b/charts/traceability-foss/charts/frontend/values.yaml @@ -20,7 +20,7 @@ replicaCount: 1 image: - repository: tractusx/tx-traceability-foss + repository: tractusx/traceability-foss pullPolicy: Always ## diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 00dec9489d..e7d4836d27 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -3,34 +3,34 @@

Product Traceability FOSS Release guide

-# Release Numbering +# Release Numbering Trace-X using semantic versioning three-part version number. https://semver.org/ ## Major Release * If there are any incompatible API changes. -* Changes with high impact +* Changes with high impact * Contains new features and changes with critical business impact. -* Full regression tests are covered. +* Full regression tests are covered. ## Minor Release * Add functionality in a backwards compatible manner * Features (backwards compatible has to be ensured) * Minor release does not add features or changes with critical business impact. -* Regression impact should be low. -* No training effort necessary -* INT Test environment should be stable. No changes on depending on systems required. No changes on consumer side necessary. -* Operational risks should be low. +* Regression impact should be low. +* No training effort necessary +* INT Test environment should be stable. No changes on depending on systems required. No changes on consumer side necessary. +* Operational risks should be low. ## Bug fix / Patch Release * Backwards compatible bug fixes * Bug fixes and Hotfixes -* Covers Bug fixes and changes with no critical business impact. -* No changes on depending on or consuming systems required. -* INT Test environment should be stable. No changes on depending on systems required. No changes on consumer side necessary. +* Covers Bug fixes and changes with no critical business impact. +* No changes on depending on or consuming systems required. +* INT Test environment should be stable. No changes on depending on systems required. No changes on consumer side necessary. -## Tag -* Defined software state. +## Tag +* Defined software state. # Release an app @@ -58,21 +58,21 @@ The goal is to not use a -SNAPSHOT version in the Trace-X Release. 4) Edit changelog: Align the new version (1.0.0) with the changes and add a new UNRELEASED section 5) Edit /charts/traceability-foss/CHANGELOG.md 6) Add an Entry for an incremented (patch) version (1.0.0 -> 1.0.1) -7) Update the [Compatability Matrix](https://github.com/catenax-ng/tx-traceability-foss/blob/main/COMPATIBILITY_MATRIX.md) with a new entry for the release version +7) Update the [Compatability Matrix](https://github.com/eclipse-tractusx/traceability-foss/blob/main/COMPATIBILITY_MATRIX.md) with a new entry for the release version 8) Push onto /release/1.0.0 catena and eclipse -9) Open Release App Page Catena: https://github.com/catenax-ng/tx-traceability-foss/releases +9) Open Release App Page Catena: https://github.com/eclipse-tractusx/traceability-foss/releases 10) Draft a new release 11) On dropdown choose a tag - use the version 1.0.0 (Create new tag will appear - select it) 12) On dropdown target use your /release/1.0.0 13) Title = Version of app -> 1.0.0 14) Description = Changelog Content of app 15) Checkbox set as latest release -16) Verify that GitHub action [Release](https://github.com/catenax-ng/tx-traceability-foss/actions/workflows/release.yaml) generation has been triggered +16) Verify that GitHub action [Release](https://github.com/eclipse-tractusx/traceability-foss/actions/workflows/release.yaml) generation has been triggered 17) Verify that an automatic pull request has been opened (Prepare Helm release for next version) 18) Validate that the versions within that pull requests are correct 19) Merge pull request (Prepare Helm release for next version) 20) Merge release branch into main (when merging make sure to restore release branch since it should stay) -21) Open the GitHub action for helm release generation: https://github.com/catenax-ng/tx-traceability-foss/actions/workflows/helm-chart-release.yaml +21) Open the GitHub action for helm release generation: https://github.com/eclipse-tractusx/traceability-foss/actions/workflows/helm-chart-release.yaml 22) Execute it from main branch 23) Validate that the helm charts release has been generated within the release page 24) Create a new branch from release/1.0.0 and name it release/helm-environments-1.0.0 (helm app version not chart version) diff --git a/frontend/package.json b/frontend/package.json index 7ede5274d7..1c5d837966 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "trace-x", - "version": "11.0.2", + "version": "12.0.0", "scripts": { "analyze": "ng build --configuration=production --stats-json && webpack-bundle-analyzer dist/stats.json", "build:prod": "ng build --output-hashing=all --configuration=debugProd --base-href /{baseHrefPlaceholder}/ --deploy-url /{baseHrefPlaceholder}/ ", diff --git a/frontend/src/app/mocks/services/policy-mock/policy.model.ts b/frontend/src/app/mocks/services/policy-mock/policy.model.ts index b110a5bad2..0de23c0dfe 100644 --- a/frontend/src/app/mocks/services/policy-mock/policy.model.ts +++ b/frontend/src/app/mocks/services/policy-mock/policy.model.ts @@ -187,28 +187,28 @@ export const MockPolicyResponseMap: PolicyResponseMap = { 'operator': { '@id': OperatorType.EQ, }, - 'odrl:rightOperand': 'traceability:1.0', + 'rightOperand': 'traceability:1.0', }, { 'leftOperand': 'cx-policy:FrameworkAgreement', 'operator': { '@id': OperatorType.EQ, }, - 'odrl:rightOperand': 'traceability:1.0', + 'rightOperand': 'traceability:1.0', }, { 'leftOperand': 'cx-policy:FrameworkAgreement', 'operator': { '@id': OperatorType.EQ, }, - 'odrl:rightOperand': 'traceability:1.0', + 'rightOperand': 'traceability:1.0', }, { 'leftOperand': 'cx-policy:FrameworkAgreement', 'operator': { '@id': OperatorType.EQ, }, - 'odrl:rightOperand': 'traceability:1.0', + 'rightOperand': 'traceability:1.0', }, ], }, diff --git a/frontend/src/app/modules/page/admin/presentation/policy-management/policies/policies.assembler.spec.ts b/frontend/src/app/modules/page/admin/presentation/policy-management/policies/policies.assembler.spec.ts index ff4d9a15ed..288a8bcc0b 100644 --- a/frontend/src/app/modules/page/admin/presentation/policy-management/policies/policies.assembler.spec.ts +++ b/frontend/src/app/modules/page/admin/presentation/policy-management/policies/policies.assembler.spec.ts @@ -15,7 +15,7 @@ const mockPolicy: Policy = { leftOperand: 'left1', operator: { '@id': OperatorType.EQ }, operatorTypeResponse: OperatorType.EQ, - 'odrl:rightOperand': 'right1', + 'rightOperand': 'right1', }, ], or: [ @@ -23,7 +23,7 @@ const mockPolicy: Policy = { leftOperand: 'left2', operator: { '@id': OperatorType.NEQ }, operatorTypeResponse: OperatorType.NEQ, - 'odrl:rightOperand': 'right2', + 'rightOperand': 'right2', }, ], }, diff --git a/frontend/src/app/modules/page/admin/presentation/policy-management/policies/policy.assembler.ts b/frontend/src/app/modules/page/admin/presentation/policy-management/policies/policy.assembler.ts index da0af6e19d..aad14a0865 100644 --- a/frontend/src/app/modules/page/admin/presentation/policy-management/policies/policy.assembler.ts +++ b/frontend/src/app/modules/page/admin/presentation/policy-management/policies/policy.assembler.ts @@ -43,7 +43,7 @@ export class PoliciesAssembler { permission.constraint?.and?.forEach((andConstraint, index) => { constrainsList.push(andConstraint.leftOperand); constrainsList.push(getOperatorTypeSign(OperatorType[andConstraint.operator['@id'].toUpperCase()])); - constrainsList.push(andConstraint['odrl:rightOperand']); + constrainsList.push(andConstraint.rightOperand); if (index !== permission.constraint.and.length - 1) { constrainsList.push('*AND '); } @@ -51,7 +51,7 @@ export class PoliciesAssembler { permission.constraint?.or?.forEach((orConstraint, index) => { constrainsList.push(orConstraint.leftOperand); constrainsList.push(getOperatorTypeSign(OperatorType[orConstraint.operator['@id'].toUpperCase()])); - constrainsList.push(orConstraint['odrl:rightOperand']); + constrainsList.push(orConstraint.rightOperand); if (index !== permission.constraint.or.length - 1) { constrainsList.push('*OR '); } diff --git a/frontend/src/app/modules/page/admin/presentation/policy-management/policy-editor/policy-editor.component.spec.ts b/frontend/src/app/modules/page/admin/presentation/policy-management/policy-editor/policy-editor.component.spec.ts index de27051a8b..98544d1fc1 100644 --- a/frontend/src/app/modules/page/admin/presentation/policy-management/policy-editor/policy-editor.component.spec.ts +++ b/frontend/src/app/modules/page/admin/presentation/policy-management/policy-editor/policy-editor.component.spec.ts @@ -34,7 +34,7 @@ describe('PolicyEditorComponent', () => { leftOperand: 'left1', operator: { '@id': OperatorType.EQ }, operatorTypeResponse: OperatorType.EQ, - 'odrl:rightOperand': 'right1', + 'rightOperand': 'right1', }, ], or: [ @@ -42,7 +42,7 @@ describe('PolicyEditorComponent', () => { leftOperand: 'left2', operator: { '@id': OperatorType.NEQ }, operatorTypeResponse: OperatorType.NEQ, - 'odrl:rightOperand': 'right2', + 'rightOperand': 'right2', }, ], }, diff --git a/frontend/src/app/modules/page/policies/model/policy.model.ts b/frontend/src/app/modules/page/policies/model/policy.model.ts index 37824fe1a2..a55199f8fd 100644 --- a/frontend/src/app/modules/page/policies/model/policy.model.ts +++ b/frontend/src/app/modules/page/policies/model/policy.model.ts @@ -84,7 +84,6 @@ export interface PolicyConstraint { operator?: { '@id': OperatorType }; 'odrl:operator'?: { '@id': OperatorType }; rightOperand?: string; - 'odrl:rightOperand'?: string; } export enum OperatorType { diff --git a/frontend/src/app/modules/shared/assembler/parts.assembler.spec.ts b/frontend/src/app/modules/shared/assembler/parts.assembler.spec.ts index e8c9df1d34..a1ffec9d7d 100644 --- a/frontend/src/app/modules/shared/assembler/parts.assembler.spec.ts +++ b/frontend/src/app/modules/shared/assembler/parts.assembler.spec.ts @@ -177,6 +177,7 @@ describe('PartsAssembler', () => { const manufacturerName = 'manufacturerName'; const manufacturerPartId = 'manufacturerPartId'; const nameAtManufacturer = 'nameAtManufacturer'; + const businessPartner = 'businessPartner'; const van = 'van'; const mainAspectType = MainAspectType.AS_BUILT; @@ -185,6 +186,7 @@ describe('PartsAssembler', () => { manufacturerName, manufacturerPartId, nameAtManufacturer, + businessPartner, test: '', van, mainAspectType, @@ -193,7 +195,7 @@ describe('PartsAssembler', () => { .pipe(PartsAssembler.mapPartForManufacturerView()) .subscribe(result => { expect(result).toEqual({ - data: { manufacturerName, manufacturerPartId, nameAtManufacturer, van } as unknown as Part, + data: { manufacturerName, manufacturerPartId, nameAtManufacturer, businessPartner, van } as unknown as Part, }); done(); }); diff --git a/frontend/src/app/modules/shared/assembler/parts.assembler.ts b/frontend/src/app/modules/shared/assembler/parts.assembler.ts index 1d6ebf7c04..61404c9f1b 100644 --- a/frontend/src/app/modules/shared/assembler/parts.assembler.ts +++ b/frontend/src/app/modules/shared/assembler/parts.assembler.ts @@ -188,16 +188,18 @@ export class PartsAssembler { manufacturerName, manufacturerPartId, nameAtManufacturer, + businessPartner, van, } = viewData.data; - return { data: { manufacturerName, manufacturerPartId, nameAtManufacturer, van } as Part }; + return { data: { manufacturerName, manufacturerPartId, nameAtManufacturer, businessPartner, van } as Part }; } else { const { manufacturerName, manufacturerPartId, nameAtManufacturer, + businessPartner, } = viewData.data; - return { data: { manufacturerName, manufacturerPartId, nameAtManufacturer } as Part }; + return { data: { manufacturerName, manufacturerPartId, nameAtManufacturer, businessPartner} as Part }; } }); } diff --git a/frontend/src/app/modules/shared/service/policy.service.spec.ts b/frontend/src/app/modules/shared/service/policy.service.spec.ts index 7b8c3f27d3..96794a8d95 100644 --- a/frontend/src/app/modules/shared/service/policy.service.spec.ts +++ b/frontend/src/app/modules/shared/service/policy.service.spec.ts @@ -64,7 +64,7 @@ describe('PolicyService', () => { leftOperand: 'left1', operator: { '@id': OperatorType.EQ }, operatorTypeResponse: OperatorType.EQ, - 'odrl:rightOperand': 'right1', + 'rightOperand': 'right1', }, ], or: [ @@ -72,7 +72,7 @@ describe('PolicyService', () => { leftOperand: 'left2', operator: { '@id': OperatorType.NEQ }, operatorTypeResponse: OperatorType.NEQ, - 'odrl:rightOperand': 'right2', + 'rightOperand': 'right2', }, ], }, @@ -154,7 +154,7 @@ describe('PolicyService', () => { leftOperand: 'left1', operator: { '@id': OperatorType.EQ }, operatorTypeResponse: OperatorType.EQ, - 'odrl:rightOperand': 'right1', + 'rightOperand': 'right1', }, ], or: [ @@ -162,7 +162,7 @@ describe('PolicyService', () => { leftOperand: 'left2', operator: { '@id': OperatorType.NEQ }, operatorTypeResponse: OperatorType.NEQ, - 'odrl:rightOperand': 'right2', + 'rightOperand': 'right2', }, ], }, @@ -206,7 +206,7 @@ describe('PolicyService', () => { leftOperand: 'left1', operator: { '@id': OperatorType.EQ }, operatorTypeResponse: OperatorType.EQ, - 'odrl:rightOperand': 'right1', + 'rightOperand': 'right1', }, ], or: [ @@ -214,7 +214,7 @@ describe('PolicyService', () => { leftOperand: 'left2', operator: { '@id': OperatorType.NEQ }, operatorTypeResponse: OperatorType.NEQ, - 'odrl:rightOperand': 'right2', + 'rightOperand': 'right2', }, ], }, diff --git a/frontend/src/assets/locales/de/partDetail.json b/frontend/src/assets/locales/de/partDetail.json index 1e182a05fa..11eb8046f7 100644 --- a/frontend/src/assets/locales/de/partDetail.json +++ b/frontend/src/assets/locales/de/partDetail.json @@ -19,6 +19,7 @@ "nameAtCustomer": "Name beim Kunden", "customerPartId": "Kunden Produktnummer", "semanticDataModel": "Semantisches Datenmodell", + "businessPartner": "Geschäftspartner Nummer", "van": "Van", "manufacturingDate": "Produktionsdatum", "manufacturingCountry": "Produktionsland", diff --git a/frontend/src/assets/locales/en/partDetail.json b/frontend/src/assets/locales/en/partDetail.json index c1a322f4af..4abc7ab85d 100644 --- a/frontend/src/assets/locales/en/partDetail.json +++ b/frontend/src/assets/locales/en/partDetail.json @@ -19,6 +19,7 @@ "nameAtCustomer": "Name at customer", "customerPartId": "Customer part ID", "semanticDataModel": "Semantic Data Model", + "businessPartner": "Business partner number", "van": "Van", "manufacturingDate": "Production date", "manufacturingCountry": "Production country", diff --git a/pom.xml b/pom.xml index 809ef44da2..97e5544c41 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ SPDX-License-Identifier: Apache-2.0 5.10.2 4.2.1 - 2.1.1 + 2.1.4 5.4.0 jacoco diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/asplanned/repository/AssetAsPlannedRepositoryImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/asplanned/repository/AssetAsPlannedRepositoryImpl.java index a6d16091b7..13e4b26659 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/asplanned/repository/AssetAsPlannedRepositoryImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/asplanned/repository/AssetAsPlannedRepositoryImpl.java @@ -28,7 +28,6 @@ import org.eclipse.tractusx.traceability.assets.domain.base.model.ImportNote; import org.eclipse.tractusx.traceability.assets.domain.base.model.ImportState; import org.eclipse.tractusx.traceability.assets.domain.base.model.Owner; -import org.eclipse.tractusx.traceability.assets.infrastructure.asbuilt.model.AssetAsBuiltEntity; import org.eclipse.tractusx.traceability.assets.infrastructure.asplanned.model.AssetAsPlannedEntity; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.AssetCallbackRepository; import org.eclipse.tractusx.traceability.assets.infrastructure.base.model.AssetBaseEntity; diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/JobRepositoryImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/JobRepositoryImpl.java index de3984ea79..c45c1d7b75 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/JobRepositoryImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/JobRepositoryImpl.java @@ -35,6 +35,7 @@ import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.factory.IrsResponseAssetMapper; import org.eclipse.tractusx.traceability.common.properties.TraceabilityProperties; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import java.util.List; @@ -108,7 +109,13 @@ public void handleJobFinishedCallback(String jobId, String state) { } void saveOrUpdateAssets(AssetCallbackRepository repository, AssetBase asset) { - repository.save(asset); + try { + repository.save(asset); + } catch (DataIntegrityViolationException ex) { + //retry save in case of ERROR: duplicate key value violates unique constraint "asset_pkey" + log.info("Asset with id {} already exists in the database. The record will be updated instead.", asset.getId()); + repository.save(asset); + } } diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/notification/investigation/InvestigationPolicyExpirationIT.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/notification/investigation/InvestigationPolicyExpirationIT.java index ca70631e8d..0856cd6a86 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/notification/investigation/InvestigationPolicyExpirationIT.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/notification/investigation/InvestigationPolicyExpirationIT.java @@ -151,8 +151,8 @@ void shouldNotApproveInvestigationStatus_whenPolicyIsExpired() throws JoseExcept .body("pageSize", Matchers.is(10)) .body("content", Matchers.hasSize(1)) .body("content[0].sendTo", Matchers.is(Matchers.not(Matchers.blankOrNullString()))) - .body("content[0].messages[0].errorMessage", Matchers.is("Failed to negotiate contract agreement: Policy from BPNL00000003CNKC has expired.")) - .body("content[0].messages[1].errorMessage", Matchers.is("Failed to negotiate contract agreement: Policy from BPNL00000003CNKC has expired.")); + .body("content[0].messages[0].errorMessage", Matchers.is("Failed to negotiate contract agreement: Policy [policy1] has expired.")) + .body("content[0].messages[1].errorMessage", Matchers.is("Failed to negotiate contract agreement: Policy [policy1] has expired.")); notificationMessageSupport.assertMessageSize(2);