diff options
35 files changed, 4690 insertions, 109 deletions
diff --git a/openecomp-bdd/features/TOSCA/HeatToToscaTranslation.feature b/openecomp-bdd/features/TOSCA/HeatToToscaTranslation.feature index ff2ed5a473..ae0803687f 100644 --- a/openecomp-bdd/features/TOSCA/HeatToToscaTranslation.feature +++ b/openecomp-bdd/features/TOSCA/HeatToToscaTranslation.feature @@ -154,4 +154,41 @@ Feature: Tosca Validation Flow 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 Binary files differnew file mode 100644 index 0000000000..690cb954e2 --- /dev/null +++ b/openecomp-bdd/resources/uploads/nested-belongs-to-volume.zip 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 81bf2fa5a9..2bc549c058 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 @@ package org.openecomp.sdc.heat.datatypes.manifest; 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 void setBase(Boolean base) { + isBase = base; + } - public String getFile() { - return file; - } + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } + + public String getParentFile() { + return parentFile; + } - public void setFile(String file) { - this.file = file; + public void setParentFile(String parentFile) { + this.parentFile = parentFile; } - 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 List<FileData> getData() { + return data; + } - public void setData(List<FileData> data) { - this.data = 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<>(); + /** + * 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); } - this.data.add(data); - } - public enum Type { + public enum Type { HEAT("HEAT"), HEAT_ENV("HEAT_ENV"), @@ -108,20 +113,23 @@ public class FileData { 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 String getDisplayName() { + return displayName; + } - public static boolean isArtifact(Type fileType) - { - return !Arrays.asList(HEAT,HEAT_ENV, HEAT_VOL).contains(fileType); - } + 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; + } + } } 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 f2773ae01f..bd8b558f11 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 @@ public class HeatToToscaUtil { 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 @@ public class HeatToToscaUtil { 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 @@ public class HeatToToscaUtil { 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 @@ public class HeatToToscaUtil { } } + 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 @@ public class HeatToToscaUtil { return fileDataCollection; } - private static void applyFilterOnFileCollection(HeatOrchestrationTemplate heatOrchestrationTemplate, + 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 Set<String> applyFilterOnFileCollection(HeatOrchestrationTemplate heatOrchestrationTemplate, TranslationContext translationContext, FileDataCollection fileDataCollection, - Map<String, FileData> filteredFiles, - Set<String> referenced) { + Map<String, FileData> filteredFiles) { + Set<String> nestedFiles = new HashSet<>(); 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); + 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 void handleResourceGrpNestedFile(Resource resource, TranslationContext translationContext, - FileDataCollection fileDataCollection, - Map<String, FileData> filteredFiles, List<String> filenames, - Set<String> referenced) { + 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 ee0cee6bab..2a845fb06a 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 class TranslationService { */ 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 @@ public class TranslationService { 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 @@ public class TranslationService { 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 @@ public class TranslationService { } - 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 0000000000..9c5b422e04 --- /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 0000000000..aadea7bb86 --- /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 0000000000..0de9369c69 --- /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 0000000000..dc47034e54 --- /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 0000000000..e9bc8b298f --- /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 0000000000..fc07aae4df --- /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 0000000000..fbd4e77fc1 --- /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 0000000000..a1338725d9 --- /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 0000000000..369444f6f8 --- /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 0000000000..3e96789145 --- /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 0000000000..aae3195d29 --- /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 0000000000..c435b123fc --- /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 0000000000..37b385fd76 --- /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 0000000000..3153e819a8 --- /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 0000000000..428442e56c --- /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 0000000000..a4c88f8238 --- /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 0000000000..35f142884b --- /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 0000000000..f67551f76d --- /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 0000000000..fe83f2d08b --- /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 0000000000..aeb9fe9597 --- /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 0000000000..983d5d2e33 --- /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 0000000000..2419c1868a --- /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 0000000000..57ab985c77 --- /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 0000000000..501135aba8 --- /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 0000000000..7735817555 --- /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 0000000000..7100bb7b6b --- /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 0000000000..57ab985c77 --- /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 0000000000..cf354d97da --- /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 0000000000..dd36b3e80f --- /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 0000000000..6a458c8eca --- /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]} |