summaryrefslogtreecommitdiffstats
path: root/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core
diff options
context:
space:
mode:
Diffstat (limited to 'mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core')
-rw-r--r--mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java34
-rw-r--r--mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PgaasNodeBuilder.java130
-rw-r--r--mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PolicyNodeBuilder.java90
3 files changed, 254 insertions, 0 deletions
diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java
index cbff42b..3a4b457 100644
--- a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java
+++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java
@@ -29,6 +29,7 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.List;
public class Fixes {
private static ArrayList<String> lines = new ArrayList<String>();
@@ -40,6 +41,7 @@ public class Fixes {
FileReader fr = new FileReader(translateFile);
BufferedReader br = new BufferedReader(fr);
while((line = br.readLine()) != null) {
+// lines.add(ensureNoSingleQuotes(line));
if(line.contains("'")) {
line = line.replace("'", "");
}
@@ -67,4 +69,36 @@ public class Fixes {
throw new RuntimeException(e);
}
}
+
+ /**
+ * Remove single quotes from a line from a blueprint
+ */
+ private static String ensureNoSingleQuotes(String line) {
+ // TODO: Should probably use regex instead
+ // REVIEW: The condition under which to remove the single quotes
+ if ((line.contains("concat") || line.contains("default: ")) && line.contains("'")) {
+ return line.replace("'", "");
+ } else {
+ return line;
+ }
+ }
+
+ /**
+ * Takes in an entire blueprint (YAML) in a string buffer and post processes it to apply
+ * "fixes" like removing unwanted single quotes.
+ */
+ public static String applyFixes(String bp) {
+ List<String> lines = new ArrayList<String>();
+
+ String[] linesPre = bp.split("\n");
+ System.out.println(String.format("To post-processing #lines: %d", linesPre.length));
+
+ for (String line : linesPre) {
+ lines.add(ensureNoSingleQuotes(line));
+ }
+
+ return String.join("\n", lines);
+ }
+
+
}
diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PgaasNodeBuilder.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PgaasNodeBuilder.java
new file mode 100644
index 0000000..a22d588
--- /dev/null
+++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PgaasNodeBuilder.java
@@ -0,0 +1,130 @@
+/**============LICENSE_START=======================================================
+ org.onap.dcae
+ ================================================================================
+ Copyright (c) 2019-2020 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.core;
+
+import org.onap.blueprintgenerator.exception.DatabasesNotFoundException;
+import org.onap.blueprintgenerator.models.GetAttribute;
+import org.onap.blueprintgenerator.models.blueprint.GetInput;
+import org.onap.blueprintgenerator.models.blueprint.Node;
+import org.onap.blueprintgenerator.models.blueprint.pgaas.PgaasNode;
+import org.onap.blueprintgenerator.models.blueprint.pgaas.PgaasNodeProperties;
+import org.onap.blueprintgenerator.models.componentspec.ComponentSpec;
+
+import java.util.*;
+
+public class PgaasNodeBuilder {
+
+ private static final String PGAAS_NODE_TYPE = "dcae.nodes.pgaas.database";
+ private static final String PGAAS_NODE_NAME_POSTFIX = "_pgaasdb";
+ private static final String WRITER_FQDN_POSTFIX = "_database_writerfqdn";
+ private static final String NAME_POSTFIX = "_database_name";
+ private static final boolean USE_EXISTING = true;
+ private static final String DB_RELATIONSHIP_TYPE = "cloudify.relationships.depends_on";
+
+
+
+ public static void addPgaasNodesAndInputs(ComponentSpec cs, TreeMap<String, Node> nodeTemplate, TreeMap<String, LinkedHashMap<String, Object>> inps) {
+ TreeMap<String, String> databases = cs.getAuxilary().getDatabases();
+ if(databases == null){
+ throw new DatabasesNotFoundException("databases section not found in componentspec");
+ }
+ for(Map.Entry<String, String> database : databases.entrySet()){
+ addPgaasNode(database, nodeTemplate);
+ addPgaasInputs(database, inps);
+ }
+ }
+
+ private static void addPgaasInputs(Map.Entry<String, String> database, TreeMap<String, LinkedHashMap<String, Object>> inps) {
+ inps.put(database.getKey() + NAME_POSTFIX, getInputValue("string", "db name", ""));
+ inps.put(database.getKey() + WRITER_FQDN_POSTFIX, getInputValue("string", "db writerfqdn", ""));
+ }
+
+ private static LinkedHashMap<String, Object> getInputValue(String type, String description, Object defaultValue) {
+ LinkedHashMap<String, Object> inputValueMap = new LinkedHashMap();
+ inputValueMap.put("type", type);
+ inputValueMap.put("description", description);
+ inputValueMap.put("default", defaultValue);
+ return inputValueMap;
+ }
+
+ private static void addPgaasNode(Map.Entry<String, String> database, TreeMap<String, Node> nodeTemplate) {
+ PgaasNode pgaasNode = new PgaasNode();
+ String dbName = database.getKey();
+ pgaasNode.setType(PGAAS_NODE_TYPE);
+ pgaasNode.setPgaasNodeProperties(buildPgaasNodeProperties(dbName));
+ nodeTemplate.put(dbName + PGAAS_NODE_NAME_POSTFIX , pgaasNode);
+ }
+
+ private static PgaasNodeProperties buildPgaasNodeProperties(String dbName) {
+ PgaasNodeProperties pgaasNodeProperties = new PgaasNodeProperties();
+
+ GetInput nameValue = new GetInput();
+ nameValue.setGet_input(dbName + NAME_POSTFIX);
+ pgaasNodeProperties.setName(nameValue);
+
+ GetInput writerfqdnValue = new GetInput();
+ writerfqdnValue.setGet_input(dbName + WRITER_FQDN_POSTFIX);
+ pgaasNodeProperties.setWriterfqdn(writerfqdnValue);
+
+ pgaasNodeProperties.setUseExisting(USE_EXISTING);
+
+ return pgaasNodeProperties;
+ }
+
+ public static ArrayList<LinkedHashMap<String, String>> getPgaasNodeRelationships(ComponentSpec cs) {
+ ArrayList<LinkedHashMap<String, String>> relationships = new ArrayList<>();
+ for(Map.Entry<String, String> database : cs.getAuxilary().getDatabases().entrySet()){
+ LinkedHashMap<String, String> relationship = new LinkedHashMap<>();
+ relationship.put("type", DB_RELATIONSHIP_TYPE);
+ relationship.put("target", database.getKey() + PGAAS_NODE_NAME_POSTFIX);
+ relationships.add(relationship);
+ }
+ return relationships;
+ }
+
+ public static LinkedHashMap<String, Object> getEnvVariables(TreeMap<String, String> databases) {
+ LinkedHashMap<String, Object> envVariables = new LinkedHashMap<String, Object>();
+ for(Map.Entry<String, String> database : databases.entrySet()){
+ String name = database.getKey().toUpperCase();
+
+ envVariables.put("<<", "*envs");
+
+ GetInput nameValue = new GetInput();
+ nameValue.setGet_input(name.toLowerCase() + NAME_POSTFIX);
+ envVariables.put(name + "_DB_NAME", nameValue);
+
+ GetAttribute adminHostValue = buildGetAttributeValue(name.toLowerCase(), "admin", "host");
+ envVariables.put( name.toUpperCase() + "_DB_ADMIN_HOST", adminHostValue);
+
+ GetAttribute adminUserValue = buildGetAttributeValue(name.toLowerCase(), "admin", "user");
+ envVariables.put( name.toUpperCase() + "_DB_ADMIN_USER", adminUserValue);
+
+ GetAttribute adminPasswordValue = buildGetAttributeValue(name.toLowerCase(), "admin", "password");
+ envVariables.put( name.toUpperCase() + "_DB_ADMIN_PASS", adminPasswordValue);
+ }
+ return envVariables;
+ }
+
+ private static GetAttribute buildGetAttributeValue(String dbName, String owner, String type) {
+ GetAttribute attribute = new GetAttribute();
+ attribute.setAttribute(Arrays.asList(dbName + PGAAS_NODE_NAME_POSTFIX, owner, type));
+ return attribute;
+ }
+}
diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PolicyNodeBuilder.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PolicyNodeBuilder.java
new file mode 100644
index 0000000..a947ab7
--- /dev/null
+++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PolicyNodeBuilder.java
@@ -0,0 +1,90 @@
+/**============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.core;
+
+import org.onap.blueprintgenerator.models.blueprint.GetInput;
+import org.onap.blueprintgenerator.models.blueprint.Node;
+import org.onap.blueprintgenerator.models.blueprint.policy.PolicyNode;
+import org.onap.blueprintgenerator.models.blueprint.policy.PolicyNodeProperties;
+import org.onap.blueprintgenerator.models.componentspec.ComponentSpec;
+import org.onap.blueprintgenerator.models.componentspec.policy_info.TypePolicy;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.TreeMap;
+
+public class PolicyNodeBuilder {
+
+ private static final String POLICY_NODE_TYPE = "clamp.nodes.policy";
+ private static final String POLICY_RELATIONSHIP_TYPE = "cloudify.relationships.depends_on";
+
+ public static void addPolicyNodesAndInputs(ComponentSpec cs, TreeMap<String, Node> nodeTemplate, TreeMap<String, LinkedHashMap<String, Object>> inps) {
+ List<TypePolicy> policyList = cs.getPolicyInfo().getTypePolicyList();
+ for(TypePolicy policy: policyList){
+ addPolicyNodesToNodeTemplate(policy, nodeTemplate);
+ addPolicyInputs(policy, inps);
+ }
+ }
+
+ private static void addPolicyInputs(TypePolicy policy, TreeMap<String, LinkedHashMap<String, Object>> inps) {
+ String defaultValue = policy.getPolicy_id() != null ? policy.getPolicy_id() : "";
+ inps.put(policy.getNode_label() + "_policy_id", getInputValue("string", "policy_id", defaultValue));
+ }
+
+ private static LinkedHashMap<String, Object> getInputValue(String type, String description, Object defaultValue) {
+ LinkedHashMap<String, Object> inputValueMap = new LinkedHashMap();
+ inputValueMap.put("type", type);
+ inputValueMap.put("description", description);
+ inputValueMap.put("default", defaultValue);
+ return inputValueMap;
+ }
+
+ private static void addPolicyNodesToNodeTemplate(TypePolicy policy, TreeMap<String, Node> nodeTemplate) {
+ PolicyNode policyNode = new PolicyNode();
+ policyNode.setType(POLICY_NODE_TYPE);
+ policyNode.setPolicyNodeProperties(getPolicyNodeProperties(policy));
+ nodeTemplate.put(policy.getNode_label(), policyNode);
+ }
+
+ private static PolicyNodeProperties getPolicyNodeProperties(TypePolicy policy) {
+ PolicyNodeProperties policyNodeProperties = new PolicyNodeProperties();
+
+ GetInput policyIdGetInput = new GetInput();
+ policyIdGetInput.setGet_input(policy.getNode_label() + "_policy_id");
+ policyNodeProperties.setPolicyId(policyIdGetInput);
+
+ policyNodeProperties.setPolicyModelId(policy.getPolicy_model_id());
+
+ return policyNodeProperties;
+ }
+
+ public static ArrayList<LinkedHashMap<String, String>> getPolicyRelationships(ComponentSpec cs) {
+ ArrayList<LinkedHashMap<String, String>> relationships = new ArrayList<>();
+ List<TypePolicy> policyList = cs.getPolicyInfo().getTypePolicyList();
+ for(TypePolicy policy: policyList){
+ LinkedHashMap<String, String> relationship = new LinkedHashMap<>();
+ relationship.put("type", POLICY_RELATIONSHIP_TYPE);
+ relationship.put("target", policy.getNode_label());
+ relationships.add(relationship);
+ }
+ return relationships;
+ }
+}