Skip to content
Snippets Groups Projects
Commit 92b7c7c2 authored by Iturraspe Barturen, Urtza's avatar Iturraspe Barturen, Urtza
Browse files

Changes for avoiding CES and creating assets

parent 9ea6fc07
No related branches found
No related tags found
No related merge requests found
Showing
with 337 additions and 303 deletions
import json
import os
from datamite.models.dataProductResourcesBody import DataProductResourcesModel
from fastapi import HTTPException
......@@ -22,7 +21,6 @@ def load_asset_edc(body:DataProductResourcesModel, dataResouceAPi_URL:str):
dataResouceAPi_URL,
header_authorization)
if not create_asset_response.ok:
raise HTTPException(status_code=400, detail=json.loads(create_asset_response.text))
# Create policy
......@@ -43,4 +41,5 @@ def load_asset_edc(body:DataProductResourcesModel, dataResouceAPi_URL:str):
print (f'Asset {body.dataProductName} created')
return f'Asset {body.dataProductName} created'
return (f'Asset {body.dataProductName} created')
......@@ -3,21 +3,27 @@ import json
import requests
def invoke_create_asset(dataProductId:str,dataProductName:str, dataProductFormatType:str,dataProductDescription:str,openAPI:str,header_authorization:str):
def invoke_create_asset(dataProductId: str, dataProductName: str, dataProductFormatType: str,
dataProductDescription: str, openAPI: str, header_authorization: str):
provider_host = os.getenv("PROVIDER_HOST")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT")
provider_host_port = os.getenv("PROVIDER_HOST_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v3/assets"
payload = json.dumps(generate_asset_metadata(dataProductId,dataProductName,dataProductFormatType,dataProductDescription,openAPI))
"""headers = {
# url = f"https://{provider_host_port}/management/v3/assets"
payload = json.dumps(
generate_asset_metadata(dataProductId, dataProductName, dataProductFormatType, dataProductDescription, openAPI))
headers = {
'Content-Type': 'application/json',
'X-API-Key': header_authorization
}"""
headers = {
}
"""headers = {
'Content-Type': 'application/json'
}
}"""
response = requests.request("POST", url, headers=headers, data=payload)
print(f"Create asset response={response.text}")
......@@ -25,26 +31,27 @@ def invoke_create_asset(dataProductId:str,dataProductName:str, dataProductFormat
return response
def generate_asset_metadata(assetId:str,dataProductName:str,dataProductFormatType:str, dataProductDescription:str,openAPI:str):
def generate_asset_metadata(assetId: str, dataProductName: str, dataProductFormatType: str, dataProductDescription: str,
openAPI: str):
asset_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"dqv": "http://www.w3.org/ns/dqv#"
},
"@id": assetId,
"properties": {
"name": dataProductName,
"contenttype": dataProductFormatType,
},
"dataAddress": {
"type": "HttpData",
"name": dataProductDescription,
"baseUrl": openAPI,
"proxyQueryParams": "true",
"proxyPath": "true",
"proxyMethod": "true",
"proxyBody": "true"
}
}
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"dqv": "http://www.w3.org/ns/dqv#"
},
"@id": assetId,
"properties": {
"name": dataProductName,
"contenttype": dataProductFormatType,
},
"dataAddress": {
"type": "HttpData",
"name": dataProductDescription,
"baseUrl": openAPI,
"proxyQueryParams": "true",
"proxyPath": "true",
"proxyMethod": "true",
"proxyBody": "true"
}
}
return asset_metadata
......@@ -3,23 +3,24 @@ import json
import requests
def invoke_create_contract_definition(contract_id, policy_id, asset_id,header_authorization):
def invoke_create_contract_definition(contract_id, policy_id, asset_id, header_authorization):
provider_host = os.getenv("PROVIDER_HOST", "ekodata2.tri.lan")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT", "9193")
provider_host_port = os.getenv("PROVIDER_HOST_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v3/contractdefinitions"
# url = f"https://{provider_host_port}/management/v3/contractdefinitions"
payload = json.dumps(generate_contract_metadata(contract_id, policy_id, asset_id))
"""headers = {
headers = {
'Content-Type': 'application/json',
'X-API-Key': header_authorization
}"""
headers = {
'Content-Type': 'application/json'
}
"""headers = {
'Content-Type': 'application/json'
}"""
response = requests.request("POST", url, headers=headers, data=payload)
......@@ -44,53 +45,50 @@ def invoke_create_contract_definition_equal(contract_id, policy_id, asset_id):
return response
# def generate_contract_metadata(contract_id, policy_id, asset_id):
# contract_metadata = {
# "@context": {
# "edc": "https://w3id.org/edc/v0.0.1/ns/"
# },
# "@id": contract_id,
# "accessPolicyId": policy_id,
# "contractPolicyId": policy_id,
# "assetsSelector": {
# "@type": "edc:Criterion",
# "edc:operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
# "edc:operator": "in",
# "edc:operandRight": asset_id
# }
# }
# return contract_metadata
def generate_contract_metadata(contract_id, policy_id, asset_id):
def generate_contract_metadata(contract_id, policy_id, asset_id):
contract_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": []
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": []
}
return contract_metadata
"""def generate_contract_metadata(contract_id, policy_id, asset_id):
contract_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": {
"@type": "edc:Criterion",
"edc:operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"edc:operator": "in",
"edc:operandRight": asset_id
}
}
return contract_metadata"""
def generate_contract_metadata_equal(contract_id, policy_id, asset_id):
contract_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": {
"@type": "edc:Criterion",
"edc:operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"edc:operator": "=",
"edc:operandRight": asset_id
}
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": {
"@type": "edc:Criterion",
"edc:operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"edc:operator": "=",
"edc:operandRight": asset_id
}
}
return contract_metadata
\ No newline at end of file
return contract_metadata
......@@ -2,61 +2,67 @@ import json
import os
import requests
def checkPolicyId(policy_id,header_authorization):
def checkPolicyId(policy_id, header_authorization):
provider_host = os.getenv("PROVIDER_HOST")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT")
provider_host_port = os.getenv("PROVIDER_HOST_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v3/policydefinitions/request"
# url = f"https://{provider_host_port}/management/v3/policydefinitions/request"
"""headers = {
headers = {
'Content-Type': 'application/json',
'X-API-Key': header_authorization
}"""
headers = {
'Content-Type': 'application/json'
}
"""headers = {
'Content-Type': 'application/json'
}"""
response = requests.request("POST", url, headers=headers)
response_json=json.loads(response.text)
response_json = json.loads(response.text)
for policy in response_json:
print (policy.get("@id"))
print(policy.get("@id"))
if (policy.get("@id") == policy_id):
return True
break
def invoke_create_policy(policy_id,header_authorization):
def invoke_create_policy(policy_id, header_authorization):
provider_host = os.getenv("PROVIDER_HOST", "ekodata2.tri.lan")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT", "9193")
provider_host_port = os.getenv("PROVIDER_HOST_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v3/policydefinitions"
# url = f"https://{provider_host_port}/management/v3/policydefinitions"
payload = json.dumps(generate_policy_metadata_without_restrictions(policy_id))
"""headers = {
headers = {
'Content-Type': 'application/json',
'X-API-Key': header_authorization
}"""
headers = {
'Content-Type': 'application/json'
}
"""headers = {
'Content-Type': 'application/json'
}"""
response = requests.request("POST", url, headers=headers, data=payload)
print(f"Create policy response={response.text}")
return response
def invoke_create_policy_time(policy_id, policy_time_interval, policy_time_interval_start_date,
policy_time_interval_end_date):
policy_time_interval_end_date):
provider_host = os.getenv("PROVIDER_HOST", "ekodata2.tri.lan")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT", "9193")
url = f"http://{provider_host}:{provider_management_port}/management/v3/policydefinitions"
payload = json.dumps(generate_policy_metadata_time(policy_id, policy_time_interval, policy_time_interval_start_date,
policy_time_interval_end_date))
policy_time_interval_end_date))
headers = {
'Content-Type': 'application/json'
}
......@@ -66,72 +72,75 @@ def invoke_create_policy_time(policy_id, policy_time_interval, policy_time_inter
print(f"Create policy response={response.text}")
return response
def generate_policy_metadata_time(policy_id, policy_time_interval, policy_time_interval_start_date,
policy_time_interval_end_date):
policy_time_interval_end_date):
policy_metadata = {
"@context": {
"@vocab" : "https://w3id.org/edc/v0.0.1/ns/"
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": policy_id,
"@type": "edc:PolicyDefinition",
"policy": {
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@type": "Set",
"permission": [],
"prohibition": [],
"obligation": []
}
}
if (policy_time_interval == "true") and (len(policy_time_interval_start_date) > 0) and (len(policy_time_interval_end_date) > 0):
if (policy_time_interval == "true") and (len(policy_time_interval_start_date) > 0) and (
len(policy_time_interval_end_date) > 0):
permission_metadata = [
{
{
"action": "use",
"constraint": [
{
"@type": "AtomicConstraint",
"leftOperand": "https://w3id.org/edc/v0.0.1/ns/timeInterval",
"rightOperand": {
"@type": "xsd:date",
"@value": policy_time_interval_start_date
},
"operator": {
"@id":"odrl:gteq"
}
},
{
"@type": "AtomicConstraint",
"odrl:leftOperand": "https://w3id.org/edc/v0.0.1/ns/timeInterval",
"rightOperand": {
"@type": "xsd:date",
"@value": policy_time_interval_end_date
},
"operator": {
"@id": "odrl:lteq"
}
}
{
"@type": "AtomicConstraint",
"leftOperand": "https://w3id.org/edc/v0.0.1/ns/timeInterval",
"rightOperand": {
"@type": "xsd:date",
"@value": policy_time_interval_start_date
},
"operator": {
"@id": "odrl:gteq"
}
},
{
"@type": "AtomicConstraint",
"odrl:leftOperand": "https://w3id.org/edc/v0.0.1/ns/timeInterval",
"rightOperand": {
"@type": "xsd:date",
"@value": policy_time_interval_end_date
},
"operator": {
"@id": "odrl:lteq"
}
}
]
}
]
}
]
policy_metadata["policy"]["permission"].append(permission_metadata)
return policy_metadata
def generate_policy_metadata_without_restrictions(policy_id):
policy_metadata = {
"@context": {
"@vocab" : "https://w3id.org/edc/v0.0.1/ns/"
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": policy_id,
"@type": "edc:PolicyDefinition",
"policy": {
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@type": "Set",
"permission": [],
"prohibition": [],
"obligation": []
}
}
#edc 0.3.1
# edc 0.3.1
policy_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/",
......
File deleted
......@@ -4,6 +4,8 @@
LOGGING_LEVEL=10
DEBUG=True
CES_CHECK=True
DEVELOPMENT=false
RN_URL_END=lrn.json
......@@ -18,6 +20,8 @@ DATAPRODUCT_COMPACT=dataProduct_compact
SERVICEOFFERING=serviceOffering
FILE_END=.json
RSA_ALGO=PS256
ISSUER_KEY= "#JWK2020-RSA"
......@@ -34,38 +38,35 @@ CONTEXT_ITEM3=https://w3id.org/security/suites/jws-2020/v1
CONTEXT_LRN=https://registry.lab.gaia-x.eu/development/api/trusted-shape-registry/v1/shapes/jsonld/participant
NOTARIZATION_API=https://registrationnumber.notary.lab.gaia-x.eu/v1/registrationNumberVC
##OLD COMPLIANCE_API=https://compliance.lab.gaia-x.eu/v1/api/credential-offers
#COMPLIANCE_API=https://compliance.lab.gaia-x.eu/v1/api/credential-offers
COMPLIANCE_API=https://compliance.lab.gaia-x.eu/v1-staging/api/credential-offers
CREDENTIALS_EVENT_SERVICE_API_v1=https://ces-v1.lab.gaia-x.eu/credentials-events
#CREDENTIALS_EVENT_SERVICE_API=https://ces-development.lab.gaia-x.eu/v2/credentials-events
NOTARIZATION_API_DEV=https://registrationnumber.notary.lab.gaia-x.eu/v1-staging/registrationNumberVC
COMPLIANCE_API_DEV=https://compliance.lab.gaia-x.eu/v1-staging/api/credential-offers
CREDENTIALS_EVENT_SERVICE_API= https://ces-main.lab.gaia-x.eu/credentials-events
NOTARIZATION_API_DEV=https://registrationnumber.notary.lab.gaia-x.eu/development/registrationNumberVC
COMPLIANCE_API_DEV=https://compliance.lab.gaia-x.eu/development/api/credential-offers
CREDENTIALS_EVENT_SERVICE_API_DEV=https://ces-development.lab.gaia-x.eu/credentials-events
ISO_CODES_URL=https://iso3166-2-api.vercel.app/api/subdivision/
VATCHECKER_API=https://ec.europa.eu/taxation_customs/vies/rest-api/ms/
GAIAX_SD_FOLDER=/var/www/html/.well-known/
NEO4J_IMPORT_FOLDER=/var/lib/neo4j/import/
GAIAX_SD_FOLDER=E:\TRABAJO\Proyectos_abiertos\DATAMITE\CODIGO\gaiax-selfdescriptor-module\app\
#GAIAX_SD_FOLDER=/var/www/html/.well-known/
NEO4J_IMPORT_FOLDER_LOCAL=E:\TRABAJO\Proyectos_abiertos\DATAMITE\CODIGO\gaiax-selfdescriptor-module\app\
NEO4J_IMPORT_FOLDER_LOCAL=/var/lib/neo4j/import/
NEO4J_IMPORT_FOLDER=/var/lib/neo4j/import/
NEO4J_URI=bolt://datamite:7687
NEO4J_URI=bolt://oasees_neo4j:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=tecnalia
......@@ -73,46 +74,16 @@ NEO4J_PASSWORD=tecnalia
POSTGRES_USER=postgres
POSTGRES_PASSWORD=12345
POSTGRES_PORT=5432
POSTGRES_HOST=datamite
POSTGRES_HOST=oasees_postgres
CERTIFICATE_URL=https://datamite.digital.tecnalia.dev/.well-known/x509CertificateChain.pem
#CERTIFICATE_URL=https://gaiax.oasees.digital.tecnalia.dev/.well-known/oasees.crt
CERTIFICATE_URL=https://gaiax.oasees.digital.tecnalia.dev/.well-known/oasees.crt
PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCiQU6f0fVkZWmO
QifKcQDF2zBtHfQh+OUx5ZplmWnIJ4OA2DUnkFAmsGJ9UBbnp35wfUnJ2g/xN7Es
fJsz6MmdOCBvACYY2UeEM1ti/KM5wC4PeUVIWBfubpFKbvjEiDkrPq95Elu5tpp0
ZpJDgcpezlGTtvUbISRK2Aam5InuWDpZjsb2mlbxL0LINvr7mJrCpHa6E+QGwORk
ROe4oHOLVF3p3AJ3UuCljf7P7LwoGBKL/Cy2yXbw+14K6Nrm7rPWWJmMXZPAskTj
43U4mHwKXQDhFRnCJO1WAx83G0HhSomSmYMfm07gl2WP1FeyqXHEk4XjkRcZbYl/
fOssCXwbAgMBAAECggEAMNpyBmvss2xXcmZX3bvVjD05YPleWuY6eCIWMVYWRBYl
oaM3qfBpOaTtGqcFJn3Hc649i+G04B+xIGBqSKBkKArQtSs5zUyKnHLsJqtDqC1F
kRIl+qjPl9JBu8Qa8e3ELNGketM8u/ePnNGPY3UOTipX5J53QVJiv4g4xIJWR2Vd
O2nY00eRzgENHYl9Z2glCqJ4OytinS7i7j9OCB4/J9okJQ4US1A1ckgoKaNApiVn
KBRRQDABbmkrC8cIdhLZ4eN523lOZDy5R5Ezo2DhWSEo43ZbjB0M87vqmE89ysi7
sRHPQ2Wp3bJiR3zydRtXTxz3zrxlGYteKyRynBtA3QKBgQC/BtDDd1um7JMioEoz
zUZDrM0hvs+JK/HzNhkZJqjO9p31LUyQDQuxCKODEFRc9O7btTnmD3EPKWGKAxP8
2szYcwu0HylUTKu5vJjAB2vhJ3OmOND2XWTfEtVJo9c2b5zshYqBz+ZrNq1hteSb
wiC5xoeyStJwSdOT7lEIsI7w3wKBgQDZcUfn9zFjfHsHUtBi4k17dZ42FvoY5ycV
Lh29cIzppOf3z/+Nlu7R6W0LCyrEkdxL+RZQbd6LJzBBvEJ9ky0SutWlmp9M9UXU
A/cVk+wFGA62Dd13N0HeL3KxhoCBqI/00cauDr4d1rwBOCdaMkYENl+mRWF4rzNR
BG06ov9wRQKBgFJdu/IsKuakpySM/LGtVxijD6f3QEEjI6X8s4G2u57Rk3Y92/9Y
wKvKz8YZambSbZNqZtad3d/ttdLuVNX3+c9ye59kuEtS69CgUzSpfoiMnD8VzHQN
/Qp6cmDYNlmQcpdBVWF3pSChaMzywumuILI5uhTUUjx8eLAWV/ZpOpj9AoGAEy1e
fiLbBD8ySo8POeljlAPnlDWqkQ+x7rhGfzKx+tlEbCK4EzDAl1rS9ypg9z02BK1P
PoCyI+us4d9Mre6RBxnbRePBMPRg2DYRUKHfKwPYKE5Ivf7tnD7rCqUmKElJiPoH
X8qFEfSiWCkvr1DHxA9XmD5+PjqVeAu/5nABv1ECgYBKzC56hMvTkLso42QwbXXZ
6v1c/eRIyYGopoH0pCP10ckGMGncthuxUDHqW8A0EP4jQQowwrBsHGnWe9otXE/H
Dg1Q3VfSjBKTHWlfqnxwGZ5hupKjT4BUx4ZpXzAqI4Ir+P/WZcbPMEvR0zI4TEaA
RoEnkJmWC7BV15CFdyBtng==
-----END PRIVATE KEY-----"
PRIVATE_KEY_OASEES="-----BEGIN PRIVATE KEY-----
PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDXHSBmv7aDvKeY
Deq1z6oR/H7RyLnT5Rcx1adFJO7yOcw87Qb7+QiOV0JY05192YUiGRowfBEFZ8YQ
hV7DajftAlzvTh7dSUp4rIhvNxud9DNbnaOi9951MM/sJ1jpEBzQPTLKUjLLt2Fr
......@@ -142,9 +113,11 @@ Urbz/GqWw2FUqcJLFloRodkVaA==
-----END PRIVATE KEY-----"
#EDC INFO
PORT=9102
POLICY_ID=no-restriction-policy
CONTRACT_ID=contract_no_restriction
......@@ -152,8 +125,13 @@ CONTRACT_ID=contract_no_restriction
#POLICY_TIME_INTERVAL_START_DATE=2022-12-31T23:00:00.000Z
#POLICY_TIME_INTERVAL_END_DATE=2026-09-30T23:00:00.000Z
PROVIDER_HOST=hx2023-002.tri.lan
#PROVIDER_HOST=oasees.tri.lan
PROVIDER_HOST=oasees.tri.lan
PROVIDER_CONTROL_PORT=9192
PROVIDER_MANAGEMENT_PORT=9193
HEADER_AUTHORIZATION=2dSXJqNXgKAf08PINHOpwTgbcIE5tNgS
\ No newline at end of file
#PROVIDER_HOST_PORT=mgmt.connector.prov.hx001.digital.tecnalia.dev
HEADER_AUTHORIZATION=2dSXJqNXgKAf08PINHOpwTgbcIE5tNgS
../code/app/local_wheels/datamite-1.0-py2.py3-none-any.whl
../code/app/local_wheels/datamite-1.14-py2.py3-none-any.whl
uvicorn~=0.27.1
fastapi~=0.109.2
cryptography~=42.0.2
......
import json
import os
from datamite.models.dataProductResourcesBody import DataProductResourcesModel
from fastapi import HTTPException
......@@ -42,4 +41,5 @@ def load_asset_edc(body:DataProductResourcesModel, dataResouceAPi_URL:str):
print (f'Asset {body.dataProductName} created')
return True
return (f'Asset {body.dataProductName} created')
......@@ -3,21 +3,27 @@ import json
import requests
def invoke_create_asset(dataProductId:str,dataProductName:str, dataProductFormatType:str,dataProductDescription:str,openAPI:str,header_authorization:str):
def invoke_create_asset(dataProductId: str, dataProductName: str, dataProductFormatType: str,
dataProductDescription: str, openAPI: str, header_authorization: str):
provider_host = os.getenv("PROVIDER_HOST")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT")
provider_host_port = os.getenv("PROVIDER_HOST_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v3/assets"
payload = json.dumps(generate_asset_metadata(dataProductId,dataProductName,dataProductFormatType,dataProductDescription,openAPI))
"""headers = {
# url = f"https://{provider_host_port}/management/v3/assets"
payload = json.dumps(
generate_asset_metadata(dataProductId, dataProductName, dataProductFormatType, dataProductDescription, openAPI))
headers = {
'Content-Type': 'application/json',
'X-API-Key': header_authorization
}"""
headers = {
}
"""headers = {
'Content-Type': 'application/json'
}
}"""
response = requests.request("POST", url, headers=headers, data=payload)
print(f"Create asset response={response.text}")
......@@ -25,26 +31,27 @@ def invoke_create_asset(dataProductId:str,dataProductName:str, dataProductFormat
return response
def generate_asset_metadata(assetId:str,dataProductName:str,dataProductFormatType:str, dataProductDescription:str,openAPI:str):
def generate_asset_metadata(assetId: str, dataProductName: str, dataProductFormatType: str, dataProductDescription: str,
openAPI: str):
asset_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"dqv": "http://www.w3.org/ns/dqv#"
},
"@id": assetId,
"properties": {
"name": dataProductName,
"contenttype": dataProductFormatType,
},
"dataAddress": {
"type": "HttpData",
"name": dataProductDescription,
"baseUrl": openAPI,
"proxyQueryParams": "true",
"proxyPath": "true",
"proxyMethod": "true",
"proxyBody": "true"
}
}
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"dqv": "http://www.w3.org/ns/dqv#"
},
"@id": assetId,
"properties": {
"name": dataProductName,
"contenttype": dataProductFormatType,
},
"dataAddress": {
"type": "HttpData",
"name": dataProductDescription,
"baseUrl": openAPI,
"proxyQueryParams": "true",
"proxyPath": "true",
"proxyMethod": "true",
"proxyBody": "true"
}
}
return asset_metadata
......@@ -3,23 +3,24 @@ import json
import requests
def invoke_create_contract_definition(contract_id, policy_id, asset_id,header_authorization):
def invoke_create_contract_definition(contract_id, policy_id, asset_id, header_authorization):
provider_host = os.getenv("PROVIDER_HOST", "ekodata2.tri.lan")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT", "9193")
url = f"http://{provider_host}:{provider_management_port}/management/v2/contractdefinitions"
provider_host_port = os.getenv("PROVIDER_HOST_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v3/contractdefinitions"
# url = f"https://{provider_host_port}/management/v3/contractdefinitions"
payload = json.dumps(generate_contract_metadata(contract_id, policy_id, asset_id))
"""headers = {
headers = {
'Content-Type': 'application/json',
'X-API-Key': header_authorization
}"""
headers = {
'Content-Type': 'application/json'
}
"""headers = {
'Content-Type': 'application/json'
}"""
response = requests.request("POST", url, headers=headers, data=payload)
......@@ -31,7 +32,7 @@ def invoke_create_contract_definition_equal(contract_id, policy_id, asset_id):
provider_host = os.getenv("PROVIDER_HOST", "ekodata2.tri.lan")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT", "9193")
url = f"http://{provider_host}:{provider_management_port}/management/v2/contractdefinitions"
url = f"http://{provider_host}:{provider_management_port}/management/v3/contractdefinitions"
payload = json.dumps(generate_contract_metadata_equal(contract_id, policy_id, asset_id))
headers = {
......@@ -44,39 +45,50 @@ def invoke_create_contract_definition_equal(contract_id, policy_id, asset_id):
return response
# def generate_contract_metadata(contract_id, policy_id, asset_id):
# contract_metadata = {
# "@context": {
# "edc": "https://w3id.org/edc/v0.0.1/ns/"
# },
# "@id": contract_id,
# "accessPolicyId": policy_id,
# "contractPolicyId": policy_id,
# "assetsSelector": {
# "@type": "edc:Criterion",
# "edc:operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
# "edc:operator": "in",
# "edc:operandRight": asset_id
# }
# }
# return contract_metadata
def generate_contract_metadata(contract_id, policy_id, asset_id):
contract_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": {
"@type": "edc:Criterion",
"edc:operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"edc:operator": "in",
"edc:operandRight": asset_id
}
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": []
}
return contract_metadata
def generate_contract_metadata_equal(contract_id, policy_id, asset_id):
contract_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": {
"@type": "edc:Criterion",
"edc:operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"edc:operator": "=",
"edc:operandRight": asset_id
}
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": contract_id,
"accessPolicyId": policy_id,
"contractPolicyId": policy_id,
"assetsSelector": {
"@type": "edc:Criterion",
"edc:operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"edc:operator": "=",
"edc:operandRight": asset_id
}
}
return contract_metadata
\ No newline at end of file
return contract_metadata
......@@ -2,61 +2,67 @@ import json
import os
import requests
def checkPolicyId(policy_id,header_authorization):
def checkPolicyId(policy_id, header_authorization):
provider_host = os.getenv("PROVIDER_HOST")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v2/policydefinitions/request"
provider_host_port = os.getenv("PROVIDER_HOST_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v3/policydefinitions/request"
"""headers = {
# url = f"https://{provider_host_port}/management/v3/policydefinitions/request"
headers = {
'Content-Type': 'application/json',
'X-API-Key': header_authorization
}"""
headers = {
'Content-Type': 'application/json'
}
"""headers = {
'Content-Type': 'application/json'
}"""
response = requests.request("POST", url, headers=headers)
response_json=json.loads(response.text)
response_json = json.loads(response.text)
for policy in response_json:
print (policy.get("@id"))
print(policy.get("@id"))
if (policy.get("@id") == policy_id):
return True
break
def invoke_create_policy(policy_id,header_authorization):
def invoke_create_policy(policy_id, header_authorization):
provider_host = os.getenv("PROVIDER_HOST", "ekodata2.tri.lan")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT", "9193")
url = f"http://{provider_host}:{provider_management_port}/management/v2/policydefinitions"
provider_host_port = os.getenv("PROVIDER_HOST_PORT")
url = f"http://{provider_host}:{provider_management_port}/management/v3/policydefinitions"
# url = f"https://{provider_host_port}/management/v3/policydefinitions"
payload = json.dumps(generate_policy_metadata_without_restrictions(policy_id))
"""headers = {
headers = {
'Content-Type': 'application/json',
'X-API-Key': header_authorization
}"""
headers = {
'Content-Type': 'application/json'
}
"""headers = {
'Content-Type': 'application/json'
}"""
response = requests.request("POST", url, headers=headers, data=payload)
print(f"Create policy response={response.text}")
return response
def invoke_create_policy_time(policy_id, policy_time_interval, policy_time_interval_start_date,
policy_time_interval_end_date):
policy_time_interval_end_date):
provider_host = os.getenv("PROVIDER_HOST", "ekodata2.tri.lan")
provider_management_port = os.getenv("PROVIDER_MANAGEMENT_PORT", "9193")
url = f"http://{provider_host}:{provider_management_port}/management/v2/policydefinitions"
url = f"http://{provider_host}:{provider_management_port}/management/v3/policydefinitions"
payload = json.dumps(generate_policy_metadata_time(policy_id, policy_time_interval, policy_time_interval_start_date,
policy_time_interval_end_date))
policy_time_interval_end_date))
headers = {
'Content-Type': 'application/json'
}
......@@ -66,72 +72,75 @@ def invoke_create_policy_time(policy_id, policy_time_interval, policy_time_inter
print(f"Create policy response={response.text}")
return response
def generate_policy_metadata_time(policy_id, policy_time_interval, policy_time_interval_start_date,
policy_time_interval_end_date):
policy_time_interval_end_date):
policy_metadata = {
"@context": {
"@vocab" : "https://w3id.org/edc/v0.0.1/ns/"
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": policy_id,
"@type": "edc:PolicyDefinition",
"policy": {
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@type": "Set",
"permission": [],
"prohibition": [],
"obligation": []
}
}
if (policy_time_interval == "true") and (len(policy_time_interval_start_date) > 0) and (len(policy_time_interval_end_date) > 0):
if (policy_time_interval == "true") and (len(policy_time_interval_start_date) > 0) and (
len(policy_time_interval_end_date) > 0):
permission_metadata = [
{
{
"action": "use",
"constraint": [
{
"@type": "AtomicConstraint",
"leftOperand": "https://w3id.org/edc/v0.0.1/ns/timeInterval",
"rightOperand": {
"@type": "xsd:date",
"@value": policy_time_interval_start_date
},
"operator": {
"@id":"odrl:gteq"
}
},
{
"@type": "AtomicConstraint",
"odrl:leftOperand": "https://w3id.org/edc/v0.0.1/ns/timeInterval",
"rightOperand": {
"@type": "xsd:date",
"@value": policy_time_interval_end_date
},
"operator": {
"@id": "odrl:lteq"
}
}
{
"@type": "AtomicConstraint",
"leftOperand": "https://w3id.org/edc/v0.0.1/ns/timeInterval",
"rightOperand": {
"@type": "xsd:date",
"@value": policy_time_interval_start_date
},
"operator": {
"@id": "odrl:gteq"
}
},
{
"@type": "AtomicConstraint",
"odrl:leftOperand": "https://w3id.org/edc/v0.0.1/ns/timeInterval",
"rightOperand": {
"@type": "xsd:date",
"@value": policy_time_interval_end_date
},
"operator": {
"@id": "odrl:lteq"
}
}
]
}
]
}
]
policy_metadata["policy"]["permission"].append(permission_metadata)
return policy_metadata
def generate_policy_metadata_without_restrictions(policy_id):
policy_metadata = {
"@context": {
"@vocab" : "https://w3id.org/edc/v0.0.1/ns/"
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@id": policy_id,
"@type": "edc:PolicyDefinition",
"policy": {
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@type": "Set",
"permission": [],
"prohibition": [],
"obligation": []
}
}
#edc 0.3.1
# edc 0.3.1
policy_metadata = {
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/",
......
#INFO level:
# INFO level:
#LOGGING_LEVEL=20
# DEBUG level:
LOGGING_LEVEL=10
DEBUG=True
CES_CHECK=True
DEVELOPMENT=false
RN_URL_END=lrn.json
TC_URL_END=tsandcs.json
......@@ -35,8 +38,15 @@ CONTEXT_ITEM3=https://w3id.org/security/suites/jws-2020/v1
CONTEXT_LRN=https://registry.lab.gaia-x.eu/development/api/trusted-shape-registry/v1/shapes/jsonld/participant
NOTARIZATION_API=https://registrationnumber.notary.lab.gaia-x.eu/v1/registrationNumberVC
COMPLIANCE_API=https://compliance.lab.gaia-x.eu/v1/api/credential-offers
CREDENTIALS_EVENT_SERVICE_API=https://ces-v1.lab.gaia-x.eu/credentials-events
#COMPLIANCE_API=https://compliance.lab.gaia-x.eu/v1/api/credential-offers
COMPLIANCE_API=https://compliance.lab.gaia-x.eu/v1-staging/api/credential-offers
#CREDENTIALS_EVENT_SERVICE_API=https://ces-development.lab.gaia-x.eu/v2/credentials-events
CREDENTIALS_EVENT_SERVICE_API= https://ces-main.lab.gaia-x.eu/credentials-events
NOTARIZATION_API_DEV=https://registrationnumber.notary.lab.gaia-x.eu/development/registrationNumberVC
......@@ -56,7 +66,7 @@ NEO4J_IMPORT_FOLDER=/var/lib/neo4j/import/
NEO4J_URI=bolt://datamite_neo4j:7687
NEO4J_URI=bolt://oasees_neo4j:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=tecnalia
......@@ -64,13 +74,12 @@ NEO4J_PASSWORD=tecnalia
POSTGRES_USER=postgres
POSTGRES_PASSWORD=12345
POSTGRES_PORT=5432
POSTGRES_HOST=datamite_postgres
POSTGRES_HOST=oasees_postgres
#CERTIFICATE_URL=https://datamite.digital.tecnalia.dev/.well-known/x509CertificateChain.pem
CERTIFICATE_URL=https://gaiax.oasees.digital.tecnalia.dev/.well-known/oasees.crt
......@@ -108,7 +117,7 @@ Urbz/GqWw2FUqcJLFloRodkVaA==
#EDC INFO
#PORT=9102
POLICY_ID=no-restriction-policy
CONTRACT_ID=contract_no_restriction
......@@ -116,10 +125,13 @@ CONTRACT_ID=contract_no_restriction
#POLICY_TIME_INTERVAL_START_DATE=2022-12-31T23:00:00.000Z
#POLICY_TIME_INTERVAL_END_DATE=2026-09-30T23:00:00.000Z
#PROVIDER_HOST=hx2023-002.tri.lan
PROVIDER_HOST=172.26.40.187
#PROVIDER_HOST=oasees.tri.lan
PROVIDER_HOST=oasees.tri.lan
PROVIDER_CONTROL_PORT=9192
PROVIDER_MANAGEMENT_PORT=9193
#PROVIDER_HOST_PORT=mgmt.connector.prov.hx001.digital.tecnalia.dev
HEADER_AUTHORIZATION=2dSXJqNXgKAf08PINHOpwTgbcIE5tNgS
../code/app/local_wheels/datamite-1.13-py2.py3-none-any.whl
../code/app/local_wheels/datamite-1.14-py2.py3-none-any.whl
uvicorn~=0.27.1
fastapi~=0.109.2
cryptography~=42.0.2
......
......@@ -119,6 +119,9 @@ CONTRACT_ID=contract_no_restriction
#PROVIDER_HOST=hx2023-002.tri.lan
PROVIDER_MANAGEMENT_HOST_PORT=mgmt.connector.prov.hx001.digital.tecnalia.dev
PROVIDER_HOST=172.26.40.187
#PROVIDER_HOST=oasees.tri.lan
PROVIDER_CONTROL_PORT=9192
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment