aboutsummaryrefslogtreecommitdiffstats
path: root/asdc-controller/src/main/java/org/openecomp/mso/asdc/util/YamlEditor.java
diff options
context:
space:
mode:
authorChrisC <cc697w@intl.att.com>2017-01-31 11:40:03 +0100
committerChrisC <cc697w@intl.att.com>2017-01-31 12:59:33 +0100
commit025301d08b061482c1f046d562bf017c8cbcfe8d (patch)
tree68a2a549736c9bf0f7cd4e71c76e40ef7e2606f2 /asdc-controller/src/main/java/org/openecomp/mso/asdc/util/YamlEditor.java
parent2754ad52f833278a5c925bd788a16d1dce16a598 (diff)
Initial OpenECOMP MSO commit
Change-Id: Ia6a7574859480717402cc2f22534d9973a78fa6d Signed-off-by: ChrisC <cc697w@intl.att.com>
Diffstat (limited to 'asdc-controller/src/main/java/org/openecomp/mso/asdc/util/YamlEditor.java')
-rw-r--r--asdc-controller/src/main/java/org/openecomp/mso/asdc/util/YamlEditor.java177
1 files changed, 177 insertions, 0 deletions
diff --git a/asdc-controller/src/main/java/org/openecomp/mso/asdc/util/YamlEditor.java b/asdc-controller/src/main/java/org/openecomp/mso/asdc/util/YamlEditor.java
new file mode 100644
index 0000000000..773ff86444
--- /dev/null
+++ b/asdc-controller/src/main/java/org/openecomp/mso/asdc/util/YamlEditor.java
@@ -0,0 +1,177 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * Copyright (C) 2017 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.openecomp.mso.asdc.util;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.yaml.snakeyaml.Yaml;
+
+import org.openecomp.mso.db.catalog.beans.HeatTemplateParam;
+
+public class YamlEditor {
+
+ private static final String REFER_PATTERN = "file:///";
+ private Map <String, Object> yml;
+ private Yaml yaml = new Yaml ();
+
+ public YamlEditor () {
+
+ }
+
+ public YamlEditor (byte[] body) {
+ init (body);
+ }
+
+ @SuppressWarnings("unchecked")
+ private synchronized void init (byte[] body) {
+ InputStream input = new ByteArrayInputStream (body);
+ yml = (Map <String, Object>) yaml.load (input);
+ }
+
+ public synchronized List <String> getYamlNestedFileResourceTypeList () {
+ List <String> typeList = new ArrayList <String> ();
+
+ @SuppressWarnings("unchecked")
+ Map <String, Object> resourceMap = (Map <String, Object>) yml.get ("resources");
+ Iterator <Entry <String, Object>> it = resourceMap.entrySet ().iterator ();
+ while (it.hasNext ()) {
+ Map.Entry <String, Object> pair = it.next ();
+ @SuppressWarnings("unchecked")
+ Map <String, String> resourceEntry = (Map <String, String>) pair.getValue ();
+ String type = resourceEntry.get ("type");
+
+ if (type.contains (REFER_PATTERN)) {
+ typeList.add (type);
+ }
+ it.remove (); // avoids a ConcurrentModificationException
+ }
+ return typeList;
+ }
+
+ public synchronized List <String> getYamlResourceTypeList () {
+ List <String> typeList = new ArrayList <String> ();
+
+ @SuppressWarnings("unchecked")
+ Map <String, Object> resourceMap = (Map <String, Object>) yml.get ("resources");
+ Iterator <Entry <String, Object>> it = resourceMap.entrySet ().iterator ();
+ while (it.hasNext ()) {
+ Map.Entry <String, Object> pair = it.next ();
+ @SuppressWarnings("unchecked")
+ Map <String, String> resourceEntry = (Map <String, String>) pair.getValue ();
+ typeList.add (resourceEntry.get ("type"));
+ }
+ return typeList;
+ }
+
+ // Generate the parameter list based on the Heat Template
+ // Based on the email from Ella Kvetny:
+ // Within Heat Template, under parameters catalog, it might indicate the default value of the parameter
+ // If default value exist, the parameter is not mandatory, otherwise its value should be set
+ public synchronized Set <HeatTemplateParam> getParameterList () {
+ Set <HeatTemplateParam> paramSet = new HashSet <HeatTemplateParam> ();
+ @SuppressWarnings("unchecked")
+ Map <String, Object> resourceMap = (Map <String, Object>) yml.get ("parameters");
+ Iterator <Entry <String, Object>> it = resourceMap.entrySet ().iterator ();
+
+ while (it.hasNext ()) {
+ HeatTemplateParam param = new HeatTemplateParam ();
+ Map.Entry <String, Object> pair = it.next ();
+ @SuppressWarnings("unchecked")
+ Map <String, String> resourceEntry = (Map <String, String>) pair.getValue ();
+
+ param.setParamName (pair.getKey ());
+ // System.out.println(pair.getKey()+":"+type);
+ if (resourceEntry.containsKey("default")) {
+ param.setRequired (false);
+ } else {
+ param.setRequired (true);
+ }
+ // Now set the type
+ String value = resourceEntry.get ("type");
+ param.setParamType (value);
+
+ paramSet.add (param);
+
+ }
+ return paramSet;
+
+ }
+
+ public synchronized void addParameterList (Set <HeatTemplateParam> heatSet) {
+
+ @SuppressWarnings("unchecked")
+ Map <String, Object> resourceMap = (Map <String, Object>) yml.get ("parameters");
+ if (resourceMap == null) {
+ resourceMap = new LinkedHashMap <String, Object> ();
+ this.yml.put ("parameters", resourceMap);
+ }
+ for (HeatTemplateParam heatParam : heatSet) {
+ Map <String, Object> paramInfo = new HashMap <String, Object> ();
+ paramInfo.put ("type", heatParam.getParamType ());
+
+ resourceMap.put (heatParam.getParamName (), paramInfo);
+ }
+
+ // this.yml.put("parameters", resourceMap);
+
+ }
+
+ public boolean isParentTemplate (String templateBody) {
+ return templateBody.contains (REFER_PATTERN);
+ }
+
+ public boolean verifyTemplate () {
+ // Verify whether the heat template is for Vnf Resource
+ // We don't support other template installation yet
+
+ return true;
+ }
+
+ public String encode (Map <String, Object> content) {
+ return yaml.dump (content);
+ }
+
+ public synchronized String encode () {
+ return this.yaml.dump (this.yml);
+ }
+
+ /**
+ * This method return the YAml file as a string.
+ *
+ */
+ @Override
+ public String toString () {
+
+ return encode ();
+ }
+
+}