"config-snapshot-value": {
"required": false,
"type": "string"
- },
- "response-data": {
- "required": false,
- "type": "json"
}
},
"capabilities": {
}
]
}
+ },
+ "outputs": {
+ "response-data": {
+ "description": "Execution Response Data.",
+ "required": false,
+ "type": "string"
+ },
+ "status": {
+ "description": "Status of the Component Execution ( success or failure )",
+ "required": true,
+ "type": "string"
+ }
}
}
}
"response-data": {
"required": false,
"type": "json"
+ },
+ "status": {
+ "required": true,
+ "type": "string"
}
},
"capabilities": {
"response-data": {
"required": false,
"type": "json"
+ },
+ "status": {
+ "required": true,
+ "type": "string"
}
},
"capabilities": {
"required": true,
"type": "string"
}
+ },
+ "outputs": {
+ "response-data": {
+ "description": "Execution Response Data.",
+ "required": false,
+ "type": "string"
+ },
+ "status": {
+ "description": "Status of the Component Execution ( success or failure )",
+ "required": true,
+ "type": "string"
+ }
}
}
}
"type": "integer",
"default": 180
}
+ },
+ "outputs": {
+ "response-data": {
+ "description": "Execution Response Data.",
+ "required": false,
+ "type": "string"
+ },
+ "status": {
+ "description": "Status of the Component Execution ( success or failure )",
+ "required": true,
+ "type": "string"
+ }
}
}
}
}
},
"outputs": {
+ "response-data": {
+ "description": "Execution Response Data.",
+ "required": false,
+ "type": "string"
+ },
"status": {
"description": "Status of the Component Execution ( success or failure )",
"required": true,
"description": "Holds resolved values for each artifact prefix eg. { vdns: { vnf-id: 123 } }",
"required": true,
"type": "map"
+ },
+ "status": {
+ "description": "Resource Assignment status.",
+ "required": true,
+ "type": "string"
}
},
"capabilities": {
"response-data": {
"required": false,
"type": "json"
+ },
+ "status": {
+ "required": true,
+ "type": "string"
}
},
"capabilities": {
const val DIFF_XML = "XML"
// output fields names (and values) populated by this executor.
- const val OUTPUT_STATUS = "config-snapshot-status"
- const val OUTPUT_MESSAGE = "config-snapshot-message"
- const val OUTPUT_SNAPSHOT = "config-snapshot-value"
+ const val ATTRIBUTE_STATUS = "config-snapshot-status"
+ const val ATTRIBUTE_MESSAGE = "config-snapshot-message"
+ const val ATTRIBUTE_SNAPSHOT = "config-snapshot-value"
- const val OUTPUT_STATUS_SUCCESS = "success"
- const val OUTPUT_STATUS_ERROR = "error"
+ const val ATTRIBUTE_STATUS_SUCCESS = "success"
+ const val ATTRIBUTE_STATUS_ERROR = "error"
}
/**
OPERATION_DIFF -> compareConfigurationSnapshot(resourceId, resourceType, contentType)
else -> setNodeOutputErrors(
- OUTPUT_STATUS_ERROR,
+ ATTRIBUTE_STATUS_ERROR,
"Operation parameter must be fetch, store or diff"
)
}
* General error handling for the executor.
*/
override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
- setNodeOutputErrors(OUTPUT_STATUS_ERROR, "Error : ${runtimeException.message}")
+ setNodeOutputErrors(ATTRIBUTE_STATUS_ERROR, "Error : ${runtimeException.message}")
}
/**
) {
try {
val cfgSnapshotValue = cfgSnapshotService.findByResourceIdAndResourceTypeAndStatus(resourceId, resourceType, status)
- setNodeOutputProperties(OUTPUT_STATUS_SUCCESS, cfgSnapshotValue)
+ setNodeOutputProperties(ATTRIBUTE_STATUS_SUCCESS, cfgSnapshotValue)
} catch (er: NoSuchElementException) {
val message = "No Resource config snapshot identified by resourceId={$resourceId}, " +
"resourceType={$resourceType} does not exists"
- setNodeOutputErrors(OUTPUT_STATUS_ERROR, message)
+ setNodeOutputErrors(ATTRIBUTE_STATUS_ERROR, message)
}
}
) {
if (cfgSnapshotValue.isNotEmpty()) {
val cfgSnapshotSaved = cfgSnapshotService.write(cfgSnapshotValue, resourceId, resourceType, status)
- setNodeOutputProperties(OUTPUT_STATUS_SUCCESS, cfgSnapshotSaved.config_snapshot ?: "")
+ setNodeOutputProperties(ATTRIBUTE_STATUS_SUCCESS, cfgSnapshotSaved.config_snapshot ?: "")
} else {
val message = "Could not store config snapshot identified by resourceId={$resourceId},resourceType={$resourceType} does not exists"
- setNodeOutputErrors(OUTPUT_STATUS_ERROR, message)
+ setNodeOutputErrors(ATTRIBUTE_STATUS_ERROR, message)
}
}
val cfgCandidate = cfgSnapshotService.findByResourceIdAndResourceTypeAndStatus(resourceId, resourceType, CANDIDATE)
if (cfgRunning.isEmpty() || cfgCandidate.isEmpty()) {
- setNodeOutputProperties(OUTPUT_STATUS_SUCCESS, Strings.EMPTY)
+ setNodeOutputProperties(ATTRIBUTE_STATUS_SUCCESS, Strings.EMPTY)
return
}
when (contentType.toUpperCase()) {
DIFF_JSON -> {
val patchNode = JsonDiff.asJson(cfgRunning.jsonAsJsonType(), cfgCandidate.jsonAsJsonType())
- setNodeOutputProperties(OUTPUT_STATUS_SUCCESS, patchNode.toString())
+ setNodeOutputProperties(ATTRIBUTE_STATUS_SUCCESS, patchNode.toString())
}
DIFF_XML -> {
val myDiff = DiffBuilder
.normalizeWhitespace()
.build()
- setNodeOutputProperties(OUTPUT_STATUS_SUCCESS, formatXmlDifferences(myDiff))
+ setNodeOutputProperties(ATTRIBUTE_STATUS_SUCCESS, formatXmlDifferences(myDiff))
}
else -> {
val message = "Could not compare config snapshots for type $contentType"
- setNodeOutputErrors(OUTPUT_STATUS_ERROR, message)
+ setNodeOutputErrors(ATTRIBUTE_STATUS_ERROR, message)
}
}
}
* Utility function to set the output properties of the executor node
*/
private fun setNodeOutputProperties(status: String, snapshot: String) {
- setAttribute(OUTPUT_STATUS, status.asJsonPrimitive())
- setAttribute(OUTPUT_SNAPSHOT, snapshot.asJsonPrimitive())
- log.debug("Setting output $OUTPUT_STATUS=$status")
+ setAttribute(ATTRIBUTE_STATUS, status.asJsonPrimitive())
+ setAttribute(ATTRIBUTE_SNAPSHOT, snapshot.asJsonPrimitive())
+ log.debug("Setting output $ATTRIBUTE_STATUS=$status")
}
/**
* Utility function to set the output properties and errors of the executor node, in case of errors
*/
private fun setNodeOutputErrors(status: String, message: String) {
- setAttribute(OUTPUT_STATUS, status.asJsonPrimitive())
- setAttribute(OUTPUT_MESSAGE, message.asJsonPrimitive())
- setAttribute(OUTPUT_SNAPSHOT, "".asJsonPrimitive())
+ setAttribute(ATTRIBUTE_STATUS, status.asJsonPrimitive())
+ setAttribute(ATTRIBUTE_MESSAGE, message.asJsonPrimitive())
+ setAttribute(ATTRIBUTE_SNAPSHOT, "".asJsonPrimitive())
- log.info("Setting error and output $OUTPUT_STATUS=$status, $OUTPUT_MESSAGE=$message ")
+ log.info("Setting error and output $ATTRIBUTE_STATUS=$status, $ATTRIBUTE_MESSAGE=$message ")
- addError(status, OUTPUT_MESSAGE, message)
+ addError(status, ATTRIBUTE_MESSAGE, message)
}
/**
}
// then; we should get success and the TEST1 payload in our output properties
assertEquals(
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS_SUCCESS.asJsonPrimitive(),
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS_SUCCESS.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS
)
)
assertEquals(
snapshotConfig.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_SNAPSHOT
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_SNAPSHOT
)
)
}
}
// then; we should get success and the TEST payload in our output properties
assertEquals(
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS_SUCCESS.asJsonPrimitive(),
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS_SUCCESS.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS
)
)
assertEquals(
snapshotConfig.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_SNAPSHOT
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_SNAPSHOT
)
)
}
// then; we should get success and the PAYLOAD payload in our output properties
assertEquals(
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS_SUCCESS.asJsonPrimitive(),
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS_SUCCESS.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS
)
)
assertEquals(
snapshotConfig.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_SNAPSHOT
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_SNAPSHOT
)
)
}
}
assertEquals(
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS_SUCCESS.asJsonPrimitive(),
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS_SUCCESS.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS
)
)
}
// then; we should get error in our output properties
assertTrue(bluePrintRuntimeService.getBluePrintError().allErrors().size == 1)
assertEquals(
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS_ERROR.asJsonPrimitive(),
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS_ERROR.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS
)
)
val msg = "Operation parameter must be fetch, store or diff"
msg.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_MESSAGE
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_MESSAGE
)
)
}
// then; we should get error in our output properties
assertEquals(
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS_ERROR.asJsonPrimitive(),
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS_ERROR.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS
)
)
val message = "Could not compare config snapshots for type YANG"
message.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_MESSAGE
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_MESSAGE
)
)
}
// then; we should get success
assertTrue(bluePrintRuntimeService.getBluePrintError().allErrors().size == 0)
assertEquals(
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS_SUCCESS.asJsonPrimitive(),
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS_SUCCESS.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS
)
)
diffJson.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_SNAPSHOT
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_SNAPSHOT
)
)
}
// then; we should get success
assertTrue(bluePrintRuntimeService.getBluePrintError().allErrors().size == 0)
assertEquals(
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS_SUCCESS.asJsonPrimitive(),
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS_SUCCESS.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_STATUS
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_STATUS
)
)
diffXml.asJsonPrimitive(),
bluePrintRuntimeService.getNodeTemplateAttributeValue(
nodeTemplateName,
- ComponentConfigSnapshotsExecutor.OUTPUT_SNAPSHOT
+ ComponentConfigSnapshotsExecutor.ATTRIBUTE_SNAPSHOT
)
)
}
const val SCRIPT_TYPE = "script-type"
const val SCRIPT_CLASS_REFERENCE = "script-class-reference"
const val INSTANCE_DEPENDENCIES = "instance-dependencies"
+
+ const val ATTRIBUTE_RESPONSE_DATA = "response-data"
+ const val ATTRIBUTE_STATUS = "status"
+
+ const val OUTPUT_RESPONSE_DATA = "response-data"
+ const val OUTPUT_STATUS = "status"
}
lateinit var scriptComponent: AbstractScriptComponentFunction
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"
+ const val OUTPUT_RESPONSE_DATA = "response-data"
+ const val OUTPUT_STATUS = "status"
const val DEFAULT_ENV_PREPARE_TIMEOUT_IN_SEC = 120
const val DEFAULT_EXECUTE_TIMEOUT_IN_SEC = 180
const val DEFAULT_CBA_UPLOAD_TIMEOUT_IN_SEC = 30
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.node.ArrayNode
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentScriptExecutor
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
ComponentRemotePythonExecutor.ATTRIBUTE_RESPONSE_DATA, BluePrintConstants.DATA_TYPE_JSON,
false
)
+ attribute(
+ ComponentRemotePythonExecutor.ATTRIBUTE_EXEC_CMD_STATUS, BluePrintConstants.DATA_TYPE_STRING,
+ true
+ )
operation("ComponentRemotePythonExecutor", "ComponentRemotePythonExecutor Operation") {
inputs {
entrySchema("dt-system-packages")
}
}
+ outputs {
+ property(
+ ComponentRemotePythonExecutor.OUTPUT_RESPONSE_DATA, BluePrintConstants.DATA_TYPE_JSON,
+ false, "Output Response"
+ )
+ property(
+ ComponentRemotePythonExecutor.OUTPUT_STATUS, BluePrintConstants.DATA_TYPE_STRING,
+ true, "Status of the Component Execution ( success or failure )"
+ )
+ }
}
}
}
}
}
- class OutputsBuilder : PropertiesAssignmentBuilder()
+ class OutputsBuilder : PropertiesAssignmentBuilder() {
+
+ fun status(status: String) = status(status.asJsonPrimitive())
+
+ fun status(status: JsonNode) {
+ property(ComponentScriptExecutor.OUTPUT_STATUS, status)
+ }
+
+ fun responseData(responseData: String) = responseData(responseData.asJsonType())
+
+ fun responseData(responseData: JsonNode) {
+ property(ComponentScriptExecutor.OUTPUT_RESPONSE_DATA, responseData)
+ }
+ }
}
const val INPUT_OCCURRENCE = "occurrence"
const val ATTRIBUTE_ASSIGNMENT_PARAM = "assignment-params"
+ const val ATTRIBUTE_ASSIGNMENT_MAP = "assignment-map"
const val ATTRIBUTE_STATUS = "status"
const val OUTPUT_RESOURCE_ASSIGNMENT_PARAMS = "resource-assignment-params"
ResourceResolutionComponent.ATTRIBUTE_ASSIGNMENT_PARAM, BluePrintConstants.DATA_TYPE_STRING,
true
)
+ attribute(
+ ResourceResolutionComponent.ATTRIBUTE_ASSIGNMENT_MAP, BluePrintConstants.DATA_TYPE_MAP,
+ true
+ )
attribute(
ResourceResolutionComponent.ATTRIBUTE_STATUS, BluePrintConstants.DATA_TYPE_STRING,
true
const val ATTRIBUTE_RESPONSE_DATA = "response-data"
const val ATTRIBUTE_STATUS = "status"
+ const val OUTPUT_RESPONSE_DATA = "response-data"
const val OUTPUT_STATUS = "status"
}
)
}
outputs {
+ property(
+ ComponentRemoteScriptExecutor.OUTPUT_RESPONSE_DATA, BluePrintConstants.DATA_TYPE_JSON,
+ false, "Output Response"
+ )
property(
ComponentRemoteScriptExecutor.OUTPUT_STATUS, BluePrintConstants.DATA_TYPE_STRING,
true, "Status of the Component Execution ( success or failure )"
fun status(status: String) = status(status.asJsonPrimitive())
fun status(status: JsonNode) {
- property(ComponentRemoteScriptExecutor.OUTPUT_STATUS, status)
+ property(ComponentScriptExecutor.OUTPUT_STATUS, status)
+ }
+
+ fun responseData(responseData: String) = responseData(responseData.asJsonType())
+
+ fun responseData(responseData: JsonNode) {
+ property(ComponentScriptExecutor.OUTPUT_RESPONSE_DATA, responseData)
}
}
}