Support occurrences and instance count in import 70/135370/1
authorMichaelMorris <michael.morris@est.tech>
Wed, 12 Jul 2023 08:10:40 +0000 (09:10 +0100)
committerMichaelMorris <michael.morris@est.tech>
Wed, 12 Jul 2023 08:42:18 +0000 (09:42 +0100)
Signed-off-by: MichaelMorris <michael.morris@est.tech>
Issue-ID: SDC-4566
Change-Id: I884082253e3b3a9c20da68ab064f4ae6528f6fe0

catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceImportBusinessLogic.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/UploadComponentInstanceInfo.java
common-be/src/main/java/org/openecomp/sdc/be/utils/TypeUtils.java

index b90e3bb..7c031a2 100644 (file)
@@ -107,13 +107,10 @@ import org.openecomp.sdc.be.datatypes.elements.PropertyFilterConstraintDataDefin
 import org.openecomp.sdc.be.datatypes.elements.SubPropertyToscaFunction;
 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterPropertyDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.ToscaFunction;
-import org.openecomp.sdc.be.datatypes.elements.ToscaGetFunctionDataDefinition;
 import org.openecomp.sdc.be.datatypes.enums.ConstraintType;
 import org.openecomp.sdc.be.datatypes.elements.ToscaFunctionType;
 import org.openecomp.sdc.be.datatypes.enums.FilterValueType;
 import org.openecomp.sdc.be.datatypes.enums.PropertyFilterTargetType;
-import org.openecomp.sdc.be.datatypes.enums.PropertySource;
-import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType;
 import org.openecomp.sdc.be.model.CapabilityDefinition;
 import org.openecomp.sdc.be.model.Component;
 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
@@ -825,6 +822,7 @@ public class YamlTemplateParsingHandler {
                 setDirectives(nodeTemplateInfo, nodeTemplateJsonMap);
                 setNodeFilter(nodeTemplateInfo, nodeTemplateJsonMap);
                 setSubstitutions(substitutionMappings, nodeTemplateInfo);
+                setOccurrencesAndInstanceCount(nodeTemplateInfo, nodeTemplateJsonMap);
             } else {
                 rollbackWithException(ActionStatus.NOT_TOPOLOGY_TOSCA_TEMPLATE);
             }
@@ -932,6 +930,24 @@ public class YamlTemplateParsingHandler {
                 .createNodeFilterData(nodeTemplateJsonMap.get(TypeUtils.ToscaTagNamesEnum.NODE_FILTER.getElementName())));
         }
     }
+    
+    @SuppressWarnings("unchecked")
+    private void setOccurrencesAndInstanceCount(UploadComponentInstanceInfo nodeTemplateInfo, Map<String, Object> nodeTemplateJsonMap) {
+        if (nodeTemplateJsonMap.containsKey(TypeUtils.ToscaTagNamesEnum.OCCURRENCES.getElementName())) {
+            List<Object> occurrences = (List<Object>) nodeTemplateJsonMap.get(TypeUtils.ToscaTagNamesEnum.OCCURRENCES.getElementName());
+            nodeTemplateInfo.setMinOccurrences(occurrences.get(0).toString());
+            nodeTemplateInfo.setMaxOccurrences(occurrences.get(1).toString());
+        }
+        if (nodeTemplateJsonMap.containsKey(TypeUtils.ToscaTagNamesEnum.INSTANCE_COUNT.getElementName())) {
+            Object instanceCount = nodeTemplateJsonMap.get(TypeUtils.ToscaTagNamesEnum.INSTANCE_COUNT.getElementName());
+            if (instanceCount instanceof Map) {
+                String instanceCountAsString = "{get_input:" + (String)((Map)instanceCount).get("get_input") + "}";
+                nodeTemplateInfo.setInstanceCount(instanceCountAsString);
+            } else {
+                nodeTemplateInfo.setInstanceCount(instanceCount.toString());
+            }
+        }
+    }
 
     @SuppressWarnings("unchecked")
     private Map<String, List<UploadReqInfo>> createReqModuleFromYaml(Map<String, Object> nodeTemplateJsonMap, String nodeName) {
index b6a7fcc..a31e923 100644 (file)
@@ -2721,6 +2721,9 @@ public class ServiceImportBusinessLogic {
             Resource origResource = existingnodeTypeMap.get(uploadComponentInstanceInfo.getType());
             componentInstance.setName(uploadComponentInstanceInfo.getName());
             componentInstance.setIcon(origResource.getIcon());
+            componentInstance.setMinOccurrences(uploadComponentInstanceInfo.getMinOccurrences());
+            componentInstance.setMaxOccurrences(uploadComponentInstanceInfo.getMaxOccurrences());
+            componentInstance.setInstanceCount(uploadComponentInstanceInfo.getInstanceCount());
             resourcesInstancesMap.put(componentInstance, origResource);
         } catch (final ComponentException e) {
             throw e;
index 5aad2fb..f950827 100644 (file)
@@ -44,4 +44,7 @@ public class UploadComponentInstanceInfo {
     private Map<String, UploadInterfaceInfo> interfaces;
     private UploadNodeFilterInfo uploadNodeFilterInfo;
     private Map<String, List<OperationUi>> operations;
+    private String maxOccurrences;
+    private String minOccurrences;
+    private String instanceCount;
 }
index ff56772..a7e6975 100644 (file)
@@ -79,7 +79,8 @@ public class TypeUtils {
         IMPLEMENTATION("implementation"),
         SUBSTITUTION_FILTERS("substitution_filter"),
         DERIVED_FROM_NAME("derivedFromName"),
-        INTERFACE_TYPES("interface_types");
+        INTERFACE_TYPES("interface_types"),
+        INSTANCE_COUNT("instance_count");
         // @formatter:om
 
         private final String elementName;