From 9b30373a6f1b1bc123250a9a598bc7a164b7e9b7 Mon Sep 17 00:00:00 2001 From: Vijay Venkatesh Kumar Date: Wed, 8 Jan 2020 17:13:22 +0000 Subject: bp-gen code clone from cli repo dcaegen2/platform/mod will host all design component code cli/component-json-schemas and cli/dcae-cli already moved original cli repo will be marked as RO after this is merged Change-Id: Ie88dbd273d218c89a95afe0e58742a948c04eae5 Signed-off-by: Vijay Venkatesh Kumar Issue-ID: DCAEGEN2-1852 Issue-ID: DCAEGEN2-1860 Signed-off-by: Vijay Venkatesh Kumar --- .../models/dmaapbp/DmaapBlueprint.java | 111 +++++++++++++++ .../models/dmaapbp/DmaapNode.java | 153 +++++++++++++++++++++ .../models/dmaapbp/DmaapStreams.java | 103 ++++++++++++++ 3 files changed, 367 insertions(+) create mode 100644 mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java create mode 100644 mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java create mode 100644 mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java (limited to 'mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp') diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java new file mode 100644 index 0000000..d3cff67 --- /dev/null +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java @@ -0,0 +1,111 @@ +/**============LICENSE_START======================================================= + org.onap.dcae + ================================================================================ + 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.blueprintgenerator.models.dmaapbp; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.TreeMap; + +import org.onap.blueprintgenerator.models.blueprint.Blueprint; +import org.onap.blueprintgenerator.models.blueprint.Imports; +import org.onap.blueprintgenerator.models.blueprint.Interfaces; +import org.onap.blueprintgenerator.models.blueprint.Node; +import org.onap.blueprintgenerator.models.blueprint.Properties; +import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; +import org.onap.blueprintgenerator.models.componentspec.Publishes; +import org.onap.blueprintgenerator.models.componentspec.Subscribes; + +public class DmaapBlueprint extends Blueprint{ + public Blueprint createDmaapBlueprint(ComponentSpec cs, String importPath, String override) { + Blueprint bp = new Blueprint(); + + //set tosca definition + bp.setTosca_definitions_version("cloudify_dsl_1_3"); + + //set the description + bp.setDescription(cs.getSelf().getDescription()); + + //create the inpus object that will be added to over the creation of the blueprint + TreeMap> inps = new TreeMap>(); + + //set the imports + Imports imps = new Imports(); + if(importPath.equals("")) { + bp.setImports(imps.createDmaapImports()); + } + else { + bp.setImports(imps.createImportsFromFile(importPath)); + } + + //bp.setImports(imps.getImports()); + + //set and create the node templates + TreeMap nodeTemplate = new TreeMap(); + + //create and add the main dmaap node + DmaapNode dmaap = new DmaapNode(); + inps = dmaap.createDmaapNode(cs, inps, override); + nodeTemplate.put(cs.getSelf().getName(), dmaap); + + //create and add the topic/feed nodes + + //go through the streams publishes + int counter = 0; + if(cs.getStreams().getPublishes() != null) { + for(Publishes p: cs.getStreams().getPublishes()) { + if(p.getType().equals("message_router") || p.getType().equals("message router")) { + String topic = "topic" + counter; + DmaapNode topicNode = new DmaapNode(); + inps = topicNode.createTopicNode(cs, inps, topic); + nodeTemplate.put(topic, topicNode); + } else if(p.getType().equals("data_router") || p.getType().equals("data router")) { + String feed = "feed" + counter; + DmaapNode feedNode = new DmaapNode(); + inps = feedNode.createFeedNode(cs, inps, feed); + nodeTemplate.put(feed, feedNode); + } + counter++; + } + } + //go through the stream subscribes + if(cs.getStreams().getSubscribes() != null) { + for(Subscribes s: cs.getStreams().getSubscribes()) { + if(s.getType().equals("message_router") || s.getType().equals("message router")) { + String topic = "topic" + counter; + DmaapNode topicNode = new DmaapNode(); + inps = topicNode.createTopicNode(cs, inps, topic); + nodeTemplate.put(topic, topicNode); + } else if(s.getType().equals("data_router") || s.getType().equals("data router")) { + String feed = "feed" + counter; + DmaapNode feedNode = new DmaapNode(); + inps = feedNode.createFeedNode(cs, inps, feed); + nodeTemplate.put(feed, feedNode); + } + counter++; + } + } + + bp.setNode_templates(nodeTemplate); + + bp.setInputs(inps); + return bp; + } +} \ No newline at end of file diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java new file mode 100644 index 0000000..bfa7ae9 --- /dev/null +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java @@ -0,0 +1,153 @@ +/**============LICENSE_START======================================================= + org.onap.dcae + ================================================================================ + 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.blueprintgenerator.models.dmaapbp; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.TreeMap; + +import org.onap.blueprintgenerator.models.blueprint.GetInput; +import org.onap.blueprintgenerator.models.blueprint.Interfaces; +import org.onap.blueprintgenerator.models.blueprint.Node; +import org.onap.blueprintgenerator.models.blueprint.Properties; +import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; +import org.onap.blueprintgenerator.models.componentspec.Publishes; +import org.onap.blueprintgenerator.models.componentspec.Subscribes; +import org.onap.blueprintgenerator.models.onapbp.OnapNode; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Getter @Setter +@EqualsAndHashCode(callSuper=false) +@NoArgsConstructor +@JsonInclude(value=Include.NON_NULL) + +public class DmaapNode extends Node{ + + private TreeMap interfaces; + private Properties properties; + private ArrayList> relationships; + + public TreeMap> createDmaapNode(ComponentSpec cs, TreeMap> inps, String override) { + TreeMap> retInputs = inps; + + //set the type + this.setType("dcae.nodes.ContainerizedServiceComponentUsingDmaap"); + + //create the interface + Interfaces inter = new Interfaces(); + retInputs = inter.createInterface(retInputs, cs); + TreeMap interfaces = new TreeMap(); + interfaces.put("cloudify.interfaces.lifecycle", inter); + this.setInterfaces(interfaces); + + //create and set the relationships + ArrayList> rets = new ArrayList(); + + //go through the streams publishes + int counter = 0; + if(cs.getStreams().getPublishes() != null) { + for(Publishes p: cs.getStreams().getPublishes()) { + LinkedHashMap pubRelations = new LinkedHashMap(); + if(p.getType().equals("message_router") || p.getType().equals("message router")) { + pubRelations.put("type", "ccsdk.relationships.publish_events"); + pubRelations.put("target", "topic" + counter); + } else if(p.getType().equals("data_router") || p.getType().equals("data router")) { + pubRelations.put("type", "ccsdk.relationships.publish_files"); + pubRelations.put("target", "feed" + counter); + } + rets.add(pubRelations); + counter++; + } + } + //go through the stream subscribes + if(cs.getStreams().getSubscribes() != null) { + for(Subscribes s: cs.getStreams().getSubscribes()) { + LinkedHashMap subRelations = new LinkedHashMap(); + if(s.getType().equals("message_router") || s.getType().equals("message router")) { + subRelations.put("type", "ccsdk.relationships.subscribe_to_events"); + subRelations.put("target", "topic" + counter); + } else if(s.getType().equals("data_router") || s.getType().equals("data router")) { + subRelations.put("type", "ccsdk.relationships.subscribe_to_files"); + subRelations.put("target", "feed" + counter); + } + rets.add(subRelations); + counter++; + } + } + + this.setRelationships(rets); + + //create and set the properties + Properties props = new Properties(); + retInputs = props.createDmaapProperties(retInputs, cs, override); + this.setProperties(props); + + return retInputs; + } + public TreeMap> createFeedNode(ComponentSpec cs, TreeMap> inps, String name){ + TreeMap> retInputs = inps; + LinkedHashMap stringType = new LinkedHashMap(); + stringType.put("type", "string"); + + //set the type + this.setType("ccsdk.nodes.Feed"); + + //create and set the properties + Properties props = new Properties(); + GetInput topicInput = new GetInput(); + topicInput.setGet_input(name + "_name"); + props.setFeed_name(topicInput); + //props.setUseExisting(true); + retInputs.put(name + "_name", stringType); + this.setProperties(props); + + return retInputs; + } + + public TreeMap> createTopicNode(ComponentSpec cs, TreeMap> inps, String name){ + TreeMap> retInputs = inps; + LinkedHashMap stringType = new LinkedHashMap(); + stringType.put("type", "string"); + + //set the type + this.setType("ccsdk.nodes.Topic"); + + //create and set the properties + Properties props = new Properties(); + GetInput topicInput = new GetInput(); + topicInput.setGet_input(name + "_name"); + props.setTopic_name(topicInput); + //props.setUseExisting(true); + retInputs.put(name + "_name", stringType); + this.setProperties(props); + + return retInputs; + } +} diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java new file mode 100644 index 0000000..1640a6e --- /dev/null +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java @@ -0,0 +1,103 @@ +/**============LICENSE_START======================================================= + org.onap.dcae + ================================================================================ + 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.blueprintgenerator.models.dmaapbp; + +import java.util.LinkedHashMap; +import java.util.TreeMap; + +import org.onap.blueprintgenerator.models.blueprint.Appconfig; +import org.onap.blueprintgenerator.models.blueprint.GetInput; +import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; +import org.onap.blueprintgenerator.models.componentspec.HealthCheck; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter +@JsonInclude(value=Include.NON_NULL) +public class DmaapStreams { + + private String name; + private GetInput location; + private GetInput client_role; + private String type; + + private GetInput username; + private GetInput password; + //private GetInput delivery_url; + private String route; + private String scheme; + + public TreeMap> createStreams(TreeMap> inps, ComponentSpec cs, String name, String type, String key, String route, char o){ + TreeMap> retInputs = inps; + LinkedHashMap stringType = new LinkedHashMap(); + stringType.put("type", "string"); + + //set the name + this.setName(name); + + //set the type + this.setType(type); + + //set the location + GetInput location = new GetInput(); + location.setGet_input(key + "_" + name + "_location"); + retInputs.put(key + "_" + name + "_location", stringType); + this.setLocation(location); + + //if its data router we need to add some more + if(type.equals("data_router") || type.equals("data router")) { + if(o == 's') { + //set the username + GetInput username = new GetInput(); + username.setGet_input(key + "_" + name + "_username"); + this.setUsername(username); + retInputs.put(key + "_" + name + "_username", stringType); + + //set the password + GetInput password = new GetInput(); + password.setGet_input(key + "_" + name + "_password"); + this.setPassword(password); + retInputs.put(key + "_" + name + "_password", stringType); + + this.setRoute(route); + this.setScheme("https"); + } + +// //set the delivery url +// GetInput delivery = new GetInput(); +// delivery.setGet_input(name + "_delivery_url"); +// this.setDelivery_url(delivery); +// retInputs.put(name + "delivery_url", stringType); + + } else { + //set the client role + GetInput client = new GetInput(); + client.setGet_input(key + "_" + name + "_client_role"); + this.setClient_role(client); + retInputs.put(key + "_" + name + "_client_role", stringType); + } + return retInputs; + } +} \ No newline at end of file -- cgit 1.2.3-korg