From 421823b343881c6d1690be8b1082a878764635f2 Mon Sep 17 00:00:00 2001
From: "Muthuramalingam, Brinda Santh(bs2796)" <bs2796@att.com>
Date: Mon, 19 Nov 2018 12:48:31 -0500
Subject: Implement Base Jython Executor function.

Change-Id: I3fb066a021de4a7b3aa1fce7f6c191bc3944fb51
Issue-ID: CCSDK-696
Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
---
 .../core/service/BluePrintRuntimeService.kt        | 16 ++++++++++-----
 .../Definitions/activation-blueprint.json          | 20 ++++++++++++++++++-
 .../Scripts/SamplePythonComponentNode.py           | 14 ++++++++-----
 .../scripts/python/ccsdk_blueprints/__init__.py    |  0
 .../abstract_blueprint_function.py                 | 11 +++++++++++
 .../python/ccsdk_blueprints/blueprint_constants.py | 23 ++++++++++++++++++++++
 .../ccsdk_blueprints/blueprint_runtime_service.py  | 13 ++++++++++++
 .../ccsdk_blueprints/sample_blueprint_component.py | 12 +++++++++++
 8 files changed, 98 insertions(+), 11 deletions(-)
 create mode 100644 components/scripts/python/ccsdk_blueprints/__init__.py
 create mode 100644 components/scripts/python/ccsdk_blueprints/abstract_blueprint_function.py
 create mode 100644 components/scripts/python/ccsdk_blueprints/blueprint_constants.py
 create mode 100644 components/scripts/python/ccsdk_blueprints/blueprint_runtime_service.py
 create mode 100644 components/scripts/python/ccsdk_blueprints/sample_blueprint_component.py

diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt
index f84b2c569..9da5b0ee4 100644
--- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt
+++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt
@@ -59,6 +59,8 @@ interface BluePrintRuntimeService<T> {
 
     fun resolveNodeTemplateArtifact(nodeTemplateName: String, artifactName: String): String
 
+    fun resolveNodeTemplateArtifactDefinition(nodeTemplateName: String, artifactName: String): ArtifactDefinition
+
     fun setInputValue(propertyName: String, propertyDefinition: PropertyDefinition, value: JsonNode)
 
     fun setWorkflowInputValue(workflowName: String, propertyName: String, propertyDefinition: PropertyDefinition, value: JsonNode)
@@ -269,15 +271,19 @@ open class DefaultBluePrintRuntimeService(private var id: String, private var bl
         return propertyAssignmentValue
     }
 
-    override fun resolveNodeTemplateArtifact(nodeTemplateName: String,
-                                             artifactName: String): String {
+    override fun resolveNodeTemplateArtifact(nodeTemplateName: String, artifactName: String): String {
+        val artifactDefinition: ArtifactDefinition = resolveNodeTemplateArtifactDefinition(nodeTemplateName, artifactName)
+        val propertyAssignmentExpression = PropertyAssignmentService(this)
+        return propertyAssignmentExpression.artifactContent(artifactDefinition)
+    }
+
+    override fun resolveNodeTemplateArtifactDefinition(nodeTemplateName: String, artifactName: String): ArtifactDefinition {
         val nodeTemplate = bluePrintContext.nodeTemplateByName(nodeTemplateName)
 
-        val artifactDefinition: ArtifactDefinition = nodeTemplate.artifacts?.get(artifactName)
+        return nodeTemplate.artifacts?.get(artifactName)
                 ?: throw BluePrintProcessorException(String.format("failed to get artifat definition {} from the node template"
                         , artifactName))
-        val propertyAssignmentExpression = PropertyAssignmentService(this)
-        return propertyAssignmentExpression.artifactContent(artifactDefinition)
+
     }
 
 
diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json
index ee02b3a77..e067a7dfd 100644
--- a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json
+++ b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json
@@ -143,7 +143,7 @@
         "artifacts": {
           "component-script": {
             "type": "artifact-script-python",
-            "file": "Scripts/baseconfig-template.vtl"
+            "file": "Scripts/SamplePythonComponentNode.py"
           }
         }
       }
@@ -181,6 +181,24 @@
         }
       },
       "activate": {
+        "inputs": {
+          "request-id": {
+            "required": true,
+            "type": "string"
+          },
+          "action-name": {
+            "required": true,
+            "type": "string"
+          },
+          "scope-type": {
+            "required": true,
+            "type": "string"
+          },
+          "hostname": {
+            "required": true,
+            "type": "string"
+          }
+        },
         "steps": {
           "call-resource-assignment": {
             "description": "Netconf Activation Workflow",
diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/SamplePythonComponentNode.py b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/SamplePythonComponentNode.py
index fc5151338..0a583dc57 100644
--- a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/SamplePythonComponentNode.py
+++ b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Scripts/SamplePythonComponentNode.py
@@ -1,8 +1,12 @@
-from com.brvith.orchestrator.core.interfaces import ComponentNode
+from abstract_blueprint_function import AbstractPythonComponentFunction
+from blueprint_constants import *
 
-class SamplePythonComponentNode(ComponentNode):
-    def prepare(self, context, componentContext):
+class SamplePythonComponentNode(AbstractPythonComponentFunction):
+
+    def process(self, execution_request):
+        print "Processing calling.." + PROPERTY_BLUEPRINT_BASE_PATH
         return None
 
-    def prepare(self, context, componentContext):
-        return None
\ No newline at end of file
+    def recover(self, runtime_exception, execution_request):
+        print "Recovering calling.." + PROPERTY_BLUEPRINT_BASE_PATH
+        return None
diff --git a/components/scripts/python/ccsdk_blueprints/__init__.py b/components/scripts/python/ccsdk_blueprints/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/components/scripts/python/ccsdk_blueprints/abstract_blueprint_function.py b/components/scripts/python/ccsdk_blueprints/abstract_blueprint_function.py
new file mode 100644
index 000000000..0ddab16e7
--- /dev/null
+++ b/components/scripts/python/ccsdk_blueprints/abstract_blueprint_function.py
@@ -0,0 +1,11 @@
+from org.onap.ccsdk.apps.blueprintsprocessor.services.execution import AbstractComponentFunction
+
+class AbstractPythonComponentFunction(AbstractComponentFunction):
+
+    def process(self, execution_request):
+        print "Processing calling.."
+        return None
+
+    def recover(self, runtime_exception, execution_request):
+        print "Recovering calling.."
+        return None
diff --git a/components/scripts/python/ccsdk_blueprints/blueprint_constants.py b/components/scripts/python/ccsdk_blueprints/blueprint_constants.py
new file mode 100644
index 000000000..2ec95f312
--- /dev/null
+++ b/components/scripts/python/ccsdk_blueprints/blueprint_constants.py
@@ -0,0 +1,23 @@
+
+PROPERTY_BLUEPRINT_PROCESS_ID= "blueprint-process-id"
+PROPERTY_BLUEPRINT_BASE_PATH= "blueprint-basePath"
+PROPERTY_BLUEPRINT_RUNTIME= "blueprint-runtime"
+PROPERTY_BLUEPRINT_INPUTS_DATA= "blueprint-inputs-data"
+PROPERTY_BLUEPRINT_CONTEXT= "blueprint-context"
+PROPERTY_BLUEPRINT_NAME= "template_name"
+PROPERTY_BLUEPRINT_VERSION= "template_version"
+
+METADATA_USER_GROUPS = "user-groups"
+METADATA_TEMPLATE_NAME = "template_name"
+METADATA_TEMPLATE_VERSION = "template_version"
+METADATA_TEMPLATE_AUTHOR = "template_author"
+METADATA_TEMPLATE_TAGS = "template_tags"
+METADATA_WORKFLOW_NAME = "workflow_name"
+
+PAYLOAD_DATA = "payload-data"
+PROPERTY_CURRENT_STEP = "current-step"
+PROPERTY_CURRENT_NODE_TEMPLATE = "current-node-template"
+PROPERTY_CURRENT_INTERFACE = "current-interface"
+PROPERTY_CURRENT_OPERATION = "current-operation"
+PROPERTY_CURRENT_IMPLEMENTATION = "current-implementation"
+PROPERTY_EXECUTION_REQUEST = "execution-request"
diff --git a/components/scripts/python/ccsdk_blueprints/blueprint_runtime_service.py b/components/scripts/python/ccsdk_blueprints/blueprint_runtime_service.py
new file mode 100644
index 000000000..022b47244
--- /dev/null
+++ b/components/scripts/python/ccsdk_blueprints/blueprint_runtime_service.py
@@ -0,0 +1,13 @@
+class BluePrintRuntimeService:
+
+    def __init__(self, bps):
+        self.bps = bps
+
+    def resolveNodeTemplateArtifact(self, node_template_name, artifact_name):
+        return self.bps.resolveNodeTemplateArtifact(node_template_name, artifact_name)
+
+    def setNodeTemplateAttributeValue(self, nodeTemplateName, attributeName, value):
+        return self.bps.setNodeTemplateAttributeValue(nodeTemplateName, attributeName, value)
+
+    def setNodeTemplatePropertyValue(self, nodeTemplateName, propertyName, value):
+        return self.bps.setNodeTemplatePropertyValue(nodeTemplateName, propertyName, value)
diff --git a/components/scripts/python/ccsdk_blueprints/sample_blueprint_component.py b/components/scripts/python/ccsdk_blueprints/sample_blueprint_component.py
new file mode 100644
index 000000000..62665dc8f
--- /dev/null
+++ b/components/scripts/python/ccsdk_blueprints/sample_blueprint_component.py
@@ -0,0 +1,12 @@
+from abstract_blueprint_function import AbstractPythonComponentFunction
+from blueprint_constants import *
+
+class SampleBlueprintComponent(AbstractPythonComponentFunction):
+
+    def process(self, execution_request):
+        print "Processing calling.." + PROPERTY_BLUEPRINT_BASE_PATH
+        return None
+
+    def recover(self, runtime_exception, execution_request):
+        print "Recovering calling.." + PROPERTY_BLUEPRINT_BASE_PATH
+        return None
-- 
cgit