From 4345677a2732d0a713300180d83f529a1adc63ff Mon Sep 17 00:00:00 2001 From: ojasdubey Date: Tue, 27 Mar 2018 15:01:07 +0530 Subject: VLAN tagging - Pattern 4 VFC Instance Group 1. Create VFC instance group per sub-interface network role for pattern 4 heats 2. Added tests and updated existing test data Change-Id: Id4f84c5a7dac3adfddde1192947ecaa5502f21df Issue-ID: SDC-1073 Signed-off-by: ojasdubey --- .../SubInterfaceTemplateConsolidationData.java | 29 + .../services/heattotosca/ConsolidationService.java | 67 +- .../heattotosca/UnifiedCompositionService.java | 154 ++--- .../heattotosca/UnifiedCompositionUtil.java | 56 +- .../UnifiedCompositionNestedSingleCompute.java | 25 +- .../heattotosca/UnifiedCompositionServiceTest.java | 33 +- .../UnifiedCompositionSubInterfaceFullTest.java | 15 +- .../out/nested_pattern5ServiceTemplate.yaml | 1 + .../out/nested_pattern5ServiceTemplate.yaml | 1 + .../in/MANIFEST.json | 22 + .../in/main.yml | 35 ++ .../in/nested_pattern4.yml | 233 +++++++ .../in/nested_vlan.yml | 116 ++++ .../GlobalSubstitutionTypesServiceTemplate.yaml | 692 +++++++++++++++++++++ .../out/MainServiceTemplate.yaml | 110 ++++ .../out/nested_pattern4ServiceTemplate.yaml | 561 +++++++++++++++++ .../out/nested_vlanServiceTemplate.yaml | 171 +++++ 17 files changed, 2165 insertions(+), 156 deletions(-) create mode 100644 openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/MANIFEST.json create mode 100644 openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/main.yml create mode 100644 openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/nested_pattern4.yml create mode 100644 openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/nested_vlan.yml create mode 100644 openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml create mode 100644 openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/MainServiceTemplate.yaml create mode 100644 openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/nested_pattern4ServiceTemplate.yaml create mode 100644 openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/nested_vlanServiceTemplate.yaml 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/SubInterfaceTemplateConsolidationData.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/SubInterfaceTemplateConsolidationData.java index 9a6826d644..9b80b91ce5 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/SubInterfaceTemplateConsolidationData.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/SubInterfaceTemplateConsolidationData.java @@ -16,6 +16,12 @@ package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.ToscaUtil; +import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; + +import java.util.Optional; + public class SubInterfaceTemplateConsolidationData extends EntityConsolidationData { //Value of the property count in the resource group representing the sub-interface @@ -48,4 +54,27 @@ public class SubInterfaceTemplateConsolidationData extends EntityConsolidationDa public void setParentPortNodeTemplateId(String parentPortNodeTemplateId) { this.parentPortNodeTemplateId = parentPortNodeTemplateId; } + + public Optional getParentPortTemplateConsolidationData(ServiceTemplate serviceTemplate, + TranslationContext context) { + FilePortConsolidationData filePortConsolidationData = context.getConsolidationData().getPortConsolidationData() + .getFilePortConsolidationData(ToscaUtil.getServiceTemplateFileName(serviceTemplate)); + PortTemplateConsolidationData portTemplateConsolidationData = null; + if (filePortConsolidationData != null) { + portTemplateConsolidationData = filePortConsolidationData + .getPortTemplateConsolidationData(parentPortNodeTemplateId); + } + return Optional.ofNullable(portTemplateConsolidationData); + } + + public Optional getParentPortNetworkRole(ServiceTemplate serviceTemplate, + TranslationContext context) { + Optional subInterfacePortTemplateConsolidationData = + getParentPortTemplateConsolidationData(serviceTemplate, context); + if (!subInterfacePortTemplateConsolidationData.isPresent()) { + return Optional.empty(); + } + return Optional.ofNullable(subInterfacePortTemplateConsolidationData.get().getNetworkRole()); + } + } 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 cb6a3bc351..9fe2ea0fbd 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 @@ -834,7 +834,7 @@ public class ConsolidationService { if (substitutionConsolidationRuleResult) { List unifiedCompositionDataList = createSubstitutionUnifiedCompositionDataList(substituteNodeTemplateId, - serviceTemplate, consolidationData); + serviceTemplate, substitutionServiceTemplate, consolidationData); unifiedCompositionService .createUnifiedComposition(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, UnifiedCompositionMode.NestedSingleCompute, @@ -939,33 +939,22 @@ public class ConsolidationService { for (ComputeTemplateConsolidationData computeTemplateConsolidationData : typeComputeConsolidationData .getAllComputeTemplateConsolidationData()) { - UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData(); unifiedCompositionData.setComputeTemplateConsolidationData(computeTemplateConsolidationData); - - Collection> portCollection = - computeTemplateConsolidationData.getPorts() == null ? Collections.emptyList() - : computeTemplateConsolidationData.getPorts().values(); - FilePortConsolidationData filePortConsolidationData = consolidationData.getPortConsolidationData().getFilePortConsolidationData(ToscaUtil .getServiceTemplateFileName(serviceTemplate)); - List subInterfaceTemplateConsolidationDataList = new ArrayList<>(); - portCollection.stream() - .flatMap(Collection::stream) - .forEach(portId -> setUnifiedCompositionDataWithPortTemplateData(filePortConsolidationData, portId, - unifiedCompositionData, subInterfaceTemplateConsolidationDataList)); - unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList( - subInterfaceTemplateConsolidationDataList); + setUnifiedCompositionDataWithPortTemplateData(computeTemplateConsolidationData, filePortConsolidationData, + unifiedCompositionData); unifiedCompositionDataList.add(unifiedCompositionData); } return unifiedCompositionDataList; } - private void setUnifiedCompositionDataWithPortTemplateData(FilePortConsolidationData filePortConsolidationData, - String portId, - UnifiedCompositionData unifiedCompositionData, - List + private void setPortTemplateConsolidationData(FilePortConsolidationData filePortConsolidationData, + String portId, + UnifiedCompositionData unifiedCompositionData, + List subInterfaceTemplateConsolidationDataList) { if (Objects.isNull(filePortConsolidationData)) { return; @@ -981,6 +970,7 @@ public class ConsolidationService { private List createSubstitutionUnifiedCompositionDataList( String substituteNodeTemplateId, ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate, ConsolidationData consolidationData) { List unifiedCompositionDataList = new ArrayList<>(); FileNestedConsolidationData fileNestedConsolidationData = @@ -993,12 +983,51 @@ public class ConsolidationService { UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData(); unifiedCompositionData.setNestedTemplateConsolidationData(nestedTemplateConsolidationData); unifiedCompositionDataList.add(unifiedCompositionData); - return unifiedCompositionDataList; + addSubInterfaceDataToNestedCompositionData(substitutionServiceTemplate, consolidationData, + unifiedCompositionData); } return unifiedCompositionDataList; } + private void addSubInterfaceDataToNestedCompositionData(ServiceTemplate substitutionServiceTemplate, + ConsolidationData consolidationData, + UnifiedCompositionData unifiedCompositionData) { + FileComputeConsolidationData nestedFileComputeConsolidationData = consolidationData.getComputeConsolidationData() + .getFileComputeConsolidationData(ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate)); + FilePortConsolidationData nestedFilePortConsolidationData = consolidationData.getPortConsolidationData() + .getFilePortConsolidationData(ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate)); + if (Objects.isNull(nestedFileComputeConsolidationData) + || Objects.isNull(nestedFilePortConsolidationData)) { + return; + } + TypeComputeConsolidationData computeType = + nestedFileComputeConsolidationData.getAllTypeComputeConsolidationData().iterator().next(); + if (Objects.isNull(computeType)) { + return; + } + ComputeTemplateConsolidationData computeTemplateConsolidationData = + computeType.getAllComputeTemplateConsolidationData().iterator().next(); + setUnifiedCompositionDataWithPortTemplateData(computeTemplateConsolidationData, nestedFilePortConsolidationData, + unifiedCompositionData); + } + + private void setUnifiedCompositionDataWithPortTemplateData(ComputeTemplateConsolidationData + computeTemplateConsolidationData, + FilePortConsolidationData filePortConsolidationData, + UnifiedCompositionData unifiedCompositionData) { + Collection> portCollection = + computeTemplateConsolidationData.getPorts() == null ? Collections.emptyList() + : computeTemplateConsolidationData.getPorts().values(); + List subInterfaceTemplateConsolidationDataList = new ArrayList<>(); + portCollection.stream() + .flatMap(Collection::stream) + .forEach(portId -> setPortTemplateConsolidationData(filePortConsolidationData, portId, + unifiedCompositionData, subInterfaceTemplateConsolidationDataList)); + unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList( + subInterfaceTemplateConsolidationDataList); + } + private boolean consolidationPreCondition( ServiceTemplate serviceTemplate, ConsolidationData consolidationData, 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 f064fb6b60..0217d02328 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 @@ -36,7 +36,6 @@ import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositi import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getNewComputeNodeTemplateId; import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getNewPortNodeTemplateId; import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getNewSubInterfaceNodeTemplateId; -import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfacePortTemplateConsolidationData; import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfaceTemplateConsolidationDataList; import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfaceTypeSuffix; @@ -282,46 +281,53 @@ public class UnifiedCompositionService { if (!TranslationContext.isVfcInstanceGroupingEnabled()) { return; } - for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { - List subInterfaceTemplateConsolidationDataList = - getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData); - if (CollectionUtils.isNotEmpty(subInterfaceTemplateConsolidationDataList)) { - createVfcInstanceGroupPerSubInterface(abstractNodeTemplateId, serviceTemplate, - subInterfaceTemplateConsolidationDataList, context); - } - } + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(serviceTemplate, null, + unifiedCompositionDataList, context); + unifiedCompositionDataList.forEach(unifiedCompositionData -> + createSubInterfaceVfcInstanceGroup(abstractNodeTemplateId, unifiedCompositionTo, unifiedCompositionData)); } - private void createVfcInstanceGroupPerSubInterface(String abstractNodeTemplateId, - ServiceTemplate serviceTemplate, - List - 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; + private void createSubInterfaceVfcInstanceGroup(String abstractNodeTemplateId, + UnifiedCompositionTo unifiedCompositionTo, + UnifiedCompositionData unifiedCompositionData) { + List subInterfaceTemplateConsolidationDataList = + getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData); + for (SubInterfaceTemplateConsolidationData subInterface : subInterfaceTemplateConsolidationDataList) { + Optional parentPortNetworkRole; + if (Objects.isNull(unifiedCompositionTo.getSubstitutionServiceTemplate())) { + parentPortNetworkRole = subInterface.getParentPortNetworkRole(unifiedCompositionTo.getServiceTemplate(), + unifiedCompositionTo.getContext()); + } else { + parentPortNetworkRole = subInterface.getParentPortNetworkRole(unifiedCompositionTo + .getSubstitutionServiceTemplate(), unifiedCompositionTo.getContext()); } - String vfcNetworkRoleGroupId = getVfcNetworkRoleGroupId(subInterfaceNetworkRole); - Map groups = DataModelUtil.getGroups(serviceTemplate); - if (!groups.containsKey(vfcNetworkRoleGroupId)) { - createNewVfcInstanceGroup(serviceTemplate, subInterfacePortTemplateConsolidationData, - subInterfaceNetworkRole, vfcNetworkRoleGroupId); + String subInterfaceNetworkRole = subInterface.getNetworkRole(); + if (Objects.nonNull(subInterfaceNetworkRole) && parentPortNetworkRole.isPresent()) { + createVfcInstanceGroupPerSubInterfaceNetworkRole(abstractNodeTemplateId, subInterfaceNetworkRole, + parentPortNetworkRole.get(), unifiedCompositionTo.getServiceTemplate()); } - DataModelUtil.addGroupMember(serviceTemplate, vfcNetworkRoleGroupId, abstractNodeTemplateId); } } + private void createVfcInstanceGroupPerSubInterfaceNetworkRole(String abstractNodeTemplateId, + String subInterfaceNetworkRole, + String parentPortNetworkRole, + ServiceTemplate serviceTemplate) { + String vfcNetworkRoleGroupId = getVfcNetworkRoleGroupId(subInterfaceNetworkRole); + Map groups = DataModelUtil.getGroups(serviceTemplate); + if (!groups.containsKey(vfcNetworkRoleGroupId)) { + createNewVfcInstanceGroup(serviceTemplate, parentPortNetworkRole, subInterfaceNetworkRole, vfcNetworkRoleGroupId); + } + DataModelUtil.addGroupMember(serviceTemplate, vfcNetworkRoleGroupId, abstractNodeTemplateId); + } + private void createNewVfcInstanceGroup(ServiceTemplate serviceTemplate, - PortTemplateConsolidationData portTemplate, + String parentPortNetworkRole, String subInterfaceNetworkRole, String vfcNetworkRoleGroupId) { Map properties = new HashMap<>(); properties.put(SUB_INTERFACE_ROLE, subInterfaceNetworkRole); - properties.put(VFC_PARENT_PORT_ROLE, portTemplate.getNetworkRole()); + properties.put(VFC_PARENT_PORT_ROLE, parentPortNetworkRole); updateVfcInstanceGroupExposedProperties(subInterfaceNetworkRole, serviceTemplate, properties); @@ -494,18 +500,15 @@ public class UnifiedCompositionService { /** * Handle unified nested definition. * - * @param mainServiceTemplate the main service template - * @param nestedServiceTemplate the nested service template - * @param unifiedCompositionData the unified composition data - * @param context the context + * @param unifiedCompositionTo the unified composition data transfer object + * @param unifiedCompositionData the unified composition data */ - public void handleUnifiedNestedDefinition(ServiceTemplate mainServiceTemplate, - ServiceTemplate nestedServiceTemplate, - UnifiedCompositionData unifiedCompositionData, - TranslationContext context) { - handleUnifiedNestedNodeType(mainServiceTemplate, nestedServiceTemplate, context); - updateUnifiedNestedTemplates(mainServiceTemplate, nestedServiceTemplate, - unifiedCompositionData, context); + public void handleUnifiedNestedDefinition(UnifiedCompositionTo unifiedCompositionTo, + UnifiedCompositionData unifiedCompositionData) { + handleUnifiedNestedNodeType(unifiedCompositionTo.getServiceTemplate(), unifiedCompositionTo + .getSubstitutionServiceTemplate(), unifiedCompositionTo.getContext()); + updateUnifiedNestedTemplates(unifiedCompositionTo.getServiceTemplate(), unifiedCompositionTo + .getSubstitutionServiceTemplate(), unifiedCompositionData, unifiedCompositionTo.getContext()); } private void handleGetAttrInConnectivity(ServiceTemplate serviceTemplate, @@ -687,51 +690,55 @@ public class UnifiedCompositionService { return; } handleNestedNodeTemplateInMainServiceTemplate( - nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate, - nestedServiceTemplate, context); - + nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate, + nestedServiceTemplate, context); } /** * Update connectivity for unified nested patterns. * - * @param serviceTemplate the service template - * @param nestedServiceTemplate the nested service template - * @param unifiedCompositionData the unified composition data - * @param context the context + * @param unifiedCompositionTo the unified composition data transfer object + * @param unifiedCompositionData the unified composition data */ - public void updateUnifiedNestedConnectivity(ServiceTemplate serviceTemplate, - ServiceTemplate nestedServiceTemplate, - UnifiedCompositionData unifiedCompositionData, - TranslationContext context) { + public void updateUnifiedNestedConnectivity(UnifiedCompositionTo unifiedCompositionTo, + UnifiedCompositionData unifiedCompositionData) { - updNestedCompositionNodesConnectedInConnectivity(serviceTemplate, unifiedCompositionData, - context); - updNestedCompositionNodesConnectedOutConnectivity(serviceTemplate, nestedServiceTemplate, - unifiedCompositionData, context); - updNestedCompositionNodesGetAttrInConnectivity(serviceTemplate, unifiedCompositionData, - context); - updNestedCompositionOutputParamGetAttrInConnectivity(serviceTemplate, - unifiedCompositionData, context); + updNestedCompositionNodesConnectedInConnectivity(unifiedCompositionTo.getServiceTemplate(), unifiedCompositionData, + unifiedCompositionTo.getContext()); + updNestedCompositionNodesConnectedOutConnectivity(unifiedCompositionTo.getServiceTemplate(), + unifiedCompositionTo.getSubstitutionServiceTemplate(), unifiedCompositionData, unifiedCompositionTo + .getContext()); + updNestedCompositionNodesGetAttrInConnectivity(unifiedCompositionTo.getServiceTemplate(), unifiedCompositionData, + unifiedCompositionTo.getContext()); + updNestedCompositionOutputParamGetAttrInConnectivity(unifiedCompositionTo.getServiceTemplate(), + unifiedCompositionData, unifiedCompositionTo.getContext()); } /** * Clean unified nested entities. Update the heat stack group with the new node template ids. * - * @param serviceTemplate the service template + * @param unifiedCompositionTo the unified composition data transfer object * @param unifiedCompositionData the unified composition data - * @param context the context */ - public void cleanUnifiedNestedEntities(ServiceTemplate serviceTemplate, - UnifiedCompositionData unifiedCompositionData, - TranslationContext context) { + public void cleanUnifiedNestedEntities(UnifiedCompositionTo unifiedCompositionTo, + UnifiedCompositionData unifiedCompositionData) { EntityConsolidationData entityConsolidationData = - unifiedCompositionData.getNestedTemplateConsolidationData(); - updateHeatStackGroupNestedComposition(serviceTemplate, entityConsolidationData, context); + unifiedCompositionData.getNestedTemplateConsolidationData(); + updateHeatStackGroupNestedComposition(unifiedCompositionTo.getServiceTemplate(), entityConsolidationData, + unifiedCompositionTo.getContext()); } + public void createNestedVfcInstanceGroup(String nestedNodeTemplateId, + UnifiedCompositionTo unifiedCompositionTo, + UnifiedCompositionData unifiedCompositionData) { + if (!TranslationContext.isVfcInstanceGroupingEnabled()) { + return; + } + createSubInterfaceVfcInstanceGroup(nestedNodeTemplateId, unifiedCompositionTo, unifiedCompositionData); + } + public void handleComplexVfcType(ServiceTemplate serviceTemplate, TranslationContext context) { SubstitutionMapping substitutionMapping = serviceTemplate.getTopology_template().getSubstitution_mappings(); @@ -1936,18 +1943,17 @@ public class UnifiedCompositionService { subInterfaceTemplateConsolidationDataList) { SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData = subInterfaceTemplateConsolidationDataList.get(0); - PortTemplateConsolidationData portTemplateConsolidationData = - getSubInterfacePortTemplateConsolidationData(unifiedCompositionTo.getServiceTemplate(), - subInterfaceTemplateConsolidationData, unifiedCompositionTo.getContext()); - - if (Objects.isNull(portTemplateConsolidationData)) { + Optional portTemplateConsolidationDataOptional = + subInterfaceTemplateConsolidationData.getParentPortTemplateConsolidationData(unifiedCompositionTo + .getServiceTemplate(), unifiedCompositionTo.getContext()); + if (!portTemplateConsolidationDataOptional.isPresent()) { return; } - + PortTemplateConsolidationData portTemplateConsolidationData = portTemplateConsolidationDataOptional.get(); String originalSubInterfaceNodeTemplateId = subInterfaceTemplateConsolidationDataList.get(0) .getNodeTemplateId(); - NodeTemplate originalSubInterfaceNodeTemplate = - DataModelUtil.getNodeTemplate(unifiedCompositionTo.getServiceTemplate(), originalSubInterfaceNodeTemplateId); + NodeTemplate originalSubInterfaceNodeTemplate = DataModelUtil.getNodeTemplate(unifiedCompositionTo + .getServiceTemplate(), originalSubInterfaceNodeTemplateId); if (Objects.isNull(originalSubInterfaceNodeTemplate)) { return; } 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 223dc8760a..528dc5e0e2 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 @@ -19,33 +19,29 @@ package org.openecomp.sdc.translator.services.heattotosca; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ListMultimap; import org.apache.commons.collections4.MapUtils; -import org.openecomp.sdc.logging.api.Logger; -import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; import org.openecomp.sdc.tosca.services.DataModelUtil; -import org.openecomp.sdc.tosca.services.ToscaUtil; import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData; -import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; /** * Utility class for consolidation data collection helper methods. */ public class UnifiedCompositionUtil { - protected static Logger logger = LoggerFactory.getLogger(UnifiedCompositionUtil.class); - private UnifiedCompositionUtil() { //Hiding the implicit public constructor } @@ -155,34 +151,17 @@ public class UnifiedCompositionUtil { StringBuilder newSubInterfaceNodeTemplateId = new StringBuilder(); newSubInterfaceNodeTemplateId.append(getNewPortNodeTemplateId(subInterfaceTemplateConsolidationData .getParentPortNodeTemplateId(), connectedComputeNodeType, computeTemplateConsolidationData)); - PortTemplateConsolidationData portTemplateConsolidationData = - getSubInterfacePortTemplateConsolidationData(serviceTemplate, subInterfaceTemplateConsolidationData, context); + Optional portTemplateConsolidationData = + subInterfaceTemplateConsolidationData.getParentPortTemplateConsolidationData(serviceTemplate, context); NodeTemplate subInterfaceNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, subInterfaceTemplateConsolidationData.getNodeTemplateId()); - if (Objects.nonNull(portTemplateConsolidationData)) { - 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(); - } - - static PortTemplateConsolidationData getSubInterfacePortTemplateConsolidationData(ServiceTemplate serviceTemplate, - SubInterfaceTemplateConsolidationData - subInterfaceTemplateConsolidationData, - TranslationContext context) { - FilePortConsolidationData filePortConsolidationData = context.getConsolidationData().getPortConsolidationData() - .getFilePortConsolidationData(ToscaUtil.getServiceTemplateFileName(serviceTemplate)); - PortTemplateConsolidationData portTemplateConsolidationData = null; - if (filePortConsolidationData != null) { - portTemplateConsolidationData = filePortConsolidationData - .getPortTemplateConsolidationData(subInterfaceTemplateConsolidationData.getParentPortNodeTemplateId()); + if (portTemplateConsolidationData.isPresent()) { + String subInterfaceSuffix = getSubInterfaceSuffix(portTemplateConsolidationData.get(), + subInterfaceNodeTemplate, subInterfaceTemplateConsolidationData); + newSubInterfaceNodeTemplateId.append("_").append(subInterfaceSuffix); + return newSubInterfaceNodeTemplateId.toString(); } - return portTemplateConsolidationData; + return subInterfaceTemplateConsolidationData.getNodeTemplateId(); } static String getSubInterfaceTypeSuffix(String nodeType) { @@ -191,8 +170,19 @@ public class UnifiedCompositionUtil { public static List getSubInterfaceTemplateConsolidationDataList( UnifiedCompositionData unifiedCompositionData) { - return unifiedCompositionData.getSubInterfaceTemplateConsolidationDataList() == null ? new - ArrayList<>() : unifiedCompositionData.getSubInterfaceTemplateConsolidationDataList(); + return unifiedCompositionData.getSubInterfaceTemplateConsolidationDataList() == null ? Collections.emptyList() : + unifiedCompositionData.getSubInterfaceTemplateConsolidationDataList(); } + private static String getSubInterfaceSuffix(PortTemplateConsolidationData portTemplateConsolidationData, + NodeTemplate subInterfaceNodeTemplate, + SubInterfaceTemplateConsolidationData + subInterfaceTemplateConsolidationData) { + if (portTemplateConsolidationData.isSubInterfaceNodeTemplateIdParameter(subInterfaceNodeTemplate.getType())) { + //If there are more than one subinterfaces with same type use node template id + return subInterfaceTemplateConsolidationData.getNodeTemplateId(); + } + //Add sub interface type since we have only one subinterface per type + return getSubInterfaceTypeSuffix(subInterfaceNodeTemplate.getType()); + } } 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/UnifiedCompositionNestedSingleCompute.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionNestedSingleCompute.java index d6b49ec35e..a48e107370 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionNestedSingleCompute.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionNestedSingleCompute.java @@ -4,17 +4,17 @@ import org.apache.commons.collections4.CollectionUtils; import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo; import org.openecomp.sdc.translator.services.heattotosca.UnifiedComposition; import org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionService; -import java.util.ArrayList; import java.util.List; public class UnifiedCompositionNestedSingleCompute implements UnifiedComposition { - // There is no consolidation in NestedSingleCompute implemetation. + // There is no consolidation in NestedSingleCompute implementation. // In case of nested single compute, if there is more than one entry in the - // unifiedComposotionDataList, each one should be handed seperatly, no consolidation between + // unifiedCompositionDataList, each one should be handed separately, no consolidation between // them. @Override public void createUnifiedComposition(ServiceTemplate serviceTemplate, @@ -26,18 +26,15 @@ public class UnifiedCompositionNestedSingleCompute implements UnifiedComposition return; } - for (int i = 0; i < unifiedCompositionDataList.size(); i++) { - List nestedUnifiedCompositionDataList = new ArrayList<>(); - nestedUnifiedCompositionDataList.add(unifiedCompositionDataList.get(i)); - - unifiedCompositionService - .handleUnifiedNestedDefinition(serviceTemplate, nestedServiceTemplate, - unifiedCompositionDataList.get(i), context); - unifiedCompositionService - .updateUnifiedNestedConnectivity(serviceTemplate, nestedServiceTemplate, - unifiedCompositionDataList.get(i), context); + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(serviceTemplate, nestedServiceTemplate, + unifiedCompositionDataList, context); + for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { + unifiedCompositionService.handleUnifiedNestedDefinition(unifiedCompositionTo, unifiedCompositionData); + String nestedNodeTemplateId = unifiedCompositionData.getNestedTemplateConsolidationData().getNodeTemplateId(); unifiedCompositionService - .cleanUnifiedNestedEntities(serviceTemplate, unifiedCompositionDataList.get(i), context); + .createNestedVfcInstanceGroup(nestedNodeTemplateId, unifiedCompositionTo, unifiedCompositionData); + unifiedCompositionService.updateUnifiedNestedConnectivity(unifiedCompositionTo, unifiedCompositionData); + unifiedCompositionService.cleanUnifiedNestedEntities(unifiedCompositionTo, unifiedCompositionData); unifiedCompositionService.updateSubstitutionNodeTypePrefix(nestedServiceTemplate); } } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java index e239805710..83b83d3353 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java @@ -16,6 +16,10 @@ package org.openecomp.sdc.translator.services.heattotosca; +import static org.junit.Assert.assertEquals; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; + import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.junit.Before; @@ -35,6 +39,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedSubstitutionData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData; @@ -56,10 +61,6 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Matchers.anyString; - public class UnifiedCompositionServiceTest { private static final String BASE_DIRECTORY = "/mock/services/heattotosca/unifiedComposition/"; @InjectMocks @@ -1003,9 +1004,11 @@ public class UnifiedCompositionServiceTest { context.getTranslatedServiceTemplates() .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML)); - UnifiedCompositionData unifiedComposition = createUnifiedCompositionOnlyNested("server_pcm_001"); - unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), - inputServiceTemplates.get(nestedFileName), unifiedComposition, context); + UnifiedCompositionData unifiedComposition = createUnifiedCompositionOnlyNested("server_pcm_001"); + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo( + inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), inputServiceTemplates.get(nestedFileName), null, + context); + unifiedCompositionService.handleUnifiedNestedDefinition(unifiedCompositionTo, unifiedComposition); checkSTResults(expectedOutserviceTemplates, nestedFileName, context.getTranslatedServiceTemplates().get(nestedFileName), @@ -1044,13 +1047,15 @@ public class UnifiedCompositionServiceTest { context.getTranslatedServiceTemplates() .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML)); - UnifiedCompositionData unifiedComposition = - createUnifiedCompositionOnlyNested("server_pcm_001"); - unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), - inputServiceTemplates.get(nestedFileName1), unifiedComposition, context); - unifiedComposition = createUnifiedCompositionOnlyNested("server_oam_001"); - unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), - inputServiceTemplates.get(nestedFileName2), unifiedComposition, context); + UnifiedCompositionData unifiedComposition = + createUnifiedCompositionOnlyNested("server_pcm_001"); + UnifiedCompositionTo unifiedCompositionTo1 = new UnifiedCompositionTo(inputServiceTemplates + .get(MAIN_SERVICE_TEMPLATE_YAML), inputServiceTemplates.get(nestedFileName1), null, context); + unifiedCompositionService.handleUnifiedNestedDefinition(unifiedCompositionTo1, unifiedComposition); + unifiedComposition = createUnifiedCompositionOnlyNested("server_oam_001"); + UnifiedCompositionTo unifiedCompositionTo2 = new UnifiedCompositionTo(inputServiceTemplates + .get(MAIN_SERVICE_TEMPLATE_YAML), inputServiceTemplates.get(nestedFileName2), null, context); + unifiedCompositionService.handleUnifiedNestedDefinition(unifiedCompositionTo2, unifiedComposition); checkSTResults(expectedOutserviceTemplates, nestedFileName1, context.getTranslatedServiceTemplates().get(nestedFileName1), diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSubInterfaceFullTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSubInterfaceFullTest.java index ca31c85307..89d7cab6a7 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSubInterfaceFullTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSubInterfaceFullTest.java @@ -350,8 +350,7 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT * Nested Heat file with one compute, one port and one subinterface resource group with only * port connected to network */ - testTranslationWithInit(PATTERN_4_BASE_DIRECTORY + - "computePortNetworkSubInterface"); + testTranslationWithInit(PATTERN_4_BASE_DIRECTORY + "computePortNetworkSubInterface"); } @Test @@ -428,6 +427,7 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT testTranslationWithInit(PATTERN_4_BASE_DIRECTORY + "subInterfaceNodesConnectedOut"); } + //****************** VFC Instance Group Tests *************************** @Test @@ -444,4 +444,15 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT public void testGroupingTwoSubInterfaceTypeAndTwoAbstractNodes() throws IOException { testTranslationWithInit(VFC_INSTANCE_GROUP_BASE_DIRECTORY + "twoSubInterfaceNetworkRoleAndTwoAbstractNodes"); } + + @Test + public void testSubInterfacePattern4WithGroup() throws IOException { + /* + * Nested Heat file with one compute, one port and one subinterface resource group with + * 1. Port connected to network + * 2. Sub-interface connected to same network + * 3. Sub-interface has depends on (out) connectivity with network resource + */ + testTranslationWithInit(VFC_INSTANCE_GROUP_BASE_DIRECTORY + "pattern4SubInterfaceNodesConnectedOut"); + } } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedDiffComputeScenario/out/nested_pattern5ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedDiffComputeScenario/out/nested_pattern5ServiceTemplate.yaml index 19e2b4e1e1..3add46dce6 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedDiffComputeScenario/out/nested_pattern5ServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedDiffComputeScenario/out/nested_pattern5ServiceTemplate.yaml @@ -184,6 +184,7 @@ topology_template: get_input: Vlan_vfc_instance_group_function subinterface_role: Vlan members: + - test_nested_level2 - abstract_pd_server_1b substitution_mappings: node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5 diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedScenario/out/nested_pattern5ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedScenario/out/nested_pattern5ServiceTemplate.yaml index 45e7ec8f77..e0ee6fe9fe 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedScenario/out/nested_pattern5ServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedScenario/out/nested_pattern5ServiceTemplate.yaml @@ -182,6 +182,7 @@ topology_template: get_input: Vlan_vfc_instance_group_function subinterface_role: Vlan members: + - test_nested_level2 - abstract_pd_server_1b substitution_mappings: node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5 diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/MANIFEST.json new file mode 100644 index 0000000000..6e418dbf74 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/MANIFEST.json @@ -0,0 +1,22 @@ +{ + "name": "vMME_Small", + "description": "HOT template to create 2 cinder volume attachment", + "version": "2013-05-23", + "data": [ + { + "file": "main.yml", + "type": "HEAT", + "isBase": "true" + }, + { + "file": "nested_pattern4.yml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "nested_vlan.yml", + "type": "HEAT", + "isBase": "false" + } + ] +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/main.yml new file mode 100644 index 0000000000..6c6881384b --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/main.yml @@ -0,0 +1,35 @@ +heat_template_version: 2013-05-23 + +description: > + Version 2.0 02-09-2016 (Authors: John Doe, user PROD) + +parameters: + vnf_name: + type: string + description: Unique name for this VF instance + vf_module_name: + type: string + description: Unique name for this VF Module instance + vf_module_id: + type: string + description: Unique ID for this VF Module instance + tdcore_zone_0_count: + type: number + description: > + Number of TD Core VMs to be deployed zone 0. + This parameter is used to scale the TD Core instances. + constraints: + - range: { min: 0, max: 8 } + +resources: + tdcore_zone_0_RRG: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: tdcore_zone_0_count } + index_var: $INDEX + resource_def: + type: nested_pattern4.yml + properties: + vnf_name: { get_param: vnf_name } + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/nested_pattern4.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/nested_pattern4.yml new file mode 100644 index 0000000000..d876202ab1 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/nested_pattern4.yml @@ -0,0 +1,233 @@ +heat_template_version: 2013-05-23 + +description: > + Version 2.0 02-09-2016 (Authors: John Doe, user PROD) + +parameters: + aap_address_mode: + description: "Address mode for the vDBE cluster IP" + type: string + control_int_net_forwarding_mode: + description: "forwarding mode of the control virtual network" + type: string + control_int_net_rpf: + description: "Reverse Path Filtering enable or disable for the control virtual network" + type: string + control_int_net_shared: + description: "control virtual network shared" + type: boolean + control_int_net_flood_unknown_unicast: + description: "forwarding mode of the control virtual network" + type: boolean + oam_net_name: + description: "Name of NSDNet network from which the management IP addresses will be allocated" + type: string + untrusted_net_name: + description: "Name of public untrusted network into which this vDBE HA cluster is deployed" + type: string + untrusted_num_vn: + constraints: + - + range: + max: 77 + min: 1 + description: "Number of vDBE subinterface virtual Networks" + type: number + untrusted_vlan_tags: + description: "List of subinterface vlan tags" + type: comma_delimited_list + untrusted_vn_networks: + description: "List of subinterface virtual networks" + type: comma_delimited_list + vdbe_aap_sec_untrusted_ip_prefix: + description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network" + type: string + vdbe_aap_sec_untrusted_ip_prefix_len: + description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network" + type: string + vdbe_aap_untrusted_ip_prefix: + description: "ip prefix for primary vDBE VM on the VAN untrusted network" + type: string + vdbe_aap_untrusted_ip_prefix_len: + description: "ip prefix length for the primary vDBE VM on the VAN untrusted network" + type: string + vdbe_aap_untrusted_v6_ip_prefix: + description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network" + type: string + vdbe_aap_untrusted_v6_ip_prefix_len: + description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network" + type: string + vdbe_device_name: + description: "VDBE device Name for this vdbe VNF" + type: string + vdbe_hw_untr_mac_1: + description: "Secondary MAC address of the secondary vDBE VM on the VAN untrusted network" + type: string + vdbe_name_1: + description: "VM Name for this vdbe node 1" + type: string + vdbe_untrusted_ip_1: + description: "IPV4 address of the secondary vDBE VM on the VAN untrusted network" + type: string + vdbe_untrusted_v6_ip_1: + description: "IPV6 address of the secondary vDBE VM on the VAN untrusted network" + type: string + vdbe_untrusted_vmac_address: + description: "Virtual MAC of the primary vDBE VM on the VAN untrusted network" + type: string + vdbe_flavor_name: + description: "Flavor to use for vDBE" + type: string + vdbe_image_name: + description: "Image to use for vDBE" + type: string + vnf_id: + description: "Unique ID for this VF inst" + type: string + vnf_name: + description: "Unique name for this VF instance" + type: string + vf_module_id: + description: "Unique ID for this VF module inst" + type: string + vf_module_name: + description: "Unique name for this VF module inst" + type: string + availability_zone_1: + description: "The availability zone of secondary node1 vDBE vm in the local HA pair." + type: string +resources: + vdbe_node_1: + type: OS::Nova::Server + properties: + availability_zone: + get_param: availability_zone_1 + flavor: + get_param: vdbe_flavor_name + image: + get_param: vdbe_image_name + metadata: + vf_module_id: + get_param: vf_module_id + vnf_id: + get_param: vnf_id + vnf_name: + get_param: vnf_name + name: + get_param: vdbe_name_1 + networks: + - port: {get_resource: vdbe_0_untr_vmi_1} + vdbe_0_untr_vmi_1: + properties: + name: + str_replace: + params: + DBE: + get_param: vdbe_device_name + VM_NAME: + get_param: vdbe_name_1 + template: VM_NAMEDBE001p1n004 + virtual_machine_interface_allowed_address_pairs: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair: + - + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: + get_param: aap_address_mode + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: + get_param: vdbe_aap_untrusted_ip_prefix + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: + get_param: vdbe_aap_untrusted_ip_prefix_len + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: + get_param: vdbe_untrusted_vmac_address + - + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: + get_param: aap_address_mode + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: + get_param: vdbe_aap_sec_untrusted_ip_prefix + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: + get_param: vdbe_aap_sec_untrusted_ip_prefix_len + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: + get_param: vdbe_hw_untr_mac_1 + - + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: + get_param: aap_address_mode + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: + get_param: vdbe_aap_untrusted_v6_ip_prefix + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: + get_param: vdbe_aap_untrusted_v6_ip_prefix_len + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: + get_param: vdbe_untrusted_vmac_address + virtual_machine_interface_mac_addresses: + virtual_machine_interface_mac_addresses_mac_address: + - + get_param: vdbe_hw_untr_mac_1 + virtual_network_refs: + - + get_resource: control_int_net + type: OS::ContrailV2::VirtualMachineInterface + vdbe_untr_1_subports: + type: OS::Heat::ResourceGroup + depends_on: control_int_net + properties: + count: + get_param: untrusted_num_vn + resource_def: + type: nested_vlan.yml + properties: + aap_address_mode: + get_param: aap_address_mode + aap_sec_untrusted_ip_prefix: + get_param: vdbe_aap_sec_untrusted_ip_prefix + aap_sec_untrusted_ip_prefix_len: + get_param: vdbe_aap_sec_untrusted_ip_prefix_len + aap_untrusted_ip_prefix: + get_param: vdbe_aap_untrusted_ip_prefix + aap_untrusted_ip_prefix_len: + get_param: vdbe_aap_untrusted_ip_prefix_len + aap_untrusted_v6_ip_prefix: + get_param: vdbe_aap_untrusted_v6_ip_prefix + aap_untrusted_v6_ip_prefix_len: + get_param: vdbe_aap_untrusted_v6_ip_prefix_len + counter: "%index%" + ip_address: + get_param: vdbe_untrusted_ip_1 + ip_v6_address: + get_param: vdbe_untrusted_v6_ip_1 + mac_address: + get_param: vdbe_hw_untr_mac_1 + parent_interface: + get_resource: vdbe_0_untr_vmi_1 + subinterfaces_name_prefix: + str_replace: + params: + DBE: + get_param: vdbe_device_name + VM_NAME: + get_param: vdbe_name_1 + template: VM_NAMEDBE001p1n004 + vlan_tag_list: + get_param: untrusted_vlan_tags + vmac_address: + get_param: vdbe_untrusted_vmac_address + vdbe_subport_network: + get_resource: control_int_net + control_int_net: + type: OS::ContrailV2::VirtualNetwork + properties: + flood_unknown_unicast: + get_param: control_int_net_flood_unknown_unicast + is_shared: + get_param: control_int_net_shared + name: + str_replace: + params: + VNF_NAME: + get_param: vnf_name + template: VNF_NAME_control_net + virtual_network_properties: + virtual_network_properties_forwarding_mode: + get_param: control_int_net_forwarding_mode + virtual_network_properties_rpf: + get_param: control_int_net_rpf diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/nested_vlan.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/nested_vlan.yml new file mode 100644 index 0000000000..8b4b9b15a8 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/in/nested_vlan.yml @@ -0,0 +1,116 @@ +heat_template_version: 2013-05-23 + +description: cmaui server template for vMMSC + +parameters: + aap_address_mode: + description: "Address mode for the vDBE cluster IP" + type: string + aap_sec_untrusted_ip_prefix: + description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network" + type: string + aap_sec_untrusted_ip_prefix_len: + description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network" + type: string + aap_untrusted_ip_prefix: + description: "ip prefix for primary vDBE VM on the VAN untrusted network" + type: string + aap_untrusted_ip_prefix_len: + description: "ip prefix length for the primary vDBE VM on the VAN untrusted network" + type: string + aap_untrusted_v6_ip_prefix: + description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network" + type: string + aap_untrusted_v6_ip_prefix_len: + description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network" + type: string + counter: + description: "Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances." + type: number + mac_address: + description: "HW MAC address to use for subinterface" + type: string + parent_interface: + description: "Parent Contrail interface" + type: string + subinterfaces_name_prefix: + description: "Combined with subinterface_instance_index, this is used as the name of the subinterface resource" + type: string + vlan_tag_list: + description: "List of VLAN IDs to use for subinterfaces" + type: comma_delimited_list + vmac_address: + description: "virtual MAC address to use for subinterface" + type: string + vdbe_subport_network: + description: "List of Contrail VLAN networks to use for the subinterfaces. The order and number of these must match the VLAN ID list" + type: string + ip_address: + description: "IPv4 address associated with subinterfaces" + type: string + ip_v6_address: + description: "IPv6 address associated with subinterfaces" + type: string +resources: + vdbe_0_subint_untr_vmi_1: + type: OS::ContrailV2::VirtualMachineInterface + properties: + name: + str_replace: + params: + $INDEX: + get_param: + - vlan_tag_list + - + get_param: counter + $NAME: + get_param: subinterfaces_name_prefix + template: $NAME_$INDEX + virtual_machine_interface_allowed_address_pairs: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair: + - + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: + get_param: aap_address_mode + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: + get_param: aap_untrusted_ip_prefix + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: + get_param: aap_untrusted_ip_prefix_len + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: + get_param: vmac_address + - + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: + get_param: aap_address_mode + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: + get_param: aap_sec_untrusted_ip_prefix + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: + get_param: aap_sec_untrusted_ip_prefix_len + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: + get_param: mac_address + - + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: + get_param: aap_address_mode + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: + get_param: aap_untrusted_v6_ip_prefix + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: + get_param: aap_untrusted_v6_ip_prefix_len + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: + get_param: vmac_address + virtual_machine_interface_mac_addresses: + virtual_machine_interface_mac_addresses_mac_address: + - + get_param: mac_address + virtual_machine_interface_properties: + virtual_machine_interface_properties_sub_interface_vlan_tag: + get_param: + - vlan_tag_list + - + get_param: counter + virtual_machine_interface_refs: + [{get_param: parent_interface}] + virtual_network_refs: + [{get_param: vdbe_subport_network}] + + diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml new file mode 100644 index 0000000000..e937a9e6bd --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -0,0 +1,692 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +metadata: + template_name: GlobalSubstitutionTypes +imports: +- openecomp_heat_index: + file: openecomp-heat/_index.yml +node_types: + org.openecomp.resource.abstract.nodes.heat.vdbe: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + vf_module_id: + type: string + description: Unique ID for this VF module inst + required: true + status: SUPPORTED + port_vdbe_0_untr_vmi_1_network_role_tag: + type: string + required: true + status: SUPPORTED + control_int_net_rpf: + type: string + description: Reverse Path Filtering enable or disable for the control virtual network + required: true + status: SUPPORTED + control_int_net_forwarding_mode: + type: string + description: forwarding mode of the control virtual network + required: true + status: SUPPORTED + vnf_name: + type: string + description: Unique name for this VF instance + required: true + status: SUPPORTED + vdbe_untrusted_ip_1: + type: string + description: IPV4 address of the secondary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + vdbe_aap_untrusted_ip_prefix_len: + type: string + description: ip prefix length for the primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + port_vdbe_0_untr_vmi_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + untrusted_num_vn: + type: float + description: Number of vDBE subinterface virtual Networks + required: true + status: SUPPORTED + constraints: + - in_range: + - 1 + - 77 + vf_module_name: + type: string + description: Unique name for this VF module inst + required: true + status: SUPPORTED + aap_address_mode: + type: string + description: Address mode for the vDBE cluster IP + required: true + status: SUPPORTED + control_int_net_shared: + type: boolean + description: control virtual network shared + required: true + status: SUPPORTED + vdbe_untrusted_v6_ip_1: + type: string + description: IPV6 address of the secondary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + vdbe_untrusted_vmac_address: + type: string + description: Virtual MAC of the primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + control_int_net_flood_unknown_unicast: + type: boolean + description: forwarding mode of the control virtual network + required: true + status: SUPPORTED + vdbe_aap_sec_untrusted_ip_prefix: + type: string + description: ip prefix for secondary vDBE VM aap on the VAN untrusted network + required: true + status: SUPPORTED + vnf_id: + type: string + description: Unique ID for this VF inst + required: true + status: SUPPORTED + port_vdbe_0_untr_vmi_1_order: + type: integer + required: true + status: SUPPORTED + vdbe_name_1: + type: string + description: VM Name for this vdbe node 1 + required: true + status: SUPPORTED + availability_zone_1: + type: string + description: The availability zone of secondary node1 vDBE vm in the local HA pair. + required: true + status: SUPPORTED + port_vdbe_0_untr_vmi_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + untrusted_vn_networks: + type: list + description: List of subinterface virtual networks + required: true + status: SUPPORTED + entry_schema: + type: string + vdbe_image_name: + type: string + description: Image to use for vDBE + required: true + status: SUPPORTED + oam_net_name: + type: string + description: Name of NSDNet network from which the management IP addresses will be allocated + required: true + status: SUPPORTED + vdbe_aap_sec_untrusted_ip_prefix_len: + type: string + description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network + required: true + status: SUPPORTED + vdbe_aap_untrusted_v6_ip_prefix: + type: string + description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + vdbe_aap_untrusted_v6_ip_prefix_len: + type: string + description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + untrusted_vlan_tags: + type: list + description: List of subinterface vlan tags + required: true + status: SUPPORTED + entry_schema: + type: string + port_vdbe_0_untr_vmi_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + vdbe_flavor_name: + type: string + description: Flavor to use for vDBE + required: true + status: SUPPORTED + port_vdbe_0_untr_vmi_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vdbe_hw_untr_mac_1: + type: string + description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + untrusted_net_name: + type: string + description: Name of public untrusted network into which this vDBE HA cluster is deployed + required: true + status: SUPPORTED + vdbe_device_name: + type: string + description: VDBE device Name for this vdbe VNF + required: true + status: SUPPORTED + port_vdbe_0_untr_vmi_1_network_role: + type: string + required: true + status: SUPPORTED + vdbe_aap_untrusted_ip_prefix: + type: string + description: ip prefix for primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + port_vdbe_0_untr_vmi_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + requirements: + - dependency_vdbe_0_untr_vmi_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_vdbe_node_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_vdbe_node_1: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_vdbe_untr_1_subports: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_vdbe_0_subint_untr_vmi_1_vdbe_untr_1_subports: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_control_int_net: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + capabilities: + disk.latency_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_vdbe_node_1: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + instance_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_vdbe_0_untr_vmi_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + forwarder_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.Forwarder + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_vdbe_0_untr_vmi_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_vdbe_untr_1_subports: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + link_control_int_net: + type: tosca.capabilities.network.Linkable + occurrences: + - 1 + - UNBOUNDED + end_point_control_int_net: + type: tosca.capabilities.Endpoint + occurrences: + - 1 + - UNBOUNDED + disk.usage_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_vdbe_node_1: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + feature_control_int_net: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_vdbe_node_1: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.iops_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_vdbe_node_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + memory.resident_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_vdbe_node_1: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_vdbe_node_1: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + feature_vdbe_0_subint_untr_vmi_1_vdbe_untr_1_subports: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_vdbe_0_untr_vmi_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_control_int_net: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + cpu_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_vdbe_node_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.heat.subinterface.nested_vlan: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + aap_untrusted_ip_prefix: + type: string + description: ip prefix for primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + aap_sec_untrusted_ip_prefix: + type: string + description: ip prefix for secondary vDBE VM aap on the VAN untrusted network + required: true + status: SUPPORTED + vdbe_subport_network: + type: string + description: List of Contrail VLAN networks to use for the subinterfaces. The order and number of these must match the VLAN ID list + required: true + status: SUPPORTED + ip_v6_address: + type: string + description: IPv6 address associated with subinterfaces + required: true + status: SUPPORTED + counter: + type: float + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + required: true + status: SUPPORTED + subinterfaces_name_prefix: + type: string + description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource + required: true + status: SUPPORTED + ip_address: + type: string + description: IPv4 address associated with subinterfaces + required: true + status: SUPPORTED + aap_address_mode: + type: string + description: Address mode for the vDBE cluster IP + required: true + status: SUPPORTED + aap_untrusted_v6_ip_prefix: + type: string + description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + parent_interface: + type: string + description: Parent Contrail interface + required: true + status: SUPPORTED + mac_address: + type: string + description: HW MAC address to use for subinterface + required: true + status: SUPPORTED + vlan_tag_list: + type: list + description: List of VLAN IDs to use for subinterfaces + required: true + status: SUPPORTED + entry_schema: + type: string + aap_sec_untrusted_ip_prefix_len: + type: string + description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network + required: true + status: SUPPORTED + vmac_address: + type: string + description: virtual MAC address to use for subinterface + required: true + status: SUPPORTED + aap_untrusted_v6_ip_prefix_len: + type: string + description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + aap_untrusted_ip_prefix_len: + type: string + description: ip prefix length for the primary vDBE VM on the VAN untrusted network + required: true + status: SUPPORTED + requirements: + - dependency_vdbe_0_subint_untr_vmi_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_vdbe_0_subint_untr_vmi_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - binding_vdbe_0_subint_untr_vmi_1: + capability: tosca.capabilities.network.Bindable + node: org.openecomp.resource.cp.nodes.network.Port + relationship: tosca.relationships.network.BindsTo + occurrences: + - 1 + - 1 + capabilities: + feature_vdbe_0_subint_untr_vmi_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/MainServiceTemplate.yaml new file mode 100644 index 0000000000..94f7b2fa25 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/MainServiceTemplate.yaml @@ -0,0 +1,110 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +metadata: + template_name: Main +imports: +- openecomp_heat_index: + file: openecomp-heat/_index.yml +- GlobalSubstitutionTypes: + file: GlobalSubstitutionTypesServiceTemplate.yaml +topology_template: + inputs: + vf_module_id: + hidden: false + immutable: false + annotations: + source: + type: org.openecomp.annotations.Source + properties: + vf_module_label: + - main + source_type: HEAT + param_name: vf_module_id + type: string + description: Unique ID for this VF Module instance + vnf_name: + hidden: false + immutable: false + annotations: + source: + type: org.openecomp.annotations.Source + properties: + vf_module_label: + - main + source_type: HEAT + param_name: vnf_name + type: string + description: Unique name for this VF instance + tdcore_zone_0_count: + hidden: false + immutable: false + annotations: + source: + type: org.openecomp.annotations.Source + properties: + vf_module_label: + - main + source_type: HEAT + param_name: tdcore_zone_0_count + type: float + description: | + Number of TD Core VMs to be deployed zone 0. This parameter is used to scale the TD Core instances. + constraints: + - in_range: + - 0 + - 8 + untr_network_collection_function: + type: string + required: true + untr_vfc_instance_group_function: + type: string + required: true + vf_module_name: + hidden: false + immutable: false + annotations: + source: + type: org.openecomp.annotations.Source + properties: + vf_module_label: + - main + source_type: HEAT + param_name: vf_module_name + type: string + description: Unique name for this VF Module instance + node_templates: + tdcore_zone_0_RRG: + type: org.openecomp.resource.abstract.nodes.heat.vdbe + directives: + - substitutable + properties: + vf_module_id: + get_input: vf_module_id + service_template_filter: + substitute_service_template: nested_pattern4ServiceTemplate.yaml + count: + get_input: tdcore_zone_0_count + mandatory: false + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + groups: + main_group: + type: org.openecomp.groups.heat.HeatStack + properties: + heat_file: ../Artifacts/main.yml + description: | + Version 2.0 02-09-2016 (Authors: John Doe, user PROD) + members: + - tdcore_zone_0_RRG + untr_group: + type: org.openecomp.groups.VfcInstanceGroup + properties: + vfc_parent_port_role: untr + network_collection_function: + get_input: untr_network_collection_function + vfc_instance_group_function: + get_input: untr_vfc_instance_group_function + subinterface_role: untr + members: + - tdcore_zone_0_RRG \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/nested_pattern4ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/nested_pattern4ServiceTemplate.yaml new file mode 100644 index 0000000000..2ba36df895 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/nested_pattern4ServiceTemplate.yaml @@ -0,0 +1,561 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +metadata: + template_name: nested_pattern4 +imports: +- openecomp_heat_index: + file: openecomp-heat/_index.yml +- GlobalSubstitutionTypes: + file: GlobalSubstitutionTypesServiceTemplate.yaml +node_types: + org.openecomp.resource.vfc.compute.nodes.heat.vdbe: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server +topology_template: + inputs: + vf_module_id: + hidden: false + immutable: false + type: string + description: Unique ID for this VF module inst + port_vdbe_0_untr_vmi_1_network_role_tag: + type: string + required: true + control_int_net_rpf: + hidden: false + immutable: false + type: string + description: Reverse Path Filtering enable or disable for the control virtual network + control_int_net_forwarding_mode: + hidden: false + immutable: false + type: string + description: forwarding mode of the control virtual network + vnf_name: + hidden: false + immutable: false + type: string + description: Unique name for this VF instance + vdbe_untrusted_ip_1: + hidden: false + immutable: false + type: string + description: IPV4 address of the secondary vDBE VM on the VAN untrusted network + vdbe_aap_untrusted_ip_prefix_len: + hidden: false + immutable: false + type: string + description: ip prefix length for the primary vDBE VM on the VAN untrusted network + port_vdbe_0_untr_vmi_1_vlan_requirements: + type: list + required: true + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + untrusted_num_vn: + hidden: false + immutable: false + type: float + description: Number of vDBE subinterface virtual Networks + constraints: + - in_range: + - 1 + - 77 + vf_module_name: + hidden: false + immutable: false + type: string + description: Unique name for this VF module inst + aap_address_mode: + hidden: false + immutable: false + type: string + description: Address mode for the vDBE cluster IP + control_int_net_shared: + hidden: false + immutable: false + type: boolean + description: control virtual network shared + vdbe_untrusted_v6_ip_1: + hidden: false + immutable: false + type: string + description: IPV6 address of the secondary vDBE VM on the VAN untrusted network + vdbe_untrusted_vmac_address: + hidden: false + immutable: false + type: string + description: Virtual MAC of the primary vDBE VM on the VAN untrusted network + control_int_net_flood_unknown_unicast: + hidden: false + immutable: false + type: boolean + description: forwarding mode of the control virtual network + vdbe_aap_sec_untrusted_ip_prefix: + hidden: false + immutable: false + type: string + description: ip prefix for secondary vDBE VM aap on the VAN untrusted network + vnf_id: + hidden: false + immutable: false + type: string + description: Unique ID for this VF inst + port_vdbe_0_untr_vmi_1_order: + type: integer + required: true + vdbe_name_1: + hidden: false + immutable: false + type: string + description: VM Name for this vdbe node 1 + availability_zone_1: + hidden: false + immutable: false + type: string + description: The availability zone of secondary node1 vDBE vm in the local HA pair. + port_vdbe_0_untr_vmi_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + untrusted_vn_networks: + hidden: false + immutable: false + type: list + description: List of subinterface virtual networks + entry_schema: + type: string + vdbe_image_name: + hidden: false + immutable: false + type: string + description: Image to use for vDBE + oam_net_name: + hidden: false + immutable: false + type: string + description: Name of NSDNet network from which the management IP addresses will be allocated + vdbe_aap_sec_untrusted_ip_prefix_len: + hidden: false + immutable: false + type: string + description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network + vdbe_aap_untrusted_v6_ip_prefix: + hidden: false + immutable: false + type: string + description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network + vdbe_aap_untrusted_v6_ip_prefix_len: + hidden: false + immutable: false + type: string + description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network + untrusted_vlan_tags: + hidden: false + immutable: false + type: list + description: List of subinterface vlan tags + entry_schema: + type: string + port_vdbe_0_untr_vmi_1_subnetpoolid: + type: string + required: true + vdbe_flavor_name: + hidden: false + immutable: false + type: string + description: Flavor to use for vDBE + port_vdbe_0_untr_vmi_1_ip_requirements: + type: list + required: true + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vdbe_hw_untr_mac_1: + hidden: false + immutable: false + type: string + description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network + untrusted_net_name: + hidden: false + immutable: false + type: string + description: Name of public untrusted network into which this vDBE HA cluster is deployed + vdbe_device_name: + hidden: false + immutable: false + type: string + description: VDBE device Name for this vdbe VNF + port_vdbe_0_untr_vmi_1_network_role: + type: string + required: true + vdbe_aap_untrusted_ip_prefix: + hidden: false + immutable: false + type: string + description: ip prefix for primary vDBE VM on the VAN untrusted network + port_vdbe_0_untr_vmi_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + node_templates: + vdbe_0_untr_vmi_1: + type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface + properties: + ip_requirements: + get_input: port_vdbe_0_untr_vmi_1_ip_requirements + network_role: + get_input: port_vdbe_0_untr_vmi_1_network_role + subnetpoolid: + get_input: port_vdbe_0_untr_vmi_1_subnetpoolid + mac_requirements: + get_input: port_vdbe_0_untr_vmi_1_mac_requirements + name: + str_replace: + template: VM_NAMEDBE001p1n004 + params: + DBE: + get_input: vdbe_device_name + VM_NAME: + get_input: vdbe_name_1 + exCP_naming: + get_input: port_vdbe_0_untr_vmi_1_exCP_naming + virtual_network_refs: + - control_int_net + vlan_requirements: + get_input: port_vdbe_0_untr_vmi_1_vlan_requirements + virtual_machine_interface_allowed_address_pairs: + allowed_address_pair: + - address_mode: + get_input: aap_address_mode + ip: + ip_prefix: + get_input: vdbe_aap_untrusted_ip_prefix + ip_prefix_len: + get_input: vdbe_aap_untrusted_ip_prefix_len + mac: + get_input: vdbe_untrusted_vmac_address + - address_mode: + get_input: aap_address_mode + ip: + ip_prefix: + get_input: vdbe_aap_sec_untrusted_ip_prefix + ip_prefix_len: + get_input: vdbe_aap_sec_untrusted_ip_prefix_len + mac: + get_input: vdbe_hw_untr_mac_1 + - address_mode: + get_input: aap_address_mode + ip: + ip_prefix: + get_input: vdbe_aap_untrusted_v6_ip_prefix + ip_prefix_len: + get_input: vdbe_aap_untrusted_v6_ip_prefix_len + mac: + get_input: vdbe_untrusted_vmac_address + network_role_tag: + get_input: port_vdbe_0_untr_vmi_1_network_role_tag + virtual_machine_interface_mac_addresses: + - get_input: vdbe_hw_untr_mac_1 + order: + get_input: port_vdbe_0_untr_vmi_1_order + requirements: + - link: + capability: tosca.capabilities.network.Linkable + node: control_int_net + relationship: tosca.relationships.network.LinksTo + - binding: + capability: tosca.capabilities.network.Bindable + node: vdbe_node_1 + relationship: tosca.relationships.network.BindsTo + vdbe_node_1: + type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe + properties: + flavor: + get_input: vdbe_flavor_name + availability_zone: + get_input: availability_zone_1 + image: + get_input: vdbe_image_name + metadata: + vf_module_id: + get_input: vf_module_id + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + name: + get_input: vdbe_name_1 + vdbe_untr_1_subports: + type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested_vlan + directives: + - substitutable + properties: + aap_untrusted_ip_prefix: + get_input: vdbe_aap_untrusted_ip_prefix + aap_sec_untrusted_ip_prefix: + get_input: vdbe_aap_sec_untrusted_ip_prefix + vdbe_subport_network: control_int_net + ip_v6_address: + get_input: vdbe_untrusted_v6_ip_1 + counter: + get_property: + - SELF + - service_template_filter + - index_value + ip_address: + get_input: vdbe_untrusted_ip_1 + subinterfaces_name_prefix: + str_replace: + template: VM_NAMEDBE001p1n004 + params: + DBE: + get_input: vdbe_device_name + VM_NAME: + get_input: vdbe_name_1 + aap_address_mode: + get_input: aap_address_mode + service_template_filter: + substitute_service_template: nested_vlanServiceTemplate.yaml + count: + get_input: untrusted_num_vn + mandatory: false + aap_untrusted_v6_ip_prefix: + get_input: vdbe_aap_untrusted_v6_ip_prefix + parent_interface: vdbe_0_untr_vmi_1 + mac_address: + get_input: vdbe_hw_untr_mac_1 + vlan_tag_list: + get_input: untrusted_vlan_tags + aap_sec_untrusted_ip_prefix_len: + get_input: vdbe_aap_sec_untrusted_ip_prefix_len + vmac_address: + get_input: vdbe_untrusted_vmac_address + aap_untrusted_v6_ip_prefix_len: + get_input: vdbe_aap_untrusted_v6_ip_prefix_len + aap_untrusted_ip_prefix_len: + get_input: vdbe_aap_untrusted_ip_prefix_len + requirements: + - link_vdbe_0_subint_untr_vmi_1: + capability: tosca.capabilities.network.Linkable + node: control_int_net + relationship: tosca.relationships.network.LinksTo + - binding_vdbe_0_subint_untr_vmi_1: + capability: tosca.capabilities.network.Bindable + node: vdbe_0_untr_vmi_1 + relationship: tosca.relationships.network.BindsTo + - dependency: + capability: tosca.capabilities.Node + node: control_int_net + relationship: tosca.relationships.DependsOn + control_int_net: + type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork + properties: + network_name: + str_replace: + template: VNF_NAME_control_net + params: + VNF_NAME: + get_input: vnf_name + groups: + nested_pattern4_group: + type: org.openecomp.groups.heat.HeatStack + properties: + heat_file: ../Artifacts/nested_pattern4.yml + description: | + Version 2.0 02-09-2016 (Authors: John Doe, user PROD) + members: + - vdbe_0_untr_vmi_1 + - vdbe_node_1 + - vdbe_untr_1_subports + - control_int_net + substitution_mappings: + node_type: org.openecomp.resource.abstract.nodes.heat.vdbe + capabilities: + disk.latency_vdbe_node_1: + - vdbe_node_1 + - disk.latency + binding_vdbe_node_1: + - vdbe_node_1 + - binding + instance_vdbe_node_1: + - vdbe_node_1 + - instance + network.outgoing.bytes_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - network.outgoing.bytes + disk.device.read.requests_vdbe_node_1: + - vdbe_node_1 + - disk.device.read.requests + disk.device.usage_vdbe_node_1: + - vdbe_node_1 + - disk.device.usage + binding_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - binding + forwarder_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - forwarder + disk.write.bytes_vdbe_node_1: + - vdbe_node_1 + - disk.write.bytes + disk.device.write.bytes_vdbe_node_1: + - vdbe_node_1 + - disk.device.write.bytes + disk.allocation_vdbe_node_1: + - vdbe_node_1 + - disk.allocation + memory_vdbe_node_1: + - vdbe_node_1 + - memory + cpu_util_vdbe_node_1: + - vdbe_node_1 + - cpu_util + disk.device.read.bytes_vdbe_node_1: + - vdbe_node_1 + - disk.device.read.bytes + network.incoming.bytes.rate_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - network.incoming.bytes.rate + disk.device.read.bytes.rate_vdbe_node_1: + - vdbe_node_1 + - disk.device.read.bytes.rate + disk.device.allocation_vdbe_node_1: + - vdbe_node_1 + - disk.device.allocation + disk.write.requests.rate_vdbe_node_1: + - vdbe_node_1 + - disk.write.requests.rate + disk.root.size_vdbe_node_1: + - vdbe_node_1 + - disk.root.size + disk.device.iops_vdbe_node_1: + - vdbe_node_1 + - disk.device.iops + disk.device.write.requests_vdbe_node_1: + - vdbe_node_1 + - disk.device.write.requests + disk.write.requests_vdbe_node_1: + - vdbe_node_1 + - disk.write.requests + vcpus_vdbe_node_1: + - vdbe_node_1 + - vcpus + disk.ephemeral.size_vdbe_node_1: + - vdbe_node_1 + - disk.ephemeral.size + feature_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - feature + feature_vdbe_untr_1_subports: + - vdbe_untr_1_subports + - feature + network.incoming.packets_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - network.incoming.packets + disk.device.latency_vdbe_node_1: + - vdbe_node_1 + - disk.device.latency + disk.capacity_vdbe_node_1: + - vdbe_node_1 + - disk.capacity + disk.device.capacity_vdbe_node_1: + - vdbe_node_1 + - disk.device.capacity + network.outgoing.packets.rate_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - network.outgoing.packets.rate + link_control_int_net: + - control_int_net + - link + end_point_control_int_net: + - control_int_net + - end_point + disk.usage_vdbe_node_1: + - vdbe_node_1 + - disk.usage + disk.read.bytes_vdbe_node_1: + - vdbe_node_1 + - disk.read.bytes + disk.device.read.requests.rate_vdbe_node_1: + - vdbe_node_1 + - disk.device.read.requests.rate + host_vdbe_node_1: + - vdbe_node_1 + - host + feature_control_int_net: + - control_int_net + - feature + network.incoming.bytes_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - network.incoming.bytes + cpu.delta_vdbe_node_1: + - vdbe_node_1 + - cpu.delta + scalable_vdbe_node_1: + - vdbe_node_1 + - scalable + disk.iops_vdbe_node_1: + - vdbe_node_1 + - disk.iops + network.incoming.packets.rate_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - network.incoming.packets.rate + feature_vdbe_node_1: + - vdbe_node_1 + - feature + memory.resident_vdbe_node_1: + - vdbe_node_1 + - memory.resident + endpoint_vdbe_node_1: + - vdbe_node_1 + - endpoint + network.outgoing.bytes.rate_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - network.outgoing.bytes.rate + os_vdbe_node_1: + - vdbe_node_1 + - os + feature_vdbe_0_subint_untr_vmi_1_vdbe_untr_1_subports: + - vdbe_untr_1_subports + - feature_vdbe_0_subint_untr_vmi_1 + disk.read.bytes.rate_vdbe_node_1: + - vdbe_node_1 + - disk.read.bytes.rate + disk.device.write.bytes.rate_vdbe_node_1: + - vdbe_node_1 + - disk.device.write.bytes.rate + network.outpoing.packets_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - network.outpoing.packets + attachment_control_int_net: + - control_int_net + - attachment + cpu_vdbe_node_1: + - vdbe_node_1 + - cpu + disk.device.write.requests.rate_vdbe_node_1: + - vdbe_node_1 + - disk.device.write.requests.rate + disk.read.requests_vdbe_node_1: + - vdbe_node_1 + - disk.read.requests + disk.write.bytes.rate_vdbe_node_1: + - vdbe_node_1 + - disk.write.bytes.rate + memory.usage_vdbe_node_1: + - vdbe_node_1 + - memory.usage + requirements: + dependency_vdbe_0_untr_vmi_1: + - vdbe_0_untr_vmi_1 + - dependency + dependency_vdbe_node_1: + - vdbe_node_1 + - dependency + local_storage_vdbe_node_1: + - vdbe_node_1 + - local_storage + dependency_vdbe_0_subint_untr_vmi_1_vdbe_untr_1_subports: + - vdbe_untr_1_subports + - dependency_vdbe_0_subint_untr_vmi_1 + dependency_control_int_net: + - control_int_net + - dependency + dependency_vdbe_untr_1_subports: + - vdbe_untr_1_subports + - dependency \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/nested_vlanServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/nested_vlanServiceTemplate.yaml new file mode 100644 index 0000000000..94e55fe70a --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/pattern4SubInterfaceNodesConnectedOut/out/nested_vlanServiceTemplate.yaml @@ -0,0 +1,171 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +metadata: + template_name: nested_vlan +imports: +- openecomp_heat_index: + file: openecomp-heat/_index.yml +- GlobalSubstitutionTypes: + file: GlobalSubstitutionTypesServiceTemplate.yaml +topology_template: + inputs: + aap_untrusted_ip_prefix: + hidden: false + immutable: false + type: string + description: ip prefix for primary vDBE VM on the VAN untrusted network + aap_sec_untrusted_ip_prefix: + hidden: false + immutable: false + type: string + description: ip prefix for secondary vDBE VM aap on the VAN untrusted network + vdbe_subport_network: + hidden: false + immutable: false + type: string + description: List of Contrail VLAN networks to use for the subinterfaces. The order and number of these must match the VLAN ID list + ip_v6_address: + hidden: false + immutable: false + type: string + description: IPv6 address associated with subinterfaces + counter: + hidden: false + immutable: false + type: float + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + subinterfaces_name_prefix: + hidden: false + immutable: false + type: string + description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource + ip_address: + hidden: false + immutable: false + type: string + description: IPv4 address associated with subinterfaces + aap_address_mode: + hidden: false + immutable: false + type: string + description: Address mode for the vDBE cluster IP + aap_untrusted_v6_ip_prefix: + hidden: false + immutable: false + type: string + description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network + parent_interface: + hidden: false + immutable: false + type: string + description: Parent Contrail interface + mac_address: + hidden: false + immutable: false + type: string + description: HW MAC address to use for subinterface + vlan_tag_list: + hidden: false + immutable: false + type: list + description: List of VLAN IDs to use for subinterfaces + entry_schema: + type: string + aap_sec_untrusted_ip_prefix_len: + hidden: false + immutable: false + type: string + description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network + vmac_address: + hidden: false + immutable: false + type: string + description: virtual MAC address to use for subinterface + aap_untrusted_v6_ip_prefix_len: + hidden: false + immutable: false + type: string + description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network + aap_untrusted_ip_prefix_len: + hidden: false + immutable: false + type: string + description: ip prefix length for the primary vDBE VM on the VAN untrusted network + node_templates: + vdbe_0_subint_untr_vmi_1: + type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + properties: + virtual_machine_interface_refs: + - get_input: parent_interface + name: + str_replace: + template: $NAME_$INDEX + params: + $NAME: + get_input: subinterfaces_name_prefix + $INDEX: + get_input: + - vlan_tag_list + - get_input: counter + virtual_network_refs: + - get_input: vdbe_subport_network + virtual_machine_interface_properties: + sub_interface_vlan_tag: + get_input: + - vlan_tag_list + - get_input: counter + virtual_machine_interface_allowed_address_pairs: + allowed_address_pair: + - address_mode: + get_input: aap_address_mode + ip: + ip_prefix: + get_input: aap_untrusted_ip_prefix + ip_prefix_len: + get_input: aap_untrusted_ip_prefix_len + mac: + get_input: vmac_address + - address_mode: + get_input: aap_address_mode + ip: + ip_prefix: + get_input: aap_sec_untrusted_ip_prefix + ip_prefix_len: + get_input: aap_sec_untrusted_ip_prefix_len + mac: + get_input: mac_address + - address_mode: + get_input: aap_address_mode + ip: + ip_prefix: + get_input: aap_untrusted_v6_ip_prefix + ip_prefix_len: + get_input: aap_untrusted_v6_ip_prefix_len + mac: + get_input: vmac_address + virtual_machine_interface_mac_addresses: + mac_address: + - get_input: mac_address + groups: + nested_vlan_group: + type: org.openecomp.groups.heat.HeatStack + properties: + heat_file: ../Artifacts/nested_vlan.yml + description: cmaui server template for vMMSC + members: + - vdbe_0_subint_untr_vmi_1 + substitution_mappings: + node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested_vlan + capabilities: + feature_vdbe_0_subint_untr_vmi_1: + - vdbe_0_subint_untr_vmi_1 + - feature + requirements: + dependency_vdbe_0_subint_untr_vmi_1: + - vdbe_0_subint_untr_vmi_1 + - dependency + binding_vdbe_0_subint_untr_vmi_1: + - vdbe_0_subint_untr_vmi_1 + - binding + link_vdbe_0_subint_untr_vmi_1: + - vdbe_0_subint_untr_vmi_1 + - link \ No newline at end of file -- cgit 1.2.3-korg