Simplified the return condition
[sdc.git] / openecomp-be / lib / openecomp-sdc-tosca-generator-lib / openecomp-sdc-tosca-generator-core / src / main / java / org / openecomp / sdc / generator / core / services / ManualVspToscaGenerationService.java
index 6d488c0..ab57506 100644 (file)
@@ -1,22 +1,24 @@
-package org.openecomp.sdc.generator.core.services;
+/*
+ * Copyright © 2016-2017 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
-import static org.openecomp.sdc.generator.util.GeneratorConstants.ALLOWED_FLAVORS_PROPERTY;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.DISK_SIZE;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.DISK_SIZE_PROP_DESC_PREFIX;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.IMAGES_PROPERTY;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.MEM_SIZE;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.MEM_SIZE_PROP_DESC_PREFIX;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.NUM_CPUS;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.NUM_CPUS_PROP_DESC_PREFIX;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.PORT_NODE_TEMPLATE_ID_SUFFIX;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.RELEASE_VENDOR;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.VFC_NODE_TEMPLATE_ID_SUFFIX;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX;
-import static org.openecomp.sdc.generator.util.GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX;
+package org.openecomp.sdc.generator.core.services;
 
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.generator.core.utils.GeneratorUtils;
 import org.openecomp.sdc.generator.datatypes.tosca.MultiFlavorVfcImage;
 import org.openecomp.sdc.generator.datatypes.tosca.VspModelInfo;
@@ -36,6 +38,7 @@ import org.openecomp.sdc.tosca.services.ToscaUtil;
 import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
 import org.openecomp.sdc.translator.services.heattotosca.Constants;
 import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
+import org.openecomp.sdc.vendorsoftwareproduct.types.composition.NetworkType;
 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
 
 import java.util.ArrayList;
@@ -46,6 +49,22 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 
+import static org.openecomp.sdc.generator.util.GeneratorConstants.ALLOWED_FLAVORS_PROPERTY;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.DISK_SIZE;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.DISK_SIZE_PROP_DESC_PREFIX;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.IMAGES_PROPERTY;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.MEM_SIZE;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.MEM_SIZE_PROP_DESC_PREFIX;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.NUM_CPUS;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.NUM_CPUS_PROP_DESC_PREFIX;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.PORT_NODE_TEMPLATE_ID_SUFFIX;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.PORT_TYPE_EXTERNAL_NODE_TEMPLATE_SUFFIX;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.PORT_TYPE_INTERNAL_NODE_TEMPLATE_SUFFIX;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.RELEASE_VENDOR;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX;
+import static org.openecomp.sdc.generator.util.GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX;
+
 /**
  * The type Manual vsp tosca generator.
  */
@@ -67,7 +86,7 @@ public class ManualVspToscaGenerationService {
     ToscaServiceModel toscaServiceModel = new ToscaServiceModel();
     ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
     Map<String, ServiceTemplate> serviceTemplates = new HashMap<>(GlobalTypesGenerator
-        .getGlobalTypesServiceTemplate());
+        .getGlobalTypesServiceTemplate(OnboardingTypesEnum.MANUAL));
     toscaServiceModel.setServiceTemplates(serviceTemplates);
     toscaServiceModel.setEntryDefinitionServiceTemplate(Constants.MAIN_TEMPLATE_NAME
         + TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX);
@@ -118,8 +137,7 @@ public class ManualVspToscaGenerationService {
       // May be need to revisited for supporting multiple components
       String componentId = components.entrySet().iterator().next().getKey();
       createVnfConfigurationNodeTemplate(mainServiceTemplate, vspModelInfo);
-      createComponentNodeTemplate(mainServiceTemplate, vspModelInfo, componentId);
-      createVnfNodeTemplate(mainServiceTemplate, vspModelInfo);
+      createVnfNodeTemplate(mainServiceTemplate, vspModelInfo, componentId);
     }
     return mainServiceTemplate;
   }
@@ -141,42 +159,16 @@ public class ManualVspToscaGenerationService {
     }
   }
 
