[367741] vLAN Tagging. Support Tosca Policies. 65/32565/1
authorNatalia Sheshukov <ns019t@intl.att.com>
Thu, 22 Feb 2018 14:50:05 +0000 (16:50 +0200)
committerNatalia Sheshukov <ns019t@intl.att.com>
Thu, 22 Feb 2018 14:50:05 +0000 (16:50 +0200)
Change-Id: I4d47ee603883e4d6a2b54776d7d570ba074cc25a
Issue-ID: SDC-1056
Signed-off-by: Natalia Sheshukov <ns019t@intl.att.com>
pom.xml
src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java
src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java
src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcPropertyNames.java
src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java
src/test/java/org/openecomp/sdc/impl/ToscaParserMetadataTest.java
src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java
src/test/resources/csars/resource-Policy-csar.csar [new file with mode: 0644]
src/test/resources/csars/service-AlService-csar.csar [new file with mode: 0644]
version.properties

diff --git a/pom.xml b/pom.xml
index 2b8f08d..4c982e3 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
        <artifactId>sdc-tosca</artifactId>\r
        <name>sdc-sdc-tosca</name>\r
        <description>SDC Tosca Parser JAR file for use by consumers</description>\r
-       <version>1.2.2-SNAPSHOT</version>\r
+       <version>1.2.3-SNAPSHOT</version>\r
        <packaging>jar</packaging>\r
 \r
        <properties>\r
                <dependency>\r
                        <groupId>org.openecomp.sdc.jtosca</groupId>\r
                        <artifactId>jtosca</artifactId>\r
-                       <version>1.2.1</version>\r
+                       <version>1.2.2-SNAPSHOT</version>\r
                </dependency>\r
 \r
 \r
index df9e47d..cd5b018 100644 (file)
@@ -450,5 +450,98 @@ public interface ISdcCsarHelper {
         * @return the leaf value as String, or null if there's no such property, or it's not a leaf.
         */
        public String getCapabilityPropertyLeafValue(CapabilityAssignment capability, String pathToPropertyLeafValue);
+       
+       /**
+        * Get all the policies of the main topology template (either VF or service)
+        * @return      the list of the policies
+        */
+       public List<Map<String, Map<String, Object>>> getPoliciesOfTopologyTemplate();
+       
+       /**
+        * Get all the policies of the main topology template (either VF or service) specified by policy type
+        * @param policyTypeName        the name of the policy type
+        * @return                                      the list of the policies                                                
+        */
+       public List<Map<String, Map<String, Object>>> getPoliciesOfTopologyTemplateByToscaPolicyType(String policyTypeName);
+       
+       /**
+        * Get all the policies of the origin component (nested topology template) of the node template
+        * @param nodeTemplate  the node template
+        * @return                              the list of the policies
+        */
+       public List<Map<String,Object>> getPoliciesOfOriginOfNodeTemplate(NodeTemplate nodeTemplate);
+       
+       /**
+        * Get all the policies of the origin component (nested topology template) of the node template specified by policy type
+        * @param nodeTemplate          the node template
+        * @param policyTypeName        the name of the policy type
+        * @return                                      the list of the policies
+        */
+       public List<Map<String, Object>> getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(NodeTemplate nodeTemplate, String policyTypeName);
+       
+       /**
+        * Get all the node templates of the topology template, which are the targets of the policy specified by name
+        * @param policyName    the name of the policy
+        * @return                              the list of the node templates
+        */
+       public List<NodeTemplate> getPolicyTargetsFromTopologyTemplate(String policyName);
+       
+       /**
+        * Get all the node templates of the origin component (nested topology template) of node template, which are the targets of the policy specified by name
+        * @param nodeTemplate  the node template
+        * @param policyName    the name of the policy
+        * @return                              the list of the node templates
+        */
+       public List<Map<String, Object>> getPolicyTargetsFromOrigin(NodeTemplate nodeTemplate, String policyName);
+       
+       /**
+        * Get the node template of the topology template specified by name
+        * @param nodeTemplateName      the name of the node template
+        * @return                                      the node template
+        */
+       public NodeTemplate getNodeTemplateByName(String nodeTemplateName);
+    
+    /**
+     * Get all the policies, which contain the specified node template as a target
+     * @param targetNode       the node template
+     * @return                         the list of the policies
+     */
+       public List<Map<String, Map<String, Object>>> getPoliciesOfTarget(NodeTemplate targetNode);
+       
+       /**
+        * Get all the policies of the specified type, which contain the specified node template as a target
+        * @param nodeTemplate          the node template
+        * @param policyTypeName        the name of the policy type
+        * @return                                      the list of the policies
+        */
+    public List<Map<String, Map<String, Object>>> getPoliciesOfTargetByToscaPolicyType(NodeTemplate nodeTemplate, String policyTypeName);
+    
+    /**
+     * Get all groups of this of the main topology template (either VF or service)
+     * @return  the list of the groups
+     */
+    public List<Map<String, Map<String, Object>>> getGroupsOfTopologyTemplate();
+
+    /**
+     * Get all groups of this of the main topology template (either VF or service) by specified tosca group type
+     * @param groupType     the group type
+     * @return  the list of the groups
+     */
+    public List<Map<String, Map<String, Object>>> getGroupsOfTopologyTemplateByToscaGroupType(String groupType);
+    
+    
+    /**
+     * Get all the groups of the origin component (nested topology template) of the node template
+     * @param               nodeTemplate  the node template
+     * @return              the list of the groups
+     */
+    public List<Map<String,Object>> getGroupsOfOriginOfNodeTemplate(NodeTemplate nodeTemplate);
+    
+    /**
+     * Get group members of the group belongs to the main topology template (either VF or service) by group name
+     * @param groupName     the name of the group
+     * @return
+     */
+    public List<NodeTemplate> getGroupMembersFromTopologyTemplate(String groupName);
 
 }
\ No newline at end of file
index 901b315..a963189 100644 (file)
@@ -22,15 +22,12 @@ package org.openecomp.sdc.tosca.parser.impl;
 
 import java.util.*;
 import java.util.Map.Entry;
-import java.util.stream.Collectors;
-
+import static java.util.stream.Collectors.toList;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.openecomp.sdc.tosca.parser.config.ConfigurationManager;
-import org.openecomp.sdc.toscaparser.api.CapabilityAssignments;
 import org.openecomp.sdc.tosca.parser.utils.GeneralUtility;
-import org.openecomp.sdc.toscaparser.api.RequirementAssignments;
 import org.openecomp.sdc.tosca.parser.utils.SdcToscaUtility;
 import org.openecomp.sdc.toscaparser.api.*;
 import org.openecomp.sdc.toscaparser.api.elements.Metadata;
@@ -58,7 +55,232 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
         this.toscaTemplate = toscaTemplate;
         this.configurationManager = configurationManager;
     }
+    
+    @Override
+    public List<Map<String, Map<String, Object>>> getPoliciesOfTarget(NodeTemplate nodeTemplate) {
+       return getPoliciesOfNodeTemplate(nodeTemplate.getName())
+       .stream()
+       .sorted(Policy::compareTo)
+       .map(this::convertPolicyToMap)
+       .collect(toList());
+    }
+    
+    @Override
+       public List<Map<String,Object>> getPoliciesOfOriginOfNodeTemplate(NodeTemplate nodeTemplate) {
+               List<Map<String,Object>> policies  = new ArrayList<>();
+               if(toscaTemplate.getNestedTopologyTemplates() != null && !toscaTemplate.getNestedTopologyTemplates().isEmpty()){
+                       String invariantUUID = nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID);
+                       Optional<Object> nestedTopTmpl = toscaTemplate.getNestedTopologyTemplates()
+                                       .values()
+                                       .stream()
+                                       .filter(nt->invariantUuidEqualsTo(invariantUUID, nt))
+                                       .findFirst();
+                       if(nestedTopTmpl.isPresent()){
+                               policies = getPoliciesSection(nestedTopTmpl.get());
+                       }
+               }
+       return policies;
+    }
+    
+    @Override
+    public List<Map<String, Map<String, Object>>> getPoliciesOfTargetByToscaPolicyType(NodeTemplate nodeTemplate, String policyTypeName) {
+       return getPoliciesOfNodeTemplate(nodeTemplate.getName())
+       .stream()
+       .filter(p->p.getType().equals(policyTypeName))
+       .sorted(Policy::compareTo)
+       .map(this::convertPolicyToMap)
+       .collect(toList());
+    }
+    
+    @Override
+    public List<Map<String, Object>> getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(NodeTemplate nodeTemplate, String policyTypeName) {
+       return getPoliciesOfOriginOfNodeTemplate(nodeTemplate)
+       .stream()
+       .filter(p->typeEqualsTo(p, policyTypeName))
+       .sorted(this::comparePolicyMapObjects)
+       .collect(toList());
+    }
+
+    @Override
+    public List<NodeTemplate> getPolicyTargetsFromTopologyTemplate(String policyName) {
+       if(toscaTemplate.getNodeTemplates() == null){
+               return new ArrayList<>();
+       }
+       List<String> targetNames = getPolicyTargets(policyName);
+       return toscaTemplate.getNodeTemplates().stream()
+                       .filter(nt->targetNames.contains(nt.getName()))
+                       .collect(toList());
+    }
+       
+       @Override
+       public List<Map<String, Object>> getPolicyTargetsFromOrigin(NodeTemplate nodeTemplate, String policyName) {
+       List<String> targets = getTargetsOfPolicyOfNestedTopologyTemplate(nodeTemplate, policyName);
+               if(targets.isEmpty()){
+               return new ArrayList<>();
+       }
+       return toscaTemplate.getNestedTopologyTemplates()
+                       .values()
+                       .stream()
+                       .map(this::getNodeTemplatesSection)
+                       .filter(nt->targets.contains(nt.keySet().iterator().next()))
+                       .collect(toList());
+    }
+       
+       @Override
+       public List<Map<String, Map<String, Object>>> getPoliciesOfTopologyTemplate(){
+       if(toscaTemplate.getPolicies() == null)
+               return new ArrayList<>();
+       return toscaTemplate.getPolicies()
+       .stream()
+       .sorted(Policy::compareTo)
+       .map(this::convertPolicyToMap)
+       .collect(toList());
+       }
+       
+       @Override
+       public List<Map<String, Map<String, Object>>> getPoliciesOfTopologyTemplateByToscaPolicyType(String policyTypeName){
+       if(toscaTemplate.getPolicies() == null)
+               return new ArrayList<>();
+       return toscaTemplate.getPolicies()
+       .stream()
+       .filter(p->p.getType().equals(policyTypeName))
+       .sorted(Policy::compareTo)
+       .map(this::convertPolicyToMap)
+       .collect(toList());
+       }
+
+
+       private List<String> getTargetsOfPolicyOfNestedTopologyTemplate(NodeTemplate nodeTemplate, String policyName) {
+               if(toscaTemplate.getNodeTemplates() == null){
+               return new ArrayList<>();
+       }
+       Optional<Map<String, Object>> policy = getPolicyOfNestedTopologyTemplateByName(nodeTemplate, policyName);
+       if(!policy.isPresent()){
+               return new ArrayList<>();
+       }
+       return getTargetsSection(policy.get());
+       }
+       
+       private Optional<Map<String, Object>> getPolicyOfNestedTopologyTemplateByName(NodeTemplate nodeTemplate, String policyName) {
+               return getPoliciesOfOriginOfNodeTemplate(nodeTemplate).stream()
+       .filter(p->policyNameEqualsTo(p, policyName))
+       .findFirst();
+       }
+
+       private boolean policyNameEqualsTo(Map<String, Object> policy, String policyName) {
+               return policy != null && !policy.isEmpty() && policy.keySet().iterator().next().equals(policyName);
+       }
+       
+    public NodeTemplate getNodeTemplateByName(String nodeTemplateName) {
+       if(toscaTemplate.getNodeTemplates() == null)
+               return null;
+       return toscaTemplate.getNodeTemplates()
+       .stream()
+       .filter(nt -> nt.getName().equals(nodeTemplateName))
+       .findFirst().orElse(null);
+    }
+    
+    
+    private int comparePolicyMapObjects(Map<String,Object> policy, Map<String,Object> otherPolicy){
+               if(policy.equals(otherPolicy))
+                       return 0;
+               return getTypeSection(policy).compareTo(getTypeSection(otherPolicy)) == 0 ? getNameSection(policy).compareTo(getNameSection(otherPolicy)) : getTypeSection(policy).compareTo(getTypeSection(otherPolicy));
+    }
+
+    @SuppressWarnings("unchecked")
+       private List<String> getTargetsSection(Map<String, Object> policy) {
+       if(policy == null || policy.isEmpty()){
+               return new ArrayList<>();
+       }
+       List<String> targets = (List<String>) ((Map<String, Object>)policy.values().iterator().next()).get(SdcPropertyNames.PROPERTY_NAME_TARGETS);
+       if(targets == null){
+               return new ArrayList<>();
+       }
+               return targets;
+       }
+       @SuppressWarnings("unchecked")
+       private boolean typeEqualsTo(Map<String, Object> policy, String policyTypeName) {
+       if(policy.values().iterator().hasNext()){
+               return ((Map<String, Object>)policy.values().iterator().next()).get(SdcPropertyNames.PROPERTY_NAME_TYPE).equals(policyTypeName);
+       }
+               return false;
+       }
+    
+    private String getNameSection(Map<String, Object> policy) {
+       Object name = policy.get(SdcPropertyNames.PROPERTY_NAME_NAME);
+       if(name == null)
+               return "";
+               return (String)name;
+       }
+
+       private String getTypeSection(Map<String, Object> policy) {
+       Object type = policy.get(SdcPropertyNames.PROPERTY_NAME_TYPE);
+       if(type == null)
+               return "";
+               return (String)type;
+       }
+       
+       @SuppressWarnings("unchecked")
+       private List<Map<String,Object>> getPoliciesSection(Object nestedTopTmpl) {
+               List<Map<String,Object>> policies  = (List<Map<String,Object>>)getTopologyTemplateSection(nestedTopTmpl).get(SdcPropertyNames.PROPERTY_NAME_POLICIES);
+       if(policies == null || policies.isEmpty())
+               return new ArrayList<>();
+               return policies;
+       }
+       
+       @SuppressWarnings("unchecked")
+       private Map<String,Object> getNodeTemplatesSection(Object topologyTemplate) {
+               Map<String,Object> nodeTemplates  = (Map<String,Object>)getTopologyTemplateSection(topologyTemplate).get(SdcPropertyNames.PROPERTY_NAME_NODE_TEMPLATES);
+       if(nodeTemplates == null || nodeTemplates.isEmpty())
+               return new HashMap<>();
+               return nodeTemplates;
+       }
+
+       @SuppressWarnings("unchecked")
+       private Map<String,Object> getTopologyTemplateSection(Object topologyTemplate) {
+               Map<String,Object> topologyTemplateSection  = (Map<String,Object>)((Map<String,Object>)topologyTemplate).get(SdcPropertyNames.PROPERTY_NAME_TOPOLOGY_TEMPLATE);
+       if(topologyTemplateSection == null || topologyTemplateSection.isEmpty())
+               return new HashMap<>();
+               return topologyTemplateSection;
+       }
 
