diff --git a/.github/workflows/helm-test.yaml b/.github/workflows/helm-test.yaml index 18b85aecc..83c23ffab 100644 --- a/.github/workflows/helm-test.yaml +++ b/.github/workflows/helm-test.yaml @@ -122,10 +122,10 @@ jobs: - name: Run chart-testing (install) run: | - cp deployment/helm/local/storage/pv-data.yaml charts/digital-product-pass/templates/pv-data.yaml + cp deployment/local/storage/pv-data.yaml charts/digital-product-pass/templates/pv-data.yaml rm charts/digital-product-pass/templates/pvc-data.yaml - cp deployment/helm/local/storage/pvc-data.yaml charts/digital-product-pass/templates/pvc-data.yaml + cp deployment/local/storage/pvc-data.yaml charts/digital-product-pass/templates/pvc-data.yaml helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add tractusx https://eclipse-tractusx.github.io/charts/dev ct install --charts charts/digital-product-pass --helm-extra-set-args "--set=frontend.image.tag=${{ env.TAG }} --set=frontend.image.repository=${{ env.REGISTRY }}/${{ env.FRONTEND_IMAGE}} --set=backend.image.tag=${{ env.TAG }} --set=backend.image.repository=${{ env.REGISTRY }}/${{ env.BACKEND_IMAGE}}" - if: steps.list-changed.outputs.changed == 'true' \ No newline at end of file + if: steps.list-changed.outputs.changed == 'true' diff --git a/CHANGELOG.md b/CHANGELOG.md index 96c5e8e9c..e970792e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,91 @@ The changelog 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). +## [released] +## [v2.0.3] - 02-02-2024 +## Added +- Added Frameagreement conditions to the provider configuration +- Added Unit Tests for Managers and for Services +- Added changes from version `v1.0.0` to version `v2.0.0` for every component involved +- Added iconMapping for all components involved in DPP `v2.0.0` +- Added multi-language feature that supports currently `EN` and `DE` +- Added back button in the welcome page +- Added `timeToLive` attribute to discovery service model in the dpp-backed +- Added `readOnlyRootFilesystem` to the container security context in helm charts +- Added Serial Part aspect in the drill down components +- Added `notice.md` to include **Notice for docker images** section to be only part of DockerHub description + +## Updated +- Cleaned up necessary scripts +-Refactored the DPP and IRS postman collections +- Updated the deployment and testing directory structure and their references in relevant documentation +- Updated license header and deployment directory references in the following readme files: + - Admin guide + - Arc42 + - Getting-Started guide +- Updated test directory stricture in dpp-backend +- Updated the app url from [https://materialpass.int.demo.catena-x.net](https://materialpass.int.demo.catena-x.net) to [https://dpp.int.demo.catena-x.net](https://dpp.int.demo.catena-x.net) +- Updated the payloads of asset, policies, contract definition, digital twin and its aspects to align with the DPPTriangle document v1.1.0 +- Updated the following frontend content: + - Condition for "commercial.warranty" in General Cards + - Mocked passports + - Loading page translation + - Translation files + - Characteristics component + - Identification component + - Sustainability component + - Typology component +- Updated helm template to provide security context values from helm vaules file +- Updated kics workflow +- Updated user manual, deployment guide +- Updated year 2024 to the license headers +- Updated diagrams to an editable version in `.svg` in business statement readme +- Updated `README.md` and `UNIT_TESTS.md` for the dpp-backend +- Updated versions in docker workflows and setup-java action +- Refactor docker workflows +- Updated **Notice for docker images** section in a main `README.md` + + +## [released] +## [v2.0.2] - 02-02-2024 +## Added +- Added Frameagreement conditions to the provider configuration +- Added Unit Tests for Managers and for Services +- Added changes from version `v1.0.0` to version `v2.0.0` for every component involved +- Added iconMapping for all components involved in DPP `v2.0.0` +- Added multi-language feature that supports currently `EN` and `DE` +- Added back button in the welcome page +- Added `timeToLive` attribute to discovery service model in the dpp-backed +- Added `readOnlyRootFilesystem` to the container security context in helm charts + + +## Updated +- Cleaned up necessary scripts +-Refactored the DPP and IRS postman collections +- Updated the deployment and testing directory structure and their references in relevant documentation +- Updated license header and deployment directory references in the following readme files: + - Admin guide + - Arc42 + - Getting-Started guide +- Updated test directory stricture in dpp-backend +- Updated the app url from [https://materialpass.int.demo.catena-x.net](https://materialpass.int.demo.catena-x.net) to [https://dpp.int.demo.catena-x.net](https://dpp.int.demo.catena-x.net) +- Updated the payloads of asset, policies, contract definition, digital twin and its aspects to align with the DPPTriangle document `v1.1.0` +- Updated the following frontend content: + - Condition for "commercial.warranty" in General Cards + - Mocked passports + - Loading page translation + - Translation files + - Characteristics component + - Identification component + - Sustainability component + - Typology component +- Updated helm template to provide security context values from helm vaules file + + +## Deleted +- Filtered out unnecessary nnecessary/unused files + + ## [released] ## [v2.0.1] - 03-01-2024 ## Added diff --git a/README.md b/README.md index 0720cda51..dd8b8e0db 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,9 @@ In particular, the appliction is used to access the battery passport data provid ### Software Version #### Helm Chart Version -
2.0.1
+
2.0.3
#### Application Version -
v2.0.1
+
v2.0.3
## Application Preview diff --git a/charts/digital-product-pass/Chart.yaml b/charts/digital-product-pass/Chart.yaml index 09e5a1307..6ed2a6dc2 100644 --- a/charts/digital-product-pass/Chart.yaml +++ b/charts/digital-product-pass/Chart.yaml @@ -1,7 +1,8 @@ ################################################################################# -# Catena-X - Product Passport Consumer Application +# Catena-X - Digital Passport Passport Application # # Copyright (c) 2022, 2023 BASF SE, BMW AG, Henkel AG & Co. KGaA +# Copyright (c) 2022, 2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -40,10 +41,10 @@ type: application # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 2.0.1 +version: 2.0.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: "2.0.1" +appVersion: "2.0.3" diff --git a/charts/digital-product-pass/README.md b/charts/digital-product-pass/README.md index ecc33d17e..a5fb17654 100644 --- a/charts/digital-product-pass/README.md +++ b/charts/digital-product-pass/README.md @@ -1,6 +1,6 @@ # digital-product-pass -![Version: 2.0.1](https://img.shields.io/badge/Version-2.0.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.0.1](https://img.shields.io/badge/AppVersion-2.0.1-informational?style=flat-square) +![Version: 2.0.3](https://img.shields.io/badge/Version-2.0.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.0.3](https://img.shields.io/badge/AppVersion-2.0.3-informational?style=flat-square) A Helm chart for Tractus-X Digital Product Pass Kubernetes @@ -15,7 +15,7 @@ A Helm chart for Tractus-X Digital Product Pass Kubernetes | Key | Type | Default | Description | |-----|------|---------|-------------| | affinity | object | `{}` | | -| backend | object | `{"digitalTwinRegistry":{"endpoints":{"digitalTwin":"/shell-descriptors","search":"/lookup/shells","subModel":"/submodel-descriptors"},"temporaryStorage":{"enabled":true,"lifetime":12},"timeouts":{"digitalTwin":20,"negotiation":40,"search":10,"transfer":10}},"discovery":{"bpnDiscovery":{"key":"manufacturerPartId","path":"/api/v1.0/administration/connectors/bpnDiscovery/search"},"edcDiscovery":{"key":"bpn"},"hostname":""},"edc":{"apis":{"catalog":"/catalog/request","management":"/management/v2","negotiation":"/contractnegotiations","transfer":"/transferprocesses"},"delay":100,"hostname":"","participantId":"","xApiKey":""},"hostname":"localhost","image":{"pullPolicy":"Always","repository":"docker.io/tractusx/digital-product-pass-backend"},"imagePullSecrets":[],"ingress":{"enabled":false,"hosts":[{"host":"localhost","paths":[{"path":"/","pathType":"Prefix"}]}]},"irs":{"enabled":false,"hostname":""},"logging":{"level":{"root":"INFO","utils":"INFO"}},"maxRetries":5,"name":"dpp-backend","passport":{"aspects":["urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport","urn:bamm:io.catenax.battery.battery_pass:3.0.1#BatteryPass","urn:bamm:io.catenax.transmission.transmission_pass:1.0.0#TransmissionPass"]},"process":{"encryptionKey":""},"securityCheck":{"bpn":false,"edc":false},"serverPort":8888,"service":{"port":8888,"type":"ClusterIP"}}` | Backend configuration | +| backend | object | `{"digitalTwinRegistry":{"endpoints":{"digitalTwin":"/shell-descriptors","search":"/lookup/shells","subModel":"/submodel-descriptors"},"temporaryStorage":{"enabled":true,"lifetime":12},"timeouts":{"digitalTwin":20,"negotiation":40,"search":10,"transfer":10}},"discovery":{"bpnDiscovery":{"key":"manufacturerPartId","path":"/api/v1.0/administration/connectors/bpnDiscovery/search"},"edcDiscovery":{"key":"bpn"},"hostname":""},"edc":{"apis":{"catalog":"/catalog/request","management":"/management/v2","negotiation":"/contractnegotiations","transfer":"/transferprocesses"},"delay":100,"hostname":"","participantId":"","xApiKey":""},"hostname":"localhost","image":{"pullPolicy":"Always","repository":"docker.io/tractusx/digital-product-pass-backend"},"imagePullSecrets":[],"ingress":{"enabled":false,"hosts":[{"host":"localhost","paths":[{"path":"/","pathType":"Prefix"}]}]},"irs":{"enabled":false,"hostname":""},"logging":{"level":{"root":"INFO","utils":"INFO"}},"maxRetries":5,"name":"dpp-backend","passport":{"aspects":["urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport","urn:bamm:io.catenax.battery.battery_pass:3.0.1#BatteryPass","urn:bamm:io.catenax.transmission.transmission_pass:1.0.0#TransmissionPass"]},"podSecurityContext":{"fsGroup":3000,"runAsGroup":3000,"runAsUser":10000,"seccompProfile":{"type":"RuntimeDefault"}},"process":{"encryptionKey":""},"securityCheck":{"bpn":false,"edc":false},"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"add":[],"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":3000,"runAsNonRoot":true,"runAsUser":10000},"serverPort":8888,"service":{"port":8888,"type":"ClusterIP"}}` | Backend configuration | | backend.digitalTwinRegistry.temporaryStorage | object | `{"enabled":true,"lifetime":12}` | temporary storage of dDTRs for optimization | | backend.digitalTwinRegistry.temporaryStorage.lifetime | int | `12` | lifetime of the temporaryStorage in hours | | backend.digitalTwinRegistry.timeouts | object | `{"digitalTwin":20,"negotiation":40,"search":10,"transfer":10}` | timeouts for the digital twin registry async negotiation | @@ -24,6 +24,7 @@ A Helm chart for Tractus-X Digital Product Pass Kubernetes | backend.discovery.edcDiscovery | object | `{"key":"bpn"}` | edc discovery configuration | | backend.discovery.hostname | string | `""` | discovery finder configuration | | backend.edc | object | `{"apis":{"catalog":"/catalog/request","management":"/management/v2","negotiation":"/contractnegotiations","transfer":"/transferprocesses"},"delay":100,"hostname":"","participantId":"","xApiKey":""}` | in this section we configure the values that are inserted as secrets in the backend | +| backend.edc.delay | int | `100` | Negotiation status Delay in milliseconds in between async requests [<= 500] | | backend.edc.hostname | string | `""` | edc consumer connection configuration | | backend.edc.participantId | string | `""` | BPN Number | | backend.edc.xApiKey | string | `""` | the secret for assesing the edc management API | @@ -36,9 +37,21 @@ A Helm chart for Tractus-X Digital Product Pass Kubernetes | backend.maxRetries | int | `5` | max retries for the backend services | | backend.passport | object | `{"aspects":["urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport","urn:bamm:io.catenax.battery.battery_pass:3.0.1#BatteryPass","urn:bamm:io.catenax.transmission.transmission_pass:1.0.0#TransmissionPass"]}` | passport data transfer configuration | | backend.passport.aspects | list | `["urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport","urn:bamm:io.catenax.battery.battery_pass:3.0.1#BatteryPass","urn:bamm:io.catenax.transmission.transmission_pass:1.0.0#TransmissionPass"]` | passport versions and aspects allowed | +| backend.podSecurityContext | object | `{"fsGroup":3000,"runAsGroup":3000,"runAsUser":10000,"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 | +| backend.podSecurityContext.fsGroup | int | `3000` | The owner for volumes and any files created within volumes will belong to this guid | +| backend.podSecurityContext.runAsGroup | int | `3000` | Processes within a pod will belong to this guid | +| backend.podSecurityContext.runAsUser | int | `10000` | Runs all processes within a pod with a special uid | +| backend.podSecurityContext.seccompProfile.type | string | `"RuntimeDefault"` | Restrict a Container's Syscalls with seccomp | | backend.process | object | `{"encryptionKey":""}` | digital twin registry configuration | | backend.process.encryptionKey | string | `""` | unique sha512 hash key used for the passport encryption | | backend.securityCheck | object | `{"bpn":false,"edc":false}` | security configuration | +| backend.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 | +| backend.securityContext.capabilities.add | list | `[]` | Specifies which capabilities to add to issue specialized syscalls | +| backend.securityContext.capabilities.drop | list | `["ALL"]` | Specifies which capabilities to drop to reduce syscall attack surface | +| backend.securityContext.readOnlyRootFilesystem | bool | `true` | Whether the root filesystem is mounted in read-only mode | +| backend.securityContext.runAsGroup | int | `3000` | The owner for volumes and any files created within volumes will belong to this guid | +| backend.securityContext.runAsNonRoot | bool | `true` | Requires the container to run without root privileges | +| backend.securityContext.runAsUser | int | `10000` | The container's process will run with the specified uid | | backend.serverPort | int | `8888` | configuration of the spring boot server | | backend.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 | | frontend.api | object | `{"delay":1000,"max_retries":30,"timeout":90000}` | api timeouts | @@ -54,14 +67,26 @@ A Helm chart for Tractus-X Digital Product Pass Kubernetes | frontend.irs.maxWaitingTime | int | `30` | maximum waiting time to get the irs job status | | frontend.irs.requestDelay | int | `30000` | request timeout delay | | frontend.name | string | `"dpp-frontend"` | | +| frontend.podSecurityContext | object | `{"fsGroup":3000,"runAsGroup":3000,"runAsUser":10000,"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 | +| frontend.podSecurityContext.fsGroup | int | `3000` | The owner for volumes and any files created within volumes will belong to this guid | +| frontend.podSecurityContext.runAsGroup | int | `3000` | Processes within a pod will belong to this guid | +| frontend.podSecurityContext.runAsUser | int | `10000` | Runs all processes within a pod with a special uid | +| frontend.podSecurityContext.seccompProfile.type | string | `"RuntimeDefault"` | Restrict a Container's Syscalls with seccomp | | frontend.portal.hostname | string | `""` | | +| frontend.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 | +| frontend.securityContext.capabilities.add | list | `[]` | Specifies which capabilities to add to issue specialized syscalls | +| frontend.securityContext.capabilities.drop | list | `["ALL"]` | Specifies which capabilities to drop to reduce syscall attack surface | +| frontend.securityContext.readOnlyRootFilesystem | bool | `false` | Whether the root filesystem is mounted in read-only mode | +| frontend.securityContext.runAsGroup | int | `3000` | The owner for volumes and any files created within volumes will belong to this guid | +| frontend.securityContext.runAsNonRoot | bool | `true` | Requires the container to run without root privileges | +| frontend.securityContext.runAsUser | int | `10000` | The container's process will run with the specified uid | | frontend.service.port | int | `8080` | | | frontend.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 | | frontend.supportContact.adminEmail | string | `"admin@example.com"` | | | name | string | `"digital-product-pass"` | | | namespace | string | `""` | | | nodeSelector | object | `{}` | | -| oauth | object | `{"appId":"","bpnCheck":{"bpn":"","enabled":false},"hostname":"","onLoad":"login-required","realm":"","roleCheck":{"enabled":false},"techUser":{"clientId":"","clientSecret":""}}` | oauth configuration | +| oauth | object | `{"appId":"","bpnCheck":{"bpn":"","enabled":false},"hostname":"","onLoad":"login-required","realm":"","roleCheck":{"enabled":false},"techUser":{"clientId":"","clientSecret":""}}` | oauth configuration | | oauth.bpnCheck | object | `{"bpn":"","enabled":false}` | configure here the bpn check for the application | | oauth.bpnCheck.bpn | string | `""` | this bpn needs to be included in the user login information when the check is enabled | | oauth.hostname | string | `""` | url of the identity provider service | diff --git a/deployment/README.md b/deployment/README.md index 3140ebf9d..d80956ce8 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -50,7 +50,7 @@ Fill out the following required fields. - **Project:** project-material-pass - **Source:** Git repository where the application artifacts are stored (https://github.com/eclipse-tractusx/digital-product-pass) - **Revision:** select branch or a tag -- **Path:** The path to the deployment (possible values: deployment/helm/edc-consumer, deployment/helm/edc-provider, charts/digital-product-pass) +- **Path:** The path to the deployment (possible values: deployment/infrastructure/edc-consumer, deployment/infrastructure/edc-provider, charts/digital-product-pass) - **Cluster URL:** https://kubernetes.default.svc - **Namespace:** product-material-pass - **Plugin:** argocd-vault-plugin-helm-args diff --git a/deployment/infrastructure/edc-consumer/README.md b/deployment/infrastructure/edc-consumer/README.md index cb9e3251c..0e376aa91 100644 --- a/deployment/infrastructure/edc-consumer/README.md +++ b/deployment/infrastructure/edc-consumer/README.md @@ -1,28 +1,6 @@ - - # tractusx-connector -![Version: 0.3.3](https://img.shields.io/badge/Version-0.3.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.4.1](https://img.shields.io/badge/AppVersion-0.4.1-informational?style=flat-square) +![Version: 0.3.3](https://img.shields.io/badge/Version-0.3.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.5.0](https://img.shields.io/badge/AppVersion-0.5.0-informational?style=flat-square) A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mock that can be used as edc consumer for the DPP applicatiton. @@ -37,15 +15,53 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | Repository | Name | Version | |------------|------|---------| | https://charts.bitnami.com/bitnami | postgresql(postgresql) | 12.1.6 | -| https://eclipse-tractusx.github.io/charts/dev | tractusx-connector | 0.4.1 | +| https://eclipse-tractusx.github.io/charts/dev | tractusx-connector | 0.5.0 | +| https://eclipse-tractusx.github.io/item-relationship-service | irs-helm | 6.11.0 | ## Values | Key | Type | Default | Description | |-----|------|---------|-------------| +| irs-helm.bpdm.bpnEndpoint | string | `"{{- if .Values.bpdm.url }} {{- tpl (.Values.bpdm.url | default \"\") . }}/api/catena/legal-entities/{partnerId}?idType={idType} {{- end }}"` | | +| irs-helm.bpdm.url | string | `"https://partners-pool.dev.demo.catena-x.net"` | | +| irs-helm.bpn | string | `""` | | +| irs-helm.digitalTwinRegistry.discoveryFinderUrl | string | `"https://semantics.dev.demo.catena-x.net/discoveryfinder/api/v1.0/administration/connectors/discovery/search"` | | +| irs-helm.digitalTwinRegistry.type | string | `"decentral"` | | +| irs-helm.digitalTwinRegistry.url | string | `"https://materialpass.dev.demo.catena-x.net/semantics/registry/api/v3.0"` | | +| irs-helm.edc.catalog.acceptedPolicies[0].leftOperand | string | `"FrameworkAgreement.sustainability"` | | +| irs-helm.edc.catalog.acceptedPolicies[0].operator | string | `"eq"` | | +| irs-helm.edc.catalog.acceptedPolicies[0].rightOperand | string | `"active"` | | +| irs-helm.edc.catalog.acceptedPolicies[1].leftOperand | string | `"Membership"` | | +| irs-helm.edc.catalog.acceptedPolicies[1].operator | string | `"eq"` | | +| irs-helm.edc.catalog.acceptedPolicies[1].rightOperand | string | `"active"` | | +| irs-helm.edc.controlplane.apikey.secret | string | `""` | | +| irs-helm.edc.controlplane.endpoint.data | string | `"https://materialpass.dev.demo.catena-x.net/consumer/management"` | | +| irs-helm.enabled | bool | `true` | | +| irs-helm.ingress.annotations."nginx.ingress.kubernetes.io/backend-protocol" | string | `"HTTP"` | | +| irs-helm.ingress.annotations."nginx.ingress.kubernetes.io/force-ssl-redirect" | string | `"true"` | | +| irs-helm.ingress.annotations."nginx.ingress.kubernetes.io/ssl-passthrough" | string | `"false"` | | +| irs-helm.ingress.annotations.ingressClassName | string | `"nginx"` | | +| irs-helm.ingress.enabled | bool | `true` | | +| irs-helm.ingress.hosts[0].host | string | `"materialpass-irs.dev.demo.catena-x.net"` | | +| irs-helm.ingress.hosts[0].paths[0].path | string | `"/"` | | +| irs-helm.ingress.hosts[0].paths[0].pathType | string | `"Prefix"` | | +| irs-helm.ingress.tls[0].hosts[0] | string | `"materialpass-irs.dev.demo.catena-x.net"` | | +| irs-helm.ingress.tls[0].secretName | string | `"tls-secret"` | | +| irs-helm.irsUrl | string | `"https://materialpass-irs.dev.demo.catena-x.net"` | | +| irs-helm.minio.rootPassword | string | `""` | | +| irs-helm.minio.rootUser | string | `""` | | +| irs-helm.minio.serviceAccount.create | bool | `false` | | +| irs-helm.minioPassword | string | `""` | | +| irs-helm.minioUrl | string | `"http://{{ .Release.Name }}-minio:9000"` | | +| irs-helm.minioUser | string | `""` | | +| irs-helm.oauth2.clientId | string | `""` | | +| irs-helm.oauth2.clientSecret | string | `""` | | +| irs-helm.oauth2.clientTokenUri | string | `"https://centralidp.dev.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token"` | | +| irs-helm.oauth2.jwkSetUri | string | `"https://centralidp.dev.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/certs"` | | +| irs-helm.semanticshub.url | string | `"https://semantics.dev.demo.catena-x.net/hub/api/v1/models"` | | | postgresql.auth.database | string | `"edc"` | | -| postgresql.auth.password | string | `""` | | -| postgresql.auth.username | string | `""` | | +| postgresql.auth.password | string | `""` | | +| postgresql.auth.username | string | `""` | | | postgresql.fullnameOverride | string | `"postgresql"` | | | postgresql.jdbcUrl | string | `"jdbc:postgresql://postgresql:5432/edc"` | | | postgresql.primary.persistence.enabled | bool | `true` | | @@ -89,7 +105,7 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.controlplane.envValueFrom | object | `{}` | | | tractusx-connector.controlplane.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | | tractusx-connector.controlplane.image.repository | string | `"tractusx/edc-controlplane-postgresql-hashicorp-vault"` | Which derivate of the control plane to use. when left empty the deployment will select the correct image automatically | -| tractusx-connector.controlplane.image.tag | string | `"0.4.1"` | Overrides the image tag whose default is the chart appVersion | +| tractusx-connector.controlplane.image.tag | string | `"0.5.0"` | Overrides the image tag whose default is the chart appVersion | | tractusx-connector.controlplane.ingresses[0].annotations | object | `{}` | Additional ingress annotations to add | | tractusx-connector.controlplane.ingresses[0].certManager.clusterIssuer | string | `""` | If preset enables certificate generation via cert-manager cluster-wide issuer | | tractusx-connector.controlplane.ingresses[0].certManager.issuer | string | `""` | If preset enables certificate generation via cert-manager namespace scoped issuer | @@ -149,20 +165,17 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.controlplane.securityContext.runAsUser | int | `10001` | The container's process will run with the specified uid | | tractusx-connector.controlplane.service.annotations | object | `{}` | | | tractusx-connector.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. | +| tractusx-connector.controlplane.ssi.endpoint.audience | string | `"https://materialpass.dev.demo.catena-x.net/consumer"` | | +| tractusx-connector.controlplane.ssi.miw.authorityId | string | `""` | | +| tractusx-connector.controlplane.ssi.miw.url | string | `""` | | +| tractusx-connector.controlplane.ssi.oauth.client.id | string | `""` | | +| tractusx-connector.controlplane.ssi.oauth.client.secretAlias | string | `"dev-client-secret"` | | +| tractusx-connector.controlplane.ssi.oauth.tokenurl | string | `"https://centralidp.dev.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token"` | | | tractusx-connector.controlplane.tolerations | list | `[]` | | | tractusx-connector.controlplane.url.ids | string | `""` | Explicitly declared url for reaching the ids api (e.g. if ingresses not used) | | tractusx-connector.controlplane.volumeMounts | list | `[]` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | | tractusx-connector.controlplane.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | tractusx-connector.customLabels | object | `{}` | | -| tractusx-connector.daps.clientId | string | `""` | | -| tractusx-connector.daps.connectors[0].attributes.referringConnector | string | `"https://materialpass.dev.demo.catena-x.net/consumer/"` | | -| tractusx-connector.daps.connectors[0].certificate | string | `""` | | -| tractusx-connector.daps.connectors[0].id | string | `""` | | -| tractusx-connector.daps.connectors[0].name | string | `"edcconector"` | | -| tractusx-connector.daps.fullnameOverride | string | `"daps"` | | -| tractusx-connector.daps.paths.jwks | string | `"/.well-known/jwks.json"` | | -| tractusx-connector.daps.paths.token | string | `"/token"` | | -| tractusx-connector.daps.url | string | `"https://daps1.int.demo.catena-x.net"` | | | tractusx-connector.dataplane.affinity | object | `{}` | | | tractusx-connector.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/) | | tractusx-connector.dataplane.autoscaling.maxReplicas | int | `100` | Maximum replicas if resource consumption exceeds resource threshholds | @@ -195,7 +208,7 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.dataplane.envValueFrom | object | `{}` | | | tractusx-connector.dataplane.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | | tractusx-connector.dataplane.image.repository | string | `"tractusx/edc-dataplane-hashicorp-vault"` | Which derivate of the data plane to use. when left empty the deployment will select the correct image automatically | -| tractusx-connector.dataplane.image.tag | string | `"0.4.1"` | Overrides the image tag whose default is the chart appVersion | +| tractusx-connector.dataplane.image.tag | string | `"0.5.0"` | Overrides the image tag whose default is the chart appVersion | | tractusx-connector.dataplane.ingresses[0].annotations | object | `{}` | Additional ingress annotations to add | | tractusx-connector.dataplane.ingresses[0].certManager.clusterIssuer | string | `""` | If preset enables certificate generation via cert-manager cluster-wide issuer | | tractusx-connector.dataplane.ingresses[0].certManager.issuer | string | `""` | If preset enables certificate generation via cert-manager namespace scoped issuer | @@ -245,12 +258,16 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.dataplane.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | tractusx-connector.enabled | bool | `true` | | | tractusx-connector.fullnameOverride | string | `"dpp-edc-consumer"` | | -| tractusx-connector.idsdaps.connectors[0].certificate | string | `""` | | | tractusx-connector.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) | | tractusx-connector.install.daps | bool | `false` | | | tractusx-connector.install.postgresql | bool | `false` | | | tractusx-connector.install.vault | bool | `false` | | | tractusx-connector.nameOverride | string | `""` | | +| tractusx-connector.networkPolicy.controlplane | object | `{"from":[{"namespaceSelector":{}}]}` | Configuration of the controlplane component | +| tractusx-connector.networkPolicy.controlplane.from | list | `[{"namespaceSelector":{}}]` | Specify from rule network policy for cp (defaults to all namespaces) | +| tractusx-connector.networkPolicy.dataplane | object | `{"from":[{"namespaceSelector":{}}]}` | Configuration of the dataplane component | +| tractusx-connector.networkPolicy.dataplane.from | list | `[{"namespaceSelector":{}}]` | Specify from rule network policy for dp (defaults to all namespaces) | +| tractusx-connector.networkPolicy.enabled | bool | `false` | If `true` network policy will be created to restrict access to control- and dataplane | | tractusx-connector.participant.id | string | `""` | | | tractusx-connector.postgresql.auth.database | string | `"edc"` | | | tractusx-connector.postgresql.auth.password | string | `""` | | @@ -263,6 +280,8 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.serviceAccount.create | bool | `true` | | | tractusx-connector.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) | | tractusx-connector.serviceAccount.name | string | `""` | | +| tractusx-connector.tests | object | `{"hookDeletePolicy":"before-hook-creation,hook-succeeded"}` | Configurations for Helm tests | +| tractusx-connector.tests.hookDeletePolicy | string | `"before-hook-creation,hook-succeeded"` | Configure the hook-delete-policy for Helm tests | | tractusx-connector.vault.fullnameOverride | string | `"vault"` | | | tractusx-connector.vault.hashicorp.healthCheck.enabled | bool | `true` | | | tractusx-connector.vault.hashicorp.healthCheck.standbyOk | bool | `true` | | @@ -272,8 +291,6 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.vault.hashicorp.token | string | `""` | | | tractusx-connector.vault.hashicorp.url | string | `""` | | | tractusx-connector.vault.injector.enabled | bool | `false` | | -| tractusx-connector.vault.secretNames.dapsPrivateKey | string | `"daps-key-dev"` | | -| tractusx-connector.vault.secretNames.dapsPublicKey | string | `"daps-crt-dev"` | | | tractusx-connector.vault.secretNames.transferProxyTokenEncryptionAesKey | string | `"edc-encryption-key"` | | | tractusx-connector.vault.secretNames.transferProxyTokenSignerPrivateKey | string | `"daps-key-dev"` | | | tractusx-connector.vault.secretNames.transferProxyTokenSignerPublicKey | string | `"daps-crt-dev"` | | diff --git a/deployment/infrastructure/edc-provider/README.md b/deployment/infrastructure/edc-provider/README.md index c4874cf46..e57db6b02 100644 --- a/deployment/infrastructure/edc-provider/README.md +++ b/deployment/infrastructure/edc-provider/README.md @@ -1,28 +1,6 @@ - - # tractusx-connector -![Version: 0.3.3](https://img.shields.io/badge/Version-0.3.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.4.1](https://img.shields.io/badge/AppVersion-0.4.1-informational?style=flat-square) +![Version: 0.3.3](https://img.shields.io/badge/Version-0.3.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.5.0](https://img.shields.io/badge/AppVersion-0.5.0-informational?style=flat-square) A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mock that can be used as edc provider for the DPP applicatiton. @@ -37,7 +15,7 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | Repository | Name | Version | |------------|------|---------| | https://charts.bitnami.com/bitnami | postgresql(postgresql) | 12.1.6 | -| https://eclipse-tractusx.github.io/charts/dev | tractusx-connector | 0.4.1 | +| https://eclipse-tractusx.github.io/charts/dev | tractusx-connector | 0.5.0 | ## Values @@ -89,7 +67,7 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.controlplane.envValueFrom | object | `{}` | | | tractusx-connector.controlplane.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | | tractusx-connector.controlplane.image.repository | string | `"tractusx/edc-controlplane-postgresql-hashicorp-vault"` | Which derivate of the control plane to use. when left empty the deployment will select the correct image automatically | -| tractusx-connector.controlplane.image.tag | string | `"0.4.1"` | Overrides the image tag whose default is the chart appVersion | +| tractusx-connector.controlplane.image.tag | string | `"0.5.0"` | Overrides the image tag whose default is the chart appVersion | | tractusx-connector.controlplane.ingresses[0].annotations | object | `{}` | Additional ingress annotations to add | | tractusx-connector.controlplane.ingresses[0].certManager.clusterIssuer | string | `""` | If preset enables certificate generation via cert-manager cluster-wide issuer | | tractusx-connector.controlplane.ingresses[0].certManager.issuer | string | `""` | If preset enables certificate generation via cert-manager namespace scoped issuer | @@ -149,20 +127,17 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.controlplane.securityContext.runAsUser | int | `10001` | The container's process will run with the specified uid | | tractusx-connector.controlplane.service.annotations | object | `{}` | | | tractusx-connector.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. | +| tractusx-connector.controlplane.ssi.endpoint.audience | string | `"https://materialpass.dev.demo.catena-x.net/consumer"` | | +| tractusx-connector.controlplane.ssi.miw.authorityId | string | `""` | | +| tractusx-connector.controlplane.ssi.miw.url | string | `""` | | +| tractusx-connector.controlplane.ssi.oauth.client.id | string | `""` | | +| tractusx-connector.controlplane.ssi.oauth.client.secretAlias | string | `"dev-client-secret"` | | +| tractusx-connector.controlplane.ssi.oauth.tokenurl | string | `"https://centralidp.dev.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token"` | | | tractusx-connector.controlplane.tolerations | list | `[]` | | | tractusx-connector.controlplane.url.ids | string | `""` | Explicitly declared url for reaching the ids api (e.g. if ingresses not used) | | tractusx-connector.controlplane.volumeMounts | list | `[]` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | | tractusx-connector.controlplane.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | tractusx-connector.customLabels | object | `{}` | | -| tractusx-connector.daps.clientId | string | `""` | | -| tractusx-connector.daps.connectors[0].attributes.referringConnector | string | `"https://materialpass.dev.demo.catena-x.net/consumer/"` | | -| tractusx-connector.daps.connectors[0].certificate | string | `""` | | -| tractusx-connector.daps.connectors[0].id | string | `""` | | -| tractusx-connector.daps.connectors[0].name | string | `"edcconector"` | | -| tractusx-connector.daps.fullnameOverride | string | `"daps"` | | -| tractusx-connector.daps.paths.jwks | string | `"/.well-known/jwks.json"` | | -| tractusx-connector.daps.paths.token | string | `"/token"` | | -| tractusx-connector.daps.url | string | `"https://daps1.int.demo.catena-x.net"` | | | tractusx-connector.dataplane.affinity | object | `{}` | | | tractusx-connector.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/) | | tractusx-connector.dataplane.autoscaling.maxReplicas | int | `100` | Maximum replicas if resource consumption exceeds resource threshholds | @@ -195,7 +170,7 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.dataplane.envValueFrom | object | `{}` | | | tractusx-connector.dataplane.image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | | tractusx-connector.dataplane.image.repository | string | `"tractusx/edc-dataplane-hashicorp-vault"` | Which derivate of the data plane to use. when left empty the deployment will select the correct image automatically | -| tractusx-connector.dataplane.image.tag | string | `"0.4.1"` | Overrides the image tag whose default is the chart appVersion | +| tractusx-connector.dataplane.image.tag | string | `"0.5.0"` | Overrides the image tag whose default is the chart appVersion | | tractusx-connector.dataplane.ingresses[0].annotations | object | `{}` | Additional ingress annotations to add | | tractusx-connector.dataplane.ingresses[0].certManager.clusterIssuer | string | `""` | If preset enables certificate generation via cert-manager cluster-wide issuer | | tractusx-connector.dataplane.ingresses[0].certManager.issuer | string | `""` | If preset enables certificate generation via cert-manager namespace scoped issuer | @@ -245,7 +220,6 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.dataplane.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | tractusx-connector.enabled | bool | `true` | | | tractusx-connector.fullnameOverride | string | `"dpp-edc-provider"` | | -| tractusx-connector.idsdaps.connectors[0].certificate | string | `""` | | | tractusx-connector.imagePullSecrets | list | `[]` | | | tractusx-connector.install.daps | bool | `false` | | | tractusx-connector.install.postgresql | bool | `false` | | @@ -272,8 +246,6 @@ A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mo | tractusx-connector.vault.hashicorp.token | string | `""` | | | tractusx-connector.vault.hashicorp.url | string | `""` | | | tractusx-connector.vault.injector.enabled | bool | `false` | | -| tractusx-connector.vault.secretNames.dapsPrivateKey | string | `"daps-key-dev"` | | -| tractusx-connector.vault.secretNames.dapsPublicKey | string | `"daps-crt-dev"` | | | tractusx-connector.vault.secretNames.transferProxyTokenEncryptionAesKey | string | `"edc-encryption-key"` | | | tractusx-connector.vault.secretNames.transferProxyTokenSignerPrivateKey | string | `"daps-key-dev"` | | | tractusx-connector.vault.secretNames.transferProxyTokenSignerPublicKey | string | `"daps-crt-dev"` | | diff --git a/deployment/infrastructure/edc-provider/data-service/README.md b/deployment/infrastructure/edc-provider/data-service/README.md index 608495219..62bf08db2 100644 --- a/deployment/infrastructure/edc-provider/data-service/README.md +++ b/deployment/infrastructure/edc-provider/data-service/README.md @@ -1,25 +1,3 @@ - - # data-service ![Version: 0.0.1](https://img.shields.io/badge/Version-0.0.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.0.1](https://img.shields.io/badge/AppVersion-0.0.1-informational?style=flat-square) @@ -30,8 +8,10 @@ The Eclipse Dataspace Connector requires the Backend Application to transfer dat | Key | Type | Default | Description | |-----|------|---------|-------------| +| affinity | object | `{}` | | | container.port | int | `80` | | | fullnameOverride | string | `"data-service"` | Overrides the releases full name | +| image.command | string | `""` | | | image.pullPolicy | string | `"IfNotPresent"` | [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use | | image.repository | string | `"ghcr.io/catenax-ng/catenax-at-home/provider-backend-service"` | Which container image to use | | image.tag | string | `"0.0.1"` | Overrides the image tag whose default is the chart appVersion | @@ -47,10 +27,25 @@ The Eclipse Dataspace Connector requires the Backend Application to transfer dat | ingress.hosts[0].paths[0].pathType | string | `"Prefix"` | | | ingress.tls[0].hosts[0] | string | `"materialpass.int.demo.catena-x.net"` | | | ingress.tls[0].secretName | string | `"tls-secret"` | | +| livenessProbe | object | `{}` | | | nameOverride | string | `""` | Overrides the charts name | +| nodeSelector | object | `{}` | | +| podAnnotations | object | `{}` | additional annotations for the pod | +| podSecurityContext.fsGroup | int | `10001` | The owner for volumes and any files created within volumes will belong to this guid | +| podSecurityContext.runAsGroup | int | `10001` | Processes within a pod will belong to this guid | +| podSecurityContext.runAsUser | int | `10001` | Runs all processes within a pod with a special uid | +| podSecurityContext.seccompProfile.type | string | `"RuntimeDefault"` | Restrict a Container's Syscalls with seccomp | +| readinessProbe | object | `{}` | | | replicaCount | int | `1` | | +| 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 | +| securityContext.capabilities.add | list | `[]` | Specifies which capabilities to add to issue specialized syscalls | +| securityContext.capabilities.drop | list | `["ALL"]` | Specifies which capabilities to drop to reduce syscall attack surface | +| securityContext.readOnlyRootFilesystem | bool | `true` | Whether the root filesystem is mounted in read-only mode | +| securityContext.runAsNonRoot | bool | `true` | Requires the container to run without root privileges | +| securityContext.runAsUser | int | `10001` | The container's process will run with the specified uid | | service.port | int | `8080` | [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service) to expose the running application on a set of Pods as a network service. | | 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. | +| tolerations | list | `[]` | | ---------------------------------------------- Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) diff --git a/deployment/infrastructure/registry/README.md b/deployment/infrastructure/registry/README.md new file mode 100644 index 000000000..bce427388 --- /dev/null +++ b/deployment/infrastructure/registry/README.md @@ -0,0 +1,44 @@ +# registry + +![Version: 0.3.23](https://img.shields.io/badge/Version-0.3.23-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) + +Tractus-X Digital Twin Registry Helm Chart + +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| https://eclipse-tractusx.github.io/sldt-digital-twin-registry | provider-dtr(registry) | 0.3.23 | + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| provider-dtr.postgresql.auth.database | string | `"default-database"` | | +| provider-dtr.postgresql.auth.password | string | `""` | | +| provider-dtr.postgresql.auth.username | string | `""` | | +| provider-dtr.registry.authentication | bool | `false` | | +| provider-dtr.registry.dataSource.driverClassName | string | `"org.postgresql.Driver"` | | +| provider-dtr.registry.dataSource.password | string | `""` | | +| provider-dtr.registry.dataSource.sqlInitPlatform | string | `"pg"` | | +| provider-dtr.registry.dataSource.url | string | `"jdbc:postgresql://registry:5432"` | | +| provider-dtr.registry.dataSource.user | string | `""` | | +| provider-dtr.registry.enableKeycloak | bool | `false` | | +| provider-dtr.registry.enablePostgres | bool | `true` | | +| provider-dtr.registry.host | string | `"materialpass.int.demo.catena-x.net"` | | +| provider-dtr.registry.idpClientId | string | `"Cl13-CX-Battery"` | | +| provider-dtr.registry.idpIssuerUri | string | `"https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central"` | | +| provider-dtr.registry.ingress.annotations."cert-manager.io/cluster-issuer" | string | `"selfsigned-cluster-issuer"` | | +| provider-dtr.registry.ingress.annotations."nginx.ingress.kubernetes.io/cors-allow-credentials" | string | `"true"` | | +| provider-dtr.registry.ingress.annotations."nginx.ingress.kubernetes.io/enable-cors" | string | `"true"` | | +| provider-dtr.registry.ingress.annotations."nginx.ingress.kubernetes.io/rewrite-target" | string | `"/$2"` | | +| provider-dtr.registry.ingress.annotations."nginx.ingress.kubernetes.io/use-regex" | string | `"true"` | | +| provider-dtr.registry.ingress.annotations."nginx.ingress.kubernetes.io/x-forwarded-prefix" | string | `"/semantics/registry"` | | +| provider-dtr.registry.ingress.className | string | `"nginx"` | | +| provider-dtr.registry.ingress.enabled | bool | `true` | | +| provider-dtr.registry.ingress.tls | bool | `true` | | +| provider-dtr.registry.ingress.urlPrefix | string | `"/semantics/registry"` | | +| provider-dtr.registry.tenantId | string | `"default-tenant"` | | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) diff --git a/deployment/local/storage/pv-data.yaml b/deployment/local/storage/pv-data.yaml new file mode 100644 index 000000000..f1194a47f --- /dev/null +++ b/deployment/local/storage/pv-data.yaml @@ -0,0 +1,39 @@ +################################################################################# +# Catena-X - Digital Product Passport Application +# +# Copyright (c) 2022, 2023 BASF SE, BMW AG, Henkel AG & Co. KGaA +# Copyright (c) 2023, 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 govern in permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# + +apiVersion: v1 +kind: PersistentVolume +metadata: + name: pv-data + namespace: default +spec: + capacity: + storage: 5Gi + accessModes: + - ReadWriteOnce + storageClassName: standard + claimRef: + name: pvc-data + namespace: default + hostPath: + path: "/mnt" diff --git a/deployment/local/storage/pvc-data.yaml b/deployment/local/storage/pvc-data.yaml new file mode 100644 index 000000000..32cd20643 --- /dev/null +++ b/deployment/local/storage/pvc-data.yaml @@ -0,0 +1,36 @@ +################################################################################# +# Catena-X - Product Passport Consumer Application +# +# Copyright (c) 2022, 2023 BASF SE, BMW AG, Henkel AG & Co. KGaA +# +# 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 govern in permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# + +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: pvc-data + labels: + {{- include "chart.labels" . | nindent 4 }} + namespace: {{ .Values.namespace }} +spec: + storageClassName: standard + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/docs/RELEASE.md b/docs/RELEASE.md index c961b1a62..63271850f 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -37,7 +37,7 @@ The changelog must also be updated from [CHANGELOG.md](../CHANGELOG.md) file, sh Helm chart released: - [digital-product-pass](../charts/digital-product-pass/Chart.yaml) -Aditional Helm charts of below components can be found in *deployment/helm* folder. +Aditional Helm charts of below components can be found in *deployment/infrastructure* folder. - [edc-consumer](../deployment/infrastructure/edc-consumer/Chart.yaml) - [edc-provider](../deployment/infrastructure/edc-provider/Chart.yaml) diff --git a/docs/RELEASE_USER.md b/docs/RELEASE_USER.md index fdefcc0b7..e2c5d0f19 100644 --- a/docs/RELEASE_USER.md +++ b/docs/RELEASE_USER.md @@ -1,5 +1,5 @@ - -

  Digital Product Pass Backend

- - -

Version: v2.0.1

- -
- -# Table of contents - -- [Table of contents](#table-of-contents) -- [What is this backend app responsible for?](#what-is-this-backend-app-responsible-for) -- [Services Available](#services-available) - - [Authentication Services](#authentication-services) -- [Open API specification](#open-api-specification) - - [Digital Product Pass APIs](#digital-product-pass-apis) - - [Parameters](#parameters) - - [/api/contract/create](#apicontractcreate) - - [/api/contract/search](#apicontractsearch) - - [/api/contract/agree](#apicontractagree) - - [/api/contract/decline](#apicontractdecline) - - [/api/contract/cancel](#apicontractcancel) - - [/api/contract/status/{processId}](#apicontractstatusprocessid) - - [/api/data](#apidata) -- [Detailed API Services](#detailed-api-services) - - [/api/data](#apidata-1) - - [Request body](#request-body) - - [Contract API](#contract-api) - - [/api/contract/create](#apicontractcreate-1) - - [Request body](#request-body-1) - - [/api/contract/search](#apicontractsearch-1) - - [Request body](#request-body-2) - - [/api/contract/agree](#apicontractagree-1) - - [Request body](#request-body-3) - - [/api/contract/decline](#apicontractdecline-1) - - [Request body](#request-body-4) - - [/api/contract/cancel](#apicontractcancel-1) - - [Request body](#request-body-5) - - [/api/contract/status/](#apicontractstatus) - - [IRS API](#irs-api) - - [Request parameters](#request-parameters) - - [Public API](#public-api) - - [Response](#response) -- [OSS License Check](#oss-license-check) -- [Swagger Docs](#swagger-docs) -- [Run the application](#run-the-application) - - [Modify the configurations in the deployment files](#modify-the-configurations-in-the-deployment-files) -- [TL;DR](#tldr) - - [Install](#install) -- [License](#license) - - -# What is this backend app responsible for? - -This backend includes the services and *logics* to manage the *passports* of the `frontend app`. - -# Services Available - -## Authentication Services -All Authenticated APIs required a `AccessToken` JWT Token generated by the login in the frontend or in the Catena-X Keycloak instance. - -```yaml -{ - headers: { - Authorization: "Bearer <>" - } -} -``` - -For login and log out! -```bash ------- -/auth/check #With this api you can check you authentication status. ------- -/auth/token #Request token from the keycloak instance ------- -/auth/userInfo #With this api you can get your user information. ------- -``` - - -# Open API specification - -The Digital Product Pass Open API specification is available at the swagger hub from Tractus-X: - -[https://app.swaggerhub.com/apis/eclipse-tractusx-bot/digital-product-pass](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/digital-product-pass) - -## Digital Product Pass APIs -The APIs below are the ones contain in the `Digital Product Pass Backend` reference implementation. Which can be reused for retrieving aspects from the Catena-X Network. - - | API | Method | Description | Parameters | - | ------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **/api/contract/create** | POST | The `/api/contract/create` api is responsible for calling the `BPN Discovery` service searching for the BPN of a `manufacturerPartId` and validating if there is any `Decentral Digital Twin Registry` available for the BPN number found in the `EDC Discovery` service. | [Go to Params](#apicontractcreate) - | **/api/contract/search** | POST | At the **/api/contract/search** API the user can search for a serialized Id and get its contract. The `Backend` will search for the Digital Twin and will return the contract for the first one that is found. A `sign token` (a sha256 hash) is return also and acts like a "session token" allowing just the user that created the process to sign or decline the contract. |[Go to Params](#apicontractsearch) | - | **/api/contract/agree** | POST | Once the user has the contract he can call the `/api/contract/agree` API to start the negotiation process and the transfer of the passport. This means that the user accepted the policy and the frame-contracts contained in the contract policy. | [Go to Params](#apicontractagree) | - | **/api/contract/decline** | POST | The other option rather than `/agree` is the `/decline` API, that basically blocks the process and makes it invalid. This means that the user declined the specific contract that was found for this process. | [Go to Params](#apicontractdecline) - | **/api/contract/cancel** | POST | The user can use `/cancel` to interrupt the negotiation process once it is signed by mistake if is the case. It will be only valid until the negotiation is made. | [Go to Params](#apicontractcancel) - | **/api/contract/status/``** | GET | After the user signs the contract he can use the `/status` API to get the process status and see when it is ready to retrieve the passport using the API `/data`.. | [Go to Params](#apicontractstatusprocessid) - | **/api/data** | POST | The API `/data` will decrypt the passport file that is encrypted using the session token "sign token", and will delete the file so that it is returned just once to the user and can not be accessed anymore. So a new passport will be always need to be requested.. | [Go to Params](#apidata) | - - -### Parameters - -#### /api/contract/create - -| Parameter | Value Name | Mandatory or Optional Value | -|-----------|------------------|-----------------------------| -| id | searchIdValue | [REQUIRED] | -| type | searchIdTypeName | manufacturerPartId | - - -#### /api/contract/search - -| Parameter | Value Name | Mandatory or Optional Value | -|-----------|-----------------------|-----------------------------| -| id | serializedIdValue | [REQUIRED] | -| idType | serializedIdTypeName | partInstanceId | -| processId | processIdentification | [REQUIRED] | - - - #### /api/contract/agree - -| Parameter | Value Name | Mandatory or Optional Value | -|------------|------------------------|---------------------------------------------------------------------------------| -| processId | processIdentification | [REQUIRED] | -| contractId | contractIdentification | [REQUIRED] | -| policyId | policyIdentification | If no policyId is specified then the first policy of the contract will be taken | -| token | searchSessionToken | [REQUIRED] | - -#### /api/contract/decline - -| Parameter | Value Name | Mandatory or Optional Value | -|------------|------------------------|-----------------------------| -| processId | processIdentification | [REQUIRED] | -| token | searchSessionToken | [REQUIRED] | - - -#### /api/contract/cancel - -| Parameter | Value Name | Mandatory or Optional Value | -|------------|------------------------|-----------------------------| -| processId | processIdentification | [REQUIRED] | -| contractId | contractIdentification | [REQUIRED] | -| token | searchSessionToken | [REQUIRED] | - - -#### /api/contract/status/{processId} -| Parameter | Value Name | Mandatory or Optional Value | -|-----------|-----------------------|-----------------------------| -| processId | processIdentification | [REQUIRED] | - - -#### /api/data - -| Parameter | Value Name | Mandatory or Optional Value | -|------------|------------------------|-----------------------------| -| processId | processIdentification | [REQUIRED] | -| contractId | contractIdentification | [REQUIRED] | -| token | searchSessionToken | [REQUIRED] | - - -# Detailed API Services -> **_NOTE:_** You must be authenticated with the keycloak instance to access this APIs - - -### /api/data -Get data from a Catena-X Provider by using its processId, contractId and a token, this retrieves product passport after a successful negotiation. - -```bash -/api/data #Returns the data negotiated and transferred -``` -###### Request body -```json -{ - "processId": "string", - "contractId": "string", - "token": "string", - "policyId": "optional:string" -} -``` - -### Contract API - -#### /api/contract/create - -```bash -/api/contract/create #Creates a process and checks for the viability of the data retrieval -``` -###### Request body -```json -{ - "id": "string", - "type": "string" -} -``` - -#### /api/contract/search - -```bash -/api/contract/search #Searches for a passport with the following id -``` -###### Request body -```json -{ - "processId": "string", - "id": "string", - "children": true // Optional Boolean - "idType": "optional:string", - "dtIndex": 0, //Optional Integer - "idShort": "optional:string" -} -``` - -#### /api/contract/agree - -```bash -/api/contract/agree #Sign contract retrieved from provider and start negotiation -``` -###### Request body -```json -{ - "processId": "string", - "contractId": "string", - "token": "string", - "policyId": "optional:string" -} -``` - -#### /api/contract/decline - -```bash -/api/contract/decline #Decline passport negotiation -``` -###### Request body -```json -{ - "processId": "string", - "token": "string" -} -``` -#### /api/contract/cancel - -```bash -/api/contract/cancel #Cancel the negotiation -``` -###### Request body -```json -{ - "processId": "string", - "contractId": "string", - "token": "string", - "policyId": "optional:string" -} -``` - -#### /api/contract/status/ - -```bash -/api/contract/status/ #Get status from process -``` - -## IRS API - -```bash -/api/irs// #Endpoint called by the IRS to set status completed -``` -###### Request parameters -``` -- Id -- State -``` -```bash -/api/irs//tree #Api called by the frontend to obtain the tree of components -``` -```bash -/api/irs//state #Api called by the frontend to check if the process is finished -``` -```bash -/api/irs//components #Api called by the frontend to obtain the list of components of the tree -``` - -## Public API - -Public APIs don't require authentication -```bash -/health #Get the health status of the server -``` -###### Response -```json -{ - "message": "RUNNING", - "status": 200, - "data": "24/11/2022 17:48:18.487" -} -``` - -```bash -/endpoint/ #Receives the EDR from the EDC Consumer and get the passport json -``` - -```bash -/endpoint// #Receives the EDR for the EDC Consumer and queries for the dDTR -``` - - - -# OSS License Check - -The third party library dependecies, utilized in this app have to be approved from The Eclipse Foundation. - -The [Dash Licence Tool](https://github.com/eclipse/dash-licenses) is used to scan the dependencies - -[OSS License Checks with Dash & Compliance with Apache 2.0](https://confluence.catena-x.net/pages/viewpage.action?pageId=54989501) - -At the time of writing this manual, the dependencies have status approved and therefore no need to generate IP Team Review request further. - -[Maven plugin](https://github.com/eclipse/dash-licenses/blob/master/README.md#maven-plugin-options) used to check OSS license - -How to run: -```bash -mvn org.eclipse.dash:license-tool-plugin:license-check -Ddash.summary=DEPENDENCIES -``` - - -# Swagger Docs - -Swagger documentation is now automatically available at the following path: - -```https:///swagger-ui/index.html``` - -![img.png](docs/media/img2.png) - -For authorization, you will need to add a JWT Access token from the Catena-X IAM: - -![img3.png](docs/media/img3.png) - -# Run the application - -Use maven to run the spring boot application: -```bash -mvn spring-boot:run -``` - -If you want to run the application in a different way checkout the [frequently asked questions](#frequently-asked-questions) section below. - -## Modify the configurations in the deployment files - -You can use the default configuration to start the application: -```charts/digital-product-pass/values.yaml``` - -However if you need to change it just create a new environment with this naming convention: ```values-env`.yaml``` where ```env``` is the name of your environment. You can use as an example the following configuration file: ```charts/digital-product-pass/values-int.yaml```. - -The configuration for the consumer backend application is a yaml file that is configured in the following tag: ```backend.application```. Before the application starts all the configuration parameters must be specified, since they are required for initialization and will be checked at the test fase. - -Once you configured the application use the follow the [TL;DR](#tldr) below to ```build the image and start the application``` using helm charts. - -# TL;DR - -## Install -Find more documentation on how to install the backend in the [INSTALL.md](../../INSTALL.md) file. - -# License -[Apache-2.0](https://raw.githubusercontent.com/catenax-ng/product-battery-passport-consumer-app/main/LICENSE) - diff --git a/dpp-backend/digitalproductpass/readme.md b/dpp-backend/digitalproductpass/readme.md deleted file mode 100644 index 027fbf44f..000000000 --- a/dpp-backend/digitalproductpass/readme.md +++ /dev/null @@ -1,386 +0,0 @@ - - -

  Digital Product Pass Backend

