diff options
author | 2019-12-02 19:04:13 -0500 | |
---|---|---|
committer | 2019-12-06 17:46:13 +0000 | |
commit | 7466e4277c9fe098a61ae126d1892b3cd30d6f89 (patch) | |
tree | aee929bbb64db1d1b831cbe17551957c8916c3c2 /ms/blueprintsprocessor/modules/commons/processor-core/src/main | |
parent | aa75fbae60835585b72195c581b88cacca511a5d (diff) |
Remote Script Executor Component
Define and Implement component-remote-script-executor component and DSL.
Get the timeout from model definitions
fix the dat pattern issues
Define API data extension functions.
Issue-ID: CCSDK-1975
Signed-off-by: Brinda Santh <bs2796@att.com>
Change-Id: I41a429eb21a050e5ab512a7a73a394b975543f31
Diffstat (limited to 'ms/blueprintsprocessor/modules/commons/processor-core/src/main')
-rw-r--r-- | ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/ApiDataExtensions.kt | 28 | ||||
-rw-r--r-- | ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/ApiDataUtils.kt (renamed from ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/BluePrintMappings.kt) | 94 | ||||
-rw-r--r-- | ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/PayloadUtils.kt | 61 |
3 files changed, 156 insertions, 27 deletions
diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/ApiDataExtensions.kt b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/ApiDataExtensions.kt index af7109449..8e1b5b2ce 100644 --- a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/ApiDataExtensions.kt +++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/ApiDataExtensions.kt @@ -1,5 +1,6 @@ /* * Copyright © 2019 IBM. + * Modifications Copyright © 2018-2019 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. @@ -16,8 +17,13 @@ package org.onap.ccsdk.cds.blueprintsprocessor.core +import com.fasterxml.jackson.databind.JsonNode +import com.google.protobuf.Struct +import com.google.protobuf.util.JsonFormat import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput +import org.onap.ccsdk.cds.controllerblueprints.core.asJsonString import org.onap.ccsdk.cds.controllerblueprints.core.asType +import org.onap.ccsdk.cds.controllerblueprints.core.jsonAsJsonType import kotlin.reflect.KClass fun <T : Any> ExecutionServiceInput.payloadAsType(clazzType: KClass<T>): T { @@ -25,3 +31,25 @@ fun <T : Any> ExecutionServiceInput.payloadAsType(clazzType: KClass<T>): T { val requestJsonNode = this.payload.get("$actionName-request") return requestJsonNode.asType(clazzType.java) } + +/** Convert Proto Struct to Json string */ +fun Struct.asJson(): String { + return JsonFormat.printer().print(this) +} + +/** Convert Proto Struct to Json node */ +fun Struct.asJsonType(): JsonNode { + return this.asJson().jsonAsJsonType() +} + +/** Convert Json node to Proto Struct */ +fun JsonNode.asProtoStruct(): Struct { + return this.asJsonString(false).asProtoStruct() +} + +/** Convert Json string to Proto Struct */ +fun String.asProtoStruct(): Struct { + val struct = Struct.newBuilder() + JsonFormat.parser().merge(this, struct) + return struct.build() +} diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/BluePrintMappings.kt b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/ApiDataUtils.kt index 59114de86..24ed45c52 100644 --- a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/BluePrintMappings.kt +++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/ApiDataUtils.kt @@ -1,5 +1,6 @@ /* * Copyright (C) 2019 Bell Canada. + * Modifications Copyright © 2018-2019 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. @@ -13,24 +14,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.onap.ccsdk.cds.blueprintsprocessor.core.utils import com.fasterxml.jackson.databind.node.ObjectNode -import com.google.common.base.Strings import com.google.protobuf.Struct import com.google.protobuf.util.JsonFormat +import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ACTION_MODE_SYNC import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType import org.onap.ccsdk.cds.controllerblueprints.common.api.Flag import org.onap.ccsdk.cds.controllerblueprints.common.api.Status import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils +import org.onap.ccsdk.cds.controllerblueprints.core.utils.controllerDate +import org.onap.ccsdk.cds.controllerblueprints.core.utils.currentTimestamp +import org.onap.ccsdk.cds.controllerblueprints.core.utils.toControllerDate import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput -import java.text.SimpleDateFormat -import java.util.Date - -private val formatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") // ACTION IDENTIFIER @@ -59,8 +60,10 @@ fun org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.CommonHeader.toProto(): commonHeader.originatorId = this.originatorId commonHeader.requestId = this.requestId commonHeader.subRequestId = this.subRequestId - commonHeader.timestamp = this.timestamp.toString() - commonHeader.flag = this.flags?.toProto() + commonHeader.timestamp = this.timestamp.currentTimestamp() + if (this.flags != null) { + commonHeader.flag = this.flags!!.toProto() + } return commonHeader.build() } @@ -69,10 +72,10 @@ fun CommonHeader.toJava(): org.onap.ccsdk.cds.blueprintsprocessor.core.api.data. commonHeader.originatorId = this.originatorId commonHeader.requestId = this.requestId commonHeader.subRequestId = this.subRequestId - commonHeader.timestamp = if (!Strings.isNullOrEmpty(this.timestamp)) { - formatter.parse(this.timestamp) + commonHeader.timestamp = if (!this.timestamp.isNullOrEmpty()) { + this.timestamp!!.toControllerDate() } else { - Date() + controllerDate() } commonHeader.flags = this.flag?.toJava() return commonHeader @@ -128,3 +131,74 @@ fun org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceOutput. executionServiceOuput.payload = struct.build() return executionServiceOuput.build() } + +/** Create proto common header with [requestId] [subRequestId] and [originator] */ +fun createCommonHeaderProto( + requestId: String, + subRequestId: String, + originator: String +) = CommonHeader.newBuilder() + .setTimestamp(currentTimestamp()) + .setOriginatorId(originator) + .setRequestId(requestId) + .setSubRequestId(subRequestId).build()!! + +/** Create proto action identifiers with [name] [version] and [action] */ +fun createActionIdentifiersProto( + name: String, + version: String, + action: String +) = ActionIdentifiers.newBuilder() + .setBlueprintName(name) + .setBlueprintVersion(version) + .setActionName(action) + .setMode(ACTION_MODE_SYNC) + .build()!! + +/** Create proto status with [message] and [code] */ +fun createStatus( + message: String, + code: Int +) = Status.newBuilder() + .setTimestamp(currentTimestamp()) + .setMessage(message) + .setCode(code) + .build()!! + +/** Create ExecutionServiceInput using [commonHeader], [actionIdentifier] and response payload [jsonContent] */ +fun createExecutionServiceInputProto( + commonHeader: CommonHeader, + actionIdentifier: ActionIdentifiers, + jsonContent: String +): ExecutionServiceInput { + + val payloadBuilder = ExecutionServiceInput.newBuilder().payloadBuilder + JsonFormat.parser().merge(jsonContent, payloadBuilder) + + return ExecutionServiceInput.newBuilder() + .setCommonHeader(commonHeader) + .setActionIdentifiers(actionIdentifier) + .setPayload(payloadBuilder.build()) + .build() +} + +/** Create ExecutionServiceOutput using [commonHeader], [actionIdentifier] [status]and + * response payload [jsonContent] + * */ +fun createExecutionServiceOutputProto( + commonHeader: CommonHeader, + actionIdentifier: ActionIdentifiers, + status: Status, + jsonContent: String +): ExecutionServiceOutput { + + val payloadBuilder = ExecutionServiceOutput.newBuilder().payloadBuilder + JsonFormat.parser().merge(jsonContent, payloadBuilder) + + return ExecutionServiceOutput.newBuilder() + .setCommonHeader(commonHeader) + .setActionIdentifiers(actionIdentifier) + .setStatus(status) + .setPayload(payloadBuilder.build()) + .build() +} diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/PayloadUtils.kt b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/PayloadUtils.kt index d3669f634..426e43cda 100644 --- a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/PayloadUtils.kt +++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/utils/PayloadUtils.kt @@ -18,29 +18,56 @@ package org.onap.ccsdk.cds.blueprintsprocessor.core.utils import com.fasterxml.jackson.databind.JsonNode import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException +import org.onap.ccsdk.cds.controllerblueprints.core.asJsonString +import org.onap.ccsdk.cds.controllerblueprints.core.returnNullIfMissing import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintRuntimeService +import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils -class PayloadUtils { +object PayloadUtils { - companion object { + fun prepareRequestPayloadStr(workflowName: String, jsonNode: JsonNode): String { + return prepareRequestPayload(workflowName, jsonNode).asJsonString(false) + } - fun prepareInputsFromWorkflowPayload(bluePrintRuntimeService: BluePrintRuntimeService<*>, payload: JsonNode, workflowName: String) { - val input = payload.get("$workflowName-request") - bluePrintRuntimeService.assignWorkflowInputs(workflowName, input) - } + fun prepareRequestPayload(workflowName: String, jsonNode: JsonNode): JsonNode { + val objectNode = JacksonUtils.objectMapper.createObjectNode() + objectNode["$workflowName-request"] = jsonNode + return objectNode + } - fun prepareDynamicInputsFromWorkflowPayload(bluePrintRuntimeService: BluePrintRuntimeService<*>, payload: JsonNode, workflowName: String) { - val input = payload.get("$workflowName-request") - val propertyFields = input.get("$workflowName-properties") - prepareDynamicInputsFromComponentPayload(bluePrintRuntimeService, propertyFields) - } + fun getResponseDataFromPayload(workflowName: String, responsePayload: JsonNode): JsonNode { + return responsePayload.get("$workflowName-response").returnNullIfMissing() + ?: throw BluePrintProcessorException("failed to get property($workflowName-response)") + } + + fun prepareInputsFromWorkflowPayload( + bluePrintRuntimeService: BluePrintRuntimeService<*>, + payload: JsonNode, + workflowName: String + ) { + val input = payload.get("$workflowName-request") + bluePrintRuntimeService.assignWorkflowInputs(workflowName, input) + } + + fun prepareDynamicInputsFromWorkflowPayload( + bluePrintRuntimeService: BluePrintRuntimeService<*>, + payload: JsonNode, + workflowName: String + ) { + val input = payload.get("$workflowName-request") + val propertyFields = input.get("$workflowName-properties") + prepareDynamicInputsFromComponentPayload(bluePrintRuntimeService, propertyFields) + } - fun prepareDynamicInputsFromComponentPayload(bluePrintRuntimeService: BluePrintRuntimeService<*>, payload: JsonNode) { - payload.fields().forEach { property -> - val path = StringBuilder(BluePrintConstants.PATH_INPUTS) - .append(BluePrintConstants.PATH_DIVIDER).append(property.key).toString() - bluePrintRuntimeService.put(path, property.value) - } + fun prepareDynamicInputsFromComponentPayload( + bluePrintRuntimeService: BluePrintRuntimeService<*>, + payload: JsonNode + ) { + payload.fields().forEach { property -> + val path = StringBuilder(BluePrintConstants.PATH_INPUTS) + .append(BluePrintConstants.PATH_DIVIDER).append(property.key).toString() + bluePrintRuntimeService.put(path, property.value) } } } |