+       @SuppressWarnings("unchecked")
+       private boolean invariantUuidEqualsTo(String invariantUUID, Object nt) {
+               return ((Map<String,Object>)((Map<String,Object>)nt).get(SdcPropertyNames.PROPERTY_NAME_METADATA)).get(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).equals(invariantUUID);
+       }
+       
+    private  Map<String, Map<String, Object>> convertPolicyToMap(Policy policy){
+       Map<String, Map<String, Object>> policyMap = new HashMap<>();
+       Map<String, Object> policyValue = new HashMap<>();
+       policyMap.put(policy.getName(), policyValue);
+       policyValue.put(SdcPropertyNames.PROPERTY_NAME_TYPE, policy.getType());
+       policyValue.put(SdcPropertyNames.PROPERTY_NAME_METADATA, policy.getmetadata());
+       policyValue.put(SdcPropertyNames.PROPERTY_NAME_TARGETS, policy.getTargets());
+       policyValue.put(SdcPropertyNames.PROPERTY_NAME_PROPERTIES, policy.getPolicyProperties());
+       return policyMap;
+    }
+    
+    private List<Policy> getPoliciesOfNodeTemplate(String nodeTemplateName) {
+       if(toscaTemplate.getPolicies() == null)
+               return new ArrayList<>();
+       return toscaTemplate.getPolicies()
+       .stream()
+       .filter(p -> p.getTargets().contains(nodeTemplateName))
+       .collect(toList());
+    }
+    
+    private List<String> getPolicyTargets(String policyName) {
+       return getPolicyByName(policyName).map(Policy::getTargets).orElse(new ArrayList<>());
+    }
+    
+    private Optional<Policy> getPolicyByName(String policyName) {
+       if(toscaTemplate.getPolicies() == null)
+               return Optional.empty();
+       return toscaTemplate.getPolicies()
+       .stream()
+       .filter(p -> p.getName().equals(policyName)).findFirst();
+    }
+    
     @Override
     //Sunny flow  - covered with UT, flat and nested
     public String getNodeTemplatePropertyLeafValue(NodeTemplate nodeTemplate, String leafValuePath) {
@@ -110,24 +332,27 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
                 }
             }
 
