Wanna deploy your own Tractus-X Connector? Or even your own dataspace? Go check out this tutorial to learn how!
Wanna play with Tractus-X EDC Policies? Run locally the Playground or go to the hosted version here
License: Apache License 2.0
Wanna deploy your own Tractus-X Connector? Or even your own dataspace? Go check out this tutorial to learn how!
Wanna play with Tractus-X EDC Policies? Run locally the Playground or go to the hosted version here
Organize all tutorials into mxd/docs directory and provide tutorial link in the mxd/README.md.
The MXD walkthrough should be extended so that one provider connector, e.g. "Alice" hosts an asset, that is actually stored in S3 (using the MinIO container image).
Bob then transfers the data into some arbitrary location, e.g. his own S3 store.
In the course of this issue, it should also be tested, whether a transfer HTTP -> S3 can be achieved.
Highlighting standard Tx-EDC use cases and making them accessible for users of MXD.
kubernetes_deployment
)job
)mxd/README.md
outlining the process, including the correct curl
command and transfer request JSONHTTP -> S3
Currently the version of the EDC relies on the latest
branch, this is not optimal because after every tx release the main branch of the mxd could be not working anymore.
The proposal is to:
Run MXD locally
run also on PRs, so then every PR must ensure that the changes made don't break the CIThe Digital Twin Registry (DTR) is a solution which lists all digital twins and references their aspects including information about the underlying asset, asset manufacturer, and access options, like aspect endpoints. Moreover, the DTR is used to register and find data related to DTs. In general, every partner must proactively register their DTs / Aspects to this service in order to reveal their "order" to share respective data sets.
Hence, the DTR represents an enabling component for Catena-X. Within the interdisciplinary E2E User Journey work stream, the integration of the DTR into the MXD was requested.
The major contribution expected from this integration will be the demonstration of how a consumer actually derives its information demand in terms of relevant providers and data assets.
References:
Create a common postman collection
MXD Blob Transfer API.json
(or something similar) and add a folder inside the collection for S3 to Azure.
Related to eclipse-tractusx/sig-release#315
tractusx
org.backend-service
directory and sub directory.Related to eclipse-tractusx/sig-release#314
Enahance E2E tests to validate a successful http to http transfer via backend-service.
COMPLETED
.COMPLETED
.Related to eclipse-tractusx/sig-release#316
Currently, during CI runs, we only test that both bob
and alice
are up and running, check out this workflow job. That is not very thorough and we should improve it.
At least the following aspects should be tested:
For that, we could use another postman collection and leverage the test feature, or even just plain curl
commands.
Testing should be improved, MXD does indeed serve as a testing ground of sorts.
BusinessPartnerNumber policy has been marked as deprecated.
Replace it's usage with its alternative BusinessPartnerGroup.
Related to eclipse-tractusx/tractusx-edc#660
Current E2E tests validation in postman are incorrect.
Create Policy BOB_MANAGEMENT_URL
/ Create Policy Alice_MANAGEMENT_URL
use invalid BPN number.Create Contract Definition BOB_MANAGEMENT_URL
/ Create Contract Definition ALICE_MANAGEMENT_URL
use invalid access policy id / contract policy id / asset selector.Get all Policies / Get all Assets
, response validation is incorrect. It validates unrelated ids.Related to eclipse-tractusx/sig-release#316
Create a common postan collection
MXD Blob Transfer API.json
(or something similar) and add a folder inside the collection for azure to azure.
So at the end, there will be four folder inside that collection S3 to S3, S3 to Azure, Azure to S3 and Azure to Azure.
Related to eclipse-tractusx/sig-release#315
The first link is broken and I can't find the file it linked to.
Thanks!
Assuming Alice
as a provider connector and Bob
being consumer connector.
Bob's shares its actual AWS credential with Alice
to initiate the file transfer. Bob should generate an AWS Temporary Token with limited access and expiry. Alice
can misuse Bob's credentials.
MinIO has limited support of STS token. We can generate a STS token using AWS CLI
aws --endpoint-url http://localhost:9000 sts assume-role --policy '{"Version":"2012-10-17","Statement":[{"Sid":"S3Access","Effect":"Allow","Action":"s3:*","Resource":"arn:aws:s3:::*"}]}' --role-arn arn:xxx:xxx:xxx:xxxx --role-session-name anything --duration-seconds $((365 * 86400))
This command returns a response similar to:
{
"Credentials": {
"AccessKeyId": "6V6DRU6086RMH7D9LEN0",
"SecretAccessKey": "PH8eyvr+5G7iydON8t2mgaTXgjH8JOFXlBQsphPa",
"SessionToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiI2VjZEUlU2MDg2Uk1IN0Q5TEVOMCIsImV4cCI6MTczMjk2ODI0MiwicGFyZW50IjoiYWxpY2Vhd3NjbGllbnQiLCJzZXNzaW9uUG9saWN5IjoiZXlKV1pYSnphVzl1SWpvaU1qQXhNaTB4TUMweE55SXNJbE4wWVhSbGJXVnVkQ0k2VzNzaVUybGtJam9pVXpOQlkyTmxjM01pTENKRlptWmxZM1FpT2lKQmJHeHZkeUlzSWtGamRHbHZiaUk2SW5Nek9pb2lMQ0pTWlhOdmRYSmpaU0k2SW1GeWJqcGhkM002Y3pNNk9qb3FJbjFkZlE9PSJ9.9WvwmfUyeES0VxbPPzVH0fOdlh_Y394BcxCscZp4EszliIFqgpwNKaUe-OeE8SKyKHN3QM5IGCrjMPQAv0FAig",
"Expiration": "2024-11-30T12:04:02+00:00"
},
"AssumedRoleUser": {
"Arn": ""
}
}
Now this new token is not accepted by MinIO. Alice`s connector-dataplane throws an error:
software.amazon.awssdk.services.s3.model.S3Exception: The Access Key Id you provided does not exist in our records.
Query Catalog request body is incorrect in tutorials.
Existing:
"querySpec": {
"offset": 0,
"limit": 100,
"filter": "",
"range": {
"from": 0,
"to": 100
},
"criterion": ""
}
filter
, range
, criterion
are unknown fields.
A correct querySpec
example could be:
"querySpec": {
"offset": 0,
"limit": 50
}
MIW is failing to start while running mxd.
terraform apply
MIW Pod Startup Logs
Caused by: java.lang.RuntimeException: JsonLdError[code=There was a problem encountered loading a remote context [code=LOADING_REMOTE_CONTEXT_FAILED]., message=There was a problem encountered loading a remote context [code=LOADING_REMOTE_CONTEXT_FAILED].]
at org.eclipse.tractusx.ssi.lib.proof.transform.LinkedDataTransformer.toDataset(LinkedDataTransformer.java:82) ~[cx-ssi-lib-0.0.16.jar!/:na]
at org.eclipse.tractusx.ssi.lib.proof.transform.LinkedDataTransformer.transform(LinkedDataTransformer.java:50) ~[cx-ssi-lib-0.0.16.jar!/:na
Caused by: com.apicatalog.jsonld.JsonLdError: Unexpected response code [524]
at com.apicatalog.jsonld.loader.DefaultHttpLoader.loadDocument(DefaultHttpLoader.java:95) ~[titanium-json-ld-1.3.2.jar!/:na]
at com.apicatalog.jsonld.loader.HttpLoader.loadDocument(HttpLoader.java:6) ~[titanium-json-ld-1.3.2.jar!/:na]
at org.eclipse.tractusx.ssi.lib.model.RemoteDocumentLoader.loadDocument(RemoteDocumentLoader.java:95) ~[cx-ssi-lib-0.0.16.jar!/:na]
at com.apicatalog.jsonld.context.ActiveContextBuilder.fetch(ActiveContextBuilder.java:535) ~[titanium-json-ld-1.3.2.jar!/:na]
... 81 common frames omitted
With the lastest mxd version (main 01.03.2024) the contract negotiation request produces an error message in the logfile
negotiate-contract.json
{
"@context": {
"odrl": "http://www.w3.org/ns/odrl/2/"
},
"@type": "NegotiationInitiateRequestDto",
"counterPartyAddress": "http://alice-controlplane:8084/api/v1/dsp",
"protocol": "dataspace-protocol-http",
"connectorId": "BPNL000000000001",
"providerId": "BPNL000000000001",
"offer": {
"offerId": "OTk5OQ==:OTk5OQ==:MmNhODkwNmMtZTdjZi00ZmU1LTlkNWUtZmUzNzkzYmY3ZGM1",
"assetId": "9999",
"policy": {
"@type": "odrl:Set",
"odrl:permission": [],
"odrl:prohibition": [],
"odrl:obligation": [],
"odrl:target": "9999"
}
}
}
curl -d @negotiate-contract.json -X POST -H "x-api-key: password" -H "content-type: application/json" http://localhost:29193/management/v2/contractnegotiations -s | jq
WARNING 2024-03-01T09:37:43.062145068 The attribute https://w3id.org/edc/v0.0.1/ns/offer has been deprecated in type https://w3id.org/edc/v0.0.1/ns/ContractRequest, please use https://w3id.org/edc/v0.0.1/ns/policy
DEBUG 2024-03-01T09:37:43.063631112 [ConsumerContractNegotiationManagerImpl] ContractNegotiation 206cc3e7-9239-4dc3-8cd4-63aa348d529e is now in state INITIAL
DEBUG 2024-03-01T09:37:44.042691051 [ConsumerContractNegotiationManagerImpl] ContractNegotiation 206cc3e7-9239-4dc3-8cd4-63aa348d529e is now in state REQUESTING
DEBUG 2024-03-01T09:37:44.044702999 ContractNegotiation: ID 206cc3e7-9239-4dc3-8cd4-63aa348d529e. [Consumer] send request
DEBUG 2024-03-01T09:37:44.223446098 ContractNegotiation: ID 206cc3e7-9239-4dc3-8cd4-63aa348d529e. [Consumer] send request
DEBUG 2024-03-01T09:37:44.234796334 [ConsumerContractNegotiationManagerImpl] ContractNegotiation 206cc3e7-9239-4dc3-8cd4-63aa348d529e is now in state REQUESTED
DEBUG 2024-03-01T09:37:44.651674738 DSP: Incoming ContractAgreementMessage for class org.eclipse.edc.connector.contract.spi.types.negotiation.ContractNegotiation process: 206cc3e7-9239-4dc3-8cd4-63aa348d529e
**DEBUG 2024-03-01T09:37:44.716826739 [Consumer] Contract agreement received. Validation failed: Policy in the contract agreement is not equal to the one in the contract offer
**DEBUG 2024-03-01T09:37:44.717233287 DSP: Service call failed: Contract agreement received. Validation failed: Policy in the contract agreement is not equal to the one in the contract offer****
In the version from 23.02.2024 the same request works
DEBUG 2024-03-01T09:15:58.366822896 [TransferProcessManagerImpl] TransferProcess c8d529b0-6ef6-4421-aa3d-e096ba17da3e is now in state INITIAL
DEBUG 2024-03-01T09:15:58.373030391 Process c8d529b0-6ef6-4421-aa3d-e096ba17da3e is now INITIAL
DEBUG 2024-03-01T09:15:58.417321893 Transfer Process created c8d529b0-6ef6-4421-aa3d-e096ba17da3e
DEBUG 2024-03-01T09:15:59.489493191 [TransferProcessManagerImpl] TransferProcess c8d529b0-6ef6-4421-aa3d-e096ba17da3e is now in state PROVISIONING
DEBUG 2024-03-01T09:15:59.517926534 TransferProcess: ID c8d529b0-6ef6-4421-aa3d-e096ba17da3e. Provisioning
DEBUG 2024-03-01T09:15:59.529742438 [TransferProcessManagerImpl] TransferProcess c8d529b0-6ef6-4421-aa3d-e096ba17da3e is now in state PROVISIONED
DEBUG 2024-03-01T09:15:59.559497548 [TransferProcessManagerImpl] TransferProcess c8d529b0-6ef6-4421-aa3d-e096ba17da3e is now in state REQUESTING
DEBUG 2024-03-01T09:15:59.570513999 TransferProcess: ID c8d529b0-6ef6-4421-aa3d-e096ba17da3e. send transfer request to http://alice-controlplane:8084/api/v1/dsp
DEBUG 2024-03-01T09:16:01.471093801 TransferProcess: ID c8d529b0-6ef6-4421-aa3d-e096ba17da3e. send transfer request to http://alice-controlplane:8084/api/v1/dsp
DEBUG 2024-03-01T09:16:01.530304848 [TransferProcessManagerImpl] TransferProcess c8d529b0-6ef6-4421-aa3d-e096ba17da3e is now in state REQUESTED
DEBUG 2024-03-01T09:16:02.866885159 DSP: Incoming TransferStartMessage for class org.eclipse.edc.connector.transfer.spi.types.TransferProcess process: c8d529b0-6ef6-4421-aa3d-e096ba17da3e
DEBUG 2024-03-01T09:16:05.04394783 TransferProcess c8d529b0-6ef6-4421-aa3d-e096ba17da3e is now in state STARTED
Create Asset
create-asset.json
{
"@context": {},
"@id": "9999",
"properties": {
"description": "AssetAdministrationShell"
},
"dataAddress": {
"@type": "DataAddress",
"type": "HttpData",
"baseUrl": "http://host.minikube.internal:4001/aasServer/shells",
"proxyPath": "true"
}
}
curl -d @create-asset.json -H "x-api-key: password" -H "content-type: application/json" http://localhost:19193/management/v3/assets -s | jq
Create Policy
create-policy.json
{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"odrl": "http://www.w3.org/ns/odrl/2/"
},
"@id": "9999",
"policy": {
"@type": "odrl:Set",
"odrl:permission": [],
"odrl:prohibition": [],
"odrl:obligation": []
}
}
curl -d @create-policy.json -H "x-api-key: password" -H "content-type: application/json" http://localhost:19193/management/v2/policydefinitions -s | jq
Create Contract Definition
create-contract-definition.json
{
"@context": {},
"@id": "9999",
"@type": "ContractDefinition",
"accessPolicyId": "9999",
"contractPolicyId": "9999",
"assetsSelector" : []
}
}
curl -d @create-contract-definition.json -H "x-api-key: password" -H "content-type: application/json" http://localhost:19193/management/v2/contractdefinitions -s | jq
Fetch Catalog
fetch-catalog.json
{
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@type": "CatalogRequest",
"counterPartyAddress":"http://alice-controlplane:8084/api/v1/dsp",
"protocol": "dataspace-protocol-http",
"querySpec": {
"offset": 0,
"limit": 50
}
}
curl -d @fetch-catalog.json -H "x-api-key: password" -H "content-type: application/json" http://localhost:29193/management/v2/catalog/request -s | jq
Negotiate Contract
negotiate-contract.json
{
"@context": {
"odrl": "http://www.w3.org/ns/odrl/2/"
},
"@type": "NegotiationInitiateRequestDto",
"counterPartyAddress": "http://alice-controlplane:8084/api/v1/dsp",
"protocol": "dataspace-protocol-http",
"connectorId": "BPNL000000000001",
"providerId": "BPNL000000000001",
"offer": {
"offerId": "OTk5OQ==:OTk5OQ==:MmNhODkwNmMtZTdjZi00ZmU1LTlkNWUtZmUzNzkzYmY3ZGM1",
"assetId": "9999",
"policy": {
"@type": "odrl:Set",
"odrl:permission": [],
"odrl:prohibition": [],
"odrl:obligation": [],
"odrl:target": "9999"
}
}
}
curl -d @negotiate-contract.json -X POST -H "x-api-key: password" -H "content-type: application/json" http://localhost:29193/management/v2/contractnegotiations -s | jq
The main structure of the policy playground is there. We should ensure that the JSON-LD generated is compliant and working with the Tx-EDC version 0.5.1
Even though the Playground is in a WIP state, we should introduce some checks on PRs for contributions like
Hello,
In the past, we successfully deployed the MXD locally for testing purposes according to the instructions.
However, when we tried again today we encountered problems with being able to start the MXD, the error occurs at the terraform apply
cmd within step 2.
/cc: @MoritzDieckmann
/v2/assets API has been deprecated and it has been removed in latest tractus-connector
release.
Need to upgrade to /v3/assets
API.
/v3/assets
API.README.md
/ tutorials.Currently, all participants in the example dataspace have the same BPN, and by extension, the same client-id in Keycloak (BPNL000000000000
).
While that is not technically a problem, it is does not really reflect an actual use case. Every participant (Bob, Alice, the MIW) should have their own client-id/BPN.
We cannot credibly illustrate any real scenario unless all participants are actually separated, auth-wise. We'll need this to show and explore how policies work, what effect they have, etc.
keycloak/miw_test_realm.json
) manually or through the Keycloak admin UI.Error while running Terraform:
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [40s elapsed]
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [50s elapsed]
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [1m0s elapsed]
╷
│ Error: job: default/seed-connectors is not in complete state
│
│ with kubernetes_job.seed_connectors_via_mgmt_api,
│ on seed_data.tf line 24, in resource "kubernetes_job" "seed_connectors_via_mgmt_api":
│ 24: resource "kubernetes_job" "seed_connectors_via_mgmt_api" {
Kubernetes cluster gets fully initialized
Follow the instructions in https://github.com/eclipse-tractusx/tutorial-resources/blob/main/mxd/README.md until terraform apply
throws the error.
Running terraform apply
again results in the same error.
Defaulted container "newman-bob" out of: newman-bob, newman-alice, newman-miw
newman
MXD Management API Seed
❏ SeedData
↳ Create Business Partner Group
POST http://10.96.144.238:8081/management/business-partner-groups [409 Conflict, 234B, 44ms]
✓ Status code is 204 (if new BPN) or 409 Conflict (if BPN already exists)
↳ Create Asset 1
POST http://10.96.144.238:8081/management/v3/assets [409 Conflict, 217B, 8ms]
✓ Status code is 204 No Content (if new asset) or 409 Conflict (if asset already exists)
↳ Create Asset 2
POST http://10.96.144.238:8081/management/v3/assets [409 Conflict, 217B, 8ms]
✓ Status code is 204 No Content (if new asset) or 409 Conflict (if asset already exists)
↳ Create Policy
POST http://10.96.144.238:8081/management/v2/policydefinitions [400 Bad Request, 1.01kB, 7ms]
1. Status code is 204 No Content (if new policy) or 409 Conflict (if policy already exists)
↳ Create Contract Definition 1
POST http://10.96.144.238:8081/management/v2/contractdefinitions [409 Conflict, 231B, 7ms]
✓ Status code is 204 No Content (if new contract definition) or 409 Conflict (if contract deifinition already exists)
↳ Create Contract Definition 2
POST http://10.96.144.238:8081/management/v2/contractdefinitions [409 Conflict, 231B, 7ms]
✓ Status code is 204 No Content (if new contract definition) or 409 Conflict (if contract deifinition already exists)
┌─────────────────────────┬──────────────────┬──────────────────┐
│ │ executed │ failed │
├─────────────────────────┼──────────────────┼──────────────────┤
│ iterations │ 1 │ 0 │
├─────────────────────────┼──────────────────┼──────────────────┤
│ requests │ 6 │ 0 │
├─────────────────────────┼──────────────────┼──────────────────┤
│ test-scripts │ 18 │ 0 │
├─────────────────────────┼──────────────────┼──────────────────┤
│ prerequest-scripts │ 12 │ 0 │
├─────────────────────────┼──────────────────┼──────────────────┤
│ assertions │ 6 │ 1 │
├─────────────────────────┴──────────────────┴──────────────────┤
│ total run duration: 299ms │
├───────────────────────────────────────────────────────────────┤
│ total data received: 1.45kB (approx) │
├───────────────────────────────────────────────────────────────┤
│ average response time: 13ms [min: 7ms, max: 44ms, s.d.: 13ms] │
└───────────────────────────────────────────────────────────────┘
# failure detail
1. AssertionError Status code is 204 No Content (if new policy) or 409 Conflict (if policy already exists)
expected 400 to be one of [ 200, 204, 409 ]
at assertion:0 in test-script
inside "SeedData / Create Policy"
Transfer doesn't complete.
Transfer should be completed successfully.
FINALIZED
.Related to: eclipse-edc/Connector#3810
policy
field instead of offer
while initiating negotiation and EDR.counterPartyAddress
instead of connectorAddress
while initiating negotiation, EDR and transfer.Deprecation Logs:
WARNING The attribute https://w3id.org/edc/v0.0.1/ns/connectorAddress has been deprecated in type https://w3id.org/edc/v0.0.1/ns/ContractRequest, please use https://w3id.org/edc/v0.0.1/ns/counterPartyAddress
WARNING The attribute https://w3id.org/edc/v0.0.1/ns/offer has been deprecated in type https://w3id.org/edc/v0.0.1/ns/ContractRequest, please use https://w3id.org/edc/v0.0.1/ns/policy
WARNING The attribute https://w3id.org/edc/v0.0.1/ns/connectorAddress has been deprecated in type https://w3id.org/edc/v0.0.1/ns/TransferRequest, please use https://w3id.org/edc/v0.0.1/ns/counterPartyAddress
terraform apply
Create Policy Request fails with the below error:
[
{
"message": "Property '@type' was invalid: unknown. Error was: Invalid type https://w3id.org/edc/v0.0.1/ns/Policy for ODRL policy, should be one of [http://www.w3.org/ns/odrl/2/Set, http://www.w3.org/ns/odrl/2/Offer, http://www.w3.org/ns/odrl/2/Agreement]",
"type": "InvalidRequest",
"path": null,
"invalidValue": null
},
{
"message": "ARRAY must be org.eclipse.edc.policy.model.Policy but was: unknown",
"type": "InvalidRequest",
"path": null,
"invalidValue": null
}
]
Use "@type": "policy"
"@type": "odrl:Set"
inside policy
object of the request body.
The port, that is forwarded for accessing the postgres data base in the tutorial seems to be wrong.
From my testing, the port opened inside the postgres container is 5432 and not 5423, what is implied by the docs.
Therefore the command:
kubectl port-forward postgres-5b788f6bdd-bvt9b 5432:5423
should be changed to:
kubectl port-forward postgres-5b788f6bdd-bvt9b 5432:5432
Create a common postman collection
MXD Blob Transfer API.json
(or something similar) and add a folder inside the collection for azure to s3.
Related to eclipse-tractusx/sig-release#315
update the MIW image to the latest version, which is tractusx/managed-identity-wallet:main
.
See also this PR in Tractus-X EDC: eclipse-tractusx/tractusx-edc#731
MIW seems to have moved to Tractus-X and use the main
branch, so we should use that to keep up-to-date
Create terraform configs for:
Related to eclipse-tractusx/sig-release#315
Trudy Tutorial currently fails due to MinIO / Azurite configs not provided to connector.
Its terraform file should be updated to add these configs.
The JSON-LD output of the playground could be formatted in multiple ways depending on the context or
alias usage. For now we should have at least two output format
odrl:
)Update Tutorials Compatible with tractusx-edc 0.6.0
I tried to deploy (local) the MXD as described in the tutorial (basically the same as in your readme here). Everything went fine. But terraform apply
doesn't work.
Both control planes dont start
For the pod logs, you can find more information
Both control planes should come up :) @paullatzelsperger already provided an interim fix for this problem, but its just a local fix and needs to be adapted here in this repository. main.tf file
Just follow the tutorial, or the readme within in the MXD folder. What i additional did, I changed the uses EDC Version (control plane and data plane) to version 0.5.3 instead of the latest.
MinIO credentials are not getting passed to bob connector, hence it picks the default values for MinIO credentials.
MinIO credentials get passed correctly for Alice connector but it got mixed up while resolving merge conflict in PR #147
Right now all components share same Postgres instance, which becomes a bottleneck in case of slight increase in traffic to MXD setup.
Some configuration rely directly on IPs instead of service names. It would be cool to switch to names especially
for connector to connector communication, where the URL it's also used in our postman collection
Example:
tutorial-resources/mxd/main.tf
Lines 61 to 67 in d03090e
tutorial-resources/mxd/modules/connector/main.tf
Lines 47 to 50 in d03090e
Keycloak deployment takes time to start the server, but Kubernetes assumes it is ready / live once container gets created.
Seed container job fails since it tries to access keycloak which is not yet ready to serve traffic. terraform apply
command throws error sometime.
kubernetes_job.seed_connectors_via_mgmt_api: Creating...
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [10s elapsed]
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [20s elapsed]
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [30s elapsed]
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [40s elapsed]
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [50s elapsed]
kubernetes_job.seed_connectors_via_mgmt_api: Still creating... [1m0s elapsed]
╷
│ Error: job: default/seed-connectors is not in complete state
│
│ with kubernetes_job.seed_connectors_via_mgmt_api,
│ on seed_data.tf line 24, in resource "kubernetes_job" "seed_connectors_via_mgmt_api":
│ 24: resource "kubernetes_job" "seed_connectors_via_mgmt_api" {
│
╵
Enable keycloak deployment liveness / readiness probe using keycloak health check APIs (/health/ready
, /health/live
).
https://www.keycloak.org/server/health
Create a REST API Application to complete and validate a successful asset transfer.
/api/v1/contents
to store an assets. It should return a url / id of this content in the response./api/v1/contents/{id}
to fetch the content. This URL will be used as a DataAddress
in the assets API./api/v1/transfers
to accept the transfer data from the connector. Connector will push data similar to this:{
"id": "<transfer id>",
"endpoint": "http://alice-tractusx-connector-dataplane:8081/api/public",
"authKey": "Authorization",
"authCode": "<Auth Code>",
"properties": {}
}
Persist above data with transfer id as primary key.
/api/v1/transfers/{id}
to return the above json pushed by connector./api/v1/transfers/{id}/contents
to return the actual assets content (i.e. the data which is stored at the above endpoint http://alice-tractusx-connector-dataplane:8081/api/public
)Common Points:
http://backend-service:8080/api/v1/contents/1
.http://backend-service:8080/api/v1/contents/1
on provider connector.http://backend-service:8080/api/v1/transfers
/api/v1/transfers/{id}
to check if transfer is successful or not. (Optional Step)/api/v1/transfers/{id}/contents
to fetch the assets data and compare with the dummy data stored in first step. It should match.Related to eclipse-tractusx/sig-release#314
Proxy call to consumer dataplane fails, as consumer dataplane tries to reach out to the provider's public url http://localhost/alice/api/public
which doesn't exist.
curl --location 'http://localhost/bob/proxy/aas/request' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: password' \
--data '{
"assetId": "1",
"providerId": "BPNL000000000001"
}'
Above curl returns
'java.net.ConnectException: Failed to connect to localhost/[
0: 0: 0: 0: 0: 0: 0: 1
]: 80'
Consumer Proxy Url should return the asset data.
This PR #233 adds the local ingress url as dataplane public url, due to this an EDR Response looks like this.
{
"@type": "DataAddress",
"type": "EDR",
"authCode": "auth code",
"endpoint": "http://localhost/alice/api/public",
"id": "2a17a657-479a-454c-ab42-52078c2824b8",
"authKey": "Authorization",
"@context": {}
}
When Consumer Dataplane tries to reach out to the provider's public url http://localhost/alice/api/public
, it fails.
PR #233 should be reverted.
MIW and KeyCloak require static IP which are provided as a constant in terraform config.
Current IPs are in range 10.96.. which works on a kubernetes deployed on local system, but kubernetes deployed on some clouds
doesn't allow IPs in range. 10.96.*.*
.
Some providers allow IPs in range 100.104.*.*
.
MXD should work on any kubernetes server irrespective of where it is deployed.
terraform init
terrafrom apply
Make static IPs as variable instead of constant, so that its value can be overridden while running terraform apply
.
terraform plan -var-file="override.tfvars" # override via a property file
# or
terraform apply -var miw-ip="x.x.x.x" -var keycloak-ip="x.x.x.x"
Tutorial for how to use Business Partner Group Policy
BusinessPartnerPermissionFunction is marked as deprecated and is scheduled to be removed in 0.6.x
version.
Activate dependabot for the playground
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.