aboutsummaryrefslogtreecommitdiffstats
path: root/onap-client/onap_client/sdc
diff options
context:
space:
mode:
Diffstat (limited to 'onap-client/onap_client/sdc')
-rw-r--r--onap-client/onap_client/sdc/catalog/service_catalog.py22
-rw-r--r--onap-client/onap_client/sdc/service.py21
2 files changed, 43 insertions, 0 deletions
diff --git a/onap-client/onap_client/sdc/catalog/service_catalog.py b/onap-client/onap_client/sdc/catalog/service_catalog.py
index aeaa3da..c40306f 100644
--- a/onap-client/onap_client/sdc/catalog/service_catalog.py
+++ b/onap-client/onap_client/sdc/catalog/service_catalog.py
@@ -495,4 +495,26 @@ CATALOG_RESOURCES = {
sdc_properties.GLOBAL_SDC_PASSWORD,
),
},
+ "GET_SDC_CSAR": {
+ "verb": "GET",
+ "description": "Returns the CSAR for a service.",
+ "uri": partial(
+ "{endpoint}{service_path}/{catalog_service_id}/artifacts/{csar_artifact_id}".format,
+ endpoint=sdc_properties.SDC_BE_ENDPOINT,
+ service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH,
+ ),
+ "uri-parameters": ["catalog_service_id", "csar_artifact_id"],
+ "success_code": 200,
+ "headers": {
+ "Accept": "application/json",
+ "Content-Type": "application/json",
+ "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID,
+ "X-TransactionId": str(uuid.uuid4()),
+ "X-FromAppId": application_id,
+ },
+ "auth": (
+ sdc_properties.GLOBAL_SDC_USERNAME,
+ sdc_properties.GLOBAL_SDC_PASSWORD,
+ ),
+ },
}
diff --git a/onap-client/onap_client/sdc/service.py b/onap-client/onap_client/sdc/service.py
index 1b91c61..8b9c68b 100644
--- a/onap-client/onap_client/sdc/service.py
+++ b/onap-client/onap_client/sdc/service.py
@@ -43,6 +43,7 @@ from onap_client.sdc.vnf import get_vnf_id
from onap_client.sdc import SDC_PROPERTIES
from onap_client.util import utility
+import base64
import time
import json
import random
@@ -474,3 +475,23 @@ def poll_distribution(service_name):
raise exceptions.DistributionTimeout(
"Distribution polling timed out waiting for {}".format(service_name)
)
+
+
+@utility
+def download_csar(service_name, output_file):
+ oc = Client()
+
+ service = get_service(service_name)
+ artifact_id = service.get("toscaArtifacts", {}).get("assettoscacsar", {}).get("uniqueId")
+
+ csar_data = oc.sdc.service.get_sdc_csar(
+ catalog_service_id=service.get("uniqueId"),
+ csar_artifact_id=artifact_id
+ ).response_data
+
+ data = base64.b64decode(csar_data.get("base64Contents"))
+
+ output_file = f"{output_file}.csar" if not output_file.endswith(".csar") else output_file
+
+ with open(output_file, "wb") as f:
+ f.write(data)