change capabilities datatype 75/29375/2
authortalio <tali.orenbach@amdocs.com>
Sun, 28 Jan 2018 07:47:38 +0000 (09:47 +0200)
committerAvi Gaffa <avi.gaffa@amdocs.com>
Sun, 4 Feb 2018 06:56:25 +0000 (06:56 +0000)
change node template capabilities datatype from list of map to map

Change-Id: Ie0fa71b8a41ec732ae5290a72c4d8e908701ce17
Issue-ID: SDC-968
Signed-off-by: talio <tali.orenbach@amdocs.com>
24 files changed:
common/openecomp-tosca-datatype/src/main/java/org/openecomp/sdc/tosca/datatypes/model/NodeTemplate.java
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/PortMirroringEnricher.java
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/multiLevel/in/Nested_pd_server_2ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/multiLevel/out/Nested_pd_serverServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/multiLevel/out/Nested_pd_server_1ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/multiLevel/out/Nested_pd_server_2ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/multiLevel/out/Nested_pd_server_3ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/multiLevel/out/Nested_pd_server_4ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/multiLevel/out/Nested_pd_server_6ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/oneLevel/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/nested/oneLevel/out/nested-pcm_v0.1ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/scalingInstance/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/scalingInstance/out/Nested_pd_serverServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/singleSubstitution/diffPortType/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/singleSubstitution/diffPortType/out/Nested_pd_serverServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/singleSubstitution/samePortType/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/enrichPortMirroring/singleSubstitution/samePortType/out/Nested_pd_serverServiceTemplate.yaml
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterImpl.java
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/conversionWithInt/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/DataModelUtil.java
openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java
openecomp-be/lib/openecomp-tosca-lib/src/test/resources/mock/model/serviceTemplate.yaml
openecomp-be/lib/openecomp-tosca-lib/src/test/resources/mock/model/serviceTemplateHeatExtend.yaml

index 9901ea3..bfbf343 100644 (file)
@@ -34,7 +34,7 @@ public class NodeTemplate implements Template {
   private Map<String, Object> properties;
   private Map<String, Object> attributes;
   private List<Map<String, RequirementAssignment>> requirements;
-  private List<Map<String, CapabilityAssignment>> capabilities;
+  private Map<String, CapabilityAssignment> capabilities;
   private Map<String, InterfaceDefinition> interfaces;
   private Map<String, ArtifactDefinition> artifacts;
   private NodeFilter node_filter;
@@ -88,11 +88,11 @@ public class NodeTemplate implements Template {
     this.requirements = requirements;
   }
 
-  public List<Map<String, CapabilityAssignment>> getCapabilities() {
+  public Map<String, CapabilityAssignment> getCapabilities() {
     return capabilities;
   }
 
-  public void setCapabilities(List<Map<String, CapabilityAssignment>> capabilities) {
+  public void setCapabilities(Map<String, CapabilityAssignment> capabilities) {
     this.capabilities = capabilities;
   }
 
index 4ad8121..629868c 100644 (file)
@@ -257,10 +257,6 @@ public class PortMirroringEnricher {
   }
 
   private void addPortMirroringCapability(NodeTemplate portNodeTemplate) {
-    List<Map<String, CapabilityAssignment>> capabilities = portNodeTemplate.getCapabilities();
-    if (Objects.isNull(capabilities)) {
-      capabilities = new ArrayList<>();
-    }
     Map<String, Object> portMirroringCapabilityProperties = new HashMap<>();
     PortMirroringConnectionPointDescription connectionPoint = new
         PortMirroringConnectionPointDescription();
index ac6f670..5c6f4ae 100644 (file)
@@ -255,7 +255,7 @@ topology_template:
         network:
           get_input: oam_net_name
       capabilities:
-      - port_mirroring:
+        port_mirroring:
           properties:
             connection_point:
               nf_type: ''
@@ -324,7 +324,7 @@ topology_template:
           node: server_pcm
           relationship: tosca.relationships.network.BindsTo
       capabilities:
-      - port_mirroring:
+        port_mirroring:
           properties:
             connection_point:
               nf_type: ''
index 16223e4..45ebd43 100644 (file)
@@ -135,7 +135,7 @@ topology_template:
           mac_count_required:
             is_required: false
       capabilities:
-      - port_mirroring:
+        port_mirroring:
           properties:
             connection_point:
               nf_type: ''
@@ -156,7 +156,7 @@ topology_template:
           mac_count_required:
             is_required: false
       capabilities:
-      - port_mirroring:
+        port_mirroring:
           properties:
             connection_point:
               nf_type: ''
index 4b93530..8fd8b17 100644 (file)
@@ -277,7 +277,7 @@ topology_template:
           mac_count_required:
             is_required: false
       capabilities:
-      - port_mirroring:
+        port_mirroring:
           properties:
             connection_point:
               nf_type: ''
@@ -287,7 +287,7 @@ topology_template:
     template_VMInt_OAM_lb_external_VMI:
       type: org.openecomp.resource.cp.v2.extContrailCP
       capabilities:
-      - port_mirroring:
+        port_mirroring:
           properties:
             connection_point:
               nf_type: ''
index 2a4b89c..8a030f4 100644 (file)
@@ -266,7 +266,7 @@ topology_template:
     template_VMInt_OAM_lb_external_VMI:
       type: org.openecomp.resource.cp.v2.extContrailCP
       capabilities:
-      - port_mirroring:
+        port_mirroring:
           properties:
             connection_point:
               nf_type: ''
@@ -306,7 +306,7 @@ topology_template:
           mac_count_required:
             is_required: false
       capabilities:
-      - port_mirroring:
+        port_mirroring:
           properties:
             connection_point:
               nf_type: ''
index a5421c0..f8b9f75 100644 (file)
@@ -79,21 +79,24 @@ import java.util.regex.Pattern;
 public class ToscaConverterImpl implements ToscaConverter {
 
     private static final String ORIGINAL = ".original";
-
-    @Override
-    public ToscaServiceModel convert(FileContentHandler fileContentHandler)
-        throws IOException {
-        Map<String, byte[]> csarFiles = new HashMap<>(fileContentHandler.getFiles());
-        ToscaServiceModel toscaServiceModel = new ToscaServiceModel();
-        Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
-        FileContentHandler artifacts = new FileContentHandler();
-        GlobalSubstitutionServiceTemplate gsst = new GlobalSubstitutionServiceTemplate();
-        for (Map.Entry<String, byte[]> fileEntry : csarFiles.entrySet()) {
-            CsarFileTypes fileType = getFileType(fileEntry.getKey());
-            switch (fileType) {
-                case mainServiceTemplate:
-                    handleServiceTemplate(mainStName, fileEntry.getKey(), csarFiles, serviceTemplates);
-                    break;
+  public ToscaConverterImpl() {
+
+  }
+
+  @Override
+  public ToscaServiceModel convert(FileContentHandler fileContentHandler)
+      throws IOException {
+    Map<String, byte[]> csarFiles = new HashMap<>(fileContentHandler.getFiles());
+    ToscaServiceModel toscaServiceModel = new ToscaServiceModel();
+    Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
+    FileContentHandler artifacts = new FileContentHandler();
+    GlobalSubstitutionServiceTemplate gsst = new GlobalSubstitutionServiceTemplate();
+    for (Map.Entry<String, byte[]> fileEntry : csarFiles.entrySet()) {
+      CsarFileTypes fileType = getFileType(fileEntry.getKey());
+      switch (fileType) {
+        case mainServiceTemplate:
+          handleServiceTemplate(mainStName, fileEntry.getKey(), csarFiles, serviceTemplates);
+          break;
 
                 case globalServiceTemplate:
                     handleServiceTemplate(globalStName, fileEntry.getKey(), csarFiles, serviceTemplates);
@@ -284,58 +287,58 @@ public class ToscaConverterImpl implements ToscaConverter {
             return;
         }
 
-        for (Map.Entry<String, Object> nodeTypeEntry : nodeTypes.entrySet()) {
-            Optional<NodeType> nodeType = ToscaConverterUtil
-                .createObjectFromClass(nodeTypeEntry.getKey(), nodeTypeEntry.getValue(),
-                    NodeType.class);
+    for (Map.Entry<String, Object> nodeTypeEntry : nodeTypes.entrySet()) {
+      Optional<NodeType> nodeType = ToscaConverterUtil
+          .createObjectFromClass(nodeTypeEntry.getKey(), nodeTypeEntry.getValue(),
+              NodeType.class);
 
-            nodeType.ifPresent(nodeTypeValue -> DataModelUtil
-                .addNodeType(serviceTemplate, nodeTypeEntry.getKey(), nodeTypeValue));
-        }
+      nodeType.ifPresent(nodeTypeValue -> DataModelUtil
+          .addNodeType(serviceTemplate, nodeTypeEntry.getKey(), nodeTypeValue));
     }
+  }
 
-    private void convertTopologyTemplate(ServiceTemplate serviceTemplate,
-                                         ServiceTemplateReaderService readerService) {
+  private void convertTopologyTemplate(ServiceTemplate serviceTemplate,
+                                       ServiceTemplateReaderService readerService) {
 
-        convertInputs(serviceTemplate, readerService);
-        convertNodeTemplates(serviceTemplate, readerService);
-        convertOutputs(serviceTemplate, readerService);
-        convertSubstitutionMappings(serviceTemplate, readerService);
-    }
+    convertInputs(serviceTemplate, readerService);
+    convertNodeTemplates(serviceTemplate, readerService);
+    convertOutputs(serviceTemplate, readerService);
+    convertSubstitutionMappings(serviceTemplate, readerService);
+  }
 
-    private void convertInputs(ServiceTemplate serviceTemplate,
-                               ServiceTemplateReaderService readerService) {
-        Map<String, Object> inputs = readerService.getInputs();
-        addInputsOrOutputsToServiceTemplate(serviceTemplate, inputs, Constants.inputs);
-    }
+  private void convertInputs(ServiceTemplate serviceTemplate,
+                             ServiceTemplateReaderService readerService) {
+    Map<String, Object> inputs = readerService.getInputs();
+    addInputsOrOutputsToServiceTemplate(serviceTemplate, inputs, Constants.inputs);
+  }
+
+  private void convertOutputs(ServiceTemplate serviceTemplate,
+                              ServiceTemplateReaderService readerService) {
+    Map<String, Object> outputs = readerService.getOutputs();
+    addInputsOrOutputsToServiceTemplate(serviceTemplate, outputs, Constants.outputs);
+  }
 
-    private void convertOutputs(ServiceTemplate serviceTemplate,
-                                ServiceTemplateReaderService readerService) {
-        Map<String, Object> outputs = readerService.getOutputs();
-        addInputsOrOutputsToServiceTemplate(serviceTemplate, outputs, Constants.outputs);
+  private void addInputsOrOutputsToServiceTemplate(ServiceTemplate serviceTemplate,
+                                                   Map<String, Object> mapToConvert,
+                                                   String inputsOrOutputs) {
+    if (MapUtils.isEmpty(mapToConvert)) {
+      return;
     }
 
-    private void addInputsOrOutputsToServiceTemplate(ServiceTemplate serviceTemplate,
-                                                     Map<String, Object> mapToConvert,
-                                                     String inputsOrOutputs) {
-        if (MapUtils.isEmpty(mapToConvert)) {
-            return;
-        }
+    for (Map.Entry<String, Object> entry : mapToConvert.entrySet()) {
+      Optional<ParameterDefinition> parameterDefinition =
+          ToscaConverterUtil.createObjectFromClass(
+              entry.getKey(), entry.getValue(), ParameterDefinition.class);
 
-        for (Map.Entry<String, Object> entry : mapToConvert.entrySet()) {
-            Optional<ParameterDefinition> parameterDefinition =
-                ToscaConverterUtil.createObjectFromClass(
-                    entry.getKey(), entry.getValue(), ParameterDefinition.class);
-
-            parameterDefinition.ifPresent(parameterDefinitionValue -> {
-                Optional<Object> defaultValue =
-                    ToscaConverterUtil.getDefaultValue(entry.getValue(), parameterDefinition.get());
-                defaultValue.ifPresent(parameterDefinitionValue::set_default);
-                addToServiceTemplateAccordingToSection(
-                    serviceTemplate, inputsOrOutputs, entry.getKey(), parameterDefinition.get());
-            } );
-        }
+      parameterDefinition.ifPresent(parameterDefinitionValue -> {
+        Optional<Object> defaultValue =
+            ToscaConverterUtil.getDefaultValue(entry.getValue(), parameterDefinition.get());
+        defaultValue.ifPresent(parameterDefinitionValue::set_default);
+        addToServiceTemplateAccordingToSection(
+            serviceTemplate, inputsOrOutputs, entry.getKey(), parameterDefinition.get());
+      });
     }
+  }
 
     private void addToServiceTemplateAccordingToSection(ServiceTemplate serviceTemplate,
                                                         String inputsOrOutputs,
@@ -350,177 +353,175 @@ public class ToscaConverterImpl implements ToscaConverter {
         }
     }
 
-    private void convertNodeTemplates(ServiceTemplate serviceTemplate,
-                                      ServiceTemplateReaderService readerService) {
-        Map<String, Object> nodeTemplates = readerService.getNodeTemplates();
-        if (MapUtils.isEmpty(nodeTemplates)) {
-            return;
-        }
+  private void convertNodeTemplates(ServiceTemplate serviceTemplate,
+                                    ServiceTemplateReaderService readerService) {
+    Map<String, Object> nodeTemplates = readerService.getNodeTemplates();
+    if (MapUtils.isEmpty(nodeTemplates)) {
+      return;
+    }
 
-        for (Map.Entry<String, Object> nodeTemplateEntry : nodeTemplates.entrySet()) {
-            NodeTemplate nodeTemplate = convertNodeTemplate(nodeTemplateEntry.getValue());
-            DataModelUtil.addNodeTemplate(serviceTemplate, nodeTemplateEntry.getKey(), nodeTemplate);
-        }
+    for (Map.Entry<String, Object> nodeTemplateEntry : nodeTemplates.entrySet()) {
+      NodeTemplate nodeTemplate = convertNodeTemplate(nodeTemplateEntry.getValue());
+      DataModelUtil.addNodeTemplate(serviceTemplate, nodeTemplateEntry.getKey(), nodeTemplate);
     }
+  }
 
-    private void convertSubstitutionMappings(ServiceTemplate serviceTemplate,
-                                             ServiceTemplateReaderService readerService) {
-        Map<String, Object> substitutionMappings = readerService.getSubstitutionMappings();
-        if (MapUtils.isEmpty(substitutionMappings)) {
-            return;
-        }
-        SubstitutionMapping substitutionMapping = convertSubstitutionMappings(substitutionMappings);
-        DataModelUtil.addSubstitutionMapping(serviceTemplate, substitutionMapping);
+  private void convertSubstitutionMappings(ServiceTemplate serviceTemplate,
+                                           ServiceTemplateReaderService readerService) {
+    Map<String, Object> substitutionMappings = readerService.getSubstitutionMappings();
+    if (MapUtils.isEmpty(substitutionMappings)) {
+      return;
     }
+    SubstitutionMapping substitutionMapping = convertSubstitutionMappings(substitutionMappings);
+    DataModelUtil.addSubstitutionMapping(serviceTemplate, substitutionMapping);
+  }
+
+  private SubstitutionMapping convertSubstitutionMappings(
+      Map<String, Object> substitutionMappings) {
+    SubstitutionMapping substitutionMapping = new SubstitutionMapping();
 
-    private SubstitutionMapping convertSubstitutionMappings(Map<String, Object> substitutionMappings) {
-        SubstitutionMapping substitutionMapping = new SubstitutionMapping();
+    substitutionMapping.setNode_type((String) substitutionMappings.get(nodeType));
+    substitutionMapping.setCapabilities(
+        convertSubstitutionMappingsSections(capabilities, substitutionMappings.get(capabilities)));
+    substitutionMapping.setRequirements(
+        convertSubstitutionMappingsSections(requirements, substitutionMappings.get(requirements)));
 
-        substitutionMapping.setNode_type((String) substitutionMappings.get(nodeType));
-        substitutionMapping.setCapabilities(
-            convertSubstitutionMappingsSections(capabilities, substitutionMappings.get(capabilities)));
-        substitutionMapping.setRequirements(
-            convertSubstitutionMappingsSections(requirements, substitutionMappings.get(requirements)));
+    return substitutionMapping;
+  }
 
-        return substitutionMapping;
+  private Map<String, List<String>> convertSubstitutionMappingsSections(String sectionName,
+                                                                        Object sectionToConvert) {
+
+    if (Objects.isNull(sectionToConvert)) {
+      return null;
     }
 
-    private Map<String, List<String>> convertSubstitutionMappingsSections(String sectionName,
-                                                                          Object sectionToConvert) {
+    if (!(sectionToConvert instanceof Map)) {
+      throw new CoreException(
+          new SubstitutionMappingsConverterErrorBuilder(
+              sectionName, sectionToConvert.getClass().getSimpleName()).build());
+    }
 
-        if(Objects.isNull(sectionToConvert)){
-            return null;
-        }
+    return convertSection(sectionToConvert);
+  }
 
-        if(!(sectionToConvert instanceof Map)) {
-            throw new CoreException(
-                new SubstitutionMappingsConverterErrorBuilder(
-                    sectionName, sectionToConvert.getClass().getSimpleName()).build());
-        }
+  private Map<String, List<String>> convertSection(Object sectionToConvert) {
+
+    Map<String, Object> sectionAsMap = (Map<String, Object>) sectionToConvert;
+    Map<String, List<String>> convertedSection = new HashMap<>();
 
-        return convertSection(sectionToConvert);
+    if (MapUtils.isEmpty(sectionAsMap)) {
+      return null;
     }
 
-    private Map<String, List<String>> convertSection(Object sectionToConvert) {
+    for (Map.Entry<String, Object> entry : sectionAsMap.entrySet()) {
+      if (entry.getValue() instanceof List) {
+        convertedSection.put(entry.getKey(), (List<String>) entry.getValue());
+      }
+    }
 
-        Map<String, Object> sectionAsMap = (Map<String, Object>)sectionToConvert;
-        Map<String, List<String>> convertedSection = new HashMap<>();
+    return convertedSection;
+  }
 
-        if (MapUtils.isEmpty(sectionAsMap)) {
-            return null;
-        }
+  private CsarFileTypes getFileType(String fileName) {
+    if (isMainServiceTemplate(fileName)) {
+      return CsarFileTypes.mainServiceTemplate;
+    } else if (isGlobalServiceTemplate(fileName)) {
+      return CsarFileTypes.globalServiceTemplate;
+    } else if (isDefinitions(fileName)) {
+      return CsarFileTypes.definitionsFile;
+    } else if (isMetadataFile(fileName)) {
+      return CsarFileTypes.toscaMetadata;
+    }
+    return CsarFileTypes.externalFile;
+  }
 
-        for (Map.Entry<String, Object> entry : sectionAsMap.entrySet()) {
-            if (entry.getValue() instanceof List) {
-                convertedSection.put(entry.getKey(), (List<String>) entry.getValue());
-            }
-        }
+  private Optional<Manifest> getCsarManifest(Map<String, byte[]> csarFiles) throws IOException {
+    Optional<byte[]> manifestContent = getManifestContent(csarFiles);
 
-        return convertedSection;
-    }
+    if (manifestContent.isPresent()) {
+      ByteArrayInputStream byteInputStream = new ByteArrayInputStream(manifestContent.get());
 
-    private CsarFileTypes getFileType(String fileName) {
-        if (isMainServiceTemplate(fileName)) {
-            return CsarFileTypes.mainServiceTemplate;
-        } else if (isGlobalServiceTemplate(fileName)) {
-            return CsarFileTypes.globalServiceTemplate;
-        } else if (isDefinitions(fileName)) {
-            return CsarFileTypes.definitionsFile;
-        } else if (isMetadataFile(fileName)) {
-            return CsarFileTypes.toscaMetadata;
-        }
-        return CsarFileTypes.externalFile;
+      return Optional.of(new Manifest(byteInputStream));
     }
 
-    private Optional<Manifest> getCsarManifest(Map<String, byte[]> csarFiles) throws IOException {
-        Optional<byte[]> manifestContent = getManifestContent(csarFiles);
+    return Optional.empty();
+  }
 
-        if (manifestContent.isPresent()) {
-            ByteArrayInputStream byteInputStream = new ByteArrayInputStream(manifestContent.get());
+  private NodeTemplate convertNodeTemplate(Object candidateNodeTemplate) {
+    NodeTemplate nodeTemplate = new NodeTemplate();
 
-            return Optional.of(new Manifest(byteInputStream));
-        }
+    Map<String, Object> nodeTemplateAsMap = (Map<String, Object>) candidateNodeTemplate;
+    nodeTemplate.setArtifacts((Map<String, ArtifactDefinition>) nodeTemplateAsMap.get("artifacts"));
+    nodeTemplate.setAttributes((Map<String, Object>) nodeTemplateAsMap.get("attributes"));
+    nodeTemplate.setCopy((String) nodeTemplateAsMap.get("copy"));
+    nodeTemplate.setDescription((String) nodeTemplateAsMap.get("description"));
+    nodeTemplate.setDirectives((List<String>) nodeTemplateAsMap.get("directives"));
+    nodeTemplate.setInterfaces(
+        (Map<String, InterfaceDefinition>) nodeTemplateAsMap.get("interfaces"));
+    nodeTemplate.setNode_filter((NodeFilter) nodeTemplateAsMap.get("node_filter"));
+    nodeTemplate.setProperties((Map<String, Object>) nodeTemplateAsMap.get("properties"));
+    nodeTemplate.setRequirements(
+        (List<Map<String, RequirementAssignment>>) nodeTemplateAsMap.get("requirements"));
+    nodeTemplate.setType((String) nodeTemplateAsMap.get("type"));
+    nodeTemplate.setCapabilities(
+        convertCapabilities((Map<String, Object>) nodeTemplateAsMap.get("capabilities")));
 
-        return Optional.empty();
-    }
+    return nodeTemplate;
+  }
 
-    private NodeTemplate convertNodeTemplate(Object candidateNodeTemplate) {
-        NodeTemplate nodeTemplate = new NodeTemplate();
-
-        Map<String, Object> nodeTemplateAsMap = (Map<String, Object>) candidateNodeTemplate;
-        nodeTemplate.setArtifacts((Map<String, ArtifactDefinition>) nodeTemplateAsMap.get("artifacts"));
-        nodeTemplate.setAttributes((Map<String, Object>) nodeTemplateAsMap.get("attributes"));
-        nodeTemplate.setCopy((String) nodeTemplateAsMap.get("copy"));
-        nodeTemplate.setDescription((String) nodeTemplateAsMap.get("description"));
-        nodeTemplate.setDirectives((List<String>) nodeTemplateAsMap.get("directives"));
-        nodeTemplate.setInterfaces(
-            (Map<String, InterfaceDefinition>) nodeTemplateAsMap.get("interfaces"));
-        nodeTemplate.setNode_filter((NodeFilter) nodeTemplateAsMap.get("node_filter"));
-        nodeTemplate.setProperties((Map<String, Object>) nodeTemplateAsMap.get("properties"));
-        nodeTemplate.setRequirements(
-            (List<Map<String, RequirementAssignment>>) nodeTemplateAsMap.get("requirements"));
-        nodeTemplate.setType((String) nodeTemplateAsMap.get("type"));
-        nodeTemplate.setCapabilities(
-            convertCapabilities((Map<String, Object>) nodeTemplateAsMap.get("capabilities")));
-
-        return nodeTemplate;
+  private Map<String, CapabilityAssignment> convertCapabilities(Map<String, Object> capabilities) {
+    if (MapUtils.isEmpty(capabilities)) {
+      return null;
     }
 
-    private List<Map<String, CapabilityAssignment>> convertCapabilities(Map<String, Object> capabilities) {
-        List<Map<String, CapabilityAssignment>> convertedCapabilities = new ArrayList<>();
-        if (MapUtils.isEmpty(capabilities)) {
-            return null;
-        }
-        for (Map.Entry<String, Object> capabilityAssignmentEntry : capabilities.entrySet()) {
-            Map<String, CapabilityAssignment> tempMap = new HashMap<>();
-            Optional<CapabilityAssignment> capabilityAssignment = ToscaConverterUtil.createObjectFromClass
-                (capabilityAssignmentEntry.getKey(), capabilityAssignmentEntry.getValue(),
-                    CapabilityAssignment.class);
-
-            capabilityAssignment.ifPresent(capabilityAssignmentValue -> {
-                tempMap.put(capabilityAssignmentEntry.getKey(), capabilityAssignmentValue);
-                convertedCapabilities.add(tempMap);
-                }
-            );
+    Map<String, CapabilityAssignment> convertedCapabilities = new HashMap<>();
+    for (Map.Entry<String, Object> capabilityAssignmentEntry : capabilities.entrySet()) {
+      Optional<CapabilityAssignment> capabilityAssignment = ToscaConverterUtil.createObjectFromClass
+          (capabilityAssignmentEntry.getKey(), capabilityAssignmentEntry.getValue(),
+              CapabilityAssignment.class);
+
+      capabilityAssignment.ifPresent(capabilityAssignmentValue ->
+          convertedCapabilities.put(capabilityAssignmentEntry.getKey(), capabilityAssignmentValue));
 
-        }
-        return convertedCapabilities;
     }
+    return convertedCapabilities;
+  }
 
 
-    private boolean isMainServiceTemplate(String fileName) {
-        return fileName.endsWith(mainStName);
-    }
+  private boolean isMainServiceTemplate(String fileName) {
+    return fileName.endsWith(mainStName);
+  }
 
-    private boolean isMetadataFile(String fileName) {
-        return fileName.equals(metadataFile);
-    }
+  private boolean isMetadataFile(String fileName) {
+    return fileName.equals(metadataFile);
+  }
 
-    private boolean isGlobalServiceTemplate(String fileName) {
-        return fileName.endsWith(globalStName);
-    }
+  private boolean isGlobalServiceTemplate(String fileName) {
+    return fileName.endsWith(globalStName);
+  }
 
-    private boolean isDefinitions(String fileName) {
-        return fileName.startsWith(definitionsDir);
-    }
+  private boolean isDefinitions(String fileName) {
+    return fileName.startsWith(definitionsDir);
+  }
 
-    private String getTemplateNameFromStName(String serviceTemplateName) {
-        String fileNameWithoutDirectories;
-        fileNameWithoutDirectories = getFileNameWithoutDirectories(serviceTemplateName);
-        return fileNameWithoutDirectories.split("ServiceTemplate")[0];
-    }
+  private String getTemplateNameFromStName(String serviceTemplateName) {
+    String fileNameWithoutDirectories;
+    fileNameWithoutDirectories = getFileNameWithoutDirectories(serviceTemplateName);
+    return fileNameWithoutDirectories.split("ServiceTemplate")[0];
+  }
 
-    private String getFileNameWithoutDirectories(String serviceTemplateName) {
-        String fileNameWithoutDirectories;
-        if (serviceTemplateName.contains("/")) {
-            String[] split = serviceTemplateName.split("/");
-            fileNameWithoutDirectories = split[split.length - 1];
-        } else if (serviceTemplateName.contains(File.separator)) {
-            String[] split = serviceTemplateName.split(Pattern.quote(File.separator));
-            fileNameWithoutDirectories = split[split.length - 1];
-        } else {
-            fileNameWithoutDirectories = serviceTemplateName;
-        }
-        return fileNameWithoutDirectories;
-    }
+  private String getFileNameWithoutDirectories(String serviceTemplateName) {
+    String fileNameWithoutDirectories;
+    if (serviceTemplateName.contains("/")) {
+      String[] split = serviceTemplateName.split("/");
+      fileNameWithoutDirectories = split[split.length - 1];
+    } else if (serviceTemplateName.contains(File.separator)) {
+      String[] split = serviceTemplateName.split(Pattern.quote(File.separator));
+      fileNameWithoutDirectories = split[split.length - 1];
+    } else {
+      fileNameWithoutDirectories = serviceTemplateName;
+    }
+    return fileNameWithoutDirectories;
+  }
 }
index 88ae605..0f41bb0 100644 (file)
@@ -48,7 +48,7 @@ topology_template:
       - local_storage:
           node: tosca.nodes.Root
       capabilities:
-      - virtual_compute:
+        virtual_compute:
           properties:
             virtual_memory:
               virtual_mem_size: 24G
@@ -116,7 +116,7 @@ topology_template:
       - local_storage:
           node: tosca.nodes.Root
       capabilities:
-      - virtual_compute:
+        virtual_compute:
           properties:
             virtual_memory:
               virtual_mem_size: 24G
@@ -177,7 +177,7 @@ topology_template:
       - local_storage:
           node: tosca.nodes.Root
       capabilities:
-      - virtual_compute:
+        virtual_compute:
           properties:
             virtual_memory:
               virtual_mem_size: 24G
@@ -410,7 +410,7 @@ topology_template:
       - local_storage:
           node: tosca.nodes.Root
       capabilities:
-      - virtual_compute:
+        virtual_compute:
           properties:
             virtual_memory:
               virtual_mem_size: 24G
@@ -450,7 +450,7 @@ topology_template:
       - local_storage:
           node: tosca.nodes.Root
       capabilities:
-      - virtual_compute:
+        virtual_compute:
           properties:
             virtual_memory:
               virtual_mem_size: 16G
index fd89fae..8da2fc8 100644 (file)
@@ -1114,16 +1114,14 @@ public class DataModelUtil {
   public static void addNodeTemplateCapability(NodeTemplate nodeTemplate, String capabilityId,
                                                Map<String, Object> capabilityProperties,
                                                Map<String, Object> capabilityAttributes) {
-    List<Map<String, CapabilityAssignment>> capabilities = nodeTemplate.getCapabilities();
+    Map<String, CapabilityAssignment> capabilities = nodeTemplate.getCapabilities();
     if (Objects.isNull(capabilities)) {
-      capabilities = new ArrayList<>();
+      capabilities = new HashMap<>();
     }
     CapabilityAssignment capabilityAssignment = new CapabilityAssignment();
     capabilityAssignment.setProperties(capabilityProperties);
     capabilityAssignment.setAttributes(capabilityAttributes);
-    Map<String, CapabilityAssignment> nodeTemplateCapability = new HashMap<>();
-    nodeTemplateCapability.put(capabilityId, capabilityAssignment);
-    capabilities.add(nodeTemplateCapability);
+    capabilities.put(capabilityId, capabilityAssignment);
     nodeTemplate.setCapabilities(capabilities);
   }
 
index e8c9c60..60f59db 100644 (file)
@@ -238,8 +238,7 @@ public class ToscaModelTest {
     capAtts.put("num_cpus", "66");
     capAss.setAttributes(capAtts);
     nodeTemplateCapability.put("cap1", capAss);
-    nodeTemplate.setCapabilities(new ArrayList<>());
-    nodeTemplate.getCapabilities().add(nodeTemplateCapability);
+    nodeTemplate.setCapabilities(nodeTemplateCapability);
 
     NodeFilter nodeTemplateNodeFilter = new NodeFilter();
     Map<String, List<Constraint>> ntProp = new HashMap<>();
index 2fb8042..c49f30f 100644 (file)
@@ -99,7 +99,7 @@ topology_template:
           node: nodeA
           relationship: relationB
       capabilities:
-      - cap1:
+        cap1:
           properties:
             num_cpus: '{ get_input: cpus }'
           attributes:
index 6f34a76..ac34931 100644 (file)
@@ -104,7 +104,7 @@ topology_template:
           node: nodeA
           relationship: relationB
       capabilities:
-      - cap1:
+        cap1:
           properties:
             num_cpus: '{ get_input: cpus }'
           attributes: