aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java24
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortTemplateConsolidationData.java55
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java19
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java34
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java36
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/Constants.java3
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java107
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java45
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java44
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java26
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java32
11 files changed, 285 insertions, 140 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
index 8175072bbc..7c55c37d53 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
@@ -60,7 +60,9 @@ public class TranslationContext {
private static Map<String, ImplementationConfiguration> nameExtractorImplMap;
private static Map<String, ImplementationConfiguration> supportedConsolidationComputeResources;
private static Map<String, ImplementationConfiguration> supportedConsolidationPortResources;
+ private static List<String> vfcGroupSubInterfaceExposedProperties;
private static List<String> enrichPortResourceProperties;
+ private static ImplementationConfiguration vfcInstanceGroupConfiguration;
private ManifestFile manifest;
private FileContentHandler files = new FileContentHandler();
private Map<String, FileData.Type> manifestFiles = new HashMap<>();
@@ -94,7 +96,7 @@ public class TranslationContext {
private Set<String> nodeTemplateIdsPointingToStWithoutNodeTemplates = new HashSet<>();
- //Key - service template name, value - Map of key: node template id, value: proerties with %index%
+ //Key - service template name, value - Map of key: node template id, value: properties with %index%
private Map<String, ListMultimap<String, String>> indexVarProperties = new HashMap<>();
static {
@@ -118,6 +120,26 @@ public class TranslationContext {
enrichPortResourceProperties = config.getAsStringValues(ConfigConstants
.MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
.ENRICH_PORT_RESOURCE_PROP);
+ vfcInstanceGroupConfiguration = getVfcInstanceGroupConfiguration(config);
+ vfcGroupSubInterfaceExposedProperties = config.getAsStringValues(ConfigConstants
+ .UNIFIED_MODEL_NAMESPACE, ConfigConstants.FULL_EXPOSED_PROPERTIES_KEY);
+ }
+
+
+ private static ImplementationConfiguration getVfcInstanceGroupConfiguration(Configuration config) {
+ Map<String, ImplementationConfiguration> supportedUnifiedModelProperties =
+ config.populateMap(ConfigConstants.UNIFIED_MODEL_NAMESPACE, ConfigConstants.UNIFIED_MODEL_IMPL_KEY,
+ ImplementationConfiguration.class);
+ return MapUtils.isEmpty(supportedUnifiedModelProperties) ? null :
+ supportedUnifiedModelProperties.get(ConfigConstants.VFC_INSTANCE_GROUP_KEY);
+ }
+
+ public static boolean isVfcInstanceGroupingEnabled() {
+ return Objects.nonNull(vfcInstanceGroupConfiguration) && vfcInstanceGroupConfiguration.isEnable();
+ }
+
+ public static List<String> getExposedVfcInstanceGroupingProperties() {
+ return vfcGroupSubInterfaceExposedProperties;
}
public static List<String> getEnrichPortResourceProperties() {
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortTemplateConsolidationData.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortTemplateConsolidationData.java
index 5d372370e3..487771b12d 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortTemplateConsolidationData.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortTemplateConsolidationData.java
@@ -19,9 +19,15 @@ package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolid
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimaps;
+import org.apache.commons.collections4.CollectionUtils;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.sdc.heat.datatypes.model.Resource;
+import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
+import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
import java.util.List;
-import java.util.Set;
+import java.util.Objects;
+import java.util.Optional;
/**
@@ -32,7 +38,7 @@ public class PortTemplateConsolidationData extends EntityConsolidationData {
// key - sub-interface type - for ResourceGroup it is the nested file name
// value - List of sub-interfaces of that type in the port
private final ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceConsolidationData =
- Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
+ Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
private String networkRole;
@@ -44,13 +50,41 @@ public class PortTemplateConsolidationData extends EntityConsolidationData {
this.networkRole = networkRole;
}
- public List<SubInterfaceTemplateConsolidationData> getSubInterfaceConsolidationData(
- String subInterfaceType) {
- return this.subInterfaceConsolidationData.get(subInterfaceType);
+ public SubInterfaceTemplateConsolidationData getSubInterfaceResourceTemplateConsolidationData(Resource resource,
+ String subInterfaceNodeTemplateId,
+ String parentPortNodeTemplateId) {
+ String subInterfaceType = createSubInterfaceType(resource);
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ subInterfaceConsolidationData.get(subInterfaceType);
+ SubInterfaceTemplateConsolidationData consolidationData = null;
+ if (CollectionUtils.isNotEmpty(subInterfaceTemplateConsolidationDataList)) {
+ Optional<SubInterfaceTemplateConsolidationData> optionalConsolidationData =
+ subInterfaceTemplateConsolidationDataList.stream()
+ .filter(s -> s.getNodeTemplateId().equals(subInterfaceNodeTemplateId))
+ .findFirst();
+ if (optionalConsolidationData.isPresent()) {
+ consolidationData = optionalConsolidationData.get();
+ }
+ }
+
+ if (Objects.isNull(consolidationData)) {
+ consolidationData = createSubInterfaceConsolidationData(subInterfaceNodeTemplateId, parentPortNodeTemplateId);
+ addSubInterfaceConsolidationData(subInterfaceType, consolidationData);
+ }
+ return consolidationData;
}
- public Set<String> getAllSubInterfaceNodeTypes() {
- return this.subInterfaceConsolidationData.keySet();
+ private String createSubInterfaceType(Resource resource) {
+
+ return ToscaNodeType.VLAN_SUB_INTERFACE_RESOURCE_TYPE_PREFIX
+ + FileUtils.getFileWithoutExtention(HeatToToscaUtil.getSubInterfaceResourceType(resource));
+ }
+
+ private SubInterfaceTemplateConsolidationData createSubInterfaceConsolidationData(String subInterfaceNodeTemplateId, String parentPortNodeTemplateId) {
+ SubInterfaceTemplateConsolidationData data = new SubInterfaceTemplateConsolidationData();
+ data.setNodeTemplateId(subInterfaceNodeTemplateId);
+ data.setParentPortNodeTemplateId(parentPortNodeTemplateId);
+ return data;
}
public void addSubInterfaceConsolidationData(String subPortType,
@@ -81,6 +115,13 @@ public class PortTemplateConsolidationData extends EntityConsolidationData {
}
+ public boolean isSubInterfaceNodeTemplateIdParameter(String nodeTemplateType) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ this.subInterfaceConsolidationData.get(nodeTemplateType);
+ return (Objects.nonNull(subInterfaceTemplateConsolidationDataList)
+ && subInterfaceTemplateConsolidationDataList.size() > 1) ;
+ }
+
private int calculateSize(List<SubInterfaceTemplateConsolidationData> subInterfaces) {
return subInterfaces == null ? 0 : subInterfaces.size();
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java
index ca9f21b79a..676eb7d7a9 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java
@@ -1,21 +1,17 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * Copyright © 2016-2018 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.
- * ============LICENSE_END=========================================================
*/
package org.openecomp.sdc.translator.services.heattotosca;
@@ -24,6 +20,7 @@ public class ConfigConstants {
//namespaces
public static final String MANDATORY_TRANSLATOR_NAMESPACE = "mandatoryHeatToToscaTranslator";
public static final String MANDATORY_UNIFIED_MODEL_NAMESPACE = "mandatoryUnifiedModel";
+ public static final String UNIFIED_MODEL_NAMESPACE = "unifiedModel";
public static final String TRANSLATOR_NAMESPACE = "heatToToscaTranslator";
public static final String MAPPING_NAMESPACE = "heatToToscaMapping";
@@ -42,6 +39,10 @@ public class ConfigConstants {
"supportedConsolidationPortResources";
public static final String ENRICH_PORT_RESOURCE_PROP =
"enrichPortResourceProperties";
+ public static final String UNIFIED_MODEL_IMPL_KEY = "unifiedModelImpl";
+ public static final String VFC_INSTANCE_GROUP_KEY = "vfcInstanceGroup";
+ public static final String FULL_EXPOSED_PROPERTIES_KEY =
+ "unifiedModelImpl.vfcInstanceGroup.properties.exposedProperties";
//others
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
index 717f681073..282c444a57 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
@@ -16,7 +16,6 @@
package org.openecomp.sdc.translator.services.heattotosca;
-import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.openecomp.core.utilities.file.FileUtils;
@@ -25,7 +24,6 @@ import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
import org.openecomp.sdc.heat.datatypes.model.Resource;
-import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
@@ -211,40 +209,10 @@ public class ConsolidationDataUtil {
portTemplateConsolidationData);
}
- return getSubInterfaceResourceTemplateConsolidationData(subInterfaceTo.getResource(), portTemplateConsolidationData,
+ return portTemplateConsolidationData.getSubInterfaceResourceTemplateConsolidationData(subInterfaceTo.getResource(),
subInterfaceNodeTemplateId, parentPortNodeTemplateId);
}
- private static SubInterfaceTemplateConsolidationData getSubInterfaceResourceTemplateConsolidationData(
- Resource resource,
- PortTemplateConsolidationData portTemplateConsolidationData,
- String subInterfaceNodeTemplateId,
- String parentPortNodeTemplateId) {
- String subInterfaceType = ToscaNodeType.VLAN_SUB_INTERFACE_RESOURCE_TYPE_PREFIX
- + FileUtils.getFileWithoutExtention(HeatToToscaUtil.getSubInterfaceResourceType(resource));
- SubInterfaceTemplateConsolidationData data = new SubInterfaceTemplateConsolidationData();
- data.setNodeTemplateId(subInterfaceNodeTemplateId);
- data.setParentPortNodeTemplateId(parentPortNodeTemplateId);
- if (CollectionUtils.isNotEmpty(portTemplateConsolidationData.getSubInterfaceConsolidationData(subInterfaceType))) {
- boolean isNewSubInterface = true;
- List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
- portTemplateConsolidationData.getSubInterfaceConsolidationData(subInterfaceType);
- for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
- subInterfaceTemplateConsolidationDataList) {
- if (subInterfaceNodeTemplateId.equals(subInterfaceTemplateConsolidationData.getNodeTemplateId())) {
- data = subInterfaceTemplateConsolidationData;
- isNewSubInterface = false;
- }
- }
- if (isNewSubInterface) {
- portTemplateConsolidationData.addSubInterfaceConsolidationData(subInterfaceType, data);
- }
- } else {
- portTemplateConsolidationData.addSubInterfaceConsolidationData(subInterfaceType, data);
- }
- return data;
- }
-
/**
* Gets nested template consolidation data.
*
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
index 30a2f4ad20..cb6a3bc351 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
@@ -950,28 +950,34 @@ public class ConsolidationService {
FilePortConsolidationData filePortConsolidationData =
consolidationData.getPortConsolidationData().getFilePortConsolidationData(ToscaUtil
.getServiceTemplateFileName(serviceTemplate));
- List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
- new ArrayList<>();
- for (List<String> portList : portCollection) {
- for (String portId : portList) {
- if (!Objects.isNull(filePortConsolidationData)) {
- PortTemplateConsolidationData portTemplateConsolidationData =
- filePortConsolidationData.getPortTemplateConsolidationData(portId);
- unifiedCompositionData.addPortTemplateConsolidationData(portTemplateConsolidationData);
- if (portTemplateConsolidationData != null) {
- portTemplateConsolidationData.copyFlatInto(subInterfaceTemplateConsolidationDataList);
- }
- }
- }
- }
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = new ArrayList<>();
+ portCollection.stream()
+ .flatMap(Collection::stream)
+ .forEach(portId -> setUnifiedCompositionDataWithPortTemplateData(filePortConsolidationData, portId,
+ unifiedCompositionData, subInterfaceTemplateConsolidationDataList));
unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(
subInterfaceTemplateConsolidationDataList);
unifiedCompositionDataList.add(unifiedCompositionData);
}
-
return unifiedCompositionDataList;
}
+ private void setUnifiedCompositionDataWithPortTemplateData(FilePortConsolidationData filePortConsolidationData,
+ String portId,
+ UnifiedCompositionData unifiedCompositionData,
+ List<SubInterfaceTemplateConsolidationData>
+ subInterfaceTemplateConsolidationDataList) {
+ if (Objects.isNull(filePortConsolidationData)) {
+ return;
+ }
+ PortTemplateConsolidationData portTemplateConsolidationData =
+ filePortConsolidationData.getPortTemplateConsolidationData(portId);
+ unifiedCompositionData.addPortTemplateConsolidationData(portTemplateConsolidationData);
+ if (portTemplateConsolidationData != null) {
+ portTemplateConsolidationData.copyFlatInto(subInterfaceTemplateConsolidationDataList);
+ }
+ }
+
private List<UnifiedCompositionData> createSubstitutionUnifiedCompositionDataList(
String substituteNodeTemplateId,
ServiceTemplate serviceTemplate,
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/Constants.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/Constants.java
index 98e650719e..d0b1dd0096 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/Constants.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/Constants.java
@@ -26,11 +26,14 @@ public class Constants {
public static final String NAME_PROPERTY_NAME = "name";
public static final String SECURITY_GROUPS_PROPERTY_NAME = "security_groups";
public static final String PORT_PROPERTY_NAME = "port";
+ static final String VFC_PARENT_PORT_ROLE = "vfc_parent_port_role";
+ static final String SUB_INTERFACE_ROLE = "subinterface_role";
//General
public static final String PROP = "properties";
public static final String ATTR = "attributes";
public static final String SERVICE_INSTANCE_PORT_PREFIX = "port_";
public static final String SERVICE_INSTANCE_LINK_PREFIX = "link_";
+ static final String GROUP = "group";
//Unified model
static final String COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX = "vm_";
static final String COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX = "_name";
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
index ae48ccf156..f064fb6b60 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
@@ -16,6 +16,9 @@
package org.openecomp.sdc.translator.services.heattotosca;
+import static org.openecomp.sdc.tosca.datatypes.ToscaFunctions.GET_INPUT;
+import static org.openecomp.sdc.tosca.datatypes.ToscaNodeType.GROUP_TYPE_PREFIX;
+import static org.openecomp.sdc.tosca.datatypes.ToscaNodeType.VFC_INSTANCE_GROUP;
import static org.openecomp.sdc.tosca.services.DataModelUtil.getClonedObject;
import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity.COMPUTE;
import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity.PORT;
@@ -23,8 +26,11 @@ import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.co
import static org.openecomp.sdc.translator.services.heattotosca.Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX;
import static org.openecomp.sdc.translator.services.heattotosca.Constants.COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX;
import static org.openecomp.sdc.translator.services.heattotosca.Constants.COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.GROUP;
import static org.openecomp.sdc.translator.services.heattotosca.Constants.PORT_IDENTICAL_VALUE_PROPERTY_PREFIX;
import static org.openecomp.sdc.translator.services.heattotosca.Constants.SUB_INTERFACE_PROPERTY_VALUE_PREFIX;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.SUB_INTERFACE_ROLE;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.VFC_PARENT_PORT_ROLE;
import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getComputeTypeSuffix;
import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getConnectedComputeConsolidationData;
import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getNewComputeNodeTemplateId;
@@ -34,6 +40,7 @@ import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositi
import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfaceTemplateConsolidationDataList;
import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfaceTypeSuffix;
+import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.collections4.CollectionUtils;
@@ -268,6 +275,92 @@ public class UnifiedCompositionService {
}
+ public void createVfcInstanceGroup(String abstractNodeTemplateId,
+ ServiceTemplate serviceTemplate,
+ List<UnifiedCompositionData> unifiedCompositionDataList,
+ TranslationContext context) {
+ if (!TranslationContext.isVfcInstanceGroupingEnabled()) {
+ return;
+ }
+ for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ if (CollectionUtils.isNotEmpty(subInterfaceTemplateConsolidationDataList)) {
+ createVfcInstanceGroupPerSubInterface(abstractNodeTemplateId, serviceTemplate,
+ subInterfaceTemplateConsolidationDataList, context);
+ }
+ }
+ }
+
+ private void createVfcInstanceGroupPerSubInterface(String abstractNodeTemplateId,
+ ServiceTemplate serviceTemplate,
+ List<SubInterfaceTemplateConsolidationData>
+ subInterfaceList,
+ TranslationContext context) {
+ for (SubInterfaceTemplateConsolidationData subInterface : subInterfaceList) {
+ PortTemplateConsolidationData subInterfacePortTemplateConsolidationData =
+ getSubInterfacePortTemplateConsolidationData(serviceTemplate, subInterface, context);
+ String subInterfaceNetworkRole = subInterface.getNetworkRole();
+ if (Objects.isNull(subInterfaceNetworkRole)
+ || Objects.isNull(subInterfacePortTemplateConsolidationData.getNetworkRole())) {
+ continue;
+ }
+ String vfcNetworkRoleGroupId = getVfcNetworkRoleGroupId(subInterfaceNetworkRole);
+ Map<String, GroupDefinition> groups = DataModelUtil.getGroups(serviceTemplate);
+ if (!groups.containsKey(vfcNetworkRoleGroupId)) {
+ createNewVfcInstanceGroup(serviceTemplate, subInterfacePortTemplateConsolidationData,
+ subInterfaceNetworkRole, vfcNetworkRoleGroupId);
+ }
+ DataModelUtil.addGroupMember(serviceTemplate, vfcNetworkRoleGroupId, abstractNodeTemplateId);
+ }
+ }
+
+ private void createNewVfcInstanceGroup(ServiceTemplate serviceTemplate,
+ PortTemplateConsolidationData portTemplate,
+ String subInterfaceNetworkRole,
+ String vfcNetworkRoleGroupId) {
+ Map<String, Object> properties = new HashMap<>();
+ properties.put(SUB_INTERFACE_ROLE, subInterfaceNetworkRole);
+ properties.put(VFC_PARENT_PORT_ROLE, portTemplate.getNetworkRole());
+
+ updateVfcInstanceGroupExposedProperties(subInterfaceNetworkRole,
+ serviceTemplate, properties);
+
+ GroupDefinition groupDefinition = new GroupDefinition();
+ groupDefinition.setType(GROUP_TYPE_PREFIX + VFC_INSTANCE_GROUP);
+ groupDefinition.setProperties(properties);
+
+ DataModelUtil.addGroupDefinitionToTopologyTemplate(serviceTemplate,
+ vfcNetworkRoleGroupId, groupDefinition);
+ }
+
+ private void updateVfcInstanceGroupExposedProperties(String subInterfaceNetworkRole,
+ ServiceTemplate serviceTemplate,
+ Map<String, Object> properties) {
+ List<String> exposedVfcInstanceGroupingProperties =
+ TranslationContext.getExposedVfcInstanceGroupingProperties();
+
+ if (CollectionUtils.isEmpty(exposedVfcInstanceGroupingProperties)) {
+ return;
+ }
+
+ for (String propertyName : exposedVfcInstanceGroupingProperties) {
+ Map<String, Object> getInputMap = new HashMap<>();
+ String vfcGroupPropertyInputName = subInterfaceNetworkRole + "_" + propertyName;
+ getInputMap.put(GET_INPUT.getDisplayName(), vfcGroupPropertyInputName);
+ properties.put(propertyName, getInputMap);
+
+ addInputParameter(vfcGroupPropertyInputName, PropertyType.STRING.getDisplayName(), null,
+ serviceTemplate);
+ }
+ }
+
+ private String getVfcNetworkRoleGroupId(String subInterfaceNetworkRole) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(subInterfaceNetworkRole).append("_").append(GROUP);
+ return sb.toString();
+ }
+
/**
* Update the connectivity from/to the "moved" nodes from the original service template to the new
* substitution service template.
@@ -2612,7 +2705,7 @@ public class UnifiedCompositionService {
case SUB_INTERFACE:
String subInterfaceType = getSubInterfaceTypeSuffix(nodeTemplate.getType());
if (Objects.isNull(portTemplateConsolidationData)
- || isSubInterfaceNodeTemplateIdParameter(portTemplateConsolidationData, nodeTemplate)) {
+ || portTemplateConsolidationData.isSubInterfaceNodeTemplateIdParameter(nodeTemplate.getType())) {
paramterId = UnifiedCompositionEntity.SUB_INTERFACE.getDisplayName().toLowerCase() + "_"
+ nodeTemplateId + "_" + propertyId;
} else {
@@ -2626,14 +2719,6 @@ public class UnifiedCompositionService {
return paramterId;
}
- private boolean isSubInterfaceNodeTemplateIdParameter(PortTemplateConsolidationData portTemplateConsolidationData,
- NodeTemplate nodeTemplate) {
- List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
- portTemplateConsolidationData.getSubInterfaceConsolidationData(nodeTemplate.getType());
- return (Objects.nonNull(subInterfaceTemplateConsolidationDataList)
- && subInterfaceTemplateConsolidationDataList.size() > 1) ;
- }
-
private void removeConnectivityOut(EntityConsolidationData entityConsolidationData,
NodeTemplate nodeTemplate) {
if (MapUtils.isEmpty(entityConsolidationData.getNodesConnectedOut())) {
@@ -2966,7 +3051,9 @@ public class UnifiedCompositionService {
getPortTemplateConsolidationDataList(unifiedCompositionData);
for (PortTemplateConsolidationData portTemplateConsolidationData :
portTemplateConsolidationDataList) {
- subInterfaceTypes.addAll(portTemplateConsolidationData.getAllSubInterfaceNodeTypes());
+ ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceTypeToEntity = ArrayListMultimap.create();
+ portTemplateConsolidationData.copyMappedInto(subInterfaceTypeToEntity);
+ subInterfaceTypes.addAll(subInterfaceTypeToEntity.keySet());
}
if (subInterfaceTypes.stream().map(UnifiedCompositionUtil::getSubInterfaceTypeSuffix)
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java
index 4d9a269c2e..223dc8760a 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java
@@ -18,7 +18,6 @@ package org.openecomp.sdc.translator.services.heattotosca;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
-import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
@@ -39,8 +38,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
/**
* Utility class for consolidation data collection helper methods.
@@ -80,32 +77,11 @@ public class UnifiedCompositionUtil {
portTemplateConsolidationDataCollection) {
ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceDataByType = ArrayListMultimap.create();
for (PortTemplateConsolidationData port : portTemplateConsolidationDataCollection) {
- Set<String> allSubInterfaceNodeTypes = port.getAllSubInterfaceNodeTypes();
- if (CollectionUtils.isEmpty(allSubInterfaceNodeTypes)) {
- continue;
- }
- for (String subInterfaceNodeType : allSubInterfaceNodeTypes) {
- subInterfaceDataByType.putAll(subInterfaceNodeType,
- port.getSubInterfaceConsolidationData(subInterfaceNodeType));
- }
+ port.copyMappedInto(subInterfaceDataByType);
}
return subInterfaceDataByType;
}
- static List<String> getSubInterfaceNodeTemplateIdsByType(PortTemplateConsolidationData
- portTemplateConsolidationData,
- String subInterfaceType) {
- List<String> subInterfaceNodeTemplateIds = new ArrayList<>();
- List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
- portTemplateConsolidationData.getSubInterfaceConsolidationData(subInterfaceType);
- if (CollectionUtils.isNotEmpty(subInterfaceTemplateConsolidationDataList)) {
- subInterfaceNodeTemplateIds = subInterfaceTemplateConsolidationDataList.stream()
- .map(SubInterfaceTemplateConsolidationData::getNodeTemplateId)
- .collect(Collectors.toList());
- }
- return subInterfaceNodeTemplateIds;
- }
-
private static void addPortsToMap(Map<String, List<String>> portTypeToIds,
Map<String, List<String>> ports) {
for (Map.Entry<String, List<String>> portTypeToIdEntry : ports.entrySet()) {
@@ -184,21 +160,14 @@ public class UnifiedCompositionUtil {
NodeTemplate subInterfaceNodeTemplate =
DataModelUtil.getNodeTemplate(serviceTemplate, subInterfaceTemplateConsolidationData.getNodeTemplateId());
if (Objects.nonNull(portTemplateConsolidationData)) {
- List<String> subInterfaceNodeTemplateIdsByType =
- UnifiedCompositionUtil.getSubInterfaceNodeTemplateIdsByType(portTemplateConsolidationData,
- subInterfaceNodeTemplate.getType());
- if (CollectionUtils.isNotEmpty(subInterfaceNodeTemplateIdsByType)) {
- //If there are more than one subinterfaces with same type use node template id
- if (subInterfaceNodeTemplateIdsByType.size() > 1) {
- newSubInterfaceNodeTemplateId.append("_").append(subInterfaceTemplateConsolidationData.getNodeTemplateId());
- } else {
- //Add sub interface type since we have only one subinterface per type
- String subInterfaceTypeSuffix = getSubInterfaceTypeSuffix(subInterfaceNodeTemplate.getType());
- newSubInterfaceNodeTemplateId.append("_").append(subInterfaceTypeSuffix);
- }
+ String subInterfaceSuffix = (portTemplateConsolidationData.isSubInterfaceNodeTemplateIdParameter(subInterfaceNodeTemplate.getType()))?
+ //If there are more than one subinterfaces with same type use node template id
+ subInterfaceTemplateConsolidationData.getNodeTemplateId():
+ //Add sub interface type since we have only one subinterface per type
+ getSubInterfaceTypeSuffix(subInterfaceNodeTemplate.getType());
+ newSubInterfaceNodeTemplateId.append("_").append(subInterfaceSuffix);
return newSubInterfaceNodeTemplateId.toString();
}
- }
return subInterfaceTemplateConsolidationData.getNodeTemplateId();
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java
index dfb40af698..ad7deb9797 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright © 2016-2018 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.
+ */
+
package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
@@ -12,31 +28,26 @@ import java.util.Optional;
public class UnifiedCompositionCatalogInstance implements UnifiedComposition {
- UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
-
- // There is consolidation in ScalingInstance implemetation.
+ // There is consolidation in ScalingInstance implementation.
// In case of scaling instance, if there is more than one entry in the
- // unifiedComposotionDataList, we should have consolidation between them.
+ // unifiedCompositionDataList, we should have consolidation between them.
// (all entries in the list are the once which need to be consolidated)
@Override
public void createUnifiedComposition(ServiceTemplate serviceTemplate,
ServiceTemplate nestedServiceTemplate,
- List<UnifiedCompositionData> unifiedComposotionDataList,
+ List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
- UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
- new UnifiedCompositionSingleSubstitution();
-
String substitutionNodeTypeId =
unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
- unifiedComposotionDataList.get(0), null, context);
+ unifiedCompositionDataList.get(0), null, context);
// create one substitution ST for all computes
Optional<ServiceTemplate> substitutionServiceTemplate =
unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
- unifiedComposotionDataList, context, substitutionNodeTypeId, null);
+ unifiedCompositionDataList, context, substitutionNodeTypeId, null);
if (!substitutionServiceTemplate.isPresent()) {
return;
@@ -44,16 +55,19 @@ public class UnifiedCompositionCatalogInstance implements UnifiedComposition {
// create abstract NT for each compute
- for(int i = 0; i < unifiedComposotionDataList.size(); i++){
+ for (int i = 0; i < unifiedCompositionDataList.size(); i++) {
List<UnifiedCompositionData> catalogInstanceUnifiedList = new ArrayList<>();
- catalogInstanceUnifiedList.add(unifiedComposotionDataList.get(i));
+ catalogInstanceUnifiedList.add(unifiedCompositionDataList.get(i));
- Integer index = unifiedComposotionDataList.size() > 1 ? i : null;
+ Integer index = unifiedCompositionDataList.size() > 1 ? i : null;
- unifiedCompositionService
+ String abstractSubstituteNodeTemplateId = unifiedCompositionService
.createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
catalogInstanceUnifiedList, substitutionNodeTypeId, context, index);
+ unifiedCompositionService.createVfcInstanceGroup(abstractSubstituteNodeTemplateId,
+ serviceTemplate, catalogInstanceUnifiedList, context);
+
unifiedCompositionService
.updateCompositionConnectivity(serviceTemplate, catalogInstanceUnifiedList, context);
@@ -61,7 +75,7 @@ public class UnifiedCompositionCatalogInstance implements UnifiedComposition {
.cleanUnifiedCompositionEntities(serviceTemplate, catalogInstanceUnifiedList, context);
}
- unifiedCompositionService.cleanNodeTypes(serviceTemplate, unifiedComposotionDataList, context);
+ unifiedCompositionService.cleanNodeTypes(serviceTemplate, unifiedCompositionDataList, context);
unifiedCompositionService.updateSubstitutionNodeTypePrefix(substitutionServiceTemplate.get());
}
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java
index 9572f672dd..6f53249542 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright © 2016-2018 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.
+ */
+
package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
import org.apache.commons.collections4.CollectionUtils;
@@ -26,21 +42,23 @@ public class UnifiedCompositionScalingInstances implements UnifiedComposition {
unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
- Integer index = null;
String substitutionNodeTypeId =
unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
unifiedCompositionDataList.get(0), null, context);
Optional<ServiceTemplate> substitutionServiceTemplate =
unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
- unifiedCompositionDataList, context, substitutionNodeTypeId, index);
+ unifiedCompositionDataList, context, substitutionNodeTypeId, null);
if (!substitutionServiceTemplate.isPresent()) {
return;
}
- String abstractNodeTemplateId = unifiedCompositionService
+ String abstractSubstituteNodeTemplateId = unifiedCompositionService
.createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
- unifiedCompositionDataList, substitutionNodeTypeId, context, index);
+ unifiedCompositionDataList, substitutionNodeTypeId, context, null);
+
+ unifiedCompositionService.createVfcInstanceGroup(abstractSubstituteNodeTemplateId,
+ serviceTemplate, unifiedCompositionDataList, context);
unifiedCompositionService
.updateCompositionConnectivity(serviceTemplate, unifiedCompositionDataList, context);
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java
index ef9555302c..ee5d465d3c 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright © 2016-2018 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.
+ */
+
package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
import org.apache.commons.collections4.CollectionUtils;
@@ -17,14 +33,14 @@ import java.util.Optional;
*/
public class UnifiedCompositionSingleSubstitution implements UnifiedComposition {
- UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
+ private UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
- // There is no consolidation in SingleSubstitution implemetation.
+ // There is no consolidation in SingleSubstitution implementation.
// In case of single substitution, if there is more than one entry in the
- // unifiedComposotionDataList, they all should contain the same compute type but the
+ // unifiedCompositionDataList, they all should contain the same compute type but the
// consolidation between them was canceled.
// For different compute type, this implementation will be called more than once, each time
- // per diff compute type, while sending one entry in the unifiedComposotionDataList.
+ // per diff compute type, while sending one entry in the unifiedCompositionDataList.
@Override
public void createUnifiedComposition(ServiceTemplate serviceTemplate,
ServiceTemplate nestedServiceTemplate,
@@ -41,8 +57,6 @@ public class UnifiedCompositionSingleSubstitution implements UnifiedComposition
List<UnifiedCompositionData> singleSubstitutionUnifiedList = new ArrayList<>();
singleSubstitutionUnifiedList.add(unifiedCompositionDataList.get(i));
- Integer index = unifiedCompositionDataList.size() > 1 ? i : null;
-
String substitutionNodeTypeId =
unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
singleSubstitutionUnifiedList.get(0), null, context);
@@ -55,11 +69,13 @@ public class UnifiedCompositionSingleSubstitution implements UnifiedComposition
continue;
}
-
- String abstractNodeTemplateId = unifiedCompositionService
+ String abstractSubstituteNodeTemplateId = unifiedCompositionService
.createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
singleSubstitutionUnifiedList, substitutionNodeTypeId, context, null);
+ unifiedCompositionService.createVfcInstanceGroup(abstractSubstituteNodeTemplateId,
+ serviceTemplate, singleSubstitutionUnifiedList, context);
+
unifiedCompositionService
.updateCompositionConnectivity(serviceTemplate, singleSubstitutionUnifiedList, context);