aboutsummaryrefslogtreecommitdiffstats
path: root/sdc-tosca-parser
diff options
context:
space:
mode:
authorPavel Aharoni <pa0916@att.com>2017-05-11 19:32:07 +0300
committerPavel Aharoni <pa0916@att.com>2017-05-11 19:32:07 +0300
commit8caef088a9e5467cd0cb462acb217edceedac8fe (patch)
treee47c41688833daf2ac76e53324992be1f15d2e56 /sdc-tosca-parser
parentaf2d8ef12f6b75ae837fffdeaf5d152756cec6d6 (diff)
[SDC-19] VFC to CP props
Change-Id: I217934251fd8eeaf883b60161826306d6b7eaf3c Signed-off-by: Pavel Aharoni <pa0916@att.com>
Diffstat (limited to 'sdc-tosca-parser')
-rw-r--r--sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java57
-rw-r--r--sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java951
-rw-r--r--sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/BasicTest.java66
-rw-r--r--sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserGroupTest.java10
-rw-r--r--sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java27
-rw-r--r--sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserServiceInputTest.java7
-rw-r--r--sdc-tosca-parser/src/test/resources/csars/1service-ServiceWithPorts.csarbin0 -> 47257 bytes
7 files changed, 659 insertions, 459 deletions
diff --git a/sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java b/sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java
index 7cc9022..e1c1802 100644
--- a/sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java
+++ b/sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java
@@ -20,6 +20,7 @@ package org.openecomp.sdc.tosca.parser.api;
import java.util.List;
+import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import org.openecomp.sdc.toscaparser.api.Group;
@@ -72,7 +73,33 @@ 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 getNodeTemplatePropertyLeafValue(NodeTemplate nodeTemplate, String pathToPropertyLeafValue);
-
+
+ /**
+ * Get any property leaf value for node template by full path separated by #.<br>
+ * For example, for node template with this property:<br><br>
+ * network_assignments:<br>
+ &nbsp;&nbsp;ecomp_generated_network_assignment: true<br>
+ &nbsp;&nbsp;is_shared_network: false<br>
+ &nbsp;&nbsp;is_external_network: false<br>
+ &nbsp;&nbsp;ipv4_subnet_default_assignments:<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;use_ipv4: true<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;ip_network_address_plan: 1.2.3.4<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;dhcp_enabled: true<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;ip_version: 4<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;cidr_mask: 24<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;min_subnets_count: 1<br>
+ &nbsp;&nbsp;ipv6_subnet_default_assignments:<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;use_ipv6: false<br><br>
+
+ * calling<br>
+ * getNodeTemplatePropertyLeafValue(nodeTemplate, "network_assignments#ipv6_subnet_default_assignments#use_ipv6")<br>
+ * will return "false".
+ * @param nodeTemplate - nodeTemplate where the property should be looked up.
+ * @param pathToPropertyLeafValue - the full path of the required property.
+ * @return the leaf value as Object, or null if there's no such property, or it's not a leaf.
+ */
+ public Object getNodeTemplatePropertyAsObject(NodeTemplate nodeTemplate, String pathToPropertyLeafValue);
+
/**
* Get any property leaf value for a group definition by full path separated by #.
* Same logic as in {@link #getNodeTemplatePropertyLeafValue(NodeTemplate, String) getNodeTemplatePropertyLeafValue}, only for a group.
@@ -82,6 +109,14 @@ public interface ISdcCsarHelper {
*/
public String getGroupPropertyLeafValue(Group group, String propertyName);
+ /**
+ * Get any property leaf value for a group definition by full path separated by #.
+ * Same logic as in {@link #getNodeTemplatePropertyLeafValue(NodeTemplate, String) getNodeTemplatePropertyLeafValue}, only for a group.
+ * @param group - group where the property should be looked up.
+ * @param propertyName - the name of the required property.
+ * @return the leaf value as Object, or null if there's no such property, or it's not a leaf.
+ */
+ public Object getGroupPropertyAsObject(Group group, String propertyName);
/**
* Get all VL node templates of the CSAR service.
@@ -133,7 +168,16 @@ public interface ISdcCsarHelper {
* @return input leaf value for the service.
*/
public String getServiceInputLeafValueOfDefault(String inputLeafValuePath);
-
+
+ /**
+ * Get input leaf value for the CSAR service, by full path separated by #.<br>
+ * Same logic as in {@link #getNodeTemplatePropertyLeafValue(NodeTemplate, String) getNodeTemplatePropertyLeafValue}, only for an input full path.
+ * The expected format is "input_name#default[optionally #rest_of_path]"
+ * @param inputLeafValuePath by full path separated by #.
+ * @return input leaf value for the service as Service.
+ */
+ public Object getServiceInputLeafValueOfDefaultAsObject(String inputLeafValuePath);
+
/**
* Get the type name of the CSAR service's substitution mappings element.<br>
*
@@ -247,6 +291,15 @@ public interface ISdcCsarHelper {
*/
public List<Input> getServiceInputs();
+
public String getConformanceLevel();
+
+
+ /**
+ * Get the map of CP-related props from
+ * @param vfc - VFC to look for CP-related props.
+ * @return map of CP node template name to a map of CP-related properties key-value for this CP.
+ */
+ public Map<String, Map<String, Object>> getCpPropertiesFromVfc(NodeTemplate vfc);
}
diff --git a/sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java b/sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java
index 9280322..b9ce069 100644
--- a/sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java
+++ b/sdc-tosca-parser/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java
@@ -20,17 +20,14 @@
package org.openecomp.sdc.tosca.parser.impl;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.Map.Entry;
-import java.util.Optional;
import java.util.stream.Collectors;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
+//import org.json.JSONObject;
import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
import org.openecomp.sdc.tosca.parser.utils.GeneralUtility;
import org.openecomp.sdc.tosca.parser.utils.SdcToscaUtility;
@@ -46,109 +43,169 @@ import org.openecomp.sdc.toscaparser.api.parameters.Input;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class SdcCsarHelperImpl implements ISdcCsarHelper {
-
- private static final String PATH_DELIMITER = "#";
- private ToscaTemplate toscaTemplate;
- private static Logger log = LoggerFactory.getLogger(SdcCsarHelperImpl.class.getName());
-
- public SdcCsarHelperImpl(ToscaTemplate toscaTemplate) {
- this.toscaTemplate = toscaTemplate;
- }
-
- @Override
- //Sunny flow - covered with UT, flat and nested
- public String getNodeTemplatePropertyLeafValue(NodeTemplate nodeTemplate, String leafValuePath) {
- if (nodeTemplate == null) {
- log.error("getNodeTemplatePropertyLeafValue - nodeTemplate is null");
- return null;
- }
- if (GeneralUtility.isEmptyString(leafValuePath)) {
- log.error("getNodeTemplatePropertyLeafValue - leafValuePath is null or empty");
- return null;
- }
- log.debug("getNodeTemplatePropertyLeafValue - nodeTemplate is : {}, leafValuePath is {} ", nodeTemplate, leafValuePath);
- String[] split = getSplittedPath(leafValuePath);
- LinkedHashMap<String, Property> properties = nodeTemplate.getProperties();
- log.debug("getNodeTemplatePropertyLeafValue - properties of nodeTemplate are : {}", properties);
- return processProperties(split, properties);
- }
- @Override
- //Sunny flow - covered with UT
- public List<NodeTemplate> getServiceVlList() {
- List<NodeTemplate> serviceVlList = getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), Types.TYPE_VL);
- log.debug("getServiceVlList - the VL list is {}", serviceVlList);
- return serviceVlList;
- }
-
- @Override
- //Sunny flow - covered with UT
- public List<NodeTemplate> getServiceVfList() {
- List<NodeTemplate> serviceVfList = getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), Types.TYPE_VF);
- log.debug("getServiceVfList - the VF list is {}", serviceVfList);
- return serviceVfList;
- }
-
- @Override
- //Sunny flow - covered with UT
- public String getMetadataPropertyValue(Metadata metadata, String metadataPropertyName) {
- if (GeneralUtility.isEmptyString(metadataPropertyName)) {
- log.error("getMetadataPropertyValue - the metadataPropertyName is null or empty");
- return null;
- }
- if (metadata == null) {
- log.error("getMetadataPropertyValue - the metadata is null");
- return null;
- }
- String metadataPropertyValue = metadata.getValue(metadataPropertyName);
- log.debug("getMetadataPropertyValue - metadata is {} metadataPropertyName is {} the value is : {}", metadata, metadataPropertyName , metadataPropertyValue);
- return metadataPropertyValue;
- }
-
-
- @Override
- //Sunny flow - covered with UT
- public List<NodeTemplate> getServiceNodeTemplatesByType(String nodeType) {
- if (GeneralUtility.isEmptyString(nodeType)) {
- log.error("getServiceNodeTemplatesByType - nodeType - is null or empty");
- return new ArrayList<>();
- }
-
- List<NodeTemplate> res = new ArrayList<>();
- List<NodeTemplate> nodeTemplates = toscaTemplate.getNodeTemplates();
- for (NodeTemplate nodeTemplate : nodeTemplates){
- if (nodeType.equals(nodeTemplate.getTypeDefinition().getType())){
- res.add(nodeTemplate);
- }
- }
-
- log.debug("getServiceNodeTemplatesByType - For Node Type : {} - NodeTemplate list value is: {}", nodeType, res);
- return res;
- }
-
- @Override
- //Sunny flow - covered with UT
- public List<NodeTemplate> getVfcListByVf(String vfCustomizationId) {
- if (GeneralUtility.isEmptyString(vfCustomizationId)) {
- log.error("getVfcListByVf - vfCustomizationId - is null or empty");
- return new ArrayList<>();
- }
+import static org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID;
- List<NodeTemplate> serviceVfList = getServiceVfList();
- NodeTemplate vfInstance = getNodeTemplateByCustomizationUuid(serviceVfList, vfCustomizationId);
- log.debug("getVfcListByVf - serviceVfList value: {}, vfInstance value: {}", serviceVfList, vfInstance);
- return getNodeTemplateBySdcType(vfInstance, Types.TYPE_VFC);
- }
+public class SdcCsarHelperImpl implements ISdcCsarHelper {
- @Override
- //Sunny flow - covered with UT
- public List<Group> getVfModulesByVf(String vfCustomizationUuid) {
- List<NodeTemplate> serviceVfList = getServiceVfList();
- log.debug("getVfModulesByVf - VF list is {}", serviceVfList);
- NodeTemplate nodeTemplateByCustomizationUuid = getNodeTemplateByCustomizationUuid(serviceVfList, vfCustomizationUuid);
- log.debug("getVfModulesByVf - getNodeTemplateByCustomizationUuid is {}, customizationUuid {}", nodeTemplateByCustomizationUuid, vfCustomizationUuid);
- if (nodeTemplateByCustomizationUuid != null){
- /*SubstitutionMappings substitutionMappings = nodeTemplateByCustomizationUuid.getSubstitutionMappings();
+ private static final String PATH_DELIMITER = "#";
+ private static final String PREFIX = "port_";
+ private static final String[] SUFFIX = new String[]{"_network_role_tag", "_ip_requirements", "_subnetpoolid"};
+ private ToscaTemplate toscaTemplate;
+ private static Logger log = LoggerFactory.getLogger(SdcCsarHelperImpl.class.getName());
+
+ public SdcCsarHelperImpl(ToscaTemplate toscaTemplate) {
+ this.toscaTemplate = toscaTemplate;
+ }
+
+ @Override
+ //Sunny flow - covered with UT, flat and nested
+ public String getNodeTemplatePropertyLeafValue(NodeTemplate nodeTemplate, String leafValuePath) {
+ if (nodeTemplate == null) {
+ log.error("getNodeTemplatePropertyLeafValue - nodeTemplate is null");
+ return null;
+ }
+ if (GeneralUtility.isEmptyString(leafValuePath)) {
+ log.error("getNodeTemplatePropertyLeafValue - leafValuePath is null or empty");
+ return null;
+ }
+ log.debug("getNodeTemplatePropertyLeafValue - nodeTemplate is : {}, leafValuePath is {} ", nodeTemplate, leafValuePath);
+ String[] split = getSplittedPath(leafValuePath);
+ LinkedHashMap<String, Property> properties = nodeTemplate.getProperties();
+ log.debug("getNodeTemplatePropertyLeafValue - properties of nodeTemplate are : {}", properties);
+ Object property = processProperties(split, properties);
+ return property == null ? null : String.valueOf(property);
+ }
+
+ @Override
+ public Object getNodeTemplatePropertyAsObject(NodeTemplate nodeTemplate, String leafValuePath) {
+ if (nodeTemplate == null) {
+ log.error("getNodeTemplatePropertyAsObject - nodeTemplate is null");
+ return null;
+ }
+ if (GeneralUtility.isEmptyString(leafValuePath)) {
+ log.error("getNodeTemplatePropertyAsObject - leafValuePath is null or empty");
+ return null;
+ }
+ log.debug("getNodeTemplatePropertyAsObject - nodeTemplate is : {}, leafValuePath is {} ", nodeTemplate, leafValuePath);
+ String[] split = getSplittedPath(leafValuePath);
+ LinkedHashMap<String, Property> properties = nodeTemplate.getProperties();
+ log.debug("getNodeTemplatePropertyAsObject - properties of nodeTemplate are : {}", properties);
+ return processProperties(split, properties);
+ }
+
+ public Map<String, Map<String, Object>> getCpPropertiesFromVfc(NodeTemplate vfc) {
+
+ List<String> paths = new ArrayList<>();
+ paths.add("network_role_tag");
+ paths.add("ip_requirements#ip_count_required#count");
+ paths.add("ip_requirements#dhcp_enabled");
+ paths.add("ip_requirements#ip_version");
+ paths.add("subnetpoolid");
+
+ Map<String, Property> props = vfc.getProperties();
+
+ Map<String, Map<String, Object>> cps = new HashMap<>();
+
+ for (Map.Entry<String, Property> entry : props.entrySet()) {
+ String fullCpName = entry.getKey();
+
+ if (fullCpName.startsWith(PREFIX) &&
+ Arrays.stream(SUFFIX).parallel().anyMatch(fullCpName::endsWith))
+ {
+ //this is CP - get all it's properties according to paths list
+ String cpName = fullCpName.replaceAll("^("+PREFIX+")", "").replaceAll("("+String.join("|", SUFFIX)+")$", "");
+ cps.put(cpName, new HashMap<>());
+ for (String path: paths) {
+ String fullPathToSearch = PREFIX + cpName + "_" + path;
+ String value = getNodeTemplatePropertyLeafValue(vfc, fullPathToSearch);
+ if (value != null) {
+ value = StringUtils.stripStart(value, "[");
+ value = StringUtils.stripEnd(value, "]");
+ cps.get(cpName).put(path, value);
+ }
+ }
+ }
+ }
+
+ return cps;
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<NodeTemplate> getServiceVlList() {
+ List<NodeTemplate> serviceVlList = getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), Types.TYPE_VL);
+ log.debug("getServiceVlList - the VL list is {}", serviceVlList);
+ return serviceVlList;
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<NodeTemplate> getServiceVfList() {
+ List<NodeTemplate> serviceVfList = getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), Types.TYPE_VF);
+ log.debug("getServiceVfList - the VF list is {}", serviceVfList);
+ return serviceVfList;
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public String getMetadataPropertyValue(Metadata metadata, String metadataPropertyName) {
+ if (GeneralUtility.isEmptyString(metadataPropertyName)) {
+ log.error("getMetadataPropertyValue - the metadataPropertyName is null or empty");
+ return null;
+ }
+ if (metadata == null) {
+ log.error("getMetadataPropertyValue - the metadata is null");
+ return null;
+ }
+ String metadataPropertyValue = metadata.getValue(metadataPropertyName);
+ log.debug("getMetadataPropertyValue - metadata is {} metadataPropertyName is {} the value is : {}", metadata, metadataPropertyName, metadataPropertyValue);
+ return metadataPropertyValue;
+ }
+
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<NodeTemplate> getServiceNodeTemplatesByType(String nodeType) {
+ if (GeneralUtility.isEmptyString(nodeType)) {
+ log.error("getServiceNodeTemplatesByType - nodeType - is null or empty");
+ return new ArrayList<>();
+ }
+
+ List<NodeTemplate> res = new ArrayList<>();
+ List<NodeTemplate> nodeTemplates = toscaTemplate.getNodeTemplates();
+ for (NodeTemplate nodeTemplate : nodeTemplates) {
+ if (nodeType.equals(nodeTemplate.getTypeDefinition().getType())) {
+ res.add(nodeTemplate);
+ }
+ }
+
+ log.debug("getServiceNodeTemplatesByType - For Node Type : {} - NodeTemplate list value is: {}", nodeType, res);
+ return res;
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<NodeTemplate> getVfcListByVf(String vfCustomizationId) {
+ if (GeneralUtility.isEmptyString(vfCustomizationId)) {
+ log.error("getVfcListByVf - vfCustomizationId - is null or empty");
+ return new ArrayList<>();
+ }
+
+ List<NodeTemplate> serviceVfList = getServiceVfList();
+ NodeTemplate vfInstance = getNodeTemplateByCustomizationUuid(serviceVfList, vfCustomizationId);
+ log.debug("getVfcListByVf - serviceVfList value: {}, vfInstance value: {}", serviceVfList, vfInstance);
+ return getNodeTemplateBySdcType(vfInstance, Types.TYPE_VFC);
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<Group> getVfModulesByVf(String vfCustomizationUuid) {
+ List<NodeTemplate> serviceVfList = getServiceVfList();
+ log.debug("getVfModulesByVf - VF list is {}", serviceVfList);
+ NodeTemplate nodeTemplateByCustomizationUuid = getNodeTemplateByCustomizationUuid(serviceVfList, vfCustomizationUuid);
+ log.debug("getVfModulesByVf - getNodeTemplateByCustomizationUuid is {}, customizationUuid {}", nodeTemplateByCustomizationUuid, vfCustomizationUuid);
+ if (nodeTemplateByCustomizationUuid != null) {
+ /*SubstitutionMappings substitutionMappings = nodeTemplateByCustomizationUuid.getSubstitutionMappings();
if (substitutionMappings != null){
List<Group> groups = substitutionMappings.getGroups();
if (groups != null){
@@ -157,255 +214,307 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
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
- .stream()
- .filter(x -> "org.openecomp.groups.VfModule".equals(x.getTypeDefinition().getType()) && x.getName().startsWith(normaliseComponentInstanceName))
- .collect(Collectors.toList());
- log.debug("getVfModulesByVf - VfModules are {}", collect);
- return collect;
- }
- }
- return new ArrayList<>();
- }
-
- @Override
- //Sunny flow - covered with UT
- public String getServiceInputLeafValueOfDefault(String inputLeafValuePath) {
- if (GeneralUtility.isEmptyString(inputLeafValuePath)) {
- log.error("getServiceInputLeafValueOfDefault - inputLeafValuePath is null or empty");
- return null;
- }
-
- String[] split = getSplittedPath(inputLeafValuePath);
- if (split.length < 2 || !split[1].equals("default")){
- log.error("getServiceInputLeafValue - inputLeafValuePath should be of format <input name>#default[optionally #<rest of path>] ");
- return null;
- }
-
- List<Input> inputs = toscaTemplate.getInputs();
- log.debug("getServiceInputLeafValue - the leafValuePath is {} , the inputs are {}", inputLeafValuePath, inputs);
- if (inputs != null){
- Optional<Input> findFirst = inputs.stream().filter(x -> x.getName().equals(split[0])).findFirst();
- if (findFirst.isPresent()){
- log.debug("getServiceInputLeafValue - find first item is {}", findFirst.get());
- Input input = findFirst.get();
- Object current = input.getDefault();
- return iterateProcessPath(2, current, split);
- }
- }
- log.error("getServiceInputLeafValue - value not found");
- return null;
- }
-
- private String iterateProcessPath(Integer index, Object current, String[] split) {
- if (current == null) {
- log.error("iterateProcessPath - this input has no default");
- return null;
- }
- if (split.length > index) {
- for (int i = index; i < split.length; i++) {
- if (current instanceof Map){
- current = ((Map<String, Object>)current).get(split[i]);
- } else {
- log.error("iterateProcessPath - found an unexpected leaf where expected to find a complex type");
- return null;
- }
- }
- }
- if (current != null) {
- log.debug("iterateProcessPath - the input default leaf value is {}", String.valueOf(current));
- return String.valueOf(current);
- }
- log.error("iterateProcessPath - Path not Found");
- return null;
- }
-
- private String[] getSplittedPath(String inputLeafValuePath) {
- return inputLeafValuePath.split(PATH_DELIMITER);
- }
-
-
- @Override
- //Sunny flow - covered with UT
- public String getServiceSubstitutionMappingsTypeName() {
- SubstitutionMappings substitutionMappings = toscaTemplate.getTopologyTemplate().getSubstitutionMappings();
- if (substitutionMappings == null) {
- log.debug("getServiceSubstitutionMappingsTypeName - No Substitution Mappings defined");
- return null;
- }
- log.debug("getServiceSubstitutionMappingsTypeName - SubstitutionMappings value: {}", substitutionMappings);
-
- NodeType nodeType = substitutionMappings.getNodeDefinition();
- if (nodeType == null) {
- log.debug("getServiceSubstitutionMappingsTypeName - No Substitution Mappings node defined");
- return null;
- }
- log.debug("getServiceSubstitutionMappingsTypeName - nodeType value: {}", nodeType);
-
- return nodeType.getType();
- }
-
- @Override
- //Sunny flow - covered with UT
- public Metadata getServiceMetadata() {
- return toscaTemplate.getMetaData();
- }
-
- @Override
- //Sunny flow - covered with UT
- public List<Input> getServiceInputs() {
- return toscaTemplate.getInputs();
- }
-
- @Override
- //Sunny flow - covered with UT
- public String getGroupPropertyLeafValue(Group group, String leafValuePath) {
- if (group == null) {
- log.error("getGroupPropertyLeafValue - group is null");
- return null;
- }
-
- if (GeneralUtility.isEmptyString(leafValuePath)) {
- log.error("getGroupPropertyLeafValue - leafValuePath is null or empty");
- return null;
- }
-
- String[] split = getSplittedPath(leafValuePath);
- LinkedHashMap<String,Property> properties = group.getProperties();
- return processProperties(split, properties);
- }
-
- @Override
- //Sunny flow - covered with UT
- public List<NodeTemplate> getCpListByVf(String vfCustomizationId) {
- List<NodeTemplate> cpList = new ArrayList<>();
- if (GeneralUtility.isEmptyString(vfCustomizationId)){
- log.error("getCpListByVf vfCustomizationId string is empty");
- return cpList;
- }
-
- List<NodeTemplate> serviceVfList = getServiceVfList();
- if (serviceVfList == null || serviceVfList.size() == 0){
- log.error("getCpListByVf Vfs not exist for vfCustomizationId {}",vfCustomizationId);
- return cpList;
- }
- NodeTemplate vfInstance = getNodeTemplateByCustomizationUuid(serviceVfList, vfCustomizationId);
- log.debug("getCpListByVf vf list is {}", vfInstance);
- if (vfInstance == null) {
- log.debug("getCpListByVf vf list is null");
- return cpList;
- }
- cpList = getNodeTemplateBySdcType(vfInstance, Types.TYPE_CP);
- if(cpList == null || cpList.size()==0)
- log.debug("getCpListByVf cps not exist for vfCustomizationId {}",vfCustomizationId);
- return cpList;
- }
-
- @Override
- //Sunny flow - covered with UT
- public List<NodeTemplate> getMembersOfVfModule(NodeTemplate vf, Group serviceLevelVfModule) {
- if (vf == null) {
- log.error("getMembersOfVfModule - vf is null");
- return new ArrayList<>();
- }
-
- if (serviceLevelVfModule == null || serviceLevelVfModule.getMetadata() == null || serviceLevelVfModule.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID) == null) {
- log.error("getMembersOfVfModule - vfModule or its metadata is null. Cannot match a VF group based on invariantUuid from missing metadata.");
- return new ArrayList<>();
- }
-
-
- SubstitutionMappings substitutionMappings = vf.getSubMappingToscaTemplate();
- if (substitutionMappings != null){
- List<Group> groups = substitutionMappings.getGroups();
- if (groups != null){
- Optional<Group> findFirst = groups
- .stream()
- .filter(x -> (x.getMetadata() != null && serviceLevelVfModule.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID).equals(x.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)))).findFirst();
- if (findFirst.isPresent()){
- log.debug("getMembersOfVfModule - Found VF level group with vfModuleModelInvariantUUID {}", serviceLevelVfModule.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID));
- List<String> members = findFirst.get().getMembers();
- log.debug("getMembersOfVfModule - members section is {}", members);
- if (members != null){
- List<NodeTemplate> collect = substitutionMappings.getNodeTemplates().stream().filter(x -> members.contains(x.getName())).collect(Collectors.toList());
- log.debug("getMembersOfVfModule - Node templates are {}", collect);
- return collect;
- }
- }
- }
- }
- return new ArrayList<>();
- }
-
- @Override
- //Sunny flow - covered with UT
- public List<Pair<NodeTemplate, NodeTemplate>> getNodeTemplatePairsByReqName(
- List<NodeTemplate> listOfReqNodeTemplates, List<NodeTemplate> listOfCapNodeTemplates, String reqName) {
- if (listOfReqNodeTemplates == null || listOfCapNodeTemplates == null || reqName == null){
- //TODO error message
- return new ArrayList<>();
- }
-
- List<Pair<NodeTemplate, NodeTemplate>> pairsList = new ArrayList<>();
-
- if (listOfReqNodeTemplates != null){
- for (NodeTemplate reqNodeTemplate : listOfReqNodeTemplates) {
- List<Object> requirements = reqNodeTemplate.getRequirements();
- for (Object reqEntry : requirements) {
- LinkedHashMap<String, Object> reqEntryHash = (LinkedHashMap<String, Object>) reqEntry;
- Map<String, Object> reqEntryMap = (Map<String, Object>) reqEntryHash.get(reqName);
- if (reqEntryMap != null){
- Object node = reqEntryMap.get("node");
- if (node != null){
- String nodeString = (String)node;
- Optional<NodeTemplate> findFirst = listOfCapNodeTemplates.stream().filter(x -> x.getName().equals(nodeString)).findFirst();
- if (findFirst.isPresent()){
- pairsList.add(new ImmutablePair<NodeTemplate, NodeTemplate>(reqNodeTemplate, findFirst.get()));
- }
- }
- }
- }
- }
- }
- return pairsList;
- }
-
- @Override
- //Sunny flow - covered with UT
- //TODO constant strings
- public List<NodeTemplate> getAllottedResources() {
- List<NodeTemplate> nodeTemplates = null;
- nodeTemplates = toscaTemplate.getTopologyTemplate().getNodeTemplates();
- if (nodeTemplates.isEmpty()) {
- log.error("getAllottedResources nodeTemplates not exist");
- }
- nodeTemplates = nodeTemplates.stream().filter(
- x -> x.getMetaData() != null && x.getMetaData().getValue("category").equals("Allotted Resource"))
- .collect(Collectors.toList());
- if (nodeTemplates.isEmpty()) {
- log.debug("getAllottedResources - allotted resources not exist");
- } else {
- log.debug("getAllottedResources - the allotted resources list is {}", nodeTemplates);
- }
-
- return nodeTemplates;
- }
- @Override
- //Sunny flow - covered with UT
- public String getTypeOfNodeTemplate(NodeTemplate nodeTemplate) {
- if(nodeTemplate == null){
-
- log.error("getTypeOfNodeTemplate nodeTemplate is null");
- return null;
- }
- log.debug("getTypeOfNodeTemplate node template type is {}",nodeTemplate.getTypeDefinition().getType());
- return nodeTemplate.getTypeDefinition().getType();
- }
+ 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
+ .stream()
+ .filter(x -> "org.openecomp.groups.VfModule".equals(x.getTypeDefinition().getType()) && x.getName().startsWith(normaliseComponentInstanceName))
+ .collect(Collectors.toList());
+ log.debug("getVfModulesByVf - VfModules are {}", collect);
+ return collect;
+ }
+ }
+ return new ArrayList<>();
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public String getServiceInputLeafValueOfDefault(String inputLeafValuePath) {
+ if (GeneralUtility.isEmptyString(inputLeafValuePath)) {
+ log.error("getServiceInputLeafValueOfDefault - inputLeafValuePath is null or empty");
+ return null;
+ }
+
+ String[] split = getSplittedPath(inputLeafValuePath);
+ if (split.length < 2 || !split[1].equals("default")) {
+ log.error("getServiceInputLeafValue - inputLeafValuePath should be of format <input name>#default[optionally #<rest of path>] ");
+ return null;
+ }
+
+ List<Input> inputs = toscaTemplate.getInputs();
+ log.debug("getServiceInputLeafValue - the leafValuePath is {} , the inputs are {}", inputLeafValuePath, inputs);
+ if (inputs != null) {
+ Optional<Input> findFirst = inputs.stream().filter(x -> x.getName().equals(split[0])).findFirst();
+ if (findFirst.isPresent()) {
+ log.debug("getServiceInputLeafValue - find first item is {}", findFirst.get());
+ Input input = findFirst.get();
+ Object current = input.getDefault();
+ Object property = iterateProcessPath(2, current, split);
+ return property == null ? null : String.valueOf(property);
+ }
+ }
+ log.error("getServiceInputLeafValue - value not found");
+ return null;
+ }
+
+ @Override
+ public Object getServiceInputLeafValueOfDefaultAsObject(String inputLeafValuePath) {
+ if (GeneralUtility.isEmptyString(inputLeafValuePath)) {
+ log.error("getServiceInputLeafValueOfDefaultAsObject - inputLeafValuePath is null or empty");
+ return null;
+ }
+
+ String[] split = getSplittedPath(inputLeafValuePath);
+ if (split.length < 2 || !split[1].equals("default")) {
+ log.error("getServiceInputLeafValueOfDefaultAsObject - inputLeafValuePath should be of format <input name>#default[optionally #<rest of path>] ");
+ return null;
+ }
+
+ List<Input> inputs = toscaTemplate.getInputs();
+ log.debug("getServiceInputLeafValueOfDefaultAsObject - the leafValuePath is {} , the inputs are {}", inputLeafValuePath, inputs);
+ if (inputs != null) {
+ Optional<Input> findFirst = inputs.stream().filter(x -> x.getName().equals(split[0])).findFirst();
+ if (findFirst.isPresent()) {
+ log.debug("getServiceInputLeafValueOfDefaultAsObject - find first item is {}", findFirst.get());
+ Input input = findFirst.get();
+ Object current = input.getDefault();
+ return iterateProcessPath(2, current, split);
+ }
+ }
+ log.error("getServiceInputLeafValueOfDefaultAsObject - value not found");
+ return null;
+ }
+
+ private Object iterateProcessPath(Integer index, Object current, String[] split) {
+ if (current == null) {
+ log.error("iterateProcessPath - this input has no default");
+ return null;
+ }
+ if (split.length > index) {
+ for (int i = index; i < split.length; i++) {
+ if (current instanceof Map) {
+ current = ((Map<String, Object>) current).get(split[i]);
+ } else if (current instanceof List) {
+ current = ((List) current).get(0);
+ i--;
+ }
+ else {
+ log.error("iterateProcessPath - found an unexpected leaf where expected to find a complex type");
+ return null;
+ }
+ }
+ }
+ if (current != null) {
+ log.debug("iterateProcessPath - the input default leaf value is {}", String.valueOf(current));
+ return current;
+ }
+ log.error("iterateProcessPath - Path not Found");
+ return null;
+ }
+
+ private String[] getSplittedPath(String inputLeafValuePath) {
+ return inputLeafValuePath.split(PATH_DELIMITER);
+ }
+
+
+ @Override
+ //Sunny flow - covered with UT
+ public String getServiceSubstitutionMappingsTypeName() {
+ SubstitutionMappings substitutionMappings = toscaTemplate.getTopologyTemplate().getSubstitutionMappings();
+ if (substitutionMappings == null) {
+ log.debug("getServiceSubstitutionMappingsTypeName - No Substitution Mappings defined");
+ return null;
+ }
+ log.debug("getServiceSubstitutionMappingsTypeName - SubstitutionMappings value: {}", substitutionMappings);
+
+ NodeType nodeType = substitutionMappings.getNodeDefinition();
+ if (nodeType == null) {
+ log.debug("getServiceSubstitutionMappingsTypeName - No Substitution Mappings node defined");
+ return null;
+ }
+ log.debug("getServiceSubstitutionMappingsTypeName - nodeType value: {}", nodeType);
+
+ return nodeType.getType();
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public Metadata getServiceMetadata() {
+ return toscaTemplate.getMetaData();
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<Input> getServiceInputs() {
+ return toscaTemplate.getInputs();
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public String getGroupPropertyLeafValue(Group group, String leafValuePath) {
+ if (group == null) {
+ log.error("getGroupPropertyLeafValue - group is null");
+ return null;
+ }
+
+ if (GeneralUtility.isEmptyString(leafValuePath)) {
+ log.error("getGroupPropertyLeafValue - leafValuePath is null or empty");
+ return null;
+ }
+
+ String[] split = getSplittedPath(leafValuePath);
+ LinkedHashMap<String, Property> properties = group.getProperties();
+ Object property = processProperties(split, properties);
+ return property == null ? null : String.valueOf(property);
+ }
+
+ @Override
+ public Object getGroupPropertyAsObject(Group group, String leafValuePath) {
+ if (group == null) {
+ log.error("getGroupPropertyAsObject - group is null");
+ return null;
+ }
+
+ if (GeneralUtility.isEmptyString(leafValuePath)) {
+ log.error("getGroupPropertyAsObject - leafValuePath is null or empty");
+ return null;
+ }
+
+ String[] split = getSplittedPath(leafValuePath);
+ LinkedHashMap<String, Property> properties = group.getProperties();
+ return processProperties(split, properties);
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<NodeTemplate> getCpListByVf(String vfCustomizationId) {
+ List<NodeTemplate> cpList = new ArrayList<>();
+ if (GeneralUtility.isEmptyString(vfCustomizationId)) {
+ log.error("getCpListByVf vfCustomizationId string is empty");
+ return cpList;
+ }
+
+ List<NodeTemplate> serviceVfList = getServiceVfList();
+ if (serviceVfList == null || serviceVfList.size() == 0) {
+ log.error("getCpListByVf Vfs not exist for vfCustomizationId {}", vfCustomizationId);
+ return cpList;
+ }
+ NodeTemplate vfInstance = getNodeTemplateByCustomizationUuid(serviceVfList, vfCustomizationId);
+ log.debug("getCpListByVf vf list is {}", vfInstance);
+ if (vfInstance == null) {
+ log.debug("getCpListByVf vf list is null");
+ return cpList;
+ }
+ cpList = getNodeTemplateBySdcType(vfInstance, Types.TYPE_CP);
+ if (cpList == null || cpList.size() == 0)
+ log.debug("getCpListByVf cps not exist for vfCustomizationId {}", vfCustomizationId);
+ return cpList;
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<NodeTemplate> getMembersOfVfModule(NodeTemplate vf, Group serviceLevelVfModule) {
+ if (vf == null) {
+ log.error("getMembersOfVfModule - vf is null");
+ return new ArrayList<>();
+ }
+
+ if (serviceLevelVfModule == null || serviceLevelVfModule.getMetadata() == null || serviceLevelVfModule.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID) == null) {
+ log.error("getMembersOfVfModule - vfModule or its metadata is null. Cannot match a VF group based on invariantUuid from missing metadata.");
+ return new ArrayList<>();
+ }
+
+
+ SubstitutionMappings substitutionMappings = vf.getSubMappingToscaTemplate();
+ if (substitutionMappings != null) {
+ List<Group> groups = substitutionMappings.getGroups();
+ if (groups != null) {
+ Optional<Group> findFirst = groups
+ .stream()
+ .filter(x -> (x.getMetadata() != null && serviceLevelVfModule.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID).equals(x.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)))).findFirst();
+ if (findFirst.isPresent()) {
+ log.debug("getMembersOfVfModule - Found VF level group with vfModuleModelInvariantUUID {}", serviceLevelVfModule.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID));
+ List<String> members = findFirst.get().getMembers();
+ log.debug("getMembersOfVfModule - members section is {}", members);
+ if (members != null) {
+ List<NodeTemplate> collect = substitutionMappings.getNodeTemplates().stream().filter(x -> members.contains(x.getName())).collect(Collectors.toList());
+ log.debug("getMembersOfVfModule - Node templates are {}", collect);
+ return collect;
+ }
+ }
+ }
+ }
+ return new ArrayList<>();
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public List<Pair<NodeTemplate, NodeTemplate>> getNodeTemplatePairsByReqName(
+ List<NodeTemplate> listOfReqNodeTemplates, List<NodeTemplate> listOfCapNodeTemplates, String reqName) {
+ if (listOfReqNodeTemplates == null || listOfCapNodeTemplates == null || reqName == null) {
+ //TODO error message
+ return new ArrayList<>();
+ }
+
+ List<Pair<NodeTemplate, NodeTemplate>> pairsList = new ArrayList<>();
+
+ if (listOfReqNodeTemplates != null) {
+ for (NodeTemplate reqNodeTemplate : listOfReqNodeTemplates) {
+ List<Object> requirements = reqNodeTemplate.getRequirements();
+ for (Object reqEntry : requirements) {
+ LinkedHashMap<String, Object> reqEntryHash = (LinkedHashMap<String, Object>) reqEntry;
+ Map<String, Object> reqEntryMap = (Map<String, Object>) reqEntryHash.get(reqName);
+ if (reqEntryMap != null) {
+ Object node = reqEntryMap.get("node");
+ if (node != null) {
+ String nodeString = (String) node;
+ Optional<NodeTemplate> findFirst = listOfCapNodeTemplates.stream().filter(x -> x.getName().equals(nodeString)).findFirst();
+ if (findFirst.isPresent()) {
+ pairsList.add(new ImmutablePair<NodeTemplate, NodeTemplate>(reqNodeTemplate, findFirst.get()));
+ }
+ }
+ }
+ }
+ }
+ }
+ return pairsList;
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ //TODO constant strings
+ public List<NodeTemplate> getAllottedResources() {
+ List<NodeTemplate> nodeTemplates = null;
+ nodeTemplates = toscaTemplate.getTopologyTemplate().getNodeTemplates();
+ if (nodeTemplates.isEmpty()) {
+ log.error("getAllottedResources nodeTemplates not exist");
+ }
+ nodeTemplates = nodeTemplates.stream().filter(
+ x -> x.getMetaData() != null && x.getMetaData().getValue("category").equals("Allotted Resource"))
+ .collect(Collectors.toList());
+ if (nodeTemplates.isEmpty()) {
+ log.debug("getAllottedResources - allotted resources not exist");
+ } else {
+ log.debug("getAllottedResources - the allotted resources list is {}", nodeTemplates);
+ }
+
+ return nodeTemplates;
+ }
+
+ @Override
+ //Sunny flow - covered with UT
+ public String getTypeOfNodeTemplate(NodeTemplate nodeTemplate) {
+ if (nodeTemplate == null) {
+
+ log.error("getTypeOfNodeTemplate nodeTemplate is null");
+ return null;
+ }
+ log.debug("getTypeOfNodeTemplate node template type is {}", nodeTemplate.getTypeDefinition().getType());
+ return nodeTemplate.getTypeDefinition().getType();
+ }
@Override
public String getConformanceLevel() {
@@ -426,69 +535,69 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper {
}
}
- /************************************* helper functions ***********************************/
- private List<NodeTemplate> getNodeTemplateBySdcType(NodeTemplate nodeTemplate, String sdcType){
- if (nodeTemplate == null) {
- log.error("getNodeTemplateBySdcType - nodeTemplate is null or empty");
- return new ArrayList<>();
- }
-
- if (GeneralUtility.isEmptyString(sdcType)) {
- log.error("getNodeTemplateBySdcType - sdcType is null or empty");
- return new ArrayList<>();
- }
-
- SubstitutionMappings substitutionMappings = nodeTemplate.getSubMappingToscaTemplate();
-
- if (substitutionMappings != null) {
- List<NodeTemplate> nodeTemplates = substitutionMappings.getNodeTemplates();
- if (nodeTemplates != null && nodeTemplates.size() > 0)
- return nodeTemplates.stream().filter(x -> (x.getMetaData() != null && sdcType.equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE)))).collect(Collectors.toList());
- else
- log.debug("getNodeTemplateBySdcType - SubstitutionMappings' node Templates not exist");
- } else
- log.debug("getNodeTemplateBySdcType - SubstitutionMappings not exist");
-
- return new ArrayList<>();
- }
-
- private List<NodeTemplate> getNodeTemplateBySdcType(TopologyTemplate topologyTemplate, String sdcType){
- if (GeneralUtility.isEmptyString(sdcType)) {
- log.error("getNodeTemplateBySdcType - sdcType is null or empty");
- return new ArrayList<>();
- }
-
- if (topologyTemplate == null) {
- log.error("getNodeTemplateBySdcType - topologyTemplate is null");
- return new ArrayList<>();
- }
-
- List<NodeTemplate> nodeTemplates = topologyTemplate.getNodeTemplates();
-
- if (nodeTemplates != null && nodeTemplates.size() > 0)
- return nodeTemplates.stream().filter(x -> (x.getMetaData() != null && sdcType.equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE)))).collect(Collectors.toList());
-
- log.debug("getNodeTemplateBySdcType - topologyTemplate's nodeTemplates not exist");
- return new ArrayList<>();
- }
-
- //Assumed to be unique property for the list
- private NodeTemplate getNodeTemplateByCustomizationUuid(List<NodeTemplate> nodeTemplates, String customizationId){
- log.debug("getNodeTemplateByCustomizationUuid - nodeTemplates {}, customizationId {}", nodeTemplates, customizationId);
- Optional<NodeTemplate> findFirst = nodeTemplates.stream().filter(x -> (x.getMetaData() != null && customizationId.equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)))).findFirst();
- return findFirst.isPresent() ? findFirst.get() : null;
- }
-
- private String processProperties(String[] split, LinkedHashMap<String, Property> properties) {
- log.debug("processProperties - the leafValuePath is {} , the properties are {}", Arrays.toString(split), properties.toString());
- Optional<Entry<String, Property>> findFirst = properties.entrySet().stream().filter(x -> x.getKey().equals(split[0])).findFirst();
- if (findFirst.isPresent()){
- log.debug("processProperties - find first item is {}", findFirst.get());
- Property property = findFirst.get().getValue();
- Object current = property.getValue();
- return iterateProcessPath(1, current, split);
- }
- log.error("processProperties - Dont find property");
- return null;
- }
+ /************************************* helper functions ***********************************/
+ private List<NodeTemplate> getNodeTemplateBySdcType(NodeTemplate nodeTemplate, String sdcType) {
+ if (nodeTemplate == null) {
+ log.error("getNodeTemplateBySdcType - nodeTemplate is null or empty");
+ return new ArrayList<>();
+ }
+
+ if (GeneralUtility.isEmptyString(sdcType)) {
+ log.error("getNodeTemplateBySdcType - sdcType is null or empty");
+ return new ArrayList<>();
+ }
+
+ SubstitutionMappings substitutionMappings = nodeTemplate.getSubMappingToscaTemplate();
+
+ if (substitutionMappings != null) {
+ List<NodeTemplate> nodeTemplates = substitutionMappings.getNodeTemplates();
+ if (nodeTemplates != null && nodeTemplates.size() > 0)
+ return nodeTemplates.stream().filter(x -> (x.getMetaData() != null && sdcType.equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE)))).collect(Collectors.toList());
+ else
+ log.debug("getNodeTemplateBySdcType - SubstitutionMappings' node Templates not exist");
+ } else
+ log.debug("getNodeTemplateBySdcType - SubstitutionMappings not exist");
+
+ return new ArrayList<>();
+ }
+
+ private List<NodeTemplate> getNodeTemplateBySdcType(TopologyTemplate topologyTemplate, String sdcType) {
+ if (GeneralUtility.isEmptyString(sdcType)) {
+ log.error("getNodeTemplateBySdcType - sdcType is null or empty");
+ return new ArrayList<>();
+ }
+
+ if (topologyTemplate == null) {
+ log.error("getNodeTemplateBySdcType - topologyTemplate is null");
+ return new ArrayList<>();
+ }
+
+ List<NodeTemplate> nodeTemplates = topologyTemplate.getNodeTemplates();
+
+ if (nodeTemplates != null && nodeTemplates.size() > 0)
+ return nodeTemplates.stream().filter(x -> (x.getMetaData() != null && sdcType.equals(x.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE)))).collect(Collectors.toList());
+
+ log.debug("getNodeTemplateBySdcType - topologyTemplate's nodeTemplates not exist");
+ return new ArrayList<>();
+ }
+
+ //Assumed to be unique property for the list
+ private NodeTemplate getNodeTemplateByCustomizationUuid(List<NodeTemplate> nodeTemplates, String customizationId) {
+ log.debug("getNodeTemplateByCustomizationUuid - nodeTemplates {}, customizationId {}", nodeTemplates, customizationId);
+ Optional<NodeTemplate> findFirst = nodeTemplates.stream().filter(x -> (x.getMetaData() != null && customizationId.equals(x.getMetaData().getValue(PROPERTY_NAME_CUSTOMIZATIONUUID)))).findFirst();
+ return findFirst.isPresent() ? findFirst.get() : null;
+ }
+
+ private Object processProperties(String[] split, LinkedHashMap<String, Property> properties) {
+ log.debug("processProperties - the leafValuePath is {} , the properties are {}", Arrays.toString(split), properties.toString());
+ Optional<Entry<String, Property>> findFirst = properties.entrySet().stream().filter(x -> x.getKey().equals(split[0])).findFirst();
+ if (findFirst.isPresent()) {
+ log.debug("processProperties - find first item is {}", findFirst.get());
+ Property property = findFirst.get().getValue();
+ Object current = property.getValue();
+ return iterateProcessPath(1, current, split);
+ }
+ log.error("processProperties - property not found");
+ return null;
+ }
}
diff --git a/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/BasicTest.java b/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/BasicTest.java
index 373ff97..0eb58f8 100644
--- a/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/BasicTest.java
+++ b/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/BasicTest.java
@@ -1,6 +1,7 @@
package org.openecomp.sdc.impl;
import java.io.File;
+import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
@@ -8,12 +9,13 @@ import java.util.List;
import java.util.Map;
import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
-import org.testng.ITestContext;
+import org.openecomp.sdc.toscaparser.api.common.ExceptionCollector;
+import org.openecomp.sdc.toscaparser.api.common.JToscaException;
import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
public abstract class BasicTest {
@@ -22,35 +24,18 @@ public abstract class BasicTest {
static ISdcCsarHelper rainyCsarHelperSingleVf;
static ISdcCsarHelper rainyCsarHelperMultiVfs;
static ISdcCsarHelper fdntCsarHelper;
+ static ISdcCsarHelper complexCps;
static Map<String, HashMap<String, List<String>>> fdntCsarHelper_Data;
- @BeforeSuite
- public static void init(ITestContext context) throws Exception {
+
+ @BeforeClass
+ public static void init() throws SdcToscaParserException, JToscaException, IOException {
factory = SdcToscaParserFactory.getInstance();
- long startTime = System.currentTimeMillis();
- long estimatedTime = System.currentTimeMillis() - startTime;
- System.out.println("Time to init factory " + estimatedTime);
-
- String fileStr1 = BasicTest.class.getClassLoader().getResource("csars/service-ServiceFdnt-with-allotted.csar").getFile();
- File file1 = new File(fileStr1);
- startTime = System.currentTimeMillis();
-
- fdntCsarHelper = factory.getSdcCsarHelper(file1.getAbsolutePath());
-
- estimatedTime = System.currentTimeMillis() - startTime;
- System.out.println("init CSAR Execution time: " + estimatedTime);
-
- String fileStr2 = BasicTest.class.getClassLoader().getResource("csars/service-ServiceFdnt-csar-rainy.csar").getFile();
- File file2 = new File(fileStr2);
- rainyCsarHelperMultiVfs = factory.getSdcCsarHelper(file2.getAbsolutePath());
-
- String fileStr3 = BasicTest.class.getClassLoader().getResource("csars/service-ServiceFdnt-csar.csar").getFile();
- File file3 = new File(fileStr3);
- rainyCsarHelperSingleVf = factory.getSdcCsarHelper(file3.getAbsolutePath());
-
- /* Objects for QA Validation Tests */
-
- fdntCsarHelper_Data = new HashMap<String, HashMap<String, List<String>>>(){
+ fdntCsarHelper = getCsarHelper("csars/service-ServiceFdnt-with-allotted.csar");
+ rainyCsarHelperMultiVfs = getCsarHelper("csars/service-ServiceFdnt-csar-rainy.csar");
+ rainyCsarHelperSingleVf = getCsarHelper("csars/service-ServiceFdnt-csar.csar");
+ complexCps = getCsarHelper("csars/1service-ServiceWithPorts.csar");
+ fdntCsarHelper_Data = new HashMap<String, HashMap<String, List<String>>>(){
{
HashMap<String, List<String>> FDNT ;
@@ -106,18 +91,27 @@ public abstract class BasicTest {
"dnt_fw_rhrg.binding_DNT_FW_NIMBUS_HSL_RVMI",
"dnt_fw_rsg_si_1.feature"));
+
put("FDNT", FDNT);
}
};
};
- @AfterSuite
- public static void after(){
- long startTime = System.currentTimeMillis();
- long estimatedTime = System.currentTimeMillis() - startTime;
- System.out.println("close Execution time: "+estimatedTime);
- };
-
+ private static ISdcCsarHelper getCsarHelper(String path) throws JToscaException, IOException, SdcToscaParserException {
+ System.out.println("Parsing CSAR "+path+"...");
+ String fileStr1 = BasicTest.class.getClassLoader().getResource(path).getFile();
+ File file1 = new File(fileStr1);
+ ISdcCsarHelper sdcCsarHelper = factory.getSdcCsarHelper(file1.getAbsolutePath());
+ List<String> exceptionReport = ExceptionCollector.getCriticalsReport();
+ if (!exceptionReport.isEmpty()){
+ System.out.println("TOSCA Errors found in CSAR - failing the tests...");
+ System.out.println(exceptionReport.toString());
+ ExceptionCollector.clear();
+ //throw new SdcToscaParserException("CSAR didn't pass validation");
+ }
+ return sdcCsarHelper;
+ }
+
@BeforeMethod
public void setupTest(Method method) {
System.out.println("#### Starting Test " + method.getName() + " ###########");
diff --git a/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserGroupTest.java b/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserGroupTest.java
index 706c864..58e967a 100644
--- a/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserGroupTest.java
+++ b/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserGroupTest.java
@@ -5,6 +5,7 @@ import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
import org.openecomp.sdc.toscaparser.api.Group;
import org.openecomp.sdc.toscaparser.api.elements.Metadata;
+import java.util.Arrays;
import java.util.List;
import static org.testng.Assert.*;
@@ -96,4 +97,13 @@ public class ToscaParserGroupTest extends BasicTest{
}
//endregion
+ //region getGroupPropertyAsObject
+ @Test
+ public void testGetGroupPropertyAsObject() {
+ List<Group> vfModulesByVf = fdntCsarHelper.getVfModulesByVf(VF_CUSTOMIZATION_UUID);
+ Object volumeGroup = fdntCsarHelper.getGroupPropertyAsObject(vfModulesByVf.get(0), "volume_group");
+ assertEquals(false, volumeGroup);
+ }
+ //getGroupPropertyAsObject
+
}
diff --git a/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java b/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java
index 9a78ed5..c9215a2 100644
--- a/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java
+++ b/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java
@@ -6,6 +6,7 @@ import static org.testng.Assert.assertNull;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import org.testng.annotations.Test;
@@ -304,4 +305,30 @@ public class ToscaParserNodeTemplateTest extends BasicTest {
}
//endregion
+ //region getCpPropertiesFromVfc
+ @Test
+ public void testGetCpPropertiesFromVfc() {
+ List<NodeTemplate> vfcs = complexCps.getVfcListByVf(VF_CUSTOMIZATION_UUID);
+ Map<String, Map<String, Object>> cps = complexCps.getCpPropertiesFromVfc(vfcs.get(0));
+
+ assertEquals("1", cps.get("port_fe1_sigtran").get("ip_requirements#ip_count_required#count"));
+ assertEquals("true", cps.get("port_fe1_sigtran").get("ip_requirements#dhcp_enabled"));
+ assertEquals("4", cps.get("port_fe1_sigtran").get("ip_requirements#ip_version"));
+
+ assertEquals("2", cps.get("port_fe_cluster").get("ip_requirements#ip_count_required#count"));
+ assertEquals("true", cps.get("port_fe_cluster").get("ip_requirements#dhcp_enabled"));
+ assertEquals("4", cps.get("port_fe_cluster").get("ip_requirements#ip_version"));
+ }
+ //endregion
+
+ //region getNodeTemplatePropertyAsObject
+ @Test
+ public void testGetNodeTemplatePropertyAsObject() {
+ List<NodeTemplate> serviceVfList = fdntCsarHelper.getServiceVfList();
+ assertEquals("2", fdntCsarHelper.getNodeTemplatePropertyAsObject(serviceVfList.get(0), "availability_zone_max_count"));
+ assertEquals(3, fdntCsarHelper.getNodeTemplatePropertyAsObject(serviceVfList.get(0), "max_instances"));
+ assertEquals("some code", fdntCsarHelper.getNodeTemplatePropertyAsObject(serviceVfList.get(0), "nf_naming_code"));
+ }
+ //endregion
+
}
diff --git a/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserServiceInputTest.java b/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserServiceInputTest.java
index d357d21..0599dcc 100644
--- a/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserServiceInputTest.java
+++ b/sdc-tosca-parser/src/test/java/org/openecomp/sdc/impl/ToscaParserServiceInputTest.java
@@ -47,4 +47,11 @@ public class ToscaParserServiceInputTest extends BasicTest {
}
//endregion
+ //region getServiceInputLeafValueOfDefaultAsObject
+ @Test
+ public void testGetServiceInputLeafValueOfDefaultAsObject() {
+ Object serviceInputLeafValue = fdntCsarHelper.getServiceInputLeafValueOfDefault("service_naming#default");
+ assertEquals("test service naming", serviceInputLeafValue);
+ }
+ //endregion
}
diff --git a/sdc-tosca-parser/src/test/resources/csars/1service-ServiceWithPorts.csar b/sdc-tosca-parser/src/test/resources/csars/1service-ServiceWithPorts.csar
new file mode 100644
index 0000000..fa6577b
--- /dev/null
+++ b/sdc-tosca-parser/src/test/resources/csars/1service-ServiceWithPorts.csar
Binary files differ