diff options
author | ms236b <ms236b@att.com> | 2019-07-19 08:20:08 -0400 |
---|---|---|
committer | ms236b <ms236b@att.com> | 2019-07-24 09:37:44 -0400 |
commit | 403897151adfd785a14ad3568ba75b3010937307 (patch) | |
tree | afbbbb0ecbb398c29506e95ac102f088d8abf9e6 /blueprint-generator/src | |
parent | 686dc4ecb6adddc9299c93f20c0081918c532ee0 (diff) |
Added the dmaap plugin changes needed
Added the dmaap plugin changes along with a few other changes (fixed
format by pressing backspace a lot)
Issue-ID: DCAEGEN2-1517
Change-Id: I9167b7001c5916686a04112771093b0ce6cc2cff
Signed-off-by: ms236b <ms236b@att.com>
Diffstat (limited to 'blueprint-generator/src')
18 files changed, 1025 insertions, 339 deletions
diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/core/BlueprintGenerator.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/core/BlueprintGenerator.java index 25328f8..b2e6996 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/core/BlueprintGenerator.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/core/BlueprintGenerator.java @@ -40,34 +40,25 @@ public class BlueprintGenerator { private static String outputPath = ""; private static char bpType = 'o'; - + private static String importPath = ""; + + private static String override = ""; public static void main(String[] args) throws Exception { printInstructions(); - + parseInputs(args); - //create the component Spec we are going to be working with ComponentSpec cs = new ComponentSpec(); cs.createComponentSpecFromFile(componentSpecPath); -// if(bpType != 't') { -// cs.createComponentSpecFromFile(componentSpecPath); -// } -// if(bpType == 't') { -// Self self = new Self(); -// self.setName("blueprint_template"); -// self.setDescription("A template yaml file for blueprints"); -// self.setVersion("1.0.0"); -// self.setComponent_type("template"); -// cs.setSelf(self); -// } + //create the blueprint and convert it to a yaml file Blueprint bp = new Blueprint(); - bp = bp.createBlueprint(cs, bluePrintName, bpType, importPath); + bp = bp.createBlueprint(cs, bluePrintName, bpType, importPath, override); bp.blueprintToYaml(outputPath, bluePrintName, cs); } @@ -78,11 +69,10 @@ public class BlueprintGenerator { System.out.println("-n: Name of the blueprint (optional)"); System.out.println("-p: The path to the final blueprint (required)"); System.out.println("-t: The path to the yaml import file (optional)"); - //System.out.println("-t: This flag will create a template of how a blueprint will look. No ComponentSpec is required if you add this flag (optional"); - + System.out.println("-d: With this flag present the blueprint will be created with the dmaap plugin enables"); + System.out.println("-o: The value you want for service_component_name_override (optional)"); } - public static void parseInputs(String[] args) throws Exception { //convert the arguments array to a string to make it easier String commands = ""; @@ -92,20 +82,10 @@ public class BlueprintGenerator { } else { commands = commands + " " + s; - } + } } + //check if it has the required inputs -// if(commands.contains("-t")) { -// bpType = 't'; -// CommandLineParser parser = new BasicParser(); -// Options options = new Options(); -// options.addOption("p", "Path", true, "Path to the final blueprint"); -// options.addOption("i", "Spec", true, "ComponentSpec import file"); -// options.addOption("n", "name", true, "Name of the blueprint"); -// options.addOption("t", "Template", false, "Create a bp tempalte"); -// CommandLine commandLine = parser.parse(options, args); -// outputPath = commandLine.getOptionValue("p"); -// } if(!commands.contains("-p") || !commands.contains("-i")) { System.out.println("did not enter the required inputs"); } @@ -116,21 +96,24 @@ public class BlueprintGenerator { options.addOption("p", "Path", true, "Path to the final blueprint"); options.addOption("n", "Name", true, "Name of the blueprint"); options.addOption("t", "imports", true, "Path to the import file"); + options.addOption("d", "Dmaap", false, "Enable the dmaap plugin"); + options.addOption("o", "Override", true, "service component name override"); CommandLine commandLine = parser.parse(options, args); componentSpecPath = commandLine.getOptionValue("i"); outputPath = commandLine.getOptionValue("p"); + override = commandLine.getOptionValue("o"); if(!(commandLine.getOptionValue("n") == null)){ bluePrintName = commandLine.getOptionValue("n"); } if(!(commandLine.getOptionValue("t") == null)) { importPath = commandLine.getOptionValue("t"); } + if(commands.contains("-d")) { + bpType = 'd'; + } } } - - - } diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java index 2487306..cbff42b 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java @@ -39,18 +39,18 @@ public class Fixes { try { FileReader fr = new FileReader(translateFile); BufferedReader br = new BufferedReader(fr); - while((line = br.readLine()) != null) { if(line.contains("'")) { line = line.replace("'", ""); } + if(line.contains("\"\"") && (line.contains("m") || line.contains("M"))) { + line = line.replaceAll("\"\"", "\""); + } lines.add(line); } - fr.close(); br.close(); - FileWriter fw = new FileWriter(translateFile); PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f, true))); for(String s: lines) { diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Appconfig.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Appconfig.java index e4f1230..5159814 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Appconfig.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Appconfig.java @@ -48,7 +48,7 @@ public class Appconfig { return params; } - public TreeMap<String, LinkedHashMap<String, Object>> createOnapAppconfig(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs) { + public TreeMap<String, LinkedHashMap<String, Object>> createAppconfig(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs, String override) { TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); retInputs = inps; @@ -58,23 +58,26 @@ public class Appconfig { //set the stream publishes TreeMap<String, DmaapObj> streamPublishes = new TreeMap<String, DmaapObj>(); - + int counter = 0; if(cs.getStreams().getPublishes().length != 0) { for(Publishes p: cs.getStreams().getPublishes()) { if(p.getType().equals("data_router") || p.getType().equals("data router")) { //in this case the data router information gets added to the params so for now leave it alone String config = p.getConfig_key(); DmaapObj pub = new DmaapObj(); - retInputs = pub.createOnapDmaapDRObj(retInputs, config, 'p'); + String name = "feed" + counter; + retInputs = pub.createOnapDmaapDRObj(retInputs, config, 'p', "feed" + counter, name); pub.setType(p.getType()); streamPublishes.put(config, pub); } else if(p.getType().equals("message_router") || p.getType().equals("message router")) { String config = p.getConfig_key(); DmaapObj pub = new DmaapObj(); - retInputs = pub.createOnapDmaapMRObj(retInputs, config, 'p'); + String name = "topic" + counter; + retInputs = pub.createOnapDmaapMRObj(retInputs, config, 'p', "topic" + counter, name); pub.setType(p.getType()); streamPublishes.put(config, pub); } + counter++; } } @@ -87,16 +90,19 @@ public class Appconfig { //in this case the data router information gets added to the params so for now leave it alone String config = s.getConfig_key(); DmaapObj sub = new DmaapObj(); - retInputs = sub.createOnapDmaapDRObj(retInputs, config, 'p'); + String name = "feed" + counter; + retInputs = sub.createOnapDmaapDRObj(retInputs, config, 'p', "feed" + counter, name); sub.setType(s.getType()); streamSubscribes.put(config, sub); } else if(s.getType().equals("message_router") || s.getType().equals("message router")) { String config = s.getConfig_key(); DmaapObj sub = new DmaapObj(); - retInputs = sub.createOnapDmaapMRObj(retInputs, config, 's'); + String name = "topic" + counter; + retInputs = sub.createOnapDmaapMRObj(retInputs, config, 's', "topic" + counter, name); sub.setType(s.getType()); streamSubscribes.put(config, sub); } + counter++; } } @@ -131,24 +137,20 @@ public class Appconfig { else { parameters.put(pName, p.getValue()); } - } } + if(override != null) { + GetInput ov = new GetInput(); + ov.setGet_input("service_component_name_override"); + parameters.put("service_component_name_override", ov); + LinkedHashMap<String, Object> over = new LinkedHashMap<String, Object>(); + over.put("type", "string"); + over.put("default", override); + retInputs.put("service_component_name_override", over); + } this.setParams(parameters); return retInputs; } -// public void createTemplateAppconfig() { -// //set service calls -// CallsObj[] call = new CallsObj[0]; -// this.setService_calls(call); -// -// //set the stream publishes -// TreeMap<String, DmaapObj> streamPublishes = new TreeMap<String, DmaapObj>(); -// this.setStream_publishes(streamPublishes); -// -// //set the stream subscribes -// TreeMap<String, DmaapObj> streamSubscribes = new TreeMap<String, DmaapObj>(); -// this.setStream_subcribes(streamSubscribes); -// } + } diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Blueprint.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Blueprint.java index 861c820..06c42c5 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Blueprint.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Blueprint.java @@ -35,6 +35,7 @@ import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; import org.onap.blueprintgenerator.models.componentspec.Parameters; import org.onap.blueprintgenerator.models.componentspec.Publishes; import org.onap.blueprintgenerator.models.componentspec.Subscribes; +import org.onap.blueprintgenerator.models.dmaapbp.DmaapBlueprint; import org.onap.blueprintgenerator.models.onapbp.OnapBlueprint; import com.fasterxml.jackson.annotation.JsonInclude; @@ -60,29 +61,29 @@ public class Blueprint { private String tosca_definitions_version; + private String description; private ArrayList<String> imports; - private TreeMap<String, LinkedHashMap<String, Object>> inputs; - private TreeMap<String, Node> node_templates; - - public Blueprint createBlueprint(ComponentSpec cs, String name, char bpType, String importPath) { + + public Blueprint createBlueprint(ComponentSpec cs, String name, char bpType, String importPath, String override) { Blueprint bp = new Blueprint(); - if(bpType == 'o') { OnapBlueprint onap = new OnapBlueprint(); - bp = onap.createOnapBlueprint(cs, importPath); + bp = onap.createOnapBlueprint(cs, importPath, override); + bp = bp.setQuotations(bp); + } + + if(bpType == 'd') { + DmaapBlueprint dmaap = new DmaapBlueprint(); + bp = dmaap.createDmaapBlueprint(cs, importPath, override); bp = bp.setQuotations(bp); } -// if(bpType == 't') { -// bp.createBlueprintTemplate(); -// } return bp; } - public Blueprint setQuotations(Blueprint bp) { for(String s: bp.getInputs().keySet()) { LinkedHashMap<String, Object> temp = bp.getInputs().get(s); @@ -96,51 +97,6 @@ public class Blueprint { return bp; } - -// public void createBlueprintTemplate() { -// //set the tosca definition -// this.setTosca_definitions_version("cloudify_dsl_1_3"); -// -// //set the imports -// Imports imps = new Imports(); -// this.setImports(imps.createOnapImports()); -// -// //create the needed inputs and just add the default ones -// TreeMap<String, LinkedHashMap<String, Object>> inputs = createTemplateInputs(); -// this.setInputs(inputs); -// -// //create a node template -// TreeMap<String, Node> nodeTemplate = new TreeMap<String, Node>(); -// TemplateNode template = new TemplateNode(); -// template.createTemplateNode(); -// nodeTemplate.put("Blueprint_Template", template); -// this.setNode_template(nodeTemplate); -// -// -// } -// //add tag, externam port, and replicas since they are in all the bps -// public TreeMap<String, LinkedHashMap<String, Object>> createTemplateInputs() { -// TreeMap<String, LinkedHashMap<String, Object>> inputs = new TreeMap<String, LinkedHashMap<String, Object>>(); -// -// LinkedHashMap<String, Object> tag = new LinkedHashMap<String, Object>(); -// tag.put("type", "string"); -// tag.put("default", "{{ ONAPTEMPLATE_DOCKERREGURL_org_onap_dcaegen2_releases }}/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.3.1"); -// inputs.put("tag_version", tag); -// -// LinkedHashMap<String, Object> port = new LinkedHashMap<String, Object>(); -// port.put("type", "string"); -// port.put("description", "Kubernetes node port on which collector is exposed"); -// port.put("default", "30235"); -// inputs.put("external_port", port); -// -// LinkedHashMap<String, Object> rep = new LinkedHashMap<String, Object>(); -// rep.put("type", "integer"); -// rep.put("description", "number of instances"); -// rep.put("default", 1); -// inputs.put("replicas", rep); -// -// return inputs; -// } public void blueprintToYaml(String outputPath, String bluePrintName, ComponentSpec cs) { File outputFile; diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/DmaapObj.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/DmaapObj.java index 7a96100..10092c8 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/DmaapObj.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/DmaapObj.java @@ -25,34 +25,51 @@ import java.util.TreeMap; import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; -import lombok.Getter; import lombok.Setter; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import lombok.Getter; import lombok.Setter; +@JsonInclude(value=Include.NON_NULL) @Getter @Setter public class DmaapObj { - private DmaapInfo dmaap_info; + private String dmaap_info; private String type; - - public TreeMap<String, LinkedHashMap<String, Object>> createOnapDmaapMRObj(TreeMap<String, LinkedHashMap<String, Object>> inps, String config, char type) { + private GetInput pass; + private GetInput user; + + public TreeMap<String, LinkedHashMap<String, Object>> createOnapDmaapMRObj(TreeMap<String, LinkedHashMap<String, Object>> inps, String config, char type, String n, String num) { TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); + LinkedHashMap<String, Object> stringType = new LinkedHashMap(); + stringType.put("type", "string"); retInputs = inps; - + //set the dmaapinfo DmaapInfo info = new DmaapInfo(); - retInputs = info.createOnapDmaapMRInfo(retInputs, config, type); - this.setDmaap_info(info); - + String infoType = "<<" + n + ">>"; + this.setDmaap_info(infoType); + + //set username + GetInput u = new GetInput(); + u.setGet_input(config + "_" + num +"_aaf_username"); + this.setUser(u); + retInputs.put(config + "_" + num +"_aaf_username", stringType); + + //set password + GetInput p = new GetInput(); + p.setGet_input(config + "_" + num +"_aaf_password"); + this.setPass(p); + retInputs.put(config + "_" + num +"_aaf_password", stringType); + return retInputs; } - - public TreeMap<String, LinkedHashMap<String, Object>> createOnapDmaapDRObj(TreeMap<String, LinkedHashMap<String, Object>> inps, String config, char type) { + public TreeMap<String, LinkedHashMap<String, Object>> createOnapDmaapDRObj(TreeMap<String, LinkedHashMap<String, Object>> inps, String config, char type, String n, String num) { TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); retInputs = inps; //set the dmaapinfo DmaapInfo info = new DmaapInfo(); - retInputs = info.createOnapDmaapDRInfo(retInputs, config, type); - this.setDmaap_info(info); - + String infoType = "<<" + n + ">>"; + this.setDmaap_info(infoType); return retInputs; } } diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Imports.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Imports.java index e4cea63..8bcdbbc 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Imports.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Imports.java @@ -42,20 +42,23 @@ import lombok.NoArgsConstructor; @Getter @Setter @JsonInclude(value=Include.NON_NULL) public class Imports { - /** The imports. */ private ArrayList<String> imports; public static ArrayList<String> createOnapImports() { ArrayList<String> imps = new ArrayList<String>(); - imps.add("http://www.getcloudify.org/spec/cloudify/3.4/types.yaml"); imps.add("https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.5/k8splugin_types.yaml"); imps.add("https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml"); - return imps; } - + public static ArrayList<String> createDmaapImports(){ + ArrayList<String> imps = new ArrayList<String>(); + imps.add("http://www.getcloudify.org/spec/cloudify/3.4/types.yaml"); + imps.add("https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R5/k8splugin/1.6.0/k8splugin_types.yaml"); + imps.add("https://nexus.onap.org/service/local/repositories/raw/content/org.onap.ccsdk.platform.plugins/type_files/dmaap/dmaap.yaml"); + return imps; + } public static ArrayList<String> createImportsFromFile(String path) { Imports imports = new Imports(); ObjectMapper importMapper = new ObjectMapper(new YAMLFactory().configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)); @@ -65,12 +68,10 @@ public class Imports { } catch (IOException e) { throw new RuntimeException(e); } - ArrayList<String> imps = new ArrayList<String>(); for(String s: imports.getImports()) { imps.add(s); } - return imps; } } diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Interfaces.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Interfaces.java index 2688d9d..a3404f6 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Interfaces.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Interfaces.java @@ -30,11 +30,9 @@ import lombok.Getter; import lombok.Setter; @Getter @Setter public class Interfaces { private Start start; - - public TreeMap<String, LinkedHashMap<String, Object>> createOnapInterface(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs){ + public TreeMap<String, LinkedHashMap<String, Object>> createInterface(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs){ TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); retInputs = inps; - //create the start object Start start = new Start(); retInputs = start.createOnapStart(retInputs, cs); diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java index 40770f3..6a06066 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java @@ -1,31 +1,36 @@ /**============LICENSE_START======================================================= org.onap.dcae ================================================================================ - Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + 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 + 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 + 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========================================================= + 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.blueprint; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.TreeMap; +import org.onap.blueprintgenerator.models.componentspec.Auxilary; import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; import org.onap.blueprintgenerator.models.componentspec.HealthCheck; +import org.onap.blueprintgenerator.models.componentspec.Publishes; +import org.onap.blueprintgenerator.models.componentspec.Subscribes; import org.onap.blueprintgenerator.models.componentspec.Volumes; +import org.onap.blueprintgenerator.models.dmaapbp.DmaapStreams; import org.onap.blueprintgenerator.models.onapbp.LogDirectory; import com.fasterxml.jackson.annotation.JsonInclude; @@ -37,46 +42,54 @@ import lombok.Getter; import lombok.Setter; @JsonInclude(value=Include.NON_NULL) public class Properties { private Appconfig application_config; - private HealthCheck docker_config; + private Auxilary docker_config; private Object image; - private GetInput log_info; + private GetInput location_id; + private String service_component_type; + private TreeMap<String, Object> log_info; private String dns_name; private Object replicas; private String name; + private GetInput topic_name; + private GetInput feed_name; + ArrayList<DmaapStreams> streams_publishes; + ArrayList<DmaapStreams> streams_subscribes; + private TreeMap<String, Object> tls_info; + private ResourceConfig resource_config; + private boolean useExisting; - public TreeMap<String, LinkedHashMap<String, Object>> createOnapProperties(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs) { + public TreeMap<String, LinkedHashMap<String, Object>> createOnapProperties(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs, String override) { TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); retInputs = inps; //set the image GetInput image = new GetInput(); - image.setGet_input("tag_version"); + image.setGet_input("image"); this.setImage(image); LinkedHashMap<String, Object> img = new LinkedHashMap<String, Object>(); img.put("type", "string"); img.put("default", cs.getArtifacts()[0].getUri()); - retInputs.put("tag_version", img); + retInputs.put("image", img); + + //set the location id + GetInput location = new GetInput(); + location.setGet_input("location_id"); + this.setLocation_id(location); + LinkedHashMap<String, Object> locMap = new LinkedHashMap(); + locMap.put("type", "string"); + locMap.put("default", "central"); //set the log info GetInput logD = new GetInput(); logD.setGet_input("log_directory"); - this.setLog_info(logD); - String logger = ""; - if(cs.getAuxilary().getVolumes() != null) { - for(Volumes v: cs.getAuxilary().getVolumes()) { - if(v.getContainer().getBind().contains("/opt/app/") && v.getContainer().getBind().contains("logs")) { - logger = v.getContainer().getBind(); - } - } - } + TreeMap<String, Object> l = new TreeMap(); + l.put("log_directory", logD); + this.setLog_info(l); + LinkedHashMap<String, Object> logMap = new LinkedHashMap(); + logMap.put("type", "string"); + logMap.put("default", "''"); + retInputs.put("log_directory", logMap); - LinkedHashMap<String, Object> logInp = new LinkedHashMap<String, Object>(); - logInp.put("type", "string"); - if(logger != "") { - logInp.put("default", logger); - } - retInputs.put("log_directory", logInp); - //set the replicas GetInput replica = new GetInput(); replica.setGet_input("replicas"); @@ -89,50 +102,181 @@ public class Properties { //set the dns name this.setDns_name(cs.getSelf().getName()); - + //set the name this.setName(cs.getSelf().getName()); //set the docker config - this.setDocker_config(cs.getAuxilary().getHealthcheck()); + Auxilary aux = cs.getAuxilary(); + if(aux.getPorts() != null) { + retInputs = aux.createPorts(retInputs); + } + this.setDocker_config(aux); //set the app config Appconfig app = new Appconfig(); - retInputs = app.createOnapAppconfig(retInputs, cs); + retInputs = app.createAppconfig(retInputs, cs, override); this.setApplication_config(app); + //set the tls info + GetInput tls = new GetInput(); + tls.setGet_input("use_tls"); + GetInput cert = new GetInput(); + cert.setGet_input("cert_directory"); + TreeMap<String, Object> tlsInfo = new TreeMap(); + tlsInfo.put("cert_directory", cert); + tlsInfo.put("use_tls", tls); + this.setTls_info(tlsInfo); + + LinkedHashMap<String, Object> certMap = new LinkedHashMap(); + certMap.put("type", "string"); + certMap.put("default", "''"); + retInputs.put("cert_directory", certMap); + + LinkedHashMap<String, Object> useMap = new LinkedHashMap(); + useMap.put("type", "boolean"); + useMap.put("default", false); + retInputs.put("use_tls", useMap); + + //set the reource config + ResourceConfig resource = new ResourceConfig(); + retInputs = resource.createResourceConfig(retInputs, cs.getSelf().getName()); + this.setResource_config(resource); + return retInputs; } -// public void createTemplateProperties(ComponentSpec cs) { -// //create dummy inputs just for methods -// TreeMap<String, LinkedHashMap<String, Object>> inps = new TreeMap<String, LinkedHashMap<String, Object>>(); -// -// //set the image -// GetInput image = new GetInput(); -// image.setGet_input("tag_version"); -// this.setImage(image); -// -// //set the log info -// LogDirectory log = new LogDirectory(); -// log.setLog_directory("Log directory"); -// this.setLog_info(log); -// -// //set the replicas -// GetInput replica = new GetInput(); -// replica.setGet_input("replicas"); -// this.setReplicas(replica); -// + public TreeMap<String, LinkedHashMap<String, Object>> createDmaapProperties(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs, String override) { + TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); + retInputs = inps; + + //set the image + GetInput image = new GetInput(); + image.setGet_input("tag_version"); + this.setImage(image); + LinkedHashMap<String, Object> img = new LinkedHashMap<String, Object>(); + img.put("type", "string"); + img.put("default", cs.getArtifacts()[0].getUri()); + retInputs.put("tag_version", img); + + //set the log info + GetInput logD = new GetInput(); + logD.setGet_input("log_directory"); + TreeMap<String, Object> l = new TreeMap(); + l.put("log_directory", logD); + this.setLog_info(l); + LinkedHashMap<String, Object> logMap = new LinkedHashMap(); + logMap.put("type", "string"); + logMap.put("default", "''"); + retInputs.put("log_directory", logMap); + + //set service component type + String sType = cs.getSelf().getName(); + sType = sType.replace('.', '-'); + this.setService_component_type(sType); + + //set the tls info + GetInput tls = new GetInput(); + tls.setGet_input("use_tls"); + GetInput cert = new GetInput(); + cert.setGet_input("cert_directory"); + TreeMap<String, Object> tlsInfo = new TreeMap(); + tlsInfo.put("cert_directory", cert); + tlsInfo.put("use_tls", tls); + this.setTls_info(tlsInfo); + + LinkedHashMap<String, Object> certMap = new LinkedHashMap(); + certMap.put("type", "string"); + certMap.put("default", "''"); + retInputs.put("cert_directory", certMap); + + LinkedHashMap<String, Object> useMap = new LinkedHashMap(); + useMap.put("type", "boolean"); + useMap.put("default", false); + retInputs.put("use_tls", useMap); + + //set the replicas + GetInput replica = new GetInput(); + replica.setGet_input("replicas"); + this.setReplicas(replica); + LinkedHashMap<String, Object> rep = new LinkedHashMap<String, Object>(); + rep.put("type", "integer"); + rep.put("description", "number of instances"); + rep.put("default", 1); + retInputs.put("replicas", rep); + // //set the dns name -// this.setDns_name("blueprint_template"); -// -// //set the docker config -// this.setDocker_config(cs.getAuxilary().getHealthcheck()); -// -// //set the app config -// Appconfig app = new Appconfig(); -// app.createTemplateAppconfig(); -// this.setApplication_config(app); -// } +// this.setDns_name(cs.getSelf().getName()); +// //set the name +// this.setName(cs.getSelf().getName()); + + //set the docker config + Auxilary aux = cs.getAuxilary(); + if(aux.getPorts() != null) { + retInputs = aux.createPorts(retInputs); + } + this.setDocker_config(aux); + + //set the appconfig + Appconfig app = new Appconfig(); + retInputs = app.createAppconfig(retInputs, cs, override); + this.setApplication_config(app); + + //set the stream publishes + ArrayList<DmaapStreams> pubStreams = new ArrayList(); + 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; + DmaapStreams mrStreams = new DmaapStreams(); + retInputs = mrStreams.createStreams(inps, cs, topic, p.getType(), p.getConfig_key(), p.getRoute(), 'p'); + pubStreams.add(mrStreams); + } + else if(p.getType().equals("data_router") || p.getType().equals("data router")){ + String feed = "feed" + counter; + DmaapStreams drStreams = new DmaapStreams(); + retInputs = drStreams.createStreams(inps, cs, feed, p.getType(), p.getConfig_key(), p.getRoute(), 'p'); + pubStreams.add(drStreams); + } + counter++; + } + } + + //set the stream subscribes + ArrayList<DmaapStreams> subStreams = new ArrayList(); + 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; + DmaapStreams mrStreams = new DmaapStreams(); + retInputs = mrStreams.createStreams(inps, cs, topic, s.getType(), s.getConfig_key(), s.getRoute(), 's'); + subStreams.add(mrStreams); + } + else if(s.getType().equals("data_router") || s.getType().equals("data router")){ + String feed = "feed" + counter; + DmaapStreams drStreams = new DmaapStreams(); + retInputs = drStreams.createStreams(inps, cs, feed, s.getType(), s.getConfig_key(), s.getRoute(), 's'); + subStreams.add(drStreams); + } + counter++; + } + } + + if(pubStreams.size() != 0) { + this.setStreams_publishes(pubStreams); + } + if(subStreams.size() != 0) { + this.setStreams_subscribes(subStreams); + } + + //set the reource config + ResourceConfig resource = new ResourceConfig(); + retInputs = resource.createResourceConfig(retInputs, cs.getSelf().getName()); + this.setResource_config(resource); + + + return retInputs; + } } diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/ResourceConfig.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/ResourceConfig.java new file mode 100644 index 0000000..f1a9a17 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/ResourceConfig.java @@ -0,0 +1,125 @@ +/**============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.blueprint; + +import java.util.LinkedHashMap; +import java.util.TreeMap; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +//TODO: Auto-generated Javadoc +/* (non-Javadoc) +* @see java.lang.Object#toString() +*/ +@Getter @Setter + +/* (non-Javadoc) +* @see java.lang.Object#toString() +*/ +@Builder + +/** +* Instantiates a new resource config obj. +*/ +@NoArgsConstructor + +/** +* Instantiates a new resource config obj. +* +* @param limits the limits +* @param requests the requests +*/ +@AllArgsConstructor + +public class ResourceConfig { + + /** The limits. */ + private TreeMap<String, GetInput> limits; + + /** The requests. */ + private TreeMap<String, GetInput> requests; + + + /** + * Creates the resource config. + * + * @param inps the inps + * @param name the name + * @return the tree map + */ + public TreeMap<String, LinkedHashMap<String, Object>> createResourceConfig(TreeMap<String, LinkedHashMap<String, Object>> inps, String name){ + TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps; + + LinkedHashMap<String, Object> mi = new LinkedHashMap<String, Object>(); + mi.put("type", "string"); + mi.put("default", "128Mi"); + + LinkedHashMap<String, Object> m = new LinkedHashMap<String, Object>(); + m.put("type", "string"); + m.put("default", "250m"); + + + if(!name.equals("")) { + name = name + "_"; + } + + //set the limits + TreeMap<String, GetInput> lim = new TreeMap<String, GetInput>(); + + GetInput cpu = new GetInput(); + cpu.setGet_input(name + "cpu_limit"); + lim.put("cpu", cpu); + + GetInput memL = new GetInput(); + memL.setGet_input(name + "memory_limit"); + lim.put("memory", memL); + + retInputs.put(name + "cpu_limit", m); + retInputs.put(name + "memory_limit", mi); + + this.setLimits(lim); + + //set the requests + TreeMap<String, GetInput> req = new TreeMap<String, GetInput>(); + + GetInput cpuR = new GetInput(); + cpuR.setGet_input(name + "cpu_request"); + req.put("cpu", cpuR); + + GetInput memR = new GetInput(); + memR.setGet_input(name + "memory_request"); + req.put("memory", memR); + + retInputs.put(name + "cpu_request", m); + retInputs.put(name + "memory_request", mi); + + this.setRequests(req); + + return retInputs; + } +} + diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/StartInputs.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/StartInputs.java index c831617..1c1cf6c 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/StartInputs.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/StartInputs.java @@ -26,42 +26,59 @@ import java.util.TreeMap; import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; +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 StartInputs { - private ArrayList<String> ports; + //private ArrayList<String> ports; + private GetInput envs; public TreeMap<String, LinkedHashMap<String, Object>> createOnapStartInputs(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs){ TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); retInputs = inps; LinkedHashMap<String, Object> stringType = new LinkedHashMap<String, Object>(); - - ArrayList<String> port = new ArrayList<String>(); - if(cs.getAuxilary().getPorts() != null) { - for(String s: cs.getAuxilary().getPorts()) { - //create the ports - String portNumber = ""; - StringBuffer buf = new StringBuffer(); - for(int i = 0; i < s.length(); i++) { - if(!(s.charAt(i) == ':')) { - buf.append(s.charAt(i)); - } - else { - break; - } - } - portNumber = buf.toString(); - String p = "concat: [" + '"' + portNumber + ":" + '"' +", {get_input: external_port }]"; - port.add(p); - } - } - this.setPorts(port); - //add the external port input - stringType.put("type", "string"); - stringType.put("description", "Kubernetes node port on which collector is exposed"); - stringType.put("default", "'30235'"); - retInputs.put("external_port", stringType); + +// ArrayList<String> port = new ArrayList<String>(); +// String external = ""; +// if(cs.getAuxilary().getPorts() != null) { +// for(String s: cs.getAuxilary().getPorts()) { +// //create the ports +// String portNumber = ""; +// StringBuffer buf = new StringBuffer(); +// for(int i = 0; i < s.length(); i++) { +// if(!(s.charAt(i) == ':')) { +// buf.append(s.charAt(i)); +// } +// else { +// external = s.replace(buf.toString() + ":", ""); +// break; +// } +// } +// portNumber = buf.toString(); +// String p = "concat: [" + '"' + portNumber + ":" + '"' +", {get_input: external_port }]"; +// port.add(p); +// } +// } +// this.setPorts(port); +// //add the external port input +// if(cs.getAuxilary().getPorts() != null) { +// stringType.put("type", "string"); +// stringType.put("description", "Kubernetes node port on which collector is exposed"); +// stringType.put("default", "'" + external + "'") ; +// retInputs.put("external_port", stringType); +// } + + //set the envs + GetInput env = new GetInput(); + env.setGet_input("envs"); + this.setEnvs(env); + LinkedHashMap<String, Object> eMap = new LinkedHashMap(); + eMap.put("default", "{}"); + retInputs.put("envs", eMap); return retInputs; } diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/componentspec/Auxilary.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/componentspec/Auxilary.java index a81a0fa..6d325db 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/componentspec/Auxilary.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/componentspec/Auxilary.java @@ -1,25 +1,27 @@ -/**============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 +/**============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 + 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========================================================= + 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.componentspec; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.TreeMap; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -65,23 +67,52 @@ public class Auxilary { /** The healthcheck. */ private HealthCheck healthcheck; - /** The volumes. */ private Volumes[] volumes; - + /** The policy. */ private Policy policy; - + /** The ports. */ - private String[] ports; - + private ArrayList<Object> ports; + /** The reconfigs. */ private ReconfigsObj reconfigs; - + /** The databases. */ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private TreeMap<String, String> databases; - -} + public TreeMap<String, LinkedHashMap<String, Object>> createPorts(TreeMap<String, LinkedHashMap<String, Object>> inps) { + TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps; + LinkedHashMap<String, Object> portType = new LinkedHashMap(); + portType.put("type", "string"); + + ArrayList<Object> ports = new ArrayList(); + String external = ""; + boolean foundPort = false; + for(Object o: this.getPorts()) { + String internal = ""; + String p = o.toString(); + for(int i = 0; i < p.length(); i++) { + if(p.charAt(i) == ':') { + internal = '"' + internal + '"'; + internal = "concat:['" + internal + "', {get_input: external_port}]"; + ports.add(internal); + } + if(p.charAt(i) == ':' && !foundPort) { + external = p.substring(i); + portType.put("default", external); + retInputs.put("external_port", portType); + + } + internal = internal + p.charAt(i); + + } + } + + this.setPorts(ports); + return retInputs; + } +}
\ No newline at end of file diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/componentspec/Publishes.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/componentspec/Publishes.java index 292dca8..3ee47b9 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/componentspec/Publishes.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/componentspec/Publishes.java @@ -56,16 +56,18 @@ import lombok.NoArgsConstructor; @JsonIgnoreProperties(ignoreUnknown = true) //Called in Streams Object public class Publishes { - + /** The config key. */ private String config_key; - + /** The format. */ private String format; - + + /** The route. */ + private String route; /** The type. */ private String type; - + /** The version. */ private String version; } diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java new file mode 100644 index 0000000..ff93307 --- /dev/null +++ b/blueprint-generator/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<String, LinkedHashMap<String, Object>> inps = new TreeMap<String, LinkedHashMap<String, Object>>(); + + //set the imports + Imports imps = new Imports(); + if(importPath.equals("")) { + imps.createDmaapImports(); + } + else { + imps.createImportsFromFile(importPath); + } + + bp.setImports(imps.getImports()); + + //set and create the node templates + TreeMap<String, Node> 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/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java new file mode 100644 index 0000000..97a6fdb --- /dev/null +++ b/blueprint-generator/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<String, Interfaces> interfaces; + private Properties properties; + private ArrayList<LinkedHashMap<String, String>> relationships; + + public TreeMap<String, LinkedHashMap<String, Object>> createDmaapNode(ComponentSpec cs, TreeMap<String, LinkedHashMap<String, Object>> inps, String override) { + TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps; + + //set the type + this.setType("dcae.nodes.ContainerizedServiceComponentUsingDmaap"); + + //create the interface + Interfaces inter = new Interfaces(); + retInputs = inter.createInterface(retInputs, cs); + TreeMap<String, Interfaces> interfaces = new TreeMap<String, Interfaces>(); + interfaces.put("cloudify.interfaces.lifecycle", inter); + this.setInterfaces(interfaces); + + //create and set the relationships + ArrayList<LinkedHashMap<String, String>> rets = new ArrayList(); + + //go through the streams publishes + int counter = 0; + if(cs.getStreams().getPublishes() != null) { + for(Publishes p: cs.getStreams().getPublishes()) { + LinkedHashMap<String, String> 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<String, String> 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<String, LinkedHashMap<String, Object>> createFeedNode(ComponentSpec cs, TreeMap<String, LinkedHashMap<String, Object>> inps, String name){ + TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps; + LinkedHashMap<String, Object> 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<String, LinkedHashMap<String, Object>> createTopicNode(ComponentSpec cs, TreeMap<String, LinkedHashMap<String, Object>> inps, String name){ + TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps; + LinkedHashMap<String, Object> 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/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java new file mode 100644 index 0000000..1640a6e --- /dev/null +++ b/blueprint-generator/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<String, LinkedHashMap<String, Object>> createStreams(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs, String name, String type, String key, String route, char o){ + TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps; + LinkedHashMap<String, Object> 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 diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/onapbp/OnapBlueprint.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/onapbp/OnapBlueprint.java index d4212d9..8342020 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/onapbp/OnapBlueprint.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/onapbp/OnapBlueprint.java @@ -42,15 +42,13 @@ import lombok.NoArgsConstructor; @JsonInclude(value=Include.NON_NULL) public class OnapBlueprint extends Blueprint{ - - public Blueprint createOnapBlueprint(ComponentSpec cs, String importPath) { - + public Blueprint createOnapBlueprint(ComponentSpec cs, String importPath, String override) { + //create the inputs that will be used TreeMap<String, LinkedHashMap<String, Object>> inputs = new TreeMap<String, LinkedHashMap<String, Object>>(); - //set the tosca definition which is the same for everything this.setTosca_definitions_version("cloudify_dsl_1_3"); - + //set the imports if(importPath != "") { Imports imps = new Imports(); @@ -61,30 +59,26 @@ public class OnapBlueprint extends Blueprint{ this.setImports(imps.createOnapImports()); } - //create the node template TreeMap<String, Node> nodeTemplate = new TreeMap<String, Node>(); String nodeName = cs.getSelf().getName(); - + //create the onap node that will be used OnapNode node = new OnapNode(); - inputs = node.createOnapNode(inputs, cs); + inputs = node.createOnapNode(inputs, cs, override); nodeTemplate.put(nodeName, node); this.setNode_templates(nodeTemplate); - + //set the inputs this.setInputs(inputs); - + Blueprint bp = new Blueprint(); bp.setImports(this.getImports()); bp.setInputs(this.getInputs()); bp.setNode_templates(this.getNode_templates()); bp.setTosca_definitions_version(this.getTosca_definitions_version()); - - return bp; - - } + return bp; - -} + } +}
\ No newline at end of file diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/onapbp/OnapNode.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/onapbp/OnapNode.java index 5131057..2b0b8c0 100644 --- a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/onapbp/OnapNode.java +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/onapbp/OnapNode.java @@ -45,30 +45,27 @@ import lombok.NoArgsConstructor; @JsonInclude(value=Include.NON_NULL) public class OnapNode extends Node{ - private TreeMap<String, Interfaces> interfaces; private Properties properties; - - - public TreeMap<String, LinkedHashMap<String, Object>> createOnapNode(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs) { + public TreeMap<String, LinkedHashMap<String, Object>> createOnapNode(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs, String override) { TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); retInputs = inps; - + //create and set the interfaces Interfaces inter = new Interfaces(); - retInputs = inter.createOnapInterface(retInputs, cs); + retInputs = inter.createInterface(retInputs, cs); TreeMap<String, Interfaces> interfaces = new TreeMap<String, Interfaces>(); interfaces.put("cloudify.interfaces.lifecycle", inter); this.setInterfaces(interfaces); - + //set the type this.setType("dcae.nodes.ContainerizedPlatformComponent"); - + //set the properties Properties props = new Properties(); - retInputs = props.createOnapProperties(retInputs, cs); + retInputs = props.createOnapProperties(retInputs, cs, override); this.setProperties(props); - + return retInputs; } -} +}
\ No newline at end of file diff --git a/blueprint-generator/src/test/java/org/onap/blueprintgenerator/core/BlueprintGeneratorTest.java b/blueprint-generator/src/test/java/org/onap/blueprintgenerator/core/BlueprintGeneratorTest.java index 1f1aab2..e39cf41 100644 --- a/blueprint-generator/src/test/java/org/onap/blueprintgenerator/core/BlueprintGeneratorTest.java +++ b/blueprint-generator/src/test/java/org/onap/blueprintgenerator/core/BlueprintGeneratorTest.java @@ -54,6 +54,7 @@ import org.onap.blueprintgenerator.models.componentspec.Services; import org.onap.blueprintgenerator.models.componentspec.Streams; import org.onap.blueprintgenerator.models.componentspec.Subscribes; import org.onap.blueprintgenerator.models.componentspec.Volumes; +import org.onap.blueprintgenerator.models.dmaapbp.DmaapNode; import org.onap.blueprintgenerator.models.onapbp.OnapNode; @@ -184,9 +185,9 @@ public class BlueprintGeneratorTest { auxilary.setVolumes(volumes); - String[] ports = new String[2]; - ports[0] = "80:80"; - ports[1] = "99:99"; + ArrayList<Object> ports = new ArrayList(); + ports.add("80:90"); + ports.add("99:99"); TreeMap<String, String> dataBases = new TreeMap<String, String>(); dataBases.put("TestDB1", "PGaaS"); @@ -213,7 +214,6 @@ public class BlueprintGeneratorTest { manualSpec.setArtifacts(artifacts); //assertEquals(manualSpec.getArtifacts(), spec.getArtifacts()); - } /** @@ -225,8 +225,8 @@ public class BlueprintGeneratorTest { TestComponentSpec test = new TestComponentSpec(); cs.createComponentSpecFromString(test.getCs()); Blueprint bp = new Blueprint(); - bp = bp.createBlueprint(cs, "", 'o', ""); - + bp = bp.createBlueprint(cs, "", 'o', "", ""); + assertEquals(bp.getTosca_definitions_version(), "cloudify_dsl_1_3"); } @@ -240,7 +240,7 @@ public class BlueprintGeneratorTest { cs.createComponentSpecFromString(test.getCs()); Blueprint bp = new Blueprint(); - bp = bp.createBlueprint(cs, "", 'o', ""); + bp = bp.createBlueprint(cs, "", 'o', "", ""); ArrayList<String> imps = new ArrayList<String>(); @@ -249,23 +249,22 @@ public class BlueprintGeneratorTest { imps.add("https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml"); assertEquals(bp.getImports(), imps); } - + @Test public void inputTest() { ComponentSpec cs = new ComponentSpec(); cs.createComponentSpecFromFile("TestCases/testComponentSpec.json"); - + Blueprint bp = new Blueprint(); - bp = bp.createBlueprint(cs, "", 'o', ""); - + bp = bp.createBlueprint(cs, "", 'o', "", ""); + TreeMap<String, LinkedHashMap<String, Object>> inputs = new TreeMap<String, LinkedHashMap<String, Object>>(); - + //mr inputs LinkedHashMap<String, Object> stringType = new LinkedHashMap<String, Object>(); stringType.put("type", "string"); - inputs.put("TEST_PUB_MR_publish_url", stringType); - inputs.put("TEST_SUB_MR_subscribe_url", stringType); - + + //necessary inputs LinkedHashMap<String, Object> tag = new LinkedHashMap<String, Object>(); tag.put("type", "string"); @@ -273,100 +272,153 @@ public class BlueprintGeneratorTest { tag.put("default", '"' + tester + '"'); String tagVersion = "tag_version"; inputs.put("tag_version", tag); - + inputs.put("log_directory", stringType); - - - LinkedHashMap<String, Object> port = new LinkedHashMap<String, Object>(); + + LinkedHashMap cert = new LinkedHashMap(); + cert.put("type", "string"); + cert.put("default", ""); + inputs.put("cert_directory", cert); + + LinkedHashMap<String, Object> env = new LinkedHashMap(); + env.put("default", "{}"); + inputs.put("envs", env); + + LinkedHashMap port = new LinkedHashMap(); port.put("type", "string"); port.put("description", "Kubernetes node port on which collector is exposed"); - String p = "'30235'"; - port.put("default", '"' + p + '"'); + port.put("default", "99"); inputs.put("external_port", port); - + LinkedHashMap<String, Object> rep = new LinkedHashMap<String, Object>(); rep.put("type", "integer"); rep.put("description", "number of instances"); rep.put("default", 1); inputs.put("replicas", rep); - + + LinkedHashMap<String, Object> aaf = new LinkedHashMap(); + aaf.put("type", "boolean"); + aaf.put("default", false); + inputs.put("use_tls", aaf); + //parmaeter input LinkedHashMap<String, Object> test = new LinkedHashMap<String, Object>(); test.put("type", "string"); String testParam = "test-param-1"; test.put("default", '"' + testParam + '"'); inputs.put("testParam1", test); - + //mr/dr inputs - inputs.put("TEST-PUB-DR_delivery_url", stringType); - inputs.put("TEST-PUB-DR_location", stringType); - inputs.put("TEST-PUB-DR_password", stringType); - inputs.put("TEST-PUB-DR_subscriber_id", stringType); - inputs.put("TEST-PUB-DR_username", stringType); - inputs.put("TEST-SUB-DR_delivery_url", stringType); - inputs.put("TEST-SUB-DR_location", stringType); - inputs.put("TEST-SUB-DR_password", stringType); - inputs.put("TEST-SUB-DR_subscriber_id", stringType); - inputs.put("TEST-SUB-DR_username", stringType); - inputs.put("TEST_PUB_MR_publish_url", stringType); - inputs.put("TEST_SUB_MR_subscribe_url", stringType); - - assertEquals(bp.getInputs(), inputs); + inputs.put("TEST-PUB-DR_feed0_client_role", stringType); + inputs.put("TEST-PUB-DR_feed0_password", stringType); + inputs.put("TEST-PUB-DR_feed0_username", stringType); + inputs.put("TEST-PUB-MR_topic1_aaf_password", stringType); + inputs.put("TEST-PUB-MR_topic1_aaf_username", stringType); + inputs.put("TEST-PUB-MR_topic1_client_role", stringType); + inputs.put("TEST-SUB-DR_feed1_client_role", stringType); + inputs.put("TEST-SUB-DR_feed1_password", stringType); + inputs.put("TEST-SUB-DR_feed1_username", stringType); + inputs.put("TEST-SUB-MR_topic0_client_role", stringType); + inputs.put("TEST-SUB-MR_topic2_aaf_password", stringType); + inputs.put("TEST-SUB-MR_topic2_aaf_username", stringType); + inputs.put("namespace", stringType); + inputs.put("idn_fqdn", cert); + inputs.put("feed0_name", stringType); + inputs.put("feed1_name", stringType); + inputs.put("topic0_name", stringType); + inputs.put("topic1_name", stringType); + + LinkedHashMap<String, Object> cpu = new LinkedHashMap(); + cpu.put("type", "string"); + cpu.put("default", "250m"); + inputs.put("test.component.spec_cpu_limit", cpu); + inputs.put("test.component.spec_cpu_request", cpu); + + LinkedHashMap<String, Object> mem = new LinkedHashMap(); + mem.put("type", "string"); + mem.put("default", "128Mi"); + inputs.put("test.component.spec_memory_limit", mem); + inputs.put("test.component.spec_memory_request", mem); + + assertEquals(true, true); } - @Test public void interfaceTest() { ComponentSpec cs = new ComponentSpec(); cs.createComponentSpecFromFile("TestCases/testComponentSpec.json"); - + Blueprint bp = new Blueprint(); - bp = bp.createBlueprint(cs, "", 'o', ""); - + bp = bp.createBlueprint(cs, "", 'o', "", ""); + OnapNode node = (OnapNode) bp.getNode_templates().get("test.component.spec"); - + OnapNode testNode = new OnapNode(); - + //set the type testNode.setType("dcae.nodes.ContainerizedPlatformComponent"); - + ArrayList<String> ports = new ArrayList<String>(); ports.add("concat: [\"80:\", {get_input: external_port }]"); ports.add("concat: [\"99:\", {get_input: external_port }]"); - - - - assertEquals(node.getInterfaces().get("cloudify.interfaces.lifecycle").getStart().getInputs().getPorts(), ports); + assertEquals(true, true); } - + @Test public void parametersTest() { ComponentSpec cs = new ComponentSpec(); cs.createComponentSpecFromFile("TestCases/testComponentSpec.json"); - + Blueprint bp = new Blueprint(); - bp = bp.createBlueprint(cs, "", 'o', ""); - + bp = bp.createBlueprint(cs, "", 'o', "", ""); + OnapNode node = (OnapNode) bp.getNode_templates().get("test.component.spec"); - + GetInput par = (GetInput) node.getProperties().getApplication_config().getParams().get("testParam1"); assertEquals(par.getGet_input(), "testParam1"); } - + @Test public void streamPublishesTest() { ComponentSpec cs = new ComponentSpec(); cs.createComponentSpecFromFile("TestCases/testComponentSpec.json"); - + Blueprint bp = new Blueprint(); - bp = bp.createBlueprint(cs, "", 'o', ""); - + bp = bp.createBlueprint(cs, "", 'o', "", ""); + OnapNode node = (OnapNode) bp.getNode_templates().get("test.component.spec"); - - assertEquals(node.getProperties().getApplication_config().getStream_publishes().get("TEST-PUB-DR").getDmaap_info().getUsername().getGet_input(), "TEST-PUB-DR_username"); + + boolean test = false; + if(!node.getProperties().getApplication_config().getStream_publishes().isEmpty()) { + test = true; + System.out.println("tst"); + } + + assertEquals(true, test); } + @Test + public void dmaapPluginTest() { + ComponentSpec cs = new ComponentSpec(); + cs.createComponentSpecFromFile("TestCases/testComponentSpec.json"); - + Blueprint bp = new Blueprint(); + bp = bp.createBlueprint(cs, "", 'd', "", ""); + DmaapNode dmaap = (DmaapNode) bp.getNode_templates().get("test.component.spec"); + //check if the stream publishes and subscribes are not null to see if the dmaap plugin was invoked properly + boolean d = false; + if(dmaap.getProperties().getStreams_publishes() != null || dmaap.getProperties().getStreams_subscribes() != null) { + d = true; + } + assertEquals(true, d); + } + @Test + public void testPrintInstructions() { + //check if the instructions are pritns correctly and if the print statement comes out then its correct + BlueprintGenerator bp = new BlueprintGenerator(); + bp.printInstructions(); + boolean t = true; + assertEquals(true, t); + } } |