-            if (cps.size() > 0) {
-                // ports found - find all their properties
-                for (String portName : cps.keySet()) {
-                    for (Map.Entry<String, Property> property: props.entrySet()) {
-                        if (property.getKey().startsWith(portName)) {
-                            String portProperty = property.getKey().replaceFirst(portName + "_", "");
-                            if (property.getValue() != null) {
-                                cps.get(portName).put(portProperty, property.getValue().getValue());
-                            }
-                        }
-                    }
-                }
-            }
+            findPutAllPortsProperties(cps, props);
         }
 
         return cps;
     }
 
+       private void findPutAllPortsProperties(Map<String, Map<String, Object>> cps, Map<String, Property> props) {
+               if (!cps.isEmpty()) {
+                   for (Entry<String, Map<String, Object>> port : cps.entrySet()) {
+                       for (Map.Entry<String, Property> property: props.entrySet()) {
+                           if (property.getKey().startsWith(port.getKey())) {
+                               String portProperty = property.getKey().replaceFirst(port.getKey() + "_", "");
+                               if (property.getValue() != null) {
+                                   cps.get(port.getKey()).put(portProperty, property.getValue().getValue());
+                               }
+                           }
+                       }
+                   }
+               }
+       }
+
     public Map<String, Map<String, Object>> getCpPropertiesFromVfc(NodeTemplate vfc) {
 
         if (vfc == null) {
@@ -147,26 +372,27 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
                     cps.put(portName, new HashMap<>());
                 }
             }
-
-            if (cps.size() > 0) {
-                // ports found - find all their properties
-                for (String portName : cps.keySet()) {
-                    for (Map.Entry<String, Property> property: props.entrySet()) {
-                        if (property.getKey().startsWith(portName)) {
-                            Map<String, Object> portPaths = new HashMap<>();
-                            String portProperty = property.getKey().replaceFirst(portName + "_", "");
-                            buildPathMappedToValue(portProperty, property.getValue().getValue(), portPaths);
-
-                            cps.get(portName).putAll(portPaths);
-                        }
-                    }
-                }
-            }
+            findBuildPutAllPortsProperties(cps, props);
         }
 
         return cps;
     }
 
+       private void findBuildPutAllPortsProperties(Map<String, Map<String, Object>> cps, Map<String, Property> props) {
+               if (!cps.isEmpty()) {
+                   for (Entry<String, Map<String, Object>> port : cps.entrySet()) {
+                       for (Map.Entry<String, Property> property: props.entrySet()) {
+                           if (property.getKey().startsWith(port.getKey())) {
+                               Map<String, Object> portPaths = new HashMap<>();
+                               String portProperty = property.getKey().replaceFirst(port.getKey() + "_", "");
+                               buildPathMappedToValue(portProperty, property.getValue().getValue(), portPaths);
+                               cps.get(port.getKey()).putAll(portPaths);
+                           }
+                       }
+                   }
+               }
+       }
+
     @SuppressWarnings("unchecked")
     private void buildPathMappedToValue(String path, Object property, Map<String, Object> pathsMap) {
         if (property instanceof Map) {
@@ -190,15 +416,13 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
     @Override
     //Sunny flow - covered with UT
     public List<NodeTemplate> getServiceVlList() {
-        List<NodeTemplate> serviceVlList = getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), SdcTypes.VL);
-        return serviceVlList;
+        return getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), SdcTypes.VL);
     }
 
     @Override
     //Sunny flow - covered with UT
     public List<NodeTemplate> getServiceVfList() {
-        List<NodeTemplate> serviceVfList = getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), SdcTypes.VF);
-        return serviceVfList;
+        return getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), SdcTypes.VF);
     }
 
     @Override
@@ -212,8 +436,7 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
             log.error("getMetadataPropertyValue - the metadata is null");
             return null;
         }
-        String metadataPropertyValue = metadata.getValue(metadataPropertyName);
-        return metadataPropertyValue;
+        return metadata.getValue(metadataPropertyName);
     }
 
 
@@ -239,8 +462,7 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
 
     @Override
     public List<NodeTemplate> getServiceNodeTemplates() {
-        List<NodeTemplate> nodeTemplates = toscaTemplate.getNodeTemplates();
-        return nodeTemplates;
+        return toscaTemplate.getNodeTemplates();
     }
 
     @Override
@@ -265,25 +487,15 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
         List<NodeTemplate> serviceVfList = getServiceVfList();
         NodeTemplate nodeTemplateByCustomizationUuid = getNodeTemplateByCustomizationUuid(serviceVfList, vfCustomizationUuid);
         if (nodeTemplateByCustomizationUuid != null) {
-            /*SubstitutionMappings substitutionMappings = nodeTemplateByCustomizationUuid.getSubstitutionMappings();
-                       if (substitutionMappings != null){
-                               List<Group> groups = substitutionMappings.getGroups();
-                               if (groups != null){
-                                       List<Group> collect = groups.stream().filter(x -> "org.openecomp.groups.VfModule".equals(x.getTypeDefinition().getType())).collect(Collectors.toList());
-                                       log.debug("getVfModulesByVf - VfModules are {}", collect);
-                                       return collect;
-                               }
-                       }*/
             String name = nodeTemplateByCustomizationUuid.getName();
             String normaliseComponentInstanceName = SdcToscaUtility.normaliseComponentInstanceName(name);
             List<Group> serviceLevelGroups = toscaTemplate.getTopologyTemplate().getGroups();
             log.debug("getVfModulesByVf - VF node template name {}, normalized name {}. Searching groups on service level starting with VF normalized name...", name, normaliseComponentInstanceName);
             if (serviceLevelGroups != null) {
-                List<Group> collect = serviceLevelGroups
+                return serviceLevelGroups
                         .stream()
                         .filter(x -> "org.openecomp.groups.VfModule".equals(x.getTypeDefinition().getType()) && x.getName().startsWith(normaliseComponentInstanceName))
-                        .collect(Collectors.toList());
-                return collect;
+                        .collect(toList());
             }
         }
         return new ArrayList<>();
@@ -468,7 +680,7 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
         }
 
         List<NodeTemplate> serviceVfList = getServiceVfList();
-        if (serviceVfList == null || serviceVfList.size() == 0) {
+        if (serviceVfList == null || serviceVfList.isEmpty()) {
             log.error("getCpListByVf Vfs not exist for vfCustomizationId {}", vfCustomizationId);
             return cpList;
         }
@@ -478,7 +690,7 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
             return cpList;
         }
         cpList = getNodeTemplateBySdcType(vfInstance, SdcTypes.CP);
-        if (cpList == null || cpList.size() == 0)
+        if (cpList == null || cpList.isEmpty())
             log.debug("getCpListByVf cps not exist for vfCustomizationId {}", vfCustomizationId);
         return cpList;
     }
@@ -507,8 +719,7 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
                 if (findFirst.isPresent()) {
                     List<String> members = findFirst.get().getMembers();
                     if (members != null) {
-                        List<NodeTemplate> collect = substitutionMappings.getNodeTemplates().stream().filter(x -> members.contains(x.getName())).collect(Collectors.toList());
-                        return collect;
+                        return substitutionMappings.getNodeTemplates().stream().filter(x -> members.contains(x.getName())).collect(toList());
                     }
                 }
             }
@@ -517,8 +728,6 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
     }
 
     @Override
-    //Sunny flow - covered with UT
-    @SuppressWarnings("unchecked")
     public List<Pair<NodeTemplate, NodeTemplate>> getNodeTemplatePairsByReqName(
             List<NodeTemplate> listOfReqNodeTemplates, List<NodeTemplate> listOfCapNodeTemplates, String reqName) {
 
@@ -557,7 +766,6 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
 
     @Override
     //Sunny flow - covered with UT
-    //TODO constant strings
     public List<NodeTemplate> getAllottedResources() {
         List<NodeTemplate> nodeTemplates = null;
         nodeTemplates = toscaTemplate.getTopologyTemplate().getNodeTemplates();
@@ -566,12 +774,10 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
         }
         nodeTemplates = nodeTemplates.stream().filter(
                 x -> x.getMetaData() != null && x.getMetaData().getValue("category").equals("Allotted Resource"))
-                .collect(Collectors.toList());
+                .collect(toList());
         if (nodeTemplates.isEmpty()) {
             log.debug("getAllottedResources -  allotted resources not exist");
-        } else {
         }
-
         return nodeTemplates;
     }
 
@@ -653,18 +859,18 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
 
         if (substitutionMappings != null) {
             List<NodeTemplate> nodeTemplates = substitutionMappings.getNodeTemplates();
-            if (nodeTemplates != null && nodeTemplates.size() > 0) {
+            if (nodeTemplates != null && !nodeTemplates.isEmpty()) {
                if (sdcType.equals(SdcTypes.VFC) && isVNF)  {
                        return nodeTemplates.stream()
                                .filter(x -> (x.getMetaData() != null &&
                                        sdcType.getValue().equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE))) &&  isVNFType(x))
-                               .collect(Collectors.toList());
+                               .collect(toList());
                }
                else {
                     return nodeTemplates.stream()
                                .filter(x -> (x.getMetaData() != null &&
                                        sdcType.getValue().equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE))) &&  !isVNFType(x))
-                               .collect(Collectors.toList());
+                               .collect(toList());
                }
             }
             else {
@@ -717,8 +923,7 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
 
         List<NodeTemplate> serviceVfList = getServiceVfList();
         NodeTemplate vfInstance = getNodeTemplateByCustomizationUuid(serviceVfList, vfCustomizationUuid);
-        NodeTemplate vnfConfig = getNodeTemplateBySdcType(vfInstance, SdcTypes.VFC, true).stream().findAny().orElse(null);
-               return vnfConfig;
+        return getNodeTemplateBySdcType(vfInstance, SdcTypes.VFC, true).stream().findAny().orElse(null);
        }
 
     @Override
@@ -747,11 +952,11 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
         SubstitutionMappings substitutionMappings = nodeTemplate.getSubMappingToscaTemplate();
         if (substitutionMappings != null) {
             List<NodeTemplate> nodeTemplates = substitutionMappings.getNodeTemplates();
-            if (nodeTemplates != null && nodeTemplates.size() > 0) {
+            if (nodeTemplates != null && !nodeTemplates.isEmpty()) {
 
                 return nodeTemplates.stream()
                         .filter(x -> !isVNFType(x))
-                        .collect(Collectors.toList());
+                        .collect(toList());
             }
             else {
                 log.debug("getNodeTemplateChildren - SubstitutionMappings' node Templates not exist");
@@ -822,6 +1027,31 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
         Object property = processProperties(split, properties);
         return property == null || property instanceof Function ? null : String.valueOf(property);
     }
+    
+    @Override
+    public List<Map<String, Map<String, Object>>> getGroupsOfTopologyTemplate() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public List<Map<String, Map<String, Object>>> getGroupsOfTopologyTemplateByToscaGroupType(String groupType) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public List<NodeTemplate> getGroupMembersFromTopologyTemplate(String groupName) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+    
+    @Override
+    public List<Map<String, Object>> getGroupsOfOriginOfNodeTemplate(NodeTemplate nodeTemplate) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
 
     /************************************* helper functions ***********************************/
     private boolean isVNFType(NodeTemplate nt) {
@@ -874,8 +1104,8 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
 
         List<NodeTemplate> nodeTemplates = topologyTemplate.getNodeTemplates();
 
-        if (nodeTemplates != null && nodeTemplates.size() > 0)
-            return nodeTemplates.stream().filter(x -> (x.getMetaData() != null && sdcType.getValue().equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE)))).collect(Collectors.toList());
+        if (nodeTemplates != null && !nodeTemplates.isEmpty())
+            return nodeTemplates.stream().filter(x -> (x.getMetaData() != null && sdcType.getValue().equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE)))).collect(toList());
 
         log.debug("getNodeTemplateBySdcType - topologyTemplate's nodeTemplates not exist");
         return new ArrayList<>();
@@ -905,8 +1135,4 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
         return null;
     }
 
-       
-
-    
-    
 }
index 7d34c6f..367aa7f 100644 (file)
@@ -106,4 +106,12 @@ public class SdcPropertyNames {
     
     public static String PROPERTY_NAME_NETWORKFLOWS_ISBOUNDTOVPN="network_flows#is_bound_to_vpn";
     public static String PROPERTY_NAME_NETWORKFLOWS_VPNBINDING="network_flows#vpn_binding";
+    
+    //Policy
+    public static String PROPERTY_NAME_TOPOLOGY_TEMPLATE = "topology_template";
+    public static String PROPERTY_NAME_NODE_TEMPLATES = "node_templates";
+    public static String PROPERTY_NAME_POLICIES = "policies";
+       public static String PROPERTY_NAME_METADATA = "metadata";
+       public static String PROPERTY_NAME_PROPERTIES = "properties";
+       public static String PROPERTY_NAME_TARGETS = "targets";
 }
index 1695671..b65d70b 100644 (file)
@@ -36,7 +36,8 @@ public abstract class SdcToscaParserBasicTest {
     static ISdcCsarHelper resolveReqsCapsCsarQA;
        static ISdcCsarHelper portMirroring;
        static ISdcCsarHelper csarHelperServiceWithCrs;
-
+       static ISdcCsarHelper csarHelperServicePolicy;
+       static ISdcCsarHelper csarHelperVfPolicy;
 
        static Map<String, HashMap<String, List<String>>> fdntCsarHelper_Data;
     
@@ -59,8 +60,10 @@ public abstract class SdcToscaParserBasicTest {
                resolveReqsCapsCsarQA = getCsarHelper("csars/service-sunny-flow2.csar");
                portMirroring = getCsarHelper("csars/service-PortMirroring.csar");
                csarHelperServiceWithCrs = getCsarHelper("csars/service-CrTestService-csar.csar");
-               
-        fdntCsarHelper_Data = new HashMap<String, HashMap<String, List<String>>>(){
+               csarHelperVfPolicy = getCsarHelper("csars/resource-Policy-csar.csar");
+               csarHelperServicePolicy = getCsarHelper("csars/service-AlService-csar.csar");
+
+               fdntCsarHelper_Data = new HashMap<String, HashMap<String, List<String>>>(){
                {
                        HashMap<String, List<String>> FDNT ;
                        
index 4a17b66..0725cb9 100644 (file)
@@ -3,6 +3,7 @@ package org.openecomp.sdc.impl;
 import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.openecomp.sdc.tosca.parser.config.ConfigurationManager;
 import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
 import org.openecomp.sdc.toscaparser.api.NodeTemplate;
 import org.openecomp.sdc.toscaparser.api.elements.Metadata;
 import org.testng.annotations.Test;
@@ -207,7 +208,7 @@ public class ToscaParserMetadataTest extends SdcToscaParserBasicTest {
       SdcToscaParserException {
     ConfigurationManager configurationManager = ConfigurationManager.getInstance();
     configurationManager.setErrorConfiguration("error-configuration-test.yaml");
-    factory.setConfigurationManager(configurationManager);
+    SdcToscaParserFactory.setConfigurationManager(configurationManager);
 
     ISdcCsarHelper missingCSARMetaCsarCustomConfig = getCsarHelper
         ("csars/service-missing-csar-meta-file.csar");
@@ -217,7 +218,7 @@ public class ToscaParserMetadataTest extends SdcToscaParserBasicTest {
         .getMaxVersion());
 
     configurationManager.setErrorConfiguration("error-configuration.yaml");
-    factory.setConfigurationManager(configurationManager);
+    SdcToscaParserFactory.setConfigurationManager(configurationManager);
   }
 
   @Test(expectedExceptions = SdcToscaParserException.class)
index 04675b4..32336af 100644 (file)
@@ -5,8 +5,6 @@ import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import java.util.*;
-import static org.hamcrest.CoreMatchers.is;
-
 import com.google.common.collect.ImmutableMap;
 import org.apache.commons.lang3.tuple.Pair;
 import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
@@ -14,11 +12,8 @@ import org.openecomp.sdc.tosca.parser.impl.FilterType;
 import org.openecomp.sdc.tosca.parser.impl.SdcTypes;
 import org.openecomp.sdc.toscaparser.api.Group;
 import org.openecomp.sdc.toscaparser.api.NodeTemplate;
-import org.openecomp.sdc.toscaparser.api.Property;
 import org.testng.annotations.Test;
 
-import fj.data.fingertrees.Node;
-
 public class ToscaParserNodeTemplateTest extends SdcToscaParserBasicTest {
 
        //region getServiceVfList
@@ -965,7 +960,84 @@ public class ToscaParserNodeTemplateTest extends SdcToscaParserBasicTest {
                assertEquals(crTemplate.getPropertyValue("nf_naming").toString(), ImmutableMap.of("ecomp_generated_naming", "true").toString());
                assertEquals(crTemplate.getPropertyValue("contrailport0_virtual_network"), "chaya");
        }
-
+       
+       @Test
+       public void testGetPoliciesOfOriginOfNodeTemplate() {
+               NodeTemplate nt0 = csarHelperServicePolicy.getNodeTemplateByName("al_vf 0");
+               NodeTemplate nt1 = csarHelperServicePolicy.getNodeTemplateByName("al_vf 1");
+               List<Map<String, Object>> policies = csarHelperServicePolicy.getPoliciesOfOriginOfNodeTemplate(nt0);
+               assertNotNull(policies);
+               assertEquals(policies.size(), 3);
+               policies = csarHelperServicePolicy.getPoliciesOfOriginOfNodeTemplate(nt1);
+               assertNotNull(policies);
+               assertEquals(policies.size(), 3);
+       }
+       
+       @Test
+       public void testGetPoliciesOfOriginOfNodeTemplateByToscaPolicyType() {
+               NodeTemplate nt0 = csarHelperServicePolicy.getNodeTemplateByName("al_vf 0");
+               NodeTemplate nt1 = csarHelperServicePolicy.getNodeTemplateByName("al_vf 1");
+               List<Map<String, Object>> policies = csarHelperServicePolicy.getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(nt0, "org.openecomp.policies.placement.Colocate");
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+               
+               policies = csarHelperServicePolicy.getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(nt0, "org.openecomp.policies.placement.Antilocate");
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+               
+               policies = csarHelperServicePolicy.getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(nt0, "org.openecomp.policies.placement.valet.Diversity");
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+               
+               policies = csarHelperServicePolicy.getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(nt1, "org.openecomp.policies.placement.Colocate");
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+               
+               policies = csarHelperServicePolicy.getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(nt1, "org.openecomp.policies.placement.Antilocate");
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+               
+               policies = csarHelperServicePolicy.getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(nt1, "org.openecomp.policies.placement.valet.Diversity");
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+       }
+       
+       @Test
+       public void testGetPolicyTargetNodeTemplatesFromOrigin() {
+               List<Map<String, Object>> nodeTemplates = csarHelperServicePolicy.getPolicyTargetsFromOrigin(csarHelperServicePolicy.getNodeTemplateByName("al_vf 1"),"policy..Colocate..0");
+               assertNotNull(nodeTemplates);
+               assertEquals(nodeTemplates.size(), 2);
+       }
+       
+       @Test
+       public void testGetPoliciesOfNodeTemplate() {
+               NodeTemplate nt0 = csarHelperVfPolicy.getNodeTemplateByName("al_vfc 1");
+               List<Map<String, Map<String, Object>>> policies = csarHelperVfPolicy.getPoliciesOfTarget(nt0);
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+       }
+       
+       @Test
+       public void testGetPoliciesOfNodeTemplateByToscaPolicyType() {
+               NodeTemplate nt0 = csarHelperVfPolicy.getNodeTemplateByName("al_vfc 1");
+               List<Map<String, Map<String, Object>>> policies = csarHelperVfPolicy.getPoliciesOfTargetByToscaPolicyType(nt0, "org.openecomp.policies.placement.Colocate");
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+       }
+       
+       @Test
+       public void testGetPoliciesOfTopologyTemplate() {
+               List<Map<String, Map<String, Object>>> policies = csarHelperVfPolicy.getPoliciesOfTopologyTemplate();
+               assertNotNull(policies);
+               assertEquals(policies.size(), 1);
+       }
+       
+       @Test
+       public void testGetPolicyTargetNodeTemplates() {
+               List<NodeTemplate> nodeTemplates = csarHelperVfPolicy.getPolicyTargetsFromTopologyTemplate("policy..Colocate..0");
+               assertNotNull(nodeTemplates);
+               assertEquals(nodeTemplates.size(), 2);
+       }
 
 }
 
diff --git a/src/test/resources/csars/resource-Policy-csar.csar b/src/test/resources/csars/resource-Policy-csar.csar
new file mode 100644 (file)
index 0000000..d6d7b42
Binary files /dev/null and b/src/test/resources/csars/resource-Policy-csar.csar differ
diff --git a/src/test/resources/csars/service-AlService-csar.csar b/src/test/resources/csars/service-AlService-csar.csar
new file mode 100644 (file)
index 0000000..2532683
Binary files /dev/null and b/src/test/resources/csars/service-AlService-csar.csar differ
index a6be0db..4d0ed8b 100644 (file)
@@ -5,7 +5,7 @@
 
 major=1
 minor=2
-patch=2
+patch=3
 
 base_version=${major}.${minor}.${patch}