-  private void createComponentNodeTemplate(ServiceTemplate mainServiceTemplate,
-                                                  VspModelInfo vspModelInfo,
-                                                  String componentId) {
-    Optional<String> componentName = getComponentNameFromVspModel(vspModelInfo);
-    if (componentName.isPresent()) {
-      NodeTemplate vfcNodeTemplate = new NodeTemplate();
-      vfcNodeTemplate.setType(ToscaNodeType.MULTIFLAVOR_VFC_NODE_TYPE);
-      Map<String, Object> properties = new LinkedHashMap<>();
-      if (MapUtils.isNotEmpty(vspModelInfo.getMultiFlavorVfcImages())) {
-        List<MultiFlavorVfcImage> componentImages =
-            vspModelInfo.getMultiFlavorVfcImages().get(componentId);
-        Map<String, MultiFlavorVfcImage> vfcImages = new HashMap<>();
-        for (MultiFlavorVfcImage image : componentImages) {
-          vfcImages.put(image.getSoftware_version(), image);
-        }
-        properties.put(IMAGES_PROPERTY, vfcImages);
-        vfcNodeTemplate.setProperties(properties);
-      }
-      String nodeTemplateId = componentName.get() + VFC_NODE_TEMPLATE_ID_SUFFIX;
-      DataModelUtil.addNodeTemplate(mainServiceTemplate, nodeTemplateId,
-          vfcNodeTemplate);
-    }
-  }
-
   private void createVnfNodeTemplate(ServiceTemplate mainServiceTemplate,
-                                      VspModelInfo vspModelInfo) {
+                                     VspModelInfo vspModelInfo, String componentId) {
     Optional<String> componentName = getComponentNameFromVspModel(vspModelInfo);
     if (componentName.isPresent()) {
       NodeTemplate vnfNodeTemplate = new NodeTemplate();
-      String vnfNodeTemplateType =
-          ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE + "." + componentName.get();
-      vnfNodeTemplate.setType(vnfNodeTemplateType);
+      vnfNodeTemplate.setType(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE);
       List<String> directiveList = new ArrayList<>();
       directiveList.add(ToscaConstants.NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE);
       vnfNodeTemplate.setDirectives(directiveList);
-      vnfNodeTemplate.setProperties(new LinkedHashMap<>());
+      vnfNodeTemplate.setProperties(getVnfNodeTemplateProperties(vspModelInfo, componentId));
       DataModelUtil
           .addSubstitutionFilteringProperty(getSubstitutionServiceTemplateFileName(componentName
                   .get()), vnfNodeTemplate, 1);
@@ -186,8 +178,26 @@ public class ManualVspToscaGenerationService {
       String nodeTemplateId = componentName.get() + VNF_NODE_TEMPLATE_ID_SUFFIX;
       DataModelUtil.addNodeTemplate(mainServiceTemplate, nodeTemplateId,
           vnfNodeTemplate);
-      abstractSubstitutionIdTypes.put(componentName.get(), vnfNodeTemplateType);
+      abstractSubstitutionIdTypes.put(componentName.get(), ToscaNodeType
+          .MULTIDEPLOYMENTFLAVOR_NODE_TYPE);
+    }
+  }
+
+  private Map<String, Object> getVnfNodeTemplateProperties(VspModelInfo vspModelInfo,
+                                                           String componentId) {
+    Map<String, Object> properties = new LinkedHashMap<>();
+    if (MapUtils.isNotEmpty(vspModelInfo.getMultiFlavorVfcImages())) {
+      List<MultiFlavorVfcImage> componentImages =
+          vspModelInfo.getMultiFlavorVfcImages().get(componentId);
+      if (Objects.nonNull(componentImages)) {
+        Map<String, MultiFlavorVfcImage> vfcImages = new HashMap<>();
+        componentImages.stream()
+            .forEach(multiFlavorVfcImage ->
+                vfcImages.put(multiFlavorVfcImage.getSoftware_version(), multiFlavorVfcImage));
+        properties.put(IMAGES_PROPERTY, vfcImages);
+      }
     }
+    return properties;
   }
 
   private String getSubstitutionServiceTemplateFileName(String componentName) {
@@ -276,7 +286,7 @@ public class ManualVspToscaGenerationService {
             nicNodeTemplate.setType(ToscaNodeType.NETWORK_PORT);
             DataModelUtil.addBindingReqFromPortToCompute(componentNodeTemplateId, nicNodeTemplate);
             DataModelUtil.addNodeTemplate(substitutionServiceTemplate,
-                getNicNodeTemplateId(nic.getName()), nicNodeTemplate);
+                getNicNodeTemplateId(nic.getName(), nic.getNetworkType()), nicNodeTemplate);
           }
         }
       }
@@ -288,9 +298,14 @@ public class ManualVspToscaGenerationService {
     return componentName;
   }
 
-  private String getNicNodeTemplateId(String nicName) {
+  private String getNicNodeTemplateId(String nicName, NetworkType nicNetworkType) {
     StringBuilder builder = new StringBuilder();
     builder.append(nicName);
+    if (nicNetworkType == NetworkType.External) {
+      builder.append(PORT_TYPE_EXTERNAL_NODE_TEMPLATE_SUFFIX);
+    } else if (nicNetworkType == NetworkType.Internal) {
+      builder.append(PORT_TYPE_INTERNAL_NODE_TEMPLATE_SUFFIX);
+    }
     builder.append(PORT_NODE_TEMPLATE_ID_SUFFIX);
     return builder.toString();
   }
@@ -331,13 +346,11 @@ public class ManualVspToscaGenerationService {
                                          ToscaServiceModel toscaServiceModel,
                                          String substitutionNodeTypeId,
                                          String componentName) {
-    ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
     ServiceTemplate globalSubstitutionServiceTemplate = fetchGlobalSubstitutionServiceTemplate();
     NodeType substitutionNodeType =
         createGlobalSubstitutionNodeType(substitutionServiceTemplate, componentName);
     DataModelUtil.addNodeType(globalSubstitutionServiceTemplate, substitutionNodeTypeId,
         substitutionNodeType);
-
     Map<String, Map<String, List<String>>> substitutionMapping =
         GeneratorUtils.getSubstitutionNodeTypeExposedConnectionPoints(substitutionNodeType,
             substitutionServiceTemplate, toscaServiceModel);
@@ -379,7 +392,7 @@ public class ManualVspToscaGenerationService {
                                                 String componentName) {
     NodeType substitutionNodeType = new ToscaAnalyzerServiceImpl()
         .createInitSubstitutionNodeType(substitutionServiceTemplate,
-            ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE);
+            ToscaNodeType.MULTIFLAVOR_VFC_NODE_TYPE);
     substitutionNodeType.setProperties(
         getManualVspSubstitutionNodeTypeProperties(substitutionNodeType, componentName));
     return substitutionNodeType;