summaryrefslogtreecommitdiffstats
path: root/mod/runtimeapi/runtime-core
diff options
context:
space:
mode:
authorMichael Hwang <mhwang@research.att.com>2019-11-20 12:32:48 -0500
committerMichael Hwang <mhwang@research.att.com>2019-12-11 14:28:38 -0500
commitcc9d389bf197c1a365e669b407ea781f2bc87fd4 (patch)
tree9c4c8fdc265a4119d42dc8851aeead16a7767ce3 /mod/runtimeapi/runtime-core
parent849da15d5b7ddc68e4c2b90b603fc8948d4b5e6d (diff)
Add mod/runtimeapi
Change-Id: I6c0a45ddf460a63a1e4b9284e19bf4ab111bd463 Issue-ID: DCAEGEN2-1860 Signed-off-by: Michael Hwang <mhwang@research.att.com>
Diffstat (limited to 'mod/runtimeapi/runtime-core')
-rw-r--r--mod/runtimeapi/runtime-core/pom.xml37
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/BlueprintData.java45
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/Edge.java56
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/EdgeLocation.java47
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/EdgeMetadata.java58
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/FlowGraph.java108
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/FlowGraphParser.java107
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/Node.java75
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/blueprint_creator/BlueprintCreator.java26
-rw-r--r--mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/blueprint_creator/BlueprintCreatorOnapDublin.java78
-rw-r--r--mod/runtimeapi/runtime-core/src/test/data/blueprints/dcae-controller-toolbox-gui-eom-k8s.yaml227
-rw-r--r--mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_no_edits.yaml371
-rw-r--r--mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_onap_dublin.yaml131
-rw-r--r--mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_test_1.yaml371
-rw-r--r--mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_test_2.yaml371
-rw-r--r--mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_New_Toolbox.json37
-rw-r--r--mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_hello_world.json138
-rw-r--r--mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_hello_world_only_MR.json126
-rw-r--r--mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/Helper.java67
-rw-r--r--mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestFlowGraph.java97
-rw-r--r--mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestFlowGraphParser.java49
-rw-r--r--mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestIntegeration.java54
-rw-r--r--mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestOnapBpGen.java35
-rw-r--r--mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestStringReplace.java38
-rw-r--r--mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestYamlStringToObject.java52
25 files changed, 2801 insertions, 0 deletions
diff --git a/mod/runtimeapi/runtime-core/pom.xml b/mod/runtimeapi/runtime-core/pom.xml
new file mode 100644
index 0000000..fcfe314
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <packaging>jar</packaging>
+ <parent>
+ <artifactId>runtimeapi</artifactId>
+ <groupId>org.onap.dcaegen2.platform.mod</groupId>
+ <version>1.0.0</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>runtime-core</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>28.0-jre</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.dcaegen2.platform.cli</groupId>
+ <artifactId>blueprint-generator</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.yaml</groupId>
+ <artifactId>snakeyaml</artifactId>
+ <version>1.21</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/BlueprintData.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/BlueprintData.java
new file mode 100644
index 0000000..a32646b
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/BlueprintData.java
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+public class BlueprintData {
+
+ public String version;
+ public String blueprint_content;
+
+ public BlueprintData(String version, String blueprint_content) {
+ this.version = version;
+ this.blueprint_content = blueprint_content;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getBlueprint_content() {
+ return blueprint_content;
+ }
+
+ public void setBlueprint_content(String blueprint_content) {
+ this.blueprint_content = blueprint_content;
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/Edge.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/Edge.java
new file mode 100644
index 0000000..c488eee
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/Edge.java
@@ -0,0 +1,56 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class Edge {
+ private EdgeLocation src;
+ private EdgeLocation tgt;
+ private EdgeMetadata metadata;
+
+ public Edge(@JsonProperty("src") EdgeLocation src,@JsonProperty("tgt") EdgeLocation tgt,@JsonProperty("metadata") EdgeMetadata metadata) {
+ this.src = src;
+ this.tgt = tgt;
+ this.metadata = metadata;
+ }
+
+ public EdgeLocation getSrc() {
+ return src;
+ }
+
+ public void setSrc(EdgeLocation src) {
+ this.src = src;
+ }
+
+ public EdgeLocation getTgt() {
+ return tgt;
+ }
+
+ public void setTgt(EdgeLocation tgt) {
+ this.tgt = tgt;
+ }
+
+ public EdgeMetadata getMetadata() {
+ return metadata;
+ }
+
+ public void setMetadata(EdgeMetadata metadata) {
+ this.metadata = metadata;
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/EdgeLocation.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/EdgeLocation.java
new file mode 100644
index 0000000..ad19373
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/EdgeLocation.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class EdgeLocation {
+
+ private String node;
+ private String port;
+
+ public EdgeLocation(@JsonProperty("node") String node,@JsonProperty("port") String port) {
+ this.node = node;
+ this.port = port;
+ }
+
+ public String getNode() {
+ return node;
+ }
+
+ public void setNode(String node) {
+ this.node = node;
+ }
+
+ public String getPort() {
+ return port;
+ }
+
+ public void setPort(String port) {
+ this.port = port;
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/EdgeMetadata.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/EdgeMetadata.java
new file mode 100644
index 0000000..4898349
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/EdgeMetadata.java
@@ -0,0 +1,58 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class EdgeMetadata {
+
+ private String name;
+ private String dataType;
+ private String dmaapType;
+
+ public EdgeMetadata(@JsonProperty("name") String name,@JsonProperty("data_type") String dataType,
+ @JsonProperty("dmaap_type") String dmaapType) {
+ this.name = name;
+ this.dataType = dataType;
+ this.dmaapType = dmaapType;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDataType() {
+ return dataType;
+ }
+
+ public void setDataType(String dataType) {
+ this.dataType = dataType;
+ }
+
+ public String getDmaapType() {
+ return dmaapType;
+ }
+
+ public void setDmaapType(String dmaapType) {
+ this.dmaapType = dmaapType;
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/FlowGraph.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/FlowGraph.java
new file mode 100644
index 0000000..4413d72
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/FlowGraph.java
@@ -0,0 +1,108 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import com.google.common.graph.MutableNetwork;
+import com.google.common.graph.NetworkBuilder;
+
+import java.util.Set;
+
+public class FlowGraph<Node,Edge> {
+ private String id;
+ private String name;
+ private boolean isMain;
+ private String description;
+ private MutableNetwork<Node,Edge> mutableNetwork;
+
+ public FlowGraph(String id, String name, boolean isMain, String description) {
+ this.id = id;
+ this.name = name;
+ this.isMain = isMain;
+ this.description = description;
+ this.mutableNetwork = NetworkBuilder.directed().build();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public boolean isMain() {
+ return isMain;
+ }
+
+ public void setMain(boolean main) {
+ isMain = main;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public void addNode(Node node) {
+ mutableNetwork.addNode(node);
+ }
+
+ public int getNodeSize() {
+ return mutableNetwork.nodes().size();
+ }
+
+ public Set<Node> getNodes() {
+ return mutableNetwork.nodes();
+ }
+
+ public Set<Edge> getEdges() {
+ return mutableNetwork.edges();
+ }
+
+ public void addEdge(Node node_1, Node node_2, Edge edge) {
+ mutableNetwork.addEdge(node_1,node_2,edge);
+ }
+
+ public int getEdgeSize() {
+ return mutableNetwork.edges().size();
+ }
+
+ public Edge getEdge(Node node_1, Node node_2) {
+ return mutableNetwork.edgeConnecting(node_1,node_2).get();
+ }
+
+ public void removeNode(Node node_1) {
+ mutableNetwork.removeNode(node_1);
+ }
+
+ public void removeEdge(Edge edge_1) {
+ mutableNetwork.removeEdge(edge_1);
+ }
+
+}
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/FlowGraphParser.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/FlowGraphParser.java
new file mode 100644
index 0000000..7154cae
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/FlowGraphParser.java
@@ -0,0 +1,107 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import org.onap.dcae.runtime.core.blueprint_creator.BlueprintCreator;
+
+import java.time.ZoneId;
+import java.time.Instant;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.ArrayList;
+
+public class FlowGraphParser {
+
+ private FlowGraph<Node,Edge> flowGraph;
+ private BlueprintCreator blueprintCreator;
+
+ public FlowGraphParser(BlueprintCreator blueprintCreator) {
+ this.blueprintCreator = blueprintCreator;
+ }
+
+ public void parse(FlowGraph<Node, Edge> flowGraph) {
+ this.flowGraph = flowGraph;
+ }
+
+ public static class BlueprintVessel {
+ public String blueprint;
+ public String name;
+ public int version;
+
+ @Override
+ public String toString() {
+ return String.format("%s:%d", this.name, this.version);
+ }
+ }
+
+ private static int createBlueprintVersion() {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMddHHmm").withZone(ZoneId.of("UTC"));
+ Instant instant = Instant.now();
+ String timestamp = formatter.format(instant);
+ return Integer.parseInt(timestamp);
+ }
+
+ private static String createBlueprintName(FlowGraph flowGraph, String componentName) {
+ // NOTE: Replacing whitespaces with dash
+ // NOTE: Separator must be dash or underbar otherwise cloudify will flip out
+ return String.format("%s_%s", flowGraph.getName().replace(" ", "-"), componentName);
+ }
+
+ public List<BlueprintVessel> createAndProcessBlueprints() {
+ //1. generate blueprints for all the nodes
+ for(Node node : flowGraph.getNodes()){
+ if(node.getComponentId().equals("dummy_id")){
+ continue;
+ }
+ BlueprintData blueprintData = new BlueprintData("1", blueprintCreator.createBlueprint(node.getComponentSpec()));
+ node.setBlueprintData(blueprintData);
+ }
+ //2. replace dmaap info from the edges
+ for(Edge edge : flowGraph.getEdges()){
+ String srcNodeId = edge.getSrc().getNode();
+ Node srcNode = getNodeFromId(srcNodeId);
+ blueprintCreator.resolveDmaapConnection(srcNode ,edge.getSrc().getPort(),edge.getMetadata().getName());
+
+ String tgtNodeId = edge.getTgt().getNode();
+ Node tgtNode = getNodeFromId(tgtNodeId);
+ blueprintCreator.resolveDmaapConnection(tgtNode ,edge.getTgt().getPort(),edge.getMetadata().getName());
+ }
+
+ //3. return processed blueprints along with blueprint_name
+ List<BlueprintVessel> blueprints = new ArrayList<>();
+ for(Node node: flowGraph.getNodes()){
+ if(node.getComponentId().equals("dummy_id")) {
+ continue;
+ }
+
+ BlueprintVessel bpv = new BlueprintVessel();
+ bpv.blueprint = node.getBlueprintData().getBlueprint_content();
+ bpv.version = createBlueprintVersion();
+ bpv.name = createBlueprintName(flowGraph, node.getComponentName());
+ blueprints.add(bpv);
+ }
+ return blueprints;
+ }
+
+ public Node getNodeFromId(String srcNodeId) {
+ for(Node node : flowGraph.getNodes()){
+ if (node.getComponentId().equals(srcNodeId)) return node;
+ }
+ return null;
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/Node.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/Node.java
new file mode 100644
index 0000000..d240520
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/Node.java
@@ -0,0 +1,75 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+public class Node {
+ private String componentId;
+ private String componentName;
+ private String componentSpec;
+ private BlueprintData blueprintData;
+
+ public String getComponentId() {
+ return componentId;
+ }
+
+ public void setComponentId(String componentId) {
+ this.componentId = componentId;
+ }
+
+ public String getComponentName() {
+ return componentName;
+ }
+
+ public void setComponentName(String componentName) {
+ this.componentName = componentName;
+ }
+
+ public String getComponentSpec() {
+ return componentSpec;
+ }
+
+ public void setComponentSpec(String componentSpec) {
+ this.componentSpec = componentSpec;
+ }
+
+ public BlueprintData getBlueprintData() {
+ return blueprintData;
+ }
+
+ public void setBlueprintData(BlueprintData blueprintData) {
+ this.blueprintData = blueprintData;
+ }
+
+ public Node(String componentId, String componentName, String componentSpec) {
+ this.componentId = componentId;
+ this.componentName = componentName;
+ this.componentSpec = componentSpec;
+ }
+
+
+
+ @Override
+ public boolean equals(Object obj) {
+ return this.componentId.equals(((Node)obj).componentId);
+ }
+
+ @Override
+ public String toString() {
+ return componentId;
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/blueprint_creator/BlueprintCreator.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/blueprint_creator/BlueprintCreator.java
new file mode 100644
index 0000000..b633472
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/blueprint_creator/BlueprintCreator.java
@@ -0,0 +1,26 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core.blueprint_creator;
+
+import org.onap.dcae.runtime.core.Node;
+
+public interface BlueprintCreator {
+
+ String createBlueprint(String componentSpecString);
+ void resolveDmaapConnection(Node node, String locationPort, String dmaapEntityName);
+}
diff --git a/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/blueprint_creator/BlueprintCreatorOnapDublin.java b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/blueprint_creator/BlueprintCreatorOnapDublin.java
new file mode 100644
index 0000000..2225971
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/main/java/org/onap/dcae/runtime/core/blueprint_creator/BlueprintCreatorOnapDublin.java
@@ -0,0 +1,78 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core.blueprint_creator;
+
+import org.onap.dcae.runtime.core.Node;
+import org.onap.blueprintgenerator.models.blueprint.Blueprint;
+import org.onap.blueprintgenerator.models.componentspec.ComponentSpec;
+import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.Yaml;
+
+import java.util.Map;
+
+public class BlueprintCreatorOnapDublin implements BlueprintCreator{
+
+ private String topicUrl;
+ private String importFilePath;
+
+ public void setTopicUrl(String topicUrl) {
+ this.topicUrl = topicUrl;
+ }
+
+ public void setImportFilePath(String importFilePath) {
+ this.importFilePath = importFilePath;
+ }
+
+ @Override
+ public String createBlueprint(String componentSpecString) {
+ ComponentSpec componentSpec = new ComponentSpec();
+ componentSpec.createComponentSpecFromString(componentSpecString);
+ Blueprint blueprint = new Blueprint().createBlueprint(componentSpec,"",'o',importFilePath);
+ return blueprint.blueprintToString();
+ }
+
+ @Override
+ public void resolveDmaapConnection(Node node, String locationPort, String dmaapEntityName) {
+ if(node == null || locationPort == null){
+ return;
+ }
+ String blueprintContent = node.getBlueprintData().getBlueprint_content();
+ locationPort = locationPort.replaceAll("-","_");
+ Yaml yaml = getYamlInstance();
+ Map<String,Object> obj = yaml.load(blueprintContent);
+ Map<String,Object> inputsObj = (Map<String, Object>) obj.get("inputs");
+ for(Map.Entry<String,Object> entry: inputsObj.entrySet()){
+ if(entry.getKey().matches(locationPort+".*url")) {
+ Map<String,String> inputValue = (Map<String, String>) entry.getValue();
+ inputValue.put("default",topicUrl + "/" + dmaapEntityName);
+ }
+ }
+ node.getBlueprintData().setBlueprint_content(yaml.dump(obj));
+ }
+
+ private Yaml getYamlInstance() {
+ DumperOptions options = new DumperOptions();
+ options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
+ options.setPrettyFlow(true);
+ return new Yaml(options);
+ }
+
+// private String attachSingleQoutes(String str) {
+// return "'" + str + "'";
+// }
+}
diff --git a/mod/runtimeapi/runtime-core/src/test/data/blueprints/dcae-controller-toolbox-gui-eom-k8s.yaml b/mod/runtimeapi/runtime-core/src/test/data/blueprints/dcae-controller-toolbox-gui-eom-k8s.yaml
new file mode 100644
index 0000000..834d8c9
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/data/blueprints/dcae-controller-toolbox-gui-eom-k8s.yaml
@@ -0,0 +1,227 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#This is the blueprint to deploy the DCAE Toolbox GUI.
+#2.0.0
+#
+---
+tosca_definitions_version: cloudify_dsl_1_3
+imports:
+- http://www.getcloudify.org/spec/cloudify/4.4/types.yaml
+- /k8splugin/1.4.22/node-type.yaml
+- /relationship/1.0.1/types.yaml
+- /cloudifydmaapplugin/1.4.6/node-type.yaml
+- /dcaepolicyplugin/2.3.1/node-type.yaml
+- /pgaas/0.3.2/pgaas_types.yaml
+inputs:
+ additionalsans:
+ type: string
+ default: ''
+ description: additional sans (string)
+ annotations:
+ default: {}
+ dcae-controller-toolbox-gui_cpu_limit:
+ type: string
+ default: '250m'
+ description: cpu limit for deployment (string)
+ dcae-controller-toolbox-gui_cpu_request:
+ type: string
+ default: '250m'
+ description: cpu requested for deployment (string)
+ dcae-controller-toolbox-gui_memory_limit:
+ type: string
+ default: '128Mi'
+ description: memory limit for deployment (string)
+ dcae-controller-toolbox-gui_memory_request:
+ type: string
+ default: '128Mi'
+ description: memory requested for deployment (string)
+ dcae_service_location:
+ type: string
+ description: Docker host override for docker bps (string)
+ idns_fqdn:
+ type: string
+ default: ''
+ description: The idns you will be using for your deployment (string)
+ image:
+ type: string
+ default: 'dcae-controller-tosca-gui:2.0.3'
+ description: The docker image for you microservice (string)
+ namespace:
+ type: string
+ replicas:
+ type: integer
+ default: 1
+ description: The number of replicas for your kubernetes deployment (integer)
+ service_component_name_override:
+ type: string
+ default: 'dcae-controller-toolbox-gui'
+ description: Unique identifier for your deployment (string)
+ use_aaf_tls:
+ type: boolean
+ default: false
+ description: To use or not use the aaf section (boolean)
+node_templates:
+ dcae-controller-toolbox-gui_dcae-controller-toolbox-gui:
+ type: dcae.nodes.ContainerizedServiceComponent
+ properties:
+ application_config:
+ services_calls: []
+ streams_publishes: {}
+ streams_subscribes: {}
+ docker_config:
+ healthcheck:
+ interval: 360s
+ timeout: 120s
+ type: http
+ endpoint: /actuator/health
+ livehealthcheck:
+ interval: 360s
+ timeout: 120s
+ type: http
+ endpoint: /actuator/health
+ volumes: []
+ ports:
+ - '8080:30998'
+ image:
+ get_input: image
+ location_id:
+ get_input: dcae_service_location
+ service_component_type: dcae-controller-toolbox-gui
+ replicas:
+ get_input: replicas
+ service_component_name_override:
+ concat:
+ - get_secret: location_id
+ - '-'
+ - get_input: service_component_name_override
+ configuration:
+ file_content:
+ apiVersion: v1
+ clusters:
+ - name: default-cluster
+ cluster:
+ server:
+ concat:
+ - https://
+ - get_secret: kc-kubernetes_master_ip
+ - ':'
+ - get_secret: kc-kubernetes_master_port
+ insecure-skip-tls-verify: true
+ contexts:
+ - name: default-context
+ context:
+ cluster: default-cluster
+ namespace:
+ get_input: namespace
+ user: default-user
+ kind: Config
+ preferences: {}
+ users:
+ - name: default-user
+ user:
+ token:
+ get_secret: dcae-mechid-k8s-token
+ current-context: default-context
+ resource_config:
+ limits:
+ cpu:
+ get_input: dcae-controller-toolbox-gui_cpu_limit
+ memory:
+ get_input: dcae-controller-toolbox-gui_memory_limit
+ requests:
+ cpu:
+ get_input: dcae-controller-toolbox-gui_cpu_request
+ memory:
+ get_input: dcae-controller-toolbox-gui_memory_request
+ aaf_tls_info:
+ use_aaf_tls:
+ get_input: use_aaf_tls
+ cert_directory: /opt/app/aafcertman
+ image: aaf-init-container:1.0.1
+ env:
+ - name: NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: deployer_id
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: deployerid
+ - name: deployer_pass
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: deployerpass
+ - name: cert_id
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: certid
+ - name: cm_url
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: cmurl
+ - name: idns_fqdn
+ value:
+ get_input: idns_fqdn
+ - name: app_service_names
+ value:
+ concat:
+ - get_secret: location_id
+ - '-'
+ - get_input: service_component_name_override
+ args:
+ - place
+ - cmtemplate
+ - -idnsfqdn=$(idns_fqdn)
+ - -cmurl=$(cm_url)
+ - -deployerid=$(deployer_id)
+ - -deployerpass=$(deployer_pass)
+ - -certid=$(cert_id)
+ - -namespace=$(NAMESPACE)
+ - -services=$(app_service_names)
+ - concat:
+ - -additionalsans=
+ - get_input: additionalsans
+ use_aaf_tls_renewal: true
+ renewal_args:
+ - renew
+ - -idnsfqdn=$(idns_fqdn)
+ - -cmurl=$(cm_url)
+ resource_config:
+ limits:
+ cpu: 250m
+ memory: 256Mi
+ requests:
+ cpu: 100m
+ memory: 256Mi
+ annotations:
+ get_input: annotations
+ relationships: []
diff --git a/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_no_edits.yaml b/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_no_edits.yaml
new file mode 100644
index 0000000..2bf4bea
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_no_edits.yaml
@@ -0,0 +1,371 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#Hello World mS for subscribing the data from local DMaaP, DR or MR, processing them and publishing them as PM files to local DMaaP DR
+#1.0.1
+#
+---
+tosca_definitions_version: cloudify_dsl_1_3
+imports:
+- http://www.getcloudify.org/spec/cloudify/4.4/types.yaml
+- /k8splugin/1.4.22/node-type.yaml
+- /relationship/1.0.1/types.yaml
+- /cloudifydmaapplugin/1.4.6/node-type.yaml
+- /dcaepolicyplugin/2.3.1/node-type.yaml
+- /pgaas/0.3.2/pgaas_types.yaml
+inputs:
+ DCAE-HELLO-WORLD-PUB-DR_feed2_feed_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-PUB-DR'
+ DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_password:
+ type: string
+ DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_username:
+ type: string
+ DCAE-HELLO-WORLD-PUB-MR_topic3_client_role:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-PUB-MR_topic3_location:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-PUB-MR_topic3_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-PUB-MR'
+ DCAE-HELLO-WORLD-SUB-DR_feed1_feed_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-SUB-DR'
+ DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_password:
+ type: string
+ DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_username:
+ type: string
+ DCAE-HELLO-WORLD-SUB-MR_topic0_client_role:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-SUB-MR_topic0_location:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-SUB-MR_topic0_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-SUB-MR'
+ additionalsans:
+ type: string
+ default: ''
+ description: additional sans (string)
+ annotations:
+ default: {}
+ dcae-collectors-vcc-helloworld-pm_cpu_limit:
+ type: string
+ default: '250m'
+ description: cpu limit for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_cpu_request:
+ type: string
+ default: '250m'
+ description: cpu requested for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_memory_limit:
+ type: string
+ default: '128Mi'
+ description: memory limit for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_memory_request:
+ type: string
+ default: '128Mi'
+ description: memory requested for deployment (string)
+ dcae_service_location:
+ type: string
+ description: Docker host override for docker bps (string)
+ idns_fqdn:
+ type: string
+ default: ''
+ description: The idns you will be using for your deployment (string)
+ image:
+ type: string
+ default: 'dcae-controller-vcc-helloworld-pm:18.02-001'
+ description: The docker image for you microservice (string)
+ namespace:
+ type: string
+ replicas:
+ type: integer
+ default: 1
+ description: The number of replicas for your kubernetes deployment (integer)
+ service_component_name_override:
+ type: string
+ default: 'dcae-collectors-vcc-helloworld-pm'
+ description: Unique identifier for your deployment (string)
+ use_aaf_tls:
+ type: boolean
+ default: false
+ description: To use or not use the aaf section (boolean)
+ vcc_hello_name:
+ type: string
+ description: the name entered for specific person
+ default: ''
+node_templates:
+ dcae-collectors-vcc-helloworld-pm_dcae-collectors-vcc-helloworld-pm:
+ type: dcae.nodes.ContainerizedServiceComponentUsingDmaap
+ properties:
+ application_config:
+ services_calls: []
+ streams_publishes:
+ DCAE-HELLO-WORLD-PUB-DR:
+ dmaap_info: <<feed2>>
+ type: data_router
+ DCAE-HELLO-WORLD-PUB-MR:
+ dmaap_info: <<topic3>>
+ type: message_router
+ aaf_password:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_password
+ aaf_username:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_username
+ streams_subscribes:
+ DCAE-HELLO-WORLD-SUB-DR:
+ dmaap_info: <<feed1>>
+ type: data_router
+ DCAE-HELLO-WORLD-SUB-MR:
+ dmaap_info: <<topic0>>
+ type: message_router
+ aaf_password:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_password
+ aaf_username:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_username
+ isSelfServeComponent: false
+ useDtiConfig: false
+ vcc_hello_name:
+ get_input: vcc_hello_name
+ docker_config:
+ healthcheck:
+ interval: 60s
+ timeout: 20s
+ script: /opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh
+ type: docker
+ livehealthcheck:
+ interval: 60s
+ timeout: 20s
+ script: /opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh
+ type: docker
+ volumes:
+ - container:
+ bind: /opt/app/dcae-certificate
+ host:
+ path: /opt/app/dcae-certificate
+ - container:
+ bind: /opt/logs/DCAE/dmd/AGENT
+ host:
+ path: /opt/logs/DCAE/helloworldpm/dmd/AGENT
+ - container:
+ bind: /opt/logs/DCAE/dmd/WATCHER
+ host:
+ path: /opt/logs/DCAE/helloworldpm/dmd/WATCHER
+ - container:
+ bind: /opt/app/vcc/logs/DCAE
+ host:
+ path: /opt/logs/DCAE/helloworldpm/vcc-logs
+ - container:
+ bind: /opt/app/vcc/archive/data
+ host:
+ path: /opt/data/DCAE/helloworldpm/vcc-archive
+ image:
+ get_input: image
+ location_id:
+ get_input: dcae_service_location
+ service_component_type: dcae-collectors-vcc-helloworld-pm
+ replicas:
+ get_input: replicas
+ streams_subscribes:
+ - name: topic0
+ type: message_router
+ client_role:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_client_role
+ location:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_location
+ route: DCAE-HELLO-WORLD-SUB-MR
+ scheme: https
+ - name: feed1
+ type: data_router
+ location:
+ get_input: dcae_service_location
+ scheme: https
+ route: DCAE-HELLO-WORLD-SUB-DR
+ streams_publishes:
+ - name: feed2
+ type: data_router
+ location:
+ get_input: dcae_service_location
+ - name: topic3
+ type: message_router
+ client_role:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_client_role
+ location:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_location
+ service_component_name_override:
+ concat:
+ - get_secret: location_id
+ - '-'
+ - get_input: service_component_name_override
+ configuration:
+ file_content:
+ apiVersion: v1
+ clusters:
+ - name: default-cluster
+ cluster:
+ server:
+ concat:
+ - https://
+ - get_secret: kc-kubernetes_master_ip
+ - ':'
+ - get_secret: kc-kubernetes_master_port
+ insecure-skip-tls-verify: true
+ contexts:
+ - name: default-context
+ context:
+ cluster: default-cluster
+ namespace:
+ get_input: namespace
+ user: default-user
+ kind: Config
+ preferences: {}
+ users:
+ - name: default-user
+ user:
+ token:
+ get_secret: dcae-mechid-k8s-token
+ current-context: default-context
+ resource_config:
+ limits:
+ cpu:
+ get_input: dcae-collectors-vcc-helloworld-pm_cpu_limit
+ memory:
+ get_input: dcae-collectors-vcc-helloworld-pm_memory_limit
+ requests:
+ cpu:
+ get_input: dcae-collectors-vcc-helloworld-pm_cpu_request
+ memory:
+ get_input: dcae-collectors-vcc-helloworld-pm_memory_request
+ aaf_tls_info:
+ use_aaf_tls:
+ get_input: use_aaf_tls
+ cert_directory: /opt/app/aafcertman
+ image: aaf-init-container:1.0.1
+ env:
+ - name: NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: deployer_id
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: deployerid
+ - name: deployer_pass
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: deployerpass
+ - name: cert_id
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: certid
+ - name: cm_url
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: cmurl
+ - name: idns_fqdn
+ value:
+ get_input: idns_fqdn
+ - name: app_service_names
+ value:
+ concat:
+ - get_secret: location_id
+ - '-'
+ - get_input: service_component_name_override
+ args:
+ - place
+ - cmtemplate
+ - -idnsfqdn=$(idns_fqdn)
+ - -cmurl=$(cm_url)
+ - -deployerid=$(deployer_id)
+ - -deployerpass=$(deployer_pass)
+ - -certid=$(cert_id)
+ - -namespace=$(NAMESPACE)
+ - -services=$(app_service_names)
+ - concat:
+ - -additionalsans=
+ - get_input: additionalsans
+ use_aaf_tls_renewal: true
+ renewal_args:
+ - renew
+ - -idnsfqdn=$(idns_fqdn)
+ - -cmurl=$(cm_url)
+ resource_config:
+ limits:
+ cpu: 250m
+ memory: 256Mi
+ requests:
+ cpu: 100m
+ memory: 256Mi
+ annotations:
+ get_input: annotations
+ relationships:
+ - target: topic0
+ type: dcae.relationships.subscribe_to_events
+ - target: feed1
+ type: dcae.relationships.subscribe_to_files
+ - target: feed2
+ type: dcae.relationships.publish_files
+ - target: topic3
+ type: dcae.relationships.publish_events
+ feed1:
+ type: dcae.nodes.Feed
+ properties:
+ feed_name:
+ get_input: DCAE-HELLO-WORLD-SUB-DR_feed1_feed_name
+ useExisting: true
+ feed2:
+ type: dcae.nodes.Feed
+ properties:
+ feed_name:
+ get_input: DCAE-HELLO-WORLD-PUB-DR_feed2_feed_name
+ useExisting: true
+ topic0:
+ type: dcae.nodes.Topic
+ properties:
+ topic_name:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_name
+ useExisting: true
+ topic3:
+ type: dcae.nodes.Topic
+ properties:
+ topic_name:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_name
+ useExisting: true
diff --git a/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_onap_dublin.yaml b/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_onap_dublin.yaml
new file mode 100644
index 0000000..6334282
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_onap_dublin.yaml
@@ -0,0 +1,131 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+---
+tosca_definitions_version: cloudify_dsl_1_3
+imports:
+- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
+- /k8splugin/1.4.22/node-type.yaml
+- /relationship/1.0.1/types.yaml
+- /cloudifydmaapplugin/1.4.6/node-type.yaml
+- /dcaepolicyplugin/2.3.1/node-type.yaml
+- /pgaas/0.3.2/pgaas_types.yaml
+inputs:
+ DCAE-HELLO-WORLD-PUB-DR_delivery_url:
+ type: string
+ DCAE-HELLO-WORLD-PUB-DR_location:
+ type: string
+ DCAE-HELLO-WORLD-PUB-DR_password:
+ type: string
+ DCAE-HELLO-WORLD-PUB-DR_subscriber_id:
+ type: string
+ DCAE-HELLO-WORLD-PUB-DR_username:
+ type: string
+ DCAE-HELLO-WORLD-SUB-DR_delivery_url:
+ type: string
+ DCAE-HELLO-WORLD-SUB-DR_location:
+ type: string
+ DCAE-HELLO-WORLD-SUB-DR_password:
+ type: string
+ DCAE-HELLO-WORLD-SUB-DR_subscriber_id:
+ type: string
+ DCAE-HELLO-WORLD-SUB-DR_username:
+ type: string
+ DCAE_HELLO_WORLD_PUB_MR_publish_url:
+ type: string
+ DCAE_HELLO_WORLD_SUB_MR_subscribe_url:
+ type: string
+ external_port:
+ type: string
+ description: Kubernetes node port on which collector is exposed
+ default: '"''30235''"'
+ log_directory:
+ type: string
+ default: '"/opt/app/vcc/logs/DCAE"'
+ replicas:
+ type: integer
+ description: number of instances
+ default: 1
+ tag_version:
+ type: string
+ default: '"dcae-controller-vcc-helloworld-pm:18.02-001"'
+ vcc_hello_name:
+ type: string
+node_templates:
+ dcae.collectors-vcc-helloworld-pm:
+ type: dcae.nodes.ContainerizedPlatformComponent
+ interfaces:
+ cloudify.interfaces.lifecycle:
+ start:
+ inputs:
+ ports: []
+ properties:
+ application_config:
+ service_calls: []
+ stream_publishes:
+ DCAE-HELLO-WORLD-PUB-DR:
+ dmaap_info:
+ username:
+ get_input: DCAE-HELLO-WORLD-PUB-DR_username
+ password:
+ get_input: DCAE-HELLO-WORLD-PUB-DR_password
+ location:
+ get_input: DCAE-HELLO-WORLD-PUB-DR_location
+ delivery_url:
+ get_input: DCAE-HELLO-WORLD-PUB-DR_delivery_url
+ subscriber_id:
+ get_input: DCAE-HELLO-WORLD-PUB-DR_subscriber_id
+ type: data_router
+ DCAE-HELLO-WORLD-PUB-MR:
+ dmaap_info:
+ topic_url:
+ get_input: DCAE_HELLO_WORLD_PUB_MR_publish_url
+ type: message_router
+ stream_subcribes:
+ DCAE-HELLO-WORLD-SUB-DR:
+ dmaap_info:
+ username:
+ get_input: DCAE-HELLO-WORLD-SUB-DR_username
+ password:
+ get_input: DCAE-HELLO-WORLD-SUB-DR_password
+ location:
+ get_input: DCAE-HELLO-WORLD-SUB-DR_location
+ delivery_url:
+ get_input: DCAE-HELLO-WORLD-SUB-DR_delivery_url
+ subscriber_id:
+ get_input: DCAE-HELLO-WORLD-SUB-DR_subscriber_id
+ type: data_router
+ DCAE-HELLO-WORLD-SUB-MR:
+ dmaap_info:
+ topic_url:
+ get_input: DCAE_HELLO_WORLD_SUB_MR_subscribe_url
+ type: message_router
+ isSelfServeComponent: false
+ useDtiConfig: false
+ vcc_hello_name:
+ get_input: vcc_hello_name
+ docker_config:
+ interval: 60s
+ timeout: 20s
+ script: /opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh
+ type: docker
+ image:
+ get_input: tag_version
+ log_info:
+ get_input: log_directory
+ dns_name: dcae.collectors-vcc-helloworld-pm
+ replicas:
+ get_input: replicas
+ name: dcae.collectors-vcc-helloworld-pm
diff --git a/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_test_1.yaml b/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_test_1.yaml
new file mode 100644
index 0000000..e3f1791
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_test_1.yaml
@@ -0,0 +1,371 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#Hello World mS for subscribing the data from local DMaaP, DR or MR, processing them and publishing them as PM files to local DMaaP DR
+#1.0.1
+#
+---
+tosca_definitions_version: cloudify_dsl_1_3
+imports:
+- http://www.getcloudify.org/spec/cloudify/4.4/types.yaml
+- /k8splugin/1.4.22/node-type.yaml
+- /relationship/1.0.1/types.yaml
+- /cloudifydmaapplugin/1.4.6/node-type.yaml
+- /dcaepolicyplugin/2.3.1/node-type.yaml
+- /pgaas/0.3.2/pgaas_types.yaml
+inputs:
+ DCAE-HELLO-WORLD-PUB-DR_feed2_feed_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-PUB-DR'
+ DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_password:
+ type: string
+ DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_username:
+ type: string
+ DCAE-HELLO-WORLD-PUB-MR_topic3_client_role:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-PUB-MR_topic3_location:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-PUB-MR_topic3_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'sample_topic_1'
+ DCAE-HELLO-WORLD-SUB-DR_feed1_feed_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-SUB-DR'
+ DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_password:
+ type: string
+ DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_username:
+ type: string
+ DCAE-HELLO-WORLD-SUB-MR_topic0_client_role:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-SUB-MR_topic0_location:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-SUB-MR_topic0_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-SUB-MR'
+ additionalsans:
+ type: string
+ default: ''
+ description: additional sans (string)
+ annotations:
+ default: {}
+ dcae-collectors-vcc-helloworld-pm_cpu_limit:
+ type: string
+ default: '250m'
+ description: cpu limit for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_cpu_request:
+ type: string
+ default: '250m'
+ description: cpu requested for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_memory_limit:
+ type: string
+ default: '128Mi'
+ description: memory limit for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_memory_request:
+ type: string
+ default: '128Mi'
+ description: memory requested for deployment (string)
+ dcae_service_location:
+ type: string
+ description: Docker host override for docker bps (string)
+ idns_fqdn:
+ type: string
+ default: ''
+ description: The idns you will be using for your deployment (string)
+ image:
+ type: string
+ default: 'dcae-controller-vcc-helloworld-pm:18.02-001'
+ description: The docker image for you microservice (string)
+ namespace:
+ type: string
+ replicas:
+ type: integer
+ default: 1
+ description: The number of replicas for your kubernetes deployment (integer)
+ service_component_name_override:
+ type: string
+ default: 'dcae-collectors-vcc-helloworld-pm'
+ description: Unique identifier for your deployment (string)
+ use_aaf_tls:
+ type: boolean
+ default: false
+ description: To use or not use the aaf section (boolean)
+ vcc_hello_name:
+ type: string
+ description: the name entered for specific person
+ default: ''
+node_templates:
+ dcae-collectors-vcc-helloworld-pm_dcae-collectors-vcc-helloworld-pm:
+ type: dcae.nodes.ContainerizedServiceComponentUsingDmaap
+ properties:
+ application_config:
+ services_calls: []
+ streams_publishes:
+ DCAE-HELLO-WORLD-PUB-DR:
+ dmaap_info: <<feed2>>
+ type: data_router
+ DCAE-HELLO-WORLD-PUB-MR:
+ dmaap_info: <<topic3>>
+ type: message_router
+ aaf_password:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_password
+ aaf_username:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_username
+ streams_subscribes:
+ DCAE-HELLO-WORLD-SUB-DR:
+ dmaap_info: <<feed1>>
+ type: data_router
+ DCAE-HELLO-WORLD-SUB-MR:
+ dmaap_info: <<topic0>>
+ type: message_router
+ aaf_password:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_password
+ aaf_username:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_username
+ isSelfServeComponent: false
+ useDtiConfig: false
+ vcc_hello_name:
+ get_input: vcc_hello_name
+ docker_config:
+ healthcheck:
+ interval: 60s
+ timeout: 20s
+ script: /opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh
+ type: docker
+ livehealthcheck:
+ interval: 60s
+ timeout: 20s
+ script: /opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh
+ type: docker
+ volumes:
+ - container:
+ bind: /opt/app/dcae-certificate
+ host:
+ path: /opt/app/dcae-certificate
+ - container:
+ bind: /opt/logs/DCAE/dmd/AGENT
+ host:
+ path: /opt/logs/DCAE/helloworldpm/dmd/AGENT
+ - container:
+ bind: /opt/logs/DCAE/dmd/WATCHER
+ host:
+ path: /opt/logs/DCAE/helloworldpm/dmd/WATCHER
+ - container:
+ bind: /opt/app/vcc/logs/DCAE
+ host:
+ path: /opt/logs/DCAE/helloworldpm/vcc-logs
+ - container:
+ bind: /opt/app/vcc/archive/data
+ host:
+ path: /opt/data/DCAE/helloworldpm/vcc-archive
+ image:
+ get_input: image
+ location_id:
+ get_input: dcae_service_location
+ service_component_type: dcae-collectors-vcc-helloworld-pm
+ replicas:
+ get_input: replicas
+ streams_subscribes:
+ - name: topic0
+ type: message_router
+ client_role:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_client_role
+ location:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_location
+ route: DCAE-HELLO-WORLD-SUB-MR
+ scheme: https
+ - name: feed1
+ type: data_router
+ location:
+ get_input: dcae_service_location
+ scheme: https
+ route: DCAE-HELLO-WORLD-SUB-DR
+ streams_publishes:
+ - name: feed2
+ type: data_router
+ location:
+ get_input: dcae_service_location
+ - name: topic3
+ type: message_router
+ client_role:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_client_role
+ location:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_location
+ service_component_name_override:
+ concat:
+ - get_secret: location_id
+ - '-'
+ - get_input: service_component_name_override
+ configuration:
+ file_content:
+ apiVersion: v1
+ clusters:
+ - name: default-cluster
+ cluster:
+ server:
+ concat:
+ - https://
+ - get_secret: kc-kubernetes_master_ip
+ - ':'
+ - get_secret: kc-kubernetes_master_port
+ insecure-skip-tls-verify: true
+ contexts:
+ - name: default-context
+ context:
+ cluster: default-cluster
+ namespace:
+ get_input: namespace
+ user: default-user
+ kind: Config
+ preferences: {}
+ users:
+ - name: default-user
+ user:
+ token:
+ get_secret: dcae-mechid-k8s-token
+ current-context: default-context
+ resource_config:
+ limits:
+ cpu:
+ get_input: dcae-collectors-vcc-helloworld-pm_cpu_limit
+ memory:
+ get_input: dcae-collectors-vcc-helloworld-pm_memory_limit
+ requests:
+ cpu:
+ get_input: dcae-collectors-vcc-helloworld-pm_cpu_request
+ memory:
+ get_input: dcae-collectors-vcc-helloworld-pm_memory_request
+ aaf_tls_info:
+ use_aaf_tls:
+ get_input: use_aaf_tls
+ cert_directory: /opt/app/aafcertman
+ image: aaf-init-container:1.0.1
+ env:
+ - name: NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: deployer_id
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: deployerid
+ - name: deployer_pass
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: deployerpass
+ - name: cert_id
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: certid
+ - name: cm_url
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: cmurl
+ - name: idns_fqdn
+ value:
+ get_input: idns_fqdn
+ - name: app_service_names
+ value:
+ concat:
+ - get_secret: location_id
+ - '-'
+ - get_input: service_component_name_override
+ args:
+ - place
+ - cmtemplate
+ - -idnsfqdn=$(idns_fqdn)
+ - -cmurl=$(cm_url)
+ - -deployerid=$(deployer_id)
+ - -deployerpass=$(deployer_pass)
+ - -certid=$(cert_id)
+ - -namespace=$(NAMESPACE)
+ - -services=$(app_service_names)
+ - concat:
+ - -additionalsans=
+ - get_input: additionalsans
+ use_aaf_tls_renewal: true
+ renewal_args:
+ - renew
+ - -idnsfqdn=$(idns_fqdn)
+ - -cmurl=$(cm_url)
+ resource_config:
+ limits:
+ cpu: 250m
+ memory: 256Mi
+ requests:
+ cpu: 100m
+ memory: 256Mi
+ annotations:
+ get_input: annotations
+ relationships:
+ - target: topic0
+ type: dcae.relationships.subscribe_to_events
+ - target: feed1
+ type: dcae.relationships.subscribe_to_files
+ - target: feed2
+ type: dcae.relationships.publish_files
+ - target: topic3
+ type: dcae.relationships.publish_events
+ feed1:
+ type: dcae.nodes.Feed
+ properties:
+ feed_name:
+ get_input: DCAE-HELLO-WORLD-SUB-DR_feed1_feed_name
+ useExisting: true
+ feed2:
+ type: dcae.nodes.Feed
+ properties:
+ feed_name:
+ get_input: DCAE-HELLO-WORLD-PUB-DR_feed2_feed_name
+ useExisting: true
+ topic0:
+ type: dcae.nodes.Topic
+ properties:
+ topic_name:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_name
+ useExisting: true
+ topic3:
+ type: dcae.nodes.Topic
+ properties:
+ topic_name:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_name
+ useExisting: true
diff --git a/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_test_2.yaml b/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_test_2.yaml
new file mode 100644
index 0000000..7e41ad2
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/data/blueprints/helloworld_test_2.yaml
@@ -0,0 +1,371 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#Hello World mS for subscribing the data from local DMaaP, DR or MR, processing them and publishing them as PM files to local DMaaP DR
+#1.0.1
+#
+---
+tosca_definitions_version: cloudify_dsl_1_3
+imports:
+- http://www.getcloudify.org/spec/cloudify/4.4/types.yaml
+- /k8splugin/1.4.22/node-type.yaml
+- /relationship/1.0.1/types.yaml
+- /cloudifydmaapplugin/1.4.6/node-type.yaml
+- /dcaepolicyplugin/2.3.1/node-type.yaml
+- /pgaas/0.3.2/pgaas_types.yaml
+inputs:
+ DCAE-HELLO-WORLD-PUB-DR_feed2_feed_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-PUB-DR'
+ DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_password:
+ type: string
+ DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_username:
+ type: string
+ DCAE-HELLO-WORLD-PUB-MR_topic3_client_role:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-PUB-MR_topic3_location:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-PUB-MR_topic3_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-PUB-MR'
+ DCAE-HELLO-WORLD-SUB-DR_feed1_feed_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'DCAE-HELLO-WORLD-SUB-DR'
+ DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_password:
+ type: string
+ DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_username:
+ type: string
+ DCAE-HELLO-WORLD-SUB-MR_topic0_client_role:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-SUB-MR_topic0_location:
+ type: string
+ description: client or location for dmaap (string)
+ DCAE-HELLO-WORLD-SUB-MR_topic0_name:
+ type: string
+ description: Dmaap information needed for deploying a microservice using dmaap
+ (string)
+ default: 'sample_topic_1'
+ additionalsans:
+ type: string
+ default: ''
+ description: additional sans (string)
+ annotations:
+ default: {}
+ dcae-collectors-vcc-helloworld-pm_cpu_limit:
+ type: string
+ default: '250m'
+ description: cpu limit for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_cpu_request:
+ type: string
+ default: '250m'
+ description: cpu requested for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_memory_limit:
+ type: string
+ default: '128Mi'
+ description: memory limit for deployment (string)
+ dcae-collectors-vcc-helloworld-pm_memory_request:
+ type: string
+ default: '128Mi'
+ description: memory requested for deployment (string)
+ dcae_service_location:
+ type: string
+ description: Docker host override for docker bps (string)
+ idns_fqdn:
+ type: string
+ default: ''
+ description: The idns you will be using for your deployment (string)
+ image:
+ type: string
+ default: 'dcae-controller-vcc-helloworld-pm:18.02-001'
+ description: The docker image for you microservice (string)
+ namespace:
+ type: string
+ replicas:
+ type: integer
+ default: 1
+ description: The number of replicas for your kubernetes deployment (integer)
+ service_component_name_override:
+ type: string
+ default: 'dcae-collectors-vcc-helloworld-pm'
+ description: Unique identifier for your deployment (string)
+ use_aaf_tls:
+ type: boolean
+ default: false
+ description: To use or not use the aaf section (boolean)
+ vcc_hello_name:
+ type: string
+ description: the name entered for specific person
+ default: ''
+node_templates:
+ dcae-collectors-vcc-helloworld-pm_dcae-collectors-vcc-helloworld-pm:
+ type: dcae.nodes.ContainerizedServiceComponentUsingDmaap
+ properties:
+ application_config:
+ services_calls: []
+ streams_publishes:
+ DCAE-HELLO-WORLD-PUB-DR:
+ dmaap_info: <<feed2>>
+ type: data_router
+ DCAE-HELLO-WORLD-PUB-MR:
+ dmaap_info: <<topic3>>
+ type: message_router
+ aaf_password:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_password
+ aaf_username:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_aaf_username
+ streams_subscribes:
+ DCAE-HELLO-WORLD-SUB-DR:
+ dmaap_info: <<feed1>>
+ type: data_router
+ DCAE-HELLO-WORLD-SUB-MR:
+ dmaap_info: <<topic0>>
+ type: message_router
+ aaf_password:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_password
+ aaf_username:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_aaf_username
+ isSelfServeComponent: false
+ useDtiConfig: false
+ vcc_hello_name:
+ get_input: vcc_hello_name
+ docker_config:
+ healthcheck:
+ interval: 60s
+ timeout: 20s
+ script: /opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh
+ type: docker
+ livehealthcheck:
+ interval: 60s
+ timeout: 20s
+ script: /opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh
+ type: docker
+ volumes:
+ - container:
+ bind: /opt/app/dcae-certificate
+ host:
+ path: /opt/app/dcae-certificate
+ - container:
+ bind: /opt/logs/DCAE/dmd/AGENT
+ host:
+ path: /opt/logs/DCAE/helloworldpm/dmd/AGENT
+ - container:
+ bind: /opt/logs/DCAE/dmd/WATCHER
+ host:
+ path: /opt/logs/DCAE/helloworldpm/dmd/WATCHER
+ - container:
+ bind: /opt/app/vcc/logs/DCAE
+ host:
+ path: /opt/logs/DCAE/helloworldpm/vcc-logs
+ - container:
+ bind: /opt/app/vcc/archive/data
+ host:
+ path: /opt/data/DCAE/helloworldpm/vcc-archive
+ image:
+ get_input: image
+ location_id:
+ get_input: dcae_service_location
+ service_component_type: dcae-collectors-vcc-helloworld-pm
+ replicas:
+ get_input: replicas
+ streams_subscribes:
+ - name: topic0
+ type: message_router
+ client_role:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_client_role
+ location:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_location
+ route: DCAE-HELLO-WORLD-SUB-MR
+ scheme: https
+ - name: feed1
+ type: data_router
+ location:
+ get_input: dcae_service_location
+ scheme: https
+ route: DCAE-HELLO-WORLD-SUB-DR
+ streams_publishes:
+ - name: feed2
+ type: data_router
+ location:
+ get_input: dcae_service_location
+ - name: topic3
+ type: message_router
+ client_role:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_client_role
+ location:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_location
+ service_component_name_override:
+ concat:
+ - get_secret: location_id
+ - '-'
+ - get_input: service_component_name_override
+ configuration:
+ file_content:
+ apiVersion: v1
+ clusters:
+ - name: default-cluster
+ cluster:
+ server:
+ concat:
+ - https://
+ - get_secret: kc-kubernetes_master_ip
+ - ':'
+ - get_secret: kc-kubernetes_master_port
+ insecure-skip-tls-verify: true
+ contexts:
+ - name: default-context
+ context:
+ cluster: default-cluster
+ namespace:
+ get_input: namespace
+ user: default-user
+ kind: Config
+ preferences: {}
+ users:
+ - name: default-user
+ user:
+ token:
+ get_secret: dcae-mechid-k8s-token
+ current-context: default-context
+ resource_config:
+ limits:
+ cpu:
+ get_input: dcae-collectors-vcc-helloworld-pm_cpu_limit
+ memory:
+ get_input: dcae-collectors-vcc-helloworld-pm_memory_limit
+ requests:
+ cpu:
+ get_input: dcae-collectors-vcc-helloworld-pm_cpu_request
+ memory:
+ get_input: dcae-collectors-vcc-helloworld-pm_memory_request
+ aaf_tls_info:
+ use_aaf_tls:
+ get_input: use_aaf_tls
+ cert_directory: /opt/app/aafcertman
+ image: aaf-init-container:1.0.1
+ env:
+ - name: NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: deployer_id
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: deployerid
+ - name: deployer_pass
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: deployerpass
+ - name: cert_id
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: certid
+ - name: cm_url
+ valueFrom:
+ secretKeyRef:
+ name:
+ concat:
+ - get_input: namespace
+ - -cert-secret
+ key: cmurl
+ - name: idns_fqdn
+ value:
+ get_input: idns_fqdn
+ - name: app_service_names
+ value:
+ concat:
+ - get_secret: location_id
+ - '-'
+ - get_input: service_component_name_override
+ args:
+ - place
+ - cmtemplate
+ - -idnsfqdn=$(idns_fqdn)
+ - -cmurl=$(cm_url)
+ - -deployerid=$(deployer_id)
+ - -deployerpass=$(deployer_pass)
+ - -certid=$(cert_id)
+ - -namespace=$(NAMESPACE)
+ - -services=$(app_service_names)
+ - concat:
+ - -additionalsans=
+ - get_input: additionalsans
+ use_aaf_tls_renewal: true
+ renewal_args:
+ - renew
+ - -idnsfqdn=$(idns_fqdn)
+ - -cmurl=$(cm_url)
+ resource_config:
+ limits:
+ cpu: 250m
+ memory: 256Mi
+ requests:
+ cpu: 100m
+ memory: 256Mi
+ annotations:
+ get_input: annotations
+ relationships:
+ - target: topic0
+ type: dcae.relationships.subscribe_to_events
+ - target: feed1
+ type: dcae.relationships.subscribe_to_files
+ - target: feed2
+ type: dcae.relationships.publish_files
+ - target: topic3
+ type: dcae.relationships.publish_events
+ feed1:
+ type: dcae.nodes.Feed
+ properties:
+ feed_name:
+ get_input: DCAE-HELLO-WORLD-SUB-DR_feed1_feed_name
+ useExisting: true
+ feed2:
+ type: dcae.nodes.Feed
+ properties:
+ feed_name:
+ get_input: DCAE-HELLO-WORLD-PUB-DR_feed2_feed_name
+ useExisting: true
+ topic0:
+ type: dcae.nodes.Topic
+ properties:
+ topic_name:
+ get_input: DCAE-HELLO-WORLD-SUB-MR_topic0_name
+ useExisting: true
+ topic3:
+ type: dcae.nodes.Topic
+ properties:
+ topic_name:
+ get_input: DCAE-HELLO-WORLD-PUB-MR_topic3_name
+ useExisting: true
diff --git a/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_New_Toolbox.json b/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_New_Toolbox.json
new file mode 100644
index 0000000..dd4be46
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_New_Toolbox.json
@@ -0,0 +1,37 @@
+{
+ "self": {
+ "component_type": "docker",
+ "description": "This is the blueprint to deploy the DCAE Toolbox GUI.",
+ "name": "dcae-controller-toolbox-gui",
+ "version": "2.0.0"
+ },
+
+ "services": {
+ "calls": [],
+ "provides": []
+ },
+
+ "streams": {
+ "publishes": [],
+ "subscribes": []
+ },
+
+ "parameters": [],
+
+ "auxilary": {
+ "healthcheck": {
+ "interval": "360s",
+ "timeout": "120s",
+ "endpoint": "/actuator/health",
+ "type": "http"
+ },
+
+ "volumes": [],
+ "ports" : ["8080:30998"]
+ },
+
+ "artifacts": [{
+ "type": "docker image",
+ "uri": "dcae-controller-tosca-gui:2.0.3"
+ }]
+} \ No newline at end of file
diff --git a/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_hello_world.json b/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_hello_world.json
new file mode 100644
index 0000000..cd394f8
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_hello_world.json
@@ -0,0 +1,138 @@
+{
+ "self": {
+ "component_type": "docker",
+ "description": "Hello World mS for subscribing the data from local DMaaP, DR or MR, processing them and publishing them as PM files to local DMaaP DR",
+ "name": "dcae-collectors-vcc-helloworld-pm",
+ "version": "1.0.1"
+ },
+
+ "services": {
+ "calls": [],
+ "provides": []
+ },
+
+ "streams": {
+ "publishes": [{
+ "config_key": "DCAE-HELLO-WORLD-PUB-DR",
+ "format": "dataformat_Hello_World_PM",
+ "type": "data_router",
+ "version": "1.0.0"
+ },
+ {
+ "config_key": "DCAE-HELLO-WORLD-PUB-MR",
+ "format": "dataformat_Hello_World_PM",
+ "type": "message_router",
+ "version": "1.0.0"
+ }
+ ],
+
+ "subscribes": [{
+ "config_key": "DCAE-HELLO-WORLD-SUB-MR",
+ "format": "dataformat_Hello_World_PM",
+ "route": "/DCAE_HELLO_WORLD_SUB_MR",
+ "type": "message_router",
+ "version": "1.0.0"
+ },
+ {
+ "config_key": "DCAE-HELLO-WORLD-SUB-DR",
+ "format": "dataformat_Hello_World_PM",
+ "route": "/DCAE-HELLO-WORLD-SUB-DR",
+ "type": "data_router",
+ "version": "1.0.0"
+ }
+ ]
+ },
+
+ "parameters":
+ [
+ {
+ "name": "vcc_hello_name",
+ "value": "",
+ "type": "string",
+ "description": "the name entered for specific person",
+ "sourced_at_deployment": true,
+ "designer_editable": false,
+ "policy_editable": false
+ },
+
+ {
+ "name": "useDtiConfig",
+ "value": false,
+ "type": "boolean",
+ "description": "component depends on configuration from dti.",
+ "sourced_at_deployment": false,
+ "designer_editable": true,
+ "policy_editable": false,
+ "required" : true
+ },
+
+ {
+ "name": "isSelfServeComponent",
+ "value": false,
+ "type": "boolean",
+ "description": "Is this used as self serve component.",
+ "sourced_at_deployment": false,
+ "designer_editable": true,
+ "policy_editable": false,
+ "required" : true
+ }
+ ],
+
+ "auxilary": {
+ "healthcheck": {
+ "interval": "60s",
+ "timeout": "20s",
+ "script": "/opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh",
+ "type": "docker"
+ },
+
+ "volumes": [
+ {
+ "container": {
+ "bind": "/opt/app/dcae-certificate"
+ },
+ "host": {
+ "path": "/opt/app/dcae-certificate"
+ }
+ },
+ {
+ "container": {
+ "bind": "/opt/logs/DCAE/dmd/AGENT"
+ },
+ "host": {
+ "path": "/opt/logs/DCAE/helloworldpm/dmd/AGENT"
+ }
+ },
+ {
+ "container": {
+ "bind": "/opt/logs/DCAE/dmd/WATCHER"
+ },
+ "host": {
+ "path": "/opt/logs/DCAE/helloworldpm/dmd/WATCHER"
+ }
+ },
+ {
+ "container": {
+ "bind": "/opt/app/vcc/logs/DCAE"
+ },
+ "host": {
+ "path": "/opt/logs/DCAE/helloworldpm/vcc-logs"
+ }
+ },
+ {
+ "container": {
+ "bind": "/opt/app/vcc/archive/data"
+ },
+ "host": {
+ "path": "/opt/data/DCAE/helloworldpm/vcc-archive"
+ }
+ }
+
+ ]
+ },
+
+ "artifacts": [{
+ "type": "docker image",
+ "uri": "dcae-controller-vcc-helloworld-pm:18.02-001"
+ }]
+} \ No newline at end of file
diff --git a/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_hello_world_only_MR.json b/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_hello_world_only_MR.json
new file mode 100644
index 0000000..86cb937
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/data/compspecs/componentSpec_hello_world_only_MR.json
@@ -0,0 +1,126 @@
+{
+ "self": {
+ "component_type": "docker",
+ "description": "Hello World mS for subscribing the data from local DMaaP, DR or MR, processing them and publishing them as PM files to local DMaaP DR",
+ "name": "dcae-collectors-vcc-helloworld-pm",
+ "version": "1.0.1"
+ },
+
+ "services": {
+ "calls": [],
+ "provides": []
+ },
+
+ "streams": {
+ "publishes": [
+ {
+ "config_key": "DCAE-HELLO-WORLD-PUB-MR",
+ "format": "dataformat_Hello_World_PM",
+ "type": "message_router",
+ "version": "1.0.0"
+ }
+ ],
+
+ "subscribes": [{
+ "config_key": "DCAE-HELLO-WORLD-SUB-MR",
+ "format": "dataformat_Hello_World_PM",
+ "route": "/DCAE_HELLO_WORLD_SUB_MR",
+ "type": "message_router",
+ "version": "1.0.0"
+ }
+ ]
+ },
+
+ "parameters":
+ [
+ {
+ "name": "vcc_hello_name",
+ "value": "",
+ "type": "string",
+ "description": "the name entered for specific person",
+ "sourced_at_deployment": true,
+ "designer_editable": false,
+ "policy_editable": false
+ },
+
+ {
+ "name": "useDtiConfig",
+ "value": false,
+ "type": "boolean",
+ "description": "component depends on configuration from dti.",
+ "sourced_at_deployment": false,
+ "designer_editable": true,
+ "policy_editable": false,
+ "required" : true
+ },
+
+ {
+ "name": "isSelfServeComponent",
+ "value": false,
+ "type": "boolean",
+ "description": "Is this used as self serve component.",
+ "sourced_at_deployment": false,
+ "designer_editable": true,
+ "policy_editable": false,
+ "required" : true
+ }
+ ],
+
+ "auxilary": {
+ "healthcheck": {
+ "interval": "60s",
+ "timeout": "20s",
+ "script": "/opt/app/vcc/bin/common/HealthCheck_HelloWorld.sh",
+ "type": "docker"
+ },
+
+ "volumes": [
+ {
+ "container": {
+ "bind": "/opt/app/dcae-certificate"
+ },
+ "host": {
+ "path": "/opt/app/dcae-certificate"
+ }
+ },
+ {
+ "container": {
+ "bind": "/opt/logs/DCAE/dmd/AGENT"
+ },
+ "host": {
+ "path": "/opt/logs/DCAE/helloworldpm/dmd/AGENT"
+ }
+ },
+ {
+ "container": {
+ "bind": "/opt/logs/DCAE/dmd/WATCHER"
+ },
+ "host": {
+ "path": "/opt/logs/DCAE/helloworldpm/dmd/WATCHER"
+ }
+ },
+ {
+ "container": {
+ "bind": "/opt/app/vcc/logs/DCAE"
+ },
+ "host": {
+ "path": "/opt/logs/DCAE/helloworldpm/vcc-logs"
+ }
+ },
+ {
+ "container": {
+ "bind": "/opt/app/vcc/archive/data"
+ },
+ "host": {
+ "path": "/opt/data/DCAE/helloworldpm/vcc-archive"
+ }
+ }
+
+ ]
+ },
+
+ "artifacts": [{
+ "type": "docker image",
+ "uri": "dcae-controller-vcc-helloworld-pm:18.02-001"
+ }]
+} \ No newline at end of file
diff --git a/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/Helper.java b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/Helper.java
new file mode 100644
index 0000000..c75ed5d
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/Helper.java
@@ -0,0 +1,67 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Helper {
+ public static String loadFileContent(String filePath) {
+ String fileContent = "";
+ try {
+ fileContent = new String(Files.readAllBytes(Paths.get(filePath)),"UTF-8");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileContent;
+ }
+
+ public static Map<String, String> loadTestBlueprints() {
+ Map<String,String> expectedBlueprints = new HashMap<String, String>();
+ expectedBlueprints.put("hello-world-2_blueprint",
+ loadFileContent("src/test/data/blueprints/helloworld_test_2.yaml"));
+ expectedBlueprints.put("hello-world-1_blueprint",
+ loadFileContent("src/test/data/blueprints/helloworld_test_1.yaml"));
+ return expectedBlueprints;
+ }
+
+ public static Edge getTestEdge(){
+ EdgeLocation src = new EdgeLocation("comp1234","DCAE-HELLO-WORLD-PUB-MR");
+ EdgeLocation tgt = new EdgeLocation("comp5678", "DCAE-HELLO-WORLD-SUB-MR");
+ EdgeMetadata metadata = new EdgeMetadata("sample_topic_1", "json", "MR");
+ Edge edge = new Edge(src, tgt, metadata);
+ return edge;
+ }
+
+ public static FlowGraph<Node, Edge> prepareFlowGraph() {
+ FlowGraph<Node, Edge> flowGraph = new FlowGraph("random_id","anyName",true,"someDescription");
+
+ Node node_1 = new Node("comp1234", "hello-world-1",
+ Helper.loadFileContent("src/test/data/compspecs/componentSpec_hello_world.json"));
+ Node node_2 = new Node("comp5678", "hello-world-2",
+ Helper.loadFileContent("src/test/data/compspecs/componentSpec_hello_world.json"));
+ flowGraph.addNode(node_1);
+ flowGraph.addNode(node_2);
+ flowGraph.addEdge(node_1,node_2,Helper.getTestEdge());
+
+ return flowGraph;
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestFlowGraph.java b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestFlowGraph.java
new file mode 100644
index 0000000..b7a74b2
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestFlowGraph.java
@@ -0,0 +1,97 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.junit.Assert.*;
+
+public class TestFlowGraph {
+
+ private FlowGraph<Node, Edge> flowGraph;
+ private Node node_1;
+ private Node node_2;
+
+ @Before
+ public void setUp() throws Exception{
+ flowGraph = new FlowGraph("random_id","anyName",true,"someDescription");
+ node_1 = new Node("comp1234", "component_1", "<comp-string>");
+ node_2 = new Node("comp5678", "component_2", "<comp-string>");
+ flowGraph.addNode(node_1);
+ flowGraph.addNode(node_2);
+ }
+
+ @Test
+ public void testFlowGraphProperties() throws Exception{
+ assertEquals("random_id",flowGraph.getId());
+ assertEquals("anyName",flowGraph.getName());
+ assertEquals("someDescription",flowGraph.getDescription());
+ assertTrue(flowGraph.isMain());
+ }
+
+ @Test
+ public void testAddNodeToGraph() throws Exception{
+ Set<Node> nodes = new HashSet<Node>();
+ nodes.add(node_1);
+ nodes.add(node_2);
+
+ assertEquals(2,flowGraph.getNodeSize());
+ assertEquals(nodes,flowGraph.getNodes());
+
+ }
+
+ @Test
+ public void testAddEdgeToGraph() throws Exception{
+ Edge edge_1 = Helper.getTestEdge();
+ flowGraph.addEdge(node_1,node_2,edge_1);
+ assertEquals(1, flowGraph.getEdgeSize());
+ assertEquals(edge_1, flowGraph.getEdge(node_1,node_2));
+ }
+
+ @Test
+ public void testRemoveNodeFromGraph() throws Exception{
+ flowGraph.removeNode(node_1);
+ assertEquals(1,flowGraph.getNodeSize());
+ assertEquals(node_2,flowGraph.getNodes().toArray()[0]);
+ }
+
+ @Test
+ public void testRemoveEdgeFromGraph() throws Exception{
+ Edge edge_1 = Helper.getTestEdge();
+ flowGraph.addEdge(node_1,node_2,edge_1);
+ flowGraph.removeEdge(edge_1);
+ assertEquals(0,flowGraph.getEdgeSize());
+ }
+
+ @Test
+ public void testDummyNodeInEdge() throws Exception{
+ Node node_dummy = new Node("dummy", "component_dummy", "<comp-string>");
+ Edge edge_1 = Helper.getTestEdge();
+ Edge edge_2 = Helper.getTestEdge();
+ Edge edge_3 = Helper.getTestEdge();
+ flowGraph.addEdge(node_dummy,node_2,edge_1);
+ flowGraph.addEdge(node_2,node_dummy,edge_2);
+ flowGraph.addEdge(node_1,node_dummy,edge_3);
+ System.out.println(flowGraph.getNodes());
+ System.out.println(flowGraph.getEdges());
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestFlowGraphParser.java b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestFlowGraphParser.java
new file mode 100644
index 0000000..bacfcb1
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestFlowGraphParser.java
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.onap.dcae.runtime.core.blueprint_creator.BlueprintCreatorOnapDublin;
+
+public class TestFlowGraphParser {
+
+ private FlowGraph<Node, Edge> flowGraph;
+ private FlowGraphParser flowGraphParser;
+
+ @Before
+ public void setUp() throws Exception{
+ flowGraph = Helper.prepareFlowGraph();
+ flowGraphParser = new FlowGraphParser(new BlueprintCreatorOnapDublin());
+ flowGraphParser.parse(flowGraph);
+ }
+
+ @Test
+ @Ignore
+ public void testBlueprintsCreate() throws Exception{
+ /*
+ TODO: FIX
+ Map<String,String> expectedBlueprints = Helper.loadTestBlueprints();
+ Map<String,String> resultBlueprints = flowGraphParser.createAndProcessBlueprints();
+
+ assertEquals(expectedBlueprints,resultBlueprints);
+ */
+ }
+
+}
diff --git a/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestIntegeration.java b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestIntegeration.java
new file mode 100644
index 0000000..612f9f0
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestIntegeration.java
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import org.onap.dcae.runtime.core.blueprint_creator.BlueprintCreator;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.onap.dcae.runtime.core.blueprint_creator.BlueprintCreatorOnapDublin;
+
+public class TestIntegeration {
+
+ private FlowGraphParser flowGraphParser;
+
+ @Before
+ public void setUp() throws Exception{
+ //1. prepare Graph
+ FlowGraph<Node, Edge> flowGraph = Helper.prepareFlowGraph();
+
+ //2. Inject graph in FlowGraphParser
+ BlueprintCreator blueprintCreator = new BlueprintCreatorOnapDublin();
+ flowGraphParser = new FlowGraphParser(blueprintCreator);
+ flowGraphParser.parse(flowGraph);
+ }
+
+ @Test
+ @Ignore
+ public void testParserCreatesBlueprintsFromFlowGraph() throws Exception{
+ /*
+ TODO: FIX
+ //3. Check if the parser can create blueprints for the componentSpec collection
+ //resultMap has key as a component-name and value is a blueprint string
+ Map<String,String> expectedBlueprints = Helper.loadTestBlueprints();
+ Map<String,String> resultBlueprints = flowGraphParser.createAndProcessBlueprints();
+
+ assertEquals(expectedBlueprints,resultBlueprints);
+ */
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestOnapBpGen.java b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestOnapBpGen.java
new file mode 100644
index 0000000..f717022
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestOnapBpGen.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import org.junit.Test;
+import org.onap.blueprintgenerator.models.blueprint.Blueprint;
+import org.onap.blueprintgenerator.models.componentspec.ComponentSpec;
+
+public class TestOnapBpGen {
+
+ @Test
+ public void testOnapBPGeneration() throws Exception{
+ ComponentSpec componentSpec = new ComponentSpec();
+ componentSpec.createComponentSpecFromString(Helper.loadFileContent(
+ "src/test/data/compspecs/componentSpec_hello_world_only_MR.json"));
+
+ Blueprint bp = new Blueprint().createBlueprint(componentSpec,"",'d',"");
+ System.out.println(bp.getInputs());
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestStringReplace.java b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestStringReplace.java
new file mode 100644
index 0000000..4917d76
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestStringReplace.java
@@ -0,0 +1,38 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class TestStringReplace {
+
+ @Test
+ @Ignore
+ public void testFindTopicFromBlueprint() throws Exception{
+ String bp_string = Helper.loadFileContent("src/test/data/blueprints/helloworld_test_1.yaml");
+// //Pattern pattern = Pattern.compile("DCAE-HELLO-WORLD-PUB-MR_topic(.*)_name:[\\s\\S]*default: 'DCAE-HELLO-WORLD-PUB-MR'");
+// Pattern pattern = Pattern.compile("'DCAE-HELLO-WORLD-PUB-MR'");
+// Matcher matcher = pattern.matcher(bp_string);
+//
+// while(matcher.find()){
+// System.out.println(bp_string.substring(matcher.start(),matcher.end()));
+// }
+ System.out.println(bp_string.replaceAll("'DCAE-HELLO-WORLD-PUB-MR'", "'sample_topic_0'"));
+ }
+}
diff --git a/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestYamlStringToObject.java b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestYamlStringToObject.java
new file mode 100644
index 0000000..ebc31e5
--- /dev/null
+++ b/mod/runtimeapi/runtime-core/src/test/java/org/onap/dcae/runtime/core/TestYamlStringToObject.java
@@ -0,0 +1,52 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.runtime.core;
+
+import org.junit.Test;
+import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.Yaml;
+
+import java.util.Map;
+
+public class TestYamlStringToObject {
+
+ @Test
+ public void testYamlStringToObject() throws Exception{
+ String bp_content = Helper.loadFileContent("src/test/data/blueprints/helloworld_onap_dublin.yaml");
+ String locationPort = "DCAE-HELLO-WORLD-SUB-MR";
+ Yaml yaml = getYamlInstance();
+ Map<String,Object> obj = yaml.load(bp_content);
+ Map<String,Object> inputsObj = (Map<String, Object>) obj.get("inputs");
+ for(Map.Entry<String,Object> entry: inputsObj.entrySet()){
+ System.out.println(String.format("^%s.*url",locationPort.replaceAll("-","_")));
+ if(entry.getKey().matches(String.format("^%s.*url",locationPort.replaceAll("-","_")))) {
+ Map<String,String> inputValue = (Map<String, String>) entry.getValue();
+ inputValue.put("default","test_topic");
+ System.out.println(entry);
+ }
+ }
+ // System.out.println(yaml.dump(obj));
+ }
+
+ private Yaml getYamlInstance() {
+ DumperOptions options = new DumperOptions();
+ options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
+ options.setPrettyFlow(true);
+ return new Yaml(options);
+ }
+}