diff --git a/pyproject.toml b/pyproject.toml index ae8664634a5e82ff14d95de4f8f9c3a514365265..889daa1da97b84a2f3e07f99c8584eebde88701d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "sunrise6g-opensdk" -version = "1.0.14" +version = "1.0.15" description = "Open source SDK to abstract CAMARA/GSMA Transformation Functions (TFs) for Edge Cloud platforms, 5G network cores and Open RAN solutions." keywords = [ "Federation", diff --git a/tests/edgecloud/test_config_gsma.py b/tests/edgecloud/test_config_gsma.py index 94fea67121eaaffe57b0ac6b87352b78b37b5b6b..4cb97dffde930dfb197d5ebef053dd67768ba025 100644 --- a/tests/edgecloud/test_config_gsma.py +++ b/tests/edgecloud/test_config_gsma.py @@ -1,11 +1,6 @@ CONFIG = { "i2edge": { "ZONE_ID": "f0662bfe-1d90-5f59-a759-c755b3b69b93", - "ARTEFACT_ID": "9c9143f0-f44f-49df-939e-1e8b891ba8f5", - "ARTEFACT_NAME": "i2edgechart", - "REPO_NAME": "github-cesar", - "REPO_TYPE": "PUBLICREPO", - "REPO_URL": "https://cesarcajas.github.io/helm-charts-examples/", "APP_ONBOARD_MANIFEST_GSMA": { "appId": "demo-app-id", "appProviderId": "Y89TSlxMPDKlXZz7rN6vU2y", @@ -32,7 +27,7 @@ CONFIG = { "serviceNameNB": "k8yyElSyJN4ctbNVqwodEQNUoGb2EzOEt4vQBjGnPii_5", "serviceNameEW": "iDm08OZN", "componentName": "HIEWqstajCmZJQmSFUj0kNHZ0xYvKWq720BKt8wjA41p", - "artefactId": "9c9143f0-f44f-49df-939e-1e8b891ba8f5", + "artefactId": "i2edgechart", } ], "appStatusCallbackLink": "string", @@ -64,22 +59,104 @@ CONFIG = { "serviceNameNB": "7CI_9d4lAK90vU4ASUkKxYdQjsv3y3IuwucISSQ6lG5_EMqeyVUHPIhwa5", "serviceNameEW": "tPihoUFj30938Bu9blpsHkvsec1iA7gqZZRMpsx6o7aSSj5", "componentName": "YCAhqPadfld8y68wJfTc6QNGguI41z", - "artefactId": "9c9143f0-f44f-49df-939e-1e8b891ba8f5", + "artefactId": "i2edgechart", }, { "serviceNameNB": "JCjR0Lc3J0sm2PcItECdbHXtpCLQCfq3B", "serviceNameEW": "N8KBAdqT8L_sWOxeFZs3XYn6oykTTFHLiPKOS7kdYbw", "componentName": "9aCfCEDe2Dv0Peg", - "artefactId": "9c9143f0-f44f-49df-939e-1e8b891ba8f5", + "artefactId": "i2edgechart", }, { "serviceNameNB": "RIfXlfU9cDeLnrOBYzz9LJGdAjwPRp_3Mjp0Wq_RDlQiAPyXm", "serviceNameEW": "31y8sCwvvyNCXfwtLhwJw6hoblG7ZcFzEjyFdAnzq7M8cxiOtDik0", "componentName": "3kTa4zKEX", - "artefactId": "9c9143f0-f44f-49df-939e-1e8b891ba8f5", + "artefactId": "i2edgechart", }, ], }, + "ARTEFACT_GSMA": { + "artefactId": "i2edgechart", + "appProviderId": "string", + "artefactName": "i2edgechart", + "artefactVersionInfo": "string", + "artefactDescription": "string", + "artefactVirtType": "VM_TYPE", + "artefactFileName": "string", + "artefactFileFormat": "ZIP", + "artefactDescriptorType": "HELM", + "repoType": "PUBLICREPO", + "artefactRepoLocation": { + "repoURL": "https://cesarcajas.github.io/helm-charts-examples/", + "userName": "string", + "password": "string", + "token": "string", + }, + "artefactFile": "string", + "componentSpec": [ + { + "componentName": "string", + "images": ["3fa85f64-5717-4562-b3fc-2c963f66afa6"], + "numOfInstances": 0, + "restartPolicy": "RESTART_POLICY_ALWAYS", + "commandLineParams": {"command": ["string"], "commandArgs": ["string"]}, + "exposedInterfaces": [ + { + "interfaceId": "string", + "commProtocol": "TCP", + "commPort": 0, + "visibilityType": "VISIBILITY_EXTERNAL", + "network": "string", + "InterfaceName": "string", + } + ], + "computeResourceProfile": { + "cpuArchType": "ISA_X86_64", + "numCPU": { + "whole": {"value": 2}, + "decimal": {"value": 0.5}, + "millivcpu": {"value": "500m"}, + }, + "memory": 0, + "diskStorage": 0, + "gpu": [ + { + "gpuVendorType": "GPU_PROVIDER_NVIDIA", + "gpuModeName": "string", + "gpuMemory": 0, + "numGPU": 0, + } + ], + "vpu": 0, + "fpga": 0, + "hugepages": [{"pageSize": "2MB", "number": 0}], + "cpuExclusivity": True, + }, + "compEnvParams": [ + { + "envVarName": "string", + "envValueType": "USER_DEFINED", + "envVarValue": "string", + "envVarSrc": "string", + } + ], + "deploymentConfig": { + "configType": "DOCKER_COMPOSE", + "contents": "string", + }, + "persistentVolumes": [ + { + "volumeSize": "10Gi", + "volumeMountPath": "string", + "volumeName": "string", + "ephemeralType": False, + "accessMode": "RW", + "sharingPolicy": "EXCLUSIVE", + } + ], + } + ], + }, }, "aeros": { # PLACEHOLDER diff --git a/tests/edgecloud/test_e2e_gsma.py b/tests/edgecloud/test_e2e_gsma.py index 2bfe38a9f0a2951c85a2973000fe25299a863f3f..d2c361cee1e0afe70f3802f0a62959dffb1e1544 100644 --- a/tests/edgecloud/test_e2e_gsma.py +++ b/tests/edgecloud/test_e2e_gsma.py @@ -58,6 +58,11 @@ def test_config_gsma_compliance(edgecloud_client): config = CONFIG[edgecloud_client.client_name] try: + # Validate ARTEFACT is GSMA-compliant + if "ARTEFACT_GSMA" in config: + artefact_manifest = config["ARTEFACT_GSMA"] + gsma_schemas.Artefact(**artefact_manifest) + # Validate APP_ONBOARD_MANIFEST_GSMA is GSMA-compliant if "APP_ONBOARD_MANIFEST_GSMA" in config: app_manifest = config["APP_ONBOARD_MANIFEST_GSMA"] @@ -161,17 +166,9 @@ def test_artefact_methods_gsma(edgecloud_client): config = CONFIG[edgecloud_client.client_name] if isinstance(edgecloud_client, I2EdgeClient): try: - response = edgecloud_client.create_artefact( - artefact_id=config["ARTEFACT_ID"], - artefact_name=config["ARTEFACT_NAME"], - repo_name=config["REPO_NAME"], - repo_type=config["REPO_TYPE"], - repo_url=config["REPO_URL"], - password=None, - token=None, - user_name=None, - ) - assert response.status_code == 201 + artefact_manifest = config["ARTEFACT_GSMA"] + response = edgecloud_client.create_artefact_gsma(artefact_manifest) + assert response.status_code == 200 except EdgeCloudPlatformError as e: pytest.fail(f"Artefact creation failed: {e}") @@ -179,7 +176,7 @@ def test_artefact_methods_gsma(edgecloud_client): @pytest.mark.parametrize("edgecloud_client", test_cases, ids=id_func, indirect=True) def test_get_artefact_gsma(edgecloud_client): config = CONFIG[edgecloud_client.client_name] - expected_artefact_id = config["ARTEFACT_ID"] + expected_artefact_id = config["ARTEFACT_GSMA"]["artefactId"] try: response = edgecloud_client.get_artefact_gsma(expected_artefact_id) assert isinstance(response, Response) @@ -361,7 +358,7 @@ def test_delete_artefact_gsma(edgecloud_client): if isinstance(edgecloud_client, I2EdgeClient): try: - response = edgecloud_client.delete_artefact_gsma(config["ARTEFACT_ID"]) + response = edgecloud_client.delete_artefact_gsma(config["ARTEFACT_GSMA"]["artefactId"]) assert isinstance(response, Response) assert response.status_code == 200 except EdgeCloudPlatformError as e: