diff options
author | Dan Timoney <dtimoney@att.com> | 2019-08-16 16:14:03 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2019-08-16 16:14:03 +0000 |
commit | 09af3572a09b99a94b3076c11c1abaadeecf77ab (patch) | |
tree | 61eb22343c3b852e46125255475e68089fc4b5d8 /ms | |
parent | bc4e42d697e806982cebd8249f7f917f9fc663b7 (diff) | |
parent | b01289f38b051b9b40eb12db12b46aec7c3472db (diff) |
Merge "Add workflow graph utils."
Diffstat (limited to 'ms')
3 files changed, 91 insertions, 0 deletions
diff --git a/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BluePrintConstants.kt b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BluePrintConstants.kt index 67a215ef5..064c196ed 100644 --- a/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BluePrintConstants.kt +++ b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BluePrintConstants.kt @@ -161,6 +161,9 @@ object BluePrintConstants { const val TOSCA_SCRIPTS_KOTLIN_DIR: String = "$TOSCA_SCRIPTS_DIR/kotlin" const val TOSCA_SCRIPTS_JYTHON_DIR: String = "$TOSCA_SCRIPTS_DIR/python" + const val GRAPH_START_NODE_NAME = "START" + const val GRAPH_END_NODE_NAME = "END" + const val PROPERTY_ENV = "ENV" const val PROPERTY_APP = "APP" const val PROPERTY_BPP = "BPP" diff --git a/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/WorkflowGraphUtils.kt b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/WorkflowGraphUtils.kt new file mode 100644 index 000000000..ef765ab86 --- /dev/null +++ b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/WorkflowGraphUtils.kt @@ -0,0 +1,46 @@ +/* + * 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.controllerblueprints.core.utils + +import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.data.EdgeLabel +import org.onap.ccsdk.cds.controllerblueprints.core.data.Graph +import org.onap.ccsdk.cds.controllerblueprints.core.data.Workflow +import org.onap.ccsdk.cds.controllerblueprints.core.endNodes +import org.onap.ccsdk.cds.controllerblueprints.core.startNodes + +object WorkflowGraphUtils { + + fun workFlowToGraph(workflow: Workflow): Graph { + val graph = Graph() + workflow.steps?.forEach { (stepName, step) -> + step.onSuccess?.forEach { successTarget -> + graph.addEdge(stepName, successTarget, EdgeLabel.SUCCESS) + } + step.onFailure?.forEach { failureTarget -> + graph.addEdge(stepName, failureTarget, EdgeLabel.FAILURE) + } + } + graph.startNodes().forEach { rootNode -> + graph.addEdge(BluePrintConstants.GRAPH_START_NODE_NAME, rootNode.id, EdgeLabel.SUCCESS) + } + graph.endNodes().forEach { endNode -> + graph.addEdge(endNode.id, BluePrintConstants.GRAPH_END_NODE_NAME, EdgeLabel.SUCCESS) + } + return graph + } +}
\ No newline at end of file diff --git a/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/WorkflowGraphUtilsTest.kt b/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/WorkflowGraphUtilsTest.kt new file mode 100644 index 000000000..fb0a1a63d --- /dev/null +++ b/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/WorkflowGraphUtilsTest.kt @@ -0,0 +1,42 @@ +/* + * 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.controllerblueprints.core.utils + +import org.onap.ccsdk.cds.controllerblueprints.core.dsl.workflow +import kotlin.test.Test +import kotlin.test.assertNotNull + +class WorkflowGraphUtilsTest { + + @Test + fun testWorkFlowToGraph() { + + val workflow = workflow("sample", "") { + step("A", "A", "") { + success("B") + } + step("B", "B", "") { + success("C") + failure("D") + } + step("C", "C", "") + step("D", "D", "") + } + val graph = WorkflowGraphUtils.workFlowToGraph(workflow) + assertNotNull(graph, "failed to create graph") + } +}
\ No newline at end of file |