aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--onap-client/onap_client/sdc/catalog/service_catalog.py26
-rw-r--r--onap-client/onap_client/sdc/service.py28
-rw-r--r--onap-client/setup.py2
3 files changed, 55 insertions, 1 deletions
diff --git a/onap-client/onap_client/sdc/catalog/service_catalog.py b/onap-client/onap_client/sdc/catalog/service_catalog.py
index c845422..aad645f 100644
--- a/onap-client/onap_client/sdc/catalog/service_catalog.py
+++ b/onap-client/onap_client/sdc/catalog/service_catalog.py
@@ -402,6 +402,32 @@ class ServiceCatalog(SDCClient):
self.global_sdc_password,
),
},
+ "UPDATE_MODULE_DEPLOYMENT_PROPERTIES": {
+ "verb": "POST",
+ "description": "Updates the deployment properties for a module.",
+ "uri": partial(
+ "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{catalog_resource_instance_id}/artifacts/{module_id}".format,
+ endpoint=self.config.sdc.SDC_BE_ENDPOINT,
+ service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH,
+ ),
+ "uri-parameters": ["catalog_service_id", "catalog_resource_instance_id", "module_id"],
+ "payload": "{}/generic_payload.jinja".format(PAYLOADS_DIR),
+ "payload-parameters": [
+ "payload_data",
+ ],
+ "success_code": 200,
+ "headers": {
+ "Accept": "application/json",
+ "Content-Type": "application/json",
+ "USER_ID": self.sdc_designer_user_id,
+ "X-TransactionId": str(uuid.uuid4()),
+ "X-FromAppId": application_id,
+ },
+ "auth": (
+ self.global_sdc_username,
+ self.global_sdc_password,
+ ),
+ },
"GET_SDC_SERVICE": {
"verb": "GET",
"description": "Gets a service from the SDC Catalog",
diff --git a/onap-client/onap_client/sdc/service.py b/onap-client/onap_client/sdc/service.py
index 5f2f918..6aace73 100644
--- a/onap-client/onap_client/sdc/service.py
+++ b/onap-client/onap_client/sdc/service.py
@@ -110,6 +110,7 @@ class Service(Resource):
"catalog_resource_name": {"type": str, "required": False},
"origin_type": {"type": str, "required": False, "default": "VF"},
"properties": {"type": dict, "required": False, "default": {}},
+ "deployment_properties": {"type": dict, "required": False, "default": {}}
},
},
"allow_update": {"type": bool, "required": False, "default": False},
@@ -157,6 +158,9 @@ class Service(Resource):
v = json.dumps(v).replace('"', '\\"')
self.add_property_value(resource_name, k, v)
+ if resource.get("deployment_properties"):
+ self.update_resource_deployment_properties(resource_name, resource.get("deployment_properties"))
+
def _submit(self):
"""Submits the service in SDC and distributes the model"""
oc = Client()
@@ -244,6 +248,30 @@ class Service(Resource):
self._refresh()
+ def update_resource_deployment_properties(self, resource_name, deployment_properties):
+ vnf_instance = {}
+ for component_instance in self.tosca.get("componentInstances", []):
+ if component_instance.get("componentName") == resource_name:
+ vnf_instance = component_instance
+ break
+
+ if not vnf_instance:
+ raise exceptions.ResourceNotFoundException(
+ "Resource {} was not found on Service {}".format(
+ resource_name, self.service_name
+ )
+ )
+
+ for deployment_artifact_name, deployment_artifact in vnf_instance.get("deploymentArtifacts").items():
+ if deployment_artifact.get("artifactType") == "HEAT_ENV":
+ deployment_artifact.update(deployment_properties)
+ self.oc.sdc.service.update_module_deployment_properties(
+ catalog_service_id=self.catalog_service_id,
+ catalog_resource_instance_id=vnf_instance.get("uniqueId"),
+ module_id=deployment_artifact.get("uniqueId"),
+ payload_data=deployment_artifact,
+ )
+
def add_property_value(self, resource_name, property_name, input_value):
"""Updates an property value on a resource attached to a Service
diff --git a/onap-client/setup.py b/onap-client/setup.py
index 58e36e8..e9907f0 100644
--- a/onap-client/setup.py
+++ b/onap-client/setup.py
@@ -47,7 +47,7 @@ for file in os.listdir("etc/payloads"):
setuptools.setup(
name="onap-client",
- version="0.10.1",
+ version="0.10.2",
author="Steven Stark",
author_email="steven.stark@att.com",
description="Python API wrapper for ONAP applications",