diff options
author | Dan Timoney <dtimoney@att.com> | 2019-07-25 15:13:36 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2019-07-25 15:13:36 +0000 |
commit | 961f4b1e3b91ffa3821d02ac4a57cd207e8081bb (patch) | |
tree | 8035e898705fec594754244502f6d2ecb8d97244 /ms/blueprintsprocessor | |
parent | 905f9ae5460fdf66d8923734ba0d6dba0693106a (diff) | |
parent | 88e24883c8e22711062ad451250ff7e3646485b3 (diff) |
Merge "Fix attribute validation for complex type."
Diffstat (limited to 'ms/blueprintsprocessor')
2 files changed, 107 insertions, 6 deletions
diff --git a/ms/blueprintsprocessor/modules/commons/ssh-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/service/BluePrintSshLibPropertyService.kt b/ms/blueprintsprocessor/modules/commons/ssh-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/service/BluePrintSshLibPropertyService.kt index 1950b71aa..829fdda8e 100644 --- a/ms/blueprintsprocessor/modules/commons/ssh-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/service/BluePrintSshLibPropertyService.kt +++ b/ms/blueprintsprocessor/modules/commons/ssh-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/service/BluePrintSshLibPropertyService.kt @@ -52,7 +52,8 @@ open class BluePrintSshLibPropertyService(private var bluePrintProperties: BlueP } fun sshClientProperties(jsonNode: JsonNode): SshClientProperties { - val type = jsonNode.get("type").textValue() + val type = jsonNode.get("type")?.textValue() + ?: throw BluePrintProcessorException("missing type field in ssh client properties") return when (type) { SshLibConstants.TYPE_BASIC_AUTH -> { JacksonUtils.readValue(jsonNode, diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/ComponentScriptExecutor.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/ComponentScriptExecutor.kt index b5dac5a39..95b2afc4c 100644 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/ComponentScriptExecutor.kt +++ b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/ComponentScriptExecutor.kt @@ -16,13 +16,16 @@ package org.onap.ccsdk.cds.blueprintsprocessor.services.execution +import com.fasterxml.jackson.databind.JsonNode import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput -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.* +import org.onap.ccsdk.cds.controllerblueprints.core.data.ArtifactDefinition +import org.onap.ccsdk.cds.controllerblueprints.core.data.Implementation +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.ArtifactDefinitionBuilder +import org.onap.ccsdk.cds.controllerblueprints.core.dsl.nodeTemplate import org.onap.ccsdk.cds.controllerblueprints.core.dsl.nodeType -import org.onap.ccsdk.cds.controllerblueprints.core.getAsString import org.springframework.beans.factory.config.ConfigurableBeanFactory import org.springframework.context.annotation.Scope import org.springframework.stereotype.Component @@ -76,7 +79,7 @@ open class ComponentScriptExecutor(private var componentFunctionScriptingService fun BluePrintTypes.componentScriptExecutor(): NodeType { return nodeType(id = "component-script-executor", version = BluePrintConstants.DEFAULT_VERSION_NUMBER, - derivedFrom = BluePrintConstants.MODEL_TYPE_NODES_ROOT, + derivedFrom = BluePrintConstants.MODEL_TYPE_NODE_COMPONENT, description = "Generic Script Component Executor") { attribute(ComponentScriptExecutor.RESPONSE_DATA, BluePrintConstants.DATA_TYPE_JSON, false) attribute(ComponentScriptExecutor.STATUS, BluePrintConstants.DATA_TYPE_STRING, true) @@ -105,4 +108,101 @@ fun BluePrintTypes.componentScriptExecutor(): NodeType { } } } +} + +/** Component Builder */ + +fun componentScriptExecutor(id: String, description: String, + block: ComponentScriptExecutorBuilder.() -> Unit): NodeTemplate { + return ComponentScriptExecutorBuilder(id, description).apply(block).build() +} + +class ComponentScriptExecutorBuilder(private val id: String, private val description: String) { + private var implementation: Implementation? = null + private var inputs: MutableMap<String, JsonNode>? = null + private var outputs: MutableMap<String, JsonNode>? = null + private var artifacts: MutableMap<String, ArtifactDefinition>? = null + + fun implementation(timeout: Int, operationHost: String? = BluePrintConstants.PROPERTY_SELF) { + val implementation = Implementation().apply { + this.operationHost = operationHost!! + this.timeout = timeout + } + this.implementation = implementation + } + + fun inputs(block: InputAssignmentBuilder.() -> Unit) { + this.inputs = InputAssignmentBuilder().apply(block).build() + } + + fun outputs(block: OutputAssignmentBuilder.() -> Unit) { + this.outputs = OutputAssignmentBuilder().apply(block).build() + } + + fun artifact(id: String, type: String, file: String) { + if (artifacts == null) + artifacts = hashMapOf() + artifacts!![id] = ArtifactDefinitionBuilder(id, type, file).build() + } + + fun artifact(id: String, type: String, file: String, block: ArtifactDefinitionBuilder.() -> Unit) { + if (artifacts == null) + artifacts = hashMapOf() + artifacts!![id] = ArtifactDefinitionBuilder(id, type, file).apply(block).build() + } + + fun build(): NodeTemplate { + return nodeTemplate(id, "component-script-executor", description) { + operation("ComponentScriptExecutor") { + implementation(implementation) + inputs(inputs) + outputs(outputs) + } + artifacts(artifacts) + } + } + + class InputAssignmentBuilder { + val properties: MutableMap<String, JsonNode> = hashMapOf() + + fun type(type: String) { + properties[ComponentScriptExecutor.SCRIPT_TYPE] = type.asJsonPrimitive() + } + + fun scriptClassReference(scriptClassReference: String) { + properties[ComponentScriptExecutor.SCRIPT_CLASS_REFERENCE] = scriptClassReference.asJsonPrimitive() + } + + fun dynamicProperty(dynamicProperty: Any) { + dynamicProperty(dynamicProperty.asJsonType()) + } + + fun dynamicProperty(dynamicProperty: JsonNode) { + properties[ComponentScriptExecutor.DYNAMIC_PROPERTIES] = dynamicProperty + } + + fun build(): MutableMap<String, JsonNode> { + return properties + } + } + + class OutputAssignmentBuilder { + val properties: MutableMap<String, JsonNode> = hashMapOf() + + fun status(status: String) { + properties[ComponentScriptExecutor.STATUS] = status.asJsonPrimitive() + } + + fun responseData(responseData: Any) { + responseData(responseData.asJsonType()) + } + + fun responseData(responseData: JsonNode) { + properties[ComponentScriptExecutor.RESPONSE_DATA] = responseData + } + + fun build(): MutableMap<String, JsonNode> { + return properties + } + } }
\ No newline at end of file |