checkNotNull(scriptComponent) { "failed to get netconf script component" }
- scriptComponent.bluePrintRuntimeService = bluePrintRuntimeService
- scriptComponent.processId = processId
- scriptComponent.workflowName = workflowName
- scriptComponent.stepName = stepName
- scriptComponent.interfaceName = interfaceName
- scriptComponent.operationName = operationName
- scriptComponent.nodeTemplateName = nodeTemplateName
- scriptComponent.operationInputs = operationInputs
-
scriptComponent.process(executionServiceInput)
}
import org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor.api.DeviceInfo
import org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.ResourceResolutionConstants
import org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.ResourceResolutionService
-import org.onap.ccsdk.apps.blueprintsprocessor.services.execution.AbstractComponentFunction
+import org.onap.ccsdk.apps.blueprintsprocessor.services.execution.AbstractScriptComponentFunction
import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils
-abstract class NetconfComponentFunction : AbstractComponentFunction() {
+abstract class NetconfComponentFunction : AbstractScriptComponentFunction() {
open fun resourceResolutionService(): ResourceResolutionService =
- functionDependencyInstanceAsType(ResourceResolutionConstants.SERVICE_RESOURCE_RESOLUTION)
+ functionDependencyInstanceAsType(ResourceResolutionConstants.SERVICE_RESOURCE_RESOLUTION)
// Called from python script
fun initializeNetconfConnection(requirementName: String): NetconfDevice {
return bluePrintRuntimeService.resolveNodeTemplateArtifact(nodeTemplateName, artifactName)
}
- fun getDynamicProperties(key: String): JsonNode {
- return operationInputs["dynamic-properties"]!!.get(key)
- }
-
fun resolveFromDatabase(resolutionKey: String, artifactName: String): String {
return resourceResolutionService().resolveFromDatabase(bluePrintRuntimeService, artifactName, resolutionKey)
}
fun resolveAndGenerateMessage(artifactMapping: String, artifactTemplate: String): String {
return resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName,
- artifactMapping, artifactTemplate)
+ artifactMapping, artifactTemplate)
}
fun resolveAndGenerateMessage(artifactPrefix: String): String {
return resourceResolutionService().resolveResources(bluePrintRuntimeService, nodeTemplateName,
- artifactPrefix, mapOf())
+ artifactPrefix, mapOf())
}
private fun deviceProperties(requirementName: String): DeviceInfo {
val requirement = blueprintContext.nodeTemplateRequirement(nodeTemplateName, requirementName)
val capabilityProperties = bluePrintRuntimeService.resolveNodeTemplateCapabilityProperties(requirement
- .node!!, requirement.capability!!)
+ .node!!, requirement.capability!!)
return deviceProperties(capabilityProperties)
}
checkNotNull(scriptComponent) { "failed to get restconf script component" }
- scriptComponent.bluePrintRuntimeService = bluePrintRuntimeService
- scriptComponent.processId = processId
- scriptComponent.workflowName = workflowName
- scriptComponent.stepName = stepName
- scriptComponent.interfaceName = interfaceName
- scriptComponent.operationName = operationName
- scriptComponent.nodeTemplateName = nodeTemplateName
- scriptComponent.operationInputs = operationInputs
-
scriptComponent.process(executionServiceInput)
}
package org.onap.ccsdk.apps.blueprintsprocessor.functions.restconf.executor
-import com.fasterxml.jackson.databind.JsonNode
import org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.ResourceResolutionConstants
import org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.ResourceResolutionService
import org.onap.ccsdk.apps.blueprintsprocessor.rest.RestLibConstants
import org.onap.ccsdk.apps.blueprintsprocessor.rest.service.BluePrintRestLibPropertyService
import org.onap.ccsdk.apps.blueprintsprocessor.rest.service.BlueprintWebClientService
-import org.onap.ccsdk.apps.blueprintsprocessor.services.execution.AbstractComponentFunction
+import org.onap.ccsdk.apps.blueprintsprocessor.services.execution.AbstractScriptComponentFunction
-abstract class RestconfComponentFunction : AbstractComponentFunction() {
+abstract class RestconfComponentFunction : AbstractScriptComponentFunction() {
open fun bluePrintRestLibPropertyService(): BluePrintRestLibPropertyService =
functionDependencyInstanceAsType(RestLibConstants.SERVICE_BLUEPRINT_REST_LIB_PROPERTY)
return bluePrintRestLibPropertyService().blueprintWebClientService(selector)
}
- fun getDynamicProperties(key: String): JsonNode {
- return operationInputs["dynamic-properties"]!!.get(key)
- }
-
fun resolveFromDatabase(resolutionKey: String, artifactName: String): String {
return resourceResolutionService().resolveFromDatabase(bluePrintRuntimeService, artifactName, resolutionKey)
}
lateinit var nodeTemplateName: String\r
var operationInputs: MutableMap<String, JsonNode> = hashMapOf()\r
\r
- //FIXME("Move to Script abstract class")\r
- /**\r
- * Store Dynamic Script Dependency Instances, Objects present inside won't be persisted or state maintained.\r
- * Later it will be moved to ScriptComponentFunction class, sub class for abstract class\r
- */\r
- var functionDependencyInstances: MutableMap<String, Any> = hashMapOf()\r
-\r
override fun getName(): String {\r
return stepName\r
}\r
bluePrintRuntimeService.setNodeTemplateAttributeValue(nodeTemplateName, key, value)\r
}\r
\r
- //FIXME("Move to Script abstract class")\r
- /**\r
- * This will be called from the scripts to serve instance from runtime to scripts.\r
- */\r
- open fun <T> functionDependencyInstanceAsType(name: String): T {\r
- return functionDependencyInstances[name] as? T\r
- ?: throw BluePrintProcessorException("couldn't get script property instance ($name)")\r
+ fun addError(type: String, name: String, error: String) {\r
+ bluePrintRuntimeService.getBluePrintError().addError(type, name, type)\r
+ }\r
+\r
+ fun addError(error: String) {\r
+ bluePrintRuntimeService.getBluePrintError().addError(error)\r
}\r
+\r
}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright © 2019 IBM.
+ *
+ * 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.services.execution
+
+import com.fasterxml.jackson.databind.JsonNode
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintProcessorException
+
+abstract class AbstractScriptComponentFunction : AbstractComponentFunction() {
+
+ companion object {
+ const val DYNAMIC_PROPERTIES = "dynamic-properties"
+ }
+
+ /**
+ * Store Dynamic Script Dependency Instances, Objects present inside won't be persisted or state maintained.
+ */
+ var functionDependencyInstances: MutableMap<String, Any> = hashMapOf()
+
+ /**
+ * This will be called from the scripts to serve instance from runtime to scripts.
+ */
+ open fun <T> functionDependencyInstanceAsType(name: String): T {
+ return functionDependencyInstances[name] as? T
+ ?: throw BluePrintProcessorException("couldn't get script property instance ($name)")
+ }
+
+ fun checkDynamicProperties(key: String): Boolean {
+ return operationInputs[DYNAMIC_PROPERTIES]?.has(key) ?: false
+ }
+
+ fun getDynamicProperties(key: String): JsonNode {
+ return operationInputs[DYNAMIC_PROPERTIES]!!.get(key)
+ }
+
+
+}
\ No newline at end of file
private val log = LoggerFactory.getLogger(ComponentFunctionScriptingService::class.java)
- fun <T : AbstractComponentFunction> scriptInstance(componentFunction: AbstractComponentFunction, scriptType: String,
- scriptClassReference: String,
- instanceDependencies: List<String>): T {
+ fun <T : AbstractScriptComponentFunction> scriptInstance(componentFunction: AbstractComponentFunction, scriptType: String,
+ scriptClassReference: String,
+ instanceDependencies: List<String>): T {
log.info("creating component function of script type($scriptType), reference name($scriptClassReference) and " +
"instanceDependencies($instanceDependencies)")
val scriptComponent: T = scriptInstance(componentFunction.bluePrintRuntimeService.bluePrintContext(),
scriptType, scriptClassReference)
- // Populate Instance Properties
+
+ checkNotNull(scriptComponent) { "failed to initialize script component" }
+
+ scriptComponent.bluePrintRuntimeService = componentFunction.bluePrintRuntimeService
+ scriptComponent.processId = componentFunction.processId
+ scriptComponent.workflowName = componentFunction.workflowName
+ scriptComponent.stepName = componentFunction.stepName
+ scriptComponent.interfaceName = componentFunction.interfaceName
+ scriptComponent.operationName = componentFunction.operationName
+ scriptComponent.nodeTemplateName = componentFunction.nodeTemplateName
+ scriptComponent.operationInputs = componentFunction.operationInputs
+
+ // Populate Instance Properties
instanceDependencies.forEach { instanceDependency ->
- componentFunction.functionDependencyInstances[instanceDependency] = applicationContext
+ scriptComponent.functionDependencyInstances[instanceDependency] = applicationContext
.getBean(instanceDependency)
}
return scriptComponent