diff options
Diffstat (limited to 'blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint')
14 files changed, 1176 insertions, 0 deletions
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 new file mode 100644 index 0000000..e4f1230 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Appconfig.java @@ -0,0 +1,154 @@ +/**============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 org.onap.blueprintgenerator.models.componentspec.CallsObj; +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 com.fasterxml.jackson.annotation.JsonAnyGetter; + + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Appconfig { + private CallsObj[] service_calls; + private TreeMap<String, DmaapObj> stream_publishes; + private TreeMap<String, DmaapObj> stream_subcribes; + private TreeMap<String, Object> params; + + @JsonAnyGetter + public TreeMap<String, Object> getParams(){ + return params; + } + + public TreeMap<String, LinkedHashMap<String, Object>> createOnapAppconfig(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs) { + TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); + retInputs = inps; + + //set service calls + CallsObj[] call = new CallsObj[0]; + this.setService_calls(call); + + //set the stream publishes + TreeMap<String, DmaapObj> streamPublishes = new TreeMap<String, DmaapObj>(); + + 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'); + 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'); + pub.setType(p.getType()); + streamPublishes.put(config, pub); + } + } + } + + //set the stream publishes + TreeMap<String, DmaapObj> streamSubscribes = new TreeMap<String, DmaapObj>(); + + if(cs.getStreams().getSubscribes().length != 0) { + for(Subscribes s: cs.getStreams().getSubscribes()) { + if(s.getType().equals("data_router") || s.getType().equals("data router")) { + //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'); + 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'); + sub.setType(s.getType()); + streamSubscribes.put(config, sub); + } + } + } + + this.setStream_publishes(streamPublishes); + this.setStream_subcribes(streamSubscribes); + + //set the parameters into the appconfig + TreeMap<String, Object> parameters = new TreeMap<String, Object>(); + for(Parameters p: cs.getParameters()) { + String pName = p.getName(); + if(p.isSourced_at_deployment()) { + GetInput paramInput = new GetInput(); + paramInput.setGet_input(pName); + parameters.put(pName, paramInput); + + if(!p.getValue().equals("")) { + LinkedHashMap<String, Object> inputs = new LinkedHashMap<String, Object>(); + inputs.put("type", "string"); + inputs.put("default", p.getValue()); + retInputs.put(pName, inputs); + } else { + LinkedHashMap<String, Object> inputs = new LinkedHashMap<String, Object>(); + inputs.put("type", "string"); + retInputs.put(pName, inputs); + } + } else { + if(p.getType() == "string") { + String val =(String) p.getValue(); + val = '"' + val + '"'; + parameters.put(pName, val); + } + else { + parameters.put(pName, p.getValue()); + } + + } + } + 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 new file mode 100644 index 0000000..861c820 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Blueprint.java @@ -0,0 +1,255 @@ +/**============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.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.TreeMap; +import java.util.regex.Pattern; + +import org.onap.blueprintgenerator.core.Fixes; +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.onapbp.OnapBlueprint; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; +//import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + + +@Getter @Setter +@JsonInclude(JsonInclude.Include.NON_NULL) + +public class Blueprint { + + + private String tosca_definitions_version; + + + 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) { + Blueprint bp = new Blueprint(); + + if(bpType == 'o') { + OnapBlueprint onap = new OnapBlueprint(); + bp = onap.createOnapBlueprint(cs, importPath); + 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); + if(temp.get("type") == "string") { + String def = (String) temp.get("default"); + def = '"' + def + '"'; + temp.replace("default", def); + bp.getInputs().replace(s, temp); + } + } + + 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; + + if(bluePrintName.equals("")) { + String name = cs.getSelf().getName(); + if(name.contains(".")) { + name = name.replaceAll(Pattern.quote("."), "_"); + } + if(name.contains(" ")) { + name = name.replaceAll(" ", ""); + } + String file = name + ".yaml"; + + + outputFile = new File(outputPath, file); + outputFile.getParentFile().mkdirs(); + try { + outputFile.createNewFile(); + } catch (IOException e) { + + throw new RuntimeException(e); + } + } else { + if(bluePrintName.contains(" ") || bluePrintName.contains(".")) { + bluePrintName = bluePrintName.replaceAll(Pattern.quote("."), "_"); + bluePrintName = bluePrintName.replaceAll(" ", ""); + } + String file = bluePrintName + ".yaml"; + outputFile = new File(outputPath, file); + outputFile.getParentFile().mkdirs(); + try { + outputFile.createNewFile(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + String version = "#blueprint_version: " + cs.getSelf().getVersion() + '\n'; + String description = "#description: " + cs.getSelf().getDescription() + '\n'; + + BufferedWriter writer = null; + try { + writer = new BufferedWriter(new FileWriter(outputFile, false)); + } catch (IOException e1) { + throw new RuntimeException(e1); + } + if(writer != null) { + try { + writer.write(description); + } catch (IOException e) { + throw new RuntimeException(e); + } + try { + writer.write(version); + } catch (IOException e) { + throw new RuntimeException(e); + } + try { + writer.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + + //read the translated blueprint into the file + ObjectMapper blueprintMapper = new ObjectMapper(new YAMLFactory().configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)); + + PrintWriter out = null; + try { + out = new PrintWriter(new BufferedWriter(new FileWriter(outputFile, true))); + } catch (IOException e) { + throw new RuntimeException(e); + } + + try { + if(out != null) { + blueprintMapper.writeValue(out, this); + out.close(); + } + } catch (IOException e) { + + throw new RuntimeException(e); + } + + + Fixes fix = new Fixes(); + try { + fix.fixSingleQuotes(outputFile); + } catch (IOException e) { + throw new RuntimeException(e); + } + + System.out.println("Blueprint created"); + } + + + public String blueprintToString() { + String ret = ""; + + ObjectMapper blueprintMapper = new ObjectMapper(new YAMLFactory().configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)); + try { + ret = blueprintMapper.writerWithDefaultPrettyPrinter().writeValueAsString(this); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + + return ret; + } +} diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/ConcatObj.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/ConcatObj.java new file mode 100644 index 0000000..edc257c --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/ConcatObj.java @@ -0,0 +1,57 @@ +/**============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.ArrayList; + + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonRawValue; + +import lombok.Getter; import lombok.Setter; +import lombok.NoArgsConstructor; + +// TODO: Auto-generated Javadoc +/** + * The Class ConcatObj. + */ +@JsonIgnoreProperties(ignoreUnknown = true) + +/* (non-Javadoc) + * @see java.lang.Object#toString() + */ +@Getter @Setter +//@Builder + +/** + * Instantiates a new concat obj. + */ +@NoArgsConstructor +@JsonInclude(value=Include.NON_NULL) + +public class ConcatObj { + + /** The concat. */ + private ArrayList<Object> concat; +} + diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/DmaapInfo.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/DmaapInfo.java new file mode 100644 index 0000000..97dafc7 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/DmaapInfo.java @@ -0,0 +1,99 @@ +/**============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.ArrayList; +import java.util.LinkedHashMap; +import java.util.TreeMap; + +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 DmaapInfo { + private GetInput topic_url; + private GetInput username; + private GetInput password; + private GetInput location; + private GetInput delivery_url; + private GetInput subscriber_id; + + public TreeMap<String, LinkedHashMap<String, Object>> createOnapDmaapMRInfo(TreeMap<String, LinkedHashMap<String, Object>> inps, String config, char type) { + TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); + retInputs = inps; + LinkedHashMap<String, Object> stringType = new LinkedHashMap<String, Object>(); + stringType.put("type", "string"); + + config = config.replaceAll("-", "_"); + if(type == 'p') { + config = config + "_publish_url"; + } + else if(type == 's') { + config = config+ "_subscribe_url"; + } + + GetInput topic = new GetInput(); + topic.setGet_input(config); + this.setTopic_url(topic); + + retInputs.put(config, stringType); + + return retInputs; + } + + public TreeMap<String, LinkedHashMap<String, Object>> createOnapDmaapDRInfo(TreeMap<String, LinkedHashMap<String, Object>> inps, String config, char type) { + TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); + retInputs = inps; + LinkedHashMap<String, Object> stringType = new LinkedHashMap<String, Object>(); + stringType.put("type", "string"); + + GetInput username = new GetInput(); + username.setGet_input(config + "_" + "username"); + this.setUsername(username); + retInputs.put(config + "_" + "username", stringType); + + GetInput password = new GetInput(); + password.setGet_input(config + "_" + "password"); + this.setPassword(password); + retInputs.put(config + "_" + "password", stringType); + + GetInput location = new GetInput(); + location.setGet_input(config + "_" + "location"); + this.setLocation(location); + retInputs.put(config + "_" + "location", stringType); + + GetInput deliveryUrl = new GetInput(); + deliveryUrl.setGet_input(config + "_" + "delivery_url"); + this.setDelivery_url(deliveryUrl); + retInputs.put(config + "_" + "delivery_url", stringType); + + GetInput subscriberID = new GetInput(); + subscriberID.setGet_input(config + "_" + "subscriber_id"); + this.setSubscriber_id(subscriberID); + retInputs.put(config + "_" + "subscriber_id", stringType); + + + return retInputs; + } +} 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 new file mode 100644 index 0000000..7a96100 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/DmaapObj.java @@ -0,0 +1,58 @@ +/**============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 org.onap.blueprintgenerator.models.componentspec.ComponentSpec; + +import lombok.Getter; import lombok.Setter; + +@Getter @Setter +public class DmaapObj { + private DmaapInfo dmaap_info; + private String type; + + public TreeMap<String, LinkedHashMap<String, Object>> createOnapDmaapMRObj(TreeMap<String, LinkedHashMap<String, Object>> inps, String config, char type) { + TreeMap<String, LinkedHashMap<String, Object>> retInputs = new TreeMap<String, LinkedHashMap<String, Object>>(); + retInputs = inps; + + //set the dmaapinfo + DmaapInfo info = new DmaapInfo(); + retInputs = info.createOnapDmaapMRInfo(retInputs, config, type); + this.setDmaap_info(info); + + return retInputs; + } + + public TreeMap<String, LinkedHashMap<String, Object>> createOnapDmaapDRObj(TreeMap<String, LinkedHashMap<String, Object>> inps, String config, char type) { + 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); + + return retInputs; + } +} diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/GetInput.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/GetInput.java new file mode 100644 index 0000000..e7980c8 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/GetInput.java @@ -0,0 +1,29 @@ +/**============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 lombok.Getter; import lombok.Setter; + +@Getter @Setter +public class GetInput { + + private Object get_input; +} diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/GetProperty.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/GetProperty.java new file mode 100644 index 0000000..1f9bf1c --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/GetProperty.java @@ -0,0 +1,55 @@ +/**============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.ArrayList; + + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +import lombok.Getter; import lombok.Setter; +import lombok.NoArgsConstructor; + +// TODO: Auto-generated Javadoc +/** + * The Class GetProperty. + */ +@JsonIgnoreProperties(ignoreUnknown = true) + +/* (non-Javadoc) + * @see java.lang.Object#toString() + */ +@Getter @Setter +//@Builder + +/** + * Instantiates a new gets the property. + */ +@NoArgsConstructor +@JsonInclude(value=Include.NON_NULL) + +public class GetProperty { + + /** The get property. */ + private ArrayList<String> get_property; +} 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 new file mode 100644 index 0000000..e4cea63 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Imports.java @@ -0,0 +1,76 @@ +/**============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.io.File; +import java.io.IOException; +import java.util.ArrayList; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; +import lombok.AllArgsConstructor; +import lombok.Getter; import lombok.Setter; +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> createImportsFromFile(String path) { + Imports imports = new Imports(); + ObjectMapper importMapper = new ObjectMapper(new YAMLFactory().configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)); + File importPath = new File(path); + try { + imports = importMapper.readValue(importPath, Imports.class); + } 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 new file mode 100644 index 0000000..2688d9d --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Interfaces.java @@ -0,0 +1,44 @@ +/**============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 org.onap.blueprintgenerator.models.componentspec.ComponentSpec; + +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){ + 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); + this.setStart(start); + return retInputs; + } +} diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Node.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Node.java new file mode 100644 index 0000000..bac795f --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Node.java @@ -0,0 +1,28 @@ +/**============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 lombok.Getter; import lombok.Setter; + +@Getter @Setter +public class Node { + private String type; +} 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 new file mode 100644 index 0000000..82afe33 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java @@ -0,0 +1,135 @@ +/**============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 org.onap.blueprintgenerator.models.componentspec.ComponentSpec; +import org.onap.blueprintgenerator.models.componentspec.HealthCheck; +import org.onap.blueprintgenerator.models.componentspec.Volumes; +import org.onap.blueprintgenerator.models.onapbp.LogDirectory; + +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 Properties { + private Appconfig application_config; + private HealthCheck docker_config; + private Object image; + private GetInput log_info; + private String dns_name; + private Object replicas; + private String name; + + public TreeMap<String, LinkedHashMap<String, Object>> createOnapProperties(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs) { + 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"); + this.setLog_info(logD); + String logger = ""; + for(Volumes v: cs.getAuxilary().getVolumes()) { + if(v.getContainer().getBind().contains("/opt/app/") && v.getContainer().getBind().contains("logs")) { + logger = v.getContainer().getBind(); + } + } + 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"); + 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(cs.getSelf().getName()); + + //set the name + this.setName(cs.getSelf().getName()); + + //set the docker config + this.setDocker_config(cs.getAuxilary().getHealthcheck()); + + //set the app config + Appconfig app = new Appconfig(); + retInputs = app.createOnapAppconfig(retInputs, cs); + this.setApplication_config(app); + + 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); +// +// //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); +// } + +} diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Start.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Start.java new file mode 100644 index 0000000..d9c885d --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Start.java @@ -0,0 +1,49 @@ +/**============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 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 Start { + private StartInputs inputs; + private LinkedHashMap<String, Object> envs; + + public TreeMap<String, LinkedHashMap<String, Object>> createOnapStart(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs) { + TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps; + retInputs = inps; + + //create the start inputs + StartInputs inputs = new StartInputs(); + inputs.createOnapStartInputs(retInputs, cs); + this.setInputs(inputs); + + 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 new file mode 100644 index 0000000..c831617 --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/StartInputs.java @@ -0,0 +1,68 @@ +/**============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.ArrayList; +import java.util.LinkedHashMap; +import java.util.TreeMap; + +import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; + +import lombok.Getter; import lombok.Setter; + +@Getter @Setter +public class StartInputs { + private ArrayList<String> ports; + + 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); + + return retInputs; + } +} diff --git a/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/TemplateNode.java b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/TemplateNode.java new file mode 100644 index 0000000..7137cdb --- /dev/null +++ b/blueprint-generator/src/main/java/org/onap/blueprintgenerator/models/blueprint/TemplateNode.java @@ -0,0 +1,69 @@ +/**============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 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.onapbp.OnapNode; + +import lombok.Getter; import lombok.Setter; + + +public class TemplateNode extends OnapNode{ + +// public void createTemplateNode() { +// //dummy inputs just used for the inputs so i can reuse code +// TreeMap<String, LinkedHashMap<String, Object>> inps = new TreeMap<String, LinkedHashMap<String, Object>>(); +// +// //create a dummy componentspec to set the values later on +// ComponentSpec cs = new ComponentSpec(); +// Auxilary aux = new Auxilary(); +// HealthCheck health = new HealthCheck(); +// health.setEndpoint("/healthcheck"); +// health.setInterval("15s"); +// health.setTimeout("1s"); +// health.setType("https"); +// aux.setHealthcheck(health); +// String[] ports = new String[1]; +// ports[0] = "9999:9999"; +// aux.setPorts(ports); +// cs.setAuxilary(aux); +// +// //set the type +// this.setType("dcae.nodes.ContainerizedPlatformComponent"); +// +// //set the interface +// Interfaces inter = new Interfaces(); +// inter.createOnapInterface(inps, cs); +// TreeMap<String, Interfaces> interfaces = new TreeMap<String, Interfaces>(); +// interfaces.put("cloudify.interfaces.lifecycle", inter); +// this.setInterfaces(interfaces); +// +// +// //create the properties +// Properties props = new Properties(); +// props.createTemplateProperties(cs); +// this.setProperties(props); +// } +} |