Nested input params appears in MainServiceTemplate

When Nested heat belongs to Volume HEAT and Volume Heat was associated to main HEAT (parent)
input parameters came from such nested were appear in MainServiceTemplate.yaml (TOSCA)
Also these parameters had annotation in nestedServiceTemplate.yaml

Change-Id: I46fff53de502c7ec48b6e4c26087121be89dd0a1
Issue-ID: SDC-1498
Signed-off-by: eleonorali <eleonoral@amdocs.com>
diff --git a/openecomp-bdd/features/TOSCA/HeatToToscaTranslation.feature b/openecomp-bdd/features/TOSCA/HeatToToscaTranslation.feature
index ff2ed5a..ae08036 100644
--- a/openecomp-bdd/features/TOSCA/HeatToToscaTranslation.feature
+++ b/openecomp-bdd/features/TOSCA/HeatToToscaTranslation.feature
@@ -154,4 +154,41 @@
     Then I want to check property "topology_template.inputs.vm_image_name.annotations" does not exist
     Then I want to check property "topology_template.inputs.compute_compute_name.annotations" does not exist
 
-    Then I want to create a VF for this Item
\ No newline at end of file
+    Then I want to create a VF for this Item
+
+  Scenario: Validate Input parameter for nested HEAT belongs to volume HEAT
+            when volume heat is associated to main HEAT
+    When I want to create a VSP with onboarding type "NetworkPackage"
+
+    Then I want to upload a NetworkPackage for this VSP from path "resources/uploads/nested-belongs-to-volume.zip"
+    And I want to process the NetworkPackage file for this VSP
+
+    Then I want to commit this Item
+    And I want to submit this VSP
+    And I want to package this VSP
+
+    Then I want to get the package for this Item to path "resources/downloads/VSPPackage.zip"
+
+    When I want to load the yaml content of the entry "Definitions/ocgmgr_nested_volumeServiceTemplate.yaml" in the zip "resources/downloads/VSPPackage.zip" to context
+    Then I want to check property "topology_template.inputs.volume_type.annotations" does not exist
+    Then I want to check property "topology_template.inputs.vnf_name.annotations" does not exist
+    Then I want to check property "topology_template.inputs.index.annotations" does not exist
+    Then I want to check property "topology_template.inputs.size.annotations" does not exist
+
+    When I want to load the yaml content of the entry "Definitions/MainServiceTemplate.yaml" in the zip "resources/downloads/VSPPackage.zip" to context
+
+    Then I want to check property "topology_template.inputs.index" does not exist
+    Then I want to check property "topology_template.inputs.size" does not exist
+    Then I want to check property "topology_template.inputs.volume_type" does not exist
+
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.type" for value "org.openecomp.annotations.Source"
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.properties.source_type" for value "HEAT"
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.properties.vf_module_label" to have length 6
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.properties.vf_module_label[0]" for value "ocgapp_03"
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.properties.vf_module_label[1]" for value "ocgapp_02"
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.properties.vf_module_label[2]" for value "ocgmgr"
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.properties.vf_module_label[3]" for value "ocgapp_01"
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.properties.vf_module_label[4]" for value "ocgapp_04"
+    Then I want to check property "topology_template.inputs.vnf_name.annotations.source.properties.vf_module_label[5]" for value "base_ocg"
+
+    Then I want to create a VF for this Item
diff --git a/openecomp-bdd/resources/uploads/nested-belongs-to-volume.zip b/openecomp-bdd/resources/uploads/nested-belongs-to-volume.zip
new file mode 100644
index 0000000..690cb95
--- /dev/null
+++ b/openecomp-bdd/resources/uploads/nested-belongs-to-volume.zip
Binary files differ
diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/FileData.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/FileData.java
index 81bf2fa..2bc549c 100644
--- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/FileData.java
+++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/FileData.java
@@ -22,75 +22,80 @@
 
 import org.apache.commons.collections4.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Predicate;
 
 public class FileData {
 
-  protected static final Set<Type> heatFileTypes =
-      new HashSet<>(Arrays.asList(Type.HEAT, Type.HEAT_NET, Type.HEAT_VOL));
-  private Boolean isBase;
-  private String file;
-  private Type type;
-  private List<FileData> data;
+    protected static final Set<Type> heatFileTypes =
+        new HashSet<>(Arrays.asList(Type.HEAT, Type.HEAT_NET, Type.HEAT_VOL));
+    private Boolean isBase;
+    private String parentFile;
+    private String file;
+    private Type type;
+    private List<FileData> data;
 
-  public static Predicate<FileData> buildFileDataPredicateByType(Type... types) {
-    return fileData -> Arrays.asList(types).contains(fileData.getType());
-  }
+    public static Predicate<FileData> buildFileDataPredicateByType(Type... types) {
+        return fileData -> Arrays.asList(types).contains(fileData.getType());
+    }
 
-  public static boolean isHeatFile(Type type) {
+    public static boolean isHeatFile(Type type) {
     return heatFileTypes.contains(type);
   }
 
-  public Boolean getBase() {
-    return isBase;
+    public Boolean getBase() {
+        return isBase;
+    }
+
+    public void setBase(Boolean base) {
+        isBase = base;
+    }
+
+    public String getFile() {
+        return file;
+    }
+
+    public void setFile(String file) {
+        this.file = file;
+    }
+
+    public String getParentFile() {
+        return parentFile;
+    }
+
+    public void setParentFile(String parentFile) {
+    this.parentFile = parentFile;
   }
 
-  public void setBase(Boolean base) {
-    isBase = base;
-  }
-
-  public String getFile() {
-    return file;
-  }
-
-  public void setFile(String file) {
-    this.file = file;
-  }
-
-  public Type getType() {
+    public Type getType() {
     return type;
   }
 
-  public void setType(Type type) {
+    public void setType(Type type) {
     this.type = type;
   }
 
-  public List<FileData> getData() {
-    return data;
-  }
-
-  public void setData(List<FileData> data) {
-    this.data = data;
-  }
-
-  /**
-   * Add file data.
-   *
-   * @param data the data
-   */
-  public void addFileData(FileData data) {
-    if (CollectionUtils.isEmpty(this.data)) {
-      this.data = new ArrayList<>();
+    public List<FileData> getData() {
+        return data;
     }
-    this.data.add(data);
-  }
 
-  public enum Type {
+    public void setData(List<FileData> data) {
+        this.data = data;
+    }
+
+    /**
+    * Add file data.
+    *
+    * @param data the data
+    */
+    public void addFileData(FileData data) {
+        if (CollectionUtils.isEmpty(this.data)) {
+            this.data = new ArrayList<>();
+        }
+        this.data.add(data);
+    }
+
+    public enum Type {
 
     HEAT("HEAT"),
     HEAT_ENV("HEAT_ENV"),
@@ -108,20 +113,23 @@
     VF_LICENSE("VF_LICENSE"),
     OTHER("OTHER");
 
-    private String displayName;
+        private String displayName;
 
-    Type(String displayName) {
-      this.displayName = displayName;
+        Type(String displayName) {
+            this.displayName = displayName;
+        }
+
+        public String getDisplayName() {
+            return displayName;
+        }
+
+        public static boolean isArtifact(Type fileType) {
+            return !Arrays.asList(HEAT,HEAT_ENV, HEAT_VOL).contains(fileType);
+        }
+
+        public static boolean canBeAssociated(Type fileType)
+        {
+            return HEAT_VOL == fileType;
+        }
     }
-
-    public String getDisplayName() {
-      return displayName;
-    }
-
-    public static boolean isArtifact(Type fileType)
-    {
-      return !Arrays.asList(HEAT,HEAT_ENV, HEAT_VOL).contains(fileType);
-    }
-
-  }
 }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
index f2773ae..bd8b558 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
@@ -213,7 +213,7 @@
         List<FileData> fileDataList = context.getManifest().getContent().getData();
         for (FileData fileData : fileDataList) {
             if (TranslationService.getTypesToProcessByTranslator().contains(fileData.getType()) && fileData.getFile()
-                                                                                                           .equals(heatFileName)) {
+                    .equals(heatFileName)) {
                 return fileData;
             }
         }
@@ -225,7 +225,6 @@
         FileDataCollection fileDataCollection = new FileDataCollection();
         Map<String, FileData> filteredFiles = filterFileDataListByType(fileDataList, typeFilter);
         Set<String> referenced = new HashSet<>();
-
         for (FileData fileData : filteredFiles.values()) {
             String fileName = fileData.getFile();
 
@@ -236,8 +235,8 @@
                 HeatOrchestrationTemplate heatOrchestrationTemplate = new YamlUtil().yamlToObject(
                         translationContext.getFileContent(fileName), HeatOrchestrationTemplate.class);
                 if (MapUtils.isNotEmpty(heatOrchestrationTemplate.getResources())) {
-                    applyFilterOnFileCollection(heatOrchestrationTemplate, translationContext, fileDataCollection,
-                            filteredFiles, referenced);
+                    referenced.addAll(applyFilterOnFileCollection(heatOrchestrationTemplate, translationContext,
+                            fileDataCollection, filteredFiles));
                 }
 
             } else {
@@ -246,7 +245,9 @@
             }
         }
 
+        referenced.addAll(getAssociatedFiles(filteredFiles.values()));
         referenced.forEach(filteredFiles::remove);
+
         if (!CollectionUtils.isEmpty(fileDataCollection.getBaseFile())) {
             for (FileData fileData : fileDataCollection.getBaseFile()) {
                 filteredFiles.remove(fileData.getFile());
@@ -256,54 +257,80 @@
         return fileDataCollection;
     }
 
-    private static void applyFilterOnFileCollection(HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                                           TranslationContext translationContext,
-                                                           FileDataCollection fileDataCollection,
-                                                           Map<String, FileData> filteredFiles,
-                                                           Set<String> referenced) {
-        List<String> filenames = extractFilenamesFromFileDataList(filteredFiles.values());
-
-        for (Resource resource : heatOrchestrationTemplate.getResources().values()) {
-            if (filenames.contains(resource.getType())) {
-                handleNestedFile(translationContext, fileDataCollection, filteredFiles, referenced, resource.getType());
-            } else if (resource.getType().equals(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource())) {
-                handleResourceGrpNestedFile(resource, translationContext, fileDataCollection, filteredFiles, filenames,
-                        referenced);
-            }
-        }
+    private static Set<String> getAssociatedFiles(Collection<FileData> filteredFiles) {
+        Set<String> associatedFiles = new HashSet<>();
+        filteredFiles.stream().filter(file -> file.getParentFile() != null
+                            && FileData.Type.canBeAssociated(file.getType()))
+                                    .forEach(file -> associatedFiles.add(file.getFile()));
+        return associatedFiles;
     }
 
-    private static void handleResourceGrpNestedFile(Resource resource, TranslationContext translationContext,
+    private static Set<String> applyFilterOnFileCollection(HeatOrchestrationTemplate heatOrchestrationTemplate,
+                                                           TranslationContext translationContext,
                                                            FileDataCollection fileDataCollection,
-                                                           Map<String, FileData> filteredFiles, List<String> filenames,
-                                                           Set<String> referenced) {
+                                                           Map<String, FileData> filteredFiles) {
+        Set<String> nestedFiles = new HashSet<>();
+        List<String> filenames = extractFilenamesFromFileDataList(filteredFiles.values());
+        for (Resource resource : heatOrchestrationTemplate.getResources().values()) {
+            String resourceType = resource.getType();
+            if (filenames.contains(resourceType)) {
+                handleNestedFile(translationContext, fileDataCollection, filteredFiles, resourceType);
+                nestedFiles.add(resourceType);
+            } else if (resourceType.equals(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource())) {
+                Optional<String> nestedFile = handleResourceGrpNestedFile(resource, translationContext,
+                        fileDataCollection, filteredFiles, filenames);
+                nestedFile.ifPresent(nestedFiles::add);
+            }
+        }
+        return nestedFiles;
+    }
+
+    private static Optional<String> handleResourceGrpNestedFile(Resource resource, TranslationContext
+            translationContext, FileDataCollection fileDataCollection,
+                    Map<String, FileData> filteredFiles, List<String> filenames) {
         Object resourceDef = resource.getProperties().get(HeatConstants.RESOURCE_DEF_PROPERTY_NAME);
         Object innerTypeDef = ((Map) resourceDef).get(HeatConstants.RESOURCE_DEF_TYPE_PROPERTY_NAME);
         if (innerTypeDef instanceof String) {
             String internalResourceType = (String) innerTypeDef;
             if (filenames.contains(internalResourceType)) {
-                handleNestedFile(translationContext, fileDataCollection, filteredFiles, referenced,
+                handleNestedFile(translationContext, fileDataCollection, filteredFiles,
                         internalResourceType);
+                return Optional.of(internalResourceType);
             }
         }
+        return Optional.empty();
     }
 
     private static void handleNestedFile(TranslationContext translationContext, FileDataCollection fileDataCollection,
-                                                Map<String, FileData> filteredFiles, Set<String> referenced,
+                                                Map<String, FileData> filteredFiles,
                                                 String nestedFileName) {
-        referenced.add(nestedFileName);
         fileDataCollection.addNestedFiles(filteredFiles.get(nestedFileName));
         translationContext.getNestedHeatsFiles().add(nestedFileName);
     }
 
-    private static Map<String, FileData> filterFileDataListByType(List<FileData> fileDataList,
-                                                                         Set<FileData.Type> typesToGet) {
+    private static Map<String, FileData>  filterFileDataListByType(List<FileData> fileDataList,
+            Set<FileData.Type> typesToGet) {
         Map<String, FileData> filtered = new HashMap<>();
-        fileDataList.stream().filter(file -> typesToGet.contains(file.getType()))
-                    .forEach(file -> filtered.put(file.getFile(), file));
+        filterFileDataListByType(fileDataList, filtered, typesToGet, null);
         return filtered;
     }
 
+    private static void filterFileDataListByType(List<FileData> fileDataList, Map<String, FileData> filtered,
+            Set<FileData.Type> typesToGet, String parentFileName) {
+        fileDataList.stream().filter(file -> typesToGet.contains(file.getType()))
+                    .forEach(file -> {
+                        filtered.put(file.getFile(), file);
+                        file.setParentFile(parentFileName);
+                    });
+
+        Set<FileData.Type> canBeAssociatedTypes = typesToGet.stream()
+                .filter(FileData.Type::canBeAssociated).collect(Collectors.toSet());
+
+        fileDataList.stream().filter(file -> Objects.nonNull(file.getData()))
+                .forEach(file -> filterFileDataListByType(file.getData(), filtered,
+                        canBeAssociatedTypes, file.getFile()));
+    }
+
     private static List<String> extractFilenamesFromFileDataList(Collection<FileData> fileDataList) {
         return fileDataList.stream().map(FileData::getFile).collect(Collectors.toList());
     }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
index ee0cee6..2a845fb 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
@@ -131,34 +131,21 @@
      */
     public void translateHeatFile(ServiceTemplate serviceTemplate, FileData heatFileData,
                                   TranslationContext context) {
-        translateHeatFile(serviceTemplate, heatFileData,  null, context);
-    }
-
-    /**
-     * Translate heat file.
-     *
-     * @param serviceTemplate the service template
-     * @param heatFileData    the current heat file data
-     * @param parentHeatFileName the main heat to which associated current heat file (e.g. volume heat)
-     * @param context         the context
-     */
-    public void translateHeatFile(ServiceTemplate serviceTemplate, FileData heatFileData, String parentHeatFileName,
-                                  TranslationContext context) {
         String heatFileName = heatFileData.getFile();
         HeatOrchestrationTemplate heatOrchestrationTemplate = new YamlUtil()
                 .yamlToObject(context.getFileContent(heatFileName), HeatOrchestrationTemplate.class);
 
         translateInputParameters(serviceTemplate, heatOrchestrationTemplate, heatFileData, context,
-                heatFileName, parentHeatFileName);
+                heatFileName);
+
         translateResources(heatFileName, serviceTemplate, heatOrchestrationTemplate, context);
         translateOutputParameters(serviceTemplate, heatOrchestrationTemplate, heatFileData,
                 heatFileName, context);
         createHeatStackGroup(serviceTemplate, heatFileData, heatOrchestrationTemplate, context);
         handleHeatPseudoParam(heatFileName, serviceTemplate, context);
-
         if (Objects.nonNull(heatFileData.getData())) {
-            heatFileData.getData().stream().filter(data -> data.getType() == FileData.Type.HEAT_VOL)
-                    .forEach(data -> translateHeatFile(serviceTemplate, data, heatFileData.getFile(), context));
+            heatFileData.getData().stream().filter(data -> FileData.Type.canBeAssociated(data.getType()))
+                    .forEach(data -> translateHeatFile(serviceTemplate, data, context));
         }
     }
 
@@ -244,7 +231,7 @@
     private void translateInputParameters(ServiceTemplate serviceTemplate,
                                           HeatOrchestrationTemplate heatOrchestrationTemplate,
                                           FileData heatFileData, TranslationContext context,
-                                          String heatFileName, String parentHeatFileName) {
+                                          String heatFileName) {
         if (heatOrchestrationTemplate.getParameters() == null) {
             return;
         }
@@ -252,7 +239,7 @@
         Map<String, ParameterDefinition> parameterDefinitionMap =
                 TranslatorHeatToToscaParameterConverter
                         .parameterConverter(serviceTemplate, heatOrchestrationTemplate.getParameters(),
-                                heatOrchestrationTemplate, heatFileName, parentHeatFileName, context);
+                                heatOrchestrationTemplate, heatFileName, heatFileData.getParentFile(), context);
         Environment heatEnvFile = getHeatEnvFile(heatFileData, context);
         Map<String, Object> parameters = heatEnvFile.getParameters();
         Object parameterValue;
@@ -286,19 +273,19 @@
 
     }
 
-    private void updateAnnotations(Map<String, ParameterDefinition> inputParameters, Map<String, ParameterDefinition> newParameters) {
-
+    private void updateAnnotations(Map<String, ParameterDefinition> inputParameters, Map<String,
+            ParameterDefinition> newParameters) {
             newParameters.entrySet().stream().filter(stringParameterDefinitionEntry ->
-                    inputParameters.containsKey(stringParameterDefinitionEntry.getKey()) &&
-                         isHasAnnotation(inputParameters, stringParameterDefinitionEntry)).
-                            forEach(stringParameterDefinitionEntry -> {
-                                List inputParamVFModuleList = getVFModulesList(inputParameters.get(stringParameterDefinitionEntry.getKey()));
+                    inputParameters.containsKey(stringParameterDefinitionEntry.getKey())
+                         && isHasAnnotation(inputParameters, stringParameterDefinitionEntry))
+                            .forEach(stringParameterDefinitionEntry -> {
+                                List inputParamVFModuleList = getVFModulesList(
+                                        inputParameters.get(stringParameterDefinitionEntry.getKey()));
                                 List newParamVFModuleList = getVFModulesList(stringParameterDefinitionEntry.getValue());
-                                if(inputParamVFModuleList.contains(newParamVFModuleList.get(0))){
+                                if (inputParamVFModuleList.contains(newParamVFModuleList.get(0))) {
                                     newParamVFModuleList.remove(0);
                                 }
                                 newParamVFModuleList.addAll(inputParamVFModuleList);
-
                             });
 
     }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/undervolume/TranslateHeatNestedBelongsToVolumeTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/undervolume/TranslateHeatNestedBelongsToVolumeTest.java
new file mode 100644
index 0000000..9c5b422
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/undervolume/TranslateHeatNestedBelongsToVolumeTest.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openecomp.sdc.translator.impl.heattotosca.nested.undervolume;
+
+import org.junit.Test;
+import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
+
+public class TranslateHeatNestedBelongsToVolumeTest extends BaseResourceTranslationTest {
+    {
+        inputFilesPath = "/mock/heat/nested/nestedundervolume/inputs";
+        outputFilesPath = "/mock/heat/nested/nestedundervolume/expectedoutputfiles";
+    }
+
+    @Test
+    public void testTranslate() throws Exception {
+        testTranslation();
+    }
+
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000..aadea7b
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,2252 @@
+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
+node_types:
+  org.openecomp.resource.vfc.nodes.heat.ocgmgr:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+  org.openecomp.resource.vfc.nodes.heat.ocgapp:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  inputs:
+    keycloak_rpm_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: keycloak_rpm_name
+      type: string
+      description: keycloak rpm name
+      default: keycloak-pkg-x86_64.rpm
+    ocgapp_oam_protected_ip_3:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_oam_protected_ip_3
+      type: string
+      description: OCG OAM IP list
+    ocgapp_volume_type_2:
+      label: vm volume type
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            source_type: HEAT
+            param_name: ocgapp_volume_type_2
+      type: string
+      description: the name of the target volume backend for ocgapp1
+      default: SF-Default-SSD
+    ocgapp_volume_type_1:
+      label: vm volume type
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            source_type: HEAT
+            param_name: ocgapp_volume_type_1
+      type: string
+      description: the name of the target volume backend for ocgapp1
+      default: SF-Default-SSD
+    ocgapp_oam_protected_ip_2:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            source_type: HEAT
+            param_name: ocgapp_oam_protected_ip_2
+      type: string
+      description: OCG OAM IP list
+    ocgapp_volume_type_3:
+      label: vm volume type
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_volume_type_3
+      type: string
+      description: the name of the target volume backend for ocgapp1
+      default: SF-Default-SSD
+    eth1_netmask:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: eth1_netmask
+      type: string
+      description: mask length
+      default: 21
+    domain_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: domain_name
+      type: string
+      description: address
+      default: eng.mobilephone.net
+    eth1_ip:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: eth1_ip
+      type: string
+      description: address
+      default: 107.112.168.129
+    eth2_ip_range:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: eth2_ip_range
+      type: string
+      description: range
+      default: 107.242.64.1
+    ocg_user:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocg_user
+      type: string
+      description: user to install ocg
+      default: fworks
+    ocgapp_oam_direct_ip_2:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            source_type: HEAT
+            param_name: ocgapp_oam_direct_ip_2
+      type: string
+      description: OCG OAM IP list
+    ocgapp_oam_direct_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            source_type: HEAT
+            param_name: ocgapp_oam_direct_ip_1
+      type: string
+      description: OCG OAM IP list
+    ocgapp_oam_direct_ip_0:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_01
+            source_type: HEAT
+            param_name: ocgapp_oam_direct_ip_0
+      type: string
+      description: OCG OAM IP list
+    ocgapp_oam_direct_ip_3:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_oam_direct_ip_3
+      type: string
+      description: OCG OAM IP list
+    ocgmgr_volume_ids:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_volume_ids
+      type: json
+      description: Unique IDs for volumes
+    ocg_install_jar:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocg_install_jar
+      type: string
+      description: location of ocg installer
+      default: /home/fworks/Installer/ocg10/installer.jar
+    wim_install_file:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: wim_install_file
+      type: string
+      description: WIM Install File location
+      default: /home/fworks/Installer/wim/ovlm-integration-module.sh
+    ovlm_install_dir:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ovlm_install_dir
+      type: string
+      description: Location of the ovlm-install dir
+      default: /home/fworks/Installer/weaver
+    ocg_install_properties:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocg_install_properties
+      type: string
+      description: location of ocg install properties
+      default: /tmp/ocg.install.properties
+    ocgmgr_names:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_names
+      type: list
+      description: OCG MGR VM names list (should be 2, since we have 2 MGR VMs)
+      entry_schema:
+        type: string
+    ocgapp_volume_size_3:
+      label: Cinder volume size
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_volume_size_3
+      type: float
+      description: the size of the Cinder volume
+      default: 400
+      constraints:
+      - in_range:
+        - 100
+        - 400
+    ocgapp_volume_type_0:
+      label: vm volume type
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_01
+            source_type: HEAT
+            param_name: ocgapp_volume_type_0
+      type: string
+      description: the name of the target volume backend for ocgapp1
+      default: SF-Default-SSD
+    ocgapp_oam_protected_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            source_type: HEAT
+            param_name: ocgapp_oam_protected_ip_1
+      type: string
+      description: OCG OAM IP list
+    ocgapp_oam_protected_ip_0:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_01
+            source_type: HEAT
+            param_name: ocgapp_oam_protected_ip_0
+      type: string
+      description: OCG OAM IP list
+    ocgapp_volume_size_2:
+      label: Cinder volume size
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            source_type: HEAT
+            param_name: ocgapp_volume_size_2
+      type: float
+      description: the size of the Cinder volume
+      default: 400
+      constraints:
+      - in_range:
+        - 100
+        - 400
+    ocgapp_volume_size_1:
+      label: Cinder volume size
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            source_type: HEAT
+            param_name: ocgapp_volume_size_1
+      type: float
+      description: the size of the Cinder volume
+      default: 400
+      constraints:
+      - in_range:
+        - 100
+        - 400
+    ocgapp_volume_size_0:
+      label: Cinder volume size
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_01
+            source_type: HEAT
+            param_name: ocgapp_volume_size_0
+      type: float
+      description: the size of the Cinder volume
+      default: 400
+      constraints:
+      - in_range:
+        - 100
+        - 400
+    ocgmgr_image_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_image_name
+      type: string
+      description: operative system image
+      default: vOCG_MGR_SNAP_20180130
+    vf_module_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgmgr
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: vf_module_id
+      type: string
+      description: Unique ID for this VF module instance
+    ocgmgr_oam_protected_ips:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_oam_protected_ips
+      type: list
+      description: OCG OAM IP list
+      entry_schema:
+        type: string
+    vnf_name:
+      label: OCG VNF Name
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgmgr
+            - ocgapp_01
+            - ocgapp_04
+            - base_ocg
+            source_type: HEAT
+            param_name: vnf_name
+      type: string
+      description: OCG VNF Name
+      default: zrdm5avocg01
+    nameserver_ip:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: nameserver_ip
+      type: string
+      description: nameserver
+      default: 135.214.16.119
+    ocgapp_name_3:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_name_3
+      type: string
+      description: OCG VM server name list (there should be 2, since we have 2 app vms)
+    ovlm_install_properties:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ovlm_install_properties
+      type: string
+      description: ovlm install properties
+      default: /tmp/ovlm.install.properties
+    ocgapp_name_0:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_01
+            source_type: HEAT
+            param_name: ocgapp_name_0
+      type: string
+      description: OCG VM server name list (there should be 2, since we have 2 app vms)
+    ocgapp_flavor_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_flavor_name
+      type: string
+      description: resources to be applied on instances
+      default: nv.c8r32d320
+    cor_direct_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: cor_direct_net_name
+      type: string
+      description: COR_DIRECT network where instances will connect
+    ocgapp_name_2:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            source_type: HEAT
+            param_name: ocgapp_name_2
+      type: string
+      description: OCG VM server name list (there should be 2, since we have 2 app vms)
+    oam_direct_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: oam_direct_net_name
+      type: string
+      description: OAM network where instances will connect
+    ocgapp_name_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            source_type: HEAT
+            param_name: ocgapp_name_1
+      type: string
+      description: OCG VM server name list (there should be 2, since we have 2 app vms)
+    vnf_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgmgr
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: vnf_id
+      type: string
+      description: Unique ID for this VF instance
+    ocgapp_cor_direct_v6_ip_0:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_01
+            source_type: HEAT
+            param_name: ocgapp_cor_direct_v6_ip_0
+      type: string
+      description: fixed IP assignment for VM's on the COR_DIRECT network
+    availability_zone_0:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            - ocgmgr
+            - ocgapp_01
+            source_type: HEAT
+            param_name: availability_zone_0
+      type: string
+      description: availability zone 1 ID or name
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgmgr
+            - ocgapp_04
+            source_type: HEAT
+            param_name: availability_zone_1
+      type: string
+      description: availability zone 2 ID or name
+    OS::stack_name:
+      type: string
+      required: false
+    ocgapp_cor_direct_v6_ip_3:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_cor_direct_v6_ip_3
+      type: string
+      description: fixed IP assignment for VM's on the COR_DIRECT network
+    ocgapp_cor_direct_v6_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            source_type: HEAT
+            param_name: ocgapp_cor_direct_v6_ip_1
+      type: string
+      description: fixed IP assignment for VM's on the COR_DIRECT network
+    ocgmgr_flavor_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_flavor_name
+      type: string
+      description: resources to be applied on instances
+      default: nv.c8r32d320
+    ocgapp_cor_direct_v6_ip_2:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            source_type: HEAT
+            param_name: ocgapp_cor_direct_v6_ip_2
+      type: string
+      description: fixed IP assignment for VM's on the COR_DIRECT network
+    ocgmgr_public_key:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_public_key
+      type: string
+      description: creator's ssh public key
+    ocgapp_volume_id_0:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_01
+            source_type: HEAT
+            param_name: ocgapp_volume_id_0
+      type: string
+      description: Unique IDs for volumes
+    java_home:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: java_home
+      type: string
+      description: java home
+      default: /home/fworks/java/jdk1.8.0_112
+    ocgapp_volume_id_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            source_type: HEAT
+            param_name: ocgapp_volume_id_1
+      type: string
+      description: Unique IDs for volumes
+    ocgapp_volume_id_2:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            source_type: HEAT
+            param_name: ocgapp_volume_id_2
+      type: string
+      description: Unique IDs for volumes
+    ocgapp_volume_id_3:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_volume_id_3
+      type: string
+      description: Unique IDs for volumes
+    ocgapp_image_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_image_name
+      type: string
+      description: operative system image
+      default: NIMBUS_OCG-APPLICATION_20180328.qcow2
+    ocgapp_public_key:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_public_key
+      type: string
+      description: creator's ssh public key
+      default: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAh5B/f9JmJL5HcIJT+XeGnE9Jlv22NYGweMx+M2eX53X0sxdB8onhqDiLFODgDgXUuQk11NM2tQeA+xH+nlZxdETK+5uKb2SLwsPjZnxHQPrGQP1KKAZi9aKoZFjYmWrYuqzQFT9QRz3gehG+pX82mzMkkE/Da2/XJ62zu8PKfapn63MhhmxG5w5onuN2XsM2zfI6GILFM56ppLtMCkgvzXVcWOpr7pD4kpnC9WavxwAkmQPrWIbTi0MKIEeuON0B+KRgC3b8GnCpuE2GFTffAm1MBgi0Urs8e3XGHsilVMqYdaCPZwq5ZKlzivX5wZQH9yT9m9Db6XLL66ZIaBHt2w== rsa-key-20170906
+    ocg_shared_server_grp_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocg_shared_server_grp_id
+      type: string
+      description: OCG anti-affinity server group
+    oam_protected_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgmgr
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: oam_protected_net_name
+      type: string
+      description: OAM network where instances will connect
+    ocgapp_shared_sec_grp_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_shared_sec_grp_id
+      type: string
+      description: security group
+    ocgmgr_volume_type_0:
+      label: mgr vm 1 volume type
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_volume_type_0
+      type: string
+      description: the name of the target volume backend for the first OCG MGR
+      default: SF-Default-SSD
+    ocgapp_cor_direct_ip_2:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            source_type: HEAT
+            param_name: ocgapp_cor_direct_ip_2
+      type: string
+      description: OCG COR_DIRECT IP list
+    ocgapp_cor_direct_ip_3:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_04
+            source_type: HEAT
+            param_name: ocgapp_cor_direct_ip_3
+      type: string
+      description: OCG COR_DIRECT IP list
+    volume_count:
+      label: volume count
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: volume_count
+      type: float
+      description: num of volumes needed
+      default: 2
+      constraints:
+      - valid_values:
+        - 0
+        - 1
+        - 2
+    ocgapp_cor_direct_ip_0:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_01
+            source_type: HEAT
+            param_name: ocgapp_cor_direct_ip_0
+      type: string
+      description: OCG COR_DIRECT IP list
+    ocgapp_cor_direct_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_02
+            source_type: HEAT
+            param_name: ocgapp_cor_direct_ip_1
+      type: string
+      description: OCG COR_DIRECT IP list
+    eth2_ip:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: eth2_ip
+      type: string
+      description: address
+      default: 107.242.64.49
+    ocgmgr_volume_size_0:
+      label: Cinder volume 1 size
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_volume_size_0
+      type: float
+      description: the size of the Cinder volume
+      default: 400
+      constraints:
+      - in_range:
+        - 50
+        - 400
+    ocgmgr_shared_sec_grp_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgmgr
+            source_type: HEAT
+            param_name: ocgmgr_shared_sec_grp_id
+      type: string
+      description: security group
+    eth1_ip_range:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - ocgapp_03
+            - ocgapp_02
+            - ocgapp_01
+            - ocgapp_04
+            source_type: HEAT
+            param_name: eth1_ip_range
+      type: string
+      description: range
+      default: 130.4.128.0
+  node_templates:
+    ocgmgr_volume_resource_group:
+      type: org.openecomp.resource.abstract.nodes.heat.ocgmgr_nested_volume
+      directives:
+      - substitutable
+      properties:
+        service_template_filter:
+          substitute_service_template: ocgmgr_nested_volumeServiceTemplate.yaml
+          count:
+            get_input: volume_count
+          mandatory: false
+        volume_type:
+          get_input: ocgmgr_volume_type_0
+        size:
+          get_input: ocgmgr_volume_size_0
+        vnf_name:
+          get_input: vnf_name
+        index:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    OCGMGR_SECURITY_GROUP:
+      type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
+      properties:
+        name:
+          str_replace:
+            template: VF_NAME_sec_grp_OCGMGR
+            params:
+              VF_NAME:
+                get_input: vnf_name
+        description: ocg mgr security group
+        rules:
+        - protocol: tcp
+          ethertype: IPv4
+          port_range_max: 65535
+          remote_ip_prefix: 0.0.0.0/0
+          direction: egress
+          port_range_min: 1
+        - protocol: udp
+          ethertype: IPv4
+          port_range_max: 65535
+          remote_ip_prefix: 0.0.0.0/0
+          direction: egress
+          port_range_min: 1
+        - protocol: icmp
+          ethertype: IPv4
+          remote_ip_prefix: 0.0.0.0/0
+          direction: egress
+        - protocol: tcp
+          ethertype: IPv4
+          port_range_max: 65535
+          remote_ip_prefix: 0.0.0.0/0
+          direction: ingress
+          port_range_min: 1
+        - protocol: udp
+          ethertype: IPv4
+          port_range_max: 65535
+          remote_ip_prefix: 0.0.0.0/0
+          direction: ingress
+          port_range_min: 1
+        - protocol: icmp
+          ethertype: IPv4
+          remote_ip_prefix: 0.0.0.0/0
+          direction: ingress
+      requirements:
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgmgr_oam_protected_0_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgmgr_oam_protected_1_port
+          relationship: org.openecomp.relationships.AttachesTo
+    ocgapp_cor_direct_port_3:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_cor_direct_ip_3
+        - ip_address:
+            get_input: ocgapp_cor_direct_v6_ip_3
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_cor_port_3
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: cor_direct
+        network:
+          get_input: cor_direct_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_3
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_cor_direct_port_2:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_cor_direct_ip_2
+        - ip_address:
+            get_input: ocgapp_cor_direct_v6_ip_2
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_cor_port_2
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: cor_direct
+        network:
+          get_input: cor_direct_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_2
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_server_2:
+      type: org.openecomp.resource.vfc.nodes.heat.ocgapp
+      properties:
+        flavor:
+          get_input: ocgapp_flavor_name
+        key_name: UNSUPPORTED_RESOURCE_ocgapp_admin_key
+        availability_zone:
+          get_input: availability_zone_1
+        image:
+          get_input: ocgapp_image_name
+        metadata:
+          vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        personality:
+          /etc/hostname:
+            str_replace:
+              template: |
+                ${NAME}.${DOMAIN_NAME}
+              params:
+                ${NAME}:
+                  get_input: ocgapp_name_2
+                ${DOMAIN_NAME}:
+                  get_input: domain_name
+          /etc/resolv.conf:
+            str_replace:
+              template: |
+                nameserver ${NAME_SERVER}
+                domain ${DOMAIN_NAME}
+              params:
+                ${NAME_SERVER}:
+                  get_input: nameserver_ip
+                ${DOMAIN_NAME}:
+                  get_input: domain_name
+          /etc/sysconfig/network-scripts/route-eth2:
+            str_replace:
+              template: |
+                ${ETH2_IP_RANGE} via ${ETH2_IP} dev eth2
+              params:
+                ${ETH2_IP_RANGE}:
+                  get_input: eth2_ip_range
+                ${ETH2_IP}:
+                  get_input: eth2_ip
+          /etc/sysconfig/network-scripts/route-eth1:
+            str_replace:
+              template: |
+                ${ETH1_IP_RANGE}/${ETH1_NETMASK} via ${ETH1_IP} dev eth1
+              params:
+                ${ETH1_IP_RANGE}:
+                  get_input: eth1_ip_range
+                ${ETH1_IP}:
+                  get_input: eth1_ip
+                ${ETH1_NETMASK}:
+                  get_input: eth1_netmask
+        user_data_format: RAW
+        name:
+          get_input: ocgapp_name_2
+        scheduler_hints:
+          group:
+            get_input: ocg_shared_server_grp_id
+      requirements:
+      - local_storage:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_volume_2
+          relationship: ocgapp_volume_attachment_2
+    ocgapp_server_1:
+      type: org.openecomp.resource.vfc.nodes.heat.ocgapp
+      properties:
+        flavor:
+          get_input: ocgapp_flavor_name
+        key_name: UNSUPPORTED_RESOURCE_ocgapp_admin_key
+        availability_zone:
+          get_input: availability_zone_0
+        image:
+          get_input: ocgapp_image_name
+        metadata:
+          vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        personality:
+          /etc/hostname:
+            str_replace:
+              template: |
+                ${NAME}.${DOMAIN_NAME}
+              params:
+                ${NAME}:
+                  get_input: ocgapp_name_1
+                ${DOMAIN_NAME}:
+                  get_input: domain_name
+          /etc/resolv.conf:
+            str_replace:
+              template: |
+                nameserver ${NAME_SERVER}
+                domain ${DOMAIN_NAME}
+              params:
+                ${NAME_SERVER}:
+                  get_input: nameserver_ip
+                ${DOMAIN_NAME}:
+                  get_input: domain_name
+          /etc/sysconfig/network-scripts/route-eth2:
+            str_replace:
+              template: |
+                ${ETH2_IP_RANGE} via ${ETH2_IP} dev eth2
+              params:
+                ${ETH2_IP_RANGE}:
+                  get_input: eth2_ip_range
+                ${ETH2_IP}:
+                  get_input: eth2_ip
+          /etc/sysconfig/network-scripts/route-eth1:
+            str_replace:
+              template: |
+                ${ETH1_IP_RANGE}/${ETH1_NETMASK} via ${ETH1_IP} dev eth1
+              params:
+                ${ETH1_IP_RANGE}:
+                  get_input: eth1_ip_range
+                ${ETH1_IP}:
+                  get_input: eth1_ip
+                ${ETH1_NETMASK}:
+                  get_input: eth1_netmask
+        user_data_format: RAW
+        name:
+          get_input: ocgapp_name_1
+        scheduler_hints:
+          group:
+            get_input: ocg_shared_server_grp_id
+      requirements:
+      - local_storage:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_volume_1
+          relationship: ocgapp_volume_attachment_1
+    ocgapp_server_0:
+      type: org.openecomp.resource.vfc.nodes.heat.ocgapp
+      properties:
+        flavor:
+          get_input: ocgapp_flavor_name
+        key_name: UNSUPPORTED_RESOURCE_ocgapp_admin_key
+        availability_zone:
+          get_input: availability_zone_0
+        image:
+          get_input: ocgapp_image_name
+        metadata:
+          vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        personality:
+          /etc/hostname:
+            str_replace:
+              template: |
+                ${NAME}.${DOMAIN_NAME}
+              params:
+                ${NAME}:
+                  get_input: ocgapp_name_0
+                ${DOMAIN_NAME}:
+                  get_input: domain_name
+          /etc/resolv.conf:
+            str_replace:
+              template: |
+                nameserver ${NAME_SERVER}
+                domain ${DOMAIN_NAME}
+              params:
+                ${NAME_SERVER}:
+                  get_input: nameserver_ip
+                ${DOMAIN_NAME}:
+                  get_input: domain_name
+          /etc/sysconfig/network-scripts/route-eth2:
+            str_replace:
+              template: |
+                ${ETH2_IP_RANGE} via ${ETH2_IP} dev eth2
+              params:
+                ${ETH2_IP_RANGE}:
+                  get_input: eth2_ip_range
+                ${ETH2_IP}:
+                  get_input: eth2_ip
+          /etc/sysconfig/network-scripts/route-eth1:
+            str_replace:
+              template: |
+                ${ETH1_IP_RANGE}/${ETH1_NETMASK} via ${ETH1_IP} dev eth1
+              params:
+                ${ETH1_IP_RANGE}:
+                  get_input: eth1_ip_range
+                ${ETH1_IP}:
+                  get_input: eth1_ip
+                ${ETH1_NETMASK}:
+                  get_input: eth1_netmask
+        user_data_format: RAW
+        name:
+          get_input: ocgapp_name_0
+        scheduler_hints:
+          group:
+            get_input: ocg_shared_server_grp_id
+      requirements:
+      - local_storage:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_volume_0
+          relationship: ocgapp_volume_attachment_0
+    ocgmgr_oam_protected_0_port:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgmgr_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input:
+            - ocgmgr_oam_protected_ips
+            - 0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgmgr_oam_port_0
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_protected
+        network:
+          get_input: oam_protected_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgmgr_server_0
+          relationship: tosca.relationships.network.BindsTo
+    ocgmgr_server_0:
+      type: org.openecomp.resource.vfc.nodes.heat.ocgmgr
+      properties:
+        flavor:
+          get_input: ocgmgr_flavor_name
+        key_name: UNSUPPORTED_RESOURCE_ocgmgr_admin_key
+        availability_zone:
+          get_input: availability_zone_0
+        image:
+          get_input: ocgmgr_image_name
+        metadata:
+          vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        user_data_format: SOFTWARE_CONFIG
+        name:
+          get_input:
+          - ocgmgr_names
+          - 0
+    ocgmgr_server_1:
+      type: org.openecomp.resource.vfc.nodes.heat.ocgmgr
+      properties:
+        flavor:
+          get_input: ocgmgr_flavor_name
+        key_name: UNSUPPORTED_RESOURCE_ocgmgr_admin_key
+        availability_zone:
+          get_input: availability_zone_1
+        image:
+          get_input: ocgmgr_image_name
+        metadata:
+          vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        user_data_format: RAW
+        name:
+          get_input:
+          - ocgmgr_names
+          - 1
+    ocgapp_server_3:
+      type: org.openecomp.resource.vfc.nodes.heat.ocgapp
+      properties:
+        flavor:
+          get_input: ocgapp_flavor_name
+        key_name: UNSUPPORTED_RESOURCE_ocgapp_admin_key
+        availability_zone:
+          get_input: availability_zone_1
+        image:
+          get_input: ocgapp_image_name
+        metadata:
+          vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        personality:
+          /etc/hostname:
+            str_replace:
+              template: |
+                ${NAME}.${DOMAIN_NAME}
+              params:
+                ${NAME}:
+                  get_input: ocgapp_name_3
+                ${DOMAIN_NAME}:
+                  get_input: domain_name
+          /etc/resolv.conf:
+            str_replace:
+              template: |
+                nameserver ${NAME_SERVER}
+                domain ${DOMAIN_NAME}
+              params:
+                ${NAME_SERVER}:
+                  get_input: nameserver_ip
+                ${DOMAIN_NAME}:
+                  get_input: domain_name
+          /etc/sysconfig/network-scripts/route-eth2:
+            str_replace:
+              template: |
+                ${ETH2_IP_RANGE} via ${ETH2_IP} dev eth2
+              params:
+                ${ETH2_IP_RANGE}:
+                  get_input: eth2_ip_range
+                ${ETH2_IP}:
+                  get_input: eth2_ip
+          /etc/sysconfig/network-scripts/route-eth1:
+            str_replace:
+              template: |
+                ${ETH1_IP_RANGE}/${ETH1_NETMASK} via ${ETH1_IP} dev eth1
+              params:
+                ${ETH1_IP_RANGE}:
+                  get_input: eth1_ip_range
+                ${ETH1_IP}:
+                  get_input: eth1_ip
+                ${ETH1_NETMASK}:
+                  get_input: eth1_netmask
+        user_data_format: RAW
+        name:
+          get_input:
+          - ocgapp_name_3
+        scheduler_hints:
+          group:
+            get_input: ocg_shared_server_grp_id
+      requirements:
+      - local_storage:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_volume_3
+          relationship: ocgapp_volume_attachment_3
+    ocgapp_oam_direct_port_1:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_oam_direct_ip_1
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_oam_direct_port_1
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_direct
+        network:
+          get_input: oam_direct_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_1
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_oam_direct_port_2:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_oam_direct_ip_2
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_oam_direct_port_2
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_direct
+        network:
+          get_input: oam_direct_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_2
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_oam_direct_port_3:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_oam_direct_ip_3
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_oam_direct_port_3
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_direct
+        network:
+          get_input: oam_direct_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_3
+          relationship: tosca.relationships.network.BindsTo
+    OCGAPP_SECURITY_GROUP:
+      type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
+      properties:
+        name:
+          str_replace:
+            template: VF_NAME_sec_grp_OCGAPP
+            params:
+              VF_NAME:
+                get_input: vnf_name
+        description: ocg app security group
+        rules:
+        - protocol: tcp
+          ethertype: IPv4
+          port_range_max: 65535
+          remote_ip_prefix: 0.0.0.0/0
+          direction: egress
+          port_range_min: 1
+        - protocol: udp
+          ethertype: IPv4
+          port_range_max: 65535
+          remote_ip_prefix: 0.0.0.0/0
+          direction: egress
+          port_range_min: 1
+        - protocol: icmp
+          ethertype: IPv4
+          remote_ip_prefix: 0.0.0.0/0
+          direction: egress
+        - protocol: tcp
+          ethertype: IPv4
+          port_range_max: 65535
+          remote_ip_prefix: 0.0.0.0/0
+          direction: ingress
+          port_range_min: 1
+        - protocol: udp
+          ethertype: IPv4
+          port_range_max: 65535
+          remote_ip_prefix: 0.0.0.0/0
+          direction: ingress
+          port_range_min: 1
+        - protocol: icmp
+          ethertype: IPv4
+          remote_ip_prefix: 0.0.0.0/0
+          direction: ingress
+        - protocol: tcp
+          ethertype: IPv6
+          port_range_max: 65535
+          remote_ip_prefix: ::/0
+          direction: egress
+          port_range_min: 1
+        - protocol: udp
+          ethertype: IPv6
+          port_range_max: 65535
+          remote_ip_prefix: ::/0
+          direction: egress
+          port_range_min: 1
+        - protocol: icmp
+          ethertype: IPv6
+          remote_ip_prefix: ::/0
+          direction: egress
+        - protocol: tcp
+          ethertype: IPv6
+          port_range_max: 65535
+          remote_ip_prefix: ::/0
+          direction: ingress
+          port_range_min: 1
+        - protocol: udp
+          ethertype: IPv6
+          port_range_max: 65535
+          remote_ip_prefix: ::/0
+          direction: ingress
+          port_range_min: 1
+        - protocol: icmp
+          ethertype: IPv6
+          remote_ip_prefix: ::/0
+          direction: ingress
+      requirements:
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_oam_protected_port_3
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_oam_direct_port_3
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_cor_direct_port_3
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_oam_protected_port_0
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_oam_direct_port_0
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_cor_direct_port_0
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_oam_protected_port_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_oam_direct_port_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_cor_direct_port_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_oam_protected_port_2
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_oam_direct_port_2
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: ocgapp_cor_direct_port_2
+          relationship: org.openecomp.relationships.AttachesTo
+    ocgapp_volume_1:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        volume_type:
+          get_input: ocgapp_volume_type_1
+        size: '(get_input : ocgapp_volume_size_1) * 1024'
+        name:
+          str_replace:
+            template: VF_NAME_STACK_NAME_volume_1
+            params:
+              VF_NAME:
+                get_input: vnf_name
+              STACK_NAME:
+                get_input: OS::stack_name
+    ocgapp_volume_0:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        volume_type:
+          get_input: ocgapp_volume_type_0
+        size: '(get_input : ocgapp_volume_size_0) * 1024'
+        name:
+          str_replace:
+            template: VF_NAME_STACK_NAME_volume_1
+            params:
+              VF_NAME:
+                get_input: vnf_name
+              STACK_NAME:
+                get_input: OS::stack_name
+    ocgapp_volume_3:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        volume_type:
+          get_input: ocgapp_volume_type_3
+        size: '(get_input : ocgapp_volume_size_3) * 1024'
+        name:
+          str_replace:
+            template: VF_NAME_STACK_NAME_volume_3
+            params:
+              VF_NAME:
+                get_input: vnf_name
+              STACK_NAME:
+                get_input: OS::stack_name
+    ocgapp_oam_direct_port_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_oam_direct_ip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_oam_direct_port_0
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_direct
+        network:
+          get_input: oam_direct_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_0
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_volume_2:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        volume_type:
+          get_input: ocgapp_volume_type_2
+        size: '(get_input : ocgapp_volume_size_2) * 1024'
+        name:
+          str_replace:
+            template: VF_NAME_STACK_NAME_volume_2
+            params:
+              VF_NAME:
+                get_input: vnf_name
+              STACK_NAME:
+                get_input: OS::stack_name
+    ocgapp_cor_direct_port_1:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_cor_direct_ip_1
+        - ip_address:
+            get_input: ocgapp_cor_direct_v6_ip_1
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_cor_port_1
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: cor_direct
+        network:
+          get_input: cor_direct_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_1
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_cor_direct_port_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_cor_direct_ip_0
+        - ip_address:
+            get_input: ocgapp_cor_direct_v6_ip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_cor_port_0
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: cor_direct
+        network:
+          get_input: cor_direct_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_0
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_oam_protected_port_1:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_oam_protected_ip_1
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_oam_protected_port_1
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_protected
+        network:
+          get_input: oam_protected_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_1
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_oam_protected_port_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_oam_protected_ip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_oam_protected_port_0
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_protected
+        network:
+          get_input: oam_protected_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_0
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_oam_protected_port_3:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_oam_protected_ip_3
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_oam_protected_port_3
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_protected
+        network:
+          get_input: oam_protected_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_3
+          relationship: tosca.relationships.network.BindsTo
+    ocgmgr_oam_protected_1_port:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgmgr_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input:
+            - ocgmgr_oam_protected_ips
+            - 1
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgmgr_oam_port_1
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_protected
+        network:
+          get_input: oam_protected_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgmgr_server_1
+          relationship: tosca.relationships.network.BindsTo
+    ocgapp_oam_protected_port_2:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        security_groups:
+        - get_input: ocgapp_shared_sec_grp_id
+        fixed_ips:
+        - ip_address:
+            get_input: ocgapp_oam_protected_ip_2
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: VNF_NAME_ocgapp_oam_protected_port_2
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_role_tag: oam_protected
+        network:
+          get_input: oam_protected_net_name
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: ocgapp_server_2
+          relationship: tosca.relationships.network.BindsTo
+  relationship_templates:
+    ocgapp_volume_attachment_3:
+      type: org.openecomp.relationships.VolumeAttachesTo
+      properties:
+        volume_id: ocgapp_volume_3
+        instance_uuid: ocgapp_server_3
+    ocgapp_volume_attachment_2:
+      type: org.openecomp.relationships.VolumeAttachesTo
+      properties:
+        volume_id: ocgapp_volume_2
+        instance_uuid: ocgapp_server_2
+    ocgapp_volume_attachment_1:
+      type: org.openecomp.relationships.VolumeAttachesTo
+      properties:
+        volume_id: ocgapp_volume_1
+        instance_uuid: ocgapp_server_1
+    ocgapp_volume_attachment_0:
+      type: org.openecomp.relationships.VolumeAttachesTo
+      properties:
+        volume_id: ocgapp_volume_0
+        instance_uuid: ocgapp_server_0
+  groups:
+    base_ocg_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/base_ocg.yaml
+        description: |
+          Base HOT template to create The Security Group for the the OCG VNF
+      members:
+      - OCGMGR_SECURITY_GROUP
+      - OCGAPP_SECURITY_GROUP
+    ocgapp_04_volume_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgapp_04_volume.yaml
+      members:
+      - ocgapp_volume_3
+    ocgmgr_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgmgr.yaml
+        description: OCG Managers template
+      members:
+      - ocgmgr_oam_protected_0_port
+      - ocgmgr_server_0
+      - ocgmgr_server_1
+      - ocgmgr_oam_protected_1_port
+    ocgapp_02_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgapp_02.yaml
+        description: OCG Apps template
+      members:
+      - ocgapp_server_1
+      - ocgapp_cor_direct_port_1
+      - ocgapp_oam_direct_port_1
+      - ocgapp_oam_protected_port_1
+    ocgapp_03_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgapp_03.yaml
+        description: OCG Apps template
+      members:
+      - ocgapp_server_2
+      - ocgapp_oam_direct_port_2
+      - ocgapp_cor_direct_port_2
+      - ocgapp_oam_protected_port_2
+    ocg_RSG_group:
+      type: tosca.groups.Root
+      members:
+      - ocgapp_server_3
+      - ocgapp_server_0
+      - ocgapp_server_1
+      - ocgapp_server_2
+    ocgapp_01_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgapp_01.yaml
+        description: OCG Apps template
+      members:
+      - ocgapp_server_0
+      - ocgapp_cor_direct_port_0
+      - ocgapp_oam_protected_port_0
+      - ocgapp_oam_direct_port_0
+    ocgapp_04_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgapp_04.yaml
+        description: OCG Apps template
+      members:
+      - ocgapp_cor_direct_port_3
+      - ocgapp_oam_direct_port_3
+      - ocgapp_oam_protected_port_3
+      - ocgapp_server_3
+    ocgapp_01_volume_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgapp_01_volume.yaml
+      members:
+      - ocgapp_volume_0
+    ocgapp_02_volume_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgapp_02_volume.yaml
+      members:
+      - ocgapp_volume_1
+    ocgapp_03_volume_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgapp_03_volume.yaml
+      members:
+      - ocgapp_volume_2
+    ocgmgr_volume_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgmgr_volume.yaml
+        description: OCG template for MGR volumes
+      members:
+      - ocgmgr_volume_resource_group
+  outputs:
+    ocgapp_volume_id_0:
+      description: the ocgapp volume id 0
+      value: ocgapp_volume_0
+    ocgapp_volume_id_1:
+      description: the ocgapp volume id 1
+      value: ocgapp_volume_1
+    ocgapp_volume_id_2:
+      description: the ocgapp volume id 2
+      value: ocgapp_volume_2
+    ocgapp_volume_id_3:
+      description: the ocgapp volume id 3
+      value: ocgapp_volume_3
+    ocgmgr_volume_ids:
+      description: ocgmgr volume ids
+      value:
+        get_attribute:
+        - ocgmgr_volume_resource_group
+        - ocgmgr_volume_id_0
+  policies:
+    ocg_RSG_policy:
+      type: org.openecomp.policies.placement.Antilocate
+      properties:
+        name:
+          str_replace:
+            template: VF_NAME_server_grp_OCG
+            params:
+              VF_NAME:
+                get_input: vnf_name
+        container_type: host
+      targets:
+      - ocg_RSG_group
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/expectedoutputfiles/ocgmgr_nested_volumeServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/expectedoutputfiles/ocgmgr_nested_volumeServiceTemplate.yaml
new file mode 100644
index 0000000..0de9369
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/expectedoutputfiles/ocgmgr_nested_volumeServiceTemplate.yaml
@@ -0,0 +1,88 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: ocgmgr_nested_volume
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    volume_type:
+      label: Volume Type
+      hidden: false
+      immutable: false
+      type: string
+      description: type of cinder volumes
+    size:
+      label: Volume Size
+      hidden: false
+      immutable: false
+      type: float
+      description: size of the cinder volumes
+      constraints:
+      - in_range:
+        - 50
+        - 400
+    vnf_name:
+      label: VNF Name
+      hidden: false
+      immutable: false
+      type: string
+      description: vnf name
+    index:
+      label: Volume index
+      hidden: false
+      immutable: false
+      type: float
+      description: number of volumes to spin up
+      constraints:
+      - valid_values:
+        - 0
+        - 1
+        - 2
+    OS::stack_name:
+      type: string
+      required: false
+  node_templates:
+    ocgmgr_volume_0:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        volume_type:
+          get_input: volume_type
+        size: '(get_input : size) * 1024'
+        name:
+          str_replace:
+            template: VF_NAME_STACK_NAME_INDEX
+            params:
+              VF_NAME:
+                get_input: vnf_name
+              INDEX:
+                get_input: index
+              STACK_NAME:
+                get_input: OS::stack_name
+  groups:
+    ocgmgr_nested_volume_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/ocgmgr_nested_volume.yaml
+        description: Nested volume file for ocg mgrs
+      members:
+      - ocgmgr_volume_0
+  outputs:
+    ocgmgr_volume_id_0:
+      description: the ocgmgr volume uuids
+      value: ocgmgr_volume_0
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.ocgmgr_nested_volume
+    capabilities:
+      feature_ocgmgr_volume_0:
+      - ocgmgr_volume_0
+      - feature
+      attachment_ocgmgr_volume_0:
+      - ocgmgr_volume_0
+      - attachment
+    requirements:
+      dependency_ocgmgr_volume_0:
+      - ocgmgr_volume_0
+      - dependency
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/MANIFEST.json
new file mode 100644
index 0000000..dc47034
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/MANIFEST.json
@@ -0,0 +1,139 @@
+{
+  "name": "23_defect_fix",
+  "description": "a",
+  "version": "0.0",
+  "data": [
+    {
+      "isBase": false,
+      "file": "ocgmgr.yaml",
+      "type": "HEAT",
+      "data": [
+        {
+          "file": "ocgmgr.env",
+          "type": "HEAT_ENV"
+        },
+        {
+          "file": "ocgmgr_volume.yaml",
+          "type": "HEAT_VOL",
+          "data": [
+            {
+              "file": "ocgmgr_volume.env",
+              "type": "HEAT_ENV"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "isBase": false,
+      "file": "ocgapp_04.yaml",
+      "type": "HEAT",
+      "data": [
+        {
+          "file": "ocgapp_04.env",
+          "type": "HEAT_ENV"
+        },
+        {
+          "file": "ocgapp_04_volume.yaml",
+          "type": "HEAT_VOL",
+          "data": [
+            {
+              "file": "ocgapp_04_volume.env",
+              "type": "HEAT_ENV"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "isBase": false,
+      "file": "ocgapp_03.yaml",
+      "type": "HEAT",
+      "data": [
+        {
+          "file": "ocgapp_03.env",
+          "type": "HEAT_ENV"
+        },
+        {
+          "file": "ocgapp_03_volume.yaml",
+          "type": "HEAT_VOL",
+          "data": [
+            {
+              "file": "ocgapp_03_volume.env",
+              "type": "HEAT_ENV"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "isBase": false,
+      "file": "ocgapp_02.yaml",
+      "type": "HEAT",
+      "data": [
+        {
+          "file": "ocgapp_02.env",
+          "type": "HEAT_ENV"
+        },
+        {
+          "file": "ocgapp_02_volume.yaml",
+          "type": "HEAT_VOL",
+          "data": [
+            {
+              "file": "ocgapp_02_volume.env",
+              "type": "HEAT_ENV"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "isBase": false,
+      "file": "ocgapp_01.yaml",
+      "type": "HEAT",
+      "data": [
+        {
+          "file": "ocgapp_01.env",
+          "type": "HEAT_ENV"
+        },
+        {
+          "file": "ocgapp_01_volume.yaml",
+          "type": "HEAT_VOL",
+          "data": [
+            {
+              "file": "ocgapp_01_volume.env",
+              "type": "HEAT_ENV"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "isBase": true,
+      "file": "base_ocg.yaml",
+      "type": "HEAT",
+      "data": [
+        {
+          "file": "base_ocg.env",
+          "type": "HEAT_ENV"
+        }
+      ]
+    },
+    {
+      "file": "ocgmgr_nested_volume.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "ocgapp_nested_0.txt",
+      "type": "OTHER"
+    },
+    {
+      "file": "ocgmgr_nested_1.txt",
+      "type": "OTHER"
+    },
+    {
+      "file": "ocgmgr_nested_0.txt",
+      "type": "OTHER"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/base_ocg.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/base_ocg.env
new file mode 100644
index 0000000..e9bc8b2
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/base_ocg.env
@@ -0,0 +1,9 @@
+#OCG Base Template ENV File
+#Version 1.0
+#Authors:
+
+#####################
+parameters:
+#####################
+
+  vnf_name: 'zrdm6bvocg_redesign'
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/base_ocg.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/base_ocg.yaml
new file mode 100644
index 0000000..fc07aae
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/base_ocg.yaml
@@ -0,0 +1,89 @@
+heat_template_version: 2015-04-30
+#OCG Base Template
+#AUTHORS:
+description: >
+  Base HOT template to create The Security Group for the the OCG VNF
+
+#####################
+parameters:
+#####################
+
+## GLOBAL//Basic Parameters
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+#   For manual spinups, value must be in the ENV file. Must be removed from ENV before uploading to ASDC
+
+#####################
+resources:
+#####################
+
+  OCGAPP_SECURITY_GROUP:
+    type: OS::Neutron::SecurityGroup
+    properties:
+      description: ocg app security group
+      name:
+        str_replace:
+            template: VF_NAME_sec_grp_OCGAPP
+            params:
+                VF_NAME:    {get_param: vnf_name}
+      rules: [{"direction": egress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": egress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": egress, "ethertype": IPv4, "protocol": icmp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": ingress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": ingress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": ingress, "ethertype": IPv4, "protocol": icmp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": egress, "ethertype": IPv6, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": "::/0"},
+              {"direction": egress, "ethertype": IPv6, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": "::/0"},
+              {"direction": egress, "ethertype": IPv6, "protocol": icmp, "remote_ip_prefix": "::/0"},
+              {"direction": ingress, "ethertype": IPv6, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": "::/0"},
+              {"direction": ingress, "ethertype": IPv6, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": "::/0"},
+              {"direction": ingress, "ethertype": IPv6, "protocol": icmp, "remote_ip_prefix": "::/0"}
+             ]
+
+  OCGMGR_SECURITY_GROUP:
+    type: OS::Neutron::SecurityGroup
+    properties:
+      description: ocg mgr security group
+      name:
+        str_replace:
+            template: VF_NAME_sec_grp_OCGMGR
+            params:
+                VF_NAME:    {get_param: vnf_name}
+      rules: [{"direction": egress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": egress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": egress, "ethertype": IPv4, "protocol": icmp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": ingress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": ingress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": 0.0.0.0/0},
+              {"direction": ingress, "ethertype": IPv4, "protocol": icmp, "remote_ip_prefix": 0.0.0.0/0},
+              #{"direction": egress, "ethertype": IPv6, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": "::/0"},
+              #{"direction": egress, "ethertype": IPv6, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": "::/0"},
+              #{"direction": egress, "ethertype": IPv6, "protocol": icmp, "remote_ip_prefix": "::/0"},
+              #{"direction": ingress, "ethertype": IPv6, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": "::/0"},
+              #{"direction": ingress, "ethertype": IPv6, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": "::/0"},
+              #{"direction": ingress, "ethertype": IPv6, "protocol": icmp, "remote_ip_prefix": "::/0"}
+              ]
+
+  ocg_RSG:
+    type: OS::Nova::ServerGroup
+    properties:
+      name:
+        str_replace:
+          template: VF_NAME_server_grp_OCG
+          params:
+              VF_NAME: {get_param: vnf_name}
+      policies:
+        - anti-affinity
+        
+outputs:
+  ocgapp_shared_sec_grp_id:
+    description: UUID of OCG APP Resource SecurityGroup
+    value: { get_resource: OCGAPP_SECURITY_GROUP }
+
+  ocgmgr_shared_sec_grp_id:
+    description: UUID of OCG MGR Resource SecutiryGroup
+    value: {get_resource: OCGMGR_SECURITY_GROUP}
+    
+  ocg_shared_server_grp_id:
+    description: UUID of OCG anti-affinity server group
+    value: {get_resource: ocg_RSG}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01.env
new file mode 100644
index 0000000..fbd4e77
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01.env
@@ -0,0 +1,27 @@
+#file version 1.0
+parameters:
+  ocgapp_image_name: NIMBUS_OCG-APPLICATION_20180328.qcow2
+  ocgapp_flavor_name: nv.c8r32d320
+  ocgapp_public_key: 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAh5B/f9JmJL5HcIJT+XeGnE9Jlv22NYGweMx+M2eX53X0sxdB8onhqDiLFODgDgXUuQk11NM2tQeA+xH+nlZxdETK+5uKb2SLwsPjZnxHQPrGQP1KKAZi9aKoZFjYmWrYuqzQFT9QRz3gehG+pX82mzMkkE/Da2/XJ62zu8PKfapn63MhhmxG5w5onuN2XsM2zfI6GILFM56ppLtMCkgvzXVcWOpr7pD4kpnC9WavxwAkmQPrWIbTi0MKIEeuON0B+KRgC3b8GnCpuE2GFTffAm1MBgi0Urs8e3XGHsilVMqYdaCPZwq5ZKlzivX5wZQH9yT9m9Db6XLL66ZIaBHt2w== rsa-key-20170906'
+#  oam_protected_net_name: MNS-25180-T-RDM6B_oam_protected_net_1
+#  oam_direct_net_name: MNS-25180-T-RDM6B_oam_direct_net_1
+#  cor_direct_net_name: MNS-25180-T-RDM6B_cor_direct_net_1
+#  ocgapp_oam_protected_ip_0: 107.112.163.94 
+#  ocgapp_oam_direct_ip_0: 107.112.168.138 
+#  ocgapp_cor_direct_ip_0: 107.242.64.58 
+#  ocgapp_cor_direct_v6_ip_0: 2606:ae00:2e20:1404::10 
+#  ocgapp_name_0: zrdm6bvocg01app001_REDESIGN
+#  availability_zone_0: rdm6b-kvm-az01
+#  ocgapp_shared_sec_grp_id: acd420c8-37a0-4493-9296-bab085e76f45 
+#  ocg_shared_server_grp_id: e1ac6d1c-32aa-43dc-b1e1-0c33e69167f9 
+  nameserver_ip: 135.214.16.119
+  eth1_ip_range: 130.4.128.0
+  eth1_netmask: 21
+  eth1_ip: 107.112.168.129
+  eth2_ip_range: 107.242.64.1
+  eth2_ip: 107.242.64.49
+  domain_name: 'eng.mobilephone.net'
+#  ocgapp_volume_id_0: 3c87a5dc-0dee-4831-8942-8ca44fdaf01a 
+#  vnf_name: zrdm6bvocg01_REDEDSIGN 
+#  vnf_id: 'dummy'
+#  vf_module_id: 'dummy'
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01.yaml
new file mode 100644
index 0000000..a133872
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01.yaml
@@ -0,0 +1,215 @@
+heat_template_version: 2015-04-30
+#file version 1.0
+description: OCG Apps template
+
+parameters:
+  ocgapp_image_name:
+    type: string
+    description: operative system image
+  ocgapp_flavor_name:
+    type: string
+    description: resources to be applied on instances
+  ocgapp_public_key:
+    type: string
+    description: creator's ssh public key
+  oam_protected_net_name:
+    type: string
+    description: OAM network where instances will connect
+  oam_direct_net_name:
+    type: string
+    description: OAM network where instances will connect
+  cor_direct_net_name:
+    type: string
+    description: COR_DIRECT network where instances will connect
+  ocgapp_oam_protected_ip_0:
+    type: string
+    description: OCG OAM IP list
+  ocgapp_oam_direct_ip_0:
+    type: string
+    description: OCG OAM IP list
+  ocgapp_cor_direct_ip_0:
+    type: string
+    description: OCG COR_DIRECT IP list
+  ocgapp_cor_direct_v6_ip_0:
+    type: string
+    description: fixed IP assignment for VM's on the COR_DIRECT network
+  ocgapp_name_0:
+    type: string
+    description: OCG VM server name list (there should be 2, since we have 2 app vms)
+  availability_zone_0:
+    type: string
+    description: availability zone 1 ID or name
+  ocg_shared_server_grp_id:
+    type: string
+    description: OCG anti-affinity server group
+  ocgapp_shared_sec_grp_id:
+    type: string
+    description: security group
+  ocgapp_volume_id_0:
+    type: string
+    description: Unique IDs for volumes
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VF module instance
+  nameserver_ip:
+    type: string
+    description: nameserver
+  eth1_ip_range:
+    type: string 
+    description: range
+  eth1_netmask:
+    type: string
+    description: mask length 
+  eth1_ip:
+    type: string
+    description: address
+  eth2_ip_range: 
+    type: string
+    description: range
+  eth2_ip: 
+    type: string
+    description: address 
+  domain_name:
+    type: string
+    description: address
+
+resources:
+
+  vm_config_0:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: ungrouped
+      config:
+        str_replace:
+          template: {get_file: ocgapp_nested_0.txt}
+          params:
+            $ocg_hostname: { get_param: ocgapp_name_0 }
+            $ocg_hostip: { get_param: ocgapp_oam_protected_ip_0 }
+            $volume_id: {get_param: ocgapp_volume_id_0 }
+
+  ocgapp_admin_key:
+    type: OS::Nova::KeyPair
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_STACK_NAME_key_pair
+          params:
+              VNF_NAME: {get_param: vnf_name}
+              STACK_NAME: {get_param: 'OS::stack_name'}
+      public_key: {get_param: ocgapp_public_key}
+      save_private_key: false
+
+  ocgapp_config_0:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts:
+        - config: {get_resource: vm_config_0}
+        
+ # APP_SERVER_0
+  ocgapp_oam_protected_port_0:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_oam_protected_port_0
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_protected_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_protected_ips, 0]}}]
+      fixed_ips: [{ "ip_address": {get_param: ocgapp_oam_protected_ip_0}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+      
+  ocgapp_oam_direct_port_0:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_oam_direct_port_0
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_direct_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_direct_ips, 0]}}]
+      fixed_ips: [{ "ip_address": {get_param: ocgapp_oam_direct_ip_0}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+      
+  ocgapp_cor_direct_port_0:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_cor_port_0
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: cor_direct_net_name}
+      fixed_ips: [{"ip_address": {get_param: ocgapp_cor_direct_ip_0}}, {"ip_address": {get_param: ocgapp_cor_direct_v6_ip_0}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+
+  ocgapp_server_0:
+    type: OS::Nova::Server
+    properties:
+      key_name: {get_resource: ocgapp_admin_key}
+      name: {get_param: ocgapp_name_0}
+      image: {get_param: ocgapp_image_name}
+      flavor: {get_param: ocgapp_flavor_name}
+      availability_zone: {get_param: availability_zone_0}
+      scheduler_hints:
+          group: { get_param: ocg_shared_server_grp_id }
+      personality:
+      # Add resolv.conf file
+        "/etc/resolv.conf":
+          str_replace:
+            template: |
+              nameserver ${NAME_SERVER}
+              domain ${DOMAIN_NAME}
+            params:
+              ${NAME_SERVER}: {get_param: nameserver_ip}
+              ${DOMAIN_NAME}: {get_param: domain_name}
+      # Add hostname file
+        "/etc/hostname":
+          str_replace:
+            template: |
+              ${NAME}.${DOMAIN_NAME}
+            params:
+              ${NAME}: {get_param: ocgapp_name_0}
+              ${DOMAIN_NAME}: {get_param: domain_name}
+      # Add route-eth1 file
+        "/etc/sysconfig/network-scripts/route-eth1":
+          str_replace:
+            template: |
+              ${ETH1_IP_RANGE}/${ETH1_NETMASK} via ${ETH1_IP} dev eth1
+            params:
+              ${ETH1_IP_RANGE}: {get_param: eth1_ip_range}
+              ${ETH1_NETMASK}: {get_param: eth1_netmask}
+              ${ETH1_IP}: {get_param: eth1_ip}
+      # Add route-eth2 file
+        "/etc/sysconfig/network-scripts/route-eth2":
+          str_replace:
+            template: |
+              ${ETH2_IP_RANGE} via ${ETH2_IP} dev eth2
+            params:
+              ${ETH2_IP_RANGE}: {get_param: eth2_ip_range}
+#              ${ETH2_NETMASK}: {get_param: eth2_netmask}
+              ${ETH2_IP}: {get_param: eth2_ip}
+      networks:
+        - port: {get_resource: ocgapp_oam_protected_port_0}
+        - port: {get_resource: ocgapp_oam_direct_port_0}
+        - port: {get_resource: ocgapp_cor_direct_port_0}
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vf_module_id: {get_param: vf_module_id}
+        vnf_name: {get_param: vnf_name}
+      user_data_format: RAW
+      user_data: {get_resource: ocgapp_config_0}
+#      user_data: {get_resource: server_interface_config}
+
+  ocgapp_volume_attachment_0:
+    type: OS::Cinder::VolumeAttachment
+    properties:
+      volume_id: {get_param: ocgapp_volume_id_0}
+      instance_uuid: {get_resource: ocgapp_server_0}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01_volume.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01_volume.env
new file mode 100644
index 0000000..369444f
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01_volume.env
@@ -0,0 +1,5 @@
+#file version 1.0
+parameters:
+  vnf_name: 'zrdm5avocg01'
+  ocgapp_volume_size_0: 400
+  ocgapp_volume_type_0: SF-Default-SSD
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01_volume.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01_volume.yaml
new file mode 100644
index 0000000..3e96789
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_01_volume.yaml
@@ -0,0 +1,35 @@
+heat_template_version: 2015-04-30
+#file version 2.3
+parameters:
+  vnf_name:
+    type: string
+    label: OCG VNF Name
+    description: OCG VNF Name
+  ocgapp_volume_size_0:
+    type: number
+    label: Cinder volume size
+    description: the size of the Cinder volume
+    constraints:
+      - range: { min: 100, max: 400 }
+  ocgapp_volume_type_0:
+    type: string
+    label: vm volume type
+    description: the name of the target volume backend for ocgapp1
+ 
+resources:
+  ocgapp_volume_0:
+    type: OS::Cinder::Volume
+    properties:
+      size: {get_param: ocgapp_volume_size_0 }
+      volume_type: {get_param: ocgapp_volume_type_0}
+      name:
+        str_replace:
+          template: VF_NAME_STACK_NAME_volume_1
+          params:
+            VF_NAME: { get_param: vnf_name }
+            STACK_NAME: { get_param: 'OS::stack_name' }
+
+outputs:
+  ocgapp_volume_id_0:
+    description: the ocgapp volume id 0
+    value: { get_resource: ocgapp_volume_0 }
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02.env
new file mode 100644
index 0000000..aae3195
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02.env
@@ -0,0 +1,27 @@
+#file version 1.0
+parameters:
+  ocgapp_image_name: NIMBUS_OCG-APPLICATION_20180328.qcow2
+  ocgapp_flavor_name: nv.c8r32d320
+  ocgapp_public_key: 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAh5B/f9JmJL5HcIJT+XeGnE9Jlv22NYGweMx+M2eX53X0sxdB8onhqDiLFODgDgXUuQk11NM2tQeA+xH+nlZxdETK+5uKb2SLwsPjZnxHQPrGQP1KKAZi9aKoZFjYmWrYuqzQFT9QRz3gehG+pX82mzMkkE/Da2/XJ62zu8PKfapn63MhhmxG5w5onuN2XsM2zfI6GILFM56ppLtMCkgvzXVcWOpr7pD4kpnC9WavxwAkmQPrWIbTi0MKIEeuON0B+KRgC3b8GnCpuE2GFTffAm1MBgi0Urs8e3XGHsilVMqYdaCPZwq5ZKlzivX5wZQH9yT9m9Db6XLL66ZIaBHt2w== rsa-key-20170906'
+#  oam_protected_net_name: MNS-25180-T-RDM6B_oam_protected_net_1
+#  oam_direct_net_name: MNS-25180-T-RDM6B_oam_direct_net_1
+#  cor_direct_net_name: MNS-25180-T-RDM6B_cor_direct_net_1
+#  ocgapp_oam_protected_ip_1: 107.112.163.95 
+#  ocgapp_oam_direct_ip_1: 107.112.168.139 
+#  ocgapp_cor_direct_ip_1: 107.242.64.59 
+#  ocgapp_cor_direct_v6_ip_1: 2606:ae00:2e20:1404::11 
+#  ocgapp_name_1: zrdm6bvocg01app002_REDESIGN
+#  availability_zone_0: rdm6b-kvm-az01
+#  ocgapp_shared_sec_grp_id: acd420c8-37a0-4493-9296-bab085e76f45 
+#  ocg_shared_server_grp_id: e1ac6d1c-32aa-43dc-b1e1-0c33e69167f9  
+  nameserver_ip: 135.214.16.119
+  eth1_ip_range: 130.4.128.0
+  eth1_netmask: 21
+  eth1_ip: 107.112.168.129
+  eth2_ip_range: 107.242.64.1
+  eth2_ip: 107.242.64.49
+  domain_name: eng.mobilephone.net
+#  ocgapp_volume_id_1: c13725c4-adb8-4512-b2ec-2b4be476fe7c 
+#  vnf_name: zrdm6bvocg01_REDESIGN
+#  vnf_id: 'dummy'
+#  vf_module_id: 'dummy'
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02.yaml
new file mode 100644
index 0000000..c435b12
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02.yaml
@@ -0,0 +1,217 @@
+heat_template_version: 2015-04-30
+#file version 1.0
+description: OCG Apps template
+
+parameters:
+  ocgapp_image_name:
+    type: string
+    description: operative system image
+  ocgapp_flavor_name:
+    type: string
+    description: resources to be applied on instances
+  ocgapp_public_key:
+    type: string
+    description: creator's ssh public key
+  oam_protected_net_name:
+    type: string
+    description: OAM network where instances will connect
+  oam_direct_net_name:
+    type: string
+    description: OAM network where instances will connect
+  cor_direct_net_name:
+    type: string
+    description: COR_DIRECT network where instances will connect
+  ocgapp_oam_protected_ip_1:
+    type: string
+    description: OCG OAM IP list
+  ocgapp_oam_direct_ip_1:
+    type: string
+    description: OCG OAM IP list
+  ocgapp_cor_direct_ip_1:
+    type: string
+    description: OCG COR_DIRECT IP list
+  ocgapp_cor_direct_v6_ip_1:
+    type: string
+    description: fixed IP assignment for VM's on the COR_DIRECT network
+  ocgapp_name_1:
+    type: string
+    description: OCG VM server name list (there should be 2, since we have 2 app vms)
+  availability_zone_0:
+    type: string
+    description: availability zone 1 ID or name
+  ocg_shared_server_grp_id:
+    type: string
+    description: OCG anti-affinity server group
+  ocgapp_shared_sec_grp_id:
+    type: string
+    description: security group
+  ocgapp_volume_id_1:
+    type: string
+    description: Unique IDs for volumes
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VF module instance
+  nameserver_ip:
+    type: string
+    description: nameserver
+  eth1_ip_range:
+    type: string 
+    description: range
+  eth1_netmask:
+    type: string
+    description: mask length 
+  eth1_ip:
+    type: string
+    description: address
+  eth2_ip_range: 
+    type: string
+    description: range
+  eth2_ip: 
+    type: string
+    description: address 
+  domain_name:
+    type: string
+    description: address
+
+resources:
+
+  vm_config_1:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: ungrouped
+      config:
+        str_replace:
+          template: {get_file: ocgapp_nested_0.txt}
+          params:
+            $ocg_hostname: { get_param: ocgapp_name_1 }
+            $ocg_hostip: { get_param: ocgapp_oam_protected_ip_1 }
+            $volume_id: {get_param: ocgapp_volume_id_1 }
+
+  ocgapp_admin_key:
+    type: OS::Nova::KeyPair
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_STACK_NAME_key_pair
+          params:
+              VNF_NAME: {get_param: vnf_name}
+              STACK_NAME: {get_param: 'OS::stack_name'}
+      public_key: {get_param: ocgapp_public_key}
+      save_private_key: false
+
+  ocgapp_config_1:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts:
+        - config: {get_resource: vm_config_1}
+
+# APP_SERVER_1      
+  ocgapp_oam_protected_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_oam_protected_port_1
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_protected_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_protected_ips, 0]}}]
+      fixed_ips: [{ "ip_address": {get_param: ocgapp_oam_protected_ip_1}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+      
+  ocgapp_oam_direct_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_oam_direct_port_1
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_direct_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_direct_ips, 0]}}]
+      fixed_ips: [{ "ip_address": {get_param: ocgapp_oam_direct_ip_1}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+      
+  ocgapp_cor_direct_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_cor_port_1
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: cor_direct_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_cor_direct_ips, 0]}}, {"ip_address": {get_param: [ocgapp_cor_direct_v6_ips, 0]}}]
+      fixed_ips: [{"ip_address": {get_param: ocgapp_cor_direct_ip_1}}, {"ip_address": {get_param: ocgapp_cor_direct_v6_ip_1}}] 
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+
+  ocgapp_server_1:
+    type: OS::Nova::Server
+    properties:
+      key_name: {get_resource: ocgapp_admin_key}
+      name: {get_param: ocgapp_name_1 }
+      image: {get_param: ocgapp_image_name}
+      flavor: {get_param: ocgapp_flavor_name}
+      availability_zone: {get_param: availability_zone_0}
+      scheduler_hints:
+          group: { get_param: ocg_shared_server_grp_id }
+      personality:
+      # Add resolv.conf file
+        "/etc/resolv.conf":
+          str_replace:
+            template: |
+              nameserver ${NAME_SERVER}
+              domain ${DOMAIN_NAME}
+            params:
+              ${NAME_SERVER}: {get_param: nameserver_ip}
+              ${DOMAIN_NAME}: {get_param: domain_name}
+      # Add hostname file
+        "/etc/hostname":
+          str_replace:
+            template: |
+              ${NAME}.${DOMAIN_NAME}
+            params:
+              ${NAME}: {get_param: ocgapp_name_1}
+              ${DOMAIN_NAME}: {get_param: domain_name}
+      # Add route-eth1 file
+        "/etc/sysconfig/network-scripts/route-eth1":
+          str_replace:
+            template: |
+              ${ETH1_IP_RANGE}/${ETH1_NETMASK} via ${ETH1_IP} dev eth1
+            params:
+              ${ETH1_IP_RANGE}: {get_param: eth1_ip_range}
+              ${ETH1_NETMASK}: {get_param: eth1_netmask}
+              ${ETH1_IP}: {get_param: eth1_ip}
+      # Add route-eth2 file
+        "/etc/sysconfig/network-scripts/route-eth2":
+          str_replace:
+            template: |
+              ${ETH2_IP_RANGE} via ${ETH2_IP} dev eth2
+            params:
+              ${ETH2_IP_RANGE}: {get_param: eth2_ip_range}
+#              ${ETH2_NETMASK}: {get_param: eth2_netmask}
+              ${ETH2_IP}: {get_param: eth2_ip}
+      networks:
+        - port: {get_resource: ocgapp_oam_protected_port_1}
+        - port: {get_resource: ocgapp_oam_direct_port_1}
+        - port: {get_resource: ocgapp_cor_direct_port_1}
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vf_module_id: {get_param: vf_module_id}
+        vnf_name: {get_param: vnf_name}
+      user_data_format: RAW
+      user_data: {get_resource: ocgapp_config_1}
+#      user_data: {get_resource: server_interface_config}
+
+  ocgapp_volume_attachment_1:
+    type: OS::Cinder::VolumeAttachment
+    properties:
+      volume_id: {get_param: ocgapp_volume_id_1}
+      instance_uuid: {get_resource: ocgapp_server_1}
+
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02_volume.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02_volume.env
new file mode 100644
index 0000000..37b385f
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02_volume.env
@@ -0,0 +1,5 @@
+#file version 1.0
+parameters:
+  vnf_name: 'zrdm5avocg01'
+  ocgapp_volume_size_1: 400
+  ocgapp_volume_type_1: SF-Default-SSD
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02_volume.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02_volume.yaml
new file mode 100644
index 0000000..3153e81
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_02_volume.yaml
@@ -0,0 +1,35 @@
+heat_template_version: 2015-04-30
+#file version 2.3
+parameters:
+  vnf_name:
+    type: string
+    label: OCG VNF Name
+    description: OCG VNF Name
+  ocgapp_volume_size_1:
+    type: number
+    label: Cinder volume size
+    description: the size of the Cinder volume
+    constraints:
+      - range: { min: 100, max: 400 }
+  ocgapp_volume_type_1:
+    type: string
+    label: vm volume type
+    description: the name of the target volume backend for ocgapp1
+ 
+resources:
+  ocgapp_volume_1:
+    type: OS::Cinder::Volume
+    properties:
+      size: {get_param: ocgapp_volume_size_1 }
+      volume_type: {get_param: ocgapp_volume_type_1}
+      name:
+        str_replace:
+          template: VF_NAME_STACK_NAME_volume_1
+          params:
+            VF_NAME: { get_param: vnf_name }
+            STACK_NAME: { get_param: 'OS::stack_name' }
+
+outputs:
+  ocgapp_volume_id_1:
+    description: the ocgapp volume id 1
+    value: { get_resource: ocgapp_volume_1 }
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03.env
new file mode 100644
index 0000000..428442e
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03.env
@@ -0,0 +1,27 @@
+#file version 1.0
+parameters:
+  ocgapp_image_name: NIMBUS_OCG-APPLICATION_20180328.qcow2
+  ocgapp_flavor_name: nv.c8r32d320
+  ocgapp_public_key: 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAh5B/f9JmJL5HcIJT+XeGnE9Jlv22NYGweMx+M2eX53X0sxdB8onhqDiLFODgDgXUuQk11NM2tQeA+xH+nlZxdETK+5uKb2SLwsPjZnxHQPrGQP1KKAZi9aKoZFjYmWrYuqzQFT9QRz3gehG+pX82mzMkkE/Da2/XJ62zu8PKfapn63MhhmxG5w5onuN2XsM2zfI6GILFM56ppLtMCkgvzXVcWOpr7pD4kpnC9WavxwAkmQPrWIbTi0MKIEeuON0B+KRgC3b8GnCpuE2GFTffAm1MBgi0Urs8e3XGHsilVMqYdaCPZwq5ZKlzivX5wZQH9yT9m9Db6XLL66ZIaBHt2w== rsa-key-20170906'
+#  oam_protected_net_name: MNS-25180-T-RDM6B_oam_protected_net_1
+#  oam_direct_net_name: MNS-25180-T-RDM6B_oam_direct_net_1
+#  cor_direct_net_name: MNS-25180-T-RDM6B_cor_direct_net_1
+#  ocgapp_oam_protected_ip_2: 107.112.163.96 
+#  ocgapp_oam_direct_ip_2: 107.112.168.140 
+#  ocgapp_cor_direct_ip_2: 107.242.64.60 
+#  ocgapp_cor_direct_v6_ip_2: 2606:ae00:2e20:1404::12 
+#  ocgapp_name_2: zrdm6bvocg01app003_REDESIGN
+#  availability_zone_1: rdm6b-kvm-az02
+#  ocgapp_shared_sec_grp_id: acd420c8-37a0-4493-9296-bab085e76f45 
+#  ocg_shared_server_grp_id: e1ac6d1c-32aa-43dc-b1e1-0c33e69167f9 
+  nameserver_ip: 135.214.16.119
+  eth1_ip_range: 130.4.128.0
+  eth1_netmask: 21
+  eth1_ip: 107.112.168.129
+  eth2_ip_range: 107.242.64.1
+  eth2_ip: 107.242.64.49
+  domain_name: eng.mobilephone.net
+#  ocgapp_volume_id_2: b6fc2fa2-a5a7-470d-b022-ad38f0b7de90 
+#  vnf_name: zrdm6bvocg01_REDESIGN
+#  vnf_id: 'dummy'
+#  vf_module_id: 'dummy'
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03.yaml
new file mode 100644
index 0000000..a4c88f8
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03.yaml
@@ -0,0 +1,216 @@
+heat_template_version: 2015-04-30
+#file version 1.0
+description: OCG Apps template
+
+parameters:
+  ocgapp_image_name:
+    type: string
+    description: operative system image
+  ocgapp_flavor_name:
+    type: string
+    description: resources to be applied on instances
+  ocgapp_public_key:
+    type: string
+    description: creator's ssh public key
+  oam_protected_net_name:
+    type: string
+    description: OAM network where instances will connect
+  oam_direct_net_name:
+    type: string
+    description: OAM network where instances will connect
+  cor_direct_net_name:
+    type: string
+    description: COR_DIRECT network where instances will connect
+  ocgapp_oam_protected_ip_2:
+    type: string
+    description: OCG OAM IP list
+  ocgapp_oam_direct_ip_2:
+    type: string
+    description: OCG OAM IP list
+  ocgapp_cor_direct_ip_2:
+    type: string
+    description: OCG COR_DIRECT IP list
+  ocgapp_cor_direct_v6_ip_2:
+    type: string
+    description: fixed IP assignment for VM's on the COR_DIRECT network
+  ocgapp_name_2:
+    type: string
+    description: OCG VM server name list (there should be 2, since we have 2 app vms)
+  availability_zone_1:
+    type: string
+    description: availability zone 2 ID or name
+  ocg_shared_server_grp_id:
+    type: string
+    description: OCG anti-affinity server group
+  ocgapp_shared_sec_grp_id:
+    type: string
+    description: security group
+  ocgapp_volume_id_2:
+    type: string
+    description: Unique IDs for volumes
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VF module instance
+  nameserver_ip:
+    type: string
+    description: nameserver
+  eth1_ip_range:
+    type: string 
+    description: range
+  eth1_netmask:
+    type: string
+    description: mask length 
+  eth1_ip:
+    type: string
+    description: address
+  eth2_ip_range: 
+    type: string
+    description: range
+  eth2_ip: 
+    type: string
+    description: address 
+  domain_name:
+    type: string
+    description: address
+
+resources:
+
+  vm_config_2:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: ungrouped
+      config:
+        str_replace:
+          template: {get_file: ocgapp_nested_0.txt}
+          params:
+            $ocg_hostname: { get_param: ocgapp_name_2 }
+            $ocg_hostip: { get_param: ocgapp_oam_protected_ip_2 }
+            $volume_id: {get_param: ocgapp_volume_id_2 }
+            
+  ocgapp_admin_key:
+    type: OS::Nova::KeyPair
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_STACK_NAME_key_pair
+          params:
+              VNF_NAME: {get_param: vnf_name}
+              STACK_NAME: {get_param: 'OS::stack_name'}
+      public_key: {get_param: ocgapp_public_key}
+      save_private_key: false
+
+  ocgapp_config_2:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts:
+        - config: {get_resource: vm_config_2}
+      
+# APP_SERVER_2
+  ocgapp_oam_protected_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_oam_protected_port_2
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_protected_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_protected_ips, 0]}}]
+      fixed_ips: [{ "ip_address": {get_param: ocgapp_oam_protected_ip_2}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+      
+  ocgapp_oam_direct_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_oam_direct_port_2
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_direct_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_direct_ips, 0]}}]
+      fixed_ips: [{ "ip_address": {get_param: ocgapp_oam_direct_ip_2}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+      
+  ocgapp_cor_direct_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_cor_port_2
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: cor_direct_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_cor_direct_ips, 0]}}, {"ip_address": {get_param: [ocgapp_cor_direct_v6_ips, 0]}}]
+      fixed_ips: [{"ip_address": {get_param: ocgapp_cor_direct_ip_2}}, {"ip_address": {get_param: ocgapp_cor_direct_v6_ip_2}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+
+  ocgapp_server_2:
+    type: OS::Nova::Server
+    properties:
+      key_name: {get_resource: ocgapp_admin_key}
+      name: {get_param: ocgapp_name_2}
+      image: {get_param: ocgapp_image_name}
+      flavor: {get_param: ocgapp_flavor_name}
+      availability_zone: {get_param: availability_zone_1}
+      scheduler_hints:
+          group: { get_param: ocg_shared_server_grp_id }
+      personality:
+      # Add resolv.conf file
+        "/etc/resolv.conf":
+          str_replace:
+            template: |
+              nameserver ${NAME_SERVER}
+              domain ${DOMAIN_NAME}
+            params:
+              ${NAME_SERVER}: {get_param: nameserver_ip}
+              ${DOMAIN_NAME}: {get_param: domain_name}
+      # Add hostname file
+        "/etc/hostname":
+          str_replace:
+            template: |
+              ${NAME}.${DOMAIN_NAME}
+            params:
+              ${NAME}: {get_param: ocgapp_name_2}
+              ${DOMAIN_NAME}: {get_param: domain_name}
+      # Add route-eth1 file
+        "/etc/sysconfig/network-scripts/route-eth1":
+          str_replace:
+            template: |
+              ${ETH1_IP_RANGE}/${ETH1_NETMASK} via ${ETH1_IP} dev eth1
+            params:
+              ${ETH1_IP_RANGE}: {get_param: eth1_ip_range}
+              ${ETH1_NETMASK}: {get_param: eth1_netmask}
+              ${ETH1_IP}: {get_param: eth1_ip}
+      # Add route-eth2 file
+        "/etc/sysconfig/network-scripts/route-eth2":
+          str_replace:
+            template: |
+              ${ETH2_IP_RANGE} via ${ETH2_IP} dev eth2
+            params:
+              ${ETH2_IP_RANGE}: {get_param: eth2_ip_range}
+#              ${ETH2_NETMASK}: {get_param: eth2_netmask}
+              ${ETH2_IP}: {get_param: eth2_ip}
+      networks:
+        - port: {get_resource: ocgapp_oam_protected_port_2}
+        - port: {get_resource: ocgapp_oam_direct_port_2}
+        - port: {get_resource: ocgapp_cor_direct_port_2}
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vf_module_id: {get_param: vf_module_id}
+        vnf_name: {get_param: vnf_name}
+      user_data_format: RAW
+      user_data: {get_resource: ocgapp_config_2}      
+
+  ocgapp_volume_attachment_2:
+    type: OS::Cinder::VolumeAttachment
+    properties:
+      volume_id: {get_param: ocgapp_volume_id_2}
+      instance_uuid: {get_resource: ocgapp_server_2}
+
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03_volume.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03_volume.env
new file mode 100644
index 0000000..35f1428
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03_volume.env
@@ -0,0 +1,5 @@
+#file version 1.0
+parameters:
+  vnf_name: 'zrdm5avocg01'
+  ocgapp_volume_size_2: 400
+  ocgapp_volume_type_2: SF-Default-SSD
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03_volume.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03_volume.yaml
new file mode 100644
index 0000000..f67551f
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_03_volume.yaml
@@ -0,0 +1,35 @@
+heat_template_version: 2015-04-30
+#file version 2.3
+parameters:
+  vnf_name:
+    type: string
+    label: OCG VNF Name
+    description: OCG VNF Name
+  ocgapp_volume_size_2:
+    type: number
+    label: Cinder volume size
+    description: the size of the Cinder volume
+    constraints:
+      - range: { min: 100, max: 400 }
+  ocgapp_volume_type_2:
+    type: string
+    label: vm volume type
+    description: the name of the target volume backend for ocgapp1
+ 
+resources:
+  ocgapp_volume_2:
+    type: OS::Cinder::Volume
+    properties:
+      size: {get_param: ocgapp_volume_size_2 }
+      volume_type: {get_param: ocgapp_volume_type_2}
+      name:
+        str_replace:
+          template: VF_NAME_STACK_NAME_volume_2
+          params:
+            VF_NAME: { get_param: vnf_name }
+            STACK_NAME: { get_param: 'OS::stack_name' }
+
+outputs:
+  ocgapp_volume_id_2:
+    description: the ocgapp volume id 2
+    value: { get_resource: ocgapp_volume_2 }
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04.env
new file mode 100644
index 0000000..fe83f2d
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04.env
@@ -0,0 +1,27 @@
+#file version 1.0
+parameters:
+  ocgapp_image_name: NIMBUS_OCG-APPLICATION_20180328.qcow2
+  ocgapp_flavor_name: nv.c8r32d320
+  ocgapp_public_key: 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAh5B/f9JmJL5HcIJT+XeGnE9Jlv22NYGweMx+M2eX53X0sxdB8onhqDiLFODgDgXUuQk11NM2tQeA+xH+nlZxdETK+5uKb2SLwsPjZnxHQPrGQP1KKAZi9aKoZFjYmWrYuqzQFT9QRz3gehG+pX82mzMkkE/Da2/XJ62zu8PKfapn63MhhmxG5w5onuN2XsM2zfI6GILFM56ppLtMCkgvzXVcWOpr7pD4kpnC9WavxwAkmQPrWIbTi0MKIEeuON0B+KRgC3b8GnCpuE2GFTffAm1MBgi0Urs8e3XGHsilVMqYdaCPZwq5ZKlzivX5wZQH9yT9m9Db6XLL66ZIaBHt2w== rsa-key-20170906'
+#  oam_protected_net_name: MNS-25180-T-RDM6B_oam_protected_net_1
+#  oam_direct_net_name: MNS-25180-T-RDM6B_oam_direct_net_1
+#  cor_direct_net_name: MNS-25180-T-RDM6B_cor_direct_net_1
+#  ocgapp_oam_protected_ip_3: 107.112.163.97 
+#  ocgapp_oam_direct_ip_3: 107.112.168.141 
+#  ocgapp_cor_direct_ip_3: 107.242.64.61 
+#  ocgapp_cor_direct_v6_ip_3: 2606:ae00:2e20:1404::13 
+#  ocgapp_name_3: zrdm6bvocg01app004_REDESIGN
+#  availability_zone_1: rdm6b-kvm-az02
+#  ocgapp_shared_sec_grp_id: acd420c8-37a0-4493-9296-bab085e76f45 
+#  ocg_shared_server_grp_id: e1ac6d1c-32aa-43dc-b1e1-0c33e69167f9 
+  nameserver_ip: 135.214.16.119
+  eth1_ip_range: 130.4.128.0
+  eth1_netmask: 21
+  eth1_ip: 107.112.168.129
+  eth2_ip_range: 107.242.64.1
+  eth2_ip: 107.242.64.49
+  domain_name: eng.mobilephone.net
+#  ocgapp_volume_id_3: 85eeae51-8115-49ac-837e-e0079860f330
+#  vnf_name: zrdm6bvocg01_REDESIGN
+#  vnf_id: 'dummy'
+#  vf_module_id: 'dummy'
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04.yaml
new file mode 100644
index 0000000..aeb9fe9
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04.yaml
@@ -0,0 +1,215 @@
+heat_template_version: 2015-04-30
+#file version 1.0
+description: OCG Apps template
+
+parameters:
+  ocgapp_image_name:
+    type: string
+    description: operative system image
+  ocgapp_flavor_name:
+    type: string
+    description: resources to be applied on instances
+  ocgapp_public_key:
+    type: string
+    description: creator's ssh public key
+  oam_protected_net_name:
+    type: string
+    description: OAM network where instances will connect
+  oam_direct_net_name:
+    type: string
+    description: OAM network where instances will connect
+  cor_direct_net_name:
+    type: string
+    description: COR_DIRECT network where instances will connect
+  ocgapp_oam_protected_ip_3:
+    type: string
+    description: OCG OAM IP list
+  ocgapp_oam_direct_ip_3:
+    type: string
+    description: OCG OAM IP list
+  ocgapp_cor_direct_ip_3:
+    type: string
+    description: OCG COR_DIRECT IP list
+  ocgapp_cor_direct_v6_ip_3:
+    type: string
+    description: fixed IP assignment for VM's on the COR_DIRECT network
+  ocgapp_name_3:
+    type: string
+    description: OCG VM server name list (there should be 2, since we have 2 app vms)
+  availability_zone_1:
+    type: string
+    description: availability zone 2 ID or name
+  ocg_shared_server_grp_id:
+    type: string
+    description: OCG anti-affinity server group
+  ocgapp_shared_sec_grp_id:
+    type: string
+    description: security group
+  ocgapp_volume_id_3:
+    type: string 
+    description: Unique IDs for volumes
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VF module instance
+  nameserver_ip:
+    type: string
+    description: nameserver
+  eth1_ip_range:
+    type: string 
+    description: range
+  eth1_netmask:
+    type: string
+    description: mask length 
+  eth1_ip:
+    type: string
+    description: address
+  eth2_ip_range: 
+    type: string
+    description: range
+  eth2_ip: 
+    type: string
+    description: address 
+  domain_name:
+    type: string
+    description: address
+
+resources:
+            
+  vm_config_3:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: ungrouped
+      config:
+        str_replace:
+          template: {get_file: ocgapp_nested_0.txt}
+          params:
+            $ocg_hostname: { get_param: ocgapp_name_3 }
+            $ocg_hostip: { get_param: ocgapp_oam_protected_ip_3 }
+            $volume_id: {get_param: ocgapp_volume_id_3 }
+            
+  ocgapp_admin_key:
+    type: OS::Nova::KeyPair
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_STACK_NAME_key_pair
+          params:
+              VNF_NAME: {get_param: vnf_name}
+              STACK_NAME: {get_param: 'OS::stack_name'}
+      public_key: {get_param: ocgapp_public_key}
+      save_private_key: false
+
+  ocgapp_config_3:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts:
+        - config: {get_resource: vm_config_3}
+        
+# APP_SERVER_3
+  ocgapp_oam_protected_port_3:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_oam_protected_port_3
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_protected_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_protected_ips, 3]}}]
+      fixed_ips: [{ "ip_address": {get_param: ocgapp_oam_protected_ip_3}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+
+  ocgapp_oam_direct_port_3:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_oam_direct_port_3
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_direct_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_direct_ips, 3]}}]
+      fixed_ips: [{ "ip_address": {get_param: ocgapp_oam_direct_ip_3}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+      
+  ocgapp_cor_direct_port_3:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_ocgapp_cor_port_3
+          params:
+            VNF_NAME: {get_param: vnf_name}
+      network: {get_param: cor_direct_net_name}
+#      fixed_ips: [{"ip_address": {get_param: [ocgapp_cor_direct_ips, 3]}}, {"ip_address": {get_param: [ocgapp_cor_direct_v6_ips, 3]}}]
+      fixed_ips: [{"ip_address": {get_param: ocgapp_cor_direct_ip_3}}, {"ip_address": {get_param: ocgapp_cor_direct_v6_ip_3}}]
+      security_groups: [{get_param: ocgapp_shared_sec_grp_id}]
+
+  ocgapp_server_3:
+    type: OS::Nova::Server
+    properties:
+      key_name: {get_resource: ocgapp_admin_key}
+      name: {get_param: [ocgapp_name_3]}
+      image: {get_param: ocgapp_image_name}
+      flavor: {get_param: ocgapp_flavor_name}
+      availability_zone: {get_param: availability_zone_1}
+      scheduler_hints:
+          group: { get_param: ocg_shared_server_grp_id }
+      personality:
+      # Add resolv.conf file
+        "/etc/resolv.conf":
+          str_replace:
+            template: |
+              nameserver ${NAME_SERVER}
+              domain ${DOMAIN_NAME}
+            params:
+              ${NAME_SERVER}: {get_param: nameserver_ip}
+              ${DOMAIN_NAME}: {get_param: domain_name}
+      # Add hostname file
+        "/etc/hostname":
+          str_replace:
+            template: |
+              ${NAME}.${DOMAIN_NAME}
+            params:
+              ${NAME}: {get_param: ocgapp_name_3}
+              ${DOMAIN_NAME}: {get_param: domain_name}
+      # Add route-eth1 file
+        "/etc/sysconfig/network-scripts/route-eth1":
+          str_replace:
+            template: |
+              ${ETH1_IP_RANGE}/${ETH1_NETMASK} via ${ETH1_IP} dev eth1
+            params:
+              ${ETH1_IP_RANGE}: {get_param: eth1_ip_range}
+              ${ETH1_NETMASK}: {get_param: eth1_netmask}
+              ${ETH1_IP}: {get_param: eth1_ip}
+      # Add route-eth2 file
+        "/etc/sysconfig/network-scripts/route-eth2":
+          str_replace:
+            template: |
+              ${ETH2_IP_RANGE} via ${ETH2_IP} dev eth2
+            params:
+              ${ETH2_IP_RANGE}: {get_param: eth2_ip_range}
+#              ${ETH2_NETMASK}: {get_param: eth2_netmask}
+              ${ETH2_IP}: {get_param: eth2_ip}
+      networks:
+        - port: {get_resource: ocgapp_oam_protected_port_3}
+        - port: {get_resource: ocgapp_oam_direct_port_3}
+        - port: {get_resource: ocgapp_cor_direct_port_3}
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vf_module_id: {get_param: vf_module_id}
+        vnf_name: {get_param: vnf_name}
+      user_data_format: RAW
+      user_data: {get_resource: ocgapp_config_3}
+
+  ocgapp_volume_attachment_3:
+    type: OS::Cinder::VolumeAttachment
+    properties:
+      volume_id: {get_param: ocgapp_volume_id_3}
+      instance_uuid: {get_resource: ocgapp_server_3}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04_volume.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04_volume.env
new file mode 100644
index 0000000..983d5d2
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04_volume.env
@@ -0,0 +1,5 @@
+#file version 1.0
+parameters:
+  vnf_name: 'zrdm5avocg01'
+  ocgapp_volume_size_3: 400
+  ocgapp_volume_type_3: SF-Default-SSD
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04_volume.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04_volume.yaml
new file mode 100644
index 0000000..2419c18
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_04_volume.yaml
@@ -0,0 +1,35 @@
+heat_template_version: 2015-04-30
+#file version 2.3
+parameters:
+  vnf_name:
+    type: string
+    label: OCG VNF Name
+    description: OCG VNF Name
+  ocgapp_volume_size_3:
+    type: number
+    label: Cinder volume size
+    description: the size of the Cinder volume
+    constraints:
+      - range: { min: 100, max: 400 }
+  ocgapp_volume_type_3:
+    type: string
+    label: vm volume type
+    description: the name of the target volume backend for ocgapp1
+ 
+resources:
+  ocgapp_volume_3:
+    type: OS::Cinder::Volume
+    properties:
+      size: {get_param: ocgapp_volume_size_3 }
+      volume_type: {get_param: ocgapp_volume_type_3}
+      name:
+        str_replace:
+          template: VF_NAME_STACK_NAME_volume_3
+          params:
+            VF_NAME: { get_param: vnf_name }
+            STACK_NAME: { get_param: 'OS::stack_name' }
+
+outputs:
+  ocgapp_volume_id_3:
+    description: the ocgapp volume id 3
+    value: { get_resource: ocgapp_volume_3 }
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_nested_0.txt b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_nested_0.txt
new file mode 100644
index 0000000..57ab985
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgapp_nested_0.txt
@@ -0,0 +1,19 @@
+#cloud-config
+
+runcmd:
+   
+  # Allow for host resolution - With proper DNS in place, this is not needed
+  - echo "$ocg_hostip $ocg_hostname" >> /etc/hosts
+  
+  ##########################
+  # Cinder Volume Mounting
+  ##########################
+  - sudo su - root
+  - voldata_id="$volume_id"
+  - voldata_dev="/dev/disk/by-id/virtio-$(echo ${voldata_id} | cut -c -20)"
+  - mkfs.ext4 ${voldata_dev}
+  - sudo mkdir -pv /opt/ocg/data
+  - sudo chown -R fworks:fworks /opt/ocg/data
+  - echo "${voldata_dev} /opt/ocg/data ext4 defaults 1 2" >> /etc/fstab
+  - mount /opt/ocg/data
+ 
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr.env
new file mode 100644
index 0000000..501135a
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr.env
@@ -0,0 +1,26 @@
+#file version 1.0
+parameters:
+  ocgmgr_image_name: 'vOCG_MGR_SNAP_20180130'
+  ocgmgr_flavor_name: nv.c8r32d320
+  java_home: /home/fworks/java/jdk1.8.0_112
+  ocg_user: fworks
+  ovlm_install_dir: /home/fworks/Installer/weaver
+  ocg_install_jar: /home/fworks/Installer/ocg10/installer.jar
+  ocg_install_properties: /tmp/ocg.install.properties
+  wim_install_file: /home/fworks/Installer/wim/ovlm-integration-module.sh
+  keycloak_rpm_name: keycloak-pkg-x86_64.rpm
+  ovlm_install_properties: /tmp/ovlm.install.properties
+#  ocgmgr_public_key: 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAh5B/f9JmJL5HcIJT+XeGnE9Jlv22NYGweMx+M2eX53X0sxdB8onhqDiLFODgDgXUuQk11NM2tQeA+xH+nlZxdETK+5uKb2SLwsPjZnxHQPrGQP1KKAZi9aKoZFjYmWrYuqzQFT9QRz3gehG+pX82mzMkkE/Da2/XJ62zu8PKfapn63MhhmxG5w5onuN2XsM2zfI6GILFM56ppLtMCkgvzXVcWOpr7pD4kpnC9WavxwAkmQPrWIbTi0MKIEeuON0B+KRgC3b8GnCpuE2GFTffAm1MBgi0Urs8e3XGHsilVMqYdaCPZwq5ZKlzivX5wZQH9yT9m9Db6XLL66ZIaBHt2w== rsa-key-20170906'
+#  oam_protected_net_name: MNS-25180-T-RDM6B_oam_protected_net_1
+#  ocgmgr_oam_protected_ips: 107.112.163.100,107.112.163.101
+#  ocgmgr_names: zrdm6bvocg01mgr001-ap,zrdm6bvocg01mgr002-ap
+#  availability_zone_0: rdm6b-kvm-az01 
+#  availability_zone_1: rdm6b-kvm-az02 
+#  ocgmgr_shared_sec_grp_id: ca86ec60-38b7-4d72-b1f6-423a4f0c4be9 
+#  ocgmgr_volume_ids: [
+#  "0848cea8-c9de-45e5-a047-472b778488fe", 
+#  "c089f811-5122-4273-80c1-e6f48034b0a5"
+#]
+#  vnf_name: zrdm6bvocg01_ap
+#  vnf_id: 'dummy'
+#  vf_module_id: 'dummy'
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr.yaml
new file mode 100644
index 0000000..7735817
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr.yaml
@@ -0,0 +1,209 @@
+heat_template_version: 2015-04-30
+#file version 1.0
+description: OCG Managers template
+
+parameters:
+  ocgmgr_image_name:
+    type: string
+    description: operative system image
+  ocgmgr_flavor_name:
+    type: string
+    description: resources to be applied on instances
+  ocgmgr_public_key:
+    type: string
+    description: creator's ssh public key
+  oam_protected_net_name:
+    type: string
+    description: OAM network where instances will connect
+  ocgmgr_oam_protected_ips:
+    type: comma_delimited_list
+    description: OCG OAM IP list
+  ocgmgr_names:
+    type: comma_delimited_list
+    description: OCG MGR VM names list (should be 2, since we have 2 MGR VMs)
+  availability_zone_0:
+    type: string
+    description: availability zone 0 ID or name
+  availability_zone_1:
+    type: string
+    description: availability zone 1 ID or name
+  ocgmgr_shared_sec_grp_id:
+    type: string
+    description: security group
+  ocgmgr_volume_ids:
+    type: json
+    description: Unique IDs for volumes
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VF module instance
+  java_home:
+    type: string
+    description: java home    
+  ocg_user:
+    type: string
+    description: user to install ocg    
+  ocg_install_jar:
+    type: string
+    description: location of ocg installer    
+  ocg_install_properties:
+    type: string
+    description: location of ocg install properties    
+  wim_install_file:
+    type: string
+    description: WIM Install File location    
+  ovlm_install_dir:
+    type: string
+    description: Location of the ovlm-install dir    
+  keycloak_rpm_name:
+    type: string
+    description: keycloak rpm name    
+  ovlm_install_properties:
+    type: string
+    description: ovlm install properties    
+resources:
+  vm_config_0:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: ungrouped
+      config:
+        str_replace:
+          template: {get_file: ocgmgr_nested_0.txt}
+#      resource_def:
+#        type: ocgmgr_nested.yaml
+          params:
+            $java_home: { get_param: java_home }
+            $ocg_user: { get_param: ocg_user }
+            $ocg_install_jar: { get_param: ocg_install_jar }
+            $ocg_install_properties: { get_param: ocg_install_properties }
+            $ocg_hostname: { get_param: [ocgmgr_names, 0]}
+            $ocg_hostip: { get_param: [ocgmgr_oam_protected_ips, 0]}
+            $wim_install_file: { get_param: wim_install_file }
+            $ovlm_install_properties: { get_param: ovlm_install_properties }
+            $ovlm_hostname:  {get_param: [ocgmgr_names, 0]}
+            $ovlm_mgr002_hostname:  {get_param: [ocgmgr_names, 1]}
+            $ovlm_install_dir: {get_param: ovlm_install_dir}
+            $keycloak_rpm_name: {get_param: keycloak_rpm_name}
+            $volume_id: {get_param: [ocgmgr_volume_ids, 0]}
+
+  vm_config_1:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: ungrouped
+      config:
+        str_replace:
+          template: {get_file: ocgmgr_nested_1.txt}
+          params:
+            $ocg_hostname: { get_param: [ocgmgr_names, 1]}
+            $ocg_hostip: { get_param: [ocgmgr_oam_protected_ips, 1]}
+            $volume_id: {get_param: [ocgmgr_volume_ids, 1]}
+
+  ocgmgr_admin_key:
+    type: OS::Nova::KeyPair
+    properties:
+      name:
+        str_replace:
+          template: VNF_NAME_STACK_NAME_key_pair
+          params:
+              VNF_NAME: {get_param: vnf_name}
+              STACK_NAME: {get_param: 'OS::stack_name'}
+      public_key: {get_param: ocgmgr_public_key}
+      save_private_key: false
+
+  ocgmgr_oam_protected_0_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+          str_replace:
+            template: VNF_NAME_ocgmgr_oam_port_0
+            params:
+                VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_protected_net_name}
+      fixed_ips: [{"ip_address": {get_param: [ocgmgr_oam_protected_ips, 0]}}]
+      security_groups: [{get_param: ocgmgr_shared_sec_grp_id}]
+  
+  ocgmgr_config_0:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts:
+        - config: {get_resource: vm_config_0}
+
+  ocgmgr_config_1:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts:
+        - config: {get_resource: vm_config_1}
+
+  ocgmgr_server_0:
+    type: OS::Nova::Server
+    properties:
+      key_name: {get_resource: ocgmgr_admin_key}
+      name: {get_param: [ocgmgr_names, 0]}
+      image: {get_param: ocgmgr_image_name}
+      flavor: {get_param: ocgmgr_flavor_name}
+      availability_zone: {get_param: availability_zone_0}
+      networks:
+        - port: {get_resource: ocgmgr_oam_protected_0_port}
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vf_module_id: {get_param: vf_module_id}
+        vnf_name: {get_param: vnf_name}
+      user_data_format: SOFTWARE_CONFIG
+      user_data: {get_resource: ocgmgr_config_0}
+      #user_data: {get_resource: server_interface_config}
+
+  ocgmgr_oam_protected_1_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+          str_replace:
+            template: VNF_NAME_ocgmgr_oam_port_1
+            params:
+                VNF_NAME: {get_param: vnf_name}
+      network: {get_param: oam_protected_net_name}
+      fixed_ips: [{"ip_address": {get_param: [ocgmgr_oam_protected_ips, 1]}}]
+      security_groups: [{get_param: ocgmgr_shared_sec_grp_id}]
+
+  ocgmgr_server_1:
+    type: OS::Nova::Server
+    properties:
+      key_name: {get_resource: ocgmgr_admin_key}
+      name: {get_param: [ocgmgr_names, 1]}
+      image: {get_param: ocgmgr_image_name}
+      flavor: {get_param: ocgmgr_flavor_name}
+      availability_zone: {get_param: availability_zone_1}
+      networks:
+        - port: {get_resource: ocgmgr_oam_protected_1_port}
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vf_module_id: {get_param: vf_module_id}
+        vnf_name: {get_param: vnf_name}
+      user_data_format: RAW
+      user_data: {get_resource: ocgmgr_config_1}
+      #user_data: {get_resource: server_interface_config}
+
+  ocgmgr_volume_attachment_0:
+    type: OS::Cinder::VolumeAttachment
+    properties:
+      volume_id: {get_param: [ocgmgr_volume_ids, 0]}
+      instance_uuid: {get_resource: ocgmgr_server_0}
+
+  ocgmgr_volume_attachment_1:
+    type: OS::Cinder::VolumeAttachment
+    properties:
+      volume_id: {get_param: [ocgmgr_volume_ids, 1]}
+      instance_uuid: {get_resource: ocgmgr_server_1}
+
+  #server_interface_config:
+  #  type: OS::Heat::CloudConfig
+  #  properties:
+  #    cloud_config:
+  #      write_files:
+  #        - path: /etc/sysconfig/network-scripts/route-eth0
+  #          permissions: "0644"
+  #          content: { get_param: dns_route_eth0 }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_0.txt b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_0.txt
new file mode 100644
index 0000000..7100bb7
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_0.txt
@@ -0,0 +1,411 @@
+#cloud-config
+
+write_files:
+  - path: /tmp/ocg-bashrc   
+    content: |
+      export JAVA_HOME=$java_home
+      export FUSIONWORKS_HOME=/home/$ocg_user/ocg10/fwhome
+      export FUSIONWORKS_PROD=/home/$ocg_user/ocg10/fwprod
+      export PATH=$PATH:$JAVA_HOME/bin:$FUSIONWORKS_PROD/bin:$FUSIONWORKS_HOME:$FUSIONWORKS_PROD:$HOME:.
+      export OVLMCM_BASEURL=https://$ovlm_hostname:28010
+      export OVLMFE_BASEURL=https://$ovlm_hostname:28050
+      export OVLMDM_BASEURL=https://$ovlm_hostname:28130
+      export OVLMFA_BASEURL=https://$ovlm_hostname:28800
+      export baseurl=https://localhost:28050  
+      export OVLM_INTEGRATION_HOME=/home/$ocg_user/ovlm-integration-module
+      export OVLMFE_VERIFY_SERVER_CERTIFICATE=yes
+      export OVLMFE_CA_BUNDLE_PATH=~/weaver_install/ovlm-install/certs/ca_bundle
+      export OVLMCM_VERIFY_SERVER_CERTIFICATE=yes
+      export OVLMCM_CA_BUNDLE_PATH=~/weaver_install/ovlm-install/certs/ca_bundle
+      export OVLMDM_VERIFY_SERVER_CERTIFICATE=yes
+      export OVLMDM_CA_BUNDLE_PATH=~/weaver_install/ovlm-install/certs/ca_bundle
+      export OVLMFA_VERIFY_SERVER_CERTIFICATE=yes
+      export OVLMFA_CA_BUNDLE_PATH=~/weaver_install/ovlm-install/certs/ca_bundle
+
+  - path: /tmp/keycloak-bashrc
+    content: |
+      export JBOSS_HOME=/home/$ocg_user/keycloak
+      export JAVA_HOME=$java_home
+      export PATH=$PATH:$JAVA_HOME/bin
+ 
+  - path: /tmp/keycloak-setup.sh
+    permissions: '0755'
+    content: |
+      cp -f /tmp/keycloak.conf /home/$ocg_user/keycloak/etc/keycloak.conf
+      cp -f /tmp/keycloak.properties /home/$ocg_user/keycloak/etc/keycloak.properties
+      sed -i -e 's/<server name="default-server">/&      <https-listener name="https" socket-binding="https" security-realm="UndertowRealm"\/>/' /home/$ocg_user/keycloak/etc/standalone/standalone.xml
+      sed -i -e 's/127.0.0.1/$ovlm_hostname/' /home/$ocg_user/keycloak/etc/standalone/standalone.xml
+      sed -i -e 's/8080/8090/' /home/$ocg_user/keycloak/etc/standalone/standalone.xml
+      sed -i -e 's/8443/9443/' /home/$ocg_user/keycloak/etc/standalone/standalone.xml
+      sed -i -e "s/<security-realms>/&\
+        <security-realm name=\"UndertowRealm\">\
+            <server-identities>\
+                <ssl>\
+        <keystore path=\"keycloak.jks\" relative-to=\"jboss.server.config.dir\" keystore-password=\"password\" \/>\
+                <\/ssl>\
+            <\/server-identities>\
+        <\/security-realm>/"  /home/$ocg_user/keycloak/etc/standalone/standalone.xml
+ 
+  - path: /tmp/keycloak.conf
+    content: |
+      KEYCLOAK_MODE=standalone
+      KEYCLOAK_BIND=0.0.0.0
+      JAVA_HOME=$java_home
+      KEYCLOAK_JAVA_OPTS="\
+              -Djava.net.preferIPv4Stack=true \
+              -Djava.awt.headless=true \
+              -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m"
+      KEYCLOAK_SERVER_OPTS="--properties=/home/$ocg_user/keycloak/etc/keycloak.properties"
+      JBOSS_LOG_DIR=/home/$ocg_user/keycloak/log/standalone
+      JBOSS_CONFIG_DIR=/home/$ocg_user/keycloak/etc/standalone
+      JBOSS_HOME=/home/$ocg_user/keycloak
+ 
+  - path: /tmp/keycloak.properties
+    content: |
+      jboss.http.port=8090
+      jboss.https.port=9443
+      jboss.management.http.port=9990
+      jboss.management.https.port=9993
+      jboss.server.data.dir=/home/$ocg_user/keycloak/var/standalone
+ 
+  - path: $ocg_install_properties
+    content: |
+      InstallationId=OCG_MASTER
+      TimeZone=America/New_York
+        
+      # Directories where the binaries and configuration will be stored
+      # If the specified directories exist then their content will be deleted.
+      FusionWorksHomeDirectory=/home/$ocg_user/ocg10/fwhome
+      FusionWorksProductDirectory=/home/$ocg_user/ocg10/fwprod
+      ConfigPort=25000
+      ConfigHost=$ocg_hostname
+      EventPort=25010
+      EventHost=$ocg_hostname
+      SNMPAgentPort=25020
+      MediationServerDatabasePort=25030
+        
+      JBOSSHost=$ocg_hostname
+      JBOSSHttpPort=25041
+      JBOSSHttpsPort=25042
+      JBOSSRemotePort=25043
+      JBOSSPortBase=25050
+      JAVA_HOME=$java_home
+        
+      # addons FW install.properties.template install.properties.template.1 install.properties.template.2 install.properties.template.dup.props install.properties.template.sorted install.properties.template.sorted.uniq java share xml
+      # Do not change these values
+      DatabaseUserName=OCG
+      DatabasePassword=OCG
+        
+      # Enable SSL (https) access to the OAM and Policy Manager web applications.
+      # Choices are: OFF, ON
+      EnableWebSsl=
+      # Security option choices are: ON, OFF
+      SecurityOption=
+
+  - path: $ovlm_install_properties
+    content: |
+      protocol: https
+      https_configuration:
+        server:
+          keystore_path: key_store.jks
+          keystore_password: password
+          key_password: password
+        client:
+          verify_server_certificate: true
+          truststore_path: trust_store.jks
+      service_owner:
+        user: ovlm
+        user_group: ovlm
+        ssh_user: ovlmrsync
+      log_rotation:
+        interval: monthly
+        max_file_size: 5000000
+      installer:
+        ssh_bin: /usr/bin/ssh
+        rsync_bin: /usr/bin/rsync
+        ssh_options: ''
+      installation_directories:
+        path_bin: /opt/weaver_home/bin/
+        path_cfg: /opt/weaver_home/etc/
+        path_run: /opt/weaver_home/run/
+      snmp:
+        manager: $ovlm_hostname
+        community: public
+      deployment_manager:
+        hosts:
+        - $ovlm_hostname
+        properties:
+          server:
+            port: 28130
+          spring:
+            datasource:
+              username: dm
+              password: dm
+          logging:
+            file: /opt/ocg/data/weaver_home/ovlm-dm.log
+      workflow_engine:
+        hosts:
+        - $ovlm_hostname
+        properties:
+          server:
+            port: 8099
+          logging:
+            path: /opt/ocg/data/weaver_home/WF/
+      vnfm_gui:
+        hosts:
+        - $ovlm_hostname
+        properties:
+          server:
+            port: 28200
+          logging:
+            file: /opt/ocg/data/weaver_home/ovlm-vnfm.log
+      frontend:
+        hosts:
+        - $ovlm_hostname
+        properties:
+          server:
+            port: 28050
+          logging:
+            file: /opt/ocg/data/weaver_home/ovlm-fe.log
+      configuration_manager:
+        hosts:
+        - $ovlm_hostname
+        properties:
+          server:
+            port: 28010
+          rsync_port: 28000
+          repository-root: /opt/ocg/data/weaver_home/repository-root
+          logging:
+            file: /opt/ocg/data/weaver_home/ovlm-cm.log
+      resource_manager:
+        hosts:
+        - $ovlm_hostname
+        properties:
+          server:
+            port: 28020
+          logging:
+            file: /opt/ocg/data/weaver_home/ovlm-rm.log
+      resource_agent:
+        properties:
+          server:
+            port: 28030
+          sudo_privileges_required: true
+          sudo_privileges:
+          - /bin/postgresql-setup
+          - /bin/rpm
+          - /usr/bin/yum
+          - /bin/bash
+          - /bin/sudo *
+          - /usr/bin/sudo *
+          - /usr/bin/systemctl status *
+          - /usr/bin/systemctl start *
+          - /usr/bin/systemctl stop *
+          - /usr/bin/systemctl restart *
+          - /usr/bin/systemctl is-active *
+          - /usr/bin/systemctl daemon-reload
+          - /sbin/useradd
+          - /sbin/userdel
+          - /sbin/usermod
+          - /bin/mkdir
+          - /bin/rm
+          - /bin/rsync
+          - /usr/bin/rsync
+          - /bin/chown
+          - /bin/chmod
+          resource_agent:
+            metadata:
+              stage:
+                timeout: 100
+                parameters:
+                  rsync:
+                    timeout: 100
+                    bin: rsync
+          repository-root: /opt/ocg/data/weaver_home/repository-root
+          logging:
+            path: /opt/weaver_home/RA/
+      instance_inventory_manager:
+        hosts:
+        - $ovlm_hostname
+        properties:
+          server:
+            port: 28120
+          logging:            
+            file: /opt/ocg/data/weaver_home/ovlm-iim.log
+      auth_server:
+        hosts:
+        - $ovlm_hostname
+        admin:
+            username: admin
+            password: Openet01
+        url: https://$ovlm_hostname:9443/auth
+        properties:
+          server:
+            port: 9443 
+      failover_agent:
+        hosts:
+        - $ovlm_hostname
+        properties:
+          server:
+            port: 28800
+          mode:
+            init_mode: active
+            remote_host: $ovlm_mgr002_hostname
+            remote_port: 28800
+            post_failover: 
+          rsync:
+            interval: 360
+            bin: /usr/bin/rsync
+            timeout: 100
+            location_list:
+            - destination: /tmp/ovlm_dm_failover_dbsync/
+              source:      /tmp/ovlm_dm_failover_dbsync/
+              pre:         /opt/weaver_home/bin/dm/failover/backup_dm_db.sh
+              complete:    /opt/weaver_home/bin/dm/failover/restore_dm_db.sh              
+            - destination: /opt/weaver_home/bin/dm/repository-root/
+              source:      /opt/weaver_home/bin/dm/repository-root/
+            - destination: /opt/weaver_home/repository-root/
+              source:      /opt/weaver_home/repository-root/
+            - destination: /opt/weaver_home/bin/iim/repository-root/
+              source:      /opt/weaver_home/bin/iim/repository-root/
+            - destination: /opt/weaver_home/etc/fe/meta/flow_mappings.yml
+              source:      /opt/weaver_home/etc/fe/meta/flow_mappings.yml
+            - destination: /tmp/ovlm_keycloak_backup.zip
+              source:  /tmp/ovlm_keycloak_backup.zip
+              pre:  sudo bash /home/fworks/keycloak/scripts/backup-db.sh /tmp/ovlm_keycloak_backup.zip
+              complete:  sudo bash /home/fworks/keycloak/scripts/restore-db.sh /tmp/ovlm_keycloak_backup.zip
+              post:
+            - destination: /home/fworks/ocg10/fwprod/
+              source: /home/fworks/ocg10/fwprod/
+              excludes: 
+              pre: sudo sudo -E /home/fworks/ocg10/fwprod/bin/siteReplication/ActiveSite_PreSync_hookpoint.sh $ocg_user /home/fworks/GeoReplication/datadir /home/fworks/GeoReplication/ActiveNode.env
+              post: sudo sudo -E /home/fworks/ocg10/fwprod/bin/siteReplication/ActiveSite_PostSync_hookpoint.sh $ocg_user /home/fworks/GeoReplication/datadir /home/fworks/GeoReplication/ActiveNode.env
+              complete: sudo sudo -E /home/fworks/ocg10/fwprod/bin/siteReplication/PassiveSite_CompleteSync_hookpoint.sh $ocg_user /home/fworks/GeoReplication/datadir /home/fworks/GeoReplication/ActiveNode.env 
+            - destination: /home/fworks/ocg10/fwhome/
+              source: /home/fworks/ocg10/fwhome/
+              excludes: 
+              pre: sudo sudo -E /home/fworks/ocg10/fwprod/bin/siteReplication/ActiveSite_PreSync_hookpoint.sh $ocg_user /home/fworks/GeoReplication/datadir /home/fworks/GeoReplication/ActiveNode.env
+              post: sudo sudo -E /home/fworks/ocg10/fwprod/bin/siteReplication/ActiveSite_PostSync_hookpoint.sh $ocg_user /home/fworks/GeoReplication/datadir /home/fworks/GeoReplication/ActiveNode.env
+              complete: sudo sudo -E /home/fworks/ocg10/fwprod/bin/siteReplication/PassiveSite_CompleteSync_hookpoint.sh $ocg_user /home/fworks/GeoReplication/datadir /home/fworks/GeoReplication/ActiveNode.env
+            - destination: /home/fworks/ovlm-integration-module/
+              source:      /home/fworks/ovlm-integration-module/
+          sudo_privileges_required: true
+          sudo_privileges:
+            - /bin/bash
+            - /bin/sudo *
+            - /usr/bin/sudo *
+            - /usr/bin/rsync
+            - /usr/bin/systemctl status *
+            - /usr/bin/systemctl start *
+            - /usr/bin/systemctl stop *
+            - /usr/bin/systemctl restart *
+            - /usr/bin/systemctl is-active *
+            - /usr/bin/systemctl daemon-reload
+          logging:
+            file: /opt/ocg/data/weaver_home/ovlm-fa.log
+runcmd:
+  - echo "alias l='ls -lrt'" >> /etc/bashrc
+  
+  # Allow for host resolution - With proper DNS in place, this is not needed
+  - echo "$ocg_hostip $ocg_hostname" >> /etc/hosts
+  
+  ##########################
+  # Cinder Volume Mounting
+  ##########################
+  - sudo su - root
+  - voldata_id="$volume_id"
+  - voldata_dev="/dev/disk/by-id/virtio-$(echo ${voldata_id} | cut -c -20)"
+  - mkfs.ext4 ${voldata_dev}
+  - sudo mkdir -pv /opt/ocg/data
+  - sudo chown -R fworks:fworks /opt/ocg/data
+  - echo "${voldata_dev} /opt/ocg/data ext4 defaults 1 2" >> /etc/fstab
+  - mount /opt/ocg/data
+
+  ##############
+  # OCG install
+  ##############
+  - echo "Installing ocg as user $ocg_user"
+  # Set up the ocg_user environment 
+  - su -s /bin/bash -l -c 'cat /tmp/ocg-bashrc >> ~/.bashrc' $ocg_user
+  - su -s /bin/bash -l -c 'cat /tmp/ocg-bashrc >> ~/.profile' $ocg_user
+  - su -s /bin/bash -l -c 'cd && java -jar $ocg_install_jar -install $ocg_install_properties' $ocg_user
+  - su -s /bin/bash -l -c 'cd && StartNameServ && StartMediationServer && StartJBossAppServer' $ocg_user
+  ##############
+  # WIM install
+  ##############
+  #- echo "Installing WIM as user $ocg_user"
+  - su -s /bin/bash -l -c 'cd && cp $wim_install_file .' $ocg_user
+  - su -s /bin/bash -l -c 'cd && ./ovlm-integration-module.sh' $ocg_user
+ 
+  ##############
+  # OVLM install
+  ##############
+  - echo "Installing ovlm as user $ocg_user"
+ 
+  # Need to set up password-less ssh for ocg_user so that ovlm-deploy will succeed
+  - su -s /bin/bash -l -c  'ssh-keygen -f ~/.ssh/id_rsa -t rsa -N "" ' $ocg_user
+  - su -s /bin/bash -l -c  'cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys' $ocg_user
+  # Allow sudo on non-tty login for ovlm-install user
+  - echo "Defaults:$ocg_user !requiretty" >> /etc/sudoers
+  # Create directory and Expand the install media
+  - su -s /bin/bash -l -c  'cd && mkdir weaver_install' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install && cp $ovlm_install_dir/ovlm-core-install-enterprise.tar .' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install && cp $ovlm_install_dir/ovlm-thirdparty-dependencies.tar .' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install && tar xvf $ovlm_install_dir/ovlm-core-install-enterprise.tar' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install && cp $ovlm_install_dir/ovlm-client.sh .' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install && tar xvf $ovlm_install_dir/ovlm-thirdparty-dependencies.tar' $ocg_user
+  # Create certs 
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install && mkdir -p certs' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install/certs && echo "subjectAltName=DNS:$ovlm_hostname,DNS:$ovlm_mgr002_hostname" > extFile' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install/certs && openssl genrsa -out server.key 2048' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install/certs && openssl req -new -out server.csr -key server.key -subj "/C=US/L=Atlanta/O=DigiCert/CN=*.novalocal"' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install/certs && openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -extfile extFile' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install/certs && cp server.crt ca_bundle' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install/certs && openssl pkcs12 -export -name weaver -in server.crt -inkey server.key -out server.p12 -passout pass:password' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install/certs && $java_home/bin/keytool -importkeystore -destkeystore keycloak.jks -srckeystore server.p12 -srcstoretype pkcs12  -alias weaver -srcstorepass password -noprompt -deststorepass password -deststoretype JKS -destalias weaver' $ocg_user
+  # Configure and Install keycloak
+  #- cd ~/ovlm-install && rpm -ivh rpms/$keycloak_rpm_name
+  - su -s /bin/bash -l -c 'cat /tmp/keycloak-bashrc >> ~/.profile' $ocg_user
+  - su -s /bin/bash -l -c 'cat /tmp/keycloak-bashrc >> ~/.bashrc' $ocg_user
+  - export KEYCLOAK_USER=$ocg_user;export KEYCLOAK_USER_GROUP=$ocg_user; sudo -E rpm -ivh --relocate /opt/keycloak=/home/$ocg_user/keycloak --relocate /etc/keycloak=/home/$ocg_user/keycloak/etc --relocate /var/log/keycloak=/home/$ocg_user/keycloak/log --relocate /var/run/keycloak=/home/$ocg_user/keycloak/run --relocate /var/opt/keycloak=/home/$ocg_user/keycloak/var /home/$ocg_user/weaver_install/ovlm-install/rpms/keycloak-pkg-x86_64.rpm
+  # setup keycloak
+  - su -s /bin/bash -l -c '/tmp/keycloak-setup.sh' $ocg_user
+  # copy keystore file
+  - su -s /bin/bash -l -c 'cp /home/$ocg_user/weaver_install/ovlm-install/certs/keycloak.jks /home/$ocg_user/keycloak/etc/standalone/.' $ocg_user
+  # Config admin user
+  - su -s /bin/bash -l -c '/home/$ocg_user/keycloak/bin/add-user-keycloak.sh -u admin -p Openet01' $ocg_user
+  # Enable keycloak daemon
+  - systemctl enable keycloak
+  # Start keycloak service
+  - systemctl restart keycloak
+  # Set up the config file and do the weaver install
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install && cp $ovlm_install_properties ./ovlm-install.yml' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install && ./utilities/cipher/encrypt_scripts/encrypt-password.sh -f ./ovlm-install.yml' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install/ovlm-install && ./ovlm-deploy.sh -i ovlm-install.yml -u $ocg_user' $ocg_user
+  - su -s /bin/bash -l -c  'cd ~/weaver_install && sudo bash ovlm-client.sh' $ocg_user
+  
+  # Configure keycloak user for Weaver realm
+  - su -s /bin/bash -l -c '/home/$ocg_user/keycloak/bin/add-user-keycloak.sh -u weaver -p Openet01 -r weaver' $ocg_user
+ 
+  # Restart service
+  - systemctl restart keycloak
+
+  # Steps for weaver.profile
+  - su -s /bin/bash -l -c 'cd && cp ~/weaver_install/ovlm-install/weaver.profile .' $ocg_user
+  - su -s /bin/bash -l -c 'cd && source weaver.profile' $ocg_user
+  - su -s /bin/bash -l -c 'echo "source weaver.profile" >> ~/.profile' $ocg_user
+  - su -s /bin/bash -l -c 'echo "eval \$(on-auth-client -u weaver -p Openet01 --ca_bundle_path /home/fworks/weaver_install/ovlm-install/certs/ca_bundle)" >> ~/.profile' $ocg_user
+
+  # Step to prepare the upload the files
+  - su -s /bin/bash -l -c 'cd && . ~/.profile && cd ~/weaver_install/ovlm-install && ./ovlm-dm-util.sh prepare upload_files' $ocg_user
+  
+  # Step to upload the resource agent related binary file into deployment manager
+  - su -s /bin/bash -l -c 'cd && . ~/.profile && cd ~/weaver_install/ovlm-install && ovlm-dm artifact upload -f /home/fworks/weaver_install/ovlm-install/artifact/ovlm-install.tar.gz' $ocg_user
+
+  # Step to upload related configuration files into deployment manager
+  - su -s /bin/bash -l -c 'cd && . ~/.profile && cd ~/weaver_install/ovlm-install && ovlm-dm configuration create -i ovlm-install.yml -u $ocg_user -secure_stage_traffic false  -s /home/fworks/weaver_install/ovlm-install/artifact/ssh-keys.tar.gz -c /home/fworks/weaver_install/ovlm-install/artifact/certs.tar.gz -k ~/.ssh/id_rsa -e /home/fworks/weaver_install/ovlm-install/artifact/.installer.png' $ocg_user
+
+  # Step to check OCG-Mgr health status
+  - su -s /bin/bash -l -c 'cd && . ~/.profile && ovlm-fe health status' $ocg_user
+  
+  # Step for Replication Import
+  - su -s /bin/bash -l -c 'ReplicationImport -u Administrator -p Openet00 /home/fworks/Installer/OCG_BASE_CONFIG.xml' $ocg_user
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_1.txt b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_1.txt
new file mode 100644
index 0000000..57ab985
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_1.txt
@@ -0,0 +1,19 @@
+#cloud-config
+
+runcmd:
+   
+  # Allow for host resolution - With proper DNS in place, this is not needed
+  - echo "$ocg_hostip $ocg_hostname" >> /etc/hosts
+  
+  ##########################
+  # Cinder Volume Mounting
+  ##########################
+  - sudo su - root
+  - voldata_id="$volume_id"
+  - voldata_dev="/dev/disk/by-id/virtio-$(echo ${voldata_id} | cut -c -20)"
+  - mkfs.ext4 ${voldata_dev}
+  - sudo mkdir -pv /opt/ocg/data
+  - sudo chown -R fworks:fworks /opt/ocg/data
+  - echo "${voldata_dev} /opt/ocg/data ext4 defaults 1 2" >> /etc/fstab
+  - mount /opt/ocg/data
+ 
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_volume.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_volume.yaml
new file mode 100644
index 0000000..cf354d9
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_nested_volume.yaml
@@ -0,0 +1,45 @@
+heat_template_version: 2015-04-30
+description: Nested volume file for ocg mgrs
+parameters:
+
+  index:
+    type: number
+    label: Volume index
+    description: number of volumes to spin up
+    constraints:
+      - allowed_values: [0, 1, 2]
+  size:
+    type: number
+    label: Volume Size
+    description: size of the cinder volumes
+    constraints:
+      - range: { min: 50, max: 400 }
+  volume_type:
+    type: string
+    label: Volume Type
+    description: type of cinder volumes
+  vnf_name:
+    type: string
+    label: VNF Name
+    description: vnf name
+
+
+resources:
+  ocgmgr_volume_0:
+    type: OS::Cinder::Volume
+    properties:
+      size: {get_param: size}
+      volume_type: {get_param: volume_type}
+      name:
+        str_replace:
+          template: VF_NAME_STACK_NAME_INDEX
+          params:
+            VF_NAME: {get_param: vnf_name}
+            STACK_NAME: {get_param: 'OS::stack_name'}
+            INDEX: {get_param: index}
+
+
+outputs:
+  ocgmgr_volume_id_0:
+    description: the ocgmgr volume uuids
+    value: {get_resource: ocgmgr_volume_0}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_volume.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_volume.env
new file mode 100644
index 0000000..dd36b3e
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_volume.env
@@ -0,0 +1,8 @@
+#file version 1.0
+parameters:
+  vnf_name: 'zrdm6bvocg01'
+  ocgmgr_volume_size_0: 400
+  #ocgmgr_volume_size_1: 100
+  ocgmgr_volume_type_0: SF-Default-SSD
+  #ocgmgr_volume_type_1: SF-Default-SSD
+  volume_count: 2 
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_volume.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_volume.yaml
new file mode 100644
index 0000000..6a458c8
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/heat/nested/nestedundervolume/inputs/ocgmgr_volume.yaml
@@ -0,0 +1,44 @@
+heat_template_version: 2015-04-30 
+
+description: OCG template for MGR volumes
+#file version 1.0
+parameters:
+  vnf_name:
+    type: string
+    label: OCG VNF Name
+    description: OCG VNF Name
+  ocgmgr_volume_size_0:
+    type: number
+    label: Cinder volume 1 size
+    description: the size of the Cinder volume
+    constraints:
+      - range: { min: 50, max: 400 }
+  ocgmgr_volume_type_0:
+    type: string
+    label: mgr vm 1 volume type
+    description: the name of the target volume backend for the first OCG MGR
+  volume_count:
+    type: number
+    label: volume count
+    description: num of volumes needed
+    constraints:
+      - allowed_values: [0, 1, 2]
+resources:
+
+  ocgmgr_volume_resource_group:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: {get_param: volume_count}
+      index_var: index
+      resource_def:
+        type: ocgmgr_nested_volume.yaml
+        properties:
+          index: index
+          size: {get_param: ocgmgr_volume_size_0}
+          volume_type: {get_param: ocgmgr_volume_type_0}
+          vnf_name: {get_param: vnf_name}
+
+outputs:
+  ocgmgr_volume_ids:
+    description: ocgmgr volume ids
+    value: {get_attr: [ocgmgr_volume_resource_group, ocgmgr_volume_id_0]}