summaryrefslogtreecommitdiffstats
path: root/ms/blueprintsprocessor/functions
diff options
context:
space:
mode:
authorBrinda Santh <brindasanth@in.ibm.com>2019-08-01 09:12:04 -0400
committerDan Timoney <dtimoney@att.com>2019-08-01 17:24:53 +0000
commit74c548363d3dafd8ac26f0aacaa9a457ce29dfd5 (patch)
tree94fb0a1bba97f7e6f2654341209d096c619c3f6a /ms/blueprintsprocessor/functions
parentdd710215139505f26f052a7dbdcdb5bf7f2e0532 (diff)
Add remote python executor DSL properties
Change-Id: I7888ac302da2a51ca34c531b7553d04af13786ac Issue-ID: CCSDK-1380 Signed-off-by: Brinda Santh <brindasanth@in.ibm.com>
Diffstat (limited to 'ms/blueprintsprocessor/functions')
-rw-r--r--ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutor.kt1
-rw-r--r--ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutorDSL.kt163
-rw-r--r--ms/blueprintsprocessor/functions/python-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutorDSLTest.kt56
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSL.kt44
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSLTest.kt2
5 files changed, 233 insertions, 33 deletions
diff --git a/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutor.kt b/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutor.kt
index 0f35e6338..2a227ebe1 100644
--- a/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutor.kt
+++ b/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutor.kt
@@ -48,6 +48,7 @@ open class ComponentRemotePythonExecutor(private val remoteScriptExecutionServic
const val ATTRIBUTE_PREPARE_ENV_LOG = "prepare-environment-logs"
const val ATTRIBUTE_EXEC_CMD_LOG = "execute-command-logs"
+ const val ATTRIBUTE_RESPONSE_DATA = "response-data"
}
override suspend fun processNB(executionRequest: ExecutionServiceInput) {
diff --git a/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutorDSL.kt b/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutorDSL.kt
new file mode 100644
index 000000000..fee87498d
--- /dev/null
+++ b/ms/blueprintsprocessor/functions/python-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutorDSL.kt
@@ -0,0 +1,163 @@
+/*
+ * 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.cds.blueprintsprocessor.functions.python.executor
+
+import com.fasterxml.jackson.databind.JsonNode
+import com.fasterxml.jackson.databind.node.ArrayNode
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType
+import org.onap.ccsdk.cds.controllerblueprints.core.data.DataType
+import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeTemplate
+import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeType
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.AbstractNodeTemplateImplBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.PropertiesAssignmentBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.dataType
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.nodeType
+import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
+
+/** Component Extensions **/
+fun BluePrintTypes.nodeTypeComponentRemotePythonExecutor(): NodeType {
+ return nodeType(id = "component-remote-python-executor", version = BluePrintConstants.DEFAULT_VERSION_NUMBER,
+ derivedFrom = BluePrintConstants.MODEL_TYPE_NODE_COMPONENT,
+ description = "This is Remote Python Execution Component.") {
+
+ attribute(ComponentRemotePythonExecutor.ATTRIBUTE_PREPARE_ENV_LOG, BluePrintConstants.DATA_TYPE_STRING,
+ false)
+ attribute(ComponentRemotePythonExecutor.ATTRIBUTE_EXEC_CMD_LOG, BluePrintConstants.DATA_TYPE_LIST,
+ false) {
+ entrySchema(BluePrintConstants.DATA_TYPE_STRING)
+ }
+ attribute(ComponentRemotePythonExecutor.ATTRIBUTE_RESPONSE_DATA, BluePrintConstants.DATA_TYPE_JSON,
+ false)
+
+ operation("ComponentRemotePythonExecutor", "ComponentRemotePythonExecutor Operation") {
+ inputs {
+ property(ComponentRemotePythonExecutor.INPUT_ENDPOINT_SELECTOR, BluePrintConstants.DATA_TYPE_STRING,
+ false, "Remote Container or Server selector name.") {
+ defaultValue(ComponentRemotePythonExecutor.DEFAULT_SELECTOR)
+ }
+ property(ComponentRemotePythonExecutor.INPUT_DYNAMIC_PROPERTIES, BluePrintConstants.DATA_TYPE_JSON,
+ false, "Dynamic Json Content or DSL Json reference.")
+
+ property(ComponentRemotePythonExecutor.INPUT_ARGUMENT_PROPERTIES, BluePrintConstants.DATA_TYPE_JSON,
+ false, "Argument Json Content or DSL Json reference.")
+
+ property(ComponentRemotePythonExecutor.INPUT_COMMAND, BluePrintConstants.DATA_TYPE_STRING,
+ true, "Command to execute.")
+
+ property(ComponentRemotePythonExecutor.INPUT_PACKAGES, BluePrintConstants.DATA_TYPE_LIST,
+ false, "Packages to install based on type.") {
+ entrySchema("dt-system-packages")
+ }
+ }
+ }
+ }
+}
+
+fun BluePrintTypes.dataTypeDtSystemPackages(): DataType {
+ return dataType(id = "dt-system-packages", version = BluePrintConstants.DEFAULT_VERSION_NUMBER,
+ derivedFrom = BluePrintConstants.MODEL_TYPE_DATATYPES_ROOT,
+ description = "This represent System Package Data Type") {
+ property("type", BluePrintConstants.DATA_TYPE_LIST, true, "") {
+ constrain {
+ entrySchema(BluePrintConstants.DATA_TYPE_STRING)
+ validValues(arrayListOf("ansible_galaxy".asJsonPrimitive(), "pip".asJsonPrimitive()))
+ }
+ }
+ property("package", BluePrintConstants.DATA_TYPE_LIST, true, "") {
+ entrySchema(BluePrintConstants.DATA_TYPE_STRING)
+ }
+ }
+}
+
+/** Component Builder */
+fun BluePrintTypes.nodeTemplateComponentRemotePythonExecutor(id: String,
+ description: String,
+ block: ComponentRemotePythonExecutorNodeTemplateImplBuilder.() -> Unit)
+ : NodeTemplate {
+ return ComponentRemotePythonExecutorNodeTemplateImplBuilder(id, description).apply(block).build()
+}
+
+class ComponentRemotePythonExecutorNodeTemplateImplBuilder(id: String, description: String) :
+ AbstractNodeTemplateImplBuilder<ComponentRemotePythonExecutorInputAssignmentBuilder,
+ ComponentRemotePythonExecutorOutputAssignmentBuilder>(id, "component-remote-python-executor",
+ "ComponentRemotePythonExecutor", description)
+
+class DtSystemPackageDataTypeBuilder : PropertiesAssignmentBuilder() {
+
+ fun type(type: String) = type(type.asJsonPrimitive())
+
+ fun type(type: JsonNode) {
+ property("type", type)
+ }
+
+ fun packages(packages: String) = packages(packages.asJsonType())
+
+ fun packages(packages: List<String>) = packages(packages.asJsonType())
+
+ fun packages(packages: JsonNode) {
+ property("package", packages)
+ }
+}
+
+class ComponentRemotePythonExecutorInputAssignmentBuilder : PropertiesAssignmentBuilder() {
+
+ private var packageList: ArrayNode? = null
+
+ fun endpointSelector(endpointSelector: String) = endpointSelector(endpointSelector.asJsonPrimitive())
+
+ fun endpointSelector(endpointSelector: JsonNode) {
+ property(ComponentRemotePythonExecutor.INPUT_ENDPOINT_SELECTOR, endpointSelector)
+ }
+
+ fun dynamicProperties(dynamicProperties: String) = dynamicProperties(dynamicProperties.asJsonType())
+
+ fun dynamicProperties(dynamicProperties: JsonNode) {
+ property(ComponentRemotePythonExecutor.INPUT_DYNAMIC_PROPERTIES, dynamicProperties)
+ }
+
+ fun argumentProperties(argumentProperties: String) = argumentProperties(argumentProperties.asJsonType())
+
+ fun argumentProperties(argumentProperties: JsonNode) {
+ property(ComponentRemotePythonExecutor.INPUT_ARGUMENT_PROPERTIES, argumentProperties)
+ }
+
+ fun command(command: String) = command(command.asJsonPrimitive())
+
+ fun command(command: JsonNode) {
+ property(ComponentRemotePythonExecutor.INPUT_COMMAND, command)
+ }
+
+ fun packages(block: DtSystemPackageDataTypeBuilder.() -> Unit) {
+ if (packageList == null)
+ packageList = JacksonUtils.objectMapper.createArrayNode()
+ val dtSysyemPackagePropertyAssignments = DtSystemPackageDataTypeBuilder().apply(block).build()
+ packageList!!.add(dtSysyemPackagePropertyAssignments.asJsonType())
+ }
+
+ override fun build(): MutableMap<String, JsonNode> {
+ val propertyAssignments = super.build()
+ if (packageList != null) {
+ propertyAssignments[ComponentRemotePythonExecutor.INPUT_PACKAGES] = packageList!!
+ }
+ return propertyAssignments
+ }
+}
+
+class ComponentRemotePythonExecutorOutputAssignmentBuilder : PropertiesAssignmentBuilder() \ No newline at end of file
diff --git a/ms/blueprintsprocessor/functions/python-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutorDSLTest.kt b/ms/blueprintsprocessor/functions/python-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutorDSLTest.kt
new file mode 100644
index 000000000..5c4b59034
--- /dev/null
+++ b/ms/blueprintsprocessor/functions/python-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/python/executor/ComponentRemotePythonExecutorDSLTest.kt
@@ -0,0 +1,56 @@
+/*
+ * 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.cds.blueprintsprocessor.functions.python.executor
+
+import org.junit.Test
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import kotlin.test.assertNotNull
+
+class ComponentRemotePythonExecutorDSLTest {
+
+ @Test
+ fun testNodeTypeComponentRemotePythonExecutor() {
+ val nodeType = BluePrintTypes.nodeTypeComponentRemotePythonExecutor()
+ //println(nodeType.asJsonString(true))
+ assertNotNull(nodeType, "failed to generate nodeTypeComponentRemotePythonExecutor")
+ }
+
+ @Test
+ fun testNodeTemplateComponentRemotePythonExecutor() {
+ val nodeTemplate = BluePrintTypes.nodeTemplateComponentRemotePythonExecutor("test-nodetemplate",
+ "test nodetemplate") {
+ operation("test operation") {
+ inputs {
+ endpointSelector("remote-container")
+ command("python sample.py")
+ dynamicProperties("""{
+ "prop1" : "1234",
+ "prop2" : true,
+ "prop3" : 23
+ }""".trimIndent())
+ argumentProperties("""["one", "two"]""")
+ packages {
+ type("pip")
+ packages(arrayListOf("ncclient", "lxml"))
+ }
+ }
+ }
+ }
+ //println(nodeTemplate.asJsonString(true))
+ assertNotNull(nodeTemplate, "failed to generate nodeTemplateComponentRemotePythonExecutor")
+ }
+} \ No newline at end of file
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSL.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSL.kt
index c71541efd..a44750d11 100644
--- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSL.kt
+++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSL.kt
@@ -94,65 +94,49 @@ class ComponentResourceResolutionNodeTemplateImplBuilder(id: String, description
class ComponentResourceResolutionInputAssignmentBuilder : PropertiesAssignmentBuilder() {
- fun requestId(requestId: String) {
- requestId(requestId.asJsonPrimitive())
- }
+ fun requestId(requestId: String) = requestId(requestId.asJsonPrimitive())
fun requestId(requestId: JsonNode) {
property(ResourceResolutionComponent.INPUT_REQUEST_ID, requestId)
}
- fun resourceId(resourceId: String) {
- resourceId(resourceId.asJsonPrimitive())
- }
+ fun resourceId(resourceId: String) = resourceId(resourceId.asJsonPrimitive())
fun resourceId(resourceId: JsonNode) {
property(ResourceResolutionComponent.INPUT_RESOURCE_ID, resourceId)
}
- fun actionName(actionName: String) {
- actionName(actionName.asJsonPrimitive())
- }
+ fun actionName(actionName: String) = actionName(actionName.asJsonPrimitive())
fun actionName(actionName: JsonNode) {
property(ResourceResolutionComponent.INPUT_ACTION_NAME, actionName)
}
- fun resolutionKey(resolutionKey: String) {
- resolutionKey(resolutionKey.asJsonPrimitive())
- }
+ fun resolutionKey(resolutionKey: String) = resolutionKey(resolutionKey.asJsonPrimitive())
fun resolutionKey(resolutionKey: JsonNode) {
property(ResourceResolutionComponent.INPUT_RESOLUTION_KEY, resolutionKey)
}
- fun dynamicProperty(dynamicProperty: String) {
- dynamicProperty(dynamicProperty.asJsonType())
- }
+ fun dynamicProperties(dynamicProperties: String) = dynamicProperties(dynamicProperties.asJsonType())
- fun dynamicProperty(dynamicProperty: JsonNode) {
- property(ResourceResolutionComponent.INPUT_DYNAMIC_PROPERTIES, dynamicProperty)
+ fun dynamicProperties(dynamicProperties: JsonNode) {
+ property(ResourceResolutionComponent.INPUT_DYNAMIC_PROPERTIES, dynamicProperties)
}
- fun occurrence(occurrence: Int) {
- occurrence(occurrence.asJsonPrimitive())
- }
+ fun occurrence(occurrence: Int) = occurrence(occurrence.asJsonPrimitive())
fun occurrence(resolutionKey: JsonNode) {
property(ResourceResolutionComponent.INPUT_OCCURRENCE, resolutionKey)
}
- fun storeResult(storeResult: Boolean) {
- storeResult(storeResult.asJsonPrimitive())
- }
+ fun storeResult(storeResult: Boolean) = storeResult(storeResult.asJsonPrimitive())
fun storeResult(storeResult: JsonNode) {
property(ResourceResolutionComponent.INPUT_STORE_RESULT, storeResult)
}
- fun resourceType(resourceType: String) {
- resourceType(resourceType.asJsonPrimitive())
- }
+ fun resourceType(resourceType: String) = resourceType(resourceType.asJsonPrimitive())
fun resourceType(resourceType: JsonNode) {
property(ResourceResolutionComponent.INPUT_RESOURCE_TYPE, resourceType)
@@ -171,17 +155,13 @@ class ComponentResourceResolutionInputAssignmentBuilder : PropertiesAssignmentBu
class ComponentResourceResolutionOutputAssignmentBuilder : PropertiesAssignmentBuilder() {
- fun status(status: String) {
- status(status.asJsonPrimitive())
- }
+ fun status(status: String) = status(status.asJsonPrimitive())
fun status(status: JsonNode) {
property(ResourceResolutionComponent.OUTPUT_STATUS, status)
}
- fun resourceAssignmentParams(resourceAssignmentParams: String) {
- resourceAssignmentParams(resourceAssignmentParams.asJsonType())
- }
+ fun resourceAssignmentParams(resourceAssignmentParams: String) = resourceAssignmentParams(resourceAssignmentParams.asJsonType())
fun resourceAssignmentParams(resourceAssignmentParams: JsonNode) {
property(ResourceResolutionComponent.OUTPUT_RESOURCE_ASSIGNMENT_PARAMS, resourceAssignmentParams)
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSLTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSLTest.kt
index 16052ae74..d0566785e 100644
--- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSLTest.kt
+++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentDSLTest.kt
@@ -42,7 +42,7 @@ class ResourceResolutionComponentDSLTest {
resourceType("vnf")
storeResult(false)
artifactPrefixNames(arrayListOf("template1", "template2"))
- dynamicProperty("""{
+ dynamicProperties("""{
"prop1" : "1234",
"prop2" : true,
"prop3" : 23