Add Jython Component model and validation logics.
authorMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Tue, 20 Nov 2018 17:20:30 +0000 (12:20 -0500)
committerDan Timoney <dtimoney@att.com>
Fri, 30 Nov 2018 20:22:00 +0000 (20:22 +0000)
Change-Id: I2bdba0016a41e16198d60be68dff68d1ce7ad13a
Issue-ID: CCSDK-696
Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/python/executor/ComponentJythonExecutor.kt [moved from ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/python/executor/ComponentPythonExecutor.kt with 93% similarity]
ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/python/executor/JythonExecutionService.kt [new file with mode: 0644]
ms/blueprintsprocessor/functions/python-executor/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/python/executor/ComponentJythonExecutorTest.kt [moved from ms/blueprintsprocessor/functions/python-executor/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/python/executor/ComponentPythonExecutorTest.kt with 92% similarity]
ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/services/resolution/ResourceResolutionService.kt
ms/blueprintsprocessor/modules/services/workflow-service/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/services/workflow/BlueprintServiceLogicTest.kt

@@ -27,10 +27,10 @@ import org.onap.ccsdk.apps.controllerblueprints.core.data.OperationAssignment
 import org.slf4j.LoggerFactory
 import org.springframework.stereotype.Component
 
-@Component("component-python-executor")
-class ComponentPythonExecutor(private val pythonExecutorProperty: PythonExecutorProperty) : AbstractComponentFunction() {
+@Component("component-jython-executor")
+class ComponentJythonExecutor(private val pythonExecutorProperty: PythonExecutorProperty) : AbstractComponentFunction() {
 
-    private val log = LoggerFactory.getLogger(ComponentPythonExecutor::class.java)
+    private val log = LoggerFactory.getLogger(ComponentJythonExecutor::class.java)
 
     private var componentFunction: AbstractComponentFunction? = null
 
@@ -69,7 +69,8 @@ class ComponentPythonExecutor(private val pythonExecutorProperty: PythonExecutor
         val properties: MutableMap<String, Any> = hashMapOf()
         properties["log"] = log
 
-        componentFunction = PythonExecutorUtils.getPythonComponent(pythonExecutorProperty.executionPath, pythonPath, content, pythonClassName, properties)
+        componentFunction = PythonExecutorUtils.getPythonComponent(pythonExecutorProperty.executionPath,
+                pythonPath, content, pythonClassName, properties)
 
         componentFunction!!.process(executionServiceInput)
 
diff --git a/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/python/executor/JythonExecutionService.kt b/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/python/executor/JythonExecutionService.kt
new file mode 100644 (file)
index 0000000..dc372af
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.ccsdk.apps.blueprintsprocessor.functions.python.executor
+
+import org.onap.ccsdk.apps.blueprintsprocessor.functions.python.executor.utils.PythonExecutorUtils
+import org.onap.ccsdk.apps.blueprintsprocessor.services.execution.AbstractComponentFunction
+import org.slf4j.LoggerFactory
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.context.ApplicationContext
+import org.springframework.stereotype.Service
+
+@Service
+class JythonExecutionService(private val pythonExecutorProperty: PythonExecutorProperty) {
+
+
+    private val log = LoggerFactory.getLogger(ComponentJythonExecutor::class.java)
+
+    @Autowired
+    lateinit var applicationContext: ApplicationContext
+
+
+    fun processJythonNodeTemplate(pythonClassName: String, content: String, pythonPath: MutableList<String>,
+                                  jythonContextInstance: MutableMap<String, Any>,
+                                  dependencyInstanceNames: List<String>): AbstractComponentFunction {
+
+
+        dependencyInstanceNames.forEach { instanceName ->
+            jythonContextInstance[instanceName] = applicationContext.getBean(instanceName)
+
+        }
+
+        return PythonExecutorUtils.getPythonComponent(pythonExecutorProperty.executionPath,
+                pythonPath, content, pythonClassName, jythonContextInstance)
+
+    }
+
+}
\ No newline at end of file
@@ -36,10 +36,10 @@ import org.springframework.test.context.junit4.SpringRunner
 ["blueprints.processor.functions.python.executor.modulePaths=./../../../../components/scripts/python/ccsdk_blueprints",
     "blueprints.processor.functions.python.executor.executionPath=./../../../../components/scripts/python/ccsdk_blueprints"])
 
-class ComponentPythonExecutorTest {
+class ComponentJythonExecutorTest {
 
     @Autowired
-    lateinit var componentPythonExecutor: ComponentPythonExecutor
+    lateinit var componentJythonExecutor: ComponentJythonExecutor
 
 
     @Test
@@ -60,17 +60,17 @@ class ComponentPythonExecutorTest {
         val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime(commonHeader.requestId,
                 "./../../../../components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration")
 
-        componentPythonExecutor.bluePrintRuntimeService = bluePrintRuntimeService
+        componentJythonExecutor.bluePrintRuntimeService = bluePrintRuntimeService
 
 
         val metaData: MutableMap<String, JsonNode> = hashMapOf()
         metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_STEP, "resource-assignment-py")
         metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE, "resource-assignment-py")
-        metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_INTERFACE, "DefaultComponentNode")
+        metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_INTERFACE, "ResourceAssignmentComponent")
         metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process")
         executionServiceInput.metadata = metaData
 
-        componentPythonExecutor.apply(executionServiceInput)
+        componentJythonExecutor.apply(executionServiceInput)
 
     }
 }
\ No newline at end of file
index 155b3b0..9e735cf 100644 (file)
@@ -47,8 +47,6 @@ class ResourceResolutionService {
         resourceResolutionOutput.commonHeader = resourceResolutionInput.commonHeader\r
         resourceResolutionOutput.resourceAssignments = resourceResolutionInput.resourceAssignments\r
 \r
-        val context = hashMapOf<String, Any>()\r
-\r
         process(resourceResolutionOutput.resourceAssignments)\r
 \r
         val status = Status()\r
index 6fe767c..9a59831 100644 (file)
@@ -80,7 +80,7 @@ class BlueprintServiceLogicTest {
         val metaData: MutableMap<String, JsonNode> = hashMapOf()
         metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_STEP,"resource-assignment-py")
         metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE, "resource-assignment-py")
-        metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_INTERFACE, "DefaultComponentNode")
+        metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_INTERFACE, "ResourceAssignmentComponent")
         metaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process")
         executionServiceInput.metadata = metaData