- - -

Version: v2.0.1

- -
- -# Table of contents - -- [Table of contents](#table-of-contents) -- [What is this backend app responsible for?](#what-is-this-backend-app-responsible-for) -- [Services Available](#services-available) - - [Authentication Services](#authentication-services) -- [Open API specification](#open-api-specification) - - [Digital Product Pass APIs](#digital-product-pass-apis) - - [Parameters](#parameters) - - [/api/contract/create](#apicontractcreate) - - [/api/contract/search](#apicontractsearch) - - [/api/contract/agree](#apicontractagree) - - [/api/contract/decline](#apicontractdecline) - - [/api/contract/cancel](#apicontractcancel) - - [/api/contract/status/{processId}](#apicontractstatusprocessid) - - [/api/data](#apidata) -- [Detailed API Services](#detailed-api-services) - - [/api/data](#apidata-1) - - [Request body](#request-body) - - [Contract API](#contract-api) - - [/api/contract/create](#apicontractcreate-1) - - [Request body](#request-body-1) - - [/api/contract/search](#apicontractsearch-1) - - [Request body](#request-body-2) - - [/api/contract/agree](#apicontractagree-1) - - [Request body](#request-body-3) - - [/api/contract/decline](#apicontractdecline-1) - - [Request body](#request-body-4) - - [/api/contract/cancel](#apicontractcancel-1) - - [Request body](#request-body-5) - - [/api/contract/status/](#apicontractstatus) - - [IRS API](#irs-api) - - [Request parameters](#request-parameters) - - [Public API](#public-api) - - [Response](#response) -- [OSS License Check](#oss-license-check) -- [Swagger Docs](#swagger-docs) -- [Run the application](#run-the-application) - - [Modify the configurations in the deployment files](#modify-the-configurations-in-the-deployment-files) -- [TL;DR](#tldr) - - [Install](#install) -- [License](#license) - - -# What is this backend app responsible for? - -This backend includes the services and *logics* to manage the *passports* of the `frontend app`. - -# Services Available - -## Authentication Services -All Authenticated APIs required a `AccessToken` JWT Token generated by the login in the frontend or in the Catena-X Keycloak instance. - -```yaml -{ - headers: { - Authorization: "Bearer <>" - } -} -``` - -For login and log out! -```bash ------- -/auth/check #With this api you can check you authentication status. ------- -/auth/token #Request token from the keycloak instance ------- -/auth/userInfo #With this api you can get your user information. ------- -``` - - -# Open API specification - -The Digital Product Pass Open API specification is available at the swagger hub from Tractus-X: - -[https://app.swaggerhub.com/apis/eclipse-tractusx-bot/digital-product-pass](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/digital-product-pass) - -## Digital Product Pass APIs -The APIs below are the ones contain in the `Digital Product Pass Backend` reference implementation. Which can be reused for retrieving aspects from the Catena-X Network. - - | API | Method | Description | Parameters | - | ------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **/api/contract/create** | POST | The `/api/contract/create` api is responsible for calling the `BPN Discovery` service searching for the BPN of a `manufacturerPartId` and validating if there is any `Decentral Digital Twin Registry` available for the BPN number found in the `EDC Discovery` service. | [Go to Params](#apicontractcreate) - | **/api/contract/search** | POST | At the **/api/contract/search** API the user can search for a serialized Id and get its contract. The `Backend` will search for the Digital Twin and will return the contract for the first one that is found. A `sign token` (a sha256 hash) is return also and acts like a "session token" allowing just the user that created the process to sign or decline the contract. |[Go to Params](#apicontractsearch) | - | **/api/contract/agree** | POST | Once the user has the contract he can call the `/api/contract/agree` API to start the negotiation process and the transfer of the passport. This means that the user accepted the policy and the frame-contracts contained in the contract policy. | [Go to Params](#apicontractagree) | - | **/api/contract/decline** | POST | The other option rather than `/agree` is the `/decline` API, that basically blocks the process and makes it invalid. This means that the user declined the specific contract that was found for this process. | [Go to Params](#apicontractdecline) - | **/api/contract/cancel** | POST | The user can use `/cancel` to interrupt the negotiation process once it is signed by mistake if is the case. It will be only valid until the negotiation is made. | [Go to Params](#apicontractcancel) - | **/api/contract/status/``** | GET | After the user signs the contract he can use the `/status` API to get the process status and see when it is ready to retrieve the passport using the API `/data`.. | [Go to Params](#apicontractstatusprocessid) - | **/api/data** | POST | The API `/data` will decrypt the passport file that is encrypted using the session token "sign token", and will delete the file so that it is returned just once to the user and can not be accessed anymore. So a new passport will be always need to be requested.. | [Go to Params](#apidata) | - - -### Parameters - -#### /api/contract/create - -| Parameter | Value Name | Mandatory or Optional Value | -|-----------|------------------|-----------------------------| -| id | searchIdValue | [REQUIRED] | -| type | searchIdTypeName | manufacturerPartId | - - -#### /api/contract/search - -| Parameter | Value Name | Mandatory or Optional Value | -|-----------|-----------------------|-----------------------------| -| id | serializedIdValue | [REQUIRED] | -| idType | serializedIdTypeName | partInstanceId | -| processId | processIdentification | [REQUIRED] | - - - #### /api/contract/agree - -| Parameter | Value Name | Mandatory or Optional Value | -|------------|------------------------|---------------------------------------------------------------------------------| -| processId | processIdentification | [REQUIRED] | -| contractId | contractIdentification | [REQUIRED] | -| policyId | policyIdentification | If no policyId is specified then the first policy of the contract will be taken | -| token | searchSessionToken | [REQUIRED] | - -#### /api/contract/decline - -| Parameter | Value Name | Mandatory or Optional Value | -|------------|------------------------|-----------------------------| -| processId | processIdentification | [REQUIRED] | -| token | searchSessionToken | [REQUIRED] | - - -#### /api/contract/cancel - -| Parameter | Value Name | Mandatory or Optional Value | -|------------|------------------------|-----------------------------| -| processId | processIdentification | [REQUIRED] | -| contractId | contractIdentification | [REQUIRED] | -| token | searchSessionToken | [REQUIRED] | - - -#### /api/contract/status/{processId} -| Parameter | Value Name | Mandatory or Optional Value | -|-----------|-----------------------|-----------------------------| -| processId | processIdentification | [REQUIRED] | - - -#### /api/data - -| Parameter | Value Name | Mandatory or Optional Value | -|------------|------------------------|-----------------------------| -| processId | processIdentification | [REQUIRED] | -| contractId | contractIdentification | [REQUIRED] | -| token | searchSessionToken | [REQUIRED] | - - -# Detailed API Services -> **_NOTE:_** You must be authenticated with the keycloak instance to access this APIs - - -### /api/data -Get data from a Catena-X Provider by using its processId, contractId and a token, this retrieves product passport after a successful negotiation. - -```bash -/api/data #Returns the data negotiated and transferred -``` -###### Request body -```json -{ - "processId": "string", - "contractId": "string", - "token": "string", - "policyId": "optional:string" -} -``` - -### Contract API - -#### /api/contract/create - -```bash -/api/contract/create #Creates a process and checks for the viability of the data retrieval -``` -###### Request body -```json -{ - "id": "string", - "type": "string" -} -``` - -#### /api/contract/search - -```bash -/api/contract/search #Searches for a passport with the following id -``` -###### Request body -```json -{ - "processId": "string", - "id": "string", - "children": true // Optional Boolean - "idType": "optional:string", - "dtIndex": 0, //Optional Integer - "idShort": "optional:string" -} -``` - -#### /api/contract/agree - -```bash -/api/contract/agree #Sign contract retrieved from provider and start negotiation -``` -###### Request body -```json -{ - "processId": "string", - "contractId": "string", - "token": "string", - "policyId": "optional:string" -} -``` - -#### /api/contract/decline - -```bash -/api/contract/decline #Decline passport negotiation -``` -###### Request body -```json -{ - "processId": "string", - "token": "string" -} -``` -#### /api/contract/cancel - -```bash -/api/contract/cancel #Cancel the negotiation -``` -###### Request body -```json -{ - "processId": "string", - "contractId": "string", - "token": "string", - "policyId": "optional:string" -} -``` - -#### /api/contract/status/ - -```bash -/api/contract/status/ #Get status from process -``` - -## IRS API - -```bash -/api/irs// #Endpoint called by the IRS to set status completed -``` -###### Request parameters -``` -- Id -- State -``` -```bash -/api/irs//tree #Api called by the frontend to obtain the tree of components -``` -```bash -/api/irs//state #Api called by the frontend to check if the process is finished -``` -```bash -/api/irs//components #Api called by the frontend to obtain the list of components of the tree -``` - -## Public API - -Public APIs don't require authentication -```bash -/health #Get the health status of the server -``` -###### Response -```json -{ - "message": "RUNNING", - "status": 200, - "data": "24/11/2022 17:48:18.487" -} -``` - -```bash -/endpoint/ #Receives the EDR from the EDC Consumer and get the passport json -``` - -```bash -/endpoint// #Receives the EDR for the EDC Consumer and queries for the dDTR -``` - - - -# OSS License Check - -The third party library dependecies, utilized in this app have to be approved from The Eclipse Foundation. - -The [Dash Licence Tool](https://github.com/eclipse/dash-licenses) is used to scan the dependencies - -[OSS License Checks with Dash & Compliance with Apache 2.0](https://confluence.catena-x.net/pages/viewpage.action?pageId=54989501) - -At the time of writing this manual, the dependencies have status approved and therefore no need to generate IP Team Review request further. - -[Maven plugin](https://github.com/eclipse/dash-licenses/blob/master/README.md#maven-plugin-options) used to check OSS license - -How to run: -```bash -mvn org.eclipse.dash:license-tool-plugin:license-check -Ddash.summary=DEPENDENCIES -``` - - -# Swagger Docs - -Swagger documentation is now automatically available at the following path: - -```https:///swagger-ui/index.html``` - -![img.png](docs/media/img2.png) - -For authorization, you will need to add a JWT Access token from the Catena-X IAM: - -![img3.png](docs/media/img3.png) - -# Run the application - -Use maven to run the spring boot application: -```bash -mvn spring-boot:run -``` - -If you want to run the application in a different way checkout the [frequently asked questions](#frequently-asked-questions) section below. - -## Modify the configurations in the deployment files - -You can use the default configuration to start the application: -```charts/digital-product-pass/values.yaml``` - -However if you need to change it just create a new environment with this naming convention: ```values-env`.yaml``` where ```env``` is the name of your environment. You can use as an example the following configuration file: ```charts/digital-product-pass/values-int.yaml```. - -The configuration for the consumer backend application is a yaml file that is configured in the following tag: ```backend.application```. Before the application starts all the configuration parameters must be specified, since they are required for initialization and will be checked at the test fase. - -Once you configured the application use the follow the [TL;DR](#tldr) below to ```build the image and start the application``` using helm charts. - -# TL;DR - -## Install -Find more documentation on how to install the backend in the [INSTALL.md](../../INSTALL.md) file. - -# License -[Apache-2.0](https://raw.githubusercontent.com/catenax-ng/product-battery-passport-consumer-app/main/LICENSE) - diff --git a/src/components/general/TabsComponent.vue b/src/components/general/TabsComponent.vue index c05cf51d9..e3bd35be0 100644 --- a/src/components/general/TabsComponent.vue +++ b/src/components/general/TabsComponent.vue @@ -29,7 +29,7 @@ :value="section.component" > - {{ $t(`passportView.dppComponentsNames.${section.label}`) }} + {{ $t(section.label) }} diff --git a/src/components/passport/GeneralCards.vue b/src/components/passport/GeneralCards.vue index bb681aa46..fdcc13cae 100644 --- a/src/components/passport/GeneralCards.vue +++ b/src/components/passport/GeneralCards.vue @@ -138,12 +138,9 @@ export default { label: "generalCards.totalCo2Footprint", secondLabel: "generalCards.warrantyPeriod", icon: "mdi-leaf", - value: - this.$props.data.aspect.sustainability && - this.$props.data.aspect.sustainability["PEF"] && - this.$props.data.aspect.sustainability["PEF"].carbon - ? this.$props.data.aspect.sustainability["PEF"].carbon[0].value - : "-", + value: this.$props.data.aspect.sustainability["PEF"].carbon + ? this.$props.data.aspect.sustainability["PEF"].carbon[0].value + : "-", valueUnits: "t CO2 Total", secondValue: this.$props.data.aspect.commercial ? this.$props.data.aspect.commercial.warranty diff --git a/src/components/passport/TransmissionCards.vue b/src/components/passport/TransmissionCards.vue index 2ba4bebf9..b5a8e77b5 100644 --- a/src/components/passport/TransmissionCards.vue +++ b/src/components/passport/TransmissionCards.vue @@ -139,12 +139,10 @@ export default { label: "Total CO2 footprint", secondLabel: "Warranty period", icon: "mdi-leaf", - value: - this.$props.data.aspect.sustainability && - this.$props.data.aspect.sustainability.carbonFootprint - ? this.$props.data.aspect.sustainability.carbonFootprint - .co2FootprintTotal - : "-", + value: this.$props.data.aspect.sustainability.carbonFootprint + ? this.$props.data.aspect.sustainability.carbonFootprint + .co2FootprintTotal + : "-", valueUnits: "t CO2 Total", secondValue: this.$props.data.aspect.generalInformation.warrantyPeriod, diff --git a/src/components/passport/sections/Characteristics.vue b/src/components/passport/sections/Characteristics.vue index 83252fbfa..1bf362c16 100644 --- a/src/components/passport/sections/Characteristics.vue +++ b/src/components/passport/sections/Characteristics.vue @@ -48,7 +48,7 @@ v-for="attr in propsData.lifespan" :key="attr" :icon="callIconFinder('lifespan')" - :label="$t('sections.characteristics.lifespan')" + label="Lifespan" :value="attr.value" :unit="attr.unit" /> @@ -58,7 +58,7 @@ diff --git a/src/components/passport/sections/Commercial.vue b/src/components/passport/sections/Commercial.vue index ca01916f5..9ee35564b 100644 --- a/src/components/passport/sections/Commercial.vue +++ b/src/components/passport/sections/Commercial.vue @@ -27,7 +27,7 @@ diff --git a/src/components/passport/sections/Handling.vue b/src/components/passport/sections/Handling.vue index 076afaf11..b03e963b9 100644 --- a/src/components/passport/sections/Handling.vue +++ b/src/components/passport/sections/Handling.vue @@ -34,7 +34,7 @@ diff --git a/src/components/passport/sections/Identification.vue b/src/components/passport/sections/Identification.vue index 901f96689..e9306441d 100644 --- a/src/components/passport/sections/Identification.vue +++ b/src/components/passport/sections/Identification.vue @@ -35,7 +35,7 @@ diff --git a/src/components/passport/sections/Metadata.vue b/src/components/passport/sections/Metadata.vue index 33f1240b7..415a80b61 100644 --- a/src/components/passport/sections/Metadata.vue +++ b/src/components/passport/sections/Metadata.vue @@ -27,17 +27,17 @@ @@ -45,12 +45,12 @@ @@ -58,12 +58,12 @@ diff --git a/src/components/passport/sections/Operation.vue b/src/components/passport/sections/Operation.vue index 8ba2c7373..20f32952f 100644 --- a/src/components/passport/sections/Operation.vue +++ b/src/components/passport/sections/Operation.vue @@ -28,7 +28,7 @@ @@ -37,17 +37,17 @@ diff --git a/src/components/passport/sections/Sustainability.vue b/src/components/passport/sections/Sustainability.vue index 86f70d392..0456ab306 100644 --- a/src/components/passport/sections/Sustainability.vue +++ b/src/components/passport/sections/Sustainability.vue @@ -21,7 +21,7 @@ --> @@ -144,7 +144,7 @@ > @@ -152,7 +152,7 @@ @@ -167,9 +167,7 @@ > @@ -180,7 +178,7 @@ diff --git a/src/components/passport/sections/Typology.vue b/src/components/passport/sections/Typology.vue index 431c60d0d..8af5b6ec6 100644 --- a/src/components/passport/sections/Typology.vue +++ b/src/components/passport/sections/Typology.vue @@ -35,12 +35,12 @@ @@ -48,7 +48,7 @@ diff --git a/src/translations/de.json b/src/translations/de.json index 0a8415f92..e6c5fdbac 100644 --- a/src/translations/de.json +++ b/src/translations/de.json @@ -34,20 +34,6 @@ "electrochemicalProperties": "Elektrochemische Eigenschaften", "documents": "Dokumente", "exchange": "Austausch" - }, - "dppComponentsNames": { - "typology": "Typologie", - "metadata": "Metadaten", - "characteristics": "Merkmale", - "components": "Komponenten", - "commercial": "Kommerziell", - "identification": "Identifikation", - "sources": "Quellen", - "handling": "Handhabung", - "additionalData": "Zusätzliche Daten", - "sustainability": "Nachhaltigkeit", - "operation": "Betrieb", - "exchange": "Austausch" } }, "home": { @@ -271,8 +257,7 @@ "weight": "Gewicht", "lifespan": "Lebensdauer", "energyCapacity": "Energiekapazität", - "voltage": "Spannung", - "physicalState": "Physischer Zustand" + "voltage": "Spannung" }, "commercial": { "placedOnMarket": "Markteinführung", @@ -281,41 +266,23 @@ "handling": { "maintenanceHistory": "Wartungshistorie", "spareParts": "Ersatzteile", - "substanceOfConcern": "Besorgniserregende Substanz", - "producerId": "Produzenten-ID", - "partName": "Teilname", - "partGtin": "Teil-GTIN", - "type": "Typ", - "location": "Standort", - "unit": "Einheit", - "concentrationMax": "Maximale Konzentration", - "concentrationMin": "Minimale Konzentration", - "exemption": "Ausnahme", - "idType": "ID-Typ", - "id": "ID" + "substanceOfConcern": "besorgniserregender Stoff" }, "identification": { - "gtin": "GTIN", - "manufacturerId": "Hersteller-ID", - "dataMatrixCode": "Data-Matrix-Code" + "gtin": "GTIN" }, "metadata": { - "predecessor": "Vorgänger", - "legitimization": "Legitimation", - "identification": "Identifikation", "issueDate": "Ausgabedatum", "version": "Version", "validityDate": "Gültigkeitsdatum", "customerPartId": "Kundenteil-ID", "manufacturerPartId": "Herstellerteil-ID", - "status": "Status", - "expirationDate": "Ablaufdatum" + "status": "Status" }, "operation": { - "importer": "Importeur-ID", + "importer": "Importeur", "manufacturerId": "Hersteller-ID", - "facilityId": "Anlagen-ID", - "manufacturingDate": "Herstellungsdatum" + "facilityId": "Einrichtungs-ID" }, "serialization": { "manufacturingInformation": "Herstellungsinformationen", @@ -336,18 +303,15 @@ "co2FootprintTotal": "Gesamter CO₂-Fußabdruck", "operator": "Betreiber", "ruleNames": "Regelnamen", - "otherOperatorName": "Name des anderen Betreibers", - "productOrSectorSpecificRules": "Produkt- oder sektorspezifische Regeln", - "critical": "Kritisch" + "otherOperatorName": "Name des anderen Betreibers" }, "typology": { "name": "Name", - "shortName": "Kurzname", - "longName": "Langname", + "shortName": "Kurzer Name", "definition": "Definition", "code": "Code", "nameAtManufacturer": "Name beim Hersteller", - "nameAtCustomer": "Name beim Kunden" + "nameAtCustomer": "Name auf dem Markt" } } } diff --git a/src/translations/en.json b/src/translations/en.json index 20eede3f7..417b14e75 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -34,20 +34,6 @@ "electrochemicalProperties": "Electrochemical Properties", "documents": "Documents", "exchange": "Exchange" - }, - "dppComponentsNames": { - "typology": "Typeology", - "metadata": "Metadata", - "characteristics": "Characteristics", - "components": "Components", - "commercial": "Commercial", - "identification": "Identification", - "sources": "Sources", - "handling": "Handling", - "additionalData": "Additional Data", - "sustainability": "Sustainability", - "operation": "Operation", - "exchange": "Exchange" } }, "home": { @@ -271,8 +257,7 @@ "weight": "Weight", "lifespan": "Lifespan", "energyCapacity": "Energy capacity", - "voltage": "Voltage", - "physicalState": "Physical state" + "voltage": "Voltage" }, "commercial": { "placedOnMarket": "Place on the market", @@ -281,41 +266,23 @@ "handling": { "maintenanceHistory": "Maintenance history", "spareParts": "Spare parts", - "substanceOfConcern": "Substance of concern", - "producerId": "Producer Id", - "partName": "Part name", - "partGtin": "Part gtin", - "type": "Type", - "location": "Location", - "unit": "Unit", - "concentrationMax": "Concentration max", - "concentrationMin": "Concentration main", - "exemption": "Exemption", - "idType": "Id type", - "id": "Id" + "substanceOfConcern": "Substance of concern" }, "identification": { - "gtin": "Gtin", - "manufacturerId": "Manufacturer ID", - "dataMatrixCode": "Data matrix code" + "gtin": "Gtin" }, "metadata": { - "predecessor": "Predecessor", - "legitimization": "Legitimization", - "identification": "Identification", "issueDate": "Issue date", "version": "Version", "validityDate": "Validity date", "customerPartId": "Customer part ID", "manufacturerPartId": "Manufacturer part ID", - "status": "Status", - "expirationDate": "Expiration date" + "status": "Status" }, "operation": { - "importer": "Importer ID", + "importer": "Importer", "manufacturerId": "Manufacturer ID", - "facilityId": "Facility ID", - "manufacturingDate": "Manufacturing date" + "facilityId": "Facility ID" }, "serialization": { "manufacturingInformation": "Manufacturing information", @@ -330,20 +297,17 @@ "state": "State", "material": "Material", "carbonContentTotal": "Carbon content total", - "crossSectoralStandard": "Cross sectoral standard used", + "crossSectoralStandard": "Cross sectoral standard", "substancesOfConcern": "Substances of concern", "criticalRawMaterials": "Critical raw materials", "co2FootprintTotal": "CO₂ footprint total", "operator": "Operator", "ruleNames": "Rule names", - "otherOperatorName": "Other operator name", - "productOrSectorSpecificRules": "Product or sector specific rules", - "critical": "Critical" + "otherOperatorName": "Other operator name" }, "typology": { "name": "Name", "shortName": "Short name", - "longName": "Long name", "definition": "Definition", "code": "Code", "nameAtManufacturer": "Name at manufacturer", diff --git a/src/views/PassportView.vue b/src/views/PassportView.vue index 8d763c5c2..c50034f73 100644 --- a/src/views/PassportView.vue +++ b/src/views/PassportView.vue @@ -225,23 +225,13 @@ export default { let dataKeys = Object.keys(this.data.aspect); // Check if data exists and is not empty if (this.data.aspect && dataKeys.length > 0) { - // Filter out keys with empty objects or arrays - dataKeys = dataKeys.filter((key) => { - const value = this.data.aspect[key]; - if (typeof value === "object" && value !== null) { - // Check if it's an array or an object and ensure it's not empty - return Array.isArray(value) - ? value.length > 0 - : Object.keys(value).length > 0; - } - return true; // Include if it's not an object/array or if it's a non-empty primitive value - }); - dataKeys.splice(3, 0, "components"); dataKeys.push("exchange"); // Generate component names dynamically from the JSON keys return dataKeys.map((key) => ({ - label: key, + label: passportUtil.toSentenceCase( + key[0].toUpperCase() + key.slice(1) + ), icon: passportUtil.iconFinder(key), component: key, }));