From 86ada8c4d4b683737f01e2fb491ee278ca3f8033 Mon Sep 17 00:00:00 2001 From: "Sheshukov, Natalia (ns019t)" Date: Mon, 9 Apr 2018 14:59:52 +0300 Subject: vLAN Tagging Support Tosca Groups - TOSCA parser (refactoring) Change-Id: Ia2609bc7a73bfc0d928f4099a717b31109aa4586 Issue-ID: SDC-1199 Signed-off-by: Sheshukov, Natalia (ns019t) --- .../onap/sdc/toscaparser/api/EntityTemplate.java | 7 ++- .../java/org/onap/sdc/toscaparser/api/Group.java | 1 + .../org/onap/sdc/toscaparser/api/NodeTemplate.java | 9 +++ .../onap/sdc/toscaparser/api/TopologyTemplate.java | 67 +++++++++++----------- .../onap/sdc/toscaparser/api/ToscaTemplate.java | 1 + .../sdc/toscaparser/api/elements/GroupType.java | 31 +++++++++- 6 files changed, 79 insertions(+), 37 deletions(-) diff --git a/src/main/java/org/onap/sdc/toscaparser/api/EntityTemplate.java b/src/main/java/org/onap/sdc/toscaparser/api/EntityTemplate.java index 95c97dd..078dc44 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/EntityTemplate.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/EntityTemplate.java @@ -255,7 +255,12 @@ public abstract class EntityTemplate { ((EntityType)typeDefinition).getValue(CAPABILITIES,entityTpl,true); if(caps != null) { //?!? getCapabilities defined only for NodeType... - LinkedHashMap capabilities = ((NodeType)typeDefinition).getCapabilities(); + LinkedHashMap capabilities = null; + if(typeDefinition instanceof NodeType){ + capabilities = ((NodeType)typeDefinition).getCapabilities(); + } else if (typeDefinition instanceof GroupType){ + capabilities = ((GroupType)typeDefinition).getCapabilities(); + } for(Map.Entry me: caps.entrySet()) { String name = me. getKey(); LinkedHashMap props = (LinkedHashMap)me.getValue(); diff --git a/src/main/java/org/onap/sdc/toscaparser/api/Group.java b/src/main/java/org/onap/sdc/toscaparser/api/Group.java index d96b4a9..de031e6 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/Group.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/Group.java @@ -41,6 +41,7 @@ public class Group extends EntityTemplate { } memberNodes = _memberNodes; _validateKeys(); + getCapabilities(); } public Metadata getMetadata() { diff --git a/src/main/java/org/onap/sdc/toscaparser/api/NodeTemplate.java b/src/main/java/org/onap/sdc/toscaparser/api/NodeTemplate.java index 250ef42..20bc210 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/NodeTemplate.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/NodeTemplate.java @@ -21,6 +21,7 @@ public class NodeTemplate extends EntityTemplate { private ArrayList relationshipTpl; private LinkedHashMap _relationships; private SubstitutionMappings subMappingToscaTemplate; + private TopologyTemplate originComponentTemplate; private Metadata metadata; private static final String METADATA = "metadata"; @@ -453,6 +454,14 @@ public class NodeTemplate extends EntityTemplate { return getName(); } + public TopologyTemplate getOriginComponentTemplate() { + return originComponentTemplate; + } + + public void setOriginComponentTemplate(TopologyTemplate originComponentTemplate) { + this.originComponentTemplate = originComponentTemplate; + } + } /*python diff --git a/src/main/java/org/onap/sdc/toscaparser/api/TopologyTemplate.java b/src/main/java/org/onap/sdc/toscaparser/api/TopologyTemplate.java index e2c268e..e3d3538 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/TopologyTemplate.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/TopologyTemplate.java @@ -12,6 +12,7 @@ import org.onap.sdc.toscaparser.api.parameters.Output; import org.onap.sdc.toscaparser.api.utils.ThreadLocalsHolder; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; @@ -188,39 +189,35 @@ public class TopologyTemplate { @SuppressWarnings("unchecked") private ArrayList _policies() { ArrayList alPolicies = new ArrayList<>(); - for(Object po: _tplPolicies()) { - LinkedHashMap policy = (LinkedHashMap)po; - for(Map.Entry me: policy.entrySet()) { - String policyName = me.getKey(); - LinkedHashMap policyTpl = (LinkedHashMap)me.getValue(); - ArrayList targetList = (ArrayList)policyTpl.get("targets"); - //ArrayList targetObjects = new ArrayList<>(); - ArrayList targetNodes = new ArrayList<>(); - ArrayList targetObjects = new ArrayList<>(); - ArrayList targetGroups = new ArrayList<>(); - String targetsType = "groups"; - if(targetList != null && targetList.size() >= 1) { - targetGroups = _getPolicyGroups(targetList); - if(targetGroups == null) { - targetsType = "node_templates"; - targetNodes = _getGroupMembers(targetList); - for(NodeTemplate nt: targetNodes) { - targetObjects.add(nt); - } - } - else { - for(Group gr: targetGroups) { - targetObjects.add(gr); - } - } - } - Policy policyObj = new Policy(policyName, - policyTpl, - targetObjects, - targetsType, - customDefs); - alPolicies.add(policyObj); + for(Map.Entry me: _tplPolicies().entrySet()) { + String policyName = me.getKey(); + LinkedHashMap policyTpl = (LinkedHashMap)me.getValue(); + ArrayList targetList = (ArrayList)policyTpl.get("targets"); + ArrayList targetNodes = new ArrayList<>(); + ArrayList targetObjects = new ArrayList<>(); + ArrayList targetGroups = new ArrayList<>(); + String targetsType = "groups"; + if(targetList != null && targetList.size() >= 1) { + targetGroups = _getPolicyGroups(targetList); + if(targetGroups == null || targetGroups.isEmpty()) { + targetsType = "node_templates"; + targetNodes = _getGroupMembers(targetList); + for(NodeTemplate nt: targetNodes) { + targetObjects.add(nt); + } + } + else { + for(Group gr: targetGroups) { + targetObjects.add(gr); + } + } } + Policy policyObj = new Policy(policyName, + policyTpl, + targetObjects, + targetsType, + customDefs); + alPolicies.add(policyObj); } return alPolicies; } @@ -368,12 +365,12 @@ public class TopologyTemplate { } @SuppressWarnings("unchecked") - private ArrayList _tplPolicies() { + private LinkedHashMap _tplPolicies() { if(tpl.get(POLICIES) != null) { - return (ArrayList)tpl.get(POLICIES); + return (LinkedHashMap)tpl.get(POLICIES); } else { - return new ArrayList(); + return new LinkedHashMap<>(); } } diff --git a/src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java b/src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java index bdf962b..ea76a09 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java @@ -599,6 +599,7 @@ public class ToscaTemplate extends Object { parsedParams, nt, resolveGetInput); + nt.setOriginComponentTemplate(topologyWithSubMapping); if(topologyWithSubMapping.getSubstitutionMappings() != null) { // Record nested topology templates in top level template //nestedToscaTemplatesWithTopology.add(topologyWithSubMapping); diff --git a/src/main/java/org/onap/sdc/toscaparser/api/elements/GroupType.java b/src/main/java/org/onap/sdc/toscaparser/api/elements/GroupType.java index 1419461..2f8c1e0 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/elements/GroupType.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/elements/GroupType.java @@ -3,7 +3,9 @@ package org.onap.sdc.toscaparser.api.elements; import org.onap.sdc.toscaparser.api.common.JToscaValidationIssue; import org.onap.sdc.toscaparser.api.utils.ThreadLocalsHolder; +import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.Map; public class GroupType extends StatefulEntityType { @@ -124,7 +126,34 @@ public class GroupType extends StatefulEntityType { public String getType() { return groupType; } - + + @SuppressWarnings("unchecked") + public ArrayList getCapabilitiesObjects() { + // Return a list of capability objects + ArrayList typecapabilities = new ArrayList<>(); + LinkedHashMap caps = (LinkedHashMap)getValue(CAPABILITIES, null, true); + if(caps != null) { + // 'cname' is symbolic name of the capability + // 'cvalue' is a dict { 'type': } + for(Map.Entry me: caps.entrySet()) { + String cname = me.getKey(); + LinkedHashMap cvalue = (LinkedHashMap)me.getValue(); + String ctype = cvalue.get("type"); + CapabilityTypeDef cap = new CapabilityTypeDef(cname,ctype,type,customDef); + typecapabilities.add(cap); + } + } + return typecapabilities; + } + + public LinkedHashMap getCapabilities() { + // Return a dictionary of capability name-objects pairs + LinkedHashMap caps = new LinkedHashMap<>(); + for(CapabilityTypeDef ctd: getCapabilitiesObjects()) { + caps.put(ctd.getName(),ctd); + } + return caps; + } } -- cgit 1.2.3-korg