diff options
author | 2020-12-09 19:49:48 -0500 | |
---|---|---|
committer | 2021-03-17 22:31:31 -0400 | |
commit | b96b44d6d7ca11dbbc3ad4bd2194df31fba5efb6 (patch) | |
tree | c10077ebb496410271ca3d07ca8896048c817bd9 /ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org | |
parent | ae588292c67e20c5cae8cb3c899957aac79a676d (diff) |
Refactoring to enable on_failure for imperative workflow
BlueprintError needs to associate errors with the steps in which they occurred
in order for imperative workflow to handle on_failure properly.
Made stepName more accessible and corrected places where stepName was assigned to nodeTemplateName.
Issue-ID: CCSDK-3219
Change-Id: I7e5805745c63558cff6be533e1b99c32ad06c3db
Signed-off-by: Jozsef Csongvai <jozsef.csongvai@bell.ca>
Diffstat (limited to 'ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org')
2 files changed, 20 insertions, 8 deletions
diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BlueprintError.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BlueprintError.kt index b4d95ca3b..2ecdce770 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BlueprintError.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BlueprintError.kt @@ -18,13 +18,21 @@ package org.onap.ccsdk.cds.controllerblueprints.core class BlueprintError { - var errors: MutableList<String> = arrayListOf() + private val errors: MutableMap<String, MutableList<String>> = mutableMapOf() - fun addError(type: String, name: String, error: String) { - this.errors.add("$type : $name : $error") + fun addError(type: String, name: String, error: String, stepName: String) { + addError("$type : $name : $error", stepName) } - fun addError(error: String) { - this.errors.add(error) + fun addError(error: String, stepName: String) { + errors.getOrPut(stepName, { mutableListOf() }).add(error) } + + fun addErrors(stepName: String, errorList: List<String>) { + errors.getOrPut(stepName, { mutableListOf() }).addAll(errorList) + } + + fun allErrors(): List<String> = errors.values.flatten() + + fun stepErrors(stepName: String): MutableList<String>? = errors[stepName] } diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BlueprintContext.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BlueprintContext.kt index b79b86747..62026be88 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BlueprintContext.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BlueprintContext.kt @@ -103,8 +103,11 @@ class BlueprintContext(val serviceTemplate: ServiceTemplate) { fun workflowInputs(workFlowName: String) = workflowByName(workFlowName).inputs + fun workflowSteps(workFlowName: String) = + workflowByName(workFlowName).steps ?: throw BlueprintException("could't get steps for workflow($workFlowName)") + fun workflowStepByName(workFlowName: String, stepName: String): Step { - return workflowByName(workFlowName).steps?.get(stepName) + return workflowSteps(workFlowName)[stepName] ?: throw BlueprintException("could't get step($stepName) for workflow($workFlowName)") } @@ -114,8 +117,9 @@ class BlueprintContext(val serviceTemplate: ServiceTemplate) { } fun workflowFirstStepNodeTemplate(workFlowName: String): String { - val firstStepName = workflowByName(workFlowName).steps?.keys?.first() - ?: throw BlueprintException("could't get first step for workflow($workFlowName)") + val firstStepName = workflowSteps(workFlowName).keys.ifEmpty { + throw BlueprintException("could't get first step for workflow($workFlowName)") + }.first() return workflowStepNodeTemplate(workFlowName, firstStepName) } |