Add latest bug fixes to master 95/11495/1
authoravigaffa <avi.gaffa@amdocs.com>
Sun, 10 Sep 2017 05:58:51 +0000 (08:58 +0300)
committeravigaffa <avi.gaffa@amdocs.com>
Sun, 10 Sep 2017 07:07:00 +0000 (10:07 +0300)
Change-Id: Ieddc2330ad4e093984f14a69b52f2ca5cb465a10
Issue-ID: SDC-293
Signed-off-by: avigaffa <avi.gaffa@amdocs.com>
107 files changed:
common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/main/java/org/openecomp/sdc/generator/aai/AaiArtifactGenerator.java
dox-sequence-diagram-ui/package.json
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/EntitlementPoolLimitsImpl.java
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/LicenseKeyGroupLimitsImpl.java
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapValidationResponseToDto.java
openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ValidationResponse.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/ImagesTest.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested1ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested2ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/portSecurityGroupNetPattern1B/out/nested2ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/nested1ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/multipleReferencesToSameNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/MANIFEST.json [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.env [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.env [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_cscf.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_tdcore.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/GlobalSubstitutionTypesServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/MainServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedMultiLevels/out/nested3ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedOutputParamGetAttrIn/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneCompute/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedPointingToThreeDiffNestedFilesSameComputeType/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedSameTypeTwoPointingOnSameNestedFile/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOut/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOutComputePort/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOneGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOutputParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePortWithGetAttr/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeAndServerGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwosameporttypes/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/diffPortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/inputOutputParamType/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortsAndGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/samePortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithPorts/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeNovaSameTypeWithGetAttrFromPort/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeSameComputesNoConsolidation/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoComputesWithGetAttrBetweenThem/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoSetsOfSingle/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/in/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/out/SubstitutionServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/dao/types/LimitEntity.java
openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/healing/HealingService.java
openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/healing/impl/SimpleHealingServiceImpl.java
openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java
openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VendorLicenseArtifactsServiceUtils.java
openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/composition/CompositionEntityDataManagerImpl.java
openecomp-be/tools/install/database/schemaTemplates/composition/deployment.ftl
openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh
openecomp-ui/package.json
openecomp-ui/pom.xml
openecomp-ui/resources/scss/components/_submitErrorResponse.scss
openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss
openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx
openecomp-ui/src/nfvo-utils/i18n/i18n.js

index c8e7be5..f4dd4d4 100644 (file)
@@ -163,7 +163,7 @@ public class AaiArtifactGenerator implements ArtifactGenerator {
         log.warn(
             "Additional tosca file found with resource version id : "
                 + resourceUuId);
-        break;
+        continue;
       }
       //update resource version with version from service tosca
       String resourceVersion = resourcesVersion.get(resourceUuId);
index 81d42af..99a4df3 100644 (file)
@@ -12,7 +12,7 @@
   "author": "ECOMP",
   "license": "SEE LICENSE IN LICENSE.TXT",
   "dependencies": {
-    "d3": "^4.10.0",
+    "d3": "^3.5.16",
     "lodash": "^4.12.0",
     "react": "^15.1.0",
     "react-dnd": "^2.1.2",
@@ -42,7 +42,6 @@
     "eslint-plugin-jsx-a11y": "^1.2.2",
     "eslint-plugin-react": "^5.1.1",
     "file-loader": "^0.8.5",
-    "gulp": "^3.9.1",
     "json-loader": "^0.5.4",
     "node-http-proxy": "^0.2.3",
     "node-sass": "^3.7.0",
index 36e25e0..4365ace 100644 (file)
@@ -32,7 +32,9 @@ import javax.ws.rs.core.Response;
 public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits {
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
   private VendorLicenseManager vendorLicenseManager =
-      VendorLicenseManagerFactory.getInstance().createInterface();
+          VendorLicenseManagerFactory.getInstance().createInterface();
+
+  public static final String parent = "EntitlementPool";
 
   @Override
   public Response createLimit(LimitRequestDto request,
@@ -44,18 +46,19 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits {
 
     MdcUtil.initMdc(LoggerServiceName.Create_LIMIT.toString());
     vendorLicenseManager.getEntitlementPool(new EntitlementPoolEntity(vlmId, Version.valueOf
-        (versionId), entitlementPoolId), user);
+            (versionId), entitlementPoolId), user);
 
     LimitEntity limitEntity =
-        new MapLimitRequestDtoToLimitEntity()
-            .applyMapping(request, LimitEntity.class);
+            new MapLimitRequestDtoToLimitEntity()
+                    .applyMapping(request, LimitEntity.class);
     limitEntity.setEpLkgId(entitlementPoolId);
     limitEntity.setVendorLicenseModelId(vlmId);
+    limitEntity.setParent(parent);
 
     LimitEntity createdLimit = vendorLicenseManager.createLimit(limitEntity, user);
     MapLimitEntityToLimitCreationDto mapper = new MapLimitEntityToLimitCreationDto();
     LimitCreationDto createdLimitDto = mapper.applyMapping(createdLimit, LimitCreationDto
-        .class);
+            .class);
 
     /*StringWrapperResponse result =
         createdLimit != null ? new StringWrapperResponse(createdLimit.getId())
@@ -65,24 +68,24 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits {
 
     //return Response.ok(result).build();
     return Response.ok(createdLimitDto != null ? createdLimitDto : null)
-        .build();
+            .build();
   }
 
   @Override
   public Response listLimits(String vlmId, String versionId, String entitlementPoolId, String
-      user) {
+          user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId, "EP id", entitlementPoolId);
 
     MdcUtil.initMdc(LoggerServiceName.List_EP.toString());
     vendorLicenseManager.getEntitlementPool(new EntitlementPoolEntity(vlmId, Version.valueOf
-        (versionId), entitlementPoolId), user);
+            (versionId), entitlementPoolId), user);
 
     Collection<LimitEntity> limits =
-        vendorLicenseManager.listLimits(vlmId, Version.valueOf(versionId), entitlementPoolId, user);
+            vendorLicenseManager.listLimits(vlmId, Version.valueOf(versionId), entitlementPoolId, user);
 
     GenericCollectionWrapper<LimitEntityDto> result = new GenericCollectionWrapper<>();
     MapLimitEntityToLimitDto outputMapper =
-        new MapLimitEntityToLimitDto();
+            new MapLimitEntityToLimitDto();
     for (LimitEntity limit : limits) {
       result.add(outputMapper.applyMapping(limit, LimitEntityDto.class));
     }
@@ -96,12 +99,12 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits {
   public Response getLimit( String vlmId, String versionId, String entitlementPoolId,
                             String limitId, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, EP id, Limit Id", vlmId, entitlementPoolId,
-        limitId);
+            limitId);
 
     MdcUtil.initMdc(LoggerServiceName.Get_LIMIT.toString());
 
     vendorLicenseManager.getEntitlementPool(new EntitlementPoolEntity(vlmId, Version.valueOf
-        (versionId), entitlementPoolId), user);
+            (versionId), entitlementPoolId), user);
     LimitEntity epInput = new LimitEntity();
     epInput.setVendorLicenseModelId(vlmId);
     epInput.setVersion(Version.valueOf(versionId));
@@ -110,11 +113,11 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits {
     LimitEntity limit = vendorLicenseManager.getLimit(epInput, user);
 
     LimitEntityDto entitlementPoolEntityDto = limit == null ? null :
-        new MapLimitEntityToLimitDto()
-            .applyMapping(limit, LimitEntityDto.class);
+            new MapLimitEntityToLimitDto()
+                    .applyMapping(limit, LimitEntityDto.class);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, EP id, Limit Id", vlmId, entitlementPoolId,
-        limitId);
+            limitId);
 
     return Response.ok(entitlementPoolEntityDto).build();
   }
@@ -127,39 +130,40 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits {
                               String limitId,
                               String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId, "EP id", entitlementPoolId, "limit Id",
-        limitId);
+            limitId);
 
     MdcUtil.initMdc(LoggerServiceName.Update_LIMIT.toString());
 
     vendorLicenseManager.getEntitlementPool(new EntitlementPoolEntity(vlmId, Version.valueOf
-        (versionId), entitlementPoolId), user);
+            (versionId), entitlementPoolId), user);
 
     LimitEntity limitEntity =
-        new MapLimitRequestDtoToLimitEntity()
-            .applyMapping(request, LimitEntity.class);
+            new MapLimitRequestDtoToLimitEntity()
+                    .applyMapping(request, LimitEntity.class);
     limitEntity.setEpLkgId(entitlementPoolId);
     limitEntity.setVendorLicenseModelId(vlmId);
     limitEntity.setId(limitId);
+    limitEntity.setParent(parent);
 
     vendorLicenseManager.updateLimit(limitEntity, user);
 
     mdcDataDebugMessage.debugExitMessage("VLM id", vlmId, "EP id", entitlementPoolId, "limit Id",
-        limitId);
+            limitId);
 
     return Response.ok().build();
   }
 
   /**
-     * Delete entitlement pool.
-     *
-     * @param vlmId               the vlm id
-     * @param entitlementPoolId   the entitlement pool id
-     * @param limitId             the limitId
-     * @param user                the user
-     * @return the response
+   * Delete entitlement pool.
+   *
+   * @param vlmId               the vlm id
+   * @param entitlementPoolId   the entitlement pool id
+   * @param limitId             the limitId
+   * @param user                the user
+   * @return the response
    */
   public Response deleteLimit(String vlmId, String versionId, String entitlementPoolId,
-                               String limitId, String user) {
+                              String limitId, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, Verison Id, EP id, Limit Id", vlmId, versionId, entitlementPoolId, limitId);
 
     MdcUtil.initMdc(LoggerServiceName.Delete_LIMIT.toString());
@@ -170,6 +174,8 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits {
     limitInput.setVendorLicenseModelId(vlmId);
     limitInput.setEpLkgId(entitlementPoolId);
     limitInput.setId(limitId);
+    limitInput.setParent(parent);
+
     vendorLicenseManager.deleteLimit(limitInput, user);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, Verison Id, EP id, Limit Id", vlmId, versionId, entitlementPoolId, limitId);
index 4c85cfa..bedbc92 100644 (file)
@@ -32,7 +32,9 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits {
 
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
   private VendorLicenseManager vendorLicenseManager =
-      VendorLicenseManagerFactory.getInstance().createInterface();
+          VendorLicenseManagerFactory.getInstance().createInterface();
+
+  public static final String parent = "LicenseKeyGroup";
 
   @Override
   public Response createLimit(LimitRequestDto request,
@@ -48,15 +50,16 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits {
             (versionId), licenseKeyGroupId), user);
 
     LimitEntity limitEntity =
-        new MapLimitRequestDtoToLimitEntity()
-            .applyMapping(request, LimitEntity.class);
+            new MapLimitRequestDtoToLimitEntity()
+                    .applyMapping(request, LimitEntity.class);
     limitEntity.setEpLkgId(licenseKeyGroupId);
     limitEntity.setVendorLicenseModelId(vlmId);
+    limitEntity.setParent(parent);
 
     LimitEntity createdLimit = vendorLicenseManager.createLimit(limitEntity, user);
     MapLimitEntityToLimitCreationDto mapper = new MapLimitEntityToLimitCreationDto();
     LimitCreationDto createdLimitDto = mapper.applyMapping(createdLimit, LimitCreationDto
-        .class);
+            .class);
     /*StringWrapperResponse result =
         createdLimit != null ? new StringWrapperResponse(createdLimit.getId())
             : null;*/
@@ -65,24 +68,24 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits {
 
     //return Response.ok(result).build();
     return Response.ok(createdLimitDto != null ? createdLimitDto : null)
-        .build();
+            .build();
   }
 
   @Override
   public Response listLimits(String vlmId, String versionId, String licenseKeyGroupId, String
-      user) {
+          user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId, "LKG id", licenseKeyGroupId);
 
     MdcUtil.initMdc(LoggerServiceName.List_EP.toString());
     vendorLicenseManager.getLicenseKeyGroup(new LicenseKeyGroupEntity(vlmId, Version.valueOf
-        (versionId), licenseKeyGroupId), user);
+            (versionId), licenseKeyGroupId), user);
 
     Collection<LimitEntity> limits =
-        vendorLicenseManager.listLimits(vlmId, Version.valueOf(versionId), licenseKeyGroupId, user);
+            vendorLicenseManager.listLimits(vlmId, Version.valueOf(versionId), licenseKeyGroupId, user);
 
     GenericCollectionWrapper<LimitEntityDto> result = new GenericCollectionWrapper<>();
     MapLimitEntityToLimitDto outputMapper =
-        new MapLimitEntityToLimitDto();
+            new MapLimitEntityToLimitDto();
     for (LimitEntity limit : limits) {
       result.add(outputMapper.applyMapping(limit, LimitEntityDto.class));
     }
@@ -100,24 +103,25 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits {
                               String limitId,
                               String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId, "LKG id", licenseKeyGroupId, "limit Id",
-        limitId);
+            limitId);
 
     MdcUtil.initMdc(LoggerServiceName.Update_LIMIT.toString());
 
     vendorLicenseManager.getLicenseKeyGroup(new LicenseKeyGroupEntity(vlmId, Version.valueOf
-        (versionId), licenseKeyGroupId), user);
+            (versionId), licenseKeyGroupId), user);
 
     LimitEntity limitEntity =
-        new MapLimitRequestDtoToLimitEntity()
-            .applyMapping(request, LimitEntity.class);
+            new MapLimitRequestDtoToLimitEntity()
+                    .applyMapping(request, LimitEntity.class);
     limitEntity.setEpLkgId(licenseKeyGroupId);
     limitEntity.setVendorLicenseModelId(vlmId);
     limitEntity.setId(limitId);
+    limitEntity.setParent(parent);
 
     vendorLicenseManager.updateLimit(limitEntity, user);
 
     mdcDataDebugMessage.debugExitMessage("VLM id", vlmId, "LKG id", licenseKeyGroupId, "limit Id",
-        limitId);
+            limitId);
 
     return Response.ok().build();
   }
@@ -134,20 +138,22 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits {
   public Response deleteLimit(String vlmId, String versionId, String licenseKeyGroupId,
                               String limitId, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, Verison Id, LKG id, Limit Id", vlmId, versionId,
-        licenseKeyGroupId, limitId);
+            licenseKeyGroupId, limitId);
 
     MdcUtil.initMdc(LoggerServiceName.Delete_LIMIT.toString());
     vendorLicenseManager.getLicenseKeyGroup(new LicenseKeyGroupEntity(vlmId, Version.valueOf
-              (versionId), licenseKeyGroupId), user);
+            (versionId), licenseKeyGroupId), user);
 
     LimitEntity limitInput = new LimitEntity();
     limitInput.setVendorLicenseModelId(vlmId);
     limitInput.setEpLkgId(licenseKeyGroupId);
     limitInput.setId(limitId);
+    limitInput.setParent(parent);
+
     vendorLicenseManager.deleteLimit(limitInput, user);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, Verison Id, LKG id, Limit Id", vlmId, versionId,
-        licenseKeyGroupId, limitId);
+            licenseKeyGroupId, limitId);
 
     return Response.ok().build();
   }
@@ -156,11 +162,11 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits {
   public Response getLimit( String vlmId, String versionId, String licenseKeyGroupId,
                             String limitId, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id, Limit Id", vlmId, licenseKeyGroupId,
-        limitId);
+            limitId);
 
     MdcUtil.initMdc(LoggerServiceName.Get_LIMIT.toString());
     vendorLicenseManager.getLicenseKeyGroup(new LicenseKeyGroupEntity(vlmId, Version.valueOf
-        (versionId), licenseKeyGroupId), user);
+            (versionId), licenseKeyGroupId), user);
     LimitEntity epInput = new LimitEntity();
     epInput.setVendorLicenseModelId(vlmId);
     epInput.setVersion(Version.valueOf(versionId));
@@ -169,11 +175,11 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits {
     LimitEntity limit = vendorLicenseManager.getLimit(epInput, user);
 
     LimitEntityDto entitlementPoolEntityDto = limit == null ? null :
-        new MapLimitEntityToLimitDto()
-            .applyMapping(limit, LimitEntityDto.class);
+            new MapLimitEntityToLimitDto()
+                    .applyMapping(limit, LimitEntityDto.class);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, LKG id, Limit Id", vlmId, licenseKeyGroupId,
-        limitId);
+            limitId);
 
     return Response.ok(entitlementPoolEntityDto).build();
   }
index 89d210f..3cabebb 100644 (file)
@@ -24,8 +24,6 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.openecomp.sdc.common.errors.ErrorCode;
 import org.openecomp.sdc.datatypes.error.ErrorMessage;
-import org.openecomp.sdc.vendorsoftwareproduct.types.ComponentValidationResult;
-import org.openecomp.sdc.vendorsoftwareproduct.types.DeploymentFlavorValidationResult;
 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireValidationResult;
 import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
@@ -49,37 +47,37 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 public class MapValidationResponseToDto
-    extends MappingBase<ValidationResponse, ValidationResponseDto> {
+        extends MappingBase<ValidationResponse, ValidationResponseDto> {
   private static Map<String, List<ErrorMessageDto>> mapUploadDataErrors(
-      Map<String, List<ErrorMessage>> uploadDataErrors) {
+          Map<String, List<ErrorMessage>> uploadDataErrors) {
     if (MapUtils.isEmpty(uploadDataErrors)) {
       return null;
     }
     return uploadDataErrors.entrySet().stream().collect(
-        Collectors.toMap(entry -> entry.getKey(), entry -> mapErrorMessages(entry.getValue())));
+            Collectors.toMap(entry -> entry.getKey(), entry -> mapErrorMessages(entry.getValue())));
   }
 
   private static QuestionnaireValidationResultDto mapQuestionnaireValidationResult(
-      QuestionnaireValidationResult questionnaireValidationResult) {
+          QuestionnaireValidationResult questionnaireValidationResult) {
     if (Objects.isNull(questionnaireValidationResult)
-        || Objects.isNull(questionnaireValidationResult.getValidationData())) {
+            || Objects.isNull(questionnaireValidationResult.getValidationData())) {
       return null;
     }
     QuestionnaireValidationResultDto questionnaireValidationResultDto =
-        new QuestionnaireValidationResultDto();
+            new QuestionnaireValidationResultDto();
     questionnaireValidationResultDto.setValid(questionnaireValidationResult.isValid());
 
     Set<CompositionEntityValidationDataDto> validationDataDto = new HashSet<>();
     for(CompositionEntityValidationData validationData : questionnaireValidationResult.getValidationData()){
       validationDataDto.add(new MapCompositionEntityValidationDataToDto().applyMapping
-          (validationData, CompositionEntityValidationDataDto.class));
+              (validationData, CompositionEntityValidationDataDto.class));
     }
 
     questionnaireValidationResultDto.setValidationData(validationDataDto);
     return questionnaireValidationResultDto;
   }
 
-  private static ComponentValidationResultDto mapcomponentValidationResult(
+  /*private static ComponentValidationResultDto mapcomponentValidationResult(
       ComponentValidationResult componentValidationResult) {
     if (componentValidationResult == null) {
       return null;
@@ -115,18 +113,18 @@ public class MapValidationResponseToDto
 
     deploymentFlavorValidationResultDto.setValidationData(validationDataDto);
     return deploymentFlavorValidationResultDto;
-  }
+  }*/
 
   private static List<ErrorMessageDto> mapErrorMessages(List<ErrorMessage> errorMessages) {
     return errorMessages == null ? null : errorMessages.stream().map(
-        errorMessage -> new MapErrorMessageToDto()
-            .applyMapping(errorMessage, ErrorMessageDto.class)).collect(Collectors.toList());
+            errorMessage -> new MapErrorMessageToDto()
+                    .applyMapping(errorMessage, ErrorMessageDto.class)).collect(Collectors.toList());
   }
 
   private static Collection<ErrorCodeDto> mapErrorCodes(Collection<ErrorCode> errorCodes) {
     return CollectionUtils.isEmpty(errorCodes) ? null : errorCodes.stream()
-        .map(errorCode -> new MapErrorCodeToDto().applyMapping(errorCode, ErrorCodeDto.class))
-        .collect(Collectors.toList());
+            .map(errorCode -> new MapErrorCodeToDto().applyMapping(errorCode, ErrorCodeDto.class))
+            .collect(Collectors.toList());
   }
 
   @Override
@@ -136,8 +134,6 @@ public class MapValidationResponseToDto
     target.setLicensingDataErrors(mapErrorCodes(source.getLicensingDataErrors()));
     target.setUploadDataErrors(mapUploadDataErrors(source.getUploadDataErrors()));
     target.setQuestionnaireValidationResult(
-        mapQuestionnaireValidationResult(source.getQuestionnaireValidationResult()));
-    target.setComponentValidationResult(mapcomponentValidationResult(source.getComponentValidationResult()));
-    target.setDeploymentFlavorValidationResult(mapdeploymentFlavorValidationResult(source.getDeploymentFlavorValidationResult()));
+            mapQuestionnaireValidationResult(source.getQuestionnaireValidationResult()));
   }
 }
index a755fe8..1acd445 100644 (file)
@@ -98,7 +98,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
 
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
   private static final Logger logger =
-      LoggerFactory.getLogger(VendorLicenseManagerImpl.class);
+          LoggerFactory.getLogger(VendorLicenseManagerImpl.class);
 
   public VendorLicenseManagerImpl(VersioningManager versioningManager,
                                   VendorLicenseFacade vendorLicenseFacade,
@@ -122,9 +122,9 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
 
 
   private static void sortVlmListByModificationTimeDescOrder(
-      List<VersionedVendorLicenseModel> vendorLicenseModels) {
+          List<VersionedVendorLicenseModel> vendorLicenseModels) {
     vendorLicenseModels.sort((o1, o2) -> o2.getVendorLicenseModel().getWritetimeMicroSeconds()
-        .compareTo(o1.getVendorLicenseModel().getWritetimeMicroSeconds()));
+            .compareTo(o1.getVendorLicenseModel().getWritetimeMicroSeconds()));
   }
 
   @Override
@@ -133,7 +133,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     mdcDataDebugMessage.debugEntryMessage("VLM id", vendorLicenseModelId);
 
     Version newVersion = versioningManager
-        .checkout(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, vendorLicenseModelId, user);
+            .checkout(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, vendorLicenseModelId, user);
 
     ActivityLogEntity activityLogEntity = new ActivityLogEntity(vendorLicenseModelId, String.valueOf(newVersion.getMajor()+1),
             ActivityType.CHECKOUT.toString(), user, true, "", "");
@@ -151,7 +151,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     mdcDataDebugMessage.debugEntryMessage("VLM id", vendorLicenseModelId);
 
     Version newVersion = versioningManager
-        .undoCheckout(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, vendorLicenseModelId, user);
+            .undoCheckout(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, vendorLicenseModelId, user);
     vendorLicenseFacade.updateVlmLastModificationTime(vendorLicenseModelId, newVersion);
 
     mdcDataDebugMessage.debugExitMessage("VLM id", vendorLicenseModelId);
@@ -191,8 +191,8 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     mdcDataDebugMessage.debugEntryMessage(null);
 
     Map<String, VersionInfo> idToVersionsInfo = versioningManager
-        .listEntitiesVersionInfo(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, user,
-            VersionableEntityAction.Read);
+            .listEntitiesVersionInfo(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, user,
+                    VersionableEntityAction.Read);
 
     List<VersionedVendorLicenseModel> vendorLicenseModels = new ArrayList<>();
     for (Map.Entry<String, VersionInfo> entry : idToVersionsInfo.entrySet()) {
@@ -213,7 +213,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
 
       try {
         VendorLicenseModelEntity vlm =
-            vendorLicenseModelDao.get(new VendorLicenseModelEntity(entry.getKey(), version));
+                vendorLicenseModelDao.get(new VendorLicenseModelEntity(entry.getKey(), version));
         if (vlm != null) {
           VersionedVendorLicenseModel versionedVlm = new VersionedVendorLicenseModel();
           versionedVlm.setVendorLicenseModel(vlm);
@@ -221,11 +221,11 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
           vendorLicenseModels.add(versionedVlm);
         }
       }catch(RuntimeException rte){
-      logger.error("Error trying to retrieve vlm["+entry.getKey()+"] version["+version.toString
-          ()+"] " +
-          "message:"+rte
-          .getMessage());
-    }
+        logger.error("Error trying to retrieve vlm["+entry.getKey()+"] version["+version.toString
+                ()+"] " +
+                "message:"+rte
+                .getMessage());
+      }
     }
 
     sortVlmListByModificationTimeDescOrder(vendorLicenseModels);
@@ -253,18 +253,18 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     mdcDataDebugMessage.debugEntryMessage("VLM id", vendorLicenseModelEntity.getId());
 
     Version version = resloveVersion(vendorLicenseModelEntity.getId(),null,
-        getVersionInfo(vendorLicenseModelEntity.getId(), VersionableEntityAction.Write, user),
-        user);
+            getVersionInfo(vendorLicenseModelEntity.getId(), VersionableEntityAction.Write, user),
+            user);
     vendorLicenseModelEntity.setVersion(version);
 
     String existingVendorName = vendorLicenseModelDao.get(vendorLicenseModelEntity).getVendorName();
 
     updateUniqueName(VendorLicenseConstants.UniqueValues.VENDOR_NAME, existingVendorName,
-        vendorLicenseModelEntity.getVendorName());
+            vendorLicenseModelEntity.getVendorName());
     vendorLicenseModelDao.update(vendorLicenseModelEntity);
 
     vendorLicenseFacade
-        .updateVlmLastModificationTime(vendorLicenseModelEntity.getId(), version);
+            .updateVlmLastModificationTime(vendorLicenseModelEntity.getId(), version);
 
     mdcDataDebugMessage.debugExitMessage("VLM id", vendorLicenseModelEntity.getId());
   }
@@ -278,8 +278,8 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
   @Override
   public void deleteVendorLicenseModel(String vlmId, String user) {
     MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-        LoggerTragetServiceName.DELETE_ENTITY, ErrorLevel.ERROR.name(),
-        LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.UNSUPPORTED_OPERATION);
+            LoggerTragetServiceName.DELETE_ENTITY, ErrorLevel.ERROR.name(),
+            LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.UNSUPPORTED_OPERATION);
     throw new UnsupportedOperationException(VendorLicenseConstants.UNSUPPORTED_OPERATION_ERROR);
   }
 
@@ -289,7 +289,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId);
     mdcDataDebugMessage.debugExitMessage("VLM id", vlmId);
     LicenseAgreementEntity licenseAgreementEntity =  createLicenseAgreementForList(vlmId, version,
-        user);
+            user);
 //    return licenseAgreementDao.list(new LicenseAgreementEntity(vlmId, VersioningUtil
 //        .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Read, user), user),
 //        null));
@@ -300,9 +300,9 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
   public LicenseAgreementEntity createLicenseAgreement(LicenseAgreementEntity licenseAgreement,
                                                        String user) {
     mdcDataDebugMessage
-        .debugEntryMessage("VLM id", licenseAgreement.getVendorLicenseModelId());
+            .debugEntryMessage("VLM id", licenseAgreement.getVendorLicenseModelId());
     mdcDataDebugMessage
-        .debugExitMessage("VLM id", licenseAgreement.getVendorLicenseModelId());
+            .debugExitMessage("VLM id", licenseAgreement.getVendorLicenseModelId());
     return vendorLicenseFacade.createLicenseAgreement(licenseAgreement, user);
   }
 
@@ -311,35 +311,35 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
                                      Set<String> addedFeatureGroupIds,
                                      Set<String> removedFeatureGroupIds, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, LA id", licenseAgreement
-        .getVendorLicenseModelId(), licenseAgreement.getId());
+            .getVendorLicenseModelId(), licenseAgreement.getId());
 
     Version version = VersioningUtil.resolveVersion(licenseAgreement.getVersion(),
-        getVersionInfo(licenseAgreement.getVendorLicenseModelId(), VersionableEntityAction.Write,
-            user), user);
+            getVersionInfo(licenseAgreement.getVendorLicenseModelId(), VersionableEntityAction.Write,
+                    user), user);
     licenseAgreement.setVersion(version);
     LicenseAgreementEntity retrieved = licenseAgreementDao.get(licenseAgreement);
     VersioningUtil
-        .validateEntityExistence(retrieved, licenseAgreement, VendorLicenseModelEntity.ENTITY_TYPE);
+            .validateEntityExistence(retrieved, licenseAgreement, VendorLicenseModelEntity.ENTITY_TYPE);
     VersioningUtil.validateContainedEntitiesExistence(new FeatureGroupEntity().getEntityType(),
-        removedFeatureGroupIds, retrieved, retrieved.getFeatureGroupIds());
+            removedFeatureGroupIds, retrieved, retrieved.getFeatureGroupIds());
     VersioningUtil.validateEntitiesExistence(addedFeatureGroupIds,
-        new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(), version, null),
-        featureGroupDao, VendorLicenseModelEntity.ENTITY_TYPE);
+            new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(), version, null),
+            featureGroupDao, VendorLicenseModelEntity.ENTITY_TYPE);
 
     updateUniqueName(VendorLicenseConstants.UniqueValues.LICENSE_AGREEMENT_NAME,
-        retrieved.getName(), licenseAgreement.getName(), licenseAgreement.getVendorLicenseModelId(),
-        licenseAgreement.getVersion().toString());
+            retrieved.getName(), licenseAgreement.getName(), licenseAgreement.getVendorLicenseModelId(),
+            licenseAgreement.getVersion().toString());
     licenseAgreementDao.updateColumnsAndDeltaFeatureGroupIds(licenseAgreement, addedFeatureGroupIds,
-        removedFeatureGroupIds);
+            removedFeatureGroupIds);
 
     addFeatureGroupsToLicenseAgreementRef(addedFeatureGroupIds, licenseAgreement);
     removeFeatureGroupsToLicenseAgreementRef(removedFeatureGroupIds, licenseAgreement);
 
     vendorLicenseFacade
-        .updateVlmLastModificationTime(licenseAgreement.getVendorLicenseModelId(), version);
+            .updateVlmLastModificationTime(licenseAgreement.getVendorLicenseModelId(), version);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, LA id", licenseAgreement
-        .getVendorLicenseModelId(), licenseAgreement.getId());
+            .getVendorLicenseModelId(), licenseAgreement.getId());
   }
 
   @Override
@@ -357,9 +357,9 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     mdcDataDebugMessage.debugEntryMessage("VLM id, LA id", vlmId, licenseAgreementId);
 
     version = VersioningUtil
-        .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Write, user), user);
+            .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Write, user), user);
     LicenseAgreementEntity input =
-        new LicenseAgreementEntity(vlmId, version, licenseAgreementId);
+            new LicenseAgreementEntity(vlmId, version, licenseAgreementId);
     LicenseAgreementEntity retrieved = licenseAgreementDao.get(input);
     VersioningUtil.validateEntityExistence(retrieved, input, VendorLicenseModelEntity.ENTITY_TYPE);
 
@@ -368,11 +368,11 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     licenseAgreementDao.delete(retrieved);
 
     deleteUniqueName(VendorLicenseConstants.UniqueValues.LICENSE_AGREEMENT_NAME,
-        retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(),
-        retrieved.getName());
+            retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(),
+            retrieved.getName());
 
     vendorLicenseFacade
-        .updateVlmLastModificationTime(input.getVendorLicenseModelId(), input.getVersion());
+            .updateVlmLastModificationTime(input.getVendorLicenseModelId(), input.getVersion());
 
     mdcDataDebugMessage.debugExitMessage("VLM id, LA id", vlmId, licenseAgreementId);
   }
@@ -388,7 +388,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
   @Override
   public FeatureGroupEntity createFeatureGroup(FeatureGroupEntity featureGroup, String user) {
     mdcDataDebugMessage
-        .debugEntryMessage("VLM id", featureGroup.getVendorLicenseModelId());
+            .debugEntryMessage("VLM id", featureGroup.getVendorLicenseModelId());
     mdcDataDebugMessage.debugExitMessage("VLM id", featureGroup.getId());
     return vendorLicenseFacade.createFeatureGroup(featureGroup, user);
   }
@@ -401,32 +401,32 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
                                  Set<String> removedEntitlementPools,
                                  String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, FG id", featureGroup
-        .getVendorLicenseModelId(), featureGroup.getId());
+            .getVendorLicenseModelId(), featureGroup.getId());
 
     Version version = VersioningUtil.resolveVersion(featureGroup.getVersion(),
-        getVersionInfo(featureGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, user),
-        user);
+            getVersionInfo(featureGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, user),
+            user);
     featureGroup.setVersion(version);
 
     FeatureGroupEntity retrieved = featureGroupDao.get(featureGroup);
     VersioningUtil
-        .validateEntityExistence(retrieved, featureGroup, VendorLicenseModelEntity.ENTITY_TYPE);
+            .validateEntityExistence(retrieved, featureGroup, VendorLicenseModelEntity.ENTITY_TYPE);
 
     VersioningUtil.validateContainedEntitiesExistence(new LicenseKeyGroupEntity().getEntityType(),
-        removedLicenseKeyGroups, retrieved, retrieved.getLicenseKeyGroupIds());
+            removedLicenseKeyGroups, retrieved, retrieved.getLicenseKeyGroupIds());
     VersioningUtil.validateContainedEntitiesExistence(new EntitlementPoolEntity().getEntityType(),
-        removedEntitlementPools, retrieved, retrieved.getEntitlementPoolIds());
+            removedEntitlementPools, retrieved, retrieved.getEntitlementPoolIds());
 
     VersioningUtil.validateEntitiesExistence(addedLicenseKeyGroups,
-        new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(), version, null),
-        licenseKeyGroupDao, VendorLicenseModelEntity.ENTITY_TYPE);
+            new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(), version, null),
+            licenseKeyGroupDao, VendorLicenseModelEntity.ENTITY_TYPE);
     VersioningUtil.validateEntitiesExistence(addedEntitlementPools,
-        new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(), version, null),
-        entitlementPoolDao, VendorLicenseModelEntity.ENTITY_TYPE);
+            new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(), version, null),
+            entitlementPoolDao, VendorLicenseModelEntity.ENTITY_TYPE);
 
     updateUniqueName(VendorLicenseConstants.UniqueValues.FEATURE_GROUP_NAME,
-        retrieved.getName(), featureGroup.getName(), featureGroup.getVendorLicenseModelId(),
-        featureGroup.getVersion().toString());
+            retrieved.getName(), featureGroup.getName(), featureGroup.getVendorLicenseModelId(),
+            featureGroup.getVersion().toString());
 
     addLicenseKeyGroupsToFeatureGroupsRef(addedLicenseKeyGroups, featureGroup);
     removeLicenseKeyGroupsToFeatureGroupsRef(removedLicenseKeyGroups, featureGroup);
@@ -434,59 +434,59 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     removeEntitlementPoolsToFeatureGroupsRef(removedEntitlementPools, featureGroup);
 
     featureGroupDao.updateFeatureGroup(featureGroup, addedEntitlementPools, removedEntitlementPools,
-        addedLicenseKeyGroups, removedLicenseKeyGroups);
+            addedLicenseKeyGroups, removedLicenseKeyGroups);
 
     vendorLicenseFacade
-        .updateVlmLastModificationTime(featureGroup.getVendorLicenseModelId(), version);
+            .updateVlmLastModificationTime(featureGroup.getVendorLicenseModelId(), version);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, FG id", featureGroup
-        .getVendorLicenseModelId(), featureGroup.getId());
+            .getVendorLicenseModelId(), featureGroup.getId());
   }
 
   @Override
   public FeatureGroupModel getFeatureGroupModel(FeatureGroupEntity featureGroup, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, FG id",
-        featureGroup.getVendorLicenseModelId(), featureGroup.getId());
+            featureGroup.getVendorLicenseModelId(), featureGroup.getId());
 
     mdcDataDebugMessage.debugExitMessage("VLM id, FG id",
-        featureGroup.getVendorLicenseModelId(), featureGroup.getId());
+            featureGroup.getVendorLicenseModelId(), featureGroup.getId());
     return vendorLicenseFacade.getFeatureGroupModel(featureGroup, user);
   }
 
   @Override
   public void deleteFeatureGroup(FeatureGroupEntity featureGroup, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, FG id",
-        featureGroup.getVendorLicenseModelId(), featureGroup.getId());
+            featureGroup.getVendorLicenseModelId(), featureGroup.getId());
 
     Version version = VersioningUtil.resolveVersion(featureGroup.getVersion(),
-        getVersionInfo(featureGroup.getVendorLicenseModelId(), VersionableEntityAction.Write,
-            user), user);
+            getVersionInfo(featureGroup.getVendorLicenseModelId(), VersionableEntityAction.Write,
+                    user), user);
     featureGroup.setVersion(version);
     FeatureGroupEntity retrieved = featureGroupDao.get(featureGroup);
     VersioningUtil
-        .validateEntityExistence(retrieved, featureGroup, VendorLicenseModelEntity.ENTITY_TYPE);
+            .validateEntityExistence(retrieved, featureGroup, VendorLicenseModelEntity.ENTITY_TYPE);
 
     removeLicenseKeyGroupsToFeatureGroupsRef(retrieved.getLicenseKeyGroupIds(), featureGroup);
     removeEntitlementPoolsToFeatureGroupsRef(retrieved.getEntitlementPoolIds(), featureGroup);
 
     for (String licenceAgreementId : retrieved.getReferencingLicenseAgreements()) {
       licenseAgreementDao.removeFeatureGroup(
-          new LicenseAgreementEntity(featureGroup.getVendorLicenseModelId(), version,
-              licenceAgreementId), featureGroup.getId());
+              new LicenseAgreementEntity(featureGroup.getVendorLicenseModelId(), version,
+                      licenceAgreementId), featureGroup.getId());
     }
 
     featureGroupDao.delete(featureGroup);
 
     deleteUniqueName(VendorLicenseConstants.UniqueValues.FEATURE_GROUP_NAME,
-        retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(),
-        retrieved.getName());
+            retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(),
+            retrieved.getName());
 
     vendorLicenseFacade.updateVlmLastModificationTime(featureGroup.getVendorLicenseModelId(),
-        featureGroup.getVersion());
+            featureGroup.getVersion());
 
     mdcDataDebugMessage
-        .debugExitMessage("VLM id, FG id",
-            featureGroup.getVendorLicenseModelId(), featureGroup.getId());
+            .debugExitMessage("VLM id, FG id",
+                    featureGroup.getVendorLicenseModelId(), featureGroup.getId());
   }
 
   @Override
@@ -501,61 +501,61 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
   public EntitlementPoolEntity createEntitlementPool(EntitlementPoolEntity entitlementPool,
                                                      String user) {
     mdcDataDebugMessage
-        .debugEntryMessage("VLM id", entitlementPool.getVendorLicenseModelId());
+            .debugEntryMessage("VLM id", entitlementPool.getVendorLicenseModelId());
     mdcDataDebugMessage
-        .debugExitMessage("VLM id", entitlementPool.getVendorLicenseModelId());
+            .debugExitMessage("VLM id", entitlementPool.getVendorLicenseModelId());
 
     entitlementPool.setStartDate(entitlementPool.getStartDate() != null ? (entitlementPool
-        .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z"
-        : null) : null);
+            .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z"
+            : null) : null);
     entitlementPool.setExpiryDate(entitlementPool.getExpiryDate() != null ? (entitlementPool
-        .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z"
-        : null) : null);
+            .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z"
+            : null) : null);
 
     validateCreateDate(entitlementPool.getStartDate(), entitlementPool.getExpiryDate(),
-        entitlementPool.getVendorLicenseModelId());
+            entitlementPool.getVendorLicenseModelId());
     return vendorLicenseFacade.createEntitlementPool(entitlementPool, user);
   }
 
   private void validateCreateDate(String startDate, String expiryDate, String vendorLicenseModelId){
     mdcDataDebugMessage.debugEntryMessage("Start date and end date", startDate
-        +"   "+expiryDate);
+            +"   "+expiryDate);
 
     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'");
 
     if(startDate != null && expiryDate != null) {
       if (LocalDate.parse(startDate, formatter).atStartOfDay().isBefore
-          (LocalDate.now().atStartOfDay()) || LocalDate.parse(expiryDate, formatter).atStartOfDay()
+              (LocalDate.now().atStartOfDay()) || LocalDate.parse(expiryDate, formatter).atStartOfDay()
               .isEqual(LocalDate.parse(startDate, formatter).atStartOfDay()) || LocalDate
-          .parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) {
+              .parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) {
         MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-            LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
-            LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
+                LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
+                LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
         throw new CoreException(
-            new InvalidDateErrorBuilder(vendorLicenseModelId)
-                .build());
+                new InvalidDateErrorBuilder(vendorLicenseModelId)
+                        .build());
       }
     }
 
     if(startDate != null && expiryDate == null) {
       if (LocalDate.parse(startDate, formatter).atStartOfDay().isBefore
-          (LocalDate.now().atStartOfDay())) {
+              (LocalDate.now().atStartOfDay())) {
         MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-            LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
-            LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
+                LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
+                LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
         throw new CoreException(
-            new InvalidDateErrorBuilder(vendorLicenseModelId)
-                .build());
+                new InvalidDateErrorBuilder(vendorLicenseModelId)
+                        .build());
       }
     }
 
     if(startDate == null && expiryDate != null) {
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
+              LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
       throw new CoreException(
-          new InvalidDateErrorBuilder(vendorLicenseModelId)
-              .build());
+              new InvalidDateErrorBuilder(vendorLicenseModelId)
+                      .build());
 
     }
 
@@ -564,30 +564,30 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
 
   private void validateUpdateDate(String startDate, String expiryDate, String vendorLicenseModelId){
     mdcDataDebugMessage.debugEntryMessage("Start date and end date", startDate
-        +"   "+ expiryDate);
+            +"   "+ expiryDate);
 
     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'");
 
     if(startDate != null && expiryDate != null) {
       if (LocalDate.parse(expiryDate, formatter).atStartOfDay()
-          .isEqual(LocalDate.parse(startDate, formatter).atStartOfDay()) ||
-          LocalDate.parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) {
+              .isEqual(LocalDate.parse(startDate, formatter).atStartOfDay()) ||
+              LocalDate.parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) {
         MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-            LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
-            LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
+                LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
+                LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
         throw new CoreException(
-            new InvalidDateErrorBuilder(vendorLicenseModelId)
-                .build());
+                new InvalidDateErrorBuilder(vendorLicenseModelId)
+                        .build());
       }
     }
 
     if(startDate == null && expiryDate != null) {
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
+              LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE);
       throw new CoreException(
-          new InvalidDateErrorBuilder(vendorLicenseModelId)
-              .build());
+              new InvalidDateErrorBuilder(vendorLicenseModelId)
+                      .build());
 
     }
 
@@ -597,77 +597,77 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
   @Override
   public void updateEntitlementPool(EntitlementPoolEntity entitlementPool, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, EP id", entitlementPool
-        .getVendorLicenseModelId(), entitlementPool.getId());
+            .getVendorLicenseModelId(), entitlementPool.getId());
 
     entitlementPool.setStartDate(entitlementPool.getStartDate() != null ? (entitlementPool
-        .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z"
-        : null) : null);
+            .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z"
+            : null) : null);
     entitlementPool.setExpiryDate(entitlementPool.getExpiryDate() != null ? (entitlementPool
-        .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z"
-        : null) : null);
+            .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z"
+            : null) : null);
 
     validateUpdateDate(entitlementPool.getStartDate(), entitlementPool.getExpiryDate(),
-        entitlementPool.getVendorLicenseModelId());
+            entitlementPool.getVendorLicenseModelId());
     Version version = VersioningUtil.resolveVersion(entitlementPool.getVersion(),
-        getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write,
-            user), user);
+            getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write,
+                    user), user);
     vendorLicenseFacade
-        .updateVlmLastModificationTime(entitlementPool.getVendorLicenseModelId(), version);
+            .updateVlmLastModificationTime(entitlementPool.getVendorLicenseModelId(), version);
     vendorLicenseFacade.updateEntitlementPool(entitlementPool, user);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, EP id", entitlementPool
-        .getVendorLicenseModelId(), entitlementPool.getId());
+            .getVendorLicenseModelId(), entitlementPool.getId());
   }
 
   @Override
   public EntitlementPoolEntity getEntitlementPool(EntitlementPoolEntity entitlementPool,
                                                   String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, EP id", entitlementPool
-        .getVendorLicenseModelId(), entitlementPool.getId());
+            .getVendorLicenseModelId(), entitlementPool.getId());
 
     entitlementPool.setVersion(VersioningUtil.resolveVersion(entitlementPool.getVersion(),
-        getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Read,
-            user), user));
+            getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Read,
+                    user), user));
 
     EntitlementPoolEntity retrieved = entitlementPoolDao.get(entitlementPool);
     VersioningUtil
-        .validateEntityExistence(retrieved, entitlementPool, VendorLicenseModelEntity.ENTITY_TYPE);
+            .validateEntityExistence(retrieved, entitlementPool, VendorLicenseModelEntity.ENTITY_TYPE);
 
     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'");
     DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
     if(retrieved.getStartDate() != null){
       retrieved.setStartDate(LocalDate.parse(retrieved.getStartDate(),formatter).format
-          (targetFormatter));
+              (targetFormatter));
     }
 
     if(retrieved.getExpiryDate() != null){
       retrieved.setExpiryDate(LocalDate.parse(retrieved.getExpiryDate(),formatter).format
-          (targetFormatter));
+              (targetFormatter));
     }
 
     mdcDataDebugMessage.debugExitMessage("VLM id, EP id", entitlementPool
-        .getVendorLicenseModelId(), entitlementPool.getId());
+            .getVendorLicenseModelId(), entitlementPool.getId());
     return retrieved;
   }
 
   @Override
   public void deleteEntitlementPool(EntitlementPoolEntity entitlementPool, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, EP id", entitlementPool
-        .getVendorLicenseModelId(), entitlementPool.getId());
+            .getVendorLicenseModelId(), entitlementPool.getId());
 
     Version version = VersioningUtil.resolveVersion(entitlementPool.getVersion(),
-        getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write,
-            user), user);
+            getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write,
+                    user), user);
     entitlementPool.setVersion(version);
 
     EntitlementPoolEntity retrieved = entitlementPoolDao.get(entitlementPool);
     VersioningUtil
-        .validateEntityExistence(retrieved, entitlementPool, VendorLicenseModelEntity.ENTITY_TYPE);
+            .validateEntityExistence(retrieved, entitlementPool, VendorLicenseModelEntity.ENTITY_TYPE);
 
     for (String referencingFeatureGroupId : retrieved.getReferencingFeatureGroups()) {
       featureGroupDao.removeEntitlementPool(
-          new FeatureGroupEntity(entitlementPool.getVendorLicenseModelId(), version,
-              referencingFeatureGroupId), entitlementPool.getId());
+              new FeatureGroupEntity(entitlementPool.getVendorLicenseModelId(), version,
+                      referencingFeatureGroupId), entitlementPool.getId());
     }
 
     deleteChildLimits(entitlementPool.getVendorLicenseModelId(), entitlementPool.getVersion(), entitlementPool.getId(), user);
@@ -675,22 +675,22 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     entitlementPoolDao.delete(entitlementPool);
 
     deleteUniqueName(VendorLicenseConstants.UniqueValues.ENTITLEMENT_POOL_NAME,
-        retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(),
-        retrieved.getName());
+            retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(),
+            retrieved.getName());
 
     vendorLicenseFacade.updateVlmLastModificationTime(entitlementPool.getVendorLicenseModelId(),
-        entitlementPool.getVersion());
+            entitlementPool.getVersion());
 
     mdcDataDebugMessage.debugExitMessage("VLM id, EP id", entitlementPool
-        .getVendorLicenseModelId(), entitlementPool.getId());
+            .getVendorLicenseModelId(), entitlementPool.getId());
   }
 
   protected void deleteChildLimits(String vlmId, Version version, String epLkgId, String user) {
-      Optional<Collection<LimitEntity>> limitEntities = Optional.ofNullable(
-              listLimits(vlmId, version, epLkgId, user));
-      limitEntities.ifPresent(entities->
-              entities.forEach(entity->
-                      deleteLimit(entity, user)));
+    Optional<Collection<LimitEntity>> limitEntities = Optional.ofNullable(
+            listLimits(vlmId, version, epLkgId, user));
+    limitEntities.ifPresent(entities->
+            entities.forEach(entity->
+                    deleteLimit(entity, user)));
   }
 
   @Override
@@ -705,87 +705,87 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
   public LicenseKeyGroupEntity createLicenseKeyGroup(LicenseKeyGroupEntity licenseKeyGroup,
                                                      String user) {
     mdcDataDebugMessage
-        .debugEntryMessage("VLM id", licenseKeyGroup.getVendorLicenseModelId());
+            .debugEntryMessage("VLM id", licenseKeyGroup.getVendorLicenseModelId());
 
     mdcDataDebugMessage.debugExitMessage("VLM id", licenseKeyGroup
-        .getVendorLicenseModelId());
+            .getVendorLicenseModelId());
 
     licenseKeyGroup.setStartDate(licenseKeyGroup.getStartDate() != null ? (licenseKeyGroup
-        .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z"
-        : null) : null);
+            .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z"
+            : null) : null);
     licenseKeyGroup.setExpiryDate(licenseKeyGroup.getExpiryDate() != null ? (licenseKeyGroup
-        .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z"
-        : null) : null);
+            .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z"
+            : null) : null);
 
     validateCreateDate(licenseKeyGroup.getStartDate(), licenseKeyGroup.getExpiryDate(),
-        licenseKeyGroup.getVendorLicenseModelId());
+            licenseKeyGroup.getVendorLicenseModelId());
     return vendorLicenseFacade.createLicenseKeyGroup(licenseKeyGroup, user);
   }
 
   @Override
   public void updateLicenseKeyGroup(LicenseKeyGroupEntity licenseKeyGroup, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id", licenseKeyGroup
-        .getVendorLicenseModelId(), licenseKeyGroup.getId());
+            .getVendorLicenseModelId(), licenseKeyGroup.getId());
 
     licenseKeyGroup.setStartDate(licenseKeyGroup.getStartDate() != null ? (licenseKeyGroup
-        .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z"
-        : null) : null);
+            .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z"
+            : null) : null);
     licenseKeyGroup.setExpiryDate(licenseKeyGroup.getExpiryDate() != null ? (licenseKeyGroup
-        .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z"
-        : null) : null);
+            .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z"
+            : null) : null);
 
     validateUpdateDate(licenseKeyGroup.getStartDate(), licenseKeyGroup.getExpiryDate(),
-        licenseKeyGroup.getVendorLicenseModelId());
+            licenseKeyGroup.getVendorLicenseModelId());
 
     Version version = VersioningUtil.resolveVersion(licenseKeyGroup.getVersion(),
-        getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write,
-            user), user);
+            getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write,
+                    user), user);
     vendorLicenseFacade
-        .updateVlmLastModificationTime(licenseKeyGroup.getVendorLicenseModelId(), version);
+            .updateVlmLastModificationTime(licenseKeyGroup.getVendorLicenseModelId(), version);
 
     vendorLicenseFacade.updateLicenseKeyGroup(licenseKeyGroup, user);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, LKG id", licenseKeyGroup
-        .getVendorLicenseModelId(), licenseKeyGroup.getId());
+            .getVendorLicenseModelId(), licenseKeyGroup.getId());
   }
 
   @Override
   public LicenseKeyGroupEntity getLicenseKeyGroup(LicenseKeyGroupEntity licenseKeyGroup,
                                                   String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id", licenseKeyGroup
-        .getVendorLicenseModelId(), licenseKeyGroup.getId());
+            .getVendorLicenseModelId(), licenseKeyGroup.getId());
 
     licenseKeyGroup.setVersion(VersioningUtil.resolveVersion(licenseKeyGroup.getVersion(),
-        getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Read,
-            user), user));
+            getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Read,
+                    user), user));
 
     LicenseKeyGroupEntity retrieved = licenseKeyGroupDao.get(licenseKeyGroup);
     VersioningUtil
-        .validateEntityExistence(retrieved, licenseKeyGroup, VendorLicenseModelEntity.ENTITY_TYPE);
+            .validateEntityExistence(retrieved, licenseKeyGroup, VendorLicenseModelEntity.ENTITY_TYPE);
 
     mdcDataDebugMessage.debugExitMessage("VLM id, LKG id", licenseKeyGroup
-        .getVendorLicenseModelId(), licenseKeyGroup.getId());
+            .getVendorLicenseModelId(), licenseKeyGroup.getId());
     return retrieved;
   }
 
   @Override
   public void deleteLicenseKeyGroup(LicenseKeyGroupEntity licenseKeyGroup, String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id", licenseKeyGroup
-        .getVendorLicenseModelId(), licenseKeyGroup.getId());
+            .getVendorLicenseModelId(), licenseKeyGroup.getId());
 
     Version version = VersioningUtil.resolveVersion(licenseKeyGroup.getVersion(),
-        getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write,
-            user), user);
+            getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write,
+                    user), user);
     licenseKeyGroup.setVersion(version);
 
     LicenseKeyGroupEntity retrieved = licenseKeyGroupDao.get(licenseKeyGroup);
     VersioningUtil
-        .validateEntityExistence(retrieved, licenseKeyGroup, VendorLicenseModelEntity.ENTITY_TYPE);
+            .validateEntityExistence(retrieved, licenseKeyGroup, VendorLicenseModelEntity.ENTITY_TYPE);
 
     for (String referencingFeatureGroupId : retrieved.getReferencingFeatureGroups()) {
       featureGroupDao.removeLicenseKeyGroup(
-          new FeatureGroupEntity(licenseKeyGroup.getVendorLicenseModelId(), version,
-              referencingFeatureGroupId), licenseKeyGroup.getId());
+              new FeatureGroupEntity(licenseKeyGroup.getVendorLicenseModelId(), version,
+                      referencingFeatureGroupId), licenseKeyGroup.getId());
     }
 
     deleteChildLimits(licenseKeyGroup.getVendorLicenseModelId(), licenseKeyGroup.getVersion(), licenseKeyGroup.getId(), user);
@@ -793,51 +793,53 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     licenseKeyGroupDao.delete(licenseKeyGroup);
 
     deleteUniqueName(VendorLicenseConstants.UniqueValues.LICENSE_KEY_GROUP_NAME,
-        retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(),
-        retrieved.getName());
+            retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(),
+            retrieved.getName());
 
     vendorLicenseFacade.updateVlmLastModificationTime(licenseKeyGroup.getVendorLicenseModelId(),
-        licenseKeyGroup.getVersion());
+            licenseKeyGroup.getVersion());
 
     mdcDataDebugMessage.debugExitMessage("VLM id, LKG id", licenseKeyGroup
-        .getVendorLicenseModelId(), licenseKeyGroup.getId());
+            .getVendorLicenseModelId(), licenseKeyGroup.getId());
   }
 
   @Override
   public LimitEntity createLimit(LimitEntity limit, String user) {
     mdcDataDebugMessage
-        .debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit
-            .getEpLkgId());
+            .debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit
+                    .getEpLkgId());
     mdcDataDebugMessage
-        .debugExitMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit
-            .getEpLkgId());
+            .debugExitMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit
+                    .getEpLkgId());
     validateLimit(limit, user);
-    return vendorLicenseFacade.createLimit(limit, user);
+    LimitEntity createdLimit = vendorLicenseFacade.createLimit(limit, user);
+    updateParentForLimit(limit,user);
+    return createdLimit;
   }
 
   private void validateLimit(LimitEntity limit, String user) {
     Version version = VersioningUtil.resolveVersion(limit.getVersion(),
-        getVersionInfo(limit.getVendorLicenseModelId(), VersionableEntityAction.Write,
-            user), user);
+            getVersionInfo(limit.getVendorLicenseModelId(), VersionableEntityAction.Write,
+                    user), user);
     Collection<LimitEntity> limitList = listLimits(limit.getVendorLicenseModelId(),version
-        ,limit.getEpLkgId(), user);
+            ,limit.getEpLkgId(), user);
 
     if (!isLimitNameUnique(limitList,limit.getName(), limit.getType(), limit.getId())) {
       final ErrorCode duplicateLimitNameErrorBuilder =
-           LimitErrorBuilder.getDuplicateNameErrorbuilder(limit.getName(), limit.getType().name());
+              LimitErrorBuilder.getDuplicateNameErrorbuilder(limit.getName(), limit.getType().name());
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerServiceName.Create_LIMIT.toString(), ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(),
-          duplicateLimitNameErrorBuilder.message());
+              LoggerServiceName.Create_LIMIT.toString(), ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(),
+              duplicateLimitNameErrorBuilder.message());
       throw new CoreException(duplicateLimitNameErrorBuilder);
     }
   }
 
   private boolean isLimitNameUnique(Collection<LimitEntity> limitList, String name, LimitType
-      type, String id) {
+          type, String id) {
     for (LimitEntity limit : limitList) {
       if(limit.getName().equalsIgnoreCase(name) &&
-          limit.getType().name().equalsIgnoreCase(type.name())) {
+              limit.getType().name().equalsIgnoreCase(type.name())) {
         if(id != null && limit.getId().equals(id)){
           continue;
         }
@@ -865,9 +867,9 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
                     user), user);
     limitEntity.setVersion(version);
 
-    if(!isLimitPresent(limitEntity)){
+    if ( !isLimitPresent(limitEntity)) {
       VersioningUtil
-          .validateEntityExistence(null, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE);
+              .validateEntityExistence(null, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE);
     }
     LimitEntity retrieved = limitDao.get(limitEntity);
     VersioningUtil
@@ -878,6 +880,8 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
     vendorLicenseFacade.updateVlmLastModificationTime(limitEntity.getVendorLicenseModelId(),
             limitEntity.getVersion());
 
+    updateParentForLimit(limitEntity,user);
+
     mdcDataDebugMessage.debugExitMessage("VLM id, EP id, Limit Id", limitEntity
             .getVendorLicenseModelId(), limitEntity.getEpLkgId(), limitEntity.getId());
   }
@@ -885,14 +889,15 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
   @Override
   public void updateLimit(LimitEntity limit, String user) {
     mdcDataDebugMessage
-        .debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit
-            .getEpLkgId());
+            .debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit
+                    .getEpLkgId());
     getLimit(limit,user);
     validateLimit(limit, user);
     vendorLicenseFacade.updateLimit(limit, user);
+    updateParentForLimit(limit,user);
     mdcDataDebugMessage
-        .debugExitMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit
-            .getEpLkgId());
+            .debugExitMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit
+                    .getEpLkgId());
   }
 
   private boolean isLimitPresent(LimitEntity limit) {
@@ -901,108 +906,135 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
 
   @Override
   public LimitEntity getLimit(LimitEntity limitEntity,
-                                                  String user) {
+                              String user) {
     mdcDataDebugMessage.debugEntryMessage("VLM id", limitEntity.getVendorLicenseModelId(),
-        "EP/LKGId", limitEntity.getEpLkgId());
+            "EP/LKGId", limitEntity.getEpLkgId());
 
     limitEntity.setVersion(VersioningUtil.resolveVersion(limitEntity.getVersion(),
-        getVersionInfo(limitEntity.getVendorLicenseModelId(), VersionableEntityAction.Read,
-            user), user));
+            getVersionInfo(limitEntity.getVendorLicenseModelId(), VersionableEntityAction.Read,
+                    user), user));
     if(!isLimitPresent(limitEntity)){
       VersioningUtil
-          .validateEntityExistence(null, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE);
+              .validateEntityExistence(null, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE);
     }
     LimitEntity retrieved = limitDao.get(limitEntity);
     VersioningUtil
-        .validateEntityExistence(retrieved, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE);
+            .validateEntityExistence(retrieved, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE);
 
     mdcDataDebugMessage.debugExitMessage("VLM id", limitEntity.getVendorLicenseModelId(),
-        "EP/LKGId", limitEntity.getEpLkgId());
+            "EP/LKGId", limitEntity.getEpLkgId());
     return retrieved;
   }
 
+  /**
+   * update Parent of limit (EP/LKG) versionuuid when limit is modified so that limit updates are
+   * captured in VLM XML
+   * @param limit
+   * @param user
+   */
+  private void updateParentForLimit(LimitEntity limit, String user) {
+    mdcDataDebugMessage.debugEntryMessage("VLM id", limit.getVendorLicenseModelId(),
+            "EP/LKGId", limit.getEpLkgId(), "Limit Parent ", limit.getParent());
+    if ("EntitlementPool".equals(limit.getParent()) ) {
+      EntitlementPoolEntity entitlementPoolEntity =
+              entitlementPoolDao.get(new EntitlementPoolEntity(limit.getVendorLicenseModelId(),
+                      limit.getVersion(), limit.getEpLkgId()));
+      vendorLicenseFacade.updateEntitlementPool(entitlementPoolEntity, user);
+    }
+
+    if ("LicenseKeyGroup".equals(limit.getParent())) {
+      LicenseKeyGroupEntity licenseKeyGroupEntity = licenseKeyGroupDao.get(
+              new LicenseKeyGroupEntity(limit.getVendorLicenseModelId(), limit.getVersion(),
+                      limit.getEpLkgId()));
+      vendorLicenseFacade.updateLicenseKeyGroup(licenseKeyGroupEntity, user);
+    }
+
+    mdcDataDebugMessage.debugEntryMessage("VLM id", limit.getVendorLicenseModelId(),
+            "EP/LKGId", limit.getEpLkgId(), "Limit Parent ", limit.getParent());
+  }
+
   protected void addFeatureGroupsToLicenseAgreementRef(Set<String> featureGroupIds,
-                                                     LicenseAgreementEntity licenseAgreement) {
+                                                       LicenseAgreementEntity licenseAgreement) {
     if (featureGroupIds != null) {
       for (String featureGroupId : featureGroupIds) {
         featureGroupDao.addReferencingLicenseAgreement(
-            new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(),
-                licenseAgreement.getVersion(), featureGroupId), licenseAgreement.getId());
+                new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(),
+                        licenseAgreement.getVersion(), featureGroupId), licenseAgreement.getId());
       }
     }
   }
 
   protected void removeFeatureGroupsToLicenseAgreementRef(Set<String> featureGroupIds,
-                                                        LicenseAgreementEntity licenseAgreement) {
+                                                          LicenseAgreementEntity licenseAgreement) {
     if (featureGroupIds != null) {
       for (String featureGroupId : featureGroupIds) {
         featureGroupDao.removeReferencingLicenseAgreement(
-            new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(),
-                licenseAgreement.getVersion(), featureGroupId), licenseAgreement.getId());
+                new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(),
+                        licenseAgreement.getVersion(), featureGroupId), licenseAgreement.getId());
       }
     }
   }
 
   protected void addLicenseKeyGroupsToFeatureGroupsRef(Set<String> licenseKeyGroupIds,
-                                                     FeatureGroupEntity featureGroup) {
+                                                       FeatureGroupEntity featureGroup) {
     if (licenseKeyGroupIds != null) {
       for (String licenseKeyGroupId : licenseKeyGroupIds) {
         licenseKeyGroupDao.addReferencingFeatureGroup(
-            new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(),
-                featureGroup.getVersion(), licenseKeyGroupId), featureGroup.getId());
+                new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(),
+                        featureGroup.getVersion(), licenseKeyGroupId), featureGroup.getId());
       }
     }
   }
 
   protected void removeLicenseKeyGroupsToFeatureGroupsRef(Set<String> licenseKeyGroupIds,
-                                                        FeatureGroupEntity featureGroup) {
+                                                          FeatureGroupEntity featureGroup) {
     if (licenseKeyGroupIds != null) {
       for (String licenseKeyGroupId : licenseKeyGroupIds) {
         licenseKeyGroupDao.removeReferencingFeatureGroup(
-            new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(),
-                featureGroup.getVersion(), licenseKeyGroupId), featureGroup.getId());
+                new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(),
+                        featureGroup.getVersion(), licenseKeyGroupId), featureGroup.getId());
       }
     }
   }
 
   protected void addEntitlementPoolsToFeatureGroupsRef(Set<String> entitlementPoolIds,
-                                                     FeatureGroupEntity featureGroup) {
+                                                       FeatureGroupEntity featureGroup) {
     if (entitlementPoolIds != null) {
       for (String entitlementPoolId : entitlementPoolIds) {
         entitlementPoolDao.addReferencingFeatureGroup(
-            new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(),
-                featureGroup.getVersion(), entitlementPoolId), featureGroup.getId());
+                new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(),
+                        featureGroup.getVersion(), entitlementPoolId), featureGroup.getId());
       }
     }
   }
 
   protected void removeEntitlementPoolsToFeatureGroupsRef(Set<String> entitlementPoolIds,
-                                                        FeatureGroupEntity featureGroup) {
+                                                          FeatureGroupEntity featureGroup) {
     if (entitlementPoolIds != null) {
       for (String entitlementPoolId : entitlementPoolIds) {
         entitlementPoolDao.removeReferencingFeatureGroup(
-            new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(),
-                featureGroup.getVersion(), entitlementPoolId), featureGroup.getId());
+                new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(),
+                        featureGroup.getVersion(), entitlementPoolId), featureGroup.getId());
       }
     }
   }
 
   protected VersionInfo getVersionInfo(String vendorLicenseModelId, VersionableEntityAction action,
-                                     String user) {
+                                       String user) {
     return vendorLicenseFacade.getVersionInfo(vendorLicenseModelId, action, user);
   }
 
   protected LicenseAgreementEntity createLicenseAgreementForList(String vlmId, Version version,
                                                                  String user) {
     return new LicenseAgreementEntity(vlmId, VersioningUtil
-        .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Read, user), user),
-        null);
+            .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Read, user), user),
+            null);
   }
 
   protected void updateUniqueName(String uniqueValueType ,String oldName, String newName,String ...
-      context) {
+          context) {
     UniqueValueUtil
-        .updateUniqueValue(uniqueValueType, oldName, newName,context);
+            .updateUniqueValue(uniqueValueType, oldName, newName,context);
   }
 
   protected void deleteUniqueName(String uniqueValueType,String ... uniqueCombination) {
@@ -1011,8 +1043,8 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager {
 
   protected Version resloveVersion(String vlmId,Version requestedVersion, VersionInfo versionInfo,
                                    String user){
-       return VersioningUtil.resolveVersion(null,
-        getVersionInfo(vlmId, VersionableEntityAction.Write, user), user);
+    return VersioningUtil.resolveVersion(null,
+            getVersionInfo(vlmId, VersionableEntityAction.Write, user), user);
   }
 
 }
index 97476a2..f0a9f8f 100644 (file)
@@ -9,24 +9,25 @@ public class DeploymentFlavorErrorBuilder {
     private static final String CREATE_DEPLOYMENT_FLAVOR_NOT_ALLOWED_IN_HEAT_ONBOARDING_MSG=
             "Deployment Flavor cannot be added for VSPs onboarded with HEAT.";
     private static final String FEATURE_GROUP_NOT_EXIST_FOR_VSP_MSG=
-        "Invalid request,Feature Group with Id %s does not exist for Vsp with Id %s and version " +
-            "%s.";
+            "Invalid request,Feature Group with Id %s does not exist for Vsp with Id %s and version " +
+                    "%s.";
     private static final String INVALID_COMPONENT_COMPUTE_ASSOCIATION_MSG
-        ="Invalid request,for valid association please provide ComponentId for Compute Flavor";
+            ="Invalid request,for valid association please provide ComponentId for Compute Flavor";
     private static final String SAME_VFC_ASSOCIATION_MORE_THAN_ONCE_NOT_ALLOWED_MSG=
-        "Invalid Request,Same Vfc cannot be associated more than once.";
+            "Invalid Request,Same Vfc cannot be associated more than once.";
     private static final String DUPLICATE_DEPLOYMENT_FLAVOR_MODEL_NOT_ALLOWED_MSG =
-        "Invalid request, Deployment Flavor with model %s already exists for Vsp with Id %s.";
+            "Invalid request, Deployment Flavor with model %s already exists for Vsp with Id %s.";
     private static final String DEPLOYMENT_FLAVOUR_NAME_FORMAT_MSG = "Field does not conform to predefined criteria"
             + ": name : must match %s";
     private static final String INVALID_COMPUTE_FLAVOR_ID_MSG =
-        "Invalid request, Compute Flavor with Id %s does not exist for VFC with Id %s.";
+            "Invalid request, Compute Flavor with Id %s does not exist for VFC with Id %s.";
     private static final String INVALID_COMPONENT_COMPUTE_ASSOCIATION_ERROR_MSG="VSP cannot be " +
-        "submitted with an invalid Deployment Flavor. All Deployment Flavor should have atleast a VFC included with it's required Compute needs. Please fix the Deployment Flavor and re-submit the VSP.";
+            "submitted with an invalid Deployment Flavor. All Deployment Flavor should have atleast a VFC included with it's required Compute needs. " +
+            "Please fix the Deployment Flavor %s and re-submit the VSP.";
 
     private static final String FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR_MSG = "VSP cannot be " +
-        "submitted with an invalid Deployment Flavor. All Deployment Flavor should have " +
-        "FeatureGroup. Please fix the Deployment Flavor and re-submit the VSP.";
+            "submitted with an invalid Deployment Flavor. All Deployment Flavor should have " +
+            "FeatureGroup. Please fix the Deployment Flavor %s and re-submit the VSP.";
 
     public static ErrorCode getAddDeploymentNotSupportedHeatOnboardErrorBuilder(){
         ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder();
@@ -37,12 +38,12 @@ public class DeploymentFlavorErrorBuilder {
     }
 
     public static ErrorCode getFeatureGroupNotexistErrorBuilder( String featureGroupId, String
-        VspId, Version activeVersion){
+            VspId, Version activeVersion){
         ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder();
         builder.withId(VendorSoftwareProductErrorCodes.FEATURE_GROUP_NOT_EXIST_FOR_VSP);
         builder.withCategory(ErrorCategory.APPLICATION);
         builder.withMessage(String.format(FEATURE_GROUP_NOT_EXIST_FOR_VSP_MSG,featureGroupId,
-            VspId,activeVersion.toString()));
+                VspId,activeVersion.toString()));
         return builder.build();
     }
 
@@ -70,28 +71,28 @@ public class DeploymentFlavorErrorBuilder {
         return builder.build();
     }
     public static ErrorCode getInvalidComputeIdErrorBuilder( String computeFlavorId, String
-        vfcId){
+            vfcId){
         ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder();
         builder.withId(VendorSoftwareProductErrorCodes.INVALID_COMPUTE_FLAVOR_ID);
         builder.withCategory(ErrorCategory.APPLICATION);
         builder.withMessage(String.format(INVALID_COMPUTE_FLAVOR_ID_MSG,computeFlavorId,
-            vfcId));
+                vfcId));
         return builder.build();
     }
 
-    public static ErrorCode getInvalidComponentComputeAssociationErrorBuilder(){
+    public static ErrorCode getInvalidComponentComputeAssociationErrorBuilder(String model){
         ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder();
         builder.withId(VendorSoftwareProductErrorCodes.INVALID_COMPONENT_COMPUTE_ASSOCIATION);
         builder.withCategory(ErrorCategory.APPLICATION);
-        builder.withMessage(String.format(INVALID_COMPONENT_COMPUTE_ASSOCIATION_ERROR_MSG));
+        builder.withMessage(String.format(INVALID_COMPONENT_COMPUTE_ASSOCIATION_ERROR_MSG, model));
         return builder.build();
     }
 
-    public static ErrorCode getFeatureGroupMandatoryErrorBuilder(){
+    public static ErrorCode getFeatureGroupMandatoryErrorBuilder(String model){
         ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder();
         builder.withId(VendorSoftwareProductErrorCodes.FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR);
         builder.withCategory(ErrorCategory.APPLICATION);
-        builder.withMessage(String.format(FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR_MSG));
+        builder.withMessage(String.format(FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR_MSG, model));
         return builder.build();
     }
 
index b54570f..9daec08 100644 (file)
@@ -12,7 +12,6 @@ import org.openecomp.sdc.logging.types.LoggerConstants;
 import org.openecomp.sdc.logging.types.LoggerErrorCode;
 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
 import org.openecomp.sdc.vendorsoftwareproduct.ImageManager;
-import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
@@ -45,9 +44,9 @@ public class ImageManagerImpl implements ImageManager {
   private CompositionEntityDataManager compositionEntityDataManager;
 
   public ImageManagerImpl(
-      VendorSoftwareProductInfoDao vspInfoDao,
-      ImageDao imageDao,
-      CompositionEntityDataManager compositionEntityDataManager
+          VendorSoftwareProductInfoDao vspInfoDao,
+          ImageDao imageDao,
+          CompositionEntityDataManager compositionEntityDataManager
 
   ) {
 
@@ -67,18 +66,17 @@ public class ImageManagerImpl implements ImageManager {
     if (!isManual) {
 
       ErrorCode errorCode = NotSupportedHeatOnboardMethodErrorBuilder
-          .getAddImageNotSupportedHeatOnboardMethodErrorBuilder();
+              .getAddImageNotSupportedHeatOnboardMethodErrorBuilder();
 
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.CREATE_IMAGE, ErrorLevel.ERROR.name(),
-          errorCode.id(), errorCode.message());
+              LoggerTragetServiceName.CREATE_IMAGE, ErrorLevel.ERROR.name(),
+              errorCode.id(), errorCode.message());
 
       throw new CoreException(errorCode);
     }
 
-    Collection<ImageEntity> vfcImageList = listImages(imageEntity.getVspId() ,
-        imageEntity.getVersion(), imageEntity.getComponentId());
-    validateVfcImage(isManual, imageEntity, vfcImageList, LoggerTragetServiceName.CREATE_IMAGE);
+    /*Collection<ImageEntity> vfcImageList = listImages(imageEntity.getVspId() ,
+        imageEntity.getVersion(), imageEntity.getComponentId());*/
     compositionEntityDataManager.createImage(imageEntity);
     return imageEntity;
   }
@@ -115,10 +113,10 @@ public class ImageManagerImpl implements ImageManager {
 
   @Override
   public CompositionEntityResponse<Image> getImage(String vspId, Version version, String
-      componentId, String imageId, String user) {
+          componentId, String imageId, String user) {
 
     mdcDataDebugMessage.debugEntryMessage("VSP id, componentId, image id", vspId, componentId,
-        imageId);
+            imageId);
 
     /*version = VersioningUtil
         .resolveVersion(version, getVersionInfo(vspId, VersionableEntityAction.Read, user));*/
@@ -139,14 +137,14 @@ public class ImageManagerImpl implements ImageManager {
     response.setSchema(getImageCompositionSchema(schemaInput));
 
     mdcDataDebugMessage.debugExitMessage("VSP id, componentId, image id", vspId, componentId,
-        imageId);
+            imageId);
 
     return response;
   }
 
   @Override
   public QuestionnaireResponse getImageQuestionnaire(String vspId, Version version, String
-      componentId, String imageId, String user) {
+          componentId, String imageId, String user) {
     mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
 
     /*version = VersioningUtil
@@ -168,9 +166,9 @@ public class ImageManagerImpl implements ImageManager {
 
   @Override
   public void deleteImage(String vspId, Version version, String componentId, String imageId, String
-      user) {
+          user) {
     mdcDataDebugMessage
-        .debugEntryMessage("VSP id, component id", vspId, componentId, imageId);
+            .debugEntryMessage("VSP id, component id", vspId, componentId, imageId);
 
     /*Version activeVersion =
         getVersionInfo(vspId, VersionableEntityAction.Write, user).getActiveVersion();
@@ -178,19 +176,19 @@ public class ImageManagerImpl implements ImageManager {
     ImageEntity imageEntity = getImageEntity(vspId, version, componentId, imageId);
     if (!vspInfoDao.isManual(vspId, version)) {
       final ErrorCode deleteImageErrorBuilder =
-          NotSupportedHeatOnboardMethodErrorBuilder
-              .getDelImageNotSupportedHeatOnboardMethodErrorBuilder();
+              NotSupportedHeatOnboardMethodErrorBuilder
+                      .getDelImageNotSupportedHeatOnboardMethodErrorBuilder();
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.DELETE_IMAGE, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.PERMISSION_ERROR.getErrorCode(),
-          deleteImageErrorBuilder.message());
+              LoggerTragetServiceName.DELETE_IMAGE, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.PERMISSION_ERROR.getErrorCode(),
+              deleteImageErrorBuilder.message());
       throw new CoreException(deleteImageErrorBuilder);
     }
     if (imageEntity != null) {
       imageDao.delete(new ImageEntity(vspId, version, componentId, imageId));
     }
     mdcDataDebugMessage
-        .debugExitMessage("VSP id, component id", vspId, componentId, imageId);
+            .debugExitMessage("VSP id, component id", vspId, componentId, imageId);
   }
 
   private void validateHeatVspImageUpdate(String name, String value, String retrivedValue) {
@@ -198,12 +196,12 @@ public class ImageManagerImpl implements ImageManager {
     if(value != null && !value.equals(retrivedValue)) {
 
       final ErrorCode updateHeatImageErrorBuilder =
-          ImageErrorBuilder.getImageHeatReadOnlyErrorBuilder(name);
+              ImageErrorBuilder.getImageHeatReadOnlyErrorBuilder(name);
 
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.PERMISSION_ERROR.getErrorCode(),
-          updateHeatImageErrorBuilder.message());
+              LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.PERMISSION_ERROR.getErrorCode(),
+              updateHeatImageErrorBuilder.message());
       throw new CoreException(updateHeatImageErrorBuilder);
     }
   }
@@ -211,33 +209,32 @@ public class ImageManagerImpl implements ImageManager {
   @Override
   public CompositionEntityValidationData updateImage(ImageEntity image, String user) {
     mdcDataDebugMessage
-        .debugEntryMessage("VSP id, component id", image.getVspId(), image.getComponentId(),
-            image.getId());
+            .debugEntryMessage("VSP id, component id", image.getVspId(), image.getComponentId(),
+                    image.getId());
 
     /*Version activeVersion =
         getVersionInfo(image.getVspId(), VersionableEntityAction.Write, user).getActiveVersion();
     image.setVersion(activeVersion);*/
     boolean isManual = vspInfoDao.isManual(image.getVspId(), image.getVersion());
     ImageEntity retrieved = getImageEntity(image.getVspId(), image.getVersion(), image.getComponentId(),
-        image.getId());
+            image.getId());
 
     if(!isManual) {
       final Image imageCompositionData = image.getImageCompositionData();
       final String fileName = imageCompositionData.getFileName();
       //final String format = imageCompositionData.getFormat();
       validateHeatVspImageUpdate("fileName", fileName, retrieved.getImageCompositionData()
-          .getFileName());
+              .getFileName());
       /*validateHeatVspImageUpdate("format", format, retrieved.getImageCompositionData()
           .getFormat());*/
     }
 
     Collection<ImageEntity> vfcImageList = listImages(image.getVspId() ,
-        image.getVersion(), image.getComponentId());
+            image.getVersion(), image.getComponentId());
 
     //Set to null so that retrieved object is equal to one in list and gets removed.
     retrieved.setQuestionnaireData(null);
     vfcImageList.remove(retrieved);
-    validateVfcImage(isManual, image, vfcImageList, LoggerTragetServiceName.UPDATE_IMAGE);
 
     //Set format to default value in order to handle FTL validation when image format is null
     /*if(image.getImageCompositionData().getFormat() == null)
@@ -247,23 +244,23 @@ public class ImageManagerImpl implements ImageManager {
     schemaInput.setImage(image.getImageCompositionData());
 
     CompositionEntityValidationData validationData = compositionEntityDataManager
-        .validateEntity(image, SchemaTemplateContext.composition, schemaInput);
+            .validateEntity(image, SchemaTemplateContext.composition, schemaInput);
     if (CollectionUtils.isEmpty(validationData.getErrors())) {
       imageDao.update(image);
     }
 
     mdcDataDebugMessage
-        .debugExitMessage("VSP id, component id", image.getVspId(), image.getComponentId(),
-            image.getId());
+            .debugExitMessage("VSP id, component id", image.getVspId(), image.getComponentId(),
+                    image.getId());
 
     return validationData;
   }
 
   @Override
   public void updateImageQuestionnaire(String vspId, Version version, String componentId, String
-      imageId, String questionnaireData, String user) {
+          imageId, String questionnaireData, String user) {
     mdcDataDebugMessage.debugEntryMessage("VSP id, component id, imageId", vspId, componentId,
-        imageId);
+            imageId);
 
     getImageEntity(vspId, version, componentId, imageId);
 
@@ -281,15 +278,15 @@ public class ImageManagerImpl implements ImageManager {
     } catch (IllegalArgumentException exception) {
       ErrorCode errorCode = ImageErrorBuilder.getInvalidImageFormatErrorBuilder();
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(),
-          errorCode.id(), errorCode.message() );
+              LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(),
+              errorCode.id(), errorCode.message() );
       throw new CoreException(errorCode);
     }
 
     //Validate Format is read only for HEAT Onboarding
     if (!vspInfoDao.isManual(vspId, version)) {
       final QuestionnaireResponse imageQuestionnaire = getImageQuestionnaire(vspId, version,
-          componentId, imageId, user);
+              componentId, imageId, user);
       final String data = imageQuestionnaire.getData();
       if (data != null) {
         String retrivedFormat = JsonUtil.json2Object(data, ImageDetails.class).getFormat();
@@ -299,19 +296,19 @@ public class ImageManagerImpl implements ImageManager {
 
     if(!isImageVersionUnique(vspId, version, componentId, imageId, image, user))
     {
-        ErrorCode errorCode = ImageErrorBuilder.getDuplicateImageVersionErrorBuilder(image
-                .getVersion(), componentId);
+      ErrorCode errorCode = ImageErrorBuilder.getDuplicateImageVersionErrorBuilder(image
+              .getVersion(), componentId);
 
-        MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-                LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(),
-                errorCode.id(),errorCode.message());
+      MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
+              LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(),
+              errorCode.id(),errorCode.message());
 
-        throw new CoreException(errorCode);
+      throw new CoreException(errorCode);
     }
 
     imageDao.updateQuestionnaireData(vspId, version, componentId, imageId, questionnaireData);
     mdcDataDebugMessage.debugExitMessage("VSP id, component id, imageId", vspId, componentId,
-        imageId);
+            imageId);
   }
 
   private boolean isImageVersionUnique(String vspId, Version version, String componentId, String imageId,
@@ -320,15 +317,15 @@ public class ImageManagerImpl implements ImageManager {
     boolean isPresent = true;
     if(image!=null && image.getVersion()!=null)
     {
-        Collection<ImageEntity> imageEntities = imageDao.list(new ImageEntity(vspId, version, componentId, null));
-        if(CollectionUtils.isNotEmpty(imageEntities))
-        {
-            imageEntities = imageEntities.stream().filter(imageEntity -> image.getVersion().trim().equalsIgnoreCase(
-                    getImageVersion(vspId, version, componentId, imageEntity, user))
-                    && !imageEntity.getId().equals(imageId)).collect(Collectors.toList());
-
-            isPresent = CollectionUtils.isEmpty(imageEntities);
-        }
+      Collection<ImageEntity> imageEntities = imageDao.list(new ImageEntity(vspId, version, componentId, null));
+      if(CollectionUtils.isNotEmpty(imageEntities))
+      {
+        imageEntities = imageEntities.stream().filter(imageEntity -> image.getVersion().trim().equalsIgnoreCase(
+                getImageVersion(vspId, version, componentId, imageEntity, user))
+                && !imageEntity.getId().equals(imageId)).collect(Collectors.toList());
+
+        isPresent = CollectionUtils.isEmpty(imageEntities);
+      }
     }
 
     return isPresent;
@@ -336,11 +333,11 @@ public class ImageManagerImpl implements ImageManager {
 
   private String getImageVersion(String vspId, Version version, String componentId, ImageEntity imageEntity, String user)
   {
-      QuestionnaireResponse imageQuestionnaire = getImageQuestionnaire(vspId, version,
-              componentId, imageEntity.getId(), user);
-      ImageDetails imageDetails = JsonUtil.json2Object(imageQuestionnaire.getData(), ImageDetails.class);
+    QuestionnaireResponse imageQuestionnaire = getImageQuestionnaire(vspId, version,
+            componentId, imageEntity.getId(), user);
+    ImageDetails imageDetails = JsonUtil.json2Object(imageQuestionnaire.getData(), ImageDetails.class);
 
-      return imageDetails==null?null:imageDetails.getVersion()!=null?imageDetails.getVersion().trim():null;
+    return imageDetails==null?null:imageDetails.getVersion()!=null?imageDetails.getVersion().trim():null;
   }
   private ImageEntity getImageEntity(String vspId, Version version, String componentId,
                                      String imageId) {
@@ -349,7 +346,7 @@ public class ImageManagerImpl implements ImageManager {
     ImageEntity imageEntity = imageDao.get(new ImageEntity(vspId, version, componentId, imageId));
 
     VersioningUtil.validateEntityExistence(imageEntity, new ImageEntity(vspId, version, componentId,
-        imageId), VspDetails.ENTITY_TYPE);
+            imageId), VspDetails.ENTITY_TYPE);
     return imageEntity;
   }
 
@@ -363,26 +360,12 @@ public class ImageManagerImpl implements ImageManager {
     return false;
   }
 
-  private void validateVfcImage(boolean isManual, ImageEntity image,
-                                Collection<ImageEntity> vfcImageList, String event) {
-    if (isImageNameDuplicate(vfcImageList,image.getImageCompositionData().getFileName())) {
-      ErrorCode errorCode = ImageErrorBuilder.getDuplicateImageNameErrorBuilder(image
-          .getImageCompositionData().getFileName(), image.getComponentId());
-
-      MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-              event, ErrorLevel.ERROR.name(),
-          errorCode.id(),errorCode.message());
-
-      throw new CoreException(errorCode);
-    }
-  }
-
   protected String getImageCompositionSchema(SchemaTemplateInput schemaInput) {
     mdcDataDebugMessage.debugEntryMessage(null, null);
     mdcDataDebugMessage.debugExitMessage(null, null);
     return SchemaGenerator
-        .generate(SchemaTemplateContext.composition, CompositionEntityType.image,
-            schemaInput);
+            .generate(SchemaTemplateContext.composition, CompositionEntityType.image,
+                    schemaInput);
   }
 
   protected String getImageQuestionnaireSchema(SchemaTemplateInput schemaInput) {
@@ -390,7 +373,7 @@ public class ImageManagerImpl implements ImageManager {
 
     mdcDataDebugMessage.debugExitMessage(null, null);
     return SchemaGenerator
-        .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image,
-            schemaInput);
+            .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image,
+                    schemaInput);
   }
 }
index de33ce8..5163cfd 100644 (file)
@@ -94,8 +94,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionEntityDataMana
 import org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.InformationArtifactGenerator;
 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
 import org.openecomp.sdc.vendorsoftwareproduct.services.schemagenerator.SchemaGenerator;
-import org.openecomp.sdc.vendorsoftwareproduct.types.ComponentValidationResult;
-import org.openecomp.sdc.vendorsoftwareproduct.types.DeploymentFlavorValidationResult;
 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireValidationResult;
 import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse;
@@ -130,7 +128,6 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -148,7 +145,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
   private static final Logger logger =
-      LoggerFactory.getLogger(VendorSoftwareProductManagerImpl.class);
+          LoggerFactory.getLogger(VendorSoftwareProductManagerImpl.class);
 
   private OrchestrationTemplateDao orchestrationTemplateDao;
   private VendorSoftwareProductInfoDao vspInfoDao;
@@ -178,7 +175,6 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
    * @param enrichedServiceModelDao      the enriched service model dao
    * @param healingManager               the healing manager
    * @param licenseArtifactsService      the license artifacts service
-   * @param compositionEntityDataManager the composition entity data manager
    * @param informationArtifactGenerator the information artifact generator
    * @param packageInfoDao               the package info dao
    * @param activityLogManager           the activity log manager
@@ -186,21 +182,21 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
    * @param nicDao                       the nic dao
    */
   public VendorSoftwareProductManagerImpl(
-      VersioningManager versioningManager,
-      VendorSoftwareProductDao vendorSoftwareProductDao,
-      OrchestrationTemplateDao orchestrationTemplateDataDao,
-      VendorSoftwareProductInfoDao vspInfoDao,
-      VendorLicenseFacade vendorLicenseFacade,
-      ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao,
-      EnrichedServiceModelDao<ToscaServiceModel, ServiceElement> enrichedServiceModelDao,
-      HealingManager healingManager,
-      VendorLicenseArtifactsService licenseArtifactsService,
-      InformationArtifactGenerator informationArtifactGenerator,
-      PackageInfoDao packageInfoDao,
-      ActivityLogManager activityLogManager,
-      DeploymentFlavorDao deploymentFlavorDao,
-      NicDao nicDao,
-      ManualVspToscaManager manualVspToscaManager) {
+          VersioningManager versioningManager,
+          VendorSoftwareProductDao vendorSoftwareProductDao,
+          OrchestrationTemplateDao orchestrationTemplateDataDao,
+          VendorSoftwareProductInfoDao vspInfoDao,
+          VendorLicenseFacade vendorLicenseFacade,
+          ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao,
+          EnrichedServiceModelDao<ToscaServiceModel, ServiceElement> enrichedServiceModelDao,
+          HealingManager healingManager,
+          VendorLicenseArtifactsService licenseArtifactsService,
+          InformationArtifactGenerator informationArtifactGenerator,
+          PackageInfoDao packageInfoDao,
+          ActivityLogManager activityLogManager,
+          DeploymentFlavorDao deploymentFlavorDao,
+          NicDao nicDao,
+          ManualVspToscaManager manualVspToscaManager) {
     this.versioningManager = versioningManager;
     this.vendorSoftwareProductDao = vendorSoftwareProductDao;
     this.orchestrationTemplateDao = orchestrationTemplateDataDao;
@@ -222,11 +218,11 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
   private void registerToVersioning() {
     vendorSoftwareProductDao.registerVersioning(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE);
     serviceModelDao.registerVersioning(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE);
     enrichedServiceModelDao.registerVersioning(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE);
   }
 
   @Override
@@ -235,13 +231,13 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     MDC.put(LoggerConstants.SERVICE_NAME, LoggerServiceName.Checkout_Entity.toString());
 
     Version newVersion = versioningManager
-        .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-            vendorSoftwareProductId, user);
+            .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+                    vendorSoftwareProductId, user);
 
     if (newVersion != null) {
       ActivityLogEntity activityLogEntity =
-          new ActivityLogEntity(vendorSoftwareProductId, String.valueOf(newVersion.getMajor() + 1),
-              ActivityType.CHECKOUT.toString(), user, true, "", "");
+              new ActivityLogEntity(vendorSoftwareProductId, String.valueOf(newVersion.getMajor() + 1),
+                      ActivityType.CHECKOUT.toString(), user, true, "", "");
       activityLogManager.addActionLog(activityLogEntity, user);
     }
 
@@ -255,18 +251,18 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     mdcDataDebugMessage.debugEntryMessage("VSP id", vendorSoftwareProductId);
 
     Version version =
-        getVersionInfo(vendorSoftwareProductId, VersionableEntityAction.Read, user)
-            .getActiveVersion();
+            getVersionInfo(vendorSoftwareProductId, VersionableEntityAction.Read, user)
+                    .getActiveVersion();
     String preVspName = vspInfoDao
-        .get(new VspDetails(vendorSoftwareProductId, version)).getName();
+            .get(new VspDetails(vendorSoftwareProductId, version)).getName();
 
     Version newVersion = versioningManager.undoCheckout(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-        vendorSoftwareProductId, user);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+            vendorSoftwareProductId, user);
 
     String postVspName = vspInfoDao
-        .get(new VspDetails(vendorSoftwareProductId, newVersion))
-        .getName();
+            .get(new VspDetails(vendorSoftwareProductId, newVersion))
+            .getName();
 
     updateUniqueName(preVspName, postVspName);
 
@@ -280,13 +276,13 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     mdcDataDebugMessage.debugEntryMessage("VSP id", vendorSoftwareProductId);
 
     Version newVersion = versioningManager.checkin(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-        vendorSoftwareProductId, user, null);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+            vendorSoftwareProductId, user, null);
 
     if (newVersion != null) {
       ActivityLogEntity activityLogEntity =
-          new ActivityLogEntity(vendorSoftwareProductId, String.valueOf(newVersion.getMajor() + 1),
-              ActivityType.CHECKIN.toString(), user, true, "", "");
+              new ActivityLogEntity(vendorSoftwareProductId, String.valueOf(newVersion.getMajor() + 1),
+                      ActivityType.CHECKIN.toString(), user, true, "", "");
       activityLogManager.addActionLog(activityLogEntity, user);
     }
 
@@ -303,53 +299,66 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     VspDetails vspDetails = getVsp(vspId, version, user);
     UploadDataEntity uploadData = orchestrationTemplateDao.getOrchestrationTemplate(vspId, version);
     ToscaServiceModel serviceModel =
-        serviceModelDao.getServiceModel(vspId, vspDetails.getVersion());
+            serviceModelDao.getServiceModel(vspId, vspDetails.getVersion());
 
     ValidationResponse validationResponse = new ValidationResponse();
     validationResponse
-        .setVspErrors(validateCompletedVendorSoftwareProduct(vspDetails, uploadData, serviceModel),
-            LoggerServiceName.Submit_VSP, LoggerTragetServiceName.SUBMIT_VSP);
+            .setVspErrors(validateCompletedVendorSoftwareProduct(vspDetails, uploadData, serviceModel),
+                    LoggerServiceName.Submit_VSP, LoggerTragetServiceName.SUBMIT_VSP);
 
     if (isCyclicDependencyInComponents(vspId, vspDetails.getVersion())) {
       Collection<ErrorCode> vspErrors = validationResponse.getVspErrors() == null
-          ? new ArrayList<>()
-          : validationResponse.getVspErrors();
+              ? new ArrayList<>()
+              : validationResponse.getVspErrors();
       vspErrors.add(ComponentDependencyModelErrorBuilder
-          .getcyclicDependencyComponentErrorBuilder());
+              .getcyclicDependencyComponentErrorBuilder());
       validationResponse.setVspErrors(vspErrors, LoggerServiceName.Submit_VSP,
-          LoggerTragetServiceName.SUBMIT_VSP);
+              LoggerTragetServiceName.SUBMIT_VSP);
     }
 
     validationResponse.setLicensingDataErrors(validateLicensingData(vspDetails));
     validationResponse
-        .setUploadDataErrors(validateUploadData(uploadData), LoggerServiceName.Submit_VSP,
-            LoggerTragetServiceName.SUBMIT_VSP);
+            .setUploadDataErrors(validateUploadData(uploadData), LoggerServiceName.Submit_VSP,
+                    LoggerTragetServiceName.SUBMIT_VSP);
 
     validationResponse.setQuestionnaireValidationResult(
-        validateQuestionnaire(vspDetails.getId(), vspDetails.getVersion(), vspDetails
-            .getOnboardingMethod()));
+            validateQuestionnaire(vspDetails.getId(), vspDetails.getVersion(), vspDetails
+                    .getOnboardingMethod()));
 
     if (vspDetails.getOnboardingMethod().equals("Manual")) {
-      validationResponse.setDeploymentFlavorValidationResult(
-          deploymentFlavorValidation(vspDetails.getId(), vspDetails.getVersion()));
-      validationResponse.setComponentValidationResult(
-          componentValidation(vspDetails.getId(), vspDetails.getVersion()));
+      Collection<ErrorCode> deploymentFlavourValidationErrList = deploymentFlavorValidation(vspDetails.getId(), vspDetails.getVersion());
+      if (validationResponse.getVspErrors() != null) {
+        if(deploymentFlavourValidationErrList != null)
+          validationResponse.getVspErrors().addAll(deploymentFlavourValidationErrList);
+      } else {
+        validationResponse.setVspErrors(deploymentFlavourValidationErrList, LoggerServiceName.Submit_VSP,
+                LoggerTragetServiceName.SUBMIT_VSP);
+      }
+
+      Set<CompositionEntityValidationData> compositionEntityValidationData = componentValidation(vspDetails.getId(), vspDetails.getVersion());
+      if (validationResponse.getQuestionnaireValidationResult() != null) {
+        if(!CollectionUtils.isEmpty(compositionEntityValidationData))
+          validationResponse.getQuestionnaireValidationResult().getValidationData().addAll(compositionEntityValidationData);
+      } else {
+        validationResponse.setQuestionnaireValidationResult(CollectionUtils.isEmpty(compositionEntityValidationData) ? null :
+                new QuestionnaireValidationResult(compositionEntityValidationData));
+      }
+
       //Generate Tosca service model for Manual Onboarding flow
       VspModelInfo vspModelInfo = manualVspToscaManager.gatherVspInformation(vspId, version, user);
       serviceModel = manualVspToscaManager.generateToscaModel(vspModelInfo);
     }
-
     validationResponse.setCompilationErrors(
-        compile(vspId, vspDetails.getVersion(), serviceModel),
-        LoggerServiceName.Submit_VSP, LoggerTragetServiceName.SUBMIT_VSP);
+            compile(vspId, vspDetails.getVersion(), serviceModel),
+            LoggerServiceName.Submit_VSP, LoggerTragetServiceName.SUBMIT_VSP);
 
     if (validationResponse.isValid()) {
       Version newVersion = versioningManager.submit(
-          VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-          vspId, user, null);
+              VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+              vspId, user, null);
       ActivityLogEntity activityLogEntity = new ActivityLogEntity(vspDetails.getId(), String
-          .valueOf(newVersion.getMajor()),
-          ActivityType.SUBMIT.toString(), user, true, "", "");
+              .valueOf(newVersion.getMajor()),
+              ActivityType.SUBMIT.toString(), user, true, "", "");
       activityLogManager.addActionLog(activityLogEntity, user);
     }
 
@@ -360,7 +369,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
   private boolean isCyclicDependencyInComponents(String vendorSoftwareProductId,
                                                  Version version) {
     final Collection<ComponentDependencyModelEntity> componentDependencyModelEntities =
-        vendorSoftwareProductDao.listComponentDependencies(vendorSoftwareProductId, version);
+            vendorSoftwareProductDao.listComponentDependencies(vendorSoftwareProductId, version);
     ComponentDependencyTracker dependencyTracker = new ComponentDependencyTracker();
 
     for (ComponentDependencyModelEntity entity : componentDependencyModelEntities) {
@@ -369,76 +378,60 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     return dependencyTracker.isCyclicDependencyPresent();
   }
 
-  private DeploymentFlavorValidationResult deploymentFlavorValidation(String vspId,
-                                                                      Version version) {
+  private Collection<ErrorCode> deploymentFlavorValidation(String vspId,
+                                                           Version version) {
     mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
     Set<CompositionEntityValidationData> validationData = new HashSet<>();
+    Collection<ErrorCode> errorCodeList = new ArrayList<>();
     Collection<DeploymentFlavorEntity> deploymentFlavors =
-        vendorSoftwareProductDao.listDeploymentFlavors(vspId, version);
+            vendorSoftwareProductDao.listDeploymentFlavors(vspId, version);
     if (!CollectionUtils.isEmpty(deploymentFlavors)) {
       deploymentFlavors.forEach(deploymentFlavor -> {
         DeploymentFlavorEntity deployment = vendorSoftwareProductDao.getDeploymentFlavor(vspId,
-            version, deploymentFlavor.getId());
+                version, deploymentFlavor.getId());
         DeploymentFlavor deploymentlocalFlavor = deployment.getDeploymentFlavorCompositionData();
         if (deploymentlocalFlavor != null) {
           if (deploymentlocalFlavor.getFeatureGroupId() == null ) {
             ErrorCode deploymentFlavorErrorBuilder = DeploymentFlavorErrorBuilder.
-                getFeatureGroupMandatoryErrorBuilder();
-            CompositionEntityValidationData compositionEntityValidationData = new
-                CompositionEntityValidationData(CompositionEntityType.deployment,
-                deploymentFlavor.getId());
-            compositionEntityValidationData.setEntityName(deploymentlocalFlavor.getModel());
-            List<String> errors = new ArrayList<>();
-            errors.add(deploymentFlavorErrorBuilder.message());
-            compositionEntityValidationData.setErrors(errors);
-            validationData.add(compositionEntityValidationData);
+                    getFeatureGroupMandatoryErrorBuilder(deploymentlocalFlavor.getModel());
+            errorCodeList.add(deploymentFlavorErrorBuilder);
           }
           List<ComponentComputeAssociation> componetComputeAssociations = new ArrayList<>();
           componetComputeAssociations = deploymentlocalFlavor.getComponentComputeAssociations();
           if (CollectionUtils.isEmpty(componetComputeAssociations)) {
             CompositionEntityValidationData compositionEntityValidationData = new
-                CompositionEntityValidationData(CompositionEntityType.deployment,deploymentFlavor
-                .getId());
+                    CompositionEntityValidationData(CompositionEntityType.deployment,deploymentFlavor
+                    .getId());
             compositionEntityValidationData.setEntityName(deployment
-                .getDeploymentFlavorCompositionData().getModel());
+                    .getDeploymentFlavorCompositionData().getModel());
             ErrorCode deploymentFlavorErrorBuilder = DeploymentFlavorErrorBuilder
-                .getInvalidComponentComputeAssociationErrorBuilder();
-            List<String> errors = new ArrayList<>();
-            errors.add(deploymentFlavorErrorBuilder.message());
-            compositionEntityValidationData.setErrors(errors);
-            validationData.add(compositionEntityValidationData);
+                    .getInvalidComponentComputeAssociationErrorBuilder(deploymentlocalFlavor.getModel());
+
+            errorCodeList.add(deploymentFlavorErrorBuilder);
           } else {
             componetComputeAssociations.forEach(componetComputeAssociation -> {
               if (componetComputeAssociation == null
-                  || !(componetComputeAssociation.getComponentId() != null
+                      || !(componetComputeAssociation.getComponentId() != null
                       && componetComputeAssociation.getComputeFlavorId() != null)) {
                 CompositionEntityValidationData compositionEntityValidationData = new
-                    CompositionEntityValidationData(CompositionEntityType.deployment,
-                    deploymentFlavor.getId());
+                        CompositionEntityValidationData(CompositionEntityType.deployment,
+                        deploymentFlavor.getId());
                 compositionEntityValidationData.setEntityName(deployment
-                    .getDeploymentFlavorCompositionData().getModel());
+                        .getDeploymentFlavorCompositionData().getModel());
                 ErrorCode deploymentFlavorErrorBuilder = DeploymentFlavorErrorBuilder
-                    .getInvalidComponentComputeAssociationErrorBuilder();
-                List<String> errors = new ArrayList<>();
-                errors.add(deploymentFlavorErrorBuilder.message());
-                compositionEntityValidationData.setErrors(errors);
-                validationData.add(compositionEntityValidationData);
+                        .getInvalidComponentComputeAssociationErrorBuilder(deploymentlocalFlavor.getModel());
+
+                errorCodeList.add(deploymentFlavorErrorBuilder);
               }
             });
           }
         }
       });
     }
-    if (CollectionUtils.isEmpty(validationData)) {
-      return null;
-    }
-    DeploymentFlavorValidationResult deploymentFlavorValidationResult = new
-        DeploymentFlavorValidationResult(validationData);
-    return deploymentFlavorValidationResult;
-
+    return errorCodeList;
   }
 
-  private ComponentValidationResult componentValidation(String vspId, Version version) {
+  private Set<CompositionEntityValidationData> componentValidation(String vspId, Version version) {
     mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
 
     Set<CompositionEntityValidationData> validationData = new HashSet<>();
@@ -450,12 +443,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
       });
     }
-    if (CollectionUtils.isEmpty(validationData)) {
-      return null;
-    }
-    ComponentValidationResult componentValidationResult =
-        new ComponentValidationResult(validationData);
-    return componentValidationResult;
+
+    return validationData;
   }
 
   private void validateNic(String vspId, Version version,
@@ -465,15 +454,15 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     if (CollectionUtils.isNotEmpty(nics)) {
       nics.forEach(nicEntity -> {
         NicEntity nic = nicDao.get(new NicEntity(vspId, version, component.getId(),
-            nicEntity.getId()));
+                nicEntity.getId()));
         NetworkType networkType = nic.getNicCompositionData().getNetworkType();
         String networkId = nic.getNicCompositionData().getNetworkId();
         if (networkType.equals(NetworkType.Internal) && networkId == null) {
           CompositionEntityValidationData compositionEntityValidationData = new
-              CompositionEntityValidationData(CompositionEntityType.nic, nic.getId());
+                  CompositionEntityValidationData(CompositionEntityType.nic, nic.getId());
           compositionEntityValidationData.setEntityName(nic.getNicCompositionData().getName());
           ErrorCode nicInternalNetworkErrorBuilder = NicInternalNetworkErrorBuilder
-              .getNicNullNetworkIdInternalNetworkIdErrorBuilder();
+                  .getNicNullNetworkIdInternalNetworkIdErrorBuilder();
           List<String> errors = new ArrayList<>();
           errors.add(nicInternalNetworkErrorBuilder.message());
           compositionEntityValidationData.setErrors(errors);
@@ -487,14 +476,14 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
                              Set<CompositionEntityValidationData> validationData,
                              ComponentEntity component) {
     Collection<ImageEntity> images = vendorSoftwareProductDao.listImages(vspId,version,
-        component.getId());
+            component.getId());
     if (CollectionUtils.isEmpty(images)) {
       CompositionEntityValidationData compositionEntityValidationData = new
-          CompositionEntityValidationData(component.getType(),component.getId());
+              CompositionEntityValidationData(component.getType(),component.getId());
       compositionEntityValidationData.setEntityName(component.getComponentCompositionData()
-          .getDisplayName());
+              .getDisplayName());
       ErrorCode vfcMissingImageErrorBuilder =
-          ComponentErrorBuilder.VfcMissingImageErrorBuilder();
+              ComponentErrorBuilder.VfcMissingImageErrorBuilder();
       List<String> errors = new ArrayList<>();
       errors.add(vfcMissingImageErrorBuilder.message());
       compositionEntityValidationData.setErrors(errors);
@@ -505,7 +494,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
 
   private List<ErrorCode> validateCompletedVendorSoftwareProduct(
-      VspDetails vspDetails, UploadDataEntity uploadData, Object serviceModel) {
+          VspDetails vspDetails, UploadDataEntity uploadData, Object serviceModel) {
 
     List<ErrorCode> errors = new ArrayList<>();
 
@@ -527,10 +516,10 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     if (vspDetails.getOnboardingMethod().equals("Manual")) {
       //Manual Onboarding specific validations
       Collection<DeploymentFlavorEntity> deploymentFlavorEntities = vendorSoftwareProductDao
-          .listDeploymentFlavors(vspDetails.getId(), vspDetails.getVersion());
+              .listDeploymentFlavors(vspDetails.getId(), vspDetails.getVersion());
       if (CollectionUtils.isEmpty(deploymentFlavorEntities) ) {
         ErrorCode vspMissingDeploymentFlavorErrorBuilder =
-            VendorSoftwareProductInvalidErrorBuilder.VspMissingDeploymentFlavorErrorBuilder();
+                VendorSoftwareProductInvalidErrorBuilder.VspMissingDeploymentFlavorErrorBuilder();
         errors.add(vspMissingDeploymentFlavorErrorBuilder);
       }
       errors.addAll(validateMandatoryLicenseFields(vspDetails));
@@ -539,10 +528,10 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
       if (uploadData == null || uploadData.getContentData() == null || serviceModel == null) {
         errors.add(VendorSoftwareProductInvalidErrorBuilder
                 .VendorSoftwareProductMissingServiceModelErrorBuilder(vspDetails.getId(),
-                    vspDetails.getVersion()));
+                        vspDetails.getVersion()));
       }
       if (vspDetails.getVlmVersion() != null || vspDetails.getLicenseAgreement() != null
-          || vspDetails.getFeatureGroups() != null) {
+              || vspDetails.getFeatureGroups() != null) {
         errors.addAll(validateMandatoryLicenseFields(vspDetails));
       }
     }
@@ -553,7 +542,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     List<ErrorCode> errors = new ArrayList<>();
     if (vspDetails.getVlmVersion() == null) {
       errors.add(createMissingMandatoryFieldError(
-          "licensing version (in the format of: {integer}.{integer})"));
+              "licensing version (in the format of: {integer}.{integer})"));
     }
     if (vspDetails.getLicenseAgreement() == null) {
       errors.add(createMissingMandatoryFieldError("license agreement"));
@@ -572,13 +561,13 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     mdcDataDebugMessage.debugEntryMessage(null);
     mdcDataDebugMessage.debugExitMessage(null);
     return SchemaGenerator
-        .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.vsp, schemaInput);
+            .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.vsp, schemaInput);
   }
 
   private static void sortVspListByModificationTimeDescOrder(
-      List<VersionedVendorSoftwareProductInfo> vsps) {
+          List<VersionedVendorSoftwareProductInfo> vsps) {
     vsps.sort((o1, o2) -> o2.getVspDetails().getWritetimeMicroSeconds()
-        .compareTo(o1.getVspDetails().getWritetimeMicroSeconds()));
+            .compareTo(o1.getVspDetails().getWritetimeMicroSeconds()));
   }
 
 
@@ -591,21 +580,21 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     enrichedServiceModelDao.deleteAll(vendorSoftwareProductId, version);
 
     EnrichmentManager<ToscaServiceModel> enrichmentManager =
-        EnrichmentManagerFactory.getInstance().createInterface();
+            EnrichmentManagerFactory.getInstance().createInterface();
     enrichmentManager.init(vendorSoftwareProductId, version);
     enrichmentManager.setModel(serviceModel);
     Map<String, List<ErrorMessage>> enrichErrors = enrichmentManager.enrich();
 
     if (MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, enrichErrors))) {
       logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.ENRICHMENT_COMPLETED
-          + vendorSoftwareProductId);
+              + vendorSoftwareProductId);
     } else {
       enrichErrors.values().forEach(errorList ->
-          auditIfContainsErrors(errorList,vendorSoftwareProductId,AuditMessages.ENRICHMENT_ERROR));
+              auditIfContainsErrors(errorList,vendorSoftwareProductId,AuditMessages.ENRICHMENT_ERROR));
     }
 
     enrichedServiceModelDao
-        .storeServiceModel(vendorSoftwareProductId, version, enrichmentManager.getModel());
+            .storeServiceModel(vendorSoftwareProductId, version, enrichmentManager.getModel());
 
     return enrichErrors;
   }
@@ -614,15 +603,15 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     mdcDataDebugMessage.debugEntryMessage("VSP id", vspDetails.getId());
 
     if (vspDetails.getVendorId() == null || vspDetails.getVlmVersion() == null
-        || vspDetails.getLicenseAgreement() == null
-        || CollectionUtils.isEmpty(vspDetails.getFeatureGroups())) {
+            || vspDetails.getLicenseAgreement() == null
+            || CollectionUtils.isEmpty(vspDetails.getFeatureGroups())) {
       return null;
     }
 
     mdcDataDebugMessage.debugExitMessage("VSP id", vspDetails.getId());
     return vendorLicenseFacade
-        .validateLicensingData(vspDetails.getVendorId(), vspDetails.getVlmVersion(),
-            vspDetails.getLicenseAgreement(), vspDetails.getFeatureGroups());
+            .validateLicensingData(vspDetails.getVendorId(), vspDetails.getVlmVersion(),
+                    vspDetails.getLicenseAgreement(), vspDetails.getFeatureGroups());
   }
 
   @Override
@@ -637,8 +626,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
     vspInfoDao.create(validationVsp);
     Version version = versioningManager.create(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-        validationVsp.getId(), user);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+            validationVsp.getId(), user);
     validationVsp.setVersion(version);
 
     createUniqueName(VALIDATION_VSP_NAME);
@@ -654,15 +643,15 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
     vspInfoDao.create(vspDetails);//id will be set in the dao
     vspInfoDao.updateQuestionnaireData(vspDetails.getId(), null,
-        new JsonSchemaDataGenerator(getVspQuestionnaireSchema(null)).generateData());
+            new JsonSchemaDataGenerator(getVspQuestionnaireSchema(null)).generateData());
 
     Version version = versioningManager
-        .create(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-            vspDetails.getId(), user);
+            .create(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+                    vspDetails.getId(), user);
     vspDetails.setVersion(version);
     ActivityLogEntity activityLogEntity = new ActivityLogEntity(vspDetails.getId(), String
-        .valueOf(vspDetails.getVersion().getMajor() + 1),
-        ActivityType.CREATE_NEW.toString(), user, true, "", "");
+            .valueOf(vspDetails.getVersion().getMajor() + 1),
+            ActivityType.CREATE_NEW.toString(), user, true, "", "");
     activityLogManager.addActionLog(activityLogEntity, user);
     String vspName = vspDetails.getName();
     createUniqueName(vspName);
@@ -675,8 +664,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     mdcDataDebugMessage.debugEntryMessage(null);
 
     Map<String, VersionInfo> idToVersionsInfo = versioningManager.listEntitiesVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, user,
-        VersionableEntityAction.Read);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, user,
+            VersionableEntityAction.Read);
 
     List<VersionedVendorSoftwareProductInfo> vsps = new ArrayList<>();
     for (Map.Entry<String, VersionInfo> entry : idToVersionsInfo.entrySet()) {
@@ -702,10 +691,10 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
         }
       } catch (RuntimeException rte) {
         logger.error(
-            "Error trying to retrieve vsp[" + entry.getKey() + "] version[" + version.toString
-                () + "] " +
-                "message:" + rte
-                .getMessage());
+                "Error trying to retrieve vsp[" + entry.getKey() + "] version[" + version.toString
+                        () + "] " +
+                        "message:" + rte
+                        .getMessage());
       }
     }
 
@@ -723,11 +712,11 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     VspDetails retrieved = vspInfoDao.get(vspDetails);
     if (!retrieved.getOnboardingMethod().equals(vspDetails.getOnboardingMethod())) {
       final ErrorCode onboardingMethodUpdateErrorCode = OnboardingMethodErrorBuilder
-          .getOnboardingUpdateError();
+              .getOnboardingUpdateError();
 
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.UPDATE_VSP, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), onboardingMethodUpdateErrorCode.message());
+              LoggerTragetServiceName.UPDATE_VSP, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), onboardingMethodUpdateErrorCode.message());
 
       throw new CoreException(onboardingMethodUpdateErrorCode);
     }
@@ -747,20 +736,20 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
   private void updateDeploymentFlavor(VspDetails vspDetails, String user) {
     final List<String> featureGroups = vspDetails.getFeatureGroups();
-    if (featureGroups != null && !featureGroups.isEmpty() ) {
+    if (featureGroups != null) {
       final Collection<DeploymentFlavorEntity> deploymentFlavorEntities = deploymentFlavorDao
-          .list(new DeploymentFlavorEntity(vspDetails.getId(), vspDetails
-          .getVersion(), null));
+              .list(new DeploymentFlavorEntity(vspDetails.getId(), vspDetails
+                      .getVersion(), null));
       if (Objects.nonNull(deploymentFlavorEntities)) {
         deploymentFlavorEntities.forEach(deploymentFlavorEntity -> {
           final String featureGroupId =
-              deploymentFlavorEntity.getDeploymentFlavorCompositionData().getFeatureGroupId();
+                  deploymentFlavorEntity.getDeploymentFlavorCompositionData().getFeatureGroupId();
           if ( !featureGroups.contains(featureGroupId)) {
             DeploymentFlavor deploymentFlavorCompositionData =
-                deploymentFlavorEntity.getDeploymentFlavorCompositionData();
+                    deploymentFlavorEntity.getDeploymentFlavorCompositionData();
             deploymentFlavorCompositionData.setFeatureGroupId(null);
             deploymentFlavorEntity.setDeploymentFlavorCompositionData
-                (deploymentFlavorCompositionData);
+                    (deploymentFlavorCompositionData);
             vendorSoftwareProductDao.updateDeploymentFlavor(deploymentFlavorEntity);
           }
         });
@@ -776,8 +765,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     VspDetails vsp = vspInfoDao.get(new VspDetails(vspId, version));
     if (vsp == null) {
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.GET_VSP, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), "Requested VSP not found");
+              LoggerTragetServiceName.GET_VSP, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), "Requested VSP not found");
       throw new CoreException(new VendorSoftwareProductNotFoundErrorBuilder(vspId).build());
     }
     vsp.setValidationData(orchestrationTemplateDao.getValidationData(vspId, version));
@@ -789,12 +778,12 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
   @Override
   public Version callAutoHeal(String vspId, VersionInfo versionInfo,
                               VspDetails vendorSoftwareProductInfo, String user)
-      throws Exception {
+          throws Exception {
     switch (versionInfo.getStatus()) {
       case Locked:
         if (user.equals(versionInfo.getLockingUser())) {
           autoHeal(vspId, versionInfo.getActiveVersion(), vendorSoftwareProductInfo,
-              versionInfo.getLockingUser());
+                  versionInfo.getLockingUser());
         }
         return versionInfo.getActiveVersion();
       case Available:
@@ -830,12 +819,12 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
 
     MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-        LoggerTragetServiceName.DELETE_VSP, ErrorLevel.ERROR.name(),
-        LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Unsupported operation");
+            LoggerTragetServiceName.DELETE_VSP, ErrorLevel.ERROR.name(),
+            LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Unsupported operation");
     mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
 
     throw new UnsupportedOperationException(
-        VendorSoftwareProductConstants.UNSUPPORTED_OPERATION_ERROR);
+            VendorSoftwareProductConstants.UNSUPPORTED_OPERATION_ERROR);
   }
 
   @Override
@@ -845,8 +834,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     VersionInfo versionInfo = getVersionInfo(vspId, VersionableEntityAction.Read, user);
 
     version = VersionStatus.Locked.equals(versionInfo.getStatus())
-        ? versionInfo.getActiveVersion()
-        : checkout(vspId, user);
+            ? versionInfo.getActiveVersion()
+            : checkout(vspId, user);
     version.setStatus(VersionStatus.Locked);
 
     healingManager.healAll(getHealingParamsAsMap(vspId, version, user));
@@ -896,24 +885,24 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     if (version == null) {
       errorMessage = "Package not found";
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
+              LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
       throw new CoreException(new PackageNotFoundErrorBuilder(vspId).build());
     } else if (!version.isFinal()) {
       errorMessage = "Invalid requested version";
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.GET_VERSION_INFO, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
+              LoggerTragetServiceName.GET_VERSION_INFO, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
       throw new CoreException(new RequestedVersionInvalidErrorBuilder().build());
     }
 
     PackageInfo packageInfo =
-        packageInfoDao.get(new PackageInfo(vspId, version));
+            packageInfoDao.get(new PackageInfo(vspId, version));
     if (packageInfo == null) {
       errorMessage = "Package not found";
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
+              LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
       throw new CoreException(new PackageNotFoundErrorBuilder(vspId, version).build());
     }
 
@@ -921,8 +910,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     if (translatedFileBuffer == null) {
       errorMessage = "Package not found";
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
+              LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
       throw new CoreException(new PackageInvalidErrorBuilder(vspId, version).build());
     }
 
@@ -935,10 +924,10 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     } catch (IOException exception) {
       errorMessage = "Can't create package";
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.CREATE_TRANSLATED_FILE, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
+              LoggerTragetServiceName.CREATE_TRANSLATED_FILE, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage);
       throw new CoreException(new TranslationFileCreationErrorBuilder(vspId, version).build(),
-          exception);
+              exception);
     }
 
     mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
@@ -961,12 +950,12 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
     try (final ZipOutputStream zos = new ZipOutputStream(baos);
          ZipInputStream zipStream = new ZipInputStream(
-             new ByteArrayInputStream(contentData.array()))) {
+                 new ByteArrayInputStream(contentData.array()))) {
       zos.write(contentData.array());
     } catch (IOException exception) {
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.GET_UPLOADED_HEAT, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't get uploaded HEAT");
+              LoggerTragetServiceName.GET_UPLOADED_HEAT, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't get uploaded HEAT");
       throw new CoreException(new FileCreationErrorBuilder(vspId).build(), exception);
     }
 
@@ -980,11 +969,11 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
     if (!version.isFinal()) {
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.CREATE_PACKAGE, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't create package");
+              LoggerTragetServiceName.CREATE_PACKAGE, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't create package");
       throw new CoreException(
-          new CreatePackageForNonFinalVendorSoftwareProductErrorBuilder(vspId, version)
-              .build());
+              new CreatePackageForNonFinalVendorSoftwareProductErrorBuilder(vspId, version)
+                      .build());
     }
 
     ToscaServiceModel toscaServiceModel = enrichedServiceModelDao.getServiceModel(vspId, version);
@@ -994,13 +983,13 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     PackageInfo packageInfo = createPackageInfo(vspId, vspDetails);
 
     ToscaFileOutputServiceCsarImpl toscaServiceTemplateServiceCsar =
-        new ToscaFileOutputServiceCsarImpl();
+            new ToscaFileOutputServiceCsarImpl();
     FileContentHandler licenseArtifacts = licenseArtifactsService
-        .createLicenseArtifacts(vspDetails.getId(), vspDetails.getVendorId(), vlmVersion,
-            vspDetails.getFeatureGroups(), user);
+            .createLicenseArtifacts(vspDetails.getId(), vspDetails.getVendorId(), vlmVersion,
+                    vspDetails.getFeatureGroups(), user);
     //todo add tosca validation here
     packageInfo.setTranslatedFile(ByteBuffer.wrap(
-        toscaServiceTemplateServiceCsar.createOutputFile(toscaServiceModel, licenseArtifacts)));
+            toscaServiceTemplateServiceCsar.createOutputFile(toscaServiceModel, licenseArtifacts)));
 
     packageInfoDao.create(packageInfo);
 
@@ -1031,7 +1020,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
     VspQuestionnaireEntity retrieved = vspInfoDao.getQuestionnaire(vspId, version);
     VersioningUtil.validateEntityExistence(retrieved, new VspQuestionnaireEntity(vspId, version),
-        VspDetails.ENTITY_TYPE);
+            VspDetails.ENTITY_TYPE);
 
     String questionnaireData = retrieved.getQuestionnaireData();
 
@@ -1056,7 +1045,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
 
   private Map<String, List<ErrorMessage>> validateUploadData(UploadDataEntity uploadData)
-      throws IOException {
+          throws IOException {
 
     Map<String, List<ErrorMessage>> validationErrors = new HashMap<>();
     if (uploadData == null || uploadData.getContentData() == null) {
@@ -1064,22 +1053,22 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     }
 
     FileContentHandler fileContentMap =
-        CommonUtil.validateAndUploadFileContent(uploadData.getContentData().array());
+            CommonUtil.validateAndUploadFileContent(uploadData.getContentData().array());
     //todo - check
     ValidationManager validationManager =
-        ValidationManagerUtil.initValidationManager(fileContentMap);
+            ValidationManagerUtil.initValidationManager(fileContentMap);
     validationErrors.putAll(validationManager.validate());
 
     return
-        MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, validationErrors))
-            ? null : validationErrors;
+            MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, validationErrors))
+                    ? null : validationErrors;
   }
 
   private VersionInfo getVersionInfo(String vendorSoftwareProductId, VersionableEntityAction action,
                                      String user) {
     return versioningManager.getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-        vendorSoftwareProductId, user, action);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+            vendorSoftwareProductId, user, action);
   }
 
 
@@ -1090,9 +1079,9 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     // The apis of CompositionEntityDataManager used here are stateful!
     // so, it must be re-created from scratch when it is used!
     CompositionEntityDataManager compositionEntityDataManager =
-        CompositionEntityDataManagerFactory.getInstance().createInterface();
+            CompositionEntityDataManagerFactory.getInstance().createInterface();
     compositionEntityDataManager
-        .addEntity(vspInfoDao.getQuestionnaire(vspId, version), null);
+            .addEntity(vspInfoDao.getQuestionnaire(vspId, version), null);
 
     Collection<NicEntity> nics = vendorSoftwareProductDao.listNicsByVsp(vspId, version);
 
@@ -1103,16 +1092,16 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
       Nic nic = nicEntity.getNicCompositionData();
       if (nic != null && nic.getName() != null) {
         List<String> nicNames =
-            nicNamesByComponent.computeIfAbsent(nicEntity.getComponentId(), k -> new ArrayList<>());
+                nicNamesByComponent.computeIfAbsent(nicEntity.getComponentId(), k -> new ArrayList<>());
         nicNames.add(nic.getName());
       }
     }
 
     Collection<ComponentEntity> components =
-        vendorSoftwareProductDao.listComponentsCompositionAndQuestionnaire(vspId, version);
+            vendorSoftwareProductDao.listComponentsCompositionAndQuestionnaire(vspId, version);
     components.forEach(component -> compositionEntityDataManager.addEntity(component,
-        new ComponentQuestionnaireSchemaInput(nicNamesByComponent.get(component.getId()),
-            JsonUtil.json2Object(component.getQuestionnaireData(), Map.class))));
+            new ComponentQuestionnaireSchemaInput(nicNamesByComponent.get(component.getId()),
+                    JsonUtil.json2Object(component.getQuestionnaireData(), Map.class))));
 
     Collection<ComputeEntity> computes = vendorSoftwareProductDao.listComputesByVsp(vspId, version);
     computes.forEach(compute -> compositionEntityDataManager.addEntity(compute, null));
@@ -1123,7 +1112,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     }
 
     Map<CompositionEntityId, Collection<String>> errorsByEntityId =
-        compositionEntityDataManager.validateEntitiesQuestionnaire();
+            compositionEntityDataManager.validateEntitiesQuestionnaire();
     if (MapUtils.isNotEmpty(errorsByEntityId)) {
       compositionEntityDataManager.buildTrees();
       compositionEntityDataManager.addErrorsToTrees(errorsByEntityId);
@@ -1133,7 +1122,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
       mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
       return new QuestionnaireValidationResult(
-          compositionEntityDataManager.getAllErrorsByVsp(vspId));
+              compositionEntityDataManager.getAllErrorsByVsp(vspId));
     }
 
     mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
@@ -1154,11 +1143,11 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     File infoArtifactFile;
     try {
       infoArtifactAsByteBuffer = ByteBuffer.wrap(informationArtifactGenerator.generate(vspId,
-          version).getBytes());
+              version).getBytes());
 
       infoArtifactFile =
-          new File(
-              String.format(VendorSoftwareProductConstants.INFORMATION_ARTIFACT_NAME, vspName));
+              new File(
+                      String.format(VendorSoftwareProductConstants.INFORMATION_ARTIFACT_NAME, vspName));
       OutputStream out = new BufferedOutputStream(new FileOutputStream(infoArtifactFile));
       out.write(infoArtifactAsByteBuffer.array());
       out.close();
@@ -1172,18 +1161,18 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
   void validateUniqueName(String vspName) {
     UniqueValueUtil.validateUniqueValue(
-        VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, vspName);
+            VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, vspName);
   }
 
   void createUniqueName(String vspName) {
     UniqueValueUtil.createUniqueValue(
-        VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, vspName);
+            VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, vspName);
   }
 
   void updateUniqueName(String oldVspName, String newVspName) {
     UniqueValueUtil.updateUniqueValue(
-        VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME,
-        oldVspName, newVspName);
+            VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME,
+            oldVspName, newVspName);
   }
 
   @Override
@@ -1197,7 +1186,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     errorList.forEach(errorMessage -> {
       if (errorMessage.getLevel().equals(ErrorLevel.ERROR)) {
         logger.audit(AuditMessages.AUDIT_MSG + String.format(auditType, errorMessage.getMessage(),
-            vspId));
+                vspId));
       }
     });
   }
index ea5bef1..09e7a40 100644 (file)
@@ -41,9 +41,6 @@ public class ValidationResponse {
   private Map<String, List<ErrorMessage>> uploadDataErrors;
   private Map<String, List<ErrorMessage>> compilationErrors;
   private QuestionnaireValidationResult questionnaireValidationResult;
-  private ComponentValidationResult componentValidationResult;
-  private DeploymentFlavorValidationResult deploymentFlavorValidationResult;
-
 
   public boolean isValid() {
     return valid;
@@ -106,7 +103,7 @@ public class ValidationResponse {
     }
 
     VendorSoftwareProductUtils
-        .setErrorsIntoLogger(uploadDataErrors, serviceName, targetServiceName);
+            .setErrorsIntoLogger(uploadDataErrors, serviceName, targetServiceName);
   }
 
   public Map<String, List<ErrorMessage>> getCompilationErrors() {
@@ -128,7 +125,7 @@ public class ValidationResponse {
     }
 
     VendorSoftwareProductUtils
-        .setErrorsIntoLogger(uploadDataErrors, serviceName, targetServiceName);
+            .setErrorsIntoLogger(uploadDataErrors, serviceName, targetServiceName);
   }
 
   public QuestionnaireValidationResult getQuestionnaireValidationResult() {
@@ -141,48 +138,10 @@ public class ValidationResponse {
    * @param questionnaireValidationResult the questionnaire validation result
    */
   public void setQuestionnaireValidationResult(
-      QuestionnaireValidationResult questionnaireValidationResult) {
+          QuestionnaireValidationResult questionnaireValidationResult) {
     this.questionnaireValidationResult = questionnaireValidationResult;
     if (questionnaireValidationResult != null && !questionnaireValidationResult.isValid()) {
       valid = false;
     }
   }
-
-
-  public ComponentValidationResult getComponentValidationResult() {
-    return componentValidationResult;
-  }
-
-  /**
-   * Sets Component validation result.
-   *
-   * @param componentValidationResult the Component validation result
-   */
-  public void setComponentValidationResult(
-      ComponentValidationResult componentValidationResult) {
-    this.componentValidationResult = componentValidationResult;
-    if (componentValidationResult != null && !componentValidationResult.isValid()) {
-      valid = false;
-    }
-  }
-
-
-  public DeploymentFlavorValidationResult getDeploymentFlavorValidationResult() {
-    return deploymentFlavorValidationResult;
-  }
-
-  /**
-   * Sets Deployment validation result.
-   *
-   * @param deploymentFlavorValidationResult the Deployment validation result
-   */
-  public void setDeploymentFlavorValidationResult(
-      DeploymentFlavorValidationResult deploymentFlavorValidationResult) {
-    this.deploymentFlavorValidationResult = deploymentFlavorValidationResult;
-    if (deploymentFlavorValidationResult != null && !deploymentFlavorValidationResult.isValid()) {
-      valid = false;
-    }
-  }
-
-
 }
index afd7975..5dcb7f9 100644 (file)
@@ -1,32 +1,70 @@
 package org.openecomp.sdc.vendorsoftwareproduct;
 
-import org.openecomp.core.utilities.CommonMethods;
-import org.openecomp.core.utilities.json.JsonUtil;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 import org.openecomp.sdc.common.errors.CoreException;
-import org.openecomp.sdc.common.errors.ErrorCode;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
-import org.openecomp.sdc.vendorsoftwareproduct.errors.ImageErrorBuilder;
-import org.openecomp.sdc.vendorsoftwareproduct.errors.NotSupportedHeatOnboardMethodErrorBuilder;
 import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
-import org.openecomp.sdc.vendorsoftwareproduct.impl.VendorSoftwareProductManagerImpl;
-import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
-import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
-import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Image;
-import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.image.ImageDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.ImageManagerImpl;
+import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
 import org.openecomp.sdc.versioning.dao.types.Version;
-import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
 import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import java.util.Collection;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
 
 public class ImagesTest {
 
+    private static String VSP_ID = "VSP_ID";
+    private static String COMP_ID = "COMP_ID";
+    private static String ID = "ID";
+    private static String USER = "USER";
+    public static final Version VERSION01 = new Version(0, 1);
+
+    @Mock
+    private VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao;
+
+    @Mock
+    private CompositionEntityDataManager compositionEntityDataManager;
+
+    @InjectMocks
+    @Spy
+    private ImageManagerImpl imageManager;
+
+    @BeforeMethod
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void createImage()
+    {
+        ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION01, COMP_ID, ID);
+        doReturn(true).when(vendorSoftwareProductInfoDao).isManual(anyObject(), anyObject());
+
+        imageManager.createImage(imageEntity, USER);
+        verify(compositionEntityDataManager).createImage(imageEntity);
+    }
+
+    @Test
+    public void createImageHeat()
+    {
+        ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION01, COMP_ID, ID);
+        doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(), anyObject());
+
+        try {
+            imageManager.createImage(imageEntity, USER);
+            Assert.fail();
+        } catch (CoreException exception) {
+            Assert.assertEquals(exception.code().id(), VendorSoftwareProductErrorCodes.ADD_IMAGE_NOT_ALLOWED_IN_HEAT_ONBOARDING);
+        }
+    }
   /*private static final String USER1 = "imageTestUser1";
   private static final String USER2 = "imageTestUser2";
   private static final Version VERSION01 = new Version(0, 1);
index d617bf9..741b1bf 100644 (file)
@@ -37,9 +37,9 @@ import static org.mockito.Mockito.verify;
 public class ImageManagerImplTest {
 
   private static final String IMAGE_NOT_EXIST_MSG =
-      "Vendor Software Product Image with Id image1 does not exist for Vendor Software Product with" +
-          " " +
-          "id VSP_ID and version 0.1";
+          "Vendor Software Product Image with Id image1 does not exist for Vendor Software Product with" +
+                  " " +
+                  "id VSP_ID and version 0.1";
 
   private static final String USER = "imageTestUser";
   private static final String VSP_ID = "VSP_ID";
@@ -66,7 +66,7 @@ public class ImageManagerImplTest {
   @Test
   public void testListWhenNone() {
     final Collection<ImageEntity> imageEntities =
-        imageManager.listImages(VSP_ID, VERSION, COMPONENT_ID, USER);
+            imageManager.listImages(VSP_ID, VERSION, COMPONENT_ID, USER);
     Assert.assertEquals(imageEntities.size(), 0);
   }
 
@@ -74,17 +74,17 @@ public class ImageManagerImplTest {
   public void testList() {
 
     doReturn(Arrays.asList(
-        createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID),
-        createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE2_ID)))
-        .when(imageDao).list(anyObject());
+            createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID),
+            createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE2_ID)))
+            .when(imageDao).list(anyObject());
 
 
     final Collection<ImageEntity> images =
-        imageManager.listImages(VSP_ID, VERSION, COMPONENT_ID, USER);
+            imageManager.listImages(VSP_ID, VERSION, COMPONENT_ID, USER);
     Assert.assertEquals(images.size(), 2);
     for (ImageEntity image : images) {
       Assert.assertEquals(image.getImageCompositionData().getFileName(),
-          IMAGE1_ID.equals(image.getId()) ? IMAGE1_ID+"_name" : IMAGE2_ID+"_name" );
+              IMAGE1_ID.equals(image.getId()) ? IMAGE1_ID+"_name" : IMAGE2_ID+"_name" );
     }
   }
 
@@ -92,7 +92,7 @@ public class ImageManagerImplTest {
   public void testCreateOnNotManualImage_negative() {
 
     testCreate_negative(new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, null), USER,
-        VendorSoftwareProductErrorCodes.ADD_IMAGE_NOT_ALLOWED_IN_HEAT_ONBOARDING);
+            VendorSoftwareProductErrorCodes.ADD_IMAGE_NOT_ALLOWED_IN_HEAT_ONBOARDING);
   }
 
   @Test
@@ -104,7 +104,7 @@ public class ImageManagerImplTest {
     verify(compositionEntityDataManagerMock).createImage(expected);
   }
 
-  @Test
+  /*@Test
   public void testCreateManualImageWithDuplicateName() {
     ImageEntity expected = createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID);
     doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
@@ -124,22 +124,22 @@ public class ImageManagerImplTest {
       Assert.assertEquals(VendorSoftwareProductErrorCodes.DUPLICATE_IMAGE_NAME_NOT_ALLOWED,
           ex.code().id());
     }
-  }
+  }*/
 
   @Test
   public void testUpdateNonExistingImageId_negative() {
     testUpdate_negative(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER,
-        VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
+            VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
   }
 
   @Test
   public void testUpdateImage() {
     doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID))
-        .when(imageDao).get(anyObject());
+            .when(imageDao).get(anyObject());
 
     doReturn(new CompositionEntityValidationData(CompositionEntityType.image, IMAGE1_ID))
-        .when(compositionEntityDataManagerMock)
-        .validateEntity(anyObject(), anyObject(), anyObject());
+            .when(compositionEntityDataManagerMock)
+            .validateEntity(anyObject(), anyObject(), anyObject());
 
     ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID);
     Image imageData = new Image();
@@ -148,7 +148,7 @@ public class ImageManagerImplTest {
     imageEntity.setImageCompositionData(imageData);
 
     CompositionEntityValidationData validationData =
-        imageManager.updateImage(imageEntity, USER);
+            imageManager.updateImage(imageEntity, USER);
     Assert.assertTrue(validationData == null || validationData.getErrors() == null);
     verify(imageDao).update(imageEntity);
   }
@@ -156,16 +156,16 @@ public class ImageManagerImplTest {
   @Test
   public void testIllegalImageUpdate() {
     doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID))
-        .when(imageDao).get(anyObject());
+            .when(imageDao).get(anyObject());
 
     doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
 
     CompositionEntityValidationData toBeReturned =
-        new CompositionEntityValidationData(CompositionEntityType.image, IMAGE1_ID);
+            new CompositionEntityValidationData(CompositionEntityType.image, IMAGE1_ID);
     toBeReturned.setErrors(Arrays.asList("error1", "error2"));
     doReturn(toBeReturned)
-        .when(compositionEntityDataManagerMock)
-        .validateEntity(anyObject(), anyObject(), anyObject());
+            .when(compositionEntityDataManagerMock)
+            .validateEntity(anyObject(), anyObject(), anyObject());
 
     ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID);
     Image imageData = new Image();
@@ -183,7 +183,7 @@ public class ImageManagerImplTest {
   @Test
   public void testUpdateHEATImageFileName() throws Exception {
     doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID))
-        .when(imageDao).get(anyObject());
+            .when(imageDao).get(anyObject());
     ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID);
     Image imageData = new Image();
     imageData.setFileName(IMAGE1_ID + " name updated");
@@ -202,7 +202,7 @@ public class ImageManagerImplTest {
   @Test
   public void testGetNonExistingImageId_negative() {
     testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing image id", USER,
-        VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
+            VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
   }
 
   @Test
@@ -213,12 +213,12 @@ public class ImageManagerImplTest {
     doReturn(compositionSchema).when(imageManager).getImageCompositionSchema(anyObject());
 
     CompositionEntityResponse<Image> response =
-        imageManager.getImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER);
+            imageManager.getImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER);
     Assert.assertEquals(response.getId(), expected.getId());
     Assert.assertEquals(response.getData().getFileName(), expected.getImageCompositionData().
-        getFileName());
+            getFileName());
     Assert.assertEquals(response.getData().getDescription(), expected.getImageCompositionData().
-        getDescription());
+            getDescription());
     Assert.assertEquals(response.getSchema(), compositionSchema);
   }
 
@@ -227,13 +227,13 @@ public class ImageManagerImplTest {
     ImageEntity expected = createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID);
     doReturn(expected).when(imageDao).get(anyObject());
     testDelete_negative(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER,
-        VendorSoftwareProductErrorCodes.DELETE_IMAGE_NOT_ALLOWED);
+            VendorSoftwareProductErrorCodes.DELETE_IMAGE_NOT_ALLOWED);
   }
 
   @Test
   public void testDeleteOnNotExistImage() {
     testDelete_negative(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER,
-        VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
+            VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
   }
 
   @Test
@@ -255,7 +255,7 @@ public class ImageManagerImplTest {
     doReturn(schema).when(imageManager).getImageQuestionnaireSchema(anyObject());
 
     QuestionnaireResponse questionnaire =
-        imageManager.getImageQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER);
+            imageManager.getImageQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER);
     Assert.assertNotNull(questionnaire);
     Assert.assertEquals(questionnaire.getData(), image.getQuestionnaireData());
     Assert.assertEquals(questionnaire.getSchema(), schema);
@@ -334,7 +334,7 @@ public class ImageManagerImplTest {
     String updJson = "{\"format\" :\"a22\"}";
     try {
       imageManager.updateImageQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, updJson,
-          USER);
+              USER);
       Assert.fail();
     }
     catch(CoreException ex) {
@@ -383,7 +383,7 @@ public class ImageManagerImplTest {
   }
 
   private void testUpdate_negative(String vspId, Version version, String componentId, String
-      imageId, String user, String expectedErrorCode) {
+          imageId, String user, String expectedErrorCode) {
     try {
       imageManager.updateImage(new ImageEntity(vspId, version, componentId, imageId), user);
       Assert.fail();
index 2fc4385..4ead8a5 100644 (file)
@@ -169,10 +169,10 @@ public class VendorSoftwareProductManagerImplTest {
   @Test
   public void testListWhenNone() {
     doReturn(new HashMap<>()).when(versioningManagerMock).listEntitiesVersionInfo
-        (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1,
-            VersionableEntityAction.Read);
+            (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1,
+                    VersionableEntityAction.Read);
     List<VersionedVendorSoftwareProductInfo> vsps =
-        vendorSoftwareProductManager.listVsps(null, USER1);
+            vendorSoftwareProductManager.listVsps(null, USER1);
     Assert.assertEquals(vsps.size(), 0);
   }
 
@@ -191,16 +191,16 @@ public class VendorSoftwareProductManagerImplTest {
     vspsTobeReturned.put(vsp2id, versionInfo2);
 
     doReturn(vspsTobeReturned).when(versioningManagerMock).listEntitiesVersionInfo
-        (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1,
-            VersionableEntityAction.Read);
+            (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1,
+                    VersionableEntityAction.Read);
 
     VspDetails vsp1 = new VspDetails(vsp1id, VERSION01);
     vsp1.setWritetimeMicroSeconds(8L);
     doReturn(vsp1).when(vspInfoDaoMock)
-        .get(any(VspDetails.class));
+            .get(any(VspDetails.class));
 
     List<VersionedVendorSoftwareProductInfo> vsps =
-        vendorSoftwareProductManager.listVsps(null, USER1);
+            vendorSoftwareProductManager.listVsps(null, USER1);
     Assert.assertEquals(vsps.size(), 2);
   }
 
@@ -219,11 +219,11 @@ public class VendorSoftwareProductManagerImplTest {
     vspsTobeReturned.put(vsp2id, versionInfo2);
 
     doReturn(vspsTobeReturned).when(versioningManagerMock).listEntitiesVersionInfo
-        (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1,
-            VersionableEntityAction.Read);
+            (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1,
+                    VersionableEntityAction.Read);
 
     List<VersionedVendorSoftwareProductInfo> vsps =
-        vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), USER1);
+            vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), USER1);
     Assert.assertEquals(vsps.size(), 0);
   }
 
@@ -243,27 +243,27 @@ public class VendorSoftwareProductManagerImplTest {
     vspsTobeReturned.put(vsp2id, versionInfo2);
 
     doReturn(vspsTobeReturned).when(versioningManagerMock).listEntitiesVersionInfo
-        (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1,
-            VersionableEntityAction.Read);
+            (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1,
+                    VersionableEntityAction.Read);
 
     VspDetails vsp2 = new VspDetails(vsp2id, VERSION10);
     vsp2.setWritetimeMicroSeconds(8L);
     doReturn(vsp2).when(vspInfoDaoMock)
-        .get(any(VspDetails.class));
+            .get(any(VspDetails.class));
 
     List<VersionedVendorSoftwareProductInfo> vsps =
-        vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), USER1);
+            vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), USER1);
     Assert.assertEquals(vsps.size(), 1);
   }
 
   @Test(expectedExceptions = CoreException.class)
   public void testCreateWithExistingName_negative() {
     doThrow(new CoreException(
-        new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
-        .when(vendorSoftwareProductManager).validateUniqueName("Vsp1");
+            new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
+            .when(vendorSoftwareProductManager).validateUniqueName("Vsp1");
     VspDetails expectedVsp =
-        createVspDetails(null, null, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
-            "category", "subCategory", "123", null);
+            createVspDetails(null, null, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
+                    "category", "subCategory", "123", null);
 
     vendorSoftwareProductManager.createVsp(expectedVsp, USER1);
   }
@@ -274,11 +274,11 @@ public class VendorSoftwareProductManagerImplTest {
     doNothing().when(vendorSoftwareProductManager).createUniqueName("Vsp1");
     doReturn(VERSION01).when(versioningManagerMock).create(anyObject(), anyObject(), anyObject());
     doReturn("{}")
-        .when(vendorSoftwareProductManager).getVspQuestionnaireSchema(anyObject());
+            .when(vendorSoftwareProductManager).getVspQuestionnaireSchema(anyObject());
 
     VspDetails vspToCreate =
-        createVspDetails(null, null, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
-            "category", "subCategory", "123", null);
+            createVspDetails(null, null, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
+                    "category", "subCategory", "123", null);
 
     VspDetails vsp = vendorSoftwareProductManager.createVsp(vspToCreate, USER1);
 
@@ -297,21 +297,21 @@ public class VendorSoftwareProductManagerImplTest {
     VersionInfo versionInfo = new VersionInfo();
     versionInfo.setActiveVersion(VERSION01);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
-        VersionableEntityAction.Write);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
+            VersionableEntityAction.Write);
 
     VspDetails existingVsp =
-        createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-existingVsp", "vendorName", "vlm1Id",
-            "icon", "category", "subCategory", "123", null);
+            createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-existingVsp", "vendorName", "vlm1Id",
+                    "icon", "category", "subCategory", "123", null);
     VspDetails updatedVsp =
-        createVspDetails(VSP_ID, VERSION01, "Vsp1_updated", "Test-existingVsp", "vendorName",
-            "vlm1Id", "icon", "category", "subCategory", "123", null);
+            createVspDetails(VSP_ID, VERSION01, "Vsp1_updated", "Test-existingVsp", "vendorName",
+                    "vlm1Id", "icon", "category", "subCategory", "123", null);
     doReturn(existingVsp).when(vspInfoDaoMock)
-        .get(any(VspDetails.class));
+            .get(any(VspDetails.class));
     doThrow(new CoreException(
-        new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
-        .when(vendorSoftwareProductManager)
-        .updateUniqueName(existingVsp.getName(), updatedVsp.getName());
+            new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
+            .when(vendorSoftwareProductManager)
+            .updateUniqueName(existingVsp.getName(), updatedVsp.getName());
 
     vendorSoftwareProductManager.updateVsp(updatedVsp, USER1);
   }
@@ -321,21 +321,21 @@ public class VendorSoftwareProductManagerImplTest {
     VersionInfo versionInfo = new VersionInfo();
     versionInfo.setActiveVersion(VERSION01);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
-        VersionableEntityAction.Write);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
+            VersionableEntityAction.Write);
     VspDetails existingVsp =
-        createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon",
-            "category",
-            "subCategory", "456", null);
+            createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon",
+                    "category",
+                    "subCategory", "456", null);
     VspDetails updatedVsp =
-        createVspDetails(VSP_ID, VERSION01, "VSP1_updated", null, "vendorName", "vlm1Id", "icon",
-            "category_updated",
-            "subCategory", "456", null);
+            createVspDetails(VSP_ID, VERSION01, "VSP1_updated", null, "vendorName", "vlm1Id", "icon",
+                    "category_updated",
+                    "subCategory", "456", null);
     existingVsp.setWritetimeMicroSeconds(8L);
     doReturn(existingVsp).when(vspInfoDaoMock)
-        .get(any(VspDetails.class));
+            .get(any(VspDetails.class));
     doNothing().when(vendorSoftwareProductManager)
-        .updateUniqueName(existingVsp.getName(), updatedVsp.getName());
+            .updateUniqueName(existingVsp.getName(), updatedVsp.getName());
 
     vendorSoftwareProductManager.updateVsp(updatedVsp, USER1);
 
@@ -347,26 +347,26 @@ public class VendorSoftwareProductManagerImplTest {
     VersionInfo versionInfo = new VersionInfo();
     versionInfo.setActiveVersion(VERSION01);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
-        VersionableEntityAction.Write);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
+            VersionableEntityAction.Write);
     List<String> fgs = new ArrayList<String>();
     fgs.add("fg1"); fgs.add("fg2");
     VspDetails existingVsp =
-        createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon",
-            "category",
-            "subCategory", "456", fgs);
+            createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon",
+                    "category",
+                    "subCategory", "456", fgs);
 
     List<String> updFgs = new ArrayList<String>();
-    updFgs.add("fg2");
+    //updFgs.add("fg2");
     VspDetails updatedVsp =
-        createVspDetails(VSP_ID, VERSION01, "VSP1_updated", null, "vendorName", "vlm1Id", "icon",
-            "category_updated",
-            "subCategory", "456", updFgs);
+            createVspDetails(VSP_ID, VERSION01, "VSP1_updated", null, "vendorName", "vlm1Id", "icon",
+                    "category_updated",
+                    "subCategory", "456", updFgs);
     existingVsp.setWritetimeMicroSeconds(8L);
     doReturn(existingVsp).when(vspInfoDaoMock)
-        .get(any(VspDetails.class));
+            .get(any(VspDetails.class));
     doNothing().when(vendorSoftwareProductManager)
-        .updateUniqueName(existingVsp.getName(), updatedVsp.getName());
+            .updateUniqueName(existingVsp.getName(), updatedVsp.getName());
 
     DeploymentFlavorEntity dfEntity = new DeploymentFlavorEntity(VSP_ID,VERSION01,"DF_ID");
     DeploymentFlavor flavor = new DeploymentFlavor();
@@ -400,18 +400,18 @@ public class VendorSoftwareProductManagerImplTest {
     versionInfo.setStatus(VersionStatus.Locked);
     versionInfo.setLockingUser(USER1);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
-        VersionableEntityAction.Read);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
+            VersionableEntityAction.Read);
 
     VspDetails existingVsp =
-        createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon",
-            "category",
-            "subCategory", "456", null);
+            createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon",
+                    "category",
+                    "subCategory", "456", null);
     existingVsp.setWritetimeMicroSeconds(8L);
     doReturn(existingVsp).when(vspInfoDaoMock).get(any(VspDetails.class));
 
     VspDetails actualVsp =
-        vendorSoftwareProductManager.getVsp(VSP_ID, VERSION01, USER1);
+            vendorSoftwareProductManager.getVsp(VSP_ID, VERSION01, USER1);
 
     assertVspsEquals(actualVsp, existingVsp);
   }
@@ -424,37 +424,37 @@ public class VendorSoftwareProductManagerImplTest {
     versionInfo.setStatus(VersionStatus.Locked);
     versionInfo.setLockingUser(USER2);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
-        VersionableEntityAction.Read);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
+            VersionableEntityAction.Read);
 
     VspDetails existingVsp =
-        createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon",
-            "category",
-            "subCategory", "456", null);
+            createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon",
+                    "category",
+                    "subCategory", "456", null);
     existingVsp.setWritetimeMicroSeconds(8L);
     doReturn(existingVsp)
-        .when(vspInfoDaoMock).get(any(VspDetails.class));
+            .when(vspInfoDaoMock).get(any(VspDetails.class));
 
     VspDetails actualVsp =
-        vendorSoftwareProductManager.getVsp(VSP_ID, VERSION01, USER1);
+            vendorSoftwareProductManager.getVsp(VSP_ID, VERSION01, USER1);
 
     VspDetails expectedVsp =
-        vspInfoDaoMock
-            .get(new VspDetails(VSP_ID, VERSION01));
+            vspInfoDaoMock
+                    .get(new VspDetails(VSP_ID, VERSION01));
     assertVspsEquals(actualVsp, expectedVsp);
   }
 
   @Test
   public void testCheckin() {
     doReturn(VERSION01).when(versioningManagerMock)
-        .checkin(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
-            USER1, null);
+            .checkin(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
+                    USER1, null);
     Version version = vendorSoftwareProductManager.checkin(VSP_ID, USER1);
 
     Assert.assertEquals(version, VERSION01);
     verify(versioningManagerMock)
-        .checkin(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
-            USER1, null);
+            .checkin(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
+                    USER1, null);
     verify(activityLogManagerMock).addActionLog(activityLogEntityArg.capture(), eq(USER1));
     ActivityLogEntity activityLogEntity = activityLogEntityArg.getValue();
     Assert.assertEquals(activityLogEntity.getVersionId(), String.valueOf(VERSION01.getMajor() + 1));
@@ -464,14 +464,14 @@ public class VendorSoftwareProductManagerImplTest {
   @Test
   public void testCheckout() {
     doReturn(VERSION01).when(versioningManagerMock)
-        .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
-            USER1);
+            .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
+                    USER1);
     Version version = vendorSoftwareProductManager.checkout(VSP_ID, USER1);
 
     Assert.assertEquals(version, VERSION01);
     verify(versioningManagerMock)
-        .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
-            USER1);
+            .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
+                    USER1);
 
     verify(activityLogManagerMock).addActionLog(activityLogEntityArg.capture(), eq(USER1));
     ActivityLogEntity activityLogEntity = activityLogEntityArg.getValue();
@@ -486,11 +486,11 @@ public class VendorSoftwareProductManagerImplTest {
     VersionInfo versionInfo = new VersionInfo();
     versionInfo.setActiveVersion(existingVersion);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-        VSP_ID, USER1, VersionableEntityAction.Read);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+            VSP_ID, USER1, VersionableEntityAction.Read);
 
     doReturn(VERSION01).when(versioningManagerMock).undoCheckout(VendorSoftwareProductConstants
-        .VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1);
+            .VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1);
 
     VspDetails vsp = new VspDetails(VSP_ID, existingVersion);
     vsp.setName("ExistingName");
@@ -552,22 +552,22 @@ public class VendorSoftwareProductManagerImplTest {
     VersionInfo versionInfo = new VersionInfo();
     versionInfo.setActiveVersion(VERSION01);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
-        VSP_ID, USER1, VersionableEntityAction.Read);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
+            VSP_ID, USER1, VersionableEntityAction.Read);
 
     VspDetails vsp =
-        createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
-            "category", "subCategory", "licenseAgreementId",
-            Collections.singletonList("featureGroupId"));
+            createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
+                    "category", "subCategory", "licenseAgreementId",
+                    Collections.singletonList("featureGroupId"));
     doReturn(vsp).when(vspInfoDaoMock).get(anyObject());
     UploadDataEntity uploadData = new UploadDataEntity(VSP_ID, VERSION01);
     uploadData.setContentData(
-        ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition"))));
+            ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition"))));
     doReturn(uploadData).when(orchestrationTemplateDataDaoMock)
-        .getOrchestrationTemplate(anyObject(), anyObject());
+            .getOrchestrationTemplate(anyObject(), anyObject());
     doReturn(new ToscaServiceModel(new FileContentHandler(), new HashMap<>(),
-        "MainServiceTemplate.yaml"))
-        .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01);
+            "MainServiceTemplate.yaml"))
+            .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01);
 
     ValidationResponse validationResponse = vendorSoftwareProductManager.submit(VSP_ID, USER1);
     Assert.assertNotNull(validationResponse);
@@ -576,8 +576,8 @@ public class VendorSoftwareProductManagerImplTest {
     Assert.assertEquals(validationResponse.getLicensingDataErrors(), 1);
 
     verify(versioningManagerMock, never())
-        .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
-            USER1, null);
+            .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
+                    USER1, null);
 
     //TODO - check..
     verify(activityLogManagerMock, never()).addActionLog(any(ActivityLogEntity.class), eq(USER1));
@@ -590,20 +590,20 @@ public class VendorSoftwareProductManagerImplTest {
 
     EnrichmentManagerFactory.getInstance();
     AbstractFactoryBase
-        .registerFactory(EnrichmentManagerFactory.class, EnrichmentManagerFactoryImpl.class);
+            .registerFactory(EnrichmentManagerFactory.class, EnrichmentManagerFactoryImpl.class);
 
     VspDetails vsp =
-        createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
-            "category", "subCategory", "123", Collections.singletonList("fg1"));
+            createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
+                    "category", "subCategory", "123", Collections.singletonList("fg1"));
     doReturn(vsp).when(vspInfoDaoMock).get(anyObject());
     UploadDataEntity uploadData = new UploadDataEntity(VSP_ID, VERSION01);
     uploadData.setContentData(
-        ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition"))));
+            ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition"))));
     doReturn(uploadData).when(orchestrationTemplateDataDaoMock)
-        .getOrchestrationTemplate(anyObject(), anyObject());
+            .getOrchestrationTemplate(anyObject(), anyObject());
     doReturn(new ToscaServiceModel(new FileContentHandler(), new HashMap<>(),
-        "MainServiceTemplate.yaml"))
-        .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01);
+            "MainServiceTemplate.yaml"))
+            .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01);
 
     ValidationResponse validationResponse = vendorSoftwareProductManager.submit(VSP_ID, USER1);
     Assert.assertTrue(validationResponse.isValid());
@@ -613,8 +613,8 @@ public class VendorSoftwareProductManagerImplTest {
     Assert.assertNull(vsp2.getVersionInfo().getLockingUser());*/
 
     verify(versioningManagerMock)
-        .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
-            USER1, null);
+            .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
+                    USER1, null);
     verify(activityLogManagerMock).addActionLog(activityLogEntityArg.capture(), eq(USER1));
     ActivityLogEntity activityLogEntity = activityLogEntityArg.getValue();
     Assert.assertEquals(activityLogEntity.getVersionId(), String.valueOf(VERSION10.getMajor()));
@@ -633,11 +633,11 @@ public class VendorSoftwareProductManagerImplTest {
     VersionInfo versionInfo = new VersionInfo();
     versionInfo.setActiveVersion(VERSION10);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
-        VersionableEntityAction.Read);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
+            VersionableEntityAction.Read);
 
     doReturn(new ToscaServiceModel(new FileContentHandler(), new HashMap<>(), "")).when
-        (enrichedServiceModelDaoMock).getServiceModel(VSP_ID, VERSION10);
+            (enrichedServiceModelDaoMock).getServiceModel(VSP_ID, VERSION10);
 
     VspDetails vsp = new VspDetails(VSP_ID, VERSION10);
     vsp.setVendorId("vendorId");
@@ -646,8 +646,8 @@ public class VendorSoftwareProductManagerImplTest {
     doReturn(vsp).when(vspInfoDaoMock).get(any(VspDetails.class));
 
     doReturn(new FileContentHandler()).when(licenseArtifactsServiceMock)
-        .createLicenseArtifacts(VSP_ID, vsp.getVendorId(), VERSION10, vsp.getFeatureGroups(),
-            USER1);
+            .createLicenseArtifacts(VSP_ID, vsp.getVendorId(), VERSION10, vsp.getFeatureGroups(),
+                    USER1);
 
     PackageInfo packageInfo = vendorSoftwareProductManager.createPackage(VSP_ID, VERSION10, USER1);
     Assert.assertNotNull(packageInfo.getVspId());
@@ -659,7 +659,7 @@ public class VendorSoftwareProductManagerImplTest {
     InputStream zis = getFileInputStream("/vspmanager/zips/missingYml.zip");
 
     UploadFileResponse uploadFileResponse =
-        candidateManager.upload(VSP_ID, VERSION01, zis, USER1);
+            candidateManager.upload(VSP_ID, VERSION01, zis, USER1);
 
     Assert.assertEquals(uploadFileResponse.getErrors().size(), 0);
   }
@@ -671,8 +671,8 @@ public class VendorSoftwareProductManagerImplTest {
 
     try {
       candidateManager
-          .upload(VSP_ID, VERSION01,
-              url.openStream(), USER1);
+              .upload(VSP_ID, VERSION01,
+                      url.openStream(), USER1);
       candidateManager.process(VSP_ID, VERSION01, USER1);
     } catch (Exception ce) {
       Assert.assertEquals(ce.getMessage(), Messages.CREATE_MANIFEST_FROM_ZIP.getErrorMessage());
@@ -783,15 +783,15 @@ public class VendorSoftwareProductManagerImplTest {
   }*/
 
   private List<String> getWantedFileNamesFromCsar(String pathInCsar)
-      throws IOException {
+          throws IOException {
     File translatedFile = vendorSoftwareProductManager.getTranslatedFile(VSP_ID, VERSION10, USER1);
 
     return getFileNamesFromFolderInCsar(translatedFile,
-        pathInCsar);
+            pathInCsar);
   }
 
   private List<String> getFileNamesFromFolderInCsar(File csar, String folderName)
-      throws IOException {
+          throws IOException {
     List<String> fileNames = new ArrayList<>();
 
     ZipInputStream zip = new ZipInputStream(new FileInputStream(csar));
@@ -823,7 +823,7 @@ public class VendorSoftwareProductManagerImplTest {
   }*/
 
   private void createPackageFromUpload(String vspId, String user, String filePath)
-      throws IOException {
+          throws IOException {
     uploadFileAndProcess(vspId, user, filePath);
     checkinSubmitCreatePackage(vspId, user);
   }
@@ -892,7 +892,7 @@ public class VendorSoftwareProductManagerImplTest {
     candidateManager.process(vspId, VERSION01, user);
 
     UploadDataEntity uploadData =
-        orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version);
+            orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version);
     Assert.assertNotNull(uploadData);
   }
 
@@ -914,7 +914,7 @@ public class VendorSoftwareProductManagerImplTest {
 
   private void assertVSPInWantedLocationInVSPList(String vspId, int location, String user) {
     List<VersionedVendorSoftwareProductInfo> vspList =
-        vendorSoftwareProductManager.listVsps(null, user);
+            vendorSoftwareProductManager.listVsps(null, user);
     Assert.assertEquals(vspList.get(location).getVspDetails().getId(), vspId);
   }
 
@@ -1013,24 +1013,24 @@ public class VendorSoftwareProductManagerImplTest {
     VersionInfo versionInfo = new VersionInfo();
     versionInfo.setActiveVersion(VERSION01);
     doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
-        action);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
+            action);
   }
 
   private void mockVersioningEntityNotExist(VersionableEntityAction action, String vspId) {
     doThrow(new CoreException(new EntityNotExistErrorBuilder(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, vspId).build()))
-        .when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, vspId, USER1,
-        action);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, vspId).build()))
+            .when(versioningManagerMock).getEntityVersionInfo(
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, vspId, USER1,
+            action);
   }
 
   private void MockVersioningEntityLocked(VersionableEntityAction action) {
     doThrow(new CoreException(new EditOnEntityLockedByOtherErrorBuilder(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1)
-        .build()))
-        .when(versioningManagerMock).getEntityVersionInfo(
-        VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER2,
-        action);
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1)
+            .build()))
+            .when(versioningManagerMock).getEntityVersionInfo(
+            VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER2,
+            action);
   }
 }
\ No newline at end of file
index 0e6610d..c03ca56 100644 (file)
@@ -24,12 +24,15 @@ import org.openecomp.config.api.Configuration;
 import org.openecomp.config.api.ConfigurationManager;
 import org.openecomp.core.utilities.CommonMethods;
 import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.ErrorCode;
 import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
 import org.openecomp.sdc.heat.datatypes.manifest.FileData;
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestFile;
 import org.openecomp.sdc.heat.datatypes.model.Resource;
 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
+import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
 import org.openecomp.sdc.tosca.services.ToscaUtil;
 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslatedHeatResource;
@@ -42,8 +45,6 @@ import org.openecomp.sdc.translator.services.heattotosca.NameExtractor;
 import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
 
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -67,23 +68,23 @@ public class TranslationContext {
     Configuration config = ConfigurationManager.lookup();
     String propertyFileName = SdcCommon.HEAT_TO_TOSCA_MAPPING_CONF;
     translationMapping =
-        config.generateMap(ConfigConstants.MAPPING_NAMESPACE, ConfigConstants.RESOURCE_MAPPING_KEY);
+            config.generateMap(ConfigConstants.MAPPING_NAMESPACE, ConfigConstants.RESOURCE_MAPPING_KEY);
     try {
       globalServiceTemplates = GlobalTypesGenerator.getGlobalTypesServiceTemplate();
     } catch (Exception exc) {
       throw new RuntimeException("Failed to load GlobalTypes", exc);
     }
     nameExtractorImplMap = config.populateMap(ConfigConstants.TRANSLATOR_NAMESPACE,
-        ConfigConstants.NAMING_CONVENTION_EXTRACTOR_IMPL_KEY, ImplementationConfiguration.class);
+            ConfigConstants.NAMING_CONVENTION_EXTRACTOR_IMPL_KEY, ImplementationConfiguration.class);
     supportedConsolidationComputeResources = config.populateMap(ConfigConstants
-        .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
-        .SUPPORTED_CONSOLIDATION_COMPUTE_RESOURCES_KEY, ImplementationConfiguration.class);
+            .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
+            .SUPPORTED_CONSOLIDATION_COMPUTE_RESOURCES_KEY, ImplementationConfiguration.class);
     supportedConsolidationPortResources = config.populateMap(ConfigConstants
-        .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
-        .SUPPORTED_CONSOLIDATION_PORT_RESOURCES_KEY, ImplementationConfiguration.class);
+            .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
+            .SUPPORTED_CONSOLIDATION_PORT_RESOURCES_KEY, ImplementationConfiguration.class);
     enrichPortResourceProperties = config.getAsStringValues(ConfigConstants
-        .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
-        .ENRICH_PORT_RESOURCE_PROP);
+            .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
+            .ENRICH_PORT_RESOURCE_PROP);
 
   }
 
@@ -118,15 +119,18 @@ public class TranslationContext {
   private Map<String, UnifiedSubstitutionData> unifiedSubstitutionData = new HashMap<>();
   private Set<String> unifiedHandledServiceTemplates = new HashSet<>();
 
+  private Map<String, Map<RequirementAssignment, String>>
+          mapDependencySubMappingToRequirementAssignment = new HashMap<>();
+
   public static Map<String, ImplementationConfiguration>
   getSupportedConsolidationComputeResources() {
     return supportedConsolidationComputeResources;
   }
 
   public static void setSupportedConsolidationComputeResources(
-      Map<String, ImplementationConfiguration> supportedConsolidationComputeResources) {
+          Map<String, ImplementationConfiguration> supportedConsolidationComputeResources) {
     TranslationContext.supportedConsolidationComputeResources =
-        supportedConsolidationComputeResources;
+            supportedConsolidationComputeResources;
   }
 
   public static Map<String, ImplementationConfiguration> getSupportedConsolidationPortResources() {
@@ -134,7 +138,7 @@ public class TranslationContext {
   }
 
   public static void setSupportedConsolidationPortResources(
-      Map<String, ImplementationConfiguration> supportedConsolidationPortResources) {
+          Map<String, ImplementationConfiguration> supportedConsolidationPortResources) {
     TranslationContext.supportedConsolidationPortResources = supportedConsolidationPortResources;
   }
 
@@ -146,7 +150,7 @@ public class TranslationContext {
    */
   public static NameExtractor getNameExtractorImpl(String extractorImplKey) {
     String nameExtractorImplClassName =
-        nameExtractorImplMap.get(extractorImplKey).getImplementationClass();
+            nameExtractorImplMap.get(extractorImplKey).getImplementationClass();
 
     return CommonMethods.newInstance(nameExtractorImplClassName, NameExtractor.class);
   }
@@ -156,7 +160,7 @@ public class TranslationContext {
   }
 
   public void setUnifiedSubstitutionData(
-      Map<String, UnifiedSubstitutionData> unifiedSubstitutionData) {
+          Map<String, UnifiedSubstitutionData> unifiedSubstitutionData) {
     this.unifiedSubstitutionData = unifiedSubstitutionData;
   }
 
@@ -166,14 +170,14 @@ public class TranslationContext {
                                      NodeTemplate nodeTemplate) {
     this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
     this.unifiedSubstitutionData
-        .get(serviceTemplateName)
-        .addCleanedNodeTemplate(nodeTemplateId, unifiedCompositionEntity, nodeTemplate);
+            .get(serviceTemplateName)
+            .addCleanedNodeTemplate(nodeTemplateId, unifiedCompositionEntity, nodeTemplate);
   }
 
   public NodeTemplate getCleanedNodeTemplate(String serviceTemplateName,
                                              String nodeTemplateId) {
     return this.unifiedSubstitutionData.get(serviceTemplateName)
-        .getCleanedNodeTemplate(nodeTemplateId);
+            .getCleanedNodeTemplate(nodeTemplateId);
   }
 
   public void addUnifiedNestedNodeTemplateId(String serviceTemplateName,
@@ -181,13 +185,13 @@ public class TranslationContext {
                                              String unifiedNestedNodeTemplateId) {
     this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
     this.unifiedSubstitutionData.get(serviceTemplateName)
-        .addUnifiedNestedNodeTemplateId(nestedNodeTemplateId, unifiedNestedNodeTemplateId);
+            .addUnifiedNestedNodeTemplateId(nestedNodeTemplateId, unifiedNestedNodeTemplateId);
   }
 
   public Optional<String> getUnifiedNestedNodeTemplateId(String serviceTemplateName,
                                                          String nestedNodeTemplateId) {
     return this.unifiedSubstitutionData.get(serviceTemplateName) == null ? Optional.empty()
-        : this.unifiedSubstitutionData.get(serviceTemplateName)
+            : this.unifiedSubstitutionData.get(serviceTemplateName)
             .getUnifiedNestedNodeTemplateId(nestedNodeTemplateId);
   }
 
@@ -196,13 +200,13 @@ public class TranslationContext {
                                          String unifiedNestedNodeTypeId) {
     this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
     this.unifiedSubstitutionData.get(serviceTemplateName)
-        .addUnifiedNestedNodeTypeId(nestedNodeTypeId, unifiedNestedNodeTypeId);
+            .addUnifiedNestedNodeTypeId(nestedNodeTypeId, unifiedNestedNodeTypeId);
   }
 
   public Optional<String> getUnifiedNestedNodeTypeId(String serviceTemplateName,
                                                      String nestedNodeTemplateId) {
     return this.unifiedSubstitutionData.get(serviceTemplateName) == null ? Optional.empty()
-        : this.unifiedSubstitutionData.get(serviceTemplateName)
+            : this.unifiedSubstitutionData.get(serviceTemplateName)
             .getUnifiedNestedNodeTypeId(nestedNodeTemplateId);
   }
 
@@ -259,12 +263,12 @@ public class TranslationContext {
   }
 
   public Set<String> getAllTranslatedResourceIdsFromDiffNestedFiles(String
-                                                                        nestedHeatFileNameToSkip){
+                                                                            nestedHeatFileNameToSkip){
     Set<String> allTranslatedResourceIds = new HashSet<>();
 
     this.translatedIds.entrySet().stream().filter(
-        heatFileNameToTranslatedIdsEntry -> !heatFileNameToTranslatedIdsEntry.getKey()
-            .equals(nestedHeatFileNameToSkip)).forEach(heatFileNameToTranslatedIdsEntry -> {
+            heatFileNameToTranslatedIdsEntry -> !heatFileNameToTranslatedIdsEntry.getKey()
+                    .equals(nestedHeatFileNameToSkip)).forEach(heatFileNameToTranslatedIdsEntry -> {
       allTranslatedResourceIds.addAll(heatFileNameToTranslatedIdsEntry.getValue().keySet());
     });
 
@@ -325,7 +329,7 @@ public class TranslationContext {
   public void addHeatSharedResourcesByParam(String parameterName, String resourceId,
                                             Resource resource) {
     this.addHeatSharedResourcesByParam(parameterName,
-        new TranslatedHeatResource(resourceId, resource));
+            new TranslatedHeatResource(resourceId, resource));
   }
 
   private void addHeatSharedResourcesByParam(String parameterName,
@@ -351,7 +355,7 @@ public class TranslationContext {
   }
 
   public void addUsedHeatPseudoParams(String heatFileName, String heatPseudoParam, String
-      translatedToscaParam) {
+          translatedToscaParam) {
     if (Objects.isNull(this.usedHeatPseudoParams.get(heatFileName))) {
       this.usedHeatPseudoParams.put(heatFileName, new HashMap<>());
     }
@@ -371,15 +375,22 @@ public class TranslationContext {
                                          String abstractNodeTemplateId) {
 
     Map<String, String> nodeAbstractNodeTemplateIdMap = this.getUnifiedSubstitutionData()
-        .computeIfAbsent(serviceTemplateFileName, k -> new UnifiedSubstitutionData())
-        .getNodesRelatedAbstractNode();
+            .computeIfAbsent(serviceTemplateFileName, k -> new UnifiedSubstitutionData())
+            .getNodesRelatedAbstractNode();
 
     if (nodeAbstractNodeTemplateIdMap == null) {
       nodeAbstractNodeTemplateIdMap = new HashMap<>();
     }
+
+    if(nodeAbstractNodeTemplateIdMap.containsKey(originalNodeTemplateId)){
+      throw new CoreException((new ErrorCode.ErrorCodeBuilder())
+              .withMessage("Resource with id "
+                      + originalNodeTemplateId + " occures more than once in different addOn files")
+              .build());
+    }
     nodeAbstractNodeTemplateIdMap.put(originalNodeTemplateId, abstractNodeTemplateId);
     this.getUnifiedSubstitutionData().get(serviceTemplateFileName).setNodesRelatedAbstractNode(
-        nodeAbstractNodeTemplateIdMap);
+            nodeAbstractNodeTemplateIdMap);
   }
 
   /**
@@ -392,23 +403,23 @@ public class TranslationContext {
    *                                                  service template
    */
   public void addSubstitutionServiceTemplateUnifiedSubstitutionData(
-      String serviceTemplateFileName,
-      String originalNodeTemplateId,
-      String substitutionServiceTemplateNodeTemplateId) {
+          String serviceTemplateFileName,
+          String originalNodeTemplateId,
+          String substitutionServiceTemplateNodeTemplateId) {
 
     Map<String, String> nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap = this
-        .getUnifiedSubstitutionData()
-        .computeIfAbsent(serviceTemplateFileName, k -> new UnifiedSubstitutionData())
-        .getNodesRelatedSubstitutionServiceTemplateNode();
+            .getUnifiedSubstitutionData()
+            .computeIfAbsent(serviceTemplateFileName, k -> new UnifiedSubstitutionData())
+            .getNodesRelatedSubstitutionServiceTemplateNode();
 
     if (nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap == null) {
       nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap = new HashMap<>();
     }
     nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap.put(originalNodeTemplateId,
-        substitutionServiceTemplateNodeTemplateId);
+            substitutionServiceTemplateNodeTemplateId);
     this.getUnifiedSubstitutionData().get(serviceTemplateFileName)
-        .setNodesRelatedSubstitutionServiceTemplateNode(
-            nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap);
+            .setNodesRelatedSubstitutionServiceTemplateNode(
+                    nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap);
   }
 
   /**
@@ -420,7 +431,7 @@ public class TranslationContext {
   public String getUnifiedAbstractNodeTemplateId(ServiceTemplate serviceTemplate,
                                                  String nodeTemplateId) {
     UnifiedSubstitutionData unifiedSubstitutionData =
-        this.unifiedSubstitutionData.get(ToscaUtil.getServiceTemplateFileName(serviceTemplate));
+            this.unifiedSubstitutionData.get(ToscaUtil.getServiceTemplateFileName(serviceTemplate));
     return unifiedSubstitutionData.getNodesRelatedAbstractNode().get(nodeTemplateId);
   }
 
@@ -434,26 +445,26 @@ public class TranslationContext {
   public String getUnifiedSubstitutionNodeTemplateId(ServiceTemplate serviceTemplate,
                                                      String nodeTemplateId) {
     UnifiedSubstitutionData unifiedSubstitutionData =
-        this.unifiedSubstitutionData.get(ToscaUtil.getServiceTemplateFileName(serviceTemplate));
+            this.unifiedSubstitutionData.get(ToscaUtil.getServiceTemplateFileName(serviceTemplate));
     return unifiedSubstitutionData.getNodesRelatedSubstitutionServiceTemplateNode()
-        .get(nodeTemplateId);
+            .get(nodeTemplateId);
   }
 
   public int getHandledNestedComputeNodeTemplateIndex(String serviceTemplateName,
                                                       String computeType) {
     return this.unifiedSubstitutionData.get(serviceTemplateName)
-        .getHandledNestedComputeNodeTemplateIndex(computeType);
+            .getHandledNestedComputeNodeTemplateIndex(computeType);
   }
 
   public void updateHandledComputeType(String serviceTemplateName,
                                        String handledComputeType,
                                        String nestedServiceTemplateFileName) {
     String globalSTName =
-        ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
+            ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
     this.unifiedSubstitutionData.putIfAbsent(
-        globalSTName, new UnifiedSubstitutionData());
+            globalSTName, new UnifiedSubstitutionData());
     this.unifiedSubstitutionData.get(globalSTName)
-        .addHandledComputeType(handledComputeType);
+            .addHandledComputeType(handledComputeType);
     this.unifiedSubstitutionData.get(globalSTName).addHandlesNestedServiceTemplate(nestedServiceTemplateFileName);
 
     this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
@@ -469,15 +480,15 @@ public class TranslationContext {
   public boolean isComputeTypeHandledInServiceTemplate(String serviceTemplateName,
                                                        String computeType) {
     return !Objects.isNull(this.unifiedSubstitutionData.get(serviceTemplateName))
-        && this.unifiedSubstitutionData.get(serviceTemplateName)
-        .isComputeTypeHandledInServiceTemplate(computeType);
+            && this.unifiedSubstitutionData.get(serviceTemplateName)
+            .isComputeTypeHandledInServiceTemplate(computeType);
   }
 
   public int getHandledNestedComputeNodeTemplateIndex(String serviceTemplateName,
                                                       String nestedServiceTemplateName,
                                                       String computeType){
     return this.unifiedSubstitutionData.get(serviceTemplateName)
-        .getHandledNestedComputeNodeTemplateIndex(computeType);
+            .getHandledNestedComputeNodeTemplateIndex(computeType);
   }
 
   public boolean isNestedServiceTemplateWasHandled(String serviceTemplateName,
@@ -486,13 +497,13 @@ public class TranslationContext {
       return false;
     }
     return this.unifiedSubstitutionData.get(serviceTemplateName)
-        .isNestedServiceTemplateWasHandled(nestedServiceTemplateFileName);
+            .isNestedServiceTemplateWasHandled(nestedServiceTemplateFileName);
   }
 
   public Set<String> getAllRelatedNestedNodeTypeIds(){
     String globalName = "GlobalSubstitutionTypes";
     if(Objects.isNull(this.unifiedSubstitutionData) ||
-       Objects.isNull(this.unifiedSubstitutionData.get(globalName))){
+            Objects.isNull(this.unifiedSubstitutionData.get(globalName))){
       return new HashSet<>();
     }
 
@@ -520,14 +531,14 @@ public class TranslationContext {
       return false;
     }
     return this.unifiedSubstitutionData.get(serviceTemplateName)
-        .isNestedNodeWasHandled(nestedNodeTemplateId);
+            .isNestedNodeWasHandled(nestedNodeTemplateId);
   }
 
   public void addNestedNodeAsHandled(String serviceTemplateName,
                                      String nestedNodeTemplateId) {
     this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
     this.unifiedSubstitutionData.get(serviceTemplateName)
-        .addHandledNestedNodes(nestedNodeTemplateId);
+            .addHandledNestedNodes(nestedNodeTemplateId);
   }
 
   public void updateUsedTimesForNestedComputeNodeType(String serviceTemplateName,
@@ -535,7 +546,7 @@ public class TranslationContext {
     this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
 
     this.unifiedSubstitutionData.get(serviceTemplateName)
-        .updateUsedTimesForNestedComputeNodeType(computeType);
+            .updateUsedTimesForNestedComputeNodeType(computeType);
   }
 
   public int getGlobalNodeTypeIndex(String serviceTemplateName,
@@ -544,7 +555,7 @@ public class TranslationContext {
       return 0;
     }
     return this.unifiedSubstitutionData.get(serviceTemplateName).getGlobalNodeTypeIndex
-        (computeType);
+            (computeType);
   }
 
   public void addNewPropertyIdToNodeTemplate(String serviceTemplateName,
@@ -552,7 +563,7 @@ public class TranslationContext {
                                              Object origPropertyValue){
     this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
     this.unifiedSubstitutionData.get(serviceTemplateName).addNewPropertyIdToNodeTemplate(
-        newPropertyId, origPropertyValue);
+            newPropertyId, origPropertyValue);
   }
 
   public Optional<Object> getNewPropertyInputParamId(String serviceTemplateName,
@@ -562,7 +573,7 @@ public class TranslationContext {
     }
 
     return this.unifiedSubstitutionData.get(serviceTemplateName).getNewPropertyInputParam
-        (newPropertyId);
+            (newPropertyId);
   }
 
   public Map<String, Object> getAllNewPropertyInputParamIdsPerNodeTenplateId(String serviceTemplateName){
@@ -574,5 +585,27 @@ public class TranslationContext {
 
   }
 
+  public void addSubMappingReqAssignment(String serviceTemplateName,
+                                         RequirementAssignment requirementAssignment,
+                                         String newReqId){
+    this.mapDependencySubMappingToRequirementAssignment
+            .putIfAbsent(serviceTemplateName, new HashMap<>());
+    this.mapDependencySubMappingToRequirementAssignment.get(serviceTemplateName)
+            .putIfAbsent(requirementAssignment, newReqId);
+  }
+
+  public Optional<String> getNewReqAssignmentDependencyId(String serviceTemplateName,
+                                                          RequirementAssignment requirementAssignment){
+    if(!this.mapDependencySubMappingToRequirementAssignment.containsKey(serviceTemplateName)){
+      return Optional.empty();
+    }
+
+    Map<RequirementAssignment, String> requirementAssignmentMap =
+            this.mapDependencySubMappingToRequirementAssignment.get(serviceTemplateName);
+    return requirementAssignmentMap.containsKey
+            (requirementAssignment) ? Optional.of(requirementAssignmentMap.get(requirementAssignment)) :
+            Optional.empty();
+  }
+
 
 }
index 4e92372..b0bac3b 100644 (file)
@@ -57,41 +57,41 @@ public class ConsolidationDataUtil {
    * @return the compute template consolidation data
    */
   public static ComputeTemplateConsolidationData getComputeTemplateConsolidationData(
-      TranslationContext context,
-      ServiceTemplate serviceTemplate,
-      String computeNodeType,
-      String computeNodeTemplateId) {
+          TranslationContext context,
+          ServiceTemplate serviceTemplate,
+          String computeNodeType,
+          String computeNodeTemplateId) {
 
     ConsolidationData consolidationData = context.getConsolidationData();
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
 
     ComputeConsolidationData computeConsolidationData = consolidationData
-        .getComputeConsolidationData();
+            .getComputeConsolidationData();
 
     FileComputeConsolidationData fileComputeConsolidationData = computeConsolidationData
-        .getFileComputeConsolidationData(serviceTemplateFileName);
+            .getFileComputeConsolidationData(serviceTemplateFileName);
 
     if (fileComputeConsolidationData == null) {
       fileComputeConsolidationData = new FileComputeConsolidationData();
       computeConsolidationData.setFileComputeConsolidationData(serviceTemplateFileName,
-          fileComputeConsolidationData);
+              fileComputeConsolidationData);
     }
 
     TypeComputeConsolidationData typeComputeConsolidationData = fileComputeConsolidationData
-        .getTypeComputeConsolidationData(computeNodeType);
+            .getTypeComputeConsolidationData(computeNodeType);
     if (typeComputeConsolidationData == null) {
       typeComputeConsolidationData = new TypeComputeConsolidationData();
       fileComputeConsolidationData.setTypeComputeConsolidationData(computeNodeType,
-          typeComputeConsolidationData);
+              typeComputeConsolidationData);
     }
 
     ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
+            typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
     if (computeTemplateConsolidationData == null) {
       computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
       computeTemplateConsolidationData.setNodeTemplateId(computeNodeTemplateId);
       typeComputeConsolidationData.setComputeTemplateConsolidationData(computeNodeTemplateId,
-          computeTemplateConsolidationData);
+              computeTemplateConsolidationData);
     }
 
     return computeTemplateConsolidationData;
@@ -107,9 +107,9 @@ public class ConsolidationDataUtil {
    * @return the port template consolidation data
    */
   public static PortTemplateConsolidationData getPortTemplateConsolidationData(
-      TranslationContext context,
-      ServiceTemplate serviceTemplate,
-      String portNodeTemplateId) {
+          TranslationContext context,
+          ServiceTemplate serviceTemplate,
+          String portNodeTemplateId) {
 
     ConsolidationData consolidationData = context.getConsolidationData();
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
@@ -117,21 +117,21 @@ public class ConsolidationDataUtil {
     PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
 
     FilePortConsolidationData filePortConsolidationData = portConsolidationData
-        .getFilePortConsolidationData(serviceTemplateFileName);
+            .getFilePortConsolidationData(serviceTemplateFileName);
 
     if (filePortConsolidationData == null) {
       filePortConsolidationData = new FilePortConsolidationData();
       portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
-          filePortConsolidationData);
+              filePortConsolidationData);
     }
 
     PortTemplateConsolidationData portTemplateConsolidationData =
-        filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
+            filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
     if (portTemplateConsolidationData == null) {
       portTemplateConsolidationData = new PortTemplateConsolidationData();
       portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
       filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId,
-          portTemplateConsolidationData);
+              portTemplateConsolidationData);
     }
 
     return portTemplateConsolidationData;
@@ -147,40 +147,40 @@ public class ConsolidationDataUtil {
    *@param nestedNodeTemplateId the nested node template id  @return the nested template consolidation data
    */
   public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(
-      TranslationContext context,
-      ServiceTemplate serviceTemplate,
-      String nestedHeatFileName, String nestedNodeTemplateId) {
+          TranslationContext context,
+          ServiceTemplate serviceTemplate,
+          String nestedHeatFileName, String nestedNodeTemplateId) {
 
     if(isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
-        nestedNodeTemplateId)){
+            nestedNodeTemplateId)){
       throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-          .withMessage("Resource with id "
-              + nestedNodeTemplateId + " occures more than once in different addOn "
-              + "files").build());
+              .withMessage("Resource with id "
+                      + nestedNodeTemplateId + " occures more than once in different addOn "
+                      + "files").build());
     }
 
     ConsolidationData consolidationData = context.getConsolidationData();
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
 
     NestedConsolidationData nestedConsolidationData = consolidationData
-        .getNestedConsolidationData();
+            .getNestedConsolidationData();
 
     FileNestedConsolidationData fileNestedConsolidationData = nestedConsolidationData
-        .getFileNestedConsolidationData(serviceTemplateFileName);
+            .getFileNestedConsolidationData(serviceTemplateFileName);
 
     if (fileNestedConsolidationData == null) {
       fileNestedConsolidationData = new FileNestedConsolidationData();
       nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
-          fileNestedConsolidationData);
+              fileNestedConsolidationData);
     }
 
     NestedTemplateConsolidationData nestedTemplateConsolidationData =
-        fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
+            fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
     if (nestedTemplateConsolidationData == null) {
       nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
       nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
       fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
-          nestedTemplateConsolidationData);
+              nestedTemplateConsolidationData);
     }
 
     return nestedTemplateConsolidationData;
@@ -199,7 +199,7 @@ public class ConsolidationDataUtil {
    * @param translatedGroupId       Group id of which compute node is a part
    */
   public static void updateGroupIdInConsolidationData(EntityConsolidationData
-                                                          entityConsolidationData,
+                                                              entityConsolidationData,
                                                       String translatedGroupId) {
     if (entityConsolidationData.getGroupIds() == null) {
       entityConsolidationData.setGroupIds(new ArrayList<>());
@@ -220,12 +220,12 @@ public class ConsolidationDataUtil {
                                                            String computeNodeTemplateId,
                                                            String requirementId,
                                                            RequirementAssignment
-                                                               requirementAssignment) {
+                                                                   requirementAssignment) {
     TranslationContext translationContext = translateTo.getContext();
     ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
     ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
-            computeNodeTemplateId);
+            getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
+                    computeNodeTemplateId);
     computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
   }
 
@@ -243,8 +243,8 @@ public class ConsolidationDataUtil {
     TranslationContext translationContext = translateTo.getContext();
     ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
     ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType,
-            translateTo.getTranslatedId());
+            getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType,
+                    translateTo.getTranslatedId());
     computeTemplateConsolidationData.addPort(getPortType(portNodeTemplateId), portNodeTemplateId);
     // create port in consolidation data
     getPortTemplateConsolidationData(translationContext, serviceTemplate, portNodeTemplateId);
@@ -264,34 +264,42 @@ public class ConsolidationDataUtil {
                                               RequirementAssignment requirementAssignment) {
     ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
     HeatOrchestrationTemplate heatOrchestrationTemplate = translateTo
-        .getHeatOrchestrationTemplate();
+            .getHeatOrchestrationTemplate();
     TranslationContext translationContext = translateTo.getContext();
 
     consolidationEntityType.setEntityType(heatOrchestrationTemplate, sourceResource,
-        targetResource, translateTo.getContext());
+            targetResource, translateTo.getContext());
     // Add resource dependency information in nodesConnectedIn if the target node
     // is a consolidation entity
     if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
       ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
-          nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
-          requirementId, requirementAssignment);
+              nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
+              requirementId, requirementAssignment);
     }
 
     //Add resource dependency information in nodesConnectedOut if the source node
     //is a consolidation entity
     if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
       ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
-          requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
-          requirementId, requirementAssignment);
+              requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
+              requirementId, requirementAssignment);
+      ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
+              requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
+              requirementId + "_" + nodeTemplateId, requirementAssignment);
+
+      translationContext.addSubMappingReqAssignment(ToscaUtil.getServiceTemplateFileName
+                      (translateTo.getServiceTemplate()),
+              requirementAssignment, requirementId + "_" + nodeTemplateId);
+
     }
   }
 
 
   private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
     return (consolidationEntityType == ConsolidationEntityType.COMPUTE
-        || consolidationEntityType == ConsolidationEntityType.PORT
-        || consolidationEntityType == ConsolidationEntityType.NESTED
-        || consolidationEntityType == ConsolidationEntityType.VFC_NESTED);
+            || consolidationEntityType == ConsolidationEntityType.PORT
+            || consolidationEntityType == ConsolidationEntityType.NESTED
+            || consolidationEntityType == ConsolidationEntityType.VFC_NESTED);
   }
 
   /**
@@ -312,18 +320,18 @@ public class ConsolidationDataUtil {
     TranslationContext translationContext = translateTo.getContext();
     ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
     RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
-        requirementId, requirementAssignment);
+            requirementId, requirementAssignment);
 
     if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
       String nodeType = DataModelUtil.getNodeTemplate(serviceTemplate, translateTo
-          .getTranslatedId()).getType();
+              .getTranslatedId()).getType();
       entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
-          serviceTemplate, nodeType, translateTo.getTranslatedId());
+              serviceTemplate, nodeType, translateTo.getTranslatedId());
     } else if (consolidationEntityType == ConsolidationEntityType.PORT) {
       entityConsolidationData = getPortTemplateConsolidationData(translationContext,
-          serviceTemplate, translateTo.getTranslatedId());
+              serviceTemplate, translateTo.getTranslatedId());
     } else if (consolidationEntityType == ConsolidationEntityType.VFC_NESTED
-        || consolidationEntityType == ConsolidationEntityType.NESTED) {
+            || consolidationEntityType == ConsolidationEntityType.NESTED) {
       //ConnectedOut data for nested is not updated
       return;
     }
@@ -333,8 +341,8 @@ public class ConsolidationDataUtil {
     }
 
     entityConsolidationData.getNodesConnectedOut()
-        .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
-        .add(requirementAssignmentData);
+            .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
+            .add(requirementAssignmentData);
   }
 
   /**
@@ -355,34 +363,34 @@ public class ConsolidationDataUtil {
     TranslationContext translationContext = translateTo.getContext();
     ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
     RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
-        requirementId, requirementAssignment);
+            requirementId, requirementAssignment);
     String dependentNodeTemplateId = requirementAssignment.getNode();
     if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
       NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-          dependentNodeTemplateId);
+              dependentNodeTemplateId);
       String nodeType = null;
       if (Objects.isNull(computeNodeTemplate)) {
         Resource targetResource =
-            translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
+                translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
         NameExtractor nodeTypeNameExtractor =
-            translateTo.getContext().getNameExtractorImpl(targetResource.getType());
+                translateTo.getContext().getNameExtractorImpl(targetResource.getType());
         nodeType =
-            nodeTypeNameExtractor.extractNodeTypeName(translateTo.getHeatOrchestrationTemplate()
-                    .getResources().get(dependentNodeTemplateId),
-                dependentNodeTemplateId, dependentNodeTemplateId);
+                nodeTypeNameExtractor.extractNodeTypeName(translateTo.getHeatOrchestrationTemplate()
+                                .getResources().get(dependentNodeTemplateId),
+                        dependentNodeTemplateId, dependentNodeTemplateId);
       } else {
         nodeType = computeNodeTemplate.getType();
       }
 
       entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
-          serviceTemplate, nodeType, dependentNodeTemplateId);
+              serviceTemplate, nodeType, dependentNodeTemplateId);
     } else if (consolidationEntityType == ConsolidationEntityType.PORT) {
       entityConsolidationData = getPortTemplateConsolidationData(translationContext,
-          serviceTemplate, dependentNodeTemplateId);
+              serviceTemplate, dependentNodeTemplateId);
     } else if (consolidationEntityType == ConsolidationEntityType.NESTED
-        || consolidationEntityType == ConsolidationEntityType.VFC_NESTED) {
+            || consolidationEntityType == ConsolidationEntityType.VFC_NESTED) {
       entityConsolidationData = getNestedTemplateConsolidationData(translationContext,
-          serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId);
+              serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId);
     }
 
     if (entityConsolidationData.getNodesConnectedIn() == null) {
@@ -390,8 +398,8 @@ public class ConsolidationDataUtil {
     }
 
     entityConsolidationData.getNodesConnectedIn()
-        .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
-        .add(requirementAssignmentData);
+            .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
+            .add(requirementAssignmentData);
 
   }
 
@@ -406,7 +414,7 @@ public class ConsolidationDataUtil {
                                           String resourceId) {
     String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
     Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext
-        .getSupportedConsolidationComputeResources();
+            .getSupportedConsolidationComputeResources();
     if (supportedComputeResources.containsKey(resourceType)) {
       if (supportedComputeResources.get(resourceType).isEnable()) {
         return true;
@@ -425,7 +433,7 @@ public class ConsolidationDataUtil {
   public static boolean isComputeResource(Resource resource) {
     String resourceType = resource.getType();
     Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext
-        .getSupportedConsolidationComputeResources();
+            .getSupportedConsolidationComputeResources();
     if (supportedComputeResources.containsKey(resourceType)) {
       if (supportedComputeResources.get(resourceType).isEnable()) {
         return true;
@@ -446,7 +454,7 @@ public class ConsolidationDataUtil {
                                        String resourceId) {
     String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
     Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext
-        .getSupportedConsolidationPortResources();
+            .getSupportedConsolidationPortResources();
     if (supportedPortResources.containsKey(resourceType)) {
       if (supportedPortResources.get(resourceType).isEnable()) {
         return true;
@@ -465,7 +473,7 @@ public class ConsolidationDataUtil {
   public static boolean isPortResource(Resource resource) {
     String resourceType = resource.getType();
     Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext
-        .getSupportedConsolidationPortResources();
+            .getSupportedConsolidationPortResources();
     if (supportedPortResources.containsKey(resourceType)) {
       if (supportedPortResources.get(resourceType).isEnable()) {
         return true;
@@ -486,8 +494,8 @@ public class ConsolidationDataUtil {
                                          String resourceId) {
     String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
     return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
-        || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
-        .getHeatResource()));
+            || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
+            .getHeatResource()));
   }
 
   /**
@@ -499,8 +507,8 @@ public class ConsolidationDataUtil {
   public static boolean isVolumeResource(Resource resource) {
     String resourceType = resource.getType();
     return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
-        || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
-        .getHeatResource()));
+            || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
+            .getHeatResource()));
   }
 
   /**
@@ -541,7 +549,7 @@ public class ConsolidationDataUtil {
     TranslationContext context = translateTo.getContext();
     ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
     getNestedTemplateConsolidationData(
-        context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
+            context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
   }
 
   public static void removeSharedResource(ServiceTemplate serviceTemplate,
@@ -551,23 +559,23 @@ public class ConsolidationDataUtil {
                                           String contrailSharedResourceId,
                                           String sharedTranslatedResourceId) {
     if (ConsolidationDataUtil.isComputeResource(heatOrchestrationTemplate,
-        contrailSharedResourceId)) {
+            contrailSharedResourceId)) {
       NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-          sharedTranslatedResourceId);
+              sharedTranslatedResourceId);
       EntityConsolidationData entityConsolidationData = getComputeTemplateConsolidationData(
-          context, serviceTemplate, nodeTemplate.getType(), sharedTranslatedResourceId);
+              context, serviceTemplate, nodeTemplate.getType(), sharedTranslatedResourceId);
       List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
-          .getOutputParametersGetAttrIn();
+              .getOutputParametersGetAttrIn();
       removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);
     }
     if (ConsolidationDataUtil.isPortResource(heatOrchestrationTemplate,
-        contrailSharedResourceId)) {
+            contrailSharedResourceId)) {
       NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-          sharedTranslatedResourceId);
+              sharedTranslatedResourceId);
       EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(context,
-          serviceTemplate, sharedTranslatedResourceId);
+              serviceTemplate, sharedTranslatedResourceId);
       List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
-          .getOutputParametersGetAttrIn();
+              .getOutputParametersGetAttrIn();
       removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);
     }
   }
@@ -604,7 +612,7 @@ public class ConsolidationDataUtil {
   }
 
   public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
-                                                                     entityConsolidationData,
+                                                                         entityConsolidationData,
                                                                  String outputParameterName,
                                                                  String attributeName) {
 
index 4934fa7..876e524 100644 (file)
@@ -35,6 +35,7 @@ import org.apache.commons.lang3.tuple.Pair;
 import org.openecomp.config.api.Configuration;
 import org.openecomp.config.api.ConfigurationManager;
 import org.openecomp.core.utilities.CommonMethods;
+import org.openecomp.core.utilities.json.JsonUtil;
 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
 import org.openecomp.sdc.heat.services.HeatConstants;
 import org.openecomp.sdc.logging.api.Logger;
@@ -56,6 +57,7 @@ import org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition;
 import org.openecomp.sdc.tosca.datatypes.model.PropertyType;
 import org.openecomp.sdc.tosca.datatypes.model.RelationshipTemplate;
 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
+import org.openecomp.sdc.tosca.datatypes.model.RequirementDefinition;
 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
 import org.openecomp.sdc.tosca.datatypes.model.SubstitutionMapping;
 import org.openecomp.sdc.tosca.datatypes.model.heatextend.PropertyTypeExt;
@@ -95,27 +97,27 @@ import java.util.regex.Pattern;
 public class UnifiedCompositionService {
 
   protected static Logger logger =
-      (Logger) LoggerFactory.getLogger(UnifiedCompositionService.class);
+          (Logger) LoggerFactory.getLogger(UnifiedCompositionService.class);
   protected static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
   private static Map<String, ImplementationConfiguration> unifiedCompositionImplMap;
 
   static {
     Configuration config = ConfigurationManager.lookup();
     unifiedCompositionImplMap =
-        config.populateMap(ConfigConstants.MANDATORY_UNIFIED_MODEL_NAMESPACE,
-            ConfigConstants.UNIFIED_COMPOSITION_IMPL_KEY, ImplementationConfiguration.class);
+            config.populateMap(ConfigConstants.MANDATORY_UNIFIED_MODEL_NAMESPACE,
+                    ConfigConstants.UNIFIED_COMPOSITION_IMPL_KEY, ImplementationConfiguration.class);
 
   }
 
   private ConsolidationService consolidationService = new ConsolidationService();
 
   private static List<EntityConsolidationData> getPortConsolidationDataList(
-      Set<String> portIds,
-      List<UnifiedCompositionData> unifiedCompositionDataList) {
+          Set<String> portIds,
+          List<UnifiedCompositionData> unifiedCompositionDataList) {
     List<EntityConsolidationData> portConsolidationDataList = new ArrayList<>();
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
-          .getPortTemplateConsolidationDataList()) {
+              .getPortTemplateConsolidationDataList()) {
         if (portIds.contains(portTemplateConsolidationData.getNodeTemplateId())) {
           portConsolidationDataList.add(portTemplateConsolidationData);
         }
@@ -146,8 +148,8 @@ public class UnifiedCompositionService {
       return;
     }
     unifiedCompositionInstance.get()
-        .createUnifiedComposition(serviceTemplate, nestedServiceTemplate,
-            unifiedCompositionDataList, context);
+            .createUnifiedComposition(serviceTemplate, nestedServiceTemplate,
+                    unifiedCompositionDataList, context);
     mdcDataDebugMessage.debugExitMessage(null, null);
   }
 
@@ -164,41 +166,59 @@ public class UnifiedCompositionService {
    * @return the substitution service template
    */
   public Optional<ServiceTemplate> createUnifiedSubstitutionServiceTemplate(
-      ServiceTemplate serviceTemplate,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      TranslationContext context,
-      String substitutionNodeTypeId,
-      Integer index) {
+          ServiceTemplate serviceTemplate,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          TranslationContext context,
+          String substitutionNodeTypeId,
+          Integer index) {
     if (CollectionUtils.isEmpty(unifiedCompositionDataList)) {
       return Optional.empty();
     }
     UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0);
     String templateName =
-        getTemplateName(serviceTemplate, unifiedCompositionData, substitutionNodeTypeId, index);
+            getTemplateName(serviceTemplate, unifiedCompositionData, substitutionNodeTypeId, index);
     ServiceTemplate substitutionServiceTemplate =
-        HeatToToscaUtil.createInitSubstitutionServiceTemplate(templateName);
+            HeatToToscaUtil.createInitSubstitutionServiceTemplate(templateName);
 
     createIndexInputParameter(substitutionServiceTemplate);
 
     String computeNodeType =
-        handleCompute(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList,
-            context);
+            handleCompute(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList,
+                    context);
     handlePorts(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList,
-        computeNodeType, context);
+            computeNodeType, context);
     createOutputParameters(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList,
-        computeNodeType, context);
+            computeNodeType, context);
     NodeType substitutionGlobalNodeType =
-        handleSubstitutionGlobalNodeType(serviceTemplate, substitutionServiceTemplate,
-            context, unifiedCompositionData, substitutionNodeTypeId, index);
+            handleSubstitutionGlobalNodeType(serviceTemplate, substitutionServiceTemplate,
+                    context, unifiedCompositionData, substitutionNodeTypeId, index);
+
+    ServiceTemplate globalSubstitutionServiceTemplate =
+            HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
+    addComputeNodeTypeToGlobalST(computeNodeType, serviceTemplate,
+            globalSubstitutionServiceTemplate, substitutionGlobalNodeType);
 
     HeatToToscaUtil.handleSubstitutionMapping(context,
-        substitutionNodeTypeId,
-        substitutionServiceTemplate, substitutionGlobalNodeType);
+            substitutionNodeTypeId,
+            substitutionServiceTemplate, substitutionGlobalNodeType);
 
     context.getTranslatedServiceTemplates().put(templateName, substitutionServiceTemplate);
     return Optional.of(substitutionServiceTemplate);
   }
 
+  private void addComputeNodeTypeToGlobalST(String computeNodeType,
+                                            ServiceTemplate serviceTemplate,
+                                            ServiceTemplate globalSubstitutionServiceTemplate,
+                                            NodeType substitutionGlobalNodeType) {
+    NodeType nodeType = DataModelUtil.getNodeType(serviceTemplate, computeNodeType);
+    NodeType clonedNT =
+            (NodeType) DataModelUtil.getClonedObject(substitutionGlobalNodeType, NodeType.class);
+    clonedNT.setDerived_from(nodeType.getDerived_from());
+    DataModelUtil
+            .addNodeType(globalSubstitutionServiceTemplate, computeNodeType,
+                    clonedNT);
+  }
+
   /**
    * Create abstract substitute node template that can be substituted by the input
    * substitutionServiceTemplate.
@@ -213,12 +233,12 @@ public class UnifiedCompositionService {
    * @return the abstract substitute node template id
    */
   public String createAbstractSubstituteNodeTemplate(
-      ServiceTemplate serviceTemplate,
-      ServiceTemplate substitutionServiceTemplate,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      String substituteNodeTypeId,
-      TranslationContext context,
-      Integer index) {
+          ServiceTemplate serviceTemplate,
+          ServiceTemplate substitutionServiceTemplate,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          String substituteNodeTypeId,
+          TranslationContext context,
+          Integer index) {
 
     NodeTemplate substitutionNodeTemplate = new NodeTemplate();
     List<String> directiveList = new ArrayList<>();
@@ -226,26 +246,26 @@ public class UnifiedCompositionService {
     substitutionNodeTemplate.setDirectives(directiveList);
     substitutionNodeTemplate.setType(substituteNodeTypeId);
     Optional<Map<String, Object>> abstractSubstitutionProperties =
-        createAbstractSubstitutionProperties(serviceTemplate,
-            substitutionServiceTemplate, unifiedCompositionDataList, context);
+            createAbstractSubstitutionProperties(serviceTemplate,
+                    substitutionServiceTemplate, unifiedCompositionDataList, context);
     abstractSubstitutionProperties.ifPresent(substitutionNodeTemplate::setProperties);
 
     //Add substitution filtering property
     String substitutionServiceTemplateName = ToscaUtil.getServiceTemplateFileName(
-        substitutionServiceTemplate);
+            substitutionServiceTemplate);
     int count = unifiedCompositionDataList.size();
     DataModelUtil.addSubstitutionFilteringProperty(substitutionServiceTemplateName,
-        substitutionNodeTemplate, count);
+            substitutionNodeTemplate, count);
     //Add index_value property
     addIndexValueProperty(substitutionNodeTemplate);
     String substituteNodeTemplateId =
-        getSubstituteNodeTemplateId(serviceTemplate, unifiedCompositionDataList.get(0),
-            substituteNodeTypeId, index);
+            getSubstituteNodeTemplateId(serviceTemplate, unifiedCompositionDataList.get(0),
+                    substituteNodeTypeId, index);
     //Add node template id and related abstract node template id in context
     addUnifiedSubstitionData(context, serviceTemplate, unifiedCompositionDataList,
-        substituteNodeTemplateId);
+            substituteNodeTemplateId);
     DataModelUtil
-        .addNodeTemplate(serviceTemplate, substituteNodeTemplateId, substitutionNodeTemplate);
+            .addNodeTemplate(serviceTemplate, substituteNodeTemplateId, substitutionNodeTemplate);
     return substituteNodeTemplateId;
 
   }
@@ -284,18 +304,18 @@ public class UnifiedCompositionService {
    * @param context                    the translation context
    */
   public void cleanUnifiedCompositionEntities(
-      ServiceTemplate serviceTemplate,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          TranslationContext context) {
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       ComputeTemplateConsolidationData computeTemplateConsolidationData =
-          unifiedCompositionData.getComputeTemplateConsolidationData();
+              unifiedCompositionData.getComputeTemplateConsolidationData();
       cleanServiceTemplate(serviceTemplate, computeTemplateConsolidationData, context);
 
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
       for (PortTemplateConsolidationData portTemplateConsolidationData :
-          portTemplateConsolidationDataList) {
+              portTemplateConsolidationDataList) {
         cleanServiceTemplate(serviceTemplate, portTemplateConsolidationData, context);
       }
     }
@@ -314,8 +334,8 @@ public class UnifiedCompositionService {
                              TranslationContext context) {
     for (UnifiedCompositionData unifiedData : unifiedCompositionDataList) {
       removeCleanedNodeType(
-          unifiedData.getComputeTemplateConsolidationData().getNodeTemplateId(), serviceTemplate,
-          context);
+              unifiedData.getComputeTemplateConsolidationData().getNodeTemplateId(), serviceTemplate,
+              context);
     }
     if (MapUtils.isEmpty(serviceTemplate.getNode_types())) {
       serviceTemplate.setNode_types(null);
@@ -334,16 +354,16 @@ public class UnifiedCompositionService {
 
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
     UnifiedSubstitutionData unifiedSubstitutionData = context.getUnifiedSubstitutionData()
-        .get(serviceTemplateFileName);
+            .get(serviceTemplateFileName);
 
     if (Objects.nonNull(unifiedSubstitutionData)) {
       //Handle get attribute in connectivity for abstarct node to abstract node templates
       Set<String> abstractNodeIds =
-          new HashSet<>(unifiedSubstitutionData.getAllRelatedAbstractNodeIds());
+              new HashSet<>(unifiedSubstitutionData.getAllRelatedAbstractNodeIds());
       handleGetAttrInConnectivity(serviceTemplate, abstractNodeIds, context);
       //Handle get attribute in connectivity for abstract node templates to nested node template
       Set<String> nestedNodeIds =
-          new HashSet<>(unifiedSubstitutionData.getAllUnifiedNestedNodeTemplateIds());
+              new HashSet<>(unifiedSubstitutionData.getAllUnifiedNestedNodeTemplateIds());
       handleGetAttrInConnectivity(serviceTemplate, nestedNodeIds, context);
     }
   }
@@ -362,19 +382,19 @@ public class UnifiedCompositionService {
                                             TranslationContext context) {
     handleUnifiedNestedNodeType(mainServiceTemplate, nestedServiceTemplate, context);
     updateUnifiedNestedTemplates(mainServiceTemplate, nestedServiceTemplate,
-        unifiedCompositionData, context);
+            unifiedCompositionData, context);
   }
 
   private void handleGetAttrInConnectivity(ServiceTemplate serviceTemplate,
                                            Set<String> unifiedNodeIds,
                                            TranslationContext context) {
     Map<String, NodeTemplate> nodeTemplates =
-        serviceTemplate.getTopology_template().getNode_templates();
+            serviceTemplate.getTopology_template().getNode_templates();
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
     for (String unifiedNodeId : unifiedNodeIds) {
       NodeTemplate nodeTemplate = nodeTemplates.get(unifiedNodeId);
       handleGetAttrInAbstractNodeTemplate(serviceTemplate, context, serviceTemplateFileName,
-          nodeTemplate);
+              nodeTemplate);
     }
   }
 
@@ -384,30 +404,30 @@ public class UnifiedCompositionService {
 
 
     SubstitutionMapping substitutionMappings =
-        nestedServiceTemplate.getTopology_template().getSubstitution_mappings();
+            nestedServiceTemplate.getTopology_template().getSubstitution_mappings();
     String nodeTypeId = substitutionMappings.getNode_type();
 
     Optional<String> newNestedNodeTypeId =
-        getNewNestedNodeTypeId(mainServiceTemplate, nestedServiceTemplate, context);
+            getNewNestedNodeTypeId(mainServiceTemplate, nestedServiceTemplate, context);
 
     ServiceTemplate globalSubstitutionServiceTemplate =
-        context.getGlobalSubstitutionServiceTemplate();
+            context.getGlobalSubstitutionServiceTemplate();
 
     if (isNestedServiceTemplateWasHandled(globalSubstitutionServiceTemplate, nestedServiceTemplate,
-        context,
-        newNestedNodeTypeId)) {
+            context,
+            newNestedNodeTypeId)) {
       context
-          .updateHandledComputeType(ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
-              newNestedNodeTypeId.get(),
-              ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
+              .updateHandledComputeType(ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
+                      newNestedNodeTypeId.get(),
+                      ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
       return;
     }
 
 
     newNestedNodeTypeId.ifPresent(
-        newNestedNodeTypeIdVal -> handleNestedNodeType(nodeTypeId, newNestedNodeTypeIdVal,
-            nestedServiceTemplate, mainServiceTemplate, globalSubstitutionServiceTemplate,
-            context));
+            newNestedNodeTypeIdVal -> handleNestedNodeType(nodeTypeId, newNestedNodeTypeIdVal,
+                    nestedServiceTemplate, mainServiceTemplate, globalSubstitutionServiceTemplate,
+                    context));
 
   }
 
@@ -416,9 +436,9 @@ public class UnifiedCompositionService {
                                                     TranslationContext context,
                                                     Optional<String> newNestedNodeTypeId) {
     return newNestedNodeTypeId.isPresent()
-        && context.isNestedServiceTemplateWasHandled(
-        ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
-        ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
+            && context.isNestedServiceTemplateWasHandled(
+            ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
+            ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
   }
 
   private void handleNestedNodeType(String nodeTypeId, String newNestedNodeTypeId,
@@ -428,8 +448,8 @@ public class UnifiedCompositionService {
                                     TranslationContext context) {
     updateNestedServiceTemplate(nestedServiceTemplate, context);
     updateNestedNodeType(nodeTypeId, newNestedNodeTypeId, nestedServiceTemplate,
-        mainServiceTemplate,
-        globalSubstitutionServiceTemplate, context);
+            mainServiceTemplate,
+            globalSubstitutionServiceTemplate, context);
 
 
   }
@@ -442,24 +462,24 @@ public class UnifiedCompositionService {
   private void enrichPortProperties(ServiceTemplate nestedServiceTemplate,
                                     TranslationContext context) {
     String nestedServiceTemplateFileName =
-        ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate);
+            ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate);
     FilePortConsolidationData filePortConsolidationData =
-        context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData
-            (nestedServiceTemplateFileName);
+            context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData
+                    (nestedServiceTemplateFileName);
 
     if (Objects.nonNull(filePortConsolidationData)) {
       Set<String> portNodeTemplateIds = filePortConsolidationData.getAllPortNodeTemplateIds();
       if (Objects.nonNull(portNodeTemplateIds)) {
         for (String portNodeTemplateId : portNodeTemplateIds) {
           NodeTemplate portNodeTemplate = DataModelUtil.getNodeTemplate(nestedServiceTemplate,
-              portNodeTemplateId);
+                  portNodeTemplateId);
           List<EntityConsolidationData> portEntityConsolidationDataList = new ArrayList<>();
           portEntityConsolidationDataList.add(filePortConsolidationData
-              .getPortTemplateConsolidationData(portNodeTemplateId));
+                  .getPortTemplateConsolidationData(portNodeTemplateId));
 
           handleNodeTypeProperties(nestedServiceTemplate,
-              portEntityConsolidationDataList, portNodeTemplate, UnifiedCompositionEntity.Port,
-              null, context);
+                  portEntityConsolidationDataList, portNodeTemplate, UnifiedCompositionEntity.Port,
+                  null, context);
         }
       }
     }
@@ -471,12 +491,14 @@ public class UnifiedCompositionService {
                                     ServiceTemplate globalSubstitutionServiceTemplate,
                                     TranslationContext context) {
     String indexedNewNestedNodeTypeId =
-        updateNodeTypeId(nodeTypeId, newNestedNodeTypeId, nestedServiceTemplate,
-            mainServiceTemplate,
-            globalSubstitutionServiceTemplate, context);
+            updateNodeTypeId(nodeTypeId, newNestedNodeTypeId, nestedServiceTemplate,
+                    mainServiceTemplate,
+                    globalSubstitutionServiceTemplate, context);
 
     updateNodeTypeProperties(nestedServiceTemplate, globalSubstitutionServiceTemplate,
-        indexedNewNestedNodeTypeId);
+            indexedNewNestedNodeTypeId);
+    //addComputeNodeTypeToGlobalST();
+
   }
 
   private void updateNodeTypeProperties(ServiceTemplate nestedServiceTemplate,
@@ -484,10 +506,12 @@ public class UnifiedCompositionService {
                                         String nodeTypeId) {
     ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
     Map<String, PropertyDefinition> nodeTypePropertiesDefinition =
-        toscaAnalyzerService.manageSubstitutionNodeTypeProperties(nestedServiceTemplate);
+            toscaAnalyzerService.manageSubstitutionNodeTypeProperties(nestedServiceTemplate);
     NodeType nestedNodeType =
-        DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, nodeTypeId);
+            DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, nodeTypeId);
     nestedNodeType.setProperties(nodeTypePropertiesDefinition);
+    addComputeNodeTypeToGlobalST(nestedServiceTemplate.getNode_types().keySet().iterator().next()
+            , nestedServiceTemplate, globalSubstitutionServiceTemplate, nestedNodeType);
   }
 
   private String updateNodeTypeId(String nodeTypeId, String newNestedNodeTypeId,
@@ -496,17 +520,17 @@ public class UnifiedCompositionService {
                                   ServiceTemplate globalSubstitutionServiceTemplate,
                                   TranslationContext context) {
     String indexedNewNestedNodeTypeId =
-        handleNestedNodeTypeInGlobalSubstitutionTemplate(nodeTypeId, newNestedNodeTypeId,
-            globalSubstitutionServiceTemplate, context);
+            handleNestedNodeTypeInGlobalSubstitutionTemplate(nodeTypeId, newNestedNodeTypeId,
+                    globalSubstitutionServiceTemplate, context);
 
     handleSubstitutionMappingInNestedServiceTemplate(indexedNewNestedNodeTypeId,
-        nestedServiceTemplate, context);
+            nestedServiceTemplate, context);
 
     context
-        .updateHandledComputeType(
-            ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
-            ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate),
-            newNestedNodeTypeId);
+            .updateHandledComputeType(
+                    ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
+                    ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate),
+                    newNestedNodeTypeId);
     return indexedNewNestedNodeTypeId;
   }
 
@@ -515,23 +539,23 @@ public class UnifiedCompositionService {
                                                                   ServiceTemplate globalSubstitutionServiceTemplate,
                                                                   TranslationContext context) {
     String indexedNodeType =
-        getIndexedGlobalNodeTypeId(newNestedNodeTypeId, context);
+            getIndexedGlobalNodeTypeId(newNestedNodeTypeId, context);
     context.updateUsedTimesForNestedComputeNodeType(
-        ToscaUtil.getServiceTemplateFileName(globalSubstitutionServiceTemplate),
-        newNestedNodeTypeId);
+            ToscaUtil.getServiceTemplateFileName(globalSubstitutionServiceTemplate),
+            newNestedNodeTypeId);
     handleNestedNodeTypesInGlobalSubstituteServiceTemplate(nodeTypeId, indexedNodeType,
-        globalSubstitutionServiceTemplate, context);
+            globalSubstitutionServiceTemplate, context);
     return indexedNodeType;
   }
 
   private String getIndexedGlobalNodeTypeId(String newNestedNodeTypeId,
                                             TranslationContext context) {
     int globalNodeTypeIndex =
-        context.getGlobalNodeTypeIndex(
-            ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME),
-            newNestedNodeTypeId);
+            context.getGlobalNodeTypeIndex(
+                    ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME),
+                    newNestedNodeTypeId);
     return globalNodeTypeIndex > 0 ? newNestedNodeTypeId + "_"
-        + String.valueOf(globalNodeTypeIndex) : newNestedNodeTypeId;
+            + String.valueOf(globalNodeTypeIndex) : newNestedNodeTypeId;
   }
 
   private void updateUnifiedNestedTemplates(ServiceTemplate mainServiceTemplate,
@@ -540,13 +564,13 @@ public class UnifiedCompositionService {
                                             TranslationContext context) {
 
     NestedTemplateConsolidationData nestedTemplateConsolidationData =
-        unifiedCompositionData.getNestedTemplateConsolidationData();
+            unifiedCompositionData.getNestedTemplateConsolidationData();
     if (Objects.isNull(nestedTemplateConsolidationData)) {
       return;
     }
     handleNestedNodeTemplateInMainServiceTemplate(
-        nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate,
-        nestedServiceTemplate, context);
+            nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate,
+            nestedServiceTemplate, context);
 
   }
 
@@ -564,11 +588,11 @@ public class UnifiedCompositionService {
                                               TranslationContext context) {
 
     updNestedCompositionNodesConnectedInConnectivity(serviceTemplate, unifiedCompositionData,
-        context);
+            context);
     updNestedCompositionNodesGetAttrInConnectivity(serviceTemplate, unifiedCompositionData,
-        context);
+            context);
     updNestedCompositionOutputParamGetAttrInConnectivity(serviceTemplate,
-        unifiedCompositionData, context);
+            unifiedCompositionData, context);
   }
 
 
@@ -583,21 +607,21 @@ public class UnifiedCompositionService {
                                          UnifiedCompositionData unifiedCompositionData,
                                          TranslationContext context) {
     EntityConsolidationData entityConsolidationData =
-        unifiedCompositionData.getNestedTemplateConsolidationData();
+            unifiedCompositionData.getNestedTemplateConsolidationData();
     updateHeatStackGroupNestedComposition(serviceTemplate, entityConsolidationData, context);
 
   }
 
   public void handleComplexVfcType(ServiceTemplate serviceTemplate, TranslationContext context) {
     SubstitutionMapping substitution_mappings =
-        serviceTemplate.getTopology_template().getSubstitution_mappings();
+            serviceTemplate.getTopology_template().getSubstitution_mappings();
 
     if (Objects.isNull(substitution_mappings)) {
       return;
     }
 
     ServiceTemplate globalSubstitutionServiceTemplate =
-        context.getGlobalSubstitutionServiceTemplate();
+            context.getGlobalSubstitutionServiceTemplate();
 
     String substitutionNT = substitution_mappings.getNode_type();
     if (globalSubstitutionServiceTemplate.getNode_types().containsKey(substitutionNT)) {
@@ -607,36 +631,37 @@ public class UnifiedCompositionService {
     }
   }
 
+
   protected void updNodesConnectedOutConnectivity(ServiceTemplate serviceTemplate,
                                                   List<UnifiedCompositionData>
-                                                      unifiedCompositionDataList,
+                                                          unifiedCompositionDataList,
                                                   TranslationContext context) {
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
-          .getComputeTemplateConsolidationData();
+              .getComputeTemplateConsolidationData();
       //Add requirements in the abstract node template for nodes connected out for computes
       String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
-          computeTemplateConsolidationData.getNodeTemplateId());
+              computeTemplateConsolidationData.getNodeTemplateId());
       Map<String, List<RequirementAssignmentData>> computeNodesConnectedOut =
-          computeTemplateConsolidationData.getNodesConnectedOut();
+              computeTemplateConsolidationData.getNodesConnectedOut();
       if (computeNodesConnectedOut != null) {
         updateRequirementInAbstractNodeTemplate(serviceTemplate, computeTemplateConsolidationData,
-            newComputeNodeTemplateId, computeNodesConnectedOut, context);
+                newComputeNodeTemplateId, computeNodesConnectedOut, context);
       }
       String computeType = getComputeTypeSuffix(serviceTemplate, computeTemplateConsolidationData
-          .getNodeTemplateId());
+              .getNodeTemplateId());
       //Add requirements in the abstract node template for nodes connected out for ports
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
       for (PortTemplateConsolidationData portTemplateConsolidationData :
-          portTemplateConsolidationDataList) {
+              portTemplateConsolidationDataList) {
         String newPortNodeTemplateId = getNewPortNodeTemplateId(portTemplateConsolidationData
-            .getNodeTemplateId(), computeType, computeTemplateConsolidationData);
+                .getNodeTemplateId(), computeType, computeTemplateConsolidationData);
         Map<String, List<RequirementAssignmentData>> portNodesConnectedOut =
-            portTemplateConsolidationData.getNodesConnectedOut();
+                portTemplateConsolidationData.getNodesConnectedOut();
         if (portNodesConnectedOut != null) {
           updateRequirementInAbstractNodeTemplate(serviceTemplate, portTemplateConsolidationData,
-              newPortNodeTemplateId, portNodesConnectedOut, context);
+                  newPortNodeTemplateId, portNodesConnectedOut, context);
         }
       }
     }
@@ -644,28 +669,28 @@ public class UnifiedCompositionService {
 
   protected void updNodesConnectedInConnectivity(ServiceTemplate serviceTemplate,
                                                  List<UnifiedCompositionData>
-                                                     unifiedCompositionDataList,
+                                                         unifiedCompositionDataList,
                                                  TranslationContext context) {
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
-          .getComputeTemplateConsolidationData();
+              .getComputeTemplateConsolidationData();
       //Update requirements in the node template which pointing to the computes
       String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
-          computeTemplateConsolidationData.getNodeTemplateId());
+              computeTemplateConsolidationData.getNodeTemplateId());
       updNodesConnectedInConnectivity(serviceTemplate, computeTemplateConsolidationData,
-          newComputeNodeTemplateId, context, false);
+              newComputeNodeTemplateId, context, false);
 
       String computeType = getComputeTypeSuffix(serviceTemplate, computeTemplateConsolidationData
-          .getNodeTemplateId());
+              .getNodeTemplateId());
       //Update requirements in the node template which pointing to the ports
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
       for (PortTemplateConsolidationData portTemplateConsolidationData :
-          portTemplateConsolidationDataList) {
+              portTemplateConsolidationDataList) {
         String newPortNodeTemplateId = getNewPortNodeTemplateId(portTemplateConsolidationData
-            .getNodeTemplateId(), computeType, computeTemplateConsolidationData);
+                .getNodeTemplateId(), computeType, computeTemplateConsolidationData);
         updNodesConnectedInConnectivity(serviceTemplate, portTemplateConsolidationData,
-            newPortNodeTemplateId, context, false);
+                newPortNodeTemplateId, context, false);
       }
     }
   }
@@ -676,19 +701,19 @@ public class UnifiedCompositionService {
                                                TranslationContext context,
                                                boolean isNested) {
     Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
-        entityConsolidationData.getNodesConnectedIn();
+            entityConsolidationData.getNodesConnectedIn();
     if (nodesConnectedIn == null) {
       //No nodes connected in info
       return;
     }
     for (Map.Entry<String, List<RequirementAssignmentData>> entry : nodesConnectedIn
-        .entrySet()) {
+            .entrySet()) {
       List<RequirementAssignmentData> requirementAssignmentDataList = entry.getValue();
       for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) {
         RequirementAssignment requirementAssignment = requirementAssignmentData
-            .getRequirementAssignment();
+                .getRequirementAssignment();
         if (!requirementAssignment.getNode().equals(entityConsolidationData
-            .getNodeTemplateId())) {
+                .getNodeTemplateId())) {
           //The requirement assignment target node should be the one which we are handling in the
           //consolidation object
           continue;
@@ -696,10 +721,10 @@ public class UnifiedCompositionService {
         //Update the requirement assignment object in the original node template
         if (isNested) {
           updateRequirementForNestedCompositionNodesConnectedIn(serviceTemplate,
-              requirementAssignmentData, entityConsolidationData, newNodeTemplateId, context);
+                  requirementAssignmentData, entityConsolidationData, newNodeTemplateId, context);
         } else {
           updateRequirementForNodesConnectedIn(serviceTemplate, requirementAssignmentData,
-              entityConsolidationData, entry.getKey(), newNodeTemplateId, context);
+                  entityConsolidationData, entry.getKey(), newNodeTemplateId, context);
         }
 
       }
@@ -707,76 +732,76 @@ public class UnifiedCompositionService {
   }
 
   protected void updNestedCompositionNodesConnectedInConnectivity(
-      ServiceTemplate serviceTemplate,
-      UnifiedCompositionData unifiedCompositionData,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          UnifiedCompositionData unifiedCompositionData,
+          TranslationContext context) {
     NestedTemplateConsolidationData nestedTemplateConsolidationData = unifiedCompositionData
-        .getNestedTemplateConsolidationData();
+            .getNestedTemplateConsolidationData();
     //Update requirements in the node template which pointing to the nested nodes
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
     Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
-        serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
+            serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
     newNestedNodeTemplateId.ifPresent(
-        newNestedNodeTemplateIdVal -> updNodesConnectedInConnectivity(serviceTemplate,
-            nestedTemplateConsolidationData,
-            newNestedNodeTemplateIdVal, context, true));
+            newNestedNodeTemplateIdVal -> updNodesConnectedInConnectivity(serviceTemplate,
+                    nestedTemplateConsolidationData,
+                    newNestedNodeTemplateIdVal, context, true));
 
   }
 
   protected void updVolumeConnectivity(ServiceTemplate serviceTemplate,
                                        List<UnifiedCompositionData>
-                                           unifiedCompositionDataList,
+                                               unifiedCompositionDataList,
                                        TranslationContext context) {
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
-          .getComputeTemplateConsolidationData();
+              .getComputeTemplateConsolidationData();
       //Add requirements in the abstract node template for compute volumes
       String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
-          computeTemplateConsolidationData.getNodeTemplateId());
+              computeTemplateConsolidationData.getNodeTemplateId());
       Map<String, List<RequirementAssignmentData>> computeVolumes =
-          computeTemplateConsolidationData.getVolumes();
+              computeTemplateConsolidationData.getVolumes();
       if (computeVolumes != null) {
         updateRequirementInAbstractNodeTemplate(serviceTemplate, computeTemplateConsolidationData,
-            newComputeNodeTemplateId, computeVolumes, context);
+                newComputeNodeTemplateId, computeVolumes, context);
       }
     }
   }
 
   protected void updGroupsConnectivity(ServiceTemplate serviceTemplate,
                                        List<UnifiedCompositionData>
-                                           unifiedCompositionDataList,
+                                               unifiedCompositionDataList,
                                        TranslationContext context) {
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
-          .getComputeTemplateConsolidationData();
+              .getComputeTemplateConsolidationData();
       //Add requirements in the abstract node template for nodes connected in for computes
       String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
-          computeTemplateConsolidationData.getNodeTemplateId());
+              computeTemplateConsolidationData.getNodeTemplateId());
       updGroupsConnectivity(serviceTemplate, computeTemplateConsolidationData, context);
 
       String computeType = getComputeTypeSuffix(serviceTemplate, computeTemplateConsolidationData
-          .getNodeTemplateId());
+              .getNodeTemplateId());
       //Add requirements in the abstract node template for nodes connected in for ports
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
       for (PortTemplateConsolidationData portTemplateConsolidationData :
-          portTemplateConsolidationDataList) {
+              portTemplateConsolidationDataList) {
         String newPortNodeTemplateId = getNewPortNodeTemplateId(portTemplateConsolidationData
-            .getNodeTemplateId(), computeType, computeTemplateConsolidationData);
+                .getNodeTemplateId(), computeType, computeTemplateConsolidationData);
         updGroupsConnectivity(serviceTemplate, portTemplateConsolidationData, context);
       }
     }
   }
 
   private void updGroupsConnectivity(ServiceTemplate serviceTemplate, EntityConsolidationData
-      entityConsolidationData, TranslationContext context) {
+          entityConsolidationData, TranslationContext context) {
     List<String> groupIds = entityConsolidationData.getGroupIds();
     if (groupIds == null) {
       return;
     }
     String oldNodeTemplateId = entityConsolidationData.getNodeTemplateId();
     String abstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(
-        serviceTemplate, entityConsolidationData.getNodeTemplateId());
+            serviceTemplate, entityConsolidationData.getNodeTemplateId());
     Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups();
     if (groups != null) {
       for (String groupId : groupIds) {
@@ -797,194 +822,194 @@ public class UnifiedCompositionService {
   }
 
   protected void updOutputParamGetAttrInConnectivity(
-      ServiceTemplate serviceTemplate, List<UnifiedCompositionData> unifiedComposotionDataList,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate, List<UnifiedCompositionData> unifiedComposotionDataList,
+          TranslationContext context) {
     for (UnifiedCompositionData unifiedCompositionData : unifiedComposotionDataList) {
       ComputeTemplateConsolidationData computeTemplateConsolidationData =
-          unifiedCompositionData.getComputeTemplateConsolidationData();
+              unifiedCompositionData.getComputeTemplateConsolidationData();
       String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
-          computeTemplateConsolidationData.getNodeTemplateId());
+              computeTemplateConsolidationData.getNodeTemplateId());
 
       updOutputParamGetAttrInConnectivity(serviceTemplate, computeTemplateConsolidationData,
-          computeTemplateConsolidationData.getNodeTemplateId(), newComputeNodeTemplateId,
-          context, false);
+              computeTemplateConsolidationData.getNodeTemplateId(), newComputeNodeTemplateId,
+              context, false);
 
       String computeType =
-          getComputeTypeSuffix(serviceTemplate,
-              computeTemplateConsolidationData.getNodeTemplateId());
+              getComputeTypeSuffix(serviceTemplate,
+                      computeTemplateConsolidationData.getNodeTemplateId());
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
       for (PortTemplateConsolidationData portTemplateConsolidationData :
-          portTemplateConsolidationDataList) {
+              portTemplateConsolidationDataList) {
         String newPortNodeTemplateId =
-            getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), computeType,
-                computeTemplateConsolidationData);
+                getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), computeType,
+                        computeTemplateConsolidationData);
 
         updOutputParamGetAttrInConnectivity(serviceTemplate, portTemplateConsolidationData,
-            portTemplateConsolidationData.getNodeTemplateId(), newPortNodeTemplateId, context,
-            false);
+                portTemplateConsolidationData.getNodeTemplateId(), newPortNodeTemplateId, context,
+                false);
       }
     }
   }
 
   protected void updNodesGetAttrInConnectivity(
-      ServiceTemplate serviceTemplate,
-      List<UnifiedCompositionData> unifiedComposotionDataList,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          List<UnifiedCompositionData> unifiedComposotionDataList,
+          TranslationContext context) {
     Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType =
-        getAllConsolidationNodeTemplateIdAndType(unifiedComposotionDataList);
+            getAllConsolidationNodeTemplateIdAndType(unifiedComposotionDataList);
     for (UnifiedCompositionData unifiedCompositionData : unifiedComposotionDataList) {
       ComputeTemplateConsolidationData computeTemplateConsolidationData =
-          unifiedCompositionData.getComputeTemplateConsolidationData();
+              unifiedCompositionData.getComputeTemplateConsolidationData();
       String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
-          computeTemplateConsolidationData.getNodeTemplateId());
+              computeTemplateConsolidationData.getNodeTemplateId());
 
       updNodeGetAttrInConnectivity(serviceTemplate, computeTemplateConsolidationData,
-          computeTemplateConsolidationData.getNodeTemplateId(),
-          newComputeNodeTemplateId, context, consolidationNodeTemplateIdAndType, false);
+              computeTemplateConsolidationData.getNodeTemplateId(),
+              newComputeNodeTemplateId, context, consolidationNodeTemplateIdAndType, false);
 
       String computeType =
-          getComputeTypeSuffix(serviceTemplate,
-              computeTemplateConsolidationData.getNodeTemplateId());
+              getComputeTypeSuffix(serviceTemplate,
+                      computeTemplateConsolidationData.getNodeTemplateId());
 
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
       for (PortTemplateConsolidationData portTemplateConsolidationData :
-          portTemplateConsolidationDataList) {
+              portTemplateConsolidationDataList) {
         String newPotNodeTemplateId =
-            getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), computeType,
-                computeTemplateConsolidationData);
+                getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), computeType,
+                        computeTemplateConsolidationData);
 
         updNodeGetAttrInConnectivity(serviceTemplate, portTemplateConsolidationData,
-            portTemplateConsolidationData.getNodeTemplateId(),
-            newPotNodeTemplateId, context, consolidationNodeTemplateIdAndType, false);
+                portTemplateConsolidationData.getNodeTemplateId(),
+                newPotNodeTemplateId, context, consolidationNodeTemplateIdAndType, false);
       }
     }
   }
 
   protected void updNestedCompositionOutputParamGetAttrInConnectivity(
-      ServiceTemplate serviceTemplate, UnifiedCompositionData unifiedCompositionData,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate, UnifiedCompositionData unifiedCompositionData,
+          TranslationContext context) {
     NestedTemplateConsolidationData nestedTemplateConsolidationData =
-        unifiedCompositionData.getNestedTemplateConsolidationData();
+            unifiedCompositionData.getNestedTemplateConsolidationData();
     if (Objects.isNull(nestedTemplateConsolidationData)) {
       return;
     }
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
     Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
-        serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
+            serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
 
     newNestedNodeTemplateId.ifPresent(
-        newNestedNodeTemplateIdVal -> updOutputParamGetAttrInConnectivity(serviceTemplate,
-            nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(),
-            newNestedNodeTemplateIdVal, context, true));
+            newNestedNodeTemplateIdVal -> updOutputParamGetAttrInConnectivity(serviceTemplate,
+                    nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(),
+                    newNestedNodeTemplateIdVal, context, true));
   }
 
   protected void updNestedCompositionNodesGetAttrInConnectivity(
-      ServiceTemplate serviceTemplate,
-      UnifiedCompositionData unifiedCompositionData,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          UnifiedCompositionData unifiedCompositionData,
+          TranslationContext context) {
     NestedTemplateConsolidationData nestedTemplateConsolidationData =
-        unifiedCompositionData.getNestedTemplateConsolidationData();
+            unifiedCompositionData.getNestedTemplateConsolidationData();
     if (Objects.isNull(nestedTemplateConsolidationData)) {
       return;
     }
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
     Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
-        serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
+            serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
 
     newNestedNodeTemplateId.ifPresent(
-        newNestedNodeTemplateIdVal -> updNodeGetAttrInConnectivity(serviceTemplate,
-            nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(),
-            newNestedNodeTemplateIdVal, context, null, true));
+            newNestedNodeTemplateIdVal -> updNodeGetAttrInConnectivity(serviceTemplate,
+                    nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(),
+                    newNestedNodeTemplateIdVal, context, null, true));
   }
 
   private void updateRequirementForNodesConnectedIn(
-      ServiceTemplate serviceTemplate,
-      RequirementAssignmentData requirementAssignmentData,
-      EntityConsolidationData entityConsolidationData,
-      String originalNodeTemplateId,
-      String newNodeTemplateId,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          RequirementAssignmentData requirementAssignmentData,
+          EntityConsolidationData entityConsolidationData,
+          String originalNodeTemplateId,
+          String newNodeTemplateId,
+          TranslationContext context) {
     ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
     RequirementAssignment requirementAssignment = requirementAssignmentData
-        .getRequirementAssignment();
+            .getRequirementAssignment();
     String newAbstractUnifiedNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(
-        serviceTemplate, entityConsolidationData.getNodeTemplateId());
+            serviceTemplate, entityConsolidationData.getNodeTemplateId());
     NodeTemplate abstractUnifiedNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-        newAbstractUnifiedNodeTemplateId);
+            newAbstractUnifiedNodeTemplateId);
     Optional<String> newCapabilityId = getNewCapabilityForNodesConnectedIn(serviceTemplate,
-        abstractUnifiedNodeTemplate, requirementAssignment, newNodeTemplateId, context);
+            abstractUnifiedNodeTemplate, requirementAssignment, newNodeTemplateId, context);
     if (newCapabilityId.isPresent()) {
       //Creating a copy of the requirement object and checking if it already exists in the
       // original node template
       RequirementAssignment requirementAssignmentCopy = (RequirementAssignment) getClonedObject(
-          requirementAssignmentData.getRequirementAssignment(), RequirementAssignment.class);
+              requirementAssignmentData.getRequirementAssignment(), RequirementAssignment.class);
       NodeTemplate originalNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-          originalNodeTemplateId);
+              originalNodeTemplateId);
       requirementAssignmentCopy.setCapability(newCapabilityId.get());
       requirementAssignmentCopy.setNode(newAbstractUnifiedNodeTemplateId);
       if (!toscaAnalyzerService.isRequirementExistInNodeTemplate(originalNodeTemplate,
-          requirementAssignmentData.getRequirementId(), requirementAssignmentCopy)) {
+              requirementAssignmentData.getRequirementId(), requirementAssignmentCopy)) {
         //Update the existing requirement
         requirementAssignmentData.getRequirementAssignment().setCapability(newCapabilityId
-            .get());
+                .get());
         requirementAssignmentData.getRequirementAssignment()
-            .setNode(newAbstractUnifiedNodeTemplateId);
+                .setNode(newAbstractUnifiedNodeTemplateId);
       } else {
         //The updated requirement already exists in the node template so simply remove the
         // current one
         DataModelUtil.removeRequirementAssignment(originalNodeTemplate, requirementAssignmentData
-            .getRequirementId(), requirementAssignmentData.getRequirementAssignment());
+                .getRequirementId(), requirementAssignmentData.getRequirementAssignment());
       }
     }
   }
 
   private void updateRequirementForNestedCompositionNodesConnectedIn(
-      ServiceTemplate serviceTemplate,
-      RequirementAssignmentData requirementAssignmentData,
-      EntityConsolidationData entityConsolidationData,
-      String newNodeTemplateId,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          RequirementAssignmentData requirementAssignmentData,
+          EntityConsolidationData entityConsolidationData,
+          String newNodeTemplateId,
+          TranslationContext context) {
     ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
     String newAbstractUnifiedNodeTemplateId = newNodeTemplateId;
     RequirementAssignment requirementAssignment = requirementAssignmentData
-        .getRequirementAssignment();
+            .getRequirementAssignment();
     //Creating a copy of the requirement object and checking if it already exists in the
     // original node template
     RequirementAssignment requirementAssignmentCopy = (RequirementAssignment) getClonedObject(
-        requirementAssignmentData.getRequirementAssignment(), RequirementAssignment.class);
+            requirementAssignmentData.getRequirementAssignment(), RequirementAssignment.class);
     NodeTemplate unifiedAbstractNestedNodeTemplate = DataModelUtil
-        .getNodeTemplate(serviceTemplate, newAbstractUnifiedNodeTemplateId);
+            .getNodeTemplate(serviceTemplate, newAbstractUnifiedNodeTemplateId);
     requirementAssignmentCopy.setCapability(requirementAssignment.getCapability());
     requirementAssignmentCopy.setNode(newAbstractUnifiedNodeTemplateId);
     if (!toscaAnalyzerService.isRequirementExistInNodeTemplate(unifiedAbstractNestedNodeTemplate,
-        requirementAssignmentData.getRequirementId(), requirementAssignmentCopy)) {
+            requirementAssignmentData.getRequirementId(), requirementAssignmentCopy)) {
       //Update the existing requirement
       requirementAssignmentData.getRequirementAssignment()
-          .setNode(newAbstractUnifiedNodeTemplateId);
+              .setNode(newAbstractUnifiedNodeTemplateId);
     } else {
       //The updated requirement already exists in the node template so simply remove the
       // current one
       DataModelUtil.removeRequirementAssignment(unifiedAbstractNestedNodeTemplate,
-          requirementAssignmentData.getRequirementId(), requirementAssignmentData
-              .getRequirementAssignment());
+              requirementAssignmentData.getRequirementId(), requirementAssignmentData
+                      .getRequirementAssignment());
     }
   }
 
   private Optional<String> getNewCapabilityForNodesConnectedIn(ServiceTemplate serviceTemplate,
                                                                NodeTemplate unifiedNodeTemplate,
                                                                RequirementAssignment
-                                                                   requirementAssignment,
+                                                                       requirementAssignment,
                                                                String newNodeTemplateId,
                                                                TranslationContext context) {
     ServiceTemplate globalSubstitutionServiceTemplate =
-        HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
+            HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
     Map<String, NodeType> nodeTypes = globalSubstitutionServiceTemplate.getNode_types();
     String unifiedNodeTemplateType = unifiedNodeTemplate.getType();
     NodeType unifiedNodeType = nodeTypes.get(unifiedNodeTemplateType);
     Map<String, CapabilityDefinition> abstractNodeTypeCapabilities = unifiedNodeType
-        .getCapabilities();
+            .getCapabilities();
     for (Map.Entry<String, CapabilityDefinition> entry : abstractNodeTypeCapabilities.entrySet()) {
       String capabilityId = entry.getKey();
       CapabilityDefinition capabilityDefinition = entry.getValue();
@@ -1002,18 +1027,18 @@ public class UnifiedCompositionService {
 
   private void updateRequirementInAbstractNodeTemplate(ServiceTemplate serviceTemplate,
                                                        EntityConsolidationData
-                                                           entityConsolidationData,
+                                                               entityConsolidationData,
                                                        String newNodeTemplateId,
                                                        Map<String, List<RequirementAssignmentData>>
-                                                           requirementAssignmentDataMap,
+                                                               requirementAssignmentDataMap,
                                                        TranslationContext context) {
     ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
     for (Map.Entry<String, List<RequirementAssignmentData>> entry : requirementAssignmentDataMap
-        .entrySet()) {
+            .entrySet()) {
       String abstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(
-          serviceTemplate, entityConsolidationData.getNodeTemplateId());
+              serviceTemplate, entityConsolidationData.getNodeTemplateId());
       NodeTemplate abstractNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-          abstractNodeTemplateId);
+              abstractNodeTemplateId);
       if (abstractNodeTemplate == null) {
         //The abstract node template is not found from id in the context
         return;
@@ -1022,62 +1047,62 @@ public class UnifiedCompositionService {
       for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) {
         String oldRequirementId = requirementAssignmentData.getRequirementId();
         RequirementAssignment abstractRequirementAssignment = (RequirementAssignment)
-            getClonedObject(requirementAssignmentData.getRequirementAssignment(),
-                RequirementAssignment.class);
+                getClonedObject(requirementAssignmentData.getRequirementAssignment(),
+                        RequirementAssignment.class);
         String newRequirementId = oldRequirementId + "_" + newNodeTemplateId;
         //Check if the requirement is not already present in the list of requirements of the
         // abstract node template
         if (!toscaAnalyzerService.isRequirementExistInNodeTemplate(abstractNodeTemplate,
-            newRequirementId, abstractRequirementAssignment)) {
+                newRequirementId, abstractRequirementAssignment)) {
           DataModelUtil.addRequirementAssignment(abstractNodeTemplate, newRequirementId,
-              abstractRequirementAssignment);
+                  abstractRequirementAssignment);
           //Update the volume relationship template if required
           updateVolumeRelationshipTemplate(serviceTemplate, abstractRequirementAssignment
-              .getRelationship(), context);
+                  .getRelationship(), context);
         }
       }
     }
   }
 
   private NodeTemplate getAbstractNodeTemplate(
-      ServiceTemplate serviceTemplate,
-      UnifiedCompositionEntity unifiedCompositionEntity,
-      ComputeTemplateConsolidationData computeTemplateConsolidationData,
-      PortTemplateConsolidationData portTemplateConsolidationData,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          UnifiedCompositionEntity unifiedCompositionEntity,
+          ComputeTemplateConsolidationData computeTemplateConsolidationData,
+          PortTemplateConsolidationData portTemplateConsolidationData,
+          TranslationContext context) {
     String abstractNodeTemplateId =
-        getAbstractNodeTemplateId(serviceTemplate, unifiedCompositionEntity,
-            computeTemplateConsolidationData, portTemplateConsolidationData, context);
+            getAbstractNodeTemplateId(serviceTemplate, unifiedCompositionEntity,
+                    computeTemplateConsolidationData, portTemplateConsolidationData, context);
 
     return DataModelUtil.getNodeTemplate(serviceTemplate,
-        abstractNodeTemplateId);
+            abstractNodeTemplateId);
   }
 
   private String getAbstractNodeTemplateId(
-      ServiceTemplate serviceTemplate,
-      UnifiedCompositionEntity unifiedCompositionEntity,
-      ComputeTemplateConsolidationData computeTemplateConsolidationData,
-      PortTemplateConsolidationData portTemplateConsolidationData,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          UnifiedCompositionEntity unifiedCompositionEntity,
+          ComputeTemplateConsolidationData computeTemplateConsolidationData,
+          PortTemplateConsolidationData portTemplateConsolidationData,
+          TranslationContext context) {
     switch (unifiedCompositionEntity) {
       case Compute:
         return context.getUnifiedAbstractNodeTemplateId(serviceTemplate,
-            computeTemplateConsolidationData.getNodeTemplateId());
+                computeTemplateConsolidationData.getNodeTemplateId());
       case Port:
         return context.getUnifiedAbstractNodeTemplateId(serviceTemplate,
-            portTemplateConsolidationData.getNodeTemplateId());
+                portTemplateConsolidationData.getNodeTemplateId());
       default:
         return null;
     }
   }
 
   private void updNodeGetAttrInConnectivity(
-      ServiceTemplate serviceTemplate,
-      EntityConsolidationData entityConsolidationData,
-      String oldNodeTemplateId, String newNodeTemplateId,
-      TranslationContext context,
-      Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType,
-      boolean isNested) {
+          ServiceTemplate serviceTemplate,
+          EntityConsolidationData entityConsolidationData,
+          String oldNodeTemplateId, String newNodeTemplateId,
+          TranslationContext context,
+          Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType,
+          boolean isNested) {
     Map<String, List<GetAttrFuncData>> nodesGetAttrIn = entityConsolidationData.getNodesGetAttrIn();
     if (MapUtils.isEmpty(nodesGetAttrIn)) {
       return;
@@ -1085,25 +1110,25 @@ public class UnifiedCompositionService {
 
     for (String sourceNodeTemplateId : nodesGetAttrIn.keySet()) {
       NodeTemplate sourceNodeTemplate =
-          DataModelUtil.getNodeTemplate(serviceTemplate, sourceNodeTemplateId);
+              DataModelUtil.getNodeTemplate(serviceTemplate, sourceNodeTemplateId);
       if (!isNested && consolidationNodeTemplateIdAndType.keySet().contains(sourceNodeTemplateId)) {
         continue;
       }
       List<GetAttrFuncData> getAttrFuncDataList = nodesGetAttrIn.get(sourceNodeTemplateId);
       for (GetAttrFuncData getAttrFuncData : getAttrFuncDataList) {
         Object propertyValue =
-            DataModelUtil.getPropertyValue(sourceNodeTemplate, getAttrFuncData.getFieldName());
+                DataModelUtil.getPropertyValue(sourceNodeTemplate, getAttrFuncData.getFieldName());
         String newAttrName = null;
         String newGetAttrAbstractNodeTemplateId = newNodeTemplateId;
         if (!isNested) {
           newGetAttrAbstractNodeTemplateId =
-              context.getUnifiedAbstractNodeTemplateId(serviceTemplate, oldNodeTemplateId);
+                  context.getUnifiedAbstractNodeTemplateId(serviceTemplate, oldNodeTemplateId);
           newAttrName = getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData
-              .getAttributeName());
+                  .getAttributeName());
         }
         List<List<Object>> getAttrFuncValueList = extractGetAttrFunction(propertyValue);
         updateGetAttrValue(oldNodeTemplateId, getAttrFuncData, newGetAttrAbstractNodeTemplateId,
-            newAttrName, getAttrFuncValueList, isNested);
+                newAttrName, getAttrFuncValueList, isNested);
       }
     }
   }
@@ -1113,7 +1138,7 @@ public class UnifiedCompositionService {
                                   List<List<Object>> getAttrFuncValueList, boolean isNested) {
     for (List<Object> getAttrFuncValue : getAttrFuncValueList) {
       if (oldNodeTemplateId.equals(getAttrFuncValue.get(0))
-          && getAttrFuncData.getAttributeName().equals(getAttrFuncValue.get(1))) {
+              && getAttrFuncData.getAttributeName().equals(getAttrFuncValue.get(1))) {
         getAttrFuncValue.set(0, newNodeTemplateId);
         if (!isNested) {
           getAttrFuncValue.set(1, newAttrName);
@@ -1127,7 +1152,7 @@ public class UnifiedCompositionService {
                                  String nodeTypeId,
                                  Integer index) {
     ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        unifiedCompositionData.getComputeTemplateConsolidationData();
+            unifiedCompositionData.getComputeTemplateConsolidationData();
     String computeType = getComputeTypeSuffix(nodeTypeId);
     String templateName = "Nested_" + computeType;
     if (Objects.nonNull(index)) {
@@ -1139,7 +1164,7 @@ public class UnifiedCompositionService {
   private String getComputeTypeSuffix(ServiceTemplate serviceTemplate,
                                       String computeNodeTemplateId) {
     NodeTemplate computeNodeTemplate =
-        DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
+            DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
     return getComputeTypeSuffix(computeNodeTemplate.getType());
   }
 
@@ -1160,26 +1185,26 @@ public class UnifiedCompositionService {
                                                    TranslationContext context,
                                                    boolean isNested) {
     List<GetAttrFuncData> outputParametersGetAttrIn =
-        entityConsolidationData.getOutputParametersGetAttrIn();
+            entityConsolidationData.getOutputParametersGetAttrIn();
     if (CollectionUtils.isEmpty(outputParametersGetAttrIn)) {
       return;
     }
     for (GetAttrFuncData getAttrFuncData : outputParametersGetAttrIn) {
       Object outputParamValue =
-          DataModelUtil.getOuputParameter(serviceTemplate, getAttrFuncData.getFieldName())
-              .getValue();
+              DataModelUtil.getOuputParameter(serviceTemplate, getAttrFuncData.getFieldName())
+                      .getValue();
       String newAttrName = null;
       String newGetAttrAbstractNodeTemplateId = newNodeTemplateId;
       if (!isNested) {
         newGetAttrAbstractNodeTemplateId =
-            context.getUnifiedAbstractNodeTemplateId(serviceTemplate, oldNodeTemplateId);
+                context.getUnifiedAbstractNodeTemplateId(serviceTemplate, oldNodeTemplateId);
         newAttrName = getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData
-            .getAttributeName());
+                .getAttributeName());
       }
       List<List<Object>> getAttrFuncValueList = extractGetAttrFunction(outputParamValue);
       updateGetAttrValue(oldNodeTemplateId, getAttrFuncData, newGetAttrAbstractNodeTemplateId,
-          newAttrName,
-          getAttrFuncValueList, isNested);
+              newAttrName,
+              getAttrFuncValueList, isNested);
     }
 
   }
@@ -1191,7 +1216,7 @@ public class UnifiedCompositionService {
     if (valueObject instanceof Map) {
       if (((Map) valueObject).containsKey(ToscaFunctions.GET_ATTRIBUTE.getDisplayName())) {
         getAttrValueList.add(
-            (List<Object>) ((Map) valueObject).get(ToscaFunctions.GET_ATTRIBUTE.getDisplayName()));
+                (List<Object>) ((Map) valueObject).get(ToscaFunctions.GET_ATTRIBUTE.getDisplayName()));
       }
 
       for (Object key : ((Map) valueObject).keySet()) {
@@ -1212,9 +1237,16 @@ public class UnifiedCompositionService {
       if (((Map) valueObject).containsKey(toscaFunction.getDisplayName())) {
         return true;
       }
-      Map.Entry<String, Object> functionMapEntry =
-          (Map.Entry<String, Object>) ((Map) valueObject).entrySet().iterator().next();
-      return isIncludeToscaFunc(functionMapEntry.getValue(), toscaFunction);
+
+      Set<Map.Entry<String, Object>> entries = ((Map<String, Object>) valueObject).entrySet();
+      for(Map.Entry<String, Object> valueObjectEntry : entries){
+        if(isIncludeToscaFunc(valueObjectEntry.getValue(), toscaFunction)){
+          return true;
+        }
+      }
+//      Map.Entry<String, Object> functionMapEntry =
+//          (Map.Entry<String, Object>) ((Map) valueObject).entrySet().iterator().next();
+//      return isIncludeToscaFunc(functionMapEntry.getValue(), toscaFunction);
 
     } else if (valueObject instanceof List) {
       for (Object valueEntity : (List) valueObject) {
@@ -1232,41 +1264,41 @@ public class UnifiedCompositionService {
                                       String computeNodeType, TranslationContext context) {
 
     createOutputParametersForCompute(serviceTemplate, substitutionServiceTemplate,
-        unifiedCompositionDataList, context);
+            unifiedCompositionDataList, context);
     createOutputParameterForPorts(serviceTemplate, substitutionServiceTemplate,
-        unifiedCompositionDataList, computeNodeType, context);
+            unifiedCompositionDataList, computeNodeType, context);
   }
 
   private void createOutputParameterForPorts(
-      ServiceTemplate serviceTemplate,
-      ServiceTemplate substitutionServiceTemplate,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      String connectedComputeNodeType,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          ServiceTemplate substitutionServiceTemplate,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          String connectedComputeNodeType,
+          TranslationContext context) {
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
       if (CollectionUtils.isEmpty(portTemplateConsolidationDataList)) {
         return;
       }
 
       for (PortTemplateConsolidationData portTemplateConsolidationData :
-          portTemplateConsolidationDataList) {
+              portTemplateConsolidationDataList) {
         String newPortNodeTemplateId =
-            getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(),
-                connectedComputeNodeType,
-                unifiedCompositionData.getComputeTemplateConsolidationData());
+                getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(),
+                        connectedComputeNodeType,
+                        unifiedCompositionData.getComputeTemplateConsolidationData());
         addOutputParameters(portTemplateConsolidationData, newPortNodeTemplateId,
-            serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context);
+                serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context);
       }
     }
   }
 
   //The ID should be <vm_type>_<port_type> or <vm_type>_<portNodeTemplateId>
   private String getNewPortNodeTemplateId(
-      String portNodeTemplateId,
-      String connectedComputeNodeType,
-      ComputeTemplateConsolidationData computeTemplateConsolidationData) {
+          String portNodeTemplateId,
+          String connectedComputeNodeType,
+          ComputeTemplateConsolidationData computeTemplateConsolidationData) {
 
     StringBuilder newPortNodeTemplateId = new StringBuilder();
     String portType = ConsolidationDataUtil.getPortType(portNodeTemplateId);
@@ -1282,20 +1314,20 @@ public class UnifiedCompositionService {
   }
 
   private void createOutputParametersForCompute(
-      ServiceTemplate serviceTemplate,
-      ServiceTemplate substitutionServiceTemplate,
-      List<UnifiedCompositionData>
-          unifiedCompositionDataList,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          ServiceTemplate substitutionServiceTemplate,
+          List<UnifiedCompositionData>
+                  unifiedCompositionDataList,
+          TranslationContext context) {
     List<EntityConsolidationData> computeConsolidationDataList =
-        getComputeConsolidationDataList(unifiedCompositionDataList);
+            getComputeConsolidationDataList(unifiedCompositionDataList);
 
     for (EntityConsolidationData computeTemplateConsolidationData : computeConsolidationDataList) {
       String newComputeNodeTemplateId =
-          getNewComputeNodeTemplateId(serviceTemplate,
-              computeTemplateConsolidationData.getNodeTemplateId());
+              getNewComputeNodeTemplateId(serviceTemplate,
+                      computeTemplateConsolidationData.getNodeTemplateId());
       addOutputParameters(computeTemplateConsolidationData, newComputeNodeTemplateId,
-          serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context);
+              serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context);
     }
   }
 
@@ -1306,10 +1338,10 @@ public class UnifiedCompositionService {
                                    List<UnifiedCompositionData> unifiedCompositionDataList,
                                    TranslationContext context) {
     handleNodesGetAttrIn(entityConsolidationData, newNodeTemplateId, serviceTemplate,
-        substitutionServiceTemplate, unifiedCompositionDataList, context);
+            substitutionServiceTemplate, unifiedCompositionDataList, context);
 
     handleOutputParamGetAttrIn(entityConsolidationData, newNodeTemplateId, serviceTemplate,
-        substitutionServiceTemplate, context);
+            substitutionServiceTemplate, context);
   }
 
   private void handleOutputParamGetAttrIn(EntityConsolidationData entityConsolidationData,
@@ -1318,11 +1350,11 @@ public class UnifiedCompositionService {
                                           ServiceTemplate substitutionServiceTemplate,
                                           TranslationContext context) {
     List<GetAttrFuncData> outputParametersGetAttrIn =
-        entityConsolidationData.getOutputParametersGetAttrIn();
+            entityConsolidationData.getOutputParametersGetAttrIn();
     if (!CollectionUtils.isEmpty(outputParametersGetAttrIn)) {
       for (GetAttrFuncData getAttrFuncData : outputParametersGetAttrIn) {
         createAndAddOutputParameter(entityConsolidationData, newNodeTemplateId,
-            substitutionServiceTemplate, getAttrFuncData, context);
+                substitutionServiceTemplate, getAttrFuncData, context);
       }
     }
   }
@@ -1337,13 +1369,13 @@ public class UnifiedCompositionService {
 
     if (!MapUtils.isEmpty(getAttrIn)) {
       Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType =
-          getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList);
+              getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList);
       for (String sourceNodeTemplateId : getAttrIn.keySet()) {
         if (!consolidationNodeTemplateIdAndType.keySet().contains(sourceNodeTemplateId)) {
           List<GetAttrFuncData> getAttrFuncDataList = getAttrIn.get(sourceNodeTemplateId);
           for (GetAttrFuncData getAttrFuncData : getAttrFuncDataList) {
             createAndAddOutputParameter(entityConsolidationData, newNodeTemplateId,
-                substitutionServiceTemplate, getAttrFuncData, context);
+                    substitutionServiceTemplate, getAttrFuncData, context);
           }
         }
       }
@@ -1363,10 +1395,10 @@ public class UnifiedCompositionService {
     ParameterDefinition outputParameter = new ParameterDefinition();
     outputParameter.setValue(parameterValue);
     setOutputParameterType(substitutionServiceTemplate, newNodeTemplateId, getAttrFuncData
-        .getAttributeName(), outputParameter, context);
+            .getAttributeName(), outputParameter, context);
     DataModelUtil.addOutputParameterToTopologyTemplate(substitutionServiceTemplate,
-        getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData.getAttributeName()),
-        outputParameter);
+            getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData.getAttributeName()),
+            outputParameter);
   }
 
   private void setOutputParameterType(ServiceTemplate substitutionServiceTemplate,
@@ -1375,16 +1407,16 @@ public class UnifiedCompositionService {
                                       ParameterDefinition outputParameter,
                                       TranslationContext context) {
     NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(substitutionServiceTemplate,
-        newNodeTemplateId);
+            newNodeTemplateId);
     //Get the type and entry schema of the output parameter from the node type flat hierarchy
     String outputParameterType = null;
     EntrySchema outputParameterEntrySchema = null;
     NodeType nodeTypeWithFlatHierarchy =
-        HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(),
-            substitutionServiceTemplate, context);
+            HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(),
+                    substitutionServiceTemplate, context);
     //Check if the parameter is present in the attributes
     AttributeDefinition outputParameterDefinitionFromAttributes =
-        getOutputParameterDefinitionFromAttributes(nodeTypeWithFlatHierarchy, outputParameterName);
+            getOutputParameterDefinitionFromAttributes(nodeTypeWithFlatHierarchy, outputParameterName);
     if (Objects.nonNull(outputParameterDefinitionFromAttributes)) {
       outputParameterType = outputParameterDefinitionFromAttributes.getType();
       outputParameterEntrySchema = outputParameterDefinitionFromAttributes.getEntry_schema();
@@ -1393,7 +1425,7 @@ public class UnifiedCompositionService {
       // properties and global types are in sync. Ideally the parameter should be found in either
       // properties or attributes collected from global types
       PropertyDefinition outputParameterDefinitionFromProperties =
-          nodeTypeWithFlatHierarchy.getProperties().get(outputParameterName);
+              nodeTypeWithFlatHierarchy.getProperties().get(outputParameterName);
       outputParameterType = outputParameterDefinitionFromProperties.getType();
       outputParameterEntrySchema = outputParameterDefinitionFromProperties.getEntry_schema();
     }
@@ -1407,21 +1439,21 @@ public class UnifiedCompositionService {
                                           String inputParameterName,
                                           TranslationContext context) {
     NodeType nodeTypeWithFlatHierarchy =
-        HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(),
-            serviceTemplate, context);
+            HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(),
+                    serviceTemplate, context);
     String parameterType = nodeTypeWithFlatHierarchy.getProperties()
-        .get(inputParameterName).getType();
+            .get(inputParameterName).getType();
     return getUnifiedInputParameterType(parameterType);
   }
 
   private AttributeDefinition getOutputParameterDefinitionFromAttributes(NodeType
-                                                                             nodeTypeWithFlatHierarchy,
+                                                                                 nodeTypeWithFlatHierarchy,
                                                                          String outputParameterName) {
     AttributeDefinition outputParameterDefinition = null;
     if ((Objects.nonNull(nodeTypeWithFlatHierarchy.getAttributes()))
-        && (nodeTypeWithFlatHierarchy.getAttributes().containsKey(outputParameterName))) {
+            && (nodeTypeWithFlatHierarchy.getAttributes().containsKey(outputParameterName))) {
       outputParameterDefinition =
-          nodeTypeWithFlatHierarchy.getAttributes().get(outputParameterName);
+              nodeTypeWithFlatHierarchy.getAttributes().get(outputParameterName);
     }
     return outputParameterDefinition;
   }
@@ -1430,17 +1462,17 @@ public class UnifiedCompositionService {
     String unifiedInputParameterType = null;
     if (Objects.nonNull(parameterType)) {
       if (parameterType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyType.TIMESTAMP.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyType.NULL.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_SIZE.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_FREQUENCY.getDisplayName())) {
+              || parameterType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
+              || parameterType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
+              || parameterType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())
+              || parameterType.equalsIgnoreCase(PropertyType.TIMESTAMP.getDisplayName())
+              || parameterType.equalsIgnoreCase(PropertyType.NULL.getDisplayName())
+              || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_SIZE.getDisplayName())
+              || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_FREQUENCY.getDisplayName())) {
         unifiedInputParameterType = parameterType.toLowerCase();
       } else if (parameterType.equalsIgnoreCase(PropertyType.MAP.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyType.LIST.getDisplayName())
-          || parameterType.equalsIgnoreCase(PropertyTypeExt.JSON.getDisplayName())) {
+              || parameterType.equalsIgnoreCase(PropertyType.LIST.getDisplayName())
+              || parameterType.equalsIgnoreCase(PropertyTypeExt.JSON.getDisplayName())) {
         unifiedInputParameterType = PropertyTypeExt.JSON.getDisplayName();
       } else {
         unifiedInputParameterType = parameterType;
@@ -1455,26 +1487,26 @@ public class UnifiedCompositionService {
   }
 
   private void addUnifiedSubstitionData(TranslationContext context, ServiceTemplate
-      serviceTemplate, List<UnifiedCompositionData> unifiedCompositionDataList, String
-                                            substituteNodeTemplateId) {
+          serviceTemplate, List<UnifiedCompositionData> unifiedCompositionDataList, String
+                                                substituteNodeTemplateId) {
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       //Add compute node template mapping information
       ComputeTemplateConsolidationData computeTemplateConsolidationData =
-          unifiedCompositionData.getComputeTemplateConsolidationData();
+              unifiedCompositionData.getComputeTemplateConsolidationData();
       String computeNodeTemplateId = computeTemplateConsolidationData.getNodeTemplateId();
       context.addUnifiedSubstitutionData(serviceTemplateFileName, computeNodeTemplateId,
-          substituteNodeTemplateId);
+              substituteNodeTemplateId);
       //Add Port template mapping information
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
 
       if (CollectionUtils.isNotEmpty(portTemplateConsolidationDataList)) {
         for (PortTemplateConsolidationData portTemplateConsolidationData :
-            portTemplateConsolidationDataList) {
+                portTemplateConsolidationDataList) {
           String oldPortNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId();
           context.addUnifiedSubstitutionData(serviceTemplateFileName, oldPortNodeTemplateId,
-              substituteNodeTemplateId);
+                  substituteNodeTemplateId);
         }
       }
     }
@@ -1489,9 +1521,9 @@ public class UnifiedCompositionService {
     Map<String, Object> indexPropertyValue = new HashMap<>();
     Map<String, Object> properties = nodeTemplate.getProperties();
     indexPropertyValue.put(ToscaFunctions.GET_PROPERTY.getDisplayName(),
-        indexValueGetPropertyValue);
+            indexValueGetPropertyValue);
     properties.put(ToscaConstants.INDEX_VALUE_PROPERTY_NAME,
-        indexPropertyValue);
+            indexPropertyValue);
     nodeTemplate.setProperties(properties);
   }
 
@@ -1500,11 +1532,11 @@ public class UnifiedCompositionService {
                                              String nodeTypeId,
                                              Integer index) {
     String computeNodeTemplateId =
-        unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId();
+            unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId();
     NodeTemplate computeNodeTemplate =
-        DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
+            DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
     String nodeTemplateId = ABSTRACT_NODE_TEMPLATE_ID_PREFIX + DataModelUtil
-        .getNamespaceSuffix(nodeTypeId);
+            .getNamespaceSuffix(nodeTypeId);
     if (Objects.nonNull(index)) {
       nodeTemplateId = nodeTemplateId + "_" + index.toString();
     }
@@ -1524,15 +1556,15 @@ public class UnifiedCompositionService {
                                           Integer index,
                                           TranslationContext context) {
     String computeNodeTemplateId =
-        unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId();
+            unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId();
     NodeTemplate computeNodeTemplate =
-        DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
+            DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
     String computeType = computeNodeTemplate.getType();
     String globalSTName = ToscaUtil.getServiceTemplateFileName(Constants
-        .GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
+            .GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
 
     String nodeTypeId = ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX
-        + DataModelUtil.getNamespaceSuffix(getIndexedGlobalNodeTypeId(computeType, context));
+            + DataModelUtil.getNamespaceSuffix(getIndexedGlobalNodeTypeId(computeType, context));
 
     context.updateUsedTimesForNestedComputeNodeType(globalSTName, computeType);
 
@@ -1543,8 +1575,8 @@ public class UnifiedCompositionService {
   }
 
   private String getNewComputeNodeTemplateId(
-      ServiceTemplate serviceTemplate,
-      String computeNodeTemplateId) {
+          ServiceTemplate serviceTemplate,
+          String computeNodeTemplateId) {
     return getComputeTypeSuffix(serviceTemplate, computeNodeTemplateId);
   }
 
@@ -1554,15 +1586,13 @@ public class UnifiedCompositionService {
                                                     UnifiedCompositionData unifiedCompositionData,
                                                     String substitutionNodeTypeId,
                                                     Integer index) {
-//    String substitutionNodeTypeId =
-//        getSubstitutionNodeTypeId(serviceTemplate, unifiedCompositionData, index, context);
     NodeType substitutionNodeType = new ToscaAnalyzerServiceImpl()
-        .createInitSubstitutionNodeType(substitutionServiceTemplate,
-            ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE);
+            .createInitSubstitutionNodeType(substitutionServiceTemplate,
+                    ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE);
     ServiceTemplate globalSubstitutionServiceTemplate =
-        HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
+            HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
     DataModelUtil.addNodeType(globalSubstitutionServiceTemplate, substitutionNodeTypeId,
-        substitutionNodeType);
+            substitutionNodeType);
 
     return substitutionNodeType;
   }
@@ -1575,10 +1605,10 @@ public class UnifiedCompositionService {
 
     if (unifiedCompositionDataList.size() > 1) {
       handleConsolidationPorts(serviceTemplate, substitutionServiceTemplate,
-          unifiedCompositionDataList, connectedComputeNodeType, context);
+              unifiedCompositionDataList, connectedComputeNodeType, context);
     } else {
       handleSinglePorts(serviceTemplate, substitutionServiceTemplate, connectedComputeNodeType,
-          unifiedCompositionDataList, context);
+              unifiedCompositionDataList, context);
     }
   }
 
@@ -1589,18 +1619,18 @@ public class UnifiedCompositionService {
                                  TranslationContext context) {
     UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0);
     List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-        getPortTemplateConsolidationDataList(unifiedCompositionData);
+            getPortTemplateConsolidationDataList(unifiedCompositionData);
     if (CollectionUtils.isEmpty(portTemplateConsolidationDataList)) {
       return;
     }
     for (PortTemplateConsolidationData portTemplateConsolidationData :
-        portTemplateConsolidationDataList) {
+            portTemplateConsolidationDataList) {
       List<EntityConsolidationData> portConsolidationDataList = new ArrayList<>();
       portConsolidationDataList.add(portTemplateConsolidationData);
       handlePortNodeTemplate(serviceTemplate, substitutionServiceTemplate,
-          portConsolidationDataList, connectedComputeNodeType,
-          unifiedCompositionData.getComputeTemplateConsolidationData(),
-          unifiedCompositionDataList, context);
+              portConsolidationDataList, connectedComputeNodeType,
+              unifiedCompositionData.getComputeTemplateConsolidationData(),
+              unifiedCompositionDataList, context);
     }
   }
 
@@ -1610,62 +1640,62 @@ public class UnifiedCompositionService {
                                         String connectedComputeNodeType,
                                         TranslationContext context) {
     Collection<ComputeTemplateConsolidationData> computeConsolidationDataList =
-        (Collection) getComputeConsolidationDataList(unifiedCompositionDataList);
+            (Collection) getComputeConsolidationDataList(unifiedCompositionDataList);
 
     Map<String, Set<String>> portIdsPerPortType = UnifiedCompositionUtil
-        .collectAllPortsFromEachTypesFromComputes(computeConsolidationDataList);
+            .collectAllPortsFromEachTypesFromComputes(computeConsolidationDataList);
 
     for (String portType : portIdsPerPortType.keySet()) {
       List<EntityConsolidationData> portTemplateConsolidationDataList =
-          getPortConsolidationDataList(portIdsPerPortType.get(portType),
-              unifiedCompositionDataList);
+              getPortConsolidationDataList(portIdsPerPortType.get(portType),
+                      unifiedCompositionDataList);
       if (CollectionUtils.isEmpty(portTemplateConsolidationDataList)) {
         continue;
       }
 
       handlePortNodeTemplate(serviceTemplate, substitutionServiceTemplate,
-          portTemplateConsolidationDataList, connectedComputeNodeType,
-          unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData(),
-          unifiedCompositionDataList, context);
+              portTemplateConsolidationDataList, connectedComputeNodeType,
+              unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData(),
+              unifiedCompositionDataList, context);
     }
   }
 
   private void handlePortNodeTemplate(
-      ServiceTemplate serviceTemplate,
-      ServiceTemplate substitutionServiceTemplate,
-      List<EntityConsolidationData> portTemplateConsolidationDataList,
-      String connectedComputeNodeType,
-      ComputeTemplateConsolidationData computeTemplateConsolidationData,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          ServiceTemplate substitutionServiceTemplate,
+          List<EntityConsolidationData> portTemplateConsolidationDataList,
+          String connectedComputeNodeType,
+          ComputeTemplateConsolidationData computeTemplateConsolidationData,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          TranslationContext context) {
     EntityConsolidationData portTemplateConsolidationData =
-        portTemplateConsolidationDataList.get(0);
+            portTemplateConsolidationDataList.get(0);
     NodeTemplate newPortNodeTemplate = getNodeTemplate(
-        portTemplateConsolidationData.getNodeTemplateId(), serviceTemplate, context).clone();
+            portTemplateConsolidationData.getNodeTemplateId(), serviceTemplate, context).clone();
 
     removeConnectivityOut(portTemplateConsolidationData, newPortNodeTemplate);
     handleProperties(serviceTemplate, newPortNodeTemplate,
-        substitutionServiceTemplate, UnifiedCompositionEntity.Port,
-        portTemplateConsolidationDataList, computeTemplateConsolidationData,
-        unifiedCompositionDataList, context);
+            substitutionServiceTemplate, UnifiedCompositionEntity.Port,
+            portTemplateConsolidationDataList, computeTemplateConsolidationData,
+            unifiedCompositionDataList, context);
 
     String newPortNodeTemplateId =
-        getNewPortNodeTemplateId(portTemplateConsolidationData
-                .getNodeTemplateId(), connectedComputeNodeType,
-            computeTemplateConsolidationData);
+            getNewPortNodeTemplateId(portTemplateConsolidationData
+                            .getNodeTemplateId(), connectedComputeNodeType,
+                    computeTemplateConsolidationData);
     //Update requirements for relationships between the consolidation entities
     handleConsolidationEntitiesRequirementConnectivity(newPortNodeTemplateId, newPortNodeTemplate,
-        serviceTemplate, context);
+            serviceTemplate, context);
     DataModelUtil.addNodeTemplate(substitutionServiceTemplate, newPortNodeTemplateId,
-        newPortNodeTemplate);
+            newPortNodeTemplate);
 
     //Add the node template mapping in the context for handling requirement updation
     for (EntityConsolidationData data : portTemplateConsolidationDataList) {
       String newPortTemplateId = getNewPortNodeTemplateId(data.getNodeTemplateId(),
-          connectedComputeNodeType, computeTemplateConsolidationData);
+              connectedComputeNodeType, computeTemplateConsolidationData);
       context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil
-              .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(),
-          newPortTemplateId);
+                      .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(),
+              newPortTemplateId);
     }
 
   }
@@ -1677,8 +1707,8 @@ public class UnifiedCompositionService {
 
     if (Objects.isNull(nodeTemplate)) {
       nodeTemplate = context
-          .getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
-              nodeTemplateId);
+              .getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
+                      nodeTemplateId);
 
     }
     return nodeTemplate;
@@ -1690,25 +1720,34 @@ public class UnifiedCompositionService {
                                List<UnifiedCompositionData> unifiedCompositionDataList,
                                TranslationContext context) {
     ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData();
+            unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData();
     handleComputeNodeTemplate(serviceTemplate, substitutionServiceTemplate,
-        unifiedCompositionDataList, context);
-    return handleComputeNodeType(serviceTemplate, substitutionServiceTemplate,
-        computeTemplateConsolidationData);
+            unifiedCompositionDataList, context);
+    ServiceTemplate globalSubstitutionServiceTemplate =
+            HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
+    return handleComputeNodeType(serviceTemplate, substitutionServiceTemplate, globalSubstitutionServiceTemplate,
+            computeTemplateConsolidationData);
   }
 
   private String handleComputeNodeType(
-      ServiceTemplate serviceTemplate,
-      ServiceTemplate substitutionServiceTemplate,
-      ComputeTemplateConsolidationData computeTemplateConsolidationData) {
+          ServiceTemplate serviceTemplate,
+          ServiceTemplate substitutionServiceTemplate,
+          ServiceTemplate globalSubstitutionServiceTemplate,
+          ComputeTemplateConsolidationData computeTemplateConsolidationData) {
     NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-        computeTemplateConsolidationData.getNodeTemplateId());
+            computeTemplateConsolidationData.getNodeTemplateId());
+    String computeNodeTypeId = computeNodeTemplate.getType();
     NodeType computeNodeType =
-        DataModelUtil.getNodeType(serviceTemplate, computeNodeTemplate.getType());
+            DataModelUtil.getNodeType(serviceTemplate, computeNodeTypeId);
     DataModelUtil
-        .addNodeType(substitutionServiceTemplate, computeNodeTemplate.getType(), computeNodeType);
+            .addNodeType(substitutionServiceTemplate, computeNodeTypeId, computeNodeType);
+//    NodeType globalNodeType = new ToscaAnalyzerServiceImpl()
+//        .createInitSubstitutionNodeType(substitutionServiceTemplate,
+//            computeNodeType.getDerived_from());
+//    DataModelUtil
+//        .addNodeType(globalSubstitutionServiceTemplate, computeNodeTypeId, globalNodeType);
 
-    return computeNodeTemplate.getType();
+    return computeNodeTypeId;
   }
 
   private void handleComputeNodeTemplate(ServiceTemplate serviceTemplate,
@@ -1716,46 +1755,46 @@ public class UnifiedCompositionService {
                                          List<UnifiedCompositionData> unifiedCompositionDataList,
                                          TranslationContext context) {
     ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData();
+            unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData();
     NodeTemplate newComputeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-        computeTemplateConsolidationData.getNodeTemplateId()).clone();
+            computeTemplateConsolidationData.getNodeTemplateId()).clone();
 
     removeConnectivityOut(computeTemplateConsolidationData, newComputeNodeTemplate);
     removeVolumeConnectivity(computeTemplateConsolidationData, newComputeNodeTemplate);
 
     List<EntityConsolidationData> computeConsoliadtionDataList =
-        getComputeConsolidationDataList(unifiedCompositionDataList);
+            getComputeConsolidationDataList(unifiedCompositionDataList);
 
     handleProperties(serviceTemplate, newComputeNodeTemplate,
-        substitutionServiceTemplate, UnifiedCompositionEntity.Compute,
-        computeConsoliadtionDataList, computeTemplateConsolidationData, unifiedCompositionDataList,
-        context);
+            substitutionServiceTemplate, UnifiedCompositionEntity.Compute,
+            computeConsoliadtionDataList, computeTemplateConsolidationData, unifiedCompositionDataList,
+            context);
 
     String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
-        computeTemplateConsolidationData.getNodeTemplateId());
+            computeTemplateConsolidationData.getNodeTemplateId());
     //Update requirements for relationships between the consolidation entities
     handleConsolidationEntitiesRequirementConnectivity(newComputeNodeTemplateId,
-        newComputeNodeTemplate,
-        serviceTemplate, context);
+            newComputeNodeTemplate,
+            serviceTemplate, context);
     DataModelUtil
-        .addNodeTemplate(substitutionServiceTemplate,
-            newComputeNodeTemplateId, newComputeNodeTemplate);
+            .addNodeTemplate(substitutionServiceTemplate,
+                    newComputeNodeTemplateId, newComputeNodeTemplate);
     //Add the node template mapping in the context for handling requirement updation
     for (EntityConsolidationData data : computeConsoliadtionDataList) {
       String newComputeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
-          computeTemplateConsolidationData.getNodeTemplateId());
+              computeTemplateConsolidationData.getNodeTemplateId());
       context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil
-              .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(),
-          newComputeTemplateId);
+                      .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(),
+              newComputeTemplateId);
     }
   }
 
   private List<EntityConsolidationData> getComputeConsolidationDataList(
-      List<UnifiedCompositionData> unifiedCompositionDataList) {
+          List<UnifiedCompositionData> unifiedCompositionDataList) {
     List<EntityConsolidationData> computeConsolidationDataList = new ArrayList<>();
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       computeConsolidationDataList
-          .add(unifiedCompositionData.getComputeTemplateConsolidationData());
+              .add(unifiedCompositionData.getComputeTemplateConsolidationData());
     }
     return computeConsolidationDataList;
   }
@@ -1770,15 +1809,15 @@ public class UnifiedCompositionService {
                                 List<UnifiedCompositionData> unifiedCompositionDataList,
                                 TranslationContext context) {
     List<String> propertiesWithIdenticalVal =
-        consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context);
+            consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context);
     nodeTemplate.setProperties(new HashedMap());
     handleNodeTemplateProperties(serviceTemplate, nodeTemplate, substitutionServiceTemplate,
-        unifiedCompositionEntity, entityConsolidationDataList, computeTemplateConsolidationData,
-        unifiedCompositionDataList, context);
+            unifiedCompositionEntity, entityConsolidationDataList, computeTemplateConsolidationData,
+            unifiedCompositionDataList, context);
     //Add enrich properties from openecomp node type as input to global and substitution ST
     handleNodeTypeProperties(substitutionServiceTemplate,
-        entityConsolidationDataList, nodeTemplate, unifiedCompositionEntity,
-        computeTemplateConsolidationData, context);
+            entityConsolidationDataList, nodeTemplate, unifiedCompositionEntity,
+            computeTemplateConsolidationData, context);
 
   }
 
@@ -1787,50 +1826,50 @@ public class UnifiedCompositionService {
                                             ServiceTemplate substitutionServiceTemplate,
                                             UnifiedCompositionEntity unifiedCompositionEntity,
                                             List<EntityConsolidationData>
-                                                entityConsolidationDataList,
+                                                    entityConsolidationDataList,
                                             ComputeTemplateConsolidationData
-                                                computeTemplateConsolidationData,
+                                                    computeTemplateConsolidationData,
                                             List<UnifiedCompositionData> unifiedCompositionDataList,
                                             TranslationContext context) {
     List<String> propertiesWithIdenticalVal =
-        consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context);
+            consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context);
 
     for (EntityConsolidationData entityConsolidationData : entityConsolidationDataList) {
       String nodeTemplateId = entityConsolidationData.getNodeTemplateId();
       Map<String, Object> properties =
-          DataModelUtil.getNodeTemplateProperties(serviceTemplate, nodeTemplateId);
+              DataModelUtil.getNodeTemplateProperties(serviceTemplate, nodeTemplateId);
       if (MapUtils.isEmpty(properties)) {
         continue;
       }
 
       for (Map.Entry<String, Object> propertyEntry : properties.entrySet()) {
         NodeType nodeTypeWithFlatHierarchy =
-            HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), serviceTemplate,
-                context);
+                HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), serviceTemplate,
+                        context);
         PropertyDefinition propertyDefinition =
-            nodeTypeWithFlatHierarchy.getProperties().get(propertyEntry.getKey());
+                nodeTypeWithFlatHierarchy.getProperties().get(propertyEntry.getKey());
         String propertyType = propertyDefinition.getType();
 
         if (propertiesWithIdenticalVal.contains(propertyEntry.getKey())) {
           String parameterId =
-              updateIdenticalProperty(nodeTemplateId, propertyEntry.getKey(), nodeTemplate,
-                  unifiedCompositionEntity, unifiedCompositionDataList);
+                  updateIdenticalProperty(nodeTemplateId, propertyEntry.getKey(), nodeTemplate,
+                          unifiedCompositionEntity, unifiedCompositionDataList);
 
           addInputParameter(
-              parameterId, propertyType,
-              propertyType.equals(PropertyType.LIST.getDisplayName()) ? propertyDefinition
-                  .getEntry_schema() : null,
-              substitutionServiceTemplate);
+                  parameterId, propertyType,
+                  propertyType.equals(PropertyType.LIST.getDisplayName()) ? propertyDefinition
+                          .getEntry_schema() : null,
+                  substitutionServiceTemplate);
         } else {
           Optional<String> parameterId =
-              updateProperty(serviceTemplate, nodeTemplateId, nodeTemplate, propertyEntry,
-                  unifiedCompositionEntity, computeTemplateConsolidationData,
-                  unifiedCompositionDataList,
-                  context);
+                  updateProperty(serviceTemplate, nodeTemplateId, nodeTemplate, propertyEntry,
+                          unifiedCompositionEntity, computeTemplateConsolidationData,
+                          unifiedCompositionDataList,
+                          context);
           //todo - define list of type which will match the node property type (instead of string)
           addPropertyInputParameter(propertyType, substitutionServiceTemplate, propertyDefinition
-                  .getEntry_schema(),
-              parameterId, unifiedCompositionEntity, context);
+                          .getEntry_schema(),
+                  parameterId, unifiedCompositionEntity, context);
         }
       }
     }
@@ -1841,7 +1880,7 @@ public class UnifiedCompositionService {
                                         NodeTemplate nodeTemplate,
                                         UnifiedCompositionEntity compositionEntity,
                                         ComputeTemplateConsolidationData
-                                            computeTemplateConsolidationData,
+                                                computeTemplateConsolidationData,
                                         TranslationContext context) {
     ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
     Optional<NodeType> enrichNodeType;
@@ -1849,8 +1888,8 @@ public class UnifiedCompositionService {
 
     if (compositionEntity.equals(UnifiedCompositionEntity.Port)) {
       enrichNodeType =
-          toscaAnalyzerService.fetchNodeType(ToscaNodeType.NETWORK_PORT,
-              context.getGlobalServiceTemplates().values());
+              toscaAnalyzerService.fetchNodeType(ToscaNodeType.NETWORK_PORT,
+                      context.getGlobalServiceTemplates().values());
       enrichProperties = context.getEnrichPortResourceProperties();
       if (!enrichNodeType.isPresent() || Objects.isNull(enrichProperties)) {
         return;
@@ -1864,9 +1903,9 @@ public class UnifiedCompositionService {
     if (Objects.nonNull(enrichNodeTypeProperties)) {
       for (String enrichPropertyName : enrichProperties) {
         handleEntityConsolidationDataNodeTypeProperties(
-            enrichPropertyName, substitutionServiceTemplate,
-            enrichNodeType.get(), nodeTemplate, compositionEntity, computeTemplateConsolidationData,
-            entityConsolidationDataList, nodeTemplateProperties, context);
+                enrichPropertyName, substitutionServiceTemplate,
+                enrichNodeType.get(), nodeTemplate, compositionEntity, computeTemplateConsolidationData,
+                entityConsolidationDataList, nodeTemplateProperties, context);
       }
     }
   }
@@ -1887,14 +1926,14 @@ public class UnifiedCompositionService {
       String nodeTemplateId = entityConsolidationData.getNodeTemplateId();
 
       String inputParamId =
-          getParameterId(nodeTemplateId, nodeTemplate, enrichPropertyName,
-              compositionEntity, computeTemplateConsolidationData);
+              getParameterId(nodeTemplateId, nodeTemplate, enrichPropertyName,
+                      compositionEntity, computeTemplateConsolidationData);
       Map<String, String> propertyValMap = new HashMap<>();
 
       context
-          .addNewPropertyIdToNodeTemplate(
-              ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate),
-              inputParamId, nodeTemplateProperties.get(enrichPropertyName));
+              .addNewPropertyIdToNodeTemplate(
+                      ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate),
+                      inputParamId, nodeTemplateProperties.get(enrichPropertyName));
 
       if (nodeTemplateProperties.containsKey(enrichPropertyName)) {
         handleExistingEnrichedProperty(enrichPropertyName, nodeTemplateProperties, inputParamId);
@@ -1903,11 +1942,11 @@ public class UnifiedCompositionService {
         nodeTemplate.getProperties().put(enrichPropertyName, propertyValMap);
       }
       propertyType =
-          enrichNodeType.getProperties().get(enrichPropertyName).getType();
+              enrichNodeType.getProperties().get(enrichPropertyName).getType();
 
       addPropertyInputParameter(propertyType, substitutionServiceTemplate, enrichNodeType
-              .getProperties().get(enrichPropertyName).getEntry_schema(),
-          Optional.of(inputParamId), compositionEntity, context);
+                      .getProperties().get(enrichPropertyName).getEntry_schema(),
+              Optional.of(inputParamId), compositionEntity, context);
 
     }
   }
@@ -1942,35 +1981,35 @@ public class UnifiedCompositionService {
                                          UnifiedCompositionEntity unifiedCompositionEntity,
                                          TranslationContext context) {
     if (parameterId.isPresent() &&
-        isParameterBelongsToEnrichedPortProperties(parameterId.get(), context)) {
+            isParameterBelongsToEnrichedPortProperties(parameterId.get(), context)) {
       addInputParameter(parameterId.get(),
-          propertyType,
-          propertyType.equals(PropertyType.LIST.getDisplayName()) ? entrySchema : null,
-          substitutionServiceTemplate);
+              propertyType,
+              propertyType.equals(PropertyType.LIST.getDisplayName()) ? entrySchema : null,
+              substitutionServiceTemplate);
     } else if (isPropertySimpleType(propertyType)) {
       parameterId
-          .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
-              PropertyType.LIST.getDisplayName(),
-              DataModelUtil
-                  .createEntrySchema(propertyType.toLowerCase(), null, null),
-              substitutionServiceTemplate));
+              .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
+                      PropertyType.LIST.getDisplayName(),
+                      DataModelUtil
+                              .createEntrySchema(propertyType.toLowerCase(), null, null),
+                      substitutionServiceTemplate));
 
     } else if (propertyType.equals(PropertyTypeExt.JSON.getDisplayName()) ||
-        (Objects.nonNull(entrySchema) && isPropertySimpleType(entrySchema.getType()))) {
+            (Objects.nonNull(entrySchema) && isPropertySimpleType(entrySchema.getType()))) {
       parameterId
-          .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
-              PropertyType.LIST.getDisplayName(),
-              DataModelUtil
-                  .createEntrySchema(PropertyTypeExt.JSON.getDisplayName(), null, null),
-              substitutionServiceTemplate));
+              .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
+                      PropertyType.LIST.getDisplayName(),
+                      DataModelUtil
+                              .createEntrySchema(PropertyTypeExt.JSON.getDisplayName(), null, null),
+                      substitutionServiceTemplate));
     } else {
       parameterId
-          .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
-              analyzeParameterType(propertyType),
-              DataModelUtil
-                  .createEntrySchema(analyzeEntrySchemaType(propertyType, entrySchema),
-                      null, null),
-              substitutionServiceTemplate));
+              .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
+                      analyzeParameterType(propertyType),
+                      DataModelUtil
+                              .createEntrySchema(analyzeEntrySchemaType(propertyType, entrySchema),
+                                      null, null),
+                      substitutionServiceTemplate));
     }
   }
 
@@ -1989,20 +2028,20 @@ public class UnifiedCompositionService {
 
   private boolean isPropertySimpleType(String propertyType) {
     return !Objects.isNull(propertyType) &&
-        (propertyType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
-            || propertyType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
-            || propertyType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
-            || propertyType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName()));
+            (propertyType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
+                    || propertyType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
+                    || propertyType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
+                    || propertyType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName()));
   }
 
   private String analyzeParameterType(String propertyType) {
     return propertyType.equalsIgnoreCase(PropertyType.LIST.getDisplayName()) ? PropertyType.LIST
-        .getDisplayName() : propertyType;
+            .getDisplayName() : propertyType;
   }
 
   private String analyzeEntrySchemaType(String propertyType, EntrySchema entrySchema) {
     return propertyType.equalsIgnoreCase(PropertyType.LIST.getDisplayName()) ?
-        entrySchema.getType() : null;
+            entrySchema.getType() : null;
   }
 
   private void handleConsolidationEntitiesRequirementConnectivity(String nodeTemplateId,
@@ -2011,7 +2050,7 @@ public class UnifiedCompositionService {
                                                                   TranslationContext context) {
     Map<String, RequirementAssignment> updatedNodeTemplateRequirements = new HashMap<>();
     List<Map<String, RequirementAssignment>> nodeTemplateRequirements = DataModelUtil
-        .getNodeTemplateRequirementList(nodeTemplate);
+            .getNodeTemplateRequirementList(nodeTemplate);
     if (CollectionUtils.isEmpty(nodeTemplateRequirements)) {
       return;
     }
@@ -2021,8 +2060,8 @@ public class UnifiedCompositionService {
         RequirementAssignment requirementAssignment = entry.getValue();
         String requirementNode = requirementAssignment.getNode();
         String unifiedNodeTemplateId =
-            context.getUnifiedSubstitutionNodeTemplateId(serviceTemplate,
-                requirementNode);
+                context.getUnifiedSubstitutionNodeTemplateId(serviceTemplate,
+                        requirementNode);
         if (unifiedNodeTemplateId != null) {
           //Update the node id in the requirement
           requirementAssignment.setNode(unifiedNodeTemplateId);
@@ -2042,14 +2081,14 @@ public class UnifiedCompositionService {
                                                 String relationshipId,
                                                 TranslationContext context) {
     Map<String, RelationshipTemplate> relationshipTemplates = DataModelUtil
-        .getRelationshipTemplates(serviceTemplate);
+            .getRelationshipTemplates(serviceTemplate);
     if (relationshipTemplates != null) {
       RelationshipTemplate relationshipTemplate = relationshipTemplates.get(relationshipId);
       if (relationshipTemplate != null) {
         String relationshipTemplateType = relationshipTemplate.getType();
         if (relationshipTemplateType.equals(ToscaRelationshipType.CINDER_VOLUME_ATTACHES_TO)) {
           handleCinderVolumeAttachmentRelationshipTemplate(serviceTemplate,
-              relationshipTemplate, context);
+                  relationshipTemplate, context);
         }
       }
     }
@@ -2057,14 +2096,14 @@ public class UnifiedCompositionService {
 
 
   private void handleCinderVolumeAttachmentRelationshipTemplate(ServiceTemplate
-                                                                    substitutionServiceTemplate,
+                                                                        substitutionServiceTemplate,
                                                                 RelationshipTemplate
-                                                                    relationshipTemplate,
+                                                                        relationshipTemplate,
                                                                 TranslationContext context) {
     Map<String, Object> properties = relationshipTemplate.getProperties();
     properties.computeIfPresent(HeatConstants.INSTANCE_UUID_PROPERTY_NAME, (key, value) ->
-        context.getUnifiedAbstractNodeTemplateId(substitutionServiceTemplate,
-            (String) value));
+            context.getUnifiedAbstractNodeTemplateId(substitutionServiceTemplate,
+                    (String) value));
   }
 
   private String updateIdenticalProperty(String nodeTemplateId, String propertyId,
@@ -2078,7 +2117,7 @@ public class UnifiedCompositionService {
     switch (unifiedCompositionEntity) {
       case Compute:
         inputParamId = COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX + propertyId
-            + COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX;
+                + COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX;
 
         propertyVal.put(ToscaFunctions.GET_INPUT.getDisplayName(), inputParamId);
         nodeTemplate.getProperties().put(propertyId, propertyVal);
@@ -2088,9 +2127,9 @@ public class UnifiedCompositionService {
       case Port:
         String portType = ConsolidationDataUtil.getPortType(nodeTemplateId);
         ComputeTemplateConsolidationData computeTemplateConsolidationData =
-            getConnectedComputeConsolidationData(unifiedCompositionDataList, nodeTemplateId);
+                getConnectedComputeConsolidationData(unifiedCompositionDataList, nodeTemplateId);
         inputParamId = getInputParamIdForPort(nodeTemplateId, propertyId, portType,
-            computeTemplateConsolidationData);
+                computeTemplateConsolidationData);
 
         propertyVal.put(ToscaFunctions.GET_INPUT.getDisplayName(), inputParamId);
         nodeTemplate.getProperties().put(propertyId, propertyVal);
@@ -2106,15 +2145,15 @@ public class UnifiedCompositionService {
                                         ComputeTemplateConsolidationData computeTemplateConsolidationData) {
     String inputParamId;
     if (Objects.isNull(computeTemplateConsolidationData)
-        || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
+            || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
       inputParamId =
-          UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_" +
-              propertyId;
+              UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_" +
+                      propertyId;
 
     } else {
       inputParamId =
-          UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + portType + "_"
-              + propertyId;
+              UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + portType + "_"
+                      + propertyId;
     }
     return inputParamId;
   }
@@ -2125,36 +2164,36 @@ public class UnifiedCompositionService {
                                  ServiceTemplate serviceTemplate) {
 
     ParameterDefinition parameterDefinition = DataModelUtil.createParameterDefinition
-        (parameterType, null, null,
-            true, null, null,
-            entrySchema, null);
+            (parameterType, null, null,
+                    true, null, null,
+                    entrySchema, null);
 
 
     DataModelUtil
-        .addInputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition);
+            .addInputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition);
   }
 
   // Return the input parameter Id which is used in the new property value if there is one
   private Optional<String> updateProperty(
-      ServiceTemplate serviceTemplate,
-      String nodeTemplateId, NodeTemplate nodeTemplate,
-      Map.Entry<String, Object> propertyEntry,
-      UnifiedCompositionEntity compositionEntity,
-      ComputeTemplateConsolidationData computeTemplateConsolidationData,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          String nodeTemplateId, NodeTemplate nodeTemplate,
+          Map.Entry<String, Object> propertyEntry,
+          UnifiedCompositionEntity compositionEntity,
+          ComputeTemplateConsolidationData computeTemplateConsolidationData,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          TranslationContext context) {
 
     if (handleGetAttrFromConsolidationNodes(serviceTemplate, nodeTemplateId, nodeTemplate,
-        propertyEntry, unifiedCompositionDataList, context)) {
+            propertyEntry, unifiedCompositionDataList, context)) {
       return Optional.empty();
     }
 
 
     String inputParamId =
-        getParameterId(nodeTemplateId, nodeTemplate, propertyEntry.getKey(), compositionEntity,
-            computeTemplateConsolidationData);
+            getParameterId(nodeTemplateId, nodeTemplate, propertyEntry.getKey(), compositionEntity,
+                    computeTemplateConsolidationData);
     Map<String, List<String>> propertyVal = getPropertyValueInputParam(nodeTemplateId,
-        nodeTemplate, inputParamId);
+            nodeTemplate, inputParamId);
     nodeTemplate.getProperties().put(propertyEntry.getKey(), propertyVal);
     return Optional.of(inputParamId);
   }
@@ -2171,17 +2210,17 @@ public class UnifiedCompositionService {
   }
 
   private boolean handleGetAttrFromConsolidationNodes(
-      ServiceTemplate serviceTemplate,
-      String nodeTemplateId, NodeTemplate nodeTemplate,
-      Map.Entry<String, Object> propertyEntry,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          String nodeTemplateId, NodeTemplate nodeTemplate,
+          Map.Entry<String, Object> propertyEntry,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          TranslationContext context) {
     Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType =
-        getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList);
+            getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList);
 
     Set<String> consolidationNodeTemplateIds = consolidationNodeTemplateIdAndType.keySet();
     Map<String, String> entityIdToType = ConsolidationService.getConsolidationEntityIdToType(
-        serviceTemplate, context.getConsolidationData());
+            serviceTemplate, context.getConsolidationData());
     boolean includeGetAttrFromConsolidationNodes = false;
     boolean includeGetAttrFromOutsideNodes = false;
     boolean isGetAttrFromConsolidationIsFromSameType = false;
@@ -2198,9 +2237,9 @@ public class UnifiedCompositionService {
       }
     }
     if ((includeGetAttrFromConsolidationNodes && includeGetAttrFromOutsideNodes)
-        ||
-        (includeGetAttrFromConsolidationNodes && isIncludeToscaFunc(propertyEntry.getValue(),
-            ToscaFunctions.GET_INPUT))) {
+            ||
+            (includeGetAttrFromConsolidationNodes && isIncludeToscaFunc(propertyEntry.getValue(),
+                    ToscaFunctions.GET_INPUT))) {
       //This case is currently not supported - this property will be ignored
       return true;
     } else if (includeGetAttrFromConsolidationNodes && !isGetAttrFromConsolidationIsFromSameType) {
@@ -2210,7 +2249,7 @@ public class UnifiedCompositionService {
         String targetNodeTemplateId = (String) getAttrFunc.get(0);
         if (consolidationNodeTemplateIds.contains(targetNodeTemplateId)) {
           updatePropertyGetAttrFunc(serviceTemplate, unifiedCompositionDataList, context,
-              consolidationNodeTemplateIdAndType, targetNodeTemplateId, getAttrFunc);
+                  consolidationNodeTemplateIdAndType, targetNodeTemplateId, getAttrFunc);
         }
       }
       nodeTemplate.getProperties().put(propertyEntry.getKey(), clonedPropertyValue);
@@ -2222,10 +2261,10 @@ public class UnifiedCompositionService {
   private boolean isGetAttrFromConsolidationNodesIsFromSameType(String sourceNodeTemplateId,
                                                                 Set<String> nodeTemplateIdsFromConsolidation,
                                                                 Map<String, String>
-                                                                    nodeTemplateIdToType) {
+                                                                        nodeTemplateIdToType) {
     for (String idFromConsolidation : nodeTemplateIdsFromConsolidation) {
       if (isGetAttrNodeTemplateFromSameType(sourceNodeTemplateId, idFromConsolidation,
-          nodeTemplateIdToType)) {
+              nodeTemplateIdToType)) {
         return true;
       }
     }
@@ -2237,26 +2276,26 @@ public class UnifiedCompositionService {
                                                     Map<String, String> nodeTemplateIdToType) {
 
     if (Objects.isNull(nodeTemplateIdToType.get(sourceNodeTemplateId))
-        || Objects.isNull(nodeTemplateIdToType.get(targetNodeTemplateId))) {
+            || Objects.isNull(nodeTemplateIdToType.get(targetNodeTemplateId))) {
       return false;
     }
 
     return nodeTemplateIdToType.get(sourceNodeTemplateId).equals(nodeTemplateIdToType
-        .get(targetNodeTemplateId));
+            .get(targetNodeTemplateId));
   }
 
   private void updatePropertyGetAttrFunc(
-      ServiceTemplate serviceTemplate,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      TranslationContext context,
-      Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType,
-      String targetNodeTemplateId,
-      List<Object> getAttrFunc) {
+          ServiceTemplate serviceTemplate,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          TranslationContext context,
+          Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType,
+          String targetNodeTemplateId,
+          List<Object> getAttrFunc) {
     UnifiedCompositionEntity targetCompositionEntity =
-        consolidationNodeTemplateIdAndType.get(targetNodeTemplateId);
+            consolidationNodeTemplateIdAndType.get(targetNodeTemplateId);
     String targetNewNodeTemplateId =
-        getNewNodeTemplateId(serviceTemplate, unifiedCompositionDataList, targetNodeTemplateId,
-            targetCompositionEntity);
+            getNewNodeTemplateId(serviceTemplate, unifiedCompositionDataList, targetNodeTemplateId,
+                    targetCompositionEntity);
     getAttrFunc.set(0, targetNewNodeTemplateId);
   }
 
@@ -2269,13 +2308,13 @@ public class UnifiedCompositionService {
         return getNewComputeNodeTemplateId(serviceTemplate, nodeTemplateId);
       case Port:
         ComputeTemplateConsolidationData connectedComputeConsolidationData =
-            getConnectedComputeConsolidationData(
-                unifiedCompositionDataList, nodeTemplateId);
+                getConnectedComputeConsolidationData(
+                        unifiedCompositionDataList, nodeTemplateId);
         NodeTemplate connectedComputeNodeTemplate =
-            DataModelUtil.getNodeTemplate(serviceTemplate,
-                connectedComputeConsolidationData.getNodeTemplateId());
+                DataModelUtil.getNodeTemplate(serviceTemplate,
+                        connectedComputeConsolidationData.getNodeTemplateId());
         return getNewPortNodeTemplateId(nodeTemplateId, connectedComputeNodeTemplate.getType(),
-            connectedComputeConsolidationData);
+                connectedComputeConsolidationData);
       default:
         return null;
     }
@@ -2288,13 +2327,13 @@ public class UnifiedCompositionService {
     ConsolidationData consolidationData = context.getConsolidationData();
 
     if (isIdIsOfExpectedType(origNodeTemplateId, UnifiedCompositionEntity.Port,
-        serviceTemplateFileName,
-        context)) {
+            serviceTemplateFileName,
+            context)) {
       return handleIdOfPort(origNodeTemplateId, serviceTemplateFileName, consolidationData);
     } else if (isIdIsOfExpectedType(origNodeTemplateId, UnifiedCompositionEntity.Compute,
-        serviceTemplateFileName, context)) {
+            serviceTemplateFileName, context)) {
       NodeTemplate nodeTemplate =
-          getComputeNodeTemplate(origNodeTemplateId, serviceTemplate, context);
+              getComputeNodeTemplate(origNodeTemplateId, serviceTemplate, context);
       return getComputeTypeSuffix(nodeTemplate.getType());
     }
 
@@ -2302,11 +2341,11 @@ public class UnifiedCompositionService {
   }
 
   private ComputeTemplateConsolidationData getConnectedComputeConsolidationData(
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      String portNodeTemplateId) {
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          String portNodeTemplateId) {
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       Collection<List<String>> portsCollection =
-          unifiedCompositionData.getComputeTemplateConsolidationData().getPorts().values();
+              unifiedCompositionData.getComputeTemplateConsolidationData().getPorts().values();
       for (List<String> portIdList : portsCollection) {
         if (portIdList.contains(portNodeTemplateId)) {
           return unifiedCompositionData.getComputeTemplateConsolidationData();
@@ -2332,16 +2371,16 @@ public class UnifiedCompositionService {
     switch (unifiedCompositionEntity) {
       case Compute:
         return UnifiedCompositionEntity.Compute.name().toLowerCase() + "_"
-            + getComputeTypeSuffix(nodeTemplate.getType()) + "_" + propertyId;
+                + getComputeTypeSuffix(nodeTemplate.getType()) + "_" + propertyId;
       case Port:
         String portType = ConsolidationDataUtil.getPortType(nodeTemplateId);
         if (Objects.isNull(computeTemplateConsolidationData)
-            || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
+                || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
           return UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_"
-              + propertyId;
+                  + propertyId;
         }
         return UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + portType + "_"
-            + propertyId;
+                + propertyId;
       default:
         return propertyId;
     }
@@ -2354,10 +2393,10 @@ public class UnifiedCompositionService {
     }
 
     for (List<RequirementAssignmentData> requirementAssignmentDataList : entityConsolidationData
-        .getNodesConnectedOut().values()) {
+            .getNodesConnectedOut().values()) {
       for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) {
         DataModelUtil.removeRequirementsAssignment(nodeTemplate.getRequirements(),
-            requirementAssignmentData.getRequirementId());
+                requirementAssignmentData.getRequirementId());
       }
       if (nodeTemplate.getRequirements().isEmpty()) {
         nodeTemplate.setRequirements(null);
@@ -2366,17 +2405,17 @@ public class UnifiedCompositionService {
   }
 
   private void removeVolumeConnectivity(
-      ComputeTemplateConsolidationData computeTemplateConsolidationData,
-      NodeTemplate computeNodeTemplate) {
+          ComputeTemplateConsolidationData computeTemplateConsolidationData,
+          NodeTemplate computeNodeTemplate) {
     if (MapUtils.isEmpty(computeTemplateConsolidationData.getVolumes())) {
       return;
     }
     Collection<List<RequirementAssignmentData>> volumeCollection =
-        computeTemplateConsolidationData.getVolumes().values();
+            computeTemplateConsolidationData.getVolumes().values();
     for (List<RequirementAssignmentData> requirementAssignmentDataList : volumeCollection) {
       for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) {
         DataModelUtil.removeRequirementsAssignment(computeNodeTemplate.getRequirements(),
-            requirementAssignmentData.getRequirementId());
+                requirementAssignmentData.getRequirementId());
       }
     }
     if (computeNodeTemplate.getRequirements().isEmpty()) {
@@ -2386,11 +2425,11 @@ public class UnifiedCompositionService {
 
   private void createIndexInputParameter(ServiceTemplate substitutionServiceTemplate) {
     ParameterDefinition indexParameterDefinition =
-        DataModelUtil.createParameterDefinition(PropertyType.INTEGER.getDisplayName(),
-            "Index value of this substitution service template runtime instance", null,
-            false, createIndexValueConstraint(), null, null, 0);
+            DataModelUtil.createParameterDefinition(PropertyType.INTEGER.getDisplayName(),
+                    "Index value of this substitution service template runtime instance", null,
+                    false, createIndexValueConstraint(), null, null, 0);
     DataModelUtil.addInputParameterToTopologyTemplate(substitutionServiceTemplate,
-        ToscaConstants.INDEX_VALUE_PROPERTY_NAME, indexParameterDefinition);
+            ToscaConstants.INDEX_VALUE_PROPERTY_NAME, indexParameterDefinition);
   }
 
 
@@ -2405,50 +2444,50 @@ public class UnifiedCompositionService {
 
   private Optional<UnifiedComposition> getUnifiedCompositionInstance(UnifiedCompositionMode mode) {
     String unifiedCompositionImplClassName =
-        unifiedCompositionImplMap.get(mode.name()).getImplementationClass();
+            unifiedCompositionImplMap.get(mode.name()).getImplementationClass();
     if (StringUtils.isEmpty(unifiedCompositionImplClassName)) {
       return Optional.empty();
     }
     return Optional
-        .of(CommonMethods.newInstance(unifiedCompositionImplClassName, UnifiedComposition.class));
+            .of(CommonMethods.newInstance(unifiedCompositionImplClassName, UnifiedComposition.class));
   }
 
   private Optional<Map<String, Object>> createAbstractSubstitutionProperties(
-      ServiceTemplate serviceTemplate,
-      ServiceTemplate substitutionServiceTemplate,
-      List<UnifiedCompositionData> unifiedCompositionDataList,
-      TranslationContext context) {
+          ServiceTemplate serviceTemplate,
+          ServiceTemplate substitutionServiceTemplate,
+          List<UnifiedCompositionData> unifiedCompositionDataList,
+          TranslationContext context) {
     Map<String, Object> abstractSubstituteProperties = new LinkedHashMap<>();
     Map<String, ParameterDefinition> substitutionTemplateInputs = DataModelUtil
-        .getInputParameters(substitutionServiceTemplate);
+            .getInputParameters(substitutionServiceTemplate);
     if (substitutionTemplateInputs == null) {
       return Optional.empty();
     }
     //Since all the computes have the same type fetching the type from the first entry
     NodeTemplate firstComputeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-        unifiedCompositionDataList.get(0)
-            .getComputeTemplateConsolidationData().getNodeTemplateId());
+            unifiedCompositionDataList.get(0)
+                    .getComputeTemplateConsolidationData().getNodeTemplateId());
     String computeType = getComputeTypeSuffix(firstComputeNodeTemplate.getType());
     for (Map.Entry<String, ParameterDefinition> input : substitutionTemplateInputs.entrySet()) {
       String substitutionTemplateInputName = input.getKey();
       ParameterDefinition inputParameterDefinition = input.getValue();
       String inputType = inputParameterDefinition.getType();
       UnifiedCompositionEntity inputUnifiedCompositionEntity =
-          getInputCompositionEntity(substitutionTemplateInputName);
+              getInputCompositionEntity(substitutionTemplateInputName);
 
       if (!inputType.equalsIgnoreCase(PropertyType.LIST.getDisplayName())) {
         if (isIdenticalValueProperty(
-            substitutionTemplateInputName, inputUnifiedCompositionEntity, context)) {
+                substitutionTemplateInputName, inputUnifiedCompositionEntity, context)) {
           //Handle identical value properties
           Optional<String> identicalValuePropertyName =
-              getIdenticalValuePropertyName(substitutionTemplateInputName,
-                  inputUnifiedCompositionEntity, context);
+                  getIdenticalValuePropertyName(substitutionTemplateInputName,
+                          inputUnifiedCompositionEntity, context);
 
           if (identicalValuePropertyName.isPresent()) {
             updateIdenticalPropertyValue(identicalValuePropertyName.get(),
-                substitutionTemplateInputName, computeType, inputUnifiedCompositionEntity,
-                unifiedCompositionDataList.get(0), serviceTemplate, abstractSubstituteProperties,
-                context);
+                    substitutionTemplateInputName, computeType, inputUnifiedCompositionEntity,
+                    unifiedCompositionDataList.get(0), serviceTemplate, abstractSubstituteProperties,
+                    context);
           }
         }
         continue;
@@ -2461,9 +2500,9 @@ public class UnifiedCompositionService {
         case Compute:
           for (UnifiedCompositionData compositionData : unifiedCompositionDataList) {
             ComputeTemplateConsolidationData computeTemplateConsolidationData =
-                compositionData.getComputeTemplateConsolidationData();
+                    compositionData.getComputeTemplateConsolidationData();
             propertyValue = getComputePropertyValue(substitutionTemplateInputName,
-                serviceTemplate, computeTemplateConsolidationData);
+                    serviceTemplate, computeTemplateConsolidationData);
             if (!(propertyValue instanceof Optional)) {
               abstractPropertyValue.add(propertyValue);
             }
@@ -2472,18 +2511,18 @@ public class UnifiedCompositionService {
         case Port:
           for (UnifiedCompositionData compositionData : unifiedCompositionDataList) {
             List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-                getPortTemplateConsolidationDataList(compositionData);
+                    getPortTemplateConsolidationDataList(compositionData);
             //Get the input type for this input whether it is of type
             // port_<port_node_template_id>_<property_name> or port_<port_type>_<property_name>
             PortInputType portInputType = getPortInputType(substitutionTemplateInputName,
-                compositionData);
+                    compositionData);
             for (PortTemplateConsolidationData portTemplateConsolidationData :
-                portTemplateConsolidationDataList) {
+                    portTemplateConsolidationDataList) {
               //Get the port property value
               String portNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId();
               propertyValue = getPortPropertyValue(substitutionTemplateInputName,
-                  computeType, portInputType, serviceTemplate,
-                  portNodeTemplateId);
+                      computeType, portInputType, serviceTemplate,
+                      portNodeTemplateId);
               //If the value object is Optional.empty it implies that the property name was not
               // found in the input name
               if (!(propertyValue instanceof Optional)) {
@@ -2501,7 +2540,7 @@ public class UnifiedCompositionService {
       for (Object val : abstractPropertyValue) {
         if (Objects.nonNull(val)) {
           updateAbstractPropertyValue(substitutionTemplateInputName, inputParameterDefinition,
-              abstractPropertyValue, abstractSubstituteProperties);
+                  abstractPropertyValue, abstractSubstituteProperties);
           break;
         }
       }
@@ -2519,10 +2558,10 @@ public class UnifiedCompositionService {
       Object propertyValue = abstractPropertyValue.get(0);
       String entrySchemaType = parameterDefinition.getEntry_schema().getType();
       if (entrySchemaType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
-          || entrySchemaType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
-          || entrySchemaType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
-          || entrySchemaType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())
-          || entrySchemaType.equals(PropertyTypeExt.JSON.getDisplayName())) {
+              || entrySchemaType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
+              || entrySchemaType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
+              || entrySchemaType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())
+              || entrySchemaType.equals(PropertyTypeExt.JSON.getDisplayName())) {
         abstractSubstituteProperties.put(substitutionTemplateInputName, abstractPropertyValue);
       } else {
         abstractSubstituteProperties.put(substitutionTemplateInputName, propertyValue);
@@ -2539,12 +2578,12 @@ public class UnifiedCompositionService {
                                             Map<String, Object> abstractSubstituteProperties,
                                             TranslationContext context) {
     Optional<Object> identicalPropertyValueByType =
-        getIdenticalPropertyValueByType(identicalValuePropertyName, substitutionTemplateInputName,
-            entity, unifiedCompositionData, serviceTemplate, context);
+            getIdenticalPropertyValueByType(identicalValuePropertyName, substitutionTemplateInputName,
+                    entity, unifiedCompositionData, serviceTemplate, context);
 
     if (identicalPropertyValueByType.isPresent()) {
       abstractSubstituteProperties
-          .put(substitutionTemplateInputName, identicalPropertyValueByType.get());
+              .put(substitutionTemplateInputName, identicalPropertyValueByType.get());
 
     }
 
@@ -2559,33 +2598,33 @@ public class UnifiedCompositionService {
                                                            TranslationContext context) {
 
     ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        unifiedCompositionData.getComputeTemplateConsolidationData();
+            unifiedCompositionData.getComputeTemplateConsolidationData();
 
     Optional<Object> computeIdenticalPropertyValue;
     switch (entity) {
       case Compute:
         computeIdenticalPropertyValue =
-            getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate,
-                entity, computeTemplateConsolidationData, context);
+                getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate,
+                        entity, computeTemplateConsolidationData, context);
         return computeIdenticalPropertyValue.isPresent() ? Optional.of(
-            computeIdenticalPropertyValue.get()) : Optional.empty();
+                computeIdenticalPropertyValue.get()) : Optional.empty();
 
       case Other:
         computeIdenticalPropertyValue =
-            getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate,
-                entity, computeTemplateConsolidationData, context);
+                getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate,
+                        entity, computeTemplateConsolidationData, context);
         return computeIdenticalPropertyValue.isPresent() ? Optional.of(
-            computeIdenticalPropertyValue.get()) : Optional.empty();
+                computeIdenticalPropertyValue.get()) : Optional.empty();
 
       case Port:
         List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-            unifiedCompositionData.getPortTemplateConsolidationDataList();
+                unifiedCompositionData.getPortTemplateConsolidationDataList();
         for (PortTemplateConsolidationData portTemplateConsolidationData : portTemplateConsolidationDataList) {
           String portType =
-              ConsolidationDataUtil.getPortType(portTemplateConsolidationData.getNodeTemplateId());
+                  ConsolidationDataUtil.getPortType(portTemplateConsolidationData.getNodeTemplateId());
           if (substitutionTemplateInputName.contains(portType)) {
             return getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate,
-                entity, portTemplateConsolidationData, context);
+                    entity, portTemplateConsolidationData, context);
           }
         }
     }
@@ -2599,13 +2638,13 @@ public class UnifiedCompositionService {
                                          UnifiedCompositionData unifiedCompositionData) {
     String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_";
     ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
-        .getComputeTemplateConsolidationData();
+            .getComputeTemplateConsolidationData();
     List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-        getPortTemplateConsolidationDataList(unifiedCompositionData);
+            getPortTemplateConsolidationDataList(unifiedCompositionData);
     //Scan the available port node template ids to check if the input is of the form
     // "port_<port_node_template_id>_<property_name>"
     for (PortTemplateConsolidationData portTemplateConsolidationData :
-        portTemplateConsolidationDataList) {
+            portTemplateConsolidationDataList) {
       String portNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId();
       String portNodeTemplateIdPrefix = portInputPrefix + portNodeTemplateId;
       if (inputName.startsWith(portNodeTemplateIdPrefix)) {
@@ -2636,17 +2675,17 @@ public class UnifiedCompositionService {
                                                      TranslationContext context) {
     String nodeTemplateIdToRemove = entity.getNodeTemplateId();
     Map<String, NodeTemplate> nodeTemplates =
-        serviceTemplate.getTopology_template().getNode_templates();
+            serviceTemplate.getTopology_template().getNode_templates();
     NodeTemplate nodeTemplateToRemove =
-        nodeTemplates.get(nodeTemplateIdToRemove);
+            nodeTemplates.get(nodeTemplateIdToRemove);
     nodeTemplates.remove(nodeTemplateIdToRemove);
 
     context.addCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
-        nodeTemplateIdToRemove,
-        entity.getClass() == ComputeTemplateConsolidationData.class
-            ? UnifiedCompositionEntity.Compute
-            : UnifiedCompositionEntity.Port,
-        nodeTemplateToRemove);
+            nodeTemplateIdToRemove,
+            entity.getClass() == ComputeTemplateConsolidationData.class
+                    ? UnifiedCompositionEntity.Compute
+                    : UnifiedCompositionEntity.Port,
+            nodeTemplateToRemove);
 
   }
 
@@ -2654,13 +2693,13 @@ public class UnifiedCompositionService {
                                      ServiceTemplate serviceTemplate,
                                      TranslationContext context) {
     NodeTemplate cleanedNodeTemplate =
-        context
-            .getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
-                cleanedNodeTemplateId);
+            context
+                    .getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
+                            cleanedNodeTemplateId);
     String typeToRemove = cleanedNodeTemplate.getType();
 
     if (Objects.nonNull(typeToRemove)
-        && serviceTemplate.getNode_types().containsKey(typeToRemove)) {
+            && serviceTemplate.getNode_types().containsKey(typeToRemove)) {
       serviceTemplate.getNode_types().remove(typeToRemove);
     }
   }
@@ -2669,25 +2708,25 @@ public class UnifiedCompositionService {
                                     EntityConsolidationData entity,
                                     TranslationContext context) {
     Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template()
-        .getGroups() == null ? new HashMap<>()
-        : serviceTemplate.getTopology_template().getGroups();
+            .getGroups() == null ? new HashMap<>()
+            : serviceTemplate.getTopology_template().getGroups();
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
     String nodeRelatedAbstractNodeId =
-        context.getUnifiedAbstractNodeTemplateId(serviceTemplate, entity.getNodeTemplateId());
+            context.getUnifiedAbstractNodeTemplateId(serviceTemplate, entity.getNodeTemplateId());
 
     for (Map.Entry<String, GroupDefinition> groupEntry : groups.entrySet()) {
       GroupDefinition groupDefinition = groupEntry.getValue();
       if (isHeatStackGroup(groupDefinition.getType())) {
         updateGroupMembersWithNewUnifiedNodeTemplateId(entity, nodeRelatedAbstractNodeId,
-            groupEntry);
+                groupEntry);
       }
     }
   }
 
   private void updateGroupMembersWithNewUnifiedNodeTemplateId(
-      EntityConsolidationData entity,
-      String newNodetemplateId,
-      Map.Entry<String, GroupDefinition> groupEntry) {
+          EntityConsolidationData entity,
+          String newNodetemplateId,
+          Map.Entry<String, GroupDefinition> groupEntry) {
     List<String> members = groupEntry.getValue().getMembers();
     if (members.contains(entity.getNodeTemplateId())) {
       members.remove(entity.getNodeTemplateId());
@@ -2698,37 +2737,56 @@ public class UnifiedCompositionService {
     groupEntry.getValue().setMembers(members);
   }
 
+  private void updateSubstitutableNodeTemplateRequirements(ServiceTemplate serviceTemplate,
+                                                           ServiceTemplate substitutionServiceTemplate){
+    if(Objects.isNull(substitutionServiceTemplate.getTopology_template())){
+      return;
+    }
+
+    SubstitutionMapping substitution_mappings =
+            substitutionServiceTemplate.getTopology_template().getSubstitution_mappings();
+
+    if(Objects.isNull(substitution_mappings)){
+      return;
+    }
+
+    String node_type = substitution_mappings.getNode_type();
+    Map<String, List<String>> requirements = substitution_mappings.getRequirements();
+
+
+  }
+
   private void updateSubstitutionMapping(ServiceTemplate serviceTemplate,
                                          TranslationContext context) {
     SubstitutionMapping substitutionMappings =
-        DataModelUtil.getSubstitutionMappings(serviceTemplate);
+            DataModelUtil.getSubstitutionMappings(serviceTemplate);
     if (Objects.nonNull(substitutionMappings)) {
 
       if (Objects.nonNull(substitutionMappings.getRequirements())) {
         updateSubstitutionMappingRequirements(substitutionMappings.getRequirements(),
-            serviceTemplate, context);
+                serviceTemplate, context);
       }
 
       if (Objects.nonNull(substitutionMappings.getCapabilities())) {
         updateSubstitutionMappingCapabilities(substitutionMappings.getCapabilities(),
-            serviceTemplate, context);
+                serviceTemplate, context);
       }
     }
   }
 
   private void updateSubstitutionMappingRequirements(Map<String, List<String>>
-                                                         substitutionMappingRequirements,
+                                                             substitutionMappingRequirements,
                                                      ServiceTemplate serviceTemplate,
                                                      TranslationContext context) {
     for (Map.Entry<String, List<String>> entry : substitutionMappingRequirements.entrySet()) {
       List<String> requirement = entry.getValue();
       String oldNodeTemplateId = requirement.get(0);
       String newAbstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(serviceTemplate,
-          requirement.get(0));
+              requirement.get(0));
       String newSubstitutionNodeTemplateId = context.getUnifiedSubstitutionNodeTemplateId(
-          serviceTemplate, oldNodeTemplateId);
+              serviceTemplate, oldNodeTemplateId);
       if (Objects.nonNull(newAbstractNodeTemplateId)
-          && Objects.nonNull(newSubstitutionNodeTemplateId)) {
+              && Objects.nonNull(newSubstitutionNodeTemplateId)) {
         requirement.set(0, newAbstractNodeTemplateId);
         String newRequirementValue = requirement.get(1) + "_" + newSubstitutionNodeTemplateId;
         requirement.set(1, newRequirementValue);
@@ -2737,18 +2795,18 @@ public class UnifiedCompositionService {
   }
 
   private void updateSubstitutionMappingCapabilities(Map<String, List<String>>
-                                                         substitutionMappingCapabilities,
+                                                             substitutionMappingCapabilities,
                                                      ServiceTemplate serviceTemplate,
                                                      TranslationContext context) {
     for (Map.Entry<String, List<String>> entry : substitutionMappingCapabilities.entrySet()) {
       List<String> capability = entry.getValue();
       String oldNodeTemplateId = capability.get(0);
       String newAbstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(serviceTemplate,
-          capability.get(0));
+              capability.get(0));
       String newSubstitutionNodeTemplateId = context.getUnifiedSubstitutionNodeTemplateId(
-          serviceTemplate, oldNodeTemplateId);
+              serviceTemplate, oldNodeTemplateId);
       if (Objects.nonNull(newAbstractNodeTemplateId)
-          && Objects.nonNull(newSubstitutionNodeTemplateId)) {
+              && Objects.nonNull(newSubstitutionNodeTemplateId)) {
         capability.set(0, newAbstractNodeTemplateId);
         String newRequirementValue = capability.get(1) + "_" + newSubstitutionNodeTemplateId;
         capability.set(1, newRequirementValue);
@@ -2760,16 +2818,16 @@ public class UnifiedCompositionService {
                                                      EntityConsolidationData entity,
                                                      TranslationContext context) {
     Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template()
-        .getGroups() == null ? new HashMap<>() : serviceTemplate.getTopology_template().getGroups();
+            .getGroups() == null ? new HashMap<>() : serviceTemplate.getTopology_template().getGroups();
     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
     Optional<String> nestedNodeTemplateId =
-        context.getUnifiedNestedNodeTemplateId(serviceTemplateFileName, entity.getNodeTemplateId());
+            context.getUnifiedNestedNodeTemplateId(serviceTemplateFileName, entity.getNodeTemplateId());
     if (nestedNodeTemplateId.isPresent()) {
       for (Map.Entry<String, GroupDefinition> groupEntry : groups.entrySet()) {
         GroupDefinition groupDefinition = groupEntry.getValue();
         if (isHeatStackGroup(groupDefinition.getType())) {
           updateGroupMembersWithNewUnifiedNodeTemplateId(entity, nestedNodeTemplateId.get(),
-              groupEntry);
+                  groupEntry);
         }
       }
     }
@@ -2780,7 +2838,7 @@ public class UnifiedCompositionService {
                                                              ServiceTemplate nestedServiceTemplate,
                                                              TranslationContext context) {
     NodeTemplate nestedNodeTemplate = DataModelUtil.getNodeTemplate(mainServiceTemplate,
-        nestedNodeTemplateId);
+            nestedNodeTemplateId);
     if (Objects.isNull(nestedNodeTemplate)) {
       return;
     }
@@ -2788,13 +2846,124 @@ public class UnifiedCompositionService {
     updateNestedNodeTemplateProperties(nestedServiceTemplate, nestedNodeTemplate, context);
 
     Optional<String> unifiedNestedNodeTypeId = context
-        .getUnifiedNestedNodeTypeId(
-            ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME),
-            nestedNodeTemplate.getType());
+            .getUnifiedNestedNodeTypeId(
+                    ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME),
+                    nestedNodeTemplate.getType());
     unifiedNestedNodeTypeId
-        .ifPresent(unifiedNestedNodeTypeIdVal -> updateNestedNodeTemplate(
-            unifiedNestedNodeTypeIdVal, nestedNodeTemplateId, nestedNodeTemplate,
-            mainServiceTemplate, context));
+            .ifPresent(unifiedNestedNodeTypeIdVal -> updateNestedNodeTemplate(
+                    unifiedNestedNodeTypeIdVal, nestedNodeTemplateId, nestedNodeTemplate,
+                    mainServiceTemplate, context));
+
+    updateNodeTemplateRequirements(nestedNodeTemplateId, mainServiceTemplate,
+            nestedServiceTemplate, context);
+
+    //updateNodeDependencyRequirement(mainServiceTemplate, context, nestedNodeTemplate);
+  }
+
+  public void updateNodeTemplateRequirements(String nestedNodeTemplateId,
+                                             ServiceTemplate mainServiceTemplate,
+                                             ServiceTemplate nestedServiceTemplate,
+                                             TranslationContext context){
+    String computeNodeType = nestedServiceTemplate.getNode_types().keySet().iterator().next();
+    NodeTemplate nestedNtFromMain =
+            mainServiceTemplate.getTopology_template().getNode_templates().get(nestedNodeTemplateId);
+    ServiceTemplate globalSubstitutionServiceTemplate =
+            context.getGlobalSubstitutionServiceTemplate();
+
+    if(Objects.isNull(computeNodeType)){
+      return;
+    }
+
+    NodeType nestedNodeType =
+            globalSubstitutionServiceTemplate.getNode_types().get(computeNodeType);
+
+    if(Objects.isNull(nestedNodeType)){
+      return;
+    }
+
+    List<Map<String, RequirementDefinition>> requirements = nestedNodeType.getRequirements();
+
+    if(CollectionUtils.isEmpty(nestedNtFromMain.getRequirements())){
+      nestedNtFromMain.setRequirements(new ArrayList<>());
+    }
+
+    if(CollectionUtils.isEmpty(requirements)) {
+      return;
+    }
+
+    updateNodeTemplateRequirements(nestedNtFromMain, requirements);
+  }
+
+  private void updateNodeTemplateRequirements(NodeTemplate nestedNtFromMain,
+                                              List<Map<String, RequirementDefinition>> requirements) {
+    for(Map<String, RequirementDefinition> requirementDefinitionMap : requirements){
+      Map<String, RequirementAssignment> currReqAssignmentMap = new HashMap<>();
+      for(Map.Entry<String, RequirementDefinition> requirementDefinitionEntry :
+              requirementDefinitionMap.entrySet()){
+        RequirementAssignment requirementAssignment =
+                getRequirementAssignmentFromDefinition(requirementDefinitionEntry);
+        currReqAssignmentMap.put(requirementDefinitionEntry.getKey(), requirementAssignment);
+      }
+
+      if(!nestedNtFromMain.getRequirements().contains(currReqAssignmentMap)) {
+        nestedNtFromMain.getRequirements().add(new HashMap(currReqAssignmentMap));
+      }
+    }
+
+    List<Map<String, RequirementAssignment>> reqsToRemove = new ArrayList<>();
+    for(Map<String, RequirementAssignment> requirementDefinitionMap : nestedNtFromMain.getRequirements()) {
+      if (requirementDefinitionMap.containsKey("dependency")) {
+        reqsToRemove.add(requirementDefinitionMap);
+      }
+    }
+
+    nestedNtFromMain.getRequirements().removeAll(reqsToRemove);
+  }
+
+  private RequirementAssignment getRequirementAssignmentFromDefinition(
+          Map.Entry<String, RequirementDefinition> requirementDefinitionEntry) {
+
+    RequirementAssignment requirementAssignment = new RequirementAssignment();
+    if(requirementDefinitionEntry.getValue() instanceof RequirementDefinition) {
+      requirementAssignment.setCapability(requirementDefinitionEntry.getValue().getCapability());
+      requirementAssignment.setNode(requirementDefinitionEntry.getValue().getNode());
+      requirementAssignment.setRelationship(requirementDefinitionEntry.getValue().getRelationship());
+    }
+    else if(requirementDefinitionEntry.getValue() instanceof Map){
+      Map<String, Object> reqAsMap = (Map<String, Object>) requirementDefinitionEntry.getValue();
+      requirementAssignment.setCapability((String) reqAsMap.get("capability"));
+      requirementAssignment.setNode((String) reqAsMap.get("node"));
+      requirementAssignment.setRelationship((String) reqAsMap.get("relationship"));
+    }
+    return requirementAssignment;
+  }
+
+  private void updateNodeDependencyRequirement(ServiceTemplate mainServiceTemplate,
+                                               TranslationContext context,
+                                               NodeTemplate nestedNodeTemplate) {
+    List<Map<String, RequirementAssignment>> requirements = nestedNodeTemplate.getRequirements();
+    for(int i = 0; i < requirements.size(); i++){
+      Map<String, RequirementAssignment> requirementAssignmentMap = requirements.get(i);
+      Map<String, RequirementAssignment> updatedMap = new HashMap<>();
+      for(Map.Entry<String, RequirementAssignment> requirementAssignmentEntry :
+              requirementAssignmentMap.entrySet()){
+        if(requirementAssignmentEntry.getKey().equals("dependency")){
+          Optional<String> newReqAssignmentDependencyId =
+                  context.getNewReqAssignmentDependencyId(ToscaUtil.getServiceTemplateFileName
+                          (mainServiceTemplate), requirementAssignmentEntry.getValue());
+
+          if(newReqAssignmentDependencyId.isPresent()){
+            updatedMap.put(newReqAssignmentDependencyId.get(), requirementAssignmentEntry
+                    .getValue());
+          }
+        }else{
+          updatedMap.put(requirementAssignmentEntry.getKey(), requirementAssignmentEntry
+                  .getValue());
+        }
+      }
+
+      requirements.add(i, updatedMap);
+    }
   }
 
   private void updateNestedNodeTemplateProperties(ServiceTemplate nestedServiceTemplate,
@@ -2802,8 +2971,8 @@ public class UnifiedCompositionService {
                                                   TranslationContext context) {
 
     Map<String, Object> newPropertyInputParamIds =
-        context.getAllNewPropertyInputParamIdsPerNodeTenplateId(ToscaUtil
-            .getServiceTemplateFileName(nestedServiceTemplate));
+            context.getAllNewPropertyInputParamIdsPerNodeTenplateId(ToscaUtil
+                    .getServiceTemplateFileName(nestedServiceTemplate));
 
     for (Map.Entry<String, Object> entry : newPropertyInputParamIds.entrySet()) {
       if (Objects.nonNull(entry.getValue())) {
@@ -2813,24 +2982,24 @@ public class UnifiedCompositionService {
     }
 
     String subNodeType =
-        nestedServiceTemplate.getTopology_template().getSubstitution_mappings().getNode_type();
+            nestedServiceTemplate.getTopology_template().getSubstitution_mappings().getNode_type();
     nestedNodeTemplate.setType(subNodeType);
 
   }
 
   private void handleSubstitutionMappingInNestedServiceTemplate(
-      String newNestedNodeType,
-      ServiceTemplate nestedServiceTemplate,
-      TranslationContext context) {
+          String newNestedNodeType,
+          ServiceTemplate nestedServiceTemplate,
+          TranslationContext context) {
     if (Objects.isNull(newNestedNodeType)) {
       return;
     }
 
     Set<String> relatedNestedNodeTypeIds =
-        context.getAllRelatedNestedNodeTypeIds();
+            context.getAllRelatedNestedNodeTypeIds();
 
-      SubstitutionMapping substitutionMappings =
-        nestedServiceTemplate.getTopology_template().getSubstitution_mappings();
+    SubstitutionMapping substitutionMappings =
+            nestedServiceTemplate.getTopology_template().getSubstitution_mappings();
     if(!relatedNestedNodeTypeIds.contains(substitutionMappings.getNode_type())) {
       substitutionMappings.setNode_type(newNestedNodeType);
     }
@@ -2843,43 +3012,43 @@ public class UnifiedCompositionService {
                                         TranslationContext context) {
     String mainSTName = ToscaUtil.getServiceTemplateFileName(mainServiceTemplate);
     String globalSTName =
-        ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
+            ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
     int index =
-        context.getHandledNestedComputeNodeTemplateIndex(globalSTName, newNestedNodeTypeId);
+            context.getHandledNestedComputeNodeTemplateIndex(globalSTName, newNestedNodeTypeId);
     String newNodeTemplateId =
-        Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX + getComputeTypeSuffix(newNestedNodeTypeId)
-            + "_" + index;
+            Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX + getComputeTypeSuffix(newNestedNodeTypeId)
+                    + "_" + index;
 
     nestedNodeTemplate.setType(newNestedNodeTypeId);
     mainServiceTemplate.getTopology_template().getNode_templates().remove(nestedNodeTemplateId);
     mainServiceTemplate.getTopology_template().getNode_templates()
-        .put(newNodeTemplateId, nestedNodeTemplate);
+            .put(newNodeTemplateId, nestedNodeTemplate);
 
     context.addUnifiedNestedNodeTemplateId(mainSTName, nestedNodeTemplateId, newNodeTemplateId);
   }
 
   private void handleNestedNodeTypesInGlobalSubstituteServiceTemplate(
-      String origNestedNodeTypeId,
-      String newNestedNodeTypeId,
-      ServiceTemplate globalSubstitutionServiceTemplate,
-      TranslationContext context) {
+          String origNestedNodeTypeId,
+          String newNestedNodeTypeId,
+          ServiceTemplate globalSubstitutionServiceTemplate,
+          TranslationContext context) {
     Set<String> relatedNestedNodeTypeIds =
-        context.getAllRelatedNestedNodeTypeIds();
+            context.getAllRelatedNestedNodeTypeIds();
 
     Map<String, NodeType> nodeTypes = globalSubstitutionServiceTemplate.getNode_types();
     if (!relatedNestedNodeTypeIds.contains(origNestedNodeTypeId)) {
       NodeType nested = DataModelUtil.getNodeType(globalSubstitutionServiceTemplate,
-          origNestedNodeTypeId);
+              origNestedNodeTypeId);
       setNewValuesForNestedNodeType(origNestedNodeTypeId, newNestedNodeTypeId, nested, nodeTypes);
     } else {
       NodeType nested =
-          (NodeType) DataModelUtil.getClonedObject(
-              DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, origNestedNodeTypeId));
+              (NodeType) DataModelUtil.getClonedObject(
+                      DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, origNestedNodeTypeId));
       nested.setDerived_from(ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE);
       nodeTypes.put(newNestedNodeTypeId, nested);
     }
     context.addUnifiedNestedNodeTypeId(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
-        origNestedNodeTypeId, newNestedNodeTypeId);
+            origNestedNodeTypeId, newNestedNodeTypeId);
   }
 
   private void setNewValuesForNestedNodeType(String origNestedNodeType,
@@ -2897,22 +3066,22 @@ public class UnifiedCompositionService {
                                                   ServiceTemplate nestedServiceTemplate,
                                                   TranslationContext context) {
     FileComputeConsolidationData fileComputeConsolidationData =
-        context.getConsolidationData().getComputeConsolidationData()
-            .getFileComputeConsolidationData(
-                ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
+            context.getConsolidationData().getComputeConsolidationData()
+                    .getFileComputeConsolidationData(
+                            ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
 
     if (Objects.nonNull(fileComputeConsolidationData)) {
       String nestedNodeTypePrefix = ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + "heat.";
       return Optional
-          .of(nestedNodeTypePrefix + getComputeTypeInNestedFile(fileComputeConsolidationData));
+              .of(nestedNodeTypePrefix + getComputeTypeInNestedFile(fileComputeConsolidationData));
     }
     return Optional.empty();
   }
 
   private String getComputeTypeInNestedFile(
-      FileComputeConsolidationData fileComputeConsolidationData) {
+          FileComputeConsolidationData fileComputeConsolidationData) {
     List<TypeComputeConsolidationData> typeComputeConsolidationDatas =
-        new ArrayList<>(fileComputeConsolidationData.getAllTypeComputeConsolidationData());
+            new ArrayList<>(fileComputeConsolidationData.getAllTypeComputeConsolidationData());
     if (typeComputeConsolidationDatas.size() == 0) {
       return null;
     } else {
@@ -2926,20 +3095,20 @@ public class UnifiedCompositionService {
                                                    String serviceTemplateFileName,
                                                    NodeTemplate abstractNodeTemplate) {
     Map<String, Object> properties =
-        abstractNodeTemplate == null || abstractNodeTemplate.getProperties() == null
-            ? new HashMap<>()
-            : abstractNodeTemplate.getProperties();
+            abstractNodeTemplate == null || abstractNodeTemplate.getProperties() == null
+                    ? new HashMap<>()
+                    : abstractNodeTemplate.getProperties();
     for (Object propertyValue : properties.values()) {
       List<List<Object>> getAttrList = extractGetAttrFunction(propertyValue);
       for (List<Object> getAttrFuncValue : getAttrList) {
         String origNodeTemplateId = (String) getAttrFuncValue.get(0);
         Optional<String> nestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(ToscaUtil
-            .getServiceTemplateFileName(serviceTemplate), origNodeTemplateId);
+                .getServiceTemplateFileName(serviceTemplate), origNodeTemplateId);
         if (nestedNodeTemplateId.isPresent()) {
           getAttrFuncValue.set(0, nestedNodeTemplateId.get());
         } else {
           replaceGetAttrNodeIdAndAttrName(serviceTemplate, context, serviceTemplateFileName,
-              getAttrFuncValue);
+                  getAttrFuncValue);
         }
       }
     }
@@ -2953,17 +3122,17 @@ public class UnifiedCompositionService {
     String attributeName = (String) getAttrFuncValue.get(1);
 
     String unifiedAbstractNodeTemplateId =
-        context.getUnifiedAbstractNodeTemplateId(serviceTemplate, origNodeTemplateId);
+            context.getUnifiedAbstractNodeTemplateId(serviceTemplate, origNodeTemplateId);
 
     if (Objects.isNull(unifiedAbstractNodeTemplateId)) {
       return;
     }
 
     String newNodeTemplateId =
-        getNewNodeTemplateId(origNodeTemplateId, serviceTemplateFileName, serviceTemplate, context);
+            getNewNodeTemplateId(origNodeTemplateId, serviceTemplateFileName, serviceTemplate, context);
 
     String newSubstitutionOutputParameterId =
-        getNewSubstitutionOutputParameterId(newNodeTemplateId, attributeName);
+            getNewSubstitutionOutputParameterId(newNodeTemplateId, attributeName);
 
     getAttrFuncValue.set(0, unifiedAbstractNodeTemplateId);
     getAttrFuncValue.set(1, newSubstitutionOutputParameterId);
@@ -2973,11 +3142,11 @@ public class UnifiedCompositionService {
                                               ServiceTemplate serviceTemplate,
                                               TranslationContext context) {
     NodeTemplate computeNodeTemplate =
-        DataModelUtil.getNodeTemplate(serviceTemplate, origNodeTemplateId);
+            DataModelUtil.getNodeTemplate(serviceTemplate, origNodeTemplateId);
     if (computeNodeTemplate == null) {
       computeNodeTemplate =
-          context.getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
-              origNodeTemplateId);
+              context.getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
+                      origNodeTemplateId);
     }
     return computeNodeTemplate;
   }
@@ -2985,14 +3154,14 @@ public class UnifiedCompositionService {
   private String handleIdOfPort(String origNodeTemplateId, String serviceTemplateFileName,
                                 ConsolidationData consolidationData) {
     Optional<Pair<String, ComputeTemplateConsolidationData>>
-        computeTypeAndComputeTemplateByPortId =
-        getComputeTypeAndComputeTemplateByPortId(origNodeTemplateId, serviceTemplateFileName,
-            consolidationData);
+            computeTypeAndComputeTemplateByPortId =
+            getComputeTypeAndComputeTemplateByPortId(origNodeTemplateId, serviceTemplateFileName,
+                    consolidationData);
     if (computeTypeAndComputeTemplateByPortId.isPresent()) {
       Pair<String, ComputeTemplateConsolidationData> computeIdToComputeData =
-          computeTypeAndComputeTemplateByPortId.get();
+              computeTypeAndComputeTemplateByPortId.get();
       return getNewPortNodeTemplateId(origNodeTemplateId, computeIdToComputeData.getKey(),
-          computeIdToComputeData.getValue());
+              computeIdToComputeData.getValue());
     }
 
     return null;
@@ -3002,15 +3171,15 @@ public class UnifiedCompositionService {
   getComputeTypeAndComputeTemplateByPortId(String portId, String serviceTemplateFileName,
                                            ConsolidationData consolidationData) {
     FileComputeConsolidationData fileComputeConsolidationData =
-        consolidationData.getComputeConsolidationData()
-            .getFileComputeConsolidationData(serviceTemplateFileName);
+            consolidationData.getComputeConsolidationData()
+                    .getFileComputeConsolidationData(serviceTemplateFileName);
     Set<String> computeTypes =
-        fileComputeConsolidationData.getAllComputeTypes();
+            fileComputeConsolidationData.getAllComputeTypes();
 
     for (String computeType : computeTypes) {
       Collection<ComputeTemplateConsolidationData> computeTemplateConsolidationDatas =
-          fileComputeConsolidationData.getTypeComputeConsolidationData(computeType)
-              .getAllComputeTemplateConsolidationData();
+              fileComputeConsolidationData.getTypeComputeConsolidationData(computeType)
+                      .getAllComputeTemplateConsolidationData();
 
       for (ComputeTemplateConsolidationData compute : computeTemplateConsolidationDatas) {
         if (ConsolidationDataUtil.isComputeReferenceToPortId(compute, portId)) {
@@ -3027,16 +3196,16 @@ public class UnifiedCompositionService {
                                        String serviceTemplateFileName,
                                        TranslationContext context) {
     UnifiedSubstitutionData unifiedSubstitutionData =
-        context.getUnifiedSubstitutionData().get(serviceTemplateFileName);
+            context.getUnifiedSubstitutionData().get(serviceTemplateFileName);
     if (Objects.isNull(unifiedSubstitutionData)) {
       return false;
     }
 
     UnifiedCompositionEntity actualUnifiedCompositionEntity =
-        unifiedSubstitutionData.getCleanedNodeTemplateCompositionEntity(id);
+            unifiedSubstitutionData.getCleanedNodeTemplateCompositionEntity(id);
 
     return actualUnifiedCompositionEntity == null ? false
-        : actualUnifiedCompositionEntity.equals(expectedUnifiedCompositionEntity);
+            : actualUnifiedCompositionEntity.equals(expectedUnifiedCompositionEntity);
   }
 
   private boolean isHeatStackGroup(String groupType) {
@@ -3050,14 +3219,14 @@ public class UnifiedCompositionService {
                                       String portNodeTemplateId) {
     //Get the input prefix to extract the property name from the input name
     String portInputPrefix = getPortInputPrefix(
-        portNodeTemplateId, portInputType);
+            portNodeTemplateId, portInputType);
     //Get the property name from the input
     Optional<String> propertyName = getPropertyNameFromInput(inputName,
-        UnifiedCompositionEntity.Port, computeType, portInputPrefix);
+            UnifiedCompositionEntity.Port, computeType, portInputPrefix);
     //Get the property value from the node template
     if (propertyName.isPresent()) {
       NodeTemplate portNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-          portNodeTemplateId);
+              portNodeTemplateId);
       if (Objects.nonNull(portNodeTemplate)) {
         return getPropertyValueFromNodeTemplate(propertyName.get(), portNodeTemplate);
       }
@@ -3066,9 +3235,9 @@ public class UnifiedCompositionService {
   }
 
   private Optional<String> getPortTypeFromInput(
-      String inputName,
-      String portNodeTemplateId,
-      ComputeTemplateConsolidationData computeTemplateConsolidationData) {
+          String inputName,
+          String portNodeTemplateId,
+          ComputeTemplateConsolidationData computeTemplateConsolidationData) {
     String portTypeFromInput = null;
     String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_";
     String portNodeTemplateIdPrefix = portInputPrefix + portNodeTemplateId;
@@ -3087,14 +3256,14 @@ public class UnifiedCompositionService {
   }
 
   private Object getComputePropertyValue(
-      String inputName,
-      ServiceTemplate serviceTemplate,
-      ComputeTemplateConsolidationData computeTemplateConsolidationData) {
+          String inputName,
+          ServiceTemplate serviceTemplate,
+          ComputeTemplateConsolidationData computeTemplateConsolidationData) {
     NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-        computeTemplateConsolidationData.getNodeTemplateId());
+            computeTemplateConsolidationData.getNodeTemplateId());
     String nodeType = getComputeTypeSuffix(nodeTemplate.getType());
     Optional<String> propertyName =
-        getPropertyNameFromInput(inputName, UnifiedCompositionEntity.Compute, nodeType, null);
+            getPropertyNameFromInput(inputName, UnifiedCompositionEntity.Compute, nodeType, null);
     if (propertyName.isPresent()) {
       return getPropertyValueFromNodeTemplate(propertyName.get(), nodeTemplate);
     }
@@ -3107,13 +3276,13 @@ public class UnifiedCompositionService {
                                                      EntityConsolidationData entity,
                                                      TranslationContext context) {
     NodeTemplate nodeTemplate =
-        getNodeTemplate(entity.getNodeTemplateId(), serviceTemplate, context);
+            getNodeTemplate(entity.getNodeTemplateId(), serviceTemplate, context);
 
     Object propertyValueFromNodeTemplate =
-        getPropertyValueFromNodeTemplate(identicalValuePropertyName, nodeTemplate);
+            getPropertyValueFromNodeTemplate(identicalValuePropertyName, nodeTemplate);
 
     return Objects.isNull(propertyValueFromNodeTemplate) ? Optional.empty()
-        : Optional.of(propertyValueFromNodeTemplate);
+            : Optional.of(propertyValueFromNodeTemplate);
   }
 
   private UnifiedCompositionEntity getInputCompositionEntity(String inputName) {
@@ -3128,14 +3297,14 @@ public class UnifiedCompositionService {
   }
 
   private Optional<String> getPropertyNameFromInput(
-      String inputName,
-      UnifiedCompositionEntity compositionEntity,
-      String computeType, String portInputPrefix) {
+          String inputName,
+          UnifiedCompositionEntity compositionEntity,
+          String computeType, String portInputPrefix) {
     String propertyName = null;
     switch (compositionEntity) {
       case Compute:
         propertyName = inputName.substring(inputName.lastIndexOf(computeType)
-            + computeType.length() + 1);
+                + computeType.length() + 1);
         break;
       case Port:
         if (inputName.startsWith(portInputPrefix)) {
@@ -3149,8 +3318,8 @@ public class UnifiedCompositionService {
   }
 
   private String getPortInputPrefix(
-      String portNodeTemplateId,
-      PortInputType portInputType) {
+          String portNodeTemplateId,
+          PortInputType portInputType) {
     String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_";
     String portType = ConsolidationDataUtil.getPortType(portNodeTemplateId);
     if (portInputType == PortInputType.NodeTemplateId) {
@@ -3166,14 +3335,14 @@ public class UnifiedCompositionService {
                                            TranslationContext context) {
 
     List<String> identicalValuePropertyList =
-        consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context);
+            consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context);
 
     StringBuilder builder = getPropertyValueStringBuilder(unifiedCompositionEntity);
 
     boolean isMatchingProperty = Pattern.matches(builder.toString(), inputName);
     return (isMatchingProperty
-        && isPropertyFromIdenticalValuesList(inputName, unifiedCompositionEntity,
-        identicalValuePropertyList));
+            && isPropertyFromIdenticalValuesList(inputName, unifiedCompositionEntity,
+            identicalValuePropertyList));
   }
 
   private boolean isPropertyFromIdenticalValuesList(String inputName,
@@ -3182,11 +3351,11 @@ public class UnifiedCompositionService {
     switch (unifiedCompositionEntity) {
       case Compute:
         return identicalValuePropertyList.contains(getIdenticalValuePropertyName(inputName,
-            unifiedCompositionEntity, null).get());
+                unifiedCompositionEntity, null).get());
 
       case Other:
         return identicalValuePropertyList.contains(getIdenticalValuePropertyName(inputName,
-            unifiedCompositionEntity, null).get());
+                unifiedCompositionEntity, null).get());
 
       case Port:
         return getPortPropertyNameFromInput(inputName, identicalValuePropertyList).isPresent();
@@ -3207,7 +3376,7 @@ public class UnifiedCompositionService {
   }
 
   private StringBuilder getPropertyValueStringBuilder(
-      UnifiedCompositionEntity unifiedCompositionEntity) {
+          UnifiedCompositionEntity unifiedCompositionEntity) {
 
     switch (unifiedCompositionEntity) {
       case Compute:
@@ -3251,7 +3420,7 @@ public class UnifiedCompositionService {
 
       case Port:
         return getPortPropertyNameFromInput(input, consolidationService
-            .getPropertiesWithIdenticalVal(unifiedCompositionEntity, context));
+                .getPropertiesWithIdenticalVal(unifiedCompositionEntity, context));
 
       default:
         return Optional.empty();
@@ -3269,39 +3438,39 @@ public class UnifiedCompositionService {
   }
 
   private Map<String, UnifiedCompositionEntity> getAllConsolidationNodeTemplateIdAndType(
-      List<UnifiedCompositionData> unifiedCompositionDataList) {
+          List<UnifiedCompositionData> unifiedCompositionDataList) {
 
     Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType = new HashMap<>();
     for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
       ComputeTemplateConsolidationData computeTemplateConsolidationData =
-          unifiedCompositionData.getComputeTemplateConsolidationData();
+              unifiedCompositionData.getComputeTemplateConsolidationData();
       if (Objects.nonNull(computeTemplateConsolidationData)) {
         consolidationNodeTemplateIdAndType
-            .put(computeTemplateConsolidationData.getNodeTemplateId(),
-                UnifiedCompositionEntity.Compute);
+                .put(computeTemplateConsolidationData.getNodeTemplateId(),
+                        UnifiedCompositionEntity.Compute);
       }
       List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
-          getPortTemplateConsolidationDataList(unifiedCompositionData);
+              getPortTemplateConsolidationDataList(unifiedCompositionData);
       for (PortTemplateConsolidationData portTemplateConsolidationData :
-          portTemplateConsolidationDataList) {
+              portTemplateConsolidationDataList) {
         consolidationNodeTemplateIdAndType.put(portTemplateConsolidationData.getNodeTemplateId(),
-            UnifiedCompositionEntity.Port);
+                UnifiedCompositionEntity.Port);
       }
       NestedTemplateConsolidationData nestedTemplateConsolidationData =
-          unifiedCompositionData.getNestedTemplateConsolidationData();
+              unifiedCompositionData.getNestedTemplateConsolidationData();
       if (Objects.nonNull(nestedTemplateConsolidationData)) {
         consolidationNodeTemplateIdAndType
-            .put(nestedTemplateConsolidationData.getNodeTemplateId(),
-                UnifiedCompositionEntity.Nested);
+                .put(nestedTemplateConsolidationData.getNodeTemplateId(),
+                        UnifiedCompositionEntity.Nested);
       }
     }
     return consolidationNodeTemplateIdAndType;
   }
 
   private List<PortTemplateConsolidationData> getPortTemplateConsolidationDataList(
-      UnifiedCompositionData unifiedCompositionData) {
+          UnifiedCompositionData unifiedCompositionData) {
     return unifiedCompositionData.getPortTemplateConsolidationDataList() == null ? new
-        ArrayList<>() : unifiedCompositionData.getPortTemplateConsolidationDataList();
+            ArrayList<>() : unifiedCompositionData.getPortTemplateConsolidationDataList();
   }
 
   private enum PortInputType {
index 6bd1ea4..236504e 100644 (file)
@@ -923,6 +923,1031 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcma_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pcma_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_1_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pcma_server_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pcma_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pcm_port_1_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      compute_pcma_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      server_group:
+        type: string
+        required: true
+        status: SUPPORTED
+      connectivityChk:
+        type: json
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_pcm_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_pcm:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.incoming.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      memory.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.1c1_scalling_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1c1_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_1c1_scalling_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c1_scalling_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_1c1_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_1c1_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1c1_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c1_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1c1_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_1c1_scalling_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c1_scalling_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1c1_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_1c1_scalling_instance_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1c1_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      1c1_scalling_instance_1c1_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
+      1c1_scalling_instance_instance_name:
+        type: string
+        status: SUPPORTED
+      1c1_scalling_instance_1c1_t2_port_tenant_id:
+        type: string
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.a_single_1a:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_a_single_1a_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1a_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_a_single_1a_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_a_single_1a_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1a_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_a_single_1a_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_a_single_1a_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+    attributes:
+      a_single_1a_instance_name:
+        type: string
+        status: SUPPORTED
+      a_single_1a_1a_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pcma_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -4863,6 +5888,146 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.b_single_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1b_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_b_single_1b_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1b_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1b_t1_port_value_specs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1b_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_b_single_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      b_single_1b_instance_name:
+        type: string
+        status: SUPPORTED
+      b_single_1b_1b_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.b_single_1b_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -5417,3 +6582,143 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.1c2_catalog_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1c2_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_1c2_catalog_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c2_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_1c2_catalog_instance_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_1c2_catalog_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_1c2_catalog_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      compute_1c2_catalog_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    attributes:
+      1c2_catalog_instance_instance_name:
+        type: string
+        status: SUPPORTED
+      1c2_catalog_instance_1c2_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
\ No newline at end of file
index efa8626..6ea3983 100644 (file)
@@ -347,6 +347,28 @@ topology_template:
           capability: tosca.capabilities.network.Linkable
           node: nested_network
           relationship: tosca.relationships.network.LinksTo
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     abstract_1c2_catalog_instance_0:
       type: org.openecomp.resource.abstract.nodes.1c2_catalog_instance
       directives:
index e44080f..0adea17 100644 (file)
@@ -919,6 +919,1075 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcma_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pcma_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_1_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pcma_server_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pcma_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pcm_port_1_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      compute_pcma_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      server_group:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_pcm_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_pcm:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.incoming.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      memory.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.1c1_scalling_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1c1_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_1c1_scalling_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c1_scalling_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_1c1_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_1c1_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1c1_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c1_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1c1_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_1c1_scalling_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c1_scalling_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1c1_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      1c1_scalling_instance_instance_name:
+        type: string
+        status: SUPPORTED
+      1c1_scalling_instance_1c1_t2_port_tenant_id:
+        type: string
+        status: SUPPORTED
+  org.openecomp.resource.abstract.nodes.heat.nested-no-nova:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      security_group_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      net_name:
+        type: string
+        required: true
+        status: SUPPORTED
+    attributes:
+      output1:
+        type: string
+        status: SUPPORTED
+    requirements:
+    - dependency_dependsOn_network:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_jsa_security_group:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - port_jsa_security_group:
+        capability: tosca.capabilities.Attachment
+        node: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+        relationship: org.openecomp.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      end_point_dependsOn_network:
+        type: tosca.capabilities.Endpoint
+        occurrences:
+        - 1
+        - UNBOUNDED
+      link_dependsOn_network:
+        type: tosca.capabilities.network.Linkable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_jsa_security_group:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_dependsOn_network:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_dependsOn_network:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.a_single_1a:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1a_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_a_single_1a_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_a_single_1a_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1a_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_a_single_1a_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_a_single_1a_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+    attributes:
+      a_single_1a_instance_name:
+        type: string
+        status: SUPPORTED
+      a_single_1a_1a_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pcma_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -4828,6 +5897,140 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.b_single_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1b_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_b_single_1b_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1b_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1b_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_b_single_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      b_single_1b_instance_name:
+        type: string
+        status: SUPPORTED
+      b_single_1b_1b_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.b_single_1b_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -5376,66 +6579,137 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.heat.nested-no-nova:
-    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+  org.openecomp.resource.vfc.nodes.heat.1c2_catalog_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
-      security_group_name:
+      port_1c2_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_1c2_catalog_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t2_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
-      net_name:
+      port_1c2_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
+      port_1c2_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c2_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_1c2_catalog_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_1c2_catalog_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      compute_1c2_catalog_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
     attributes:
-      output1:
+      1c2_catalog_instance_instance_name:
         type: string
         status: SUPPORTED
-    requirements:
-    - dependency_dependsOn_network:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_jsa_security_group:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - port_jsa_security_group:
-        capability: tosca.capabilities.Attachment
-        node: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
-        relationship: org.openecomp.relationships.AttachesTo
-        occurrences:
-        - 0
-        - UNBOUNDED
-    capabilities:
-      end_point_dependsOn_network:
-        type: tosca.capabilities.Endpoint
-        occurrences:
-        - 1
-        - UNBOUNDED
-      link_dependsOn_network:
-        type: tosca.capabilities.network.Linkable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_jsa_security_group:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_dependsOn_network:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      attachment_dependsOn_network:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
+      1c2_catalog_instance_1c2_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
\ No newline at end of file
index cd041a4..f917dda 100644 (file)
@@ -166,6 +166,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: nestedWithNoNovaHadDependencyToIt
           relationship: tosca.relationships.DependsOn
+      - dependency_1b01_single_1B_b_single_1b:
+          capability: tosca.capabilities.Node
+          node: nestedWithNoNovaHadDependencyToIt
+          relationship: tosca.relationships.DependsOn
       - link_b_single_1b_1b_t2_port:
           capability: tosca.capabilities.network.Linkable
           node: b_single_1b_network
@@ -247,10 +251,18 @@ topology_template:
           capability: tosca.capabilities.Node
           node: nestedWithNoNovaHadDependencyToIt
           relationship: tosca.relationships.DependsOn
+      - dependency_1c102_scalling_instance_1C1_1c1_scalling_instance:
+          capability: tosca.capabilities.Node
+          node: nestedWithNoNovaHadDependencyToIt
+          relationship: tosca.relationships.DependsOn
       - link_1c1_scalling_instance_1c1_t1_port:
           capability: tosca.capabilities.network.Linkable
           node: 1c1_scalling_instance_network
           relationship: tosca.relationships.network.LinksTo
+      - dependency_1c101_scalling_instance_1C1_1c1_scalling_instance:
+          capability: tosca.capabilities.Node
+          node: nestedWithNoNovaHadDependencyToIt
+          relationship: tosca.relationships.DependsOn
     b_single_1b_network:
       type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
       properties:
@@ -308,10 +320,28 @@ topology_template:
           capability: tosca.capabilities.network.Linkable
           node: nested_network
           relationship: tosca.relationships.network.LinksTo
-      - dependency:
+      - dependency_pcm_port_1:
           capability: tosca.capabilities.Node
-          node: nestedWithNoNovaHadDependencyToIt
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
           relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     abstract_1c2_catalog_instance_0:
       type: org.openecomp.resource.abstract.nodes.1c2_catalog_instance
       directives:
@@ -367,6 +397,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: nestedWithNoNovaHadDependencyToIt
           relationship: tosca.relationships.DependsOn
+      - dependency_1c2_t1_port_0_1c2_catalog_instance_1c2_t1_port:
+          capability: tosca.capabilities.Node
+          node: nestedWithNoNovaHadDependencyToIt
+          relationship: tosca.relationships.DependsOn
       - link_1c2_catalog_instance_1c2_t2_port:
           capability: tosca.capabilities.network.Linkable
           node: 1c2_catalog_instance_network
@@ -428,6 +462,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: nestedWithNoNovaHadDependencyToIt
           relationship: tosca.relationships.DependsOn
+      - dependency_1c2_t1_port_1_1c2_catalog_instance_1c2_t1_port:
+          capability: tosca.capabilities.Node
+          node: nestedWithNoNovaHadDependencyToIt
+          relationship: tosca.relationships.DependsOn
       - link_1c2_catalog_instance_1c2_t2_port:
           capability: tosca.capabilities.network.Linkable
           node: 1c2_catalog_instance_network
@@ -661,6 +699,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: nestedWithNoNovaHadDependencyToIt
           relationship: tosca.relationships.DependsOn
+      - dependency_1a_single_1A_a_single_1a:
+          capability: tosca.capabilities.Node
+          node: nestedWithNoNovaHadDependencyToIt
+          relationship: tosca.relationships.DependsOn
       - link_a_single_1a_1a_t1_port:
           capability: tosca.capabilities.network.Linkable
           node: a_single_1a_network
index 14b52bc..9bf52df 100644 (file)
@@ -919,6 +919,1012 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcma_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pcma_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_1_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pcma_server_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pcma_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pcm_port_1_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      compute_pcma_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      server_group:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_pcm_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_pcm:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.incoming.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      memory.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.1c1_scalling_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1c1_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_1c1_scalling_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c1_scalling_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_1c1_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_1c1_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1c1_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c1_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1c1_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_1c1_scalling_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t2_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c1_scalling_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1c1_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      1c1_scalling_instance_instance_name:
+        type: string
+        status: SUPPORTED
+      1c1_scalling_instance_1c1_t2_port_tenant_id:
+        type: string
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.a_single_1a:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1a_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_a_single_1a_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_a_single_1a_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1a_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_a_single_1a_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_a_single_1a_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+    attributes:
+      a_single_1a_instance_name:
+        type: string
+        status: SUPPORTED
+      a_single_1a_1a_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pcma_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -4828,6 +5834,140 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.b_single_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1b_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_b_single_1b_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1b_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1b_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_b_single_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      b_single_1b_instance_name:
+        type: string
+        status: SUPPORTED
+      b_single_1b_1b_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.b_single_1b_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -5376,3 +6516,137 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.1c2_catalog_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1c2_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_1c2_catalog_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c2_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_1c2_catalog_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1c2_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_1c2_catalog_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c2_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c2_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      compute_1c2_catalog_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    attributes:
+      1c2_catalog_instance_instance_name:
+        type: string
+        status: SUPPORTED
+      1c2_catalog_instance_1c2_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
\ No newline at end of file
index e26ec62..edc5d99 100644 (file)
@@ -260,6 +260,28 @@ topology_template:
           capability: tosca.capabilities.network.Linkable
           node: nested_network
           relationship: tosca.relationships.network.LinksTo
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     abstract_1c2_catalog_instance_0:
       type: org.openecomp.resource.abstract.nodes.1c2_catalog_instance
       directives:
index 40d6c55..7a2a871 100644 (file)
@@ -5,15 +5,15 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
-  org.openecomp.resource.abstract.nodes.heat.nested-no_vfc_v0.1:
-    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+  org.openecomp.resource.abstract.nodes.heat.pcm_server_1:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      server_group:
+      port_pcm_port_0_network_role:
         type: string
         required: true
         status: SUPPORTED
-      connectivityChk:
-        type: json
+      port_pcm_port_1_network_role_tag:
+        type: string
         required: true
         status: SUPPORTED
       availabilityzone_name:
@@ -21,34 +21,31 @@ node_types:
         description: availabilityzone name
         required: true
         status: SUPPORTED
-      oam_net_gw:
-        type: string
-        description: CPS network gateway
+      port_pcm_port_0_vlan_requirements:
+        type: list
         required: true
         status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
       pcm_image_name:
         type: string
         description: PCRF CM image name
         required: true
         status: SUPPORTED
-      security_group_name:
-        type: string
-        description: the name of security group
+      port_pcm_port_0_order:
+        type: integer
         required: true
         status: SUPPORTED
-      cps_net_ip:
+      port_pcm_port_0_subnetpoolid:
         type: string
-        description: CPS network ip
         required: true
         status: SUPPORTED
-      pcm_flavor_name:
+      port_pcm_port_1_subnetpoolid:
         type: string
-        description: flavor name of PCRF CM instance
         required: true
         status: SUPPORTED
-      pcm_vol:
+      port_pcm_port_0_network_role_tag:
         type: string
-        description: CPS Cluman Cinder Volume
         required: true
         status: SUPPORTED
       pcm_server_name:
@@ -56,61 +53,112 @@ node_types:
         description: PCRF CM server name
         required: true
         status: SUPPORTED
-      cps_net_name:
+      cps_net_mask:
         type: string
-        description: CPS network name
+        description: CPS network mask
         required: true
         status: SUPPORTED
-      cps_net_mask:
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
         type: string
-        description: CPS network mask
+        description: OAM network name
         required: true
         status: SUPPORTED
-      oam_net_ip:
+      port_pcm_port_1_network_role:
         type: string
-        description: OAM network ip
         required: true
         status: SUPPORTED
-      oam_net_mask:
+      server_group:
         type: string
-        description: CPS network mask
         required: true
         status: SUPPORTED
-      pcma_flavor_name:
+      connectivityChk:
+        type: json
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
         type: string
+        description: CPS network gateway
         required: true
         status: SUPPORTED
-      oam_net_name:
+      security_group_name:
         type: string
-        description: OAM network name
+        description: the name of security group
         required: true
         status: SUPPORTED
-      pcma_server_name:
+      cps_net_ip:
         type: string
+        description: CPS network ip
         required: true
         status: SUPPORTED
-      pcma_image_name:
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
         type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
         required: true
         status: SUPPORTED
     attributes:
-      portId:
+      server_pcm_id:
         type: string
+        description: the pcm nova service id
         status: SUPPORTED
     requirements:
-    - dependency_pcm_port_2:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_pcm_port_2:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
-        occurrences:
-        - 1
-        - 1
     - dependency_pcm_port_1:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
@@ -124,41 +172,14 @@ node_types:
         occurrences:
         - 1
         - 1
-    - dependency_pcm_port_3:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_pcm_port_3:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
-        occurrences:
-        - 1
-        - 1
-    - dependency_server_pcma2:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - local_storage_server_pcma2:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_server_pcma1:
+    - dependency_server_pcm:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_server_pcma1:
+    - local_storage_server_pcm:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
@@ -185,13 +206,7 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_pcm_port_3:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets.rate_pcm_port_2:
+      cpu_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
@@ -209,277 +224,170 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_server_pcma2:
+      memory_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcm_port_0:
+      disk.write.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcm_port_3:
+      network.outpoing.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcm_port_2:
+      disk.device.iops_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_server_pcma1:
+      memory.resident_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_server_pcma2:
+      disk.device.write.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_server_pcma1:
+      disk.device.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_server_pcma2:
+      disk.allocation_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_server_pcma1:
+      disk.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_server_pcma1:
+      disk.device.write.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_server_pcma2:
+      disk.root.size_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_server_pcma2:
+      disk.ephemeral.size_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_server_pcma1:
+      disk.device.latency_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_server_pcma1:
+      network.incoming.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_pcm_port_3:
+      network.incoming.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      binding_pcm_port_3:
+      binding_pcm_port_1:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      disk.device.latency_server_pcma2:
+      memory.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_server_pcma2:
+      disk.read.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcm_port_0:
+      disk.capacity_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_server_pcma1:
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcm_port_2:
+      network.outgoing.packets.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcm_port_1:
+      network.outgoing.packets.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_server_pcma1:
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_pcm_port_0:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      binding_pcm_port_1:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      binding_pcm_port_2:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      network.incoming.bytes_pcm_port_3:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.packets.rate_pcm_port_3:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.packets.rate_pcm_port_0:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.packets.rate_pcm_port_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests.rate_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.packets.rate_pcm_port_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests.rate_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_pcm_port_1:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      binding_server_pcma1:
-        type: tosca.capabilities.network.Bindable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes_pcm_port_0:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      binding_server_pcma2:
-        type: tosca.capabilities.network.Bindable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_pcm_port_0:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes_pcm_port_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_pcm_port_3:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_pcm_port_2:
-        type: tosca.capabilities.Node
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
@@ -499,432 +407,173 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      attachment_pcm_port_2:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes.rate_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      attachment_pcm_port_3:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.root.size_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_server_pcma1:
+      disk.device.read.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_server_pcma2:
+      vcpus_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_server_pcma1:
+      disk.write.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_server_pcma1:
+      disk.iops_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_server_pcma2:
+      disk.read.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_server_pcma1:
+      disk.device.allocation_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_server_pcma1:
+      disk.device.read.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_server_pcma2:
+      cpu_util_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_server_pcma2:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      memory.usage_server_pcma2:
+      disk.write.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_server_pcma1:
+      disk.device.write.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_server_pcma1:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.read.bytes.rate_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_server_pcma2:
+      cpu.delta_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_server_pcma1:
+      network.outgoing.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_server_pcma2:
-        type: tosca.capabilities.Endpoint.Admin
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.read.bytes.rate_server_pcma2:
+      network.incoming.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_server_pcma1:
-        type: tosca.capabilities.Endpoint.Admin
-        occurrences:
-        - 1
-        - UNBOUNDED
-      cpu.delta_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_server_pcma2:
+      network.outgoing.bytes.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_server_pcma2:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      host_server_pcma1:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.ephemeral.size_server_pcma1:
+      disk.device.capacity_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_server_pcma2:
+      network.incoming.packets_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_server_pcma2:
+      instance_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_server_pcma1:
+      disk.device.write.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_server_pcma2:
+      disk.latency_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_server_pcma1:
+      disk.device.read.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_server_pcma2:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      scalable_server_pcma1:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.write.requests_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_server_pcm:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_server_pcma2:
+      network.incoming.bytes.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_server_pcma2:
+      disk.write.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_server_pcma1:
+      network.incoming.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      instance_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      os_server_pcma1:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      os_server_pcma2:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.capacity_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.capacity_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.requests_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.requests_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_pcm_port_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets_pcm_port_0:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_pcm_port_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_pcm_port_0:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets_pcm_port_3:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.usage_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets_pcm_port_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_pcm_port_3:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.usage_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      vcpus_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      memory.resident_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets_pcm_port_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      vcpus_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      memory.resident_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.write.bytes_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.allocation_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.allocation_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.write.bytes_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      cpu_server_pcma1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_pcm_port_0:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      cpu_server_pcma2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_pcm_port_3:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_pcm_port_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_pcm_port_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.1c12_scalling_instance:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+  org.openecomp.resource.vfc.nodes.heat.1c12_scalling_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
       port_1c1_t1_port_exCP_naming:
         type: org.openecomp.datatypes.Naming
@@ -1027,343 +676,1876 @@ node_types:
       1c12_scalling_instance_instance_name:
         type: string
         status: SUPPORTED
-    requirements:
-    - dependency_1c12_scalling_instance_1c1_t1_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_1c12_scalling_instance_1c1_t1_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
-        occurrences:
-        - 1
-        - 1
-    - dependency_1c12_scalling_instance:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - local_storage_1c12_scalling_instance:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
-        occurrences:
-        - 0
-        - UNBOUNDED
-    capabilities:
-      cpu_1c12_scalling_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.write.bytes_1c12_scalling_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_1c12_scalling_instance_1c1_t1_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.usage_1c12_scalling_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests_1c12_scalling_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_1c12_scalling_instance_1c1_t1_port:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.latency_1c12_scalling_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+  org.openecomp.resource.vfc.nodes.heat.a_single_2a:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_a_single_2a_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1a_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_a_single_2a_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1a_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_a_single_2a_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_a_single_2a_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_a_single_2a_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    attributes:
+      a_single_2a_instance_name:
+        type: string
+        status: SUPPORTED
+  org.openecomp.resource.abstract.nodes.pcma_server:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_pcm_port_3_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_2_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_2_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pcm_port_3_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_3_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_3_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pcm_port_3_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_pcma_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_2_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pcm_port_2_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_3_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_2_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_2_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_2_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pcm_port_3_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_3_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_pcma_server_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      port_pcm_port_3_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pcma_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_2_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_3_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_2_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_2_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_2_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_3_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pcma_server_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pcma_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    requirements:
+    - dependency_pcma_server:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_pcma_server:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcma_server_pcm_port_3:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcma_server_pcm_port_3:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_pcma_server_pcm_port_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcma_server_pcm_port_2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      cpu.delta_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_pcma_server:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_pcma_server:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcma_server_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcma_server_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcma_server_pcm_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_pcma_server:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcma_server:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcma_server_pcm_port_3:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcma_server_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcma_server_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcma_server_pcm_port_3:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcma_server_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcma_server_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcma_server_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcma_server_pcm_port_2:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      os_pcma_server:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcma_server_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcma_server_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcma_server_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcma_server_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcma_server_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcma_server_pcm_port_2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcma_server_pcm_port_3:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcma_server:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcma_server_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcma_server_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcma_server_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcma_server_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.1c11_scalling_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1c1_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_1c1_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1c1_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c11_scalling_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c11_scalling_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c11_scalling_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c11_scalling_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1c1_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c1_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      1c11_scalling_instance_instance_name:
+        type: string
+        status: SUPPORTED
+      1c11_scalling_instance_1c1_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
+  org.openecomp.resource.abstract.nodes.2c2_catalog_instance:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      compute_2c2_catalog_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c201_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_2c2_catalog_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_2c2_catalog_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_2c202_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_2c2_catalog_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_2c202_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c201_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_2c202_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c201_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      2c2_catalog_instance_instance_name:
+        type: string
+        status: SUPPORTED
+    requirements:
+    - dependency_2c2_catalog_instance:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_2c2_catalog_instance:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_2c2_catalog_instance_2c202_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_2c2_catalog_instance_2c202_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_2c2_catalog_instance_1c201_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_2c2_catalog_instance_1c201_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.outgoing.packets.rate_2c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_2c2_catalog_instance:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_2c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_2c2_catalog_instance:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_2c2_catalog_instance_1c201_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.write.requests.rate_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_2c2_catalog_instance:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_2c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_2c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_2c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_2c2_catalog_instance:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_2c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_2c2_catalog_instance_1c201_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_2c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_2c2_catalog_instance_1c201_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_2c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_2c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_2c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_2c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_2c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_2c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_2c2_catalog_instance_2c202_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      feature_2c2_catalog_instance:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_2c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_2c2_catalog_instance:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_2c2_catalog_instance_2c202_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_2c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_2c2_catalog_instance_2c202_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_2c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_2c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.1c2_catalog_instance:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      compute_1c2_catalog_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c2_catalog_instance_personality:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_2c202_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c201_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c201_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_2c202_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_1c2_catalog_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_2c202_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c201_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_2c202_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c201_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c2_catalog_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c2_catalog_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    attributes:
+      1c2_catalog_instance_instance_name:
+        type: string
+        status: SUPPORTED
+      1c2_catalog_instance_1c201_port_tenant_id:
+        type: string
+        status: SUPPORTED
+    requirements:
+    - dependency_1c2_catalog_instance:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_1c2_catalog_instance:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_1c2_catalog_instance_1c201_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_1c2_catalog_instance_1c201_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_1c2_catalog_instance_2c202_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - UNBOUNDED
-      network.outgoing.bytes_1c12_scalling_instance_1c1_t1_port:
+    - link_1c2_catalog_instance_2c202_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      disk.device.capacity_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_1c12_scalling_instance:
+      attachment_1c2_catalog_instance_2c202_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_1c2_catalog_instance_2c202_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_1c12_scalling_instance:
+      network.incoming.packets_1c2_catalog_instance_2c202_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_1c12_scalling_instance:
+      network.incoming.packets.rate_1c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_1c2_catalog_instance_1c201_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_1c2_catalog_instance_1c201_port:
         type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.write.bytes.rate_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_1c12_scalling_instance:
-        type: tosca.capabilities.Endpoint.Admin
+      cpu_util_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_1c12_scalling_instance:
-        type: tosca.capabilities.Scalable
+      cpu_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_1c12_scalling_instance:
-        type: tosca.capabilities.OperatingSystem
+      disk.read.requests_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_1c12_scalling_instance:
+      network.outpoing.packets_1c2_catalog_instance_1c201_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_1c12_scalling_instance:
+      disk.ephemeral.size_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_1c12_scalling_instance_1c1_t1_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.write.bytes_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      network.incoming.packets_1c12_scalling_instance_1c1_t1_port:
+      memory.resident_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_1c12_scalling_instance_1c1_t1_port:
-        type: tosca.capabilities.Attachment
+      disk.device.write.requests.rate_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_1c12_scalling_instance:
+      os_1c2_catalog_instance:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_1c12_scalling_instance_1c1_t1_port:
+      feature_1c2_catalog_instance_2c202_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_1c2_catalog_instance_2c202_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_1c12_scalling_instance:
+      endpoint_1c2_catalog_instance:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_1c12_scalling_instance:
-        type: tosca.capabilities.Container
+      disk.latency_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_1c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_1c2_catalog_instance_2c202_port:
+        type: tosca.capabilities.network.Bindable
         valid_source_types:
-        - tosca.nodes.SoftwareComponent
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      vcpus_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_1c12_scalling_instance:
+      disk.device.latency_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_1c12_scalling_instance:
+      network.outgoing.bytes_1c2_catalog_instance_1c201_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_1c12_scalling_instance:
+      attachment_1c2_catalog_instance_1c201_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_1c2_catalog_instance_1c201_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_1c12_scalling_instance:
+      network.incoming.packets_1c2_catalog_instance_1c201_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_1c12_scalling_instance:
+      disk.read.bytes_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_1c12_scalling_instance:
+      instance_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_1c12_scalling_instance_1c1_t1_port:
+      disk.capacity_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_1c12_scalling_instance:
+      disk.write.bytes_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_1c12_scalling_instance:
+      disk.device.read.bytes.rate_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_1c2_catalog_instance_2c202_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_1c2_catalog_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_1c12_scalling_instance:
+      disk.device.read.requests_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_1c12_scalling_instance:
+      disk.device.write.bytes.rate_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_1c12_scalling_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      scalable_1c2_catalog_instance:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_1c12_scalling_instance:
+      disk.device.write.requests_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_1c12_scalling_instance:
-        type: tosca.capabilities.Node
+      host_1c2_catalog_instance:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_1c12_scalling_instance:
+      disk.root.size_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_1c12_scalling_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_1c2_catalog_instance_1c201_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_1c12_scalling_instance:
+      network.outpoing.packets_1c2_catalog_instance_2c202_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_1c12_scalling_instance:
+      network.incoming.packets.rate_1c2_catalog_instance_2c202_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_1c12_scalling_instance_1c1_t1_port:
+      disk.device.usage_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_1c12_scalling_instance:
+      network.outgoing.packets.rate_1c2_catalog_instance_1c201_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_1c12_scalling_instance_1c1_t1_port:
+      disk.usage_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_1c12_scalling_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_1c2_catalog_instance:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_1c12_scalling_instance_1c1_t1_port:
+      memory_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_1c12_scalling_instance:
+      network.outgoing.bytes.rate_1c2_catalog_instance_1c201_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_1c12_scalling_instance:
+      disk.write.requests.rate_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_1c12_scalling_instance:
+      disk.write.requests_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_1c12_scalling_instance:
+      binding_1c2_catalog_instance:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_1c12_scalling_instance:
+      network.outgoing.bytes_1c2_catalog_instance_2c202_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_1c12_scalling_instance:
+      disk.device.read.requests.rate_1c2_catalog_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.heat.pcm_server_1:
+  org.openecomp.resource.abstract.nodes.pcma_server_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
       port_pcm_port_0_network_role:
@@ -1374,94 +2556,110 @@ node_types:
         type: string
         required: true
         status: SUPPORTED
-      availabilityzone_name:
-        type: string
-        description: availabilityzone name
+      port_pcm_port_0_fixed_ips:
+        type: list
         required: true
         status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
       port_pcm_port_0_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.VlanRequirements
-      pcm_image_name:
+      vm_flavor_name:
         type: string
-        description: PCRF CM image name
         required: true
         status: SUPPORTED
-      port_pcm_port_0_order:
-        type: integer
+      port_pcm_port_0_security_groups:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_0_subnetpoolid:
-        type: string
+        entry_schema:
+          type: json
+      compute_pcma_server_availability_zone:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_1_subnetpoolid:
-        type: string
+        entry_schema:
+          type: string
+      port_pcm_port_0_order:
+        type: integer
         required: true
         status: SUPPORTED
-      port_pcm_port_0_network_role_tag:
+      port_pcm_port_0_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
-      pcm_server_name:
+      vm_image_name:
         type: string
-        description: PCRF CM server name
         required: true
         status: SUPPORTED
-      cps_net_mask:
+      port_pcm_port_1_subnetpoolid:
         type: string
-        description: CPS network mask
         required: true
         status: SUPPORTED
-      port_pcm_port_1_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+      port_pcm_port_0_network_role_tag:
+        type: string
         required: true
         status: SUPPORTED
       port_pcm_port_0_exCP_naming:
         type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      oam_net_name:
-        type: string
-        description: OAM network name
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
       port_pcm_port_1_network_role:
         type: string
         required: true
         status: SUPPORTED
-      server_group:
-        type: string
-        required: true
-        status: SUPPORTED
-      connectivityChk:
-        type: json
+      port_pcm_port_1_network:
+        type: list
         required: true
         status: SUPPORTED
+        entry_schema:
+          type: string
       port_pcm_port_0_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.IpRequirements
-      oam_net_gw:
-        type: string
-        description: CPS network gateway
+      port_pcm_port_1_security_groups:
+        type: list
         required: true
         status: SUPPORTED
-      security_group_name:
-        type: string
-        description: the name of security group
+        entry_schema:
+          type: json
+      compute_pcma_server_config_drive:
+        type: list
         required: true
         status: SUPPORTED
-      cps_net_ip:
-        type: string
-        description: CPS network ip
+        entry_schema:
+          type: boolean
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pcma_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_0_network:
+        type: list
         required: true
         status: SUPPORTED
+        entry_schema:
+          type: string
       port_pcm_port_1_mac_requirements:
         type: org.openecomp.datatypes.network.MacRequirements
         required: true
@@ -1472,1005 +2670,1199 @@ node_types:
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.VlanRequirements
-      pcm_flavor_name:
-        type: string
-        description: flavor name of PCRF CM instance
-        required: true
-        status: SUPPORTED
-      pcm_vol:
-        type: string
-        description: CPS Cluman Cinder Volume
+      port_pcm_port_1_fixed_ips:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_1_ip_requirements:
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      compute_pcma_server_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
+          type: string
       port_pcm_port_0_mac_requirements:
         type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      cps_net_name:
-        type: string
-        description: CPS network name
-        required: true
-        status: SUPPORTED
-      oam_net_ip:
-        type: string
-        description: OAM network ip
-        required: true
-        status: SUPPORTED
-      oam_net_mask:
-        type: string
-        description: CPS network mask
+      port_pcm_port_1_ip_requirements:
+        type: list
         required: true
         status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
       port_pcm_port_1_order:
         type: integer
         required: true
         status: SUPPORTED
-    attributes:
-      server_pcm_id:
-        type: string
-        description: the pcm nova service id
-        status: SUPPORTED
     requirements:
-    - dependency_pcm_port_1:
+    - dependency_pcma_server:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pcm_port_1:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+    - local_storage_pcma_server:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
-        - 1
-    - dependency_server_pcm:
+        - 0
+        - UNBOUNDED
+    - dependency_pcma_server_pcm_port_0:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_server_pcm:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+    - link_pcma_server_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_pcm_port_0:
+        - 1
+        - 1
+    - dependency_pcma_server_pcm_port_1:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pcm_port_0:
+    - link_pcma_server_pcm_port_1:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
     capabilities:
-      network.incoming.packets.rate_pcm_port_0:
+      cpu.delta_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_server_pcm:
+      scalable_pcma_server:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_pcm_port_1:
+      host_pcma_server:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcm_port_1:
+      disk.usage_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_server_pcm:
+      attachment_pcma_server_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_server_pcm:
+      disk.iops_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcm_port_0:
+      network.outgoing.bytes.rate_pcma_server_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_server_pcm:
+      network.outgoing.bytes.rate_pcma_server_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_server_pcm:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_pcma_server_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_pcma_server:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcma_server:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_server_pcm:
+      memory.usage_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_server_pcm:
+      network.incoming.packets_pcma_server_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_server_pcm:
+      network.incoming.bytes.rate_pcma_server_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_server_pcm:
+      network.outgoing.bytes_pcma_server_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_server_pcm:
+      memory_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_server_pcm:
+      network.outgoing.bytes_pcma_server_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_server_pcm:
+      cpu_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_server_pcm:
+      disk.device.write.bytes.rate_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcm_port_0:
+      disk.read.bytes.rate_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcm_port_1:
+      network.incoming.packets.rate_pcma_server_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_pcm_port_0:
+      binding_pcma_server_pcm_port_0:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      binding_pcm_port_1:
+      network.incoming.packets_pcma_server_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_pcma_server:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcma_server_pcm_port_1:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      memory.usage_server_pcm:
+      network.incoming.packets.rate_pcma_server_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_server_pcm:
+      disk.device.read.requests_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_server_pcm:
+      disk.write.bytes.rate_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_server_pcm:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.read.bytes_server_pcm:
+      network.outgoing.packets.rate_pcma_server_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pcm_port_0:
+      disk.device.write.requests.rate_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pcm_port_1:
+      network.incoming.bytes.rate_pcma_server_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pcm_port_1:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes_pcm_port_0:
+      network.outgoing.packets.rate_pcma_server_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_server_pcm:
+      cpu_util_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pcm_port_0:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes_pcm_port_1:
+      disk.device.write.bytes_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_pcm_port_0:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      attachment_pcm_port_1:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      endpoint_server_pcm:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.device.read.bytes.rate_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_server_pcm:
+      disk.device.usage_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_server_pcm:
+      disk.read.requests_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_server_pcm:
+      disk.allocation_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_server_pcm:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_pcma_server_pcm_port_0:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_server_pcm:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_pcma_server_pcm_port_1:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_server_pcm:
+      disk.ephemeral.size_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_server_pcm:
-        type: tosca.capabilities.Scalable
+      binding_pcma_server:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_server_pcm:
+      disk.latency_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_server_pcm:
+      disk.device.write.requests_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_server_pcm:
+      disk.device.read.bytes_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_server_pcm:
+      disk.device.allocation_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_server_pcm:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      cpu.delta_server_pcm:
+      memory.resident_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pcm_port_1:
+      disk.root.size_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_pcm_port_0:
+      disk.write.bytes_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_server_pcm:
-        type: tosca.capabilities.network.Bindable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_pcm_port_0:
+      network.incoming.bytes_pcma_server_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_server_pcm:
+      disk.write.requests_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_pcm_port_1:
+      network.incoming.bytes_pcma_server_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_server_pcm:
+      disk.write.requests.rate_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_server_pcm:
+      disk.device.iops_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_server_pcm:
+      instance_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_server_pcm:
+      disk.device.latency_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_server_pcm:
-        type: tosca.capabilities.Node
+      disk.capacity_pcma_server:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_pcm_port_0:
+      disk.device.capacity_pcma_server:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_server_pcm:
+      network.outpoing.packets_pcma_server_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_pcm_port_1:
+      network.outpoing.packets_pcma_server_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.1c11_scalling_instance:
+  org.openecomp.resource.abstract.nodes.a_single_1a:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      port_1c1_t1_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_1c1_t1_port_fixed_ips:
+      compute_a_single_1a_metadata:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
-      port_1c1_t1_port_vlan_requirements:
+          type: json
+      port_1a_t1_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      port_1c1_t1_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t2_port_network_role_tag:
+        type: string
         required: true
         status: SUPPORTED
-      index_value:
-        type: integer
-        description: Index value of this substitution service template runtime instance
-        required: false
-        default: 0
-        status: SUPPORTED
-        constraints:
-        - greater_or_equal: 0
       vm_flavor_name:
         type: string
         required: true
         status: SUPPORTED
-      compute_1c11_scalling_instance_name:
+      port_1a_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      compute_1c11_scalling_instance_availability_zone:
+      port_1a_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      compute_1c11_scalling_instance_user_data_format:
+      port_1a_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      port_1c1_t1_port_ip_requirements:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t1_port_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      vm_image_name:
-        type: string
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      port_1c1_t1_port_name:
+      compute_a_single_1a_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      compute_1c11_scalling_instance_scheduler_hints:
+      compute_a_single_1a_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1a_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: json
-      port_1c1_t1_port_subnetpoolid:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t2_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
-      port_1c1_t1_port_network_role_tag:
-        type: string
+      port_1a_t2_port_order:
+        type: integer
         required: true
         status: SUPPORTED
-      port_1c1_t1_port_network_role:
-        type: string
+      compute_a_single_1a_user_data_format:
+        type: list
         required: true
         status: SUPPORTED
-      port_1c1_t1_port_network:
+        entry_schema:
+          type: string
+      compute_a_single_1a_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_1c1_t1_port_order:
-        type: integer
+      port_1a_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
     attributes:
-      1c11_scalling_instance_instance_name:
+      a_single_1a_instance_name:
         type: string
         status: SUPPORTED
-      1c11_scalling_instance_1c1_t1_port_tenant_id:
+      a_single_1a_1a_t1_port_tenant_id:
         type: string
         status: SUPPORTED
     requirements:
-    - dependency_1c11_scalling_instance:
+    - dependency_a_single_1a_1a_t1_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_1c11_scalling_instance:
+    - link_a_single_1a_1a_t1_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_a_single_1a:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_a_single_1a:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
         occurrences:
         - 0
         - UNBOUNDED
-    - dependency_1c11_scalling_instance_1c1_t1_port:
+    - dependency_a_single_1a_1a_t2_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_1c11_scalling_instance_1c1_t1_port:
+    - link_a_single_1a_1a_t2_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
     capabilities:
-      disk.device.usage_1c11_scalling_instance:
+      disk.read.bytes_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_1c11_scalling_instance_1c1_t1_port:
+      network.incoming.bytes.rate_a_single_1a_1a_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_1c11_scalling_instance_1c1_t1_port:
+      disk.usage_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_1c11_scalling_instance:
+      attachment_a_single_1a_1a_t2_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_a_single_1a:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_a_single_1a_1a_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_1c11_scalling_instance:
+      host_a_single_1a:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_a_single_1a:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_1c11_scalling_instance:
+      memory.resident_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_1c11_scalling_instance:
+      network.incoming.packets.rate_a_single_1a_1a_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_1c11_scalling_instance:
-        type: tosca.capabilities.network.Bindable
+      cpu.delta_a_single_1a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_1c11_scalling_instance:
-        type: tosca.capabilities.Node
+      disk.device.write.requests_a_single_1a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_1c11_scalling_instance:
+      network.incoming.bytes.rate_a_single_1a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_1c11_scalling_instance:
+      disk.iops_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_1c11_scalling_instance:
+      network.incoming.bytes_a_single_1a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_1c11_scalling_instance_1c1_t1_port:
+      cpu_util_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_1c11_scalling_instance:
+      os_a_single_1a:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_1c11_scalling_instance:
+      network.incoming.packets.rate_a_single_1a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_1c11_scalling_instance:
+      network.outgoing.packets.rate_a_single_1a_1a_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_1c11_scalling_instance:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.read.requests_a_single_1a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_1c11_scalling_instance_1c1_t1_port:
-        type: tosca.capabilities.Node
+      disk.read.bytes.rate_a_single_1a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_1c11_scalling_instance:
-        type: tosca.capabilities.Scalable
+      disk.write.bytes.rate_a_single_1a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_1c11_scalling_instance:
-        type: tosca.capabilities.OperatingSystem
+      attachment_a_single_1a_1a_t1_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_1c11_scalling_instance_1c1_t1_port:
+      cpu_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_1c11_scalling_instance:
+      memory.usage_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_1c11_scalling_instance:
+      disk.device.write.requests.rate_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_1c11_scalling_instance:
+      binding_a_single_1a_1a_t2_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.packets_a_single_1a_1a_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_1c11_scalling_instance:
+      disk.device.read.requests_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_1c11_scalling_instance:
+      disk.device.latency_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_1c11_scalling_instance:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      instance_a_single_1a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_1c11_scalling_instance:
+      binding_a_single_1a:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_1c11_scalling_instance:
+      network.outgoing.bytes_a_single_1a_1a_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_1c11_scalling_instance_1c1_t1_port:
+      disk.device.allocation_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_1c11_scalling_instance:
+      disk.write.bytes_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_1c11_scalling_instance_1c1_t1_port:
+      feature_a_single_1a_1a_t1_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_a_single_1a_1a_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_1c11_scalling_instance:
+      network.outpoing.packets_a_single_1a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_1c11_scalling_instance_1c1_t1_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.read.bytes.rate_a_single_1a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      disk.write.bytes_1c11_scalling_instance:
+      disk.device.write.bytes_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_1c11_scalling_instance:
+      disk.device.write.bytes.rate_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_1c11_scalling_instance_1c1_t1_port:
+      memory_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_1c11_scalling_instance_1c1_t1_port:
+      disk.allocation_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_1c11_scalling_instance:
+      network.outgoing.packets.rate_a_single_1a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_1c11_scalling_instance:
+      feature_a_single_1a_1a_t2_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_1c11_scalling_instance:
+      disk.device.read.bytes_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_1c11_scalling_instance:
+      network.incoming.packets_a_single_1a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_1c11_scalling_instance:
+      feature_a_single_1a:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_a_single_1a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_1c11_scalling_instance:
+      disk.ephemeral.size_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_1c11_scalling_instance:
+      vcpus_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_1c11_scalling_instance:
+      binding_a_single_1a_1a_t1_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.iops_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_1c11_scalling_instance_1c1_t1_port:
-        type: tosca.capabilities.Attachment
+      disk.write.requests_a_single_1a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_1c11_scalling_instance:
+      disk.device.read.requests.rate_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_1c11_scalling_instance:
+      disk.device.capacity_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_1c11_scalling_instance:
+      disk.write.requests.rate_a_single_1a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_1c11_scalling_instance:
+      network.incoming.bytes_a_single_1a_1a_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_1c11_scalling_instance:
+      network.outgoing.bytes.rate_a_single_1a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.pcma_server:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+  org.openecomp.resource.vfc.nodes.heat.b_single_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
-      port_pcm_port_3_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+      port_1b_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      port_pcm_port_2_network_role:
+      vm_flavor_name:
         type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_2_fixed_ips:
+      port_1b_t1_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
-      port_pcm_port_3_network_role:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
         type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_3_vlan_requirements:
+      port_1b_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_user_data_format:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      vm_flavor_name:
+          type: string
+      port_1b_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_3_security_groups:
+      port_1b_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: json
-      port_pcm_port_3_order:
+          type: string
+      index_value:
         type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_b_single_1b_scheduler_hints:
+        type: list
         required: true
         status: SUPPORTED
-      compute_pcma_server_availability_zone:
+        entry_schema:
+          type: json
+      port_1b_t2_port_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      vm_image_name:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1b_t1_port_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_2_security_groups:
+      compute_b_single_1b_metadata:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: json
-      port_pcm_port_2_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+      port_1b_t1_port_subnetpoolid:
+        type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_3_ip_requirements:
+      port_1b_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_pcm_port_2_subnetpoolid:
+          type: string
+      port_1b_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_b_single_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      b_single_1b_instance_name:
+        type: string
+        status: SUPPORTED
+      b_single_1b_1b_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
+  org.openecomp.resource.abstract.nodes.b_single_1b_1:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_1b_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_network_role:
         type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_2_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+      port_1b_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      port_pcm_port_2_vlan_requirements:
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      port_pcm_port_3_subnetpoolid:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
         type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_3_network_role_tag:
+      port_1b_t2_port_network_role:
         type: string
         required: true
         status: SUPPORTED
-      compute_pcma_server_config_drive:
+      port_1b_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_user_data_format:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: boolean
-      port_pcm_port_3_fixed_ips:
+          type: string
+      port_1b_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+          type: string
       index_value:
         type: integer
         description: Index value of this substitution service template runtime instance
@@ -2479,1037 +3871,1034 @@ node_types:
         status: SUPPORTED
         constraints:
         - greater_or_equal: 0
-      compute_pcma_server_user_data_format:
+      compute_b_single_1b_scheduler_hints:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      port_pcm_port_2_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      port_pcm_port_3_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+          type: json
+      port_1b_t2_port_vlan_requirements:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_2_network:
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t2_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      port_pcm_port_2_ip_requirements:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1b_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_metadata:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_pcm_port_2_network_role_tag:
+          type: json
+      port_1b_t1_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_3_network:
+      port_1b_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      compute_pcma_server_scheduler_hints:
+      port_1b_t1_port_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: json
-      compute_pcma_server_name:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_b_single_1b_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
+    attributes:
+      b_single_1b_instance_name:
+        type: string
+        status: SUPPORTED
+      b_single_1b_1b_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
     requirements:
-    - dependency_pcma_server:
+    - dependency_b_single_1b:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_pcma_server:
+    - local_storage_b_single_1b:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
         occurrences:
         - 0
         - UNBOUNDED
-    - dependency_pcma_server_pcm_port_3:
+    - dependency_b_single_1b_1b_t1_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pcma_server_pcm_port_3:
+    - link_b_single_1b_1b_t1_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
-    - dependency_pcma_server_pcm_port_2:
+    - dependency_b_single_1b_1b_t2_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pcma_server_pcm_port_2:
+    - link_b_single_1b_1b_t2_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
     capabilities:
-      cpu.delta_pcma_server:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_b_single_1b_1b_t2_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_pcma_server:
-        type: tosca.capabilities.Scalable
+      endpoint_b_single_1b:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_pcma_server:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_b_single_1b:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      host_pcma_server:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      disk.iops_b_single_1b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_pcma_server:
+      network.incoming.bytes.rate_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_pcma_server:
+      network.outgoing.bytes.rate_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pcma_server_pcm_port_3:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      scalable_b_single_1b:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_pcma_server:
+      disk.write.bytes_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_pcma_server:
+      os_b_single_1b:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pcma_server_pcm_port_2:
+      cpu_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_pcma_server_pcm_port_2:
-        type: tosca.capabilities.Attachment
+      disk.device.read.requests.rate_b_single_1b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_pcma_server:
-        type: tosca.capabilities.Endpoint.Admin
+      network.incoming.packets.rate_b_single_1b_1b_t2_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pcma_server:
-        type: tosca.capabilities.Node
+      instance_b_single_1b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_pcma_server_pcm_port_3:
-        type: tosca.capabilities.Attachment
+      network.incoming.bytes.rate_b_single_1b_1b_t1_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_pcma_server_pcm_port_2:
+      disk.read.bytes_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_pcma_server:
+      disk.device.latency_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_pcma_server_pcm_port_3:
+      disk.usage_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_pcma_server_pcm_port_3:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.incoming.bytes_b_single_1b_1b_t1_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_pcma_server_pcm_port_3:
+      disk.device.allocation_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_pcma_server:
+      network.outgoing.packets.rate_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_pcma_server_pcm_port_2:
+      disk.device.capacity_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_pcma_server:
+      disk.latency_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_pcma_server:
+      network.incoming.packets_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_pcma_server:
+      network.incoming.packets.rate_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_pcma_server_pcm_port_3:
+      attachment_b_single_1b_1b_t1_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_pcma_server_pcm_port_2:
+      binding_b_single_1b_1b_t2_port:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      os_pcma_server:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets_pcma_server_pcm_port_2:
+      disk.ephemeral.size_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_pcma_server_pcm_port_3:
+      disk.write.requests.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pcma_server_pcm_port_3:
+      network.outpoing.packets_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_pcma_server_pcm_port_2:
+      disk.device.iops_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_pcma_server:
+      disk.read.requests_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_pcma_server:
+      memory.resident_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pcma_server_pcm_port_2:
+      disk.root.size_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_pcma_server:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_b_single_1b_1b_t1_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_pcma_server:
+      network.outgoing.bytes_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_pcma_server:
+      disk.capacity_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_pcma_server:
+      disk.device.write.bytes_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_pcma_server:
+      disk.device.read.bytes_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_pcma_server:
+      disk.device.read.bytes.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_pcma_server:
+      cpu_util_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pcma_server_pcm_port_2:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_pcma_server_pcm_port_3:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.ephemeral.size_pcma_server:
+      disk.write.requests_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_pcma_server:
-        type: tosca.capabilities.network.Bindable
+      network.outgoing.packets.rate_b_single_1b_1b_t1_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_pcma_server:
+      disk.device.usage_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_pcma_server:
+      disk.read.bytes.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_pcma_server:
+      network.outgoing.bytes_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_pcma_server:
+      disk.device.read.requests_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_pcma_server:
+      network.incoming.packets_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_pcma_server:
+      binding_b_single_1b_1b_t1_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.outpoing.packets_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_pcma_server:
+      disk.device.write.requests.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_pcma_server:
+      memory.usage_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcma_server_pcm_port_2:
+      disk.write.bytes.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcma_server_pcm_port_3:
+      network.incoming.bytes_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_pcma_server:
+      network.outgoing.bytes.rate_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_pcma_server:
+      cpu.delta_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_pcma_server:
+      disk.allocation_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcma_server_pcm_port_3:
+      disk.device.write.bytes.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_pcma_server:
+      memory_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcma_server_pcm_port_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      host_b_single_1b:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_pcma_server:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_b_single_1b:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_pcma_server:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_b_single_1b_1b_t2_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.heat.pcm_server:
+  org.openecomp.resource.abstract.nodes.b_single_2b:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      port_pcm_port_0_network_role:
-        type: string
+      port_1b_t1_port_order:
+        type: integer
         required: true
         status: SUPPORTED
-      port_pcm_port_1_network_role_tag:
+      port_1b_t1_port_network_role:
         type: string
         required: true
         status: SUPPORTED
-      availabilityzone_name:
+      port_1b_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
         type: string
-        description: availabilityzone name
         required: true
         status: SUPPORTED
-      port_pcm_port_0_vlan_requirements:
+      port_1b_t1_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      pcm_image_name:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
         type: string
-        description: PCRF CM image name
         required: true
         status: SUPPORTED
-      port_pcm_port_0_order:
-        type: integer
+      compute_b_single_2b_scheduler_hints:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_0_subnetpoolid:
+        entry_schema:
+          type: json
+      port_1b_t2_port_network_role:
         type: string
         required: true
         status: SUPPORTED
-      port_pcm_port_1_subnetpoolid:
-        type: string
+      port_1b_t2_port_order:
+        type: integer
         required: true
         status: SUPPORTED
-      port_pcm_port_0_network_role_tag:
-        type: string
+      port_1b_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      pcm_server_name:
+      port_1b_t2_port_network_role_tag:
         type: string
-        description: PCRF CM server name
         required: true
         status: SUPPORTED
-      cps_net_mask:
+      port_1b_t2_port_subnetpoolid:
         type: string
-        description: CPS network mask
-        required: true
-        status: SUPPORTED
-      port_pcm_port_1_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_pcm_port_0_exCP_naming:
-        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      oam_net_name:
-        type: string
-        description: OAM network name
+      compute_b_single_2b_availability_zone:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_1_network_role:
-        type: string
+        entry_schema:
+          type: string
+      port_1b_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      server_group:
-        type: string
-        required: true
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
         status: SUPPORTED
-      connectivityChk:
-        type: json
+        constraints:
+        - greater_or_equal: 0
+      port_1b_t2_port_vlan_requirements:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_0_ip_requirements:
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t2_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.IpRequirements
-      oam_net_gw:
-        type: string
-        description: CPS network gateway
-        required: true
-        status: SUPPORTED
-      security_group_name:
-        type: string
-        description: the name of security group
-        required: true
-        status: SUPPORTED
-      cps_net_ip:
-        type: string
-        description: CPS network ip
+      compute_b_single_2b_name:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_1_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+        entry_schema:
+          type: string
+      port_1b_t1_port_value_specs:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_1_vlan_requirements:
+        entry_schema:
+          type: json
+      compute_b_single_2b_user_data_format:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      pcm_flavor_name:
+          type: string
+      port_1b_t1_port_network_role_tag:
         type: string
-        description: flavor name of PCRF CM instance
         required: true
         status: SUPPORTED
-      pcm_vol:
+      port_1b_t1_port_subnetpoolid:
         type: string
-        description: CPS Cluman Cinder Volume
-        required: true
-        status: SUPPORTED
-      port_pcm_port_1_ip_requirements:
-        type: list
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_pcm_port_0_mac_requirements:
+      port_1b_t1_port_mac_requirements:
         type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      cps_net_name:
-        type: string
-        description: CPS network name
-        required: true
-        status: SUPPORTED
-      oam_net_ip:
-        type: string
-        description: OAM network ip
+      port_1b_t2_port_network:
+        type: list
         required: true
         status: SUPPORTED
-      oam_net_mask:
-        type: string
-        description: CPS network mask
+        entry_schema:
+          type: string
+      port_1b_t1_port_vlan_requirements:
+        type: list
         required: true
         status: SUPPORTED
-      port_pcm_port_1_order:
-        type: integer
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t1_port_network:
+        type: list
         required: true
         status: SUPPORTED
+        entry_schema:
+          type: string
     attributes:
-      server_pcm_id:
+      b_single_2b_instance_name:
         type: string
-        description: the pcm nova service id
         status: SUPPORTED
     requirements:
-    - dependency_pcm_port_1:
+    - dependency_b_single_2b:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pcm_port_1:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+    - local_storage_b_single_2b:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
-        - 1
-    - dependency_server_pcm:
+        - 0
+        - UNBOUNDED
+    - dependency_b_single_2b_1b_t1_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_server_pcm:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+    - link_b_single_2b_1b_t1_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_pcm_port_0:
+        - 1
+        - 1
+    - dependency_b_single_2b_1b_t2_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pcm_port_0:
+    - link_b_single_2b_1b_t2_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
     capabilities:
-      network.incoming.packets.rate_pcm_port_0:
+      disk.usage_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_server_pcm:
+      network.incoming.bytes.rate_b_single_2b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_pcm_port_1:
+      network.outgoing.bytes.rate_b_single_2b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcm_port_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_b_single_2b_1b_t2_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      memory_server_pcm:
+      disk.write.bytes.rate_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_server_pcm:
+      disk.device.capacity_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcm_port_0:
+      cpu.delta_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_server_pcm:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      host_b_single_2b:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_server_pcm:
+      disk.device.write.requests_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_server_pcm:
+      network.incoming.packets.rate_b_single_2b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_server_pcm:
+      disk.read.bytes_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_server_pcm:
+      disk.device.iops_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_server_pcm:
+      disk.ephemeral.size_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_server_pcm:
+      network.incoming.bytes.rate_b_single_2b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_server_pcm:
+      network.incoming.bytes_b_single_2b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_server_pcm:
+      disk.write.requests.rate_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_server_pcm:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_b_single_2b:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcm_port_0:
+      memory.resident_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcm_port_1:
+      disk.write.requests_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_pcm_port_0:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      binding_pcm_port_1:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.outgoing.packets.rate_b_single_2b_1b_t2_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      memory.usage_server_pcm:
+      disk.capacity_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_server_pcm:
+      disk.device.read.bytes_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_server_pcm:
+      network.incoming.packets.rate_b_single_2b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_server_pcm:
-        type: tosca.capabilities.OperatingSystem
+      attachment_b_single_2b_1b_t1_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_server_pcm:
+      disk.write.bytes_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pcm_port_0:
+      network.incoming.packets_b_single_2b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pcm_port_1:
+      vcpus_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pcm_port_1:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes_pcm_port_0:
+      disk.device.read.requests.rate_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_server_pcm:
+      binding_b_single_2b_1b_t2_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      instance_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pcm_port_0:
-        type: tosca.capabilities.Node
+      network.outpoing.packets_b_single_2b_1b_t2_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_pcm_port_1:
+      disk.device.read.requests_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_pcm_port_0:
-        type: tosca.capabilities.Attachment
+      disk.device.latency_b_single_2b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_pcm_port_1:
-        type: tosca.capabilities.Attachment
+      network.outgoing.bytes_b_single_2b_1b_t2_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_server_pcm:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.device.allocation_b_single_2b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_server_pcm:
+      disk.latency_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_server_pcm:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_b_single_2b_1b_t1_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_server_pcm:
+      disk.device.read.bytes.rate_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_server_pcm:
+      network.outpoing.packets_b_single_2b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_server_pcm:
+      disk.device.write.bytes.rate_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_server_pcm:
+      disk.allocation_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_server_pcm:
-        type: tosca.capabilities.Scalable
+      memory_b_single_2b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_server_pcm:
+      network.outgoing.packets.rate_b_single_2b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_server_pcm:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_b_single_2b:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_server_pcm:
+      network.incoming.packets_b_single_2b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_server_pcm:
+      network.outgoing.bytes_b_single_2b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_server_pcm:
-        type: tosca.capabilities.Container
+      binding_b_single_2b_1b_t1_port:
+        type: tosca.capabilities.network.Bindable
         valid_source_types:
-        - tosca.nodes.SoftwareComponent
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      feature_b_single_2b_1b_t2_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_server_pcm:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_b_single_2b:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pcm_port_1:
+      disk.root.size_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_pcm_port_0:
+      disk.read.requests_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_server_pcm:
-        type: tosca.capabilities.network.Bindable
+      endpoint_b_single_2b:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pcm_port_0:
+      disk.iops_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_server_pcm:
+      disk.device.write.bytes_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_pcm_port_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      scalable_b_single_2b:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      instance_server_pcm:
+      memory.usage_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_server_pcm:
+      cpu_util_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_server_pcm:
+      disk.device.usage_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_server_pcm:
+      disk.device.write.requests.rate_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_server_pcm:
-        type: tosca.capabilities.Node
+      cpu_b_single_2b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_pcm_port_0:
+      disk.read.bytes.rate_b_single_2b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_server_pcm:
+      network.incoming.bytes_b_single_2b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_pcm_port_1:
+      network.outgoing.bytes.rate_b_single_2b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.2c2_catalog_instance:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+  org.openecomp.resource.vfc.nodes.heat.2c2_catalog_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
       compute_2c2_catalog_instance_user_data_format:
         type: list
@@ -3589,1035 +4978,1147 @@ node_types:
         required: false
         default: 0
         status: SUPPORTED
-        constraints:
-        - greater_or_equal: 0
-      compute_2c2_catalog_instance_name:
-        type: list
+        constraints:
+        - greater_or_equal: 0
+      compute_2c2_catalog_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_2c202_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c201_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_2c202_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c201_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      2c2_catalog_instance_instance_name:
+        type: string
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.1c2_catalog_instance:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_1c2_catalog_instance_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c2_catalog_instance_personality:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_2c202_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c201_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_2c202_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c201_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_2c202_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_1c2_catalog_instance_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_2c202_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_2c202_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1c201_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_2c202_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1c201_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c201_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c2_catalog_instance_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1c201_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c2_catalog_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    attributes:
+      1c2_catalog_instance_instance_name:
+        type: string
+        status: SUPPORTED
+      1c2_catalog_instance_1c201_port_tenant_id:
+        type: string
+        status: SUPPORTED
+  org.openecomp.resource.abstract.nodes.heat.nested-no_vfc_v0.1:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      server_group:
+        type: string
+        required: true
+        status: SUPPORTED
+      connectivityChk:
+        type: json
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      port_2c202_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
         required: true
         status: SUPPORTED
-      port_2c202_port_network:
-        type: list
+      cps_net_name:
+        type: string
+        description: CPS network name
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      port_1c201_port_ip_requirements:
-        type: list
+      cps_net_mask:
+        type: string
+        description: CPS network mask
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_1c201_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+      oam_net_ip:
+        type: string
+        description: OAM network ip
         required: true
         status: SUPPORTED
-      port_2c202_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+      oam_net_mask:
+        type: string
+        description: CPS network mask
         required: true
         status: SUPPORTED
-      port_1c201_port_subnetpoolid:
+      pcma_flavor_name:
         type: string
         required: true
         status: SUPPORTED
-      port_1c201_port_network_role:
+      oam_net_name:
         type: string
+        description: OAM network name
         required: true
         status: SUPPORTED
-      port_1c201_port_network:
-        type: list
+      pcma_server_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcma_image_name:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
     attributes:
-      2c2_catalog_instance_instance_name:
+      portId:
         type: string
         status: SUPPORTED
     requirements:
-    - dependency_2c2_catalog_instance:
+    - dependency_pcm_port_2:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_2c2_catalog_instance:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+    - link_pcm_port_2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_2c2_catalog_instance_2c202_port:
+        - 1
+        - 1
+    - dependency_pcm_port_1:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_2c2_catalog_instance_2c202_port:
+    - link_pcm_port_1:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
-    - dependency_2c2_catalog_instance_1c201_port:
+    - dependency_pcm_port_3:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_2c2_catalog_instance_1c201_port:
+    - link_pcm_port_3:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
-    capabilities:
-      network.outgoing.packets.rate_2c2_catalog_instance_1c201_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      instance_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.capacity_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.bytes.rate_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.read.bytes_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.requests.rate_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.bytes_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.allocation_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      scalable_2c2_catalog_instance:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes_2c2_catalog_instance_1c201_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.root.size_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.write.requests_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      host_2c2_catalog_instance:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.allocation_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      binding_2c2_catalog_instance_1c201_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+    - dependency_server_pcma2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-      disk.device.write.requests.rate_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      os_2c2_catalog_instance:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outpoing.packets_2c2_catalog_instance_2c202_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.write.bytes.rate_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_2c2_catalog_instance_1c201_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets.rate_2c2_catalog_instance_1c201_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.latency_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.iops_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+    - local_storage_server_pcma2:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      endpoint_2c2_catalog_instance:
-        type: tosca.capabilities.Endpoint.Admin
+    - dependency_server_pcma1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      vcpus_2c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+    - local_storage_server_pcma1:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      network.incoming.bytes_2c2_catalog_instance_2c202_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      feature_2c2_catalog_instance_1c201_port:
-        type: tosca.capabilities.Node
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_2c2_catalog_instance_2c202_port:
+        - 1
+    capabilities:
+      network.incoming.packets.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_2c2_catalog_instance:
+      network.incoming.packets.rate_pcm_port_3:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_2c2_catalog_instance_1c201_port:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets_2c2_catalog_instance_1c201_port:
+      network.incoming.packets.rate_pcm_port_2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_2c2_catalog_instance:
+      network.incoming.packets.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_2c2_catalog_instance_2c202_port:
+      network.outpoing.packets_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_2c2_catalog_instance:
+      disk.device.iops_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_2c2_catalog_instance:
+      network.outpoing.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_2c2_catalog_instance:
+      network.outpoing.packets_pcm_port_3:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_2c2_catalog_instance:
+      network.outpoing.packets_pcm_port_2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_2c2_catalog_instance:
+      disk.device.iops_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_2c2_catalog_instance_2c202_port:
+      disk.device.capacity_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_2c2_catalog_instance:
+      disk.device.capacity_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_2c2_catalog_instance:
+      disk.read.requests_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_2c2_catalog_instance:
+      disk.read.requests_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_2c2_catalog_instance:
+      disk.write.requests.rate_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_2c2_catalog_instance:
+      disk.write.requests.rate_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_2c2_catalog_instance_2c202_port:
+      memory_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_2c2_catalog_instance_1c201_port:
+      memory_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_2c2_catalog_instance:
+      disk.device.read.bytes.rate_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_2c2_catalog_instance_1c201_port:
+      network.outgoing.bytes_pcm_port_3:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_2c2_catalog_instance:
+      disk.device.read.bytes.rate_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_2c2_catalog_instance_2c202_port:
+      binding_pcm_port_3:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      feature_2c2_catalog_instance:
-        type: tosca.capabilities.Node
+      disk.device.latency_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_2c2_catalog_instance:
+      disk.device.usage_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_2c2_catalog_instance:
+      network.incoming.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_2c2_catalog_instance_2c202_port:
+      disk.device.latency_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_2c2_catalog_instance:
-        type: tosca.capabilities.network.Bindable
+      network.incoming.bytes_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_2c2_catalog_instance_2c202_port:
-        type: tosca.capabilities.Attachment
+      network.incoming.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_2c2_catalog_instance_2c202_port:
+      disk.device.usage_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_2c2_catalog_instance_2c202_port:
-        type: tosca.capabilities.Node
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      memory_2c2_catalog_instance:
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_2:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_3:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_2c2_catalog_instance_1c201_port:
+      network.outgoing.packets.rate_pcm_port_3:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_2c2_catalog_instance:
+      disk.device.read.requests_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 1
-        - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.1c2_catalog_instance:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
-    properties:
-      compute_1c2_catalog_instance_availability_zone:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_1c201_port_vlan_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      vm_flavor_name:
-        type: string
-        required: true
-        status: SUPPORTED
-      compute_1c2_catalog_instance_personality:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: json
-      port_2c202_port_subnetpoolid:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_2c202_port_ip_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_1c201_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_2c202_port_network_role_tag:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_2c202_port_network_role:
-        type: string
-        required: true
-        status: SUPPORTED
-      vm_image_name:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_2c202_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      port_1c201_port_network_role_tag:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_1c201_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      port_2c202_port_vlan_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      index_value:
-        type: integer
-        description: Index value of this substitution service template runtime instance
-        required: false
-        default: 0
-        status: SUPPORTED
-        constraints:
-        - greater_or_equal: 0
-      compute_1c2_catalog_instance_name:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_2c202_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        required: true
-        status: SUPPORTED
-      port_2c202_port_network:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_1c201_port_ip_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_1c201_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        required: true
-        status: SUPPORTED
-      port_2c202_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_1c201_port_subnetpoolid:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_1c201_port_network_role:
-        type: string
-        required: true
-        status: SUPPORTED
-      compute_1c2_catalog_instance_user_data_format:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_1c201_port_network:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      compute_1c2_catalog_instance_scheduler_hints:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: json
-    attributes:
-      1c2_catalog_instance_instance_name:
-        type: string
-        status: SUPPORTED
-      1c2_catalog_instance_1c201_port_tenant_id:
-        type: string
-        status: SUPPORTED
-    requirements:
-    - dependency_1c2_catalog_instance:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - local_storage_1c2_catalog_instance:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      network.outgoing.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - dependency_1c2_catalog_instance_1c201_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      network.outgoing.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - link_1c2_catalog_instance_1c201_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      disk.write.bytes_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcma1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
         - 1
-    - dependency_1c2_catalog_instance_2c202_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - link_1c2_catalog_instance_2c202_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      disk.write.bytes_server_pcma1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
         - 1
-    capabilities:
-      disk.device.capacity_1c2_catalog_instance:
+        - UNBOUNDED
+      binding_server_pcma1:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_1c2_catalog_instance_2c202_port:
-        type: tosca.capabilities.Attachment
+      binding_server_pcma2:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_1c2_catalog_instance_2c202_port:
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_1c2_catalog_instance_2c202_port:
+      feature_pcm_port_3:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_1c2_catalog_instance_1c201_port:
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_1c2_catalog_instance:
+      attachment_pcm_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_1c2_catalog_instance_1c201_port:
+      attachment_pcm_port_3:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_1c2_catalog_instance:
+      disk.root.size_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_1c2_catalog_instance_1c201_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.iops_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      disk.write.bytes.rate_1c2_catalog_instance:
+      disk.iops_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_1c2_catalog_instance:
+      disk.device.write.bytes.rate_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_1c2_catalog_instance:
+      disk.device.write.bytes.rate_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_1c2_catalog_instance:
+      disk.read.bytes_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_1c2_catalog_instance_1c201_port:
+      disk.read.bytes_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_1c2_catalog_instance:
+      cpu_util_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_1c2_catalog_instance:
+      cpu_util_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_1c2_catalog_instance:
+      feature_server_pcma2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_1c2_catalog_instance:
+      memory.usage_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_1c2_catalog_instance:
-        type: tosca.capabilities.OperatingSystem
+      feature_server_pcma1:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_1c2_catalog_instance:
+      disk.read.bytes.rate_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_1c2_catalog_instance_2c202_port:
-        type: tosca.capabilities.Node
+      disk.device.read.bytes_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_1c2_catalog_instance_2c202_port:
+      disk.device.read.bytes_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_1c2_catalog_instance:
+      endpoint_server_pcma2:
         type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_1c2_catalog_instance:
+      disk.read.bytes.rate_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_1c2_catalog_instance:
+      endpoint_server_pcma1:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_1c2_catalog_instance_2c202_port:
+      cpu.delta_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_1c2_catalog_instance:
+      host_server_pcma2:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcma1:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_1c2_catalog_instance_2c202_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.ephemeral.size_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      vcpus_1c2_catalog_instance:
+      disk.device.write.requests.rate_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_1c2_catalog_instance:
+      disk.latency_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_1c2_catalog_instance_1c201_port:
+      disk.latency_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_1c2_catalog_instance_1c201_port:
-        type: tosca.capabilities.Attachment
+      disk.device.write.requests.rate_server_pcma1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcma2:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcma1:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcma1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcma1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_1c2_catalog_instance_1c201_port:
+      instance_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_1c2_catalog_instance_1c201_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_server_pcma1:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_1c2_catalog_instance:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_server_pcma2:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      instance_1c2_catalog_instance:
+      disk.capacity_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_1c2_catalog_instance:
+      disk.capacity_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_1c2_catalog_instance:
+      disk.write.requests_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_1c2_catalog_instance:
+      disk.write.requests_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_1c2_catalog_instance_2c202_port:
+      network.outgoing.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_1c2_catalog_instance:
+      network.incoming.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_1c2_catalog_instance:
+      network.outgoing.bytes.rate_pcm_port_2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_1c2_catalog_instance:
+      network.outgoing.bytes.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_1c2_catalog_instance:
+      network.incoming.packets_pcm_port_3:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_1c2_catalog_instance:
-        type: tosca.capabilities.Scalable
+      disk.usage_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_1c2_catalog_instance:
+      network.incoming.packets_pcm_port_2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_1c2_catalog_instance:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      network.outgoing.bytes.rate_pcm_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_1c2_catalog_instance:
+      disk.usage_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_1c2_catalog_instance_1c201_port:
-        type: tosca.capabilities.Node
+      vcpus_server_pcma1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_1c2_catalog_instance_2c202_port:
+      memory.resident_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_1c2_catalog_instance_2c202_port:
+      network.incoming.packets_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_1c2_catalog_instance:
+      vcpus_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_1c2_catalog_instance_1c201_port:
+      memory.resident_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_1c2_catalog_instance:
+      disk.device.write.bytes_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_1c2_catalog_instance:
-        type: tosca.capabilities.Node
+      disk.allocation_server_pcma1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_1c2_catalog_instance:
+      disk.allocation_server_pcma2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_1c2_catalog_instance_1c201_port:
+      disk.device.write.bytes_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_1c2_catalog_instance:
+      cpu_server_pcma1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_1c2_catalog_instance:
+      network.incoming.bytes.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_1c2_catalog_instance:
-        type: tosca.capabilities.network.Bindable
+      cpu_server_pcma2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_1c2_catalog_instance:
+      network.incoming.bytes.rate_pcm_port_3:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_1c2_catalog_instance_2c202_port:
+      network.incoming.bytes.rate_pcm_port_2:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_1c2_catalog_instance:
+      network.incoming.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.a_single_2a:
+  org.openecomp.resource.abstract.nodes.1c12_scalling_instance:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      compute_a_single_2a_user_data_format:
+      port_1c1_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_1c12_scalling_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1c1_t1_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      compute_1c12_scalling_instance_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_1a_t1_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+      port_1c1_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1c1_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
       index_value:
@@ -4628,418 +6129,405 @@ node_types:
         status: SUPPORTED
         constraints:
         - greater_or_equal: 0
-      port_1a_t1_port_ip_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_1a_t1_port_network_role_tag:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_1a_t1_port_network_role:
+      vm_flavor_name:
         type: string
         required: true
         status: SUPPORTED
-      compute_a_single_2a_scheduler_hints:
+      compute_1c12_scalling_instance_user_data_format:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: json
-      port_1a_t1_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      compute_a_single_2a_availability_zone:
+          type: string
+      port_1c1_t1_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      vm_flavor_name:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
         type: string
         required: true
         status: SUPPORTED
-      port_1a_t1_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        required: true
-        status: SUPPORTED
-      port_1a_t1_port_network:
+      port_1c1_t1_port_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_1a_t1_port_subnetpoolid:
+      port_1c1_t1_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
-      compute_a_single_2a_name:
-        type: list
+      port_1c1_t1_port_network_role_tag:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      vm_image_name:
+      port_1c1_t1_port_network_role:
         type: string
         required: true
         status: SUPPORTED
-      port_1a_t1_port_vlan_requirements:
+      compute_1c12_scalling_instance_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      compute_a_single_2a_metadata:
+          type: string
+      port_1c1_t1_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: json
+          type: string
+      port_1c1_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
     attributes:
-      a_single_2a_instance_name:
+      1c12_scalling_instance_1c1_t1_port_tenant_id:
+        type: string
+        status: SUPPORTED
+      1c12_scalling_instance_instance_name:
         type: string
         status: SUPPORTED
     requirements:
-    - dependency_a_single_2a:
+    - dependency_1c12_scalling_instance_1c1_t1_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_a_single_2a:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+    - link_1c12_scalling_instance_1c1_t1_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_a_single_2a_1a_t1_port:
+        - 1
+        - 1
+    - dependency_1c12_scalling_instance:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_a_single_2a_1a_t1_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+    - local_storage_1c12_scalling_instance:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
-        - 1
+        - 0
+        - UNBOUNDED
     capabilities:
-      disk.capacity_a_single_2a:
+      cpu_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_a_single_2a:
+      disk.device.write.bytes_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_a_single_2a:
+      network.incoming.bytes.rate_1c12_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_a_single_2a:
+      disk.usage_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_a_single_2a:
+      disk.device.read.requests_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_a_single_2a:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_1c12_scalling_instance_1c1_t1_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_a_single_2a:
+      disk.device.latency_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_a_single_2a:
+      network.outgoing.bytes_1c12_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_a_single_2a:
+      cpu_util_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_a_single_2a:
+      disk.read.bytes_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_a_single_2a_1a_t1_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_1c12_scalling_instance:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_a_single_2a:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      endpoint_1c12_scalling_instance:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_a_single_2a:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      scalable_1c12_scalling_instance:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_a_single_2a:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_1c12_scalling_instance:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_a_single_2a:
+      disk.device.usage_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_a_single_2a:
+      disk.device.allocation_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_a_single_2a:
+      binding_1c12_scalling_instance_1c1_t1_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.packets_1c12_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_a_single_2a_1a_t1_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_1c12_scalling_instance_1c1_t1_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_a_single_2a:
+      disk.latency_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_a_single_2a_1a_t1_port:
+      network.incoming.bytes_1c12_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_a_single_2a:
-        type: tosca.capabilities.Scalable
+      memory_1c12_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_a_single_2a_1a_t1_port:
-        type: tosca.capabilities.Node
+      host_1c12_scalling_instance:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_a_single_2a:
+      cpu.delta_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_a_single_2a:
+      disk.device.capacity_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_a_single_2a:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.read.requests_1c12_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_a_single_2a:
+      disk.write.requests.rate_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_a_single_2a:
+      disk.write.bytes.rate_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_a_single_2a_1a_t1_port:
-        type: tosca.capabilities.Attachment
+      disk.write.requests_1c12_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_a_single_2a:
+      network.outgoing.bytes.rate_1c12_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_a_single_2a:
+      disk.ephemeral.size_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_a_single_2a:
-        type: tosca.capabilities.OperatingSystem
+      disk.device.read.requests.rate_1c12_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_a_single_2a:
+      instance_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_a_single_2a:
+      disk.device.read.bytes.rate_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_a_single_2a:
+      disk.iops_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_a_single_2a:
+      disk.device.iops_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_a_single_2a:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_1c12_scalling_instance:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_a_single_2a_1a_t1_port:
+      disk.device.write.bytes.rate_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_a_single_2a_1a_t1_port:
+      disk.write.bytes_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_a_single_2a:
-        type: tosca.capabilities.network.Bindable
+      disk.device.read.bytes_1c12_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_a_single_2a:
+      vcpus_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_a_single_2a_1a_t1_port:
+      network.incoming.packets.rate_1c12_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_a_single_2a:
+      disk.device.write.requests.rate_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_a_single_2a_1a_t1_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      network.incoming.packets_a_single_2a_1a_t1_port:
+      network.outgoing.packets.rate_1c12_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_a_single_2a:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      disk.device.write.requests_1c12_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_a_single_2a:
+      network.outpoing.packets_1c12_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_a_single_2a:
+      disk.allocation_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_a_single_2a:
+      disk.root.size_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_a_single_2a:
+      disk.capacity_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_a_single_2a_1a_t1_port:
+      memory.resident_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_a_single_2a:
+      disk.read.bytes.rate_1c12_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_a_single_2a:
-        type: tosca.capabilities.Node
+      memory.usage_1c12_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.pcma_server_1:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+  org.openecomp.resource.vfc.nodes.heat.pcma_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
       port_pcm_port_0_network_role:
         type: string
@@ -5189,485 +6677,652 @@ node_types:
         type: integer
         required: true
         status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      server_group:
+        type: string
+        required: true
+        status: SUPPORTED
+      connectivityChk:
+        type: json
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
     requirements:
-    - dependency_pcma_server:
+    - dependency_pcm_port_1:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_pcma_server:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_pcma_server_pcm_port_0:
+        - 1
+        - 1
+    - dependency_server_pcm:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pcma_server_pcm_port_0:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
-        - 1
-    - dependency_pcma_server_pcm_port_1:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_port_0:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pcma_server_pcm_port_1:
+    - link_pcm_port_0:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
     capabilities:
-      cpu.delta_pcma_server:
+      network.incoming.packets.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_pcma_server:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      vcpus_pcma_server:
+      cpu_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_pcma_server:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests.rate_pcma_server:
+      network.incoming.packets.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_pcma_server:
+      network.outpoing.packets_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_pcma_server_pcm_port_0:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.read.bytes_pcma_server:
+      memory_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_pcma_server:
+      disk.write.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pcma_server_pcm_port_0:
+      network.outpoing.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pcma_server_pcm_port_1:
+      disk.device.iops_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_pcma_server_pcm_port_1:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      endpoint_pcma_server:
-        type: tosca.capabilities.Endpoint.Admin
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_pcma_server:
-        type: tosca.capabilities.Node
+      memory.resident_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_pcma_server:
+      disk.device.write.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_pcma_server_pcm_port_0:
+      disk.device.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_pcma_server_pcm_port_1:
+      disk.allocation_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_pcma_server_pcm_port_0:
+      disk.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_pcma_server:
+      disk.device.write.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_pcma_server_pcm_port_1:
+      disk.root.size_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_pcma_server:
+      disk.ephemeral.size_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_pcma_server:
+      disk.device.latency_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_pcma_server:
+      network.incoming.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_pcma_server_pcm_port_0:
+      network.incoming.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_pcma_server_pcm_port_0:
+      binding_pcm_port_0:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      network.incoming.packets_pcma_server_pcm_port_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      os_pcma_server:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      binding_pcma_server_pcm_port_1:
+      binding_pcm_port_1:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      network.incoming.packets.rate_pcma_server_pcm_port_1:
+      memory.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_pcma_server:
+      disk.read.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_pcma_server:
+      disk.capacity_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pcma_server_pcm_port_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_pcma_server:
+      disk.read.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_pcma_server_pcm_port_0:
+      network.outgoing.packets.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pcma_server_pcm_port_0:
+      network.outgoing.packets.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_pcma_server:
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_pcma_server:
+      disk.device.read.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_pcma_server:
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_pcma_server:
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_pcma_server:
+      vcpus_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_pcma_server:
+      disk.write.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pcma_server_pcm_port_0:
-        type: tosca.capabilities.Node
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pcma_server_pcm_port_1:
-        type: tosca.capabilities.Node
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_pcma_server:
+      disk.device.allocation_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_pcma_server:
-        type: tosca.capabilities.network.Bindable
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_pcma_server:
+      disk.device.read.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_pcma_server:
+      cpu_util_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_pcma_server:
+      disk.write.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_pcma_server:
+      disk.device.write.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_pcma_server:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_pcma_server:
+      cpu.delta_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_pcma_server:
+      network.outgoing.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcma_server_pcm_port_0:
+      network.incoming.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_pcma_server:
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_pcma_server_pcm_port_1:
+      disk.device.capacity_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_pcma_server:
+      network.incoming.packets_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_pcma_server:
+      instance_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_pcma_server:
+      disk.device.write.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_pcma_server:
+      disk.latency_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_pcma_server:
+      disk.device.read.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_pcma_server:
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcma_server_pcm_port_1:
+      disk.write.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_pcma_server_pcm_port_0:
+      network.incoming.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.b_single_1b:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
-    properties:
-      port_1b_t1_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      port_1b_t1_port_network_role:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_1b_t1_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      vm_flavor_name:
-        type: string
+  org.openecomp.resource.vfc.nodes.heat.a_single_1a:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_a_single_1a_metadata:
+        type: list
         required: true
         status: SUPPORTED
-      port_1b_t1_port_ip_requirements:
+        entry_schema:
+          type: json
+      port_1a_t1_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.IpRequirements
-      vm_image_name:
+      port_1a_t2_port_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
-      port_1b_t2_port_network_role:
+      vm_flavor_name:
         type: string
         required: true
         status: SUPPORTED
-      port_1b_t2_port_order:
-        type: integer
+      port_1a_t2_port_network_role:
+        type: string
         required: true
         status: SUPPORTED
-      compute_b_single_1b_user_data_format:
+      port_1a_t2_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_1b_t2_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+      port_1a_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      port_1b_t2_port_network_role_tag:
+      port_1a_t1_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1a_t1_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
-      port_1b_t2_port_subnetpoolid:
+      vm_image_name:
         type: string
         required: true
         status: SUPPORTED
-      port_1b_t2_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+      port_1a_t2_port_ip_requirements:
+        type: list
         required: true
         status: SUPPORTED
-      compute_b_single_1b_availability_zone:
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_1a_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1a_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_a_single_1a_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
+      compute_a_single_1a_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
       index_value:
         type: integer
         description: Index value of this substitution service template runtime instance
@@ -5676,1590 +7331,1498 @@ node_types:
         status: SUPPORTED
         constraints:
         - greater_or_equal: 0
-      compute_b_single_1b_scheduler_hints:
-        type: list
+      port_1a_t1_port_network_role_tag:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: json
-      port_1b_t2_port_vlan_requirements:
+      port_1a_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.VlanRequirements
-      port_1b_t2_port_ip_requirements:
+      port_1a_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1a_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_a_single_1a_user_data_format:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_1b_t1_port_value_specs:
+          type: string
+      compute_a_single_1a_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: json
-      port_1b_t1_port_network_role_tag:
-        type: string
+          type: string
+      port_1a_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      port_1b_t1_port_subnetpoolid:
+    attributes:
+      a_single_1a_instance_name:
+        type: string
+        status: SUPPORTED
+      a_single_1a_1a_t1_port_tenant_id:
         type: string
+        status: SUPPORTED
+  org.openecomp.resource.abstract.nodes.1c11_scalling_instance:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_1c1_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      port_1b_t1_port_mac_requirements:
+      port_1c1_t1_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_1c1_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1c1_t1_port_mac_requirements:
         type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      port_1b_t2_port_network:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_1c11_scalling_instance_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_1b_t1_port_vlan_requirements:
+      compute_1c11_scalling_instance_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      port_1b_t1_port_network:
+          type: string
+      compute_1c11_scalling_instance_user_data_format:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      compute_b_single_1b_name:
+      port_1c1_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_1c11_scalling_instance_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1c1_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1c1_t1_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
+      port_1c1_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
     attributes:
-      b_single_1b_instance_name:
+      1c11_scalling_instance_instance_name:
         type: string
         status: SUPPORTED
-      b_single_1b_1b_t1_port_tenant_id:
+      1c11_scalling_instance_1c1_t1_port_tenant_id:
         type: string
         status: SUPPORTED
     requirements:
-    - dependency_b_single_1b:
+    - dependency_1c11_scalling_instance:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_b_single_1b:
+    - local_storage_1c11_scalling_instance:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
         occurrences:
         - 0
         - UNBOUNDED
-    - dependency_b_single_1b_1b_t1_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_b_single_1b_1b_t1_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
-        occurrences:
-        - 1
-        - 1
-    - dependency_b_single_1b_1b_t2_port:
+    - dependency_1c11_scalling_instance_1c1_t1_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
-        - 0
-        - UNBOUNDED
-    - link_b_single_1b_1b_t2_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
-        occurrences:
-        - 1
-        - 1
-    capabilities:
-      attachment_b_single_1b_1b_t2_port:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      endpoint_b_single_1b:
-        type: tosca.capabilities.Endpoint.Admin
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_b_single_1b:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.iops_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_b_single_1b_1b_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_b_single_1b_1b_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      scalable_b_single_1b:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      os_b_single_1b:
-        type: tosca.capabilities.OperatingSystem
+    - link_1c11_scalling_instance_1c1_t1_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
-        - UNBOUNDED
-      vcpus_b_single_1b:
+        - 1
+    capabilities:
+      disk.device.usage_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_b_single_1b:
+      network.incoming.packets_1c11_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_b_single_1b:
+      network.incoming.packets.rate_1c11_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_b_single_1b_1b_t2_port:
+      disk.allocation_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_b_single_1b:
+      disk.device.read.bytes_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_b_single_1b_1b_t1_port:
+      disk.device.allocation_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_b_single_1b:
+      disk.read.bytes_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_1c11_scalling_instance:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_1c11_scalling_instance:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_b_single_1b_1b_t1_port:
+      memory.usage_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_b_single_1b:
+      disk.usage_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_b_single_1b_1b_t2_port:
+      disk.latency_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_b_single_1b:
+      network.outgoing.packets.rate_1c11_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_b_single_1b:
+      vcpus_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_b_single_1b_1b_t2_port:
+      memory_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_b_single_1b_1b_t1_port:
+      cpu_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_b_single_1b_1b_t1_port:
-        type: tosca.capabilities.Attachment
+      endpoint_1c11_scalling_instance:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_1c11_scalling_instance_1c1_t1_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      binding_b_single_1b_1b_t2_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      scalable_1c11_scalling_instance:
+        type: tosca.capabilities.Scalable
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      disk.ephemeral.size_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_1c11_scalling_instance:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_b_single_1b:
+      network.outpoing.packets_1c11_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_b_single_1b_1b_t2_port:
+      disk.ephemeral.size_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_b_single_1b:
+      cpu_util_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_b_single_1b:
+      disk.write.bytes.rate_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_b_single_1b:
+      disk.read.bytes.rate_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_b_single_1b:
+      disk.capacity_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_b_single_1b_1b_t1_port:
-        type: tosca.capabilities.Node
+      host_1c11_scalling_instance:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_b_single_1b_1b_t2_port:
+      disk.device.write.bytes.rate_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_b_single_1b:
+      cpu.delta_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_b_single_1b:
+      network.outgoing.bytes_1c11_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_b_single_1b:
+      disk.device.write.requests_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_b_single_1b:
+      network.incoming.bytes.rate_1c11_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_b_single_1b:
+      disk.device.capacity_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_1c11_scalling_instance_1c1_t1_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      network.outgoing.packets.rate_b_single_1b_1b_t1_port:
+      disk.write.bytes_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_b_single_1b:
+      disk.write.requests_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_b_single_1b:
+      network.incoming.bytes_1c11_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_b_single_1b_1b_t1_port:
+      network.outgoing.bytes.rate_1c11_scalling_instance_1c1_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_b_single_1b:
+      disk.device.read.requests_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_b_single_1b_1b_t1_port:
+      disk.device.write.bytes_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_b_single_1b_1b_t1_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      network.outpoing.packets_b_single_1b_1b_t1_port:
+      disk.device.read.bytes.rate_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_b_single_1b:
+      disk.root.size_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_b_single_1b:
+      instance_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_b_single_1b:
+      disk.read.requests_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_b_single_1b_1b_t2_port:
+      disk.device.iops_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_b_single_1b_1b_t1_port:
+      memory.resident_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_1c11_scalling_instance_1c1_t1_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_b_single_1b:
+      disk.write.requests.rate_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_b_single_1b:
+      disk.device.read.requests.rate_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_b_single_1b:
+      disk.device.write.requests.rate_1c11_scalling_instance:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_b_single_1b:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      binding_b_single_1b:
-        type: tosca.capabilities.network.Bindable
+      disk.device.latency_1c11_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_b_single_1b_1b_t2_port:
-        type: tosca.capabilities.Node
+      disk.iops_1c11_scalling_instance:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.a_single_1a:
+  org.openecomp.resource.abstract.nodes.heat.pcm_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      compute_a_single_1a_metadata:
-        type: list
+      port_pcm_port_0_network_role:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: json
-      port_1a_t1_port_ip_requirements:
-        type: list
+      port_pcm_port_1_network_role_tag:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_1a_t2_port_network_role_tag:
+      availabilityzone_name:
         type: string
+        description: availabilityzone name
         required: true
         status: SUPPORTED
-      vm_flavor_name:
-        type: string
+      port_pcm_port_0_vlan_requirements:
+        type: list
         required: true
         status: SUPPORTED
-      port_1a_t2_port_network_role:
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
         type: string
+        description: PCRF CM image name
         required: true
         status: SUPPORTED
-      port_1a_t2_port_network:
-        type: list
+      port_pcm_port_0_order:
+        type: integer
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      port_1a_t1_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+      port_pcm_port_0_subnetpoolid:
+        type: string
         required: true
         status: SUPPORTED
-      port_1a_t1_port_network:
-        type: list
+      port_pcm_port_1_subnetpoolid:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      port_1a_t1_port_subnetpoolid:
+      port_pcm_port_0_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
-      vm_image_name:
+      pcm_server_name:
         type: string
+        description: PCRF CM server name
         required: true
         status: SUPPORTED
-      port_1a_t2_port_ip_requirements:
-        type: list
+      cps_net_mask:
+        type: string
+        description: CPS network mask
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_1a_t1_port_vlan_requirements:
-        type: list
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      port_1a_t1_port_exCP_naming:
+      port_pcm_port_0_exCP_naming:
         type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      compute_a_single_1a_availability_zone:
-        type: list
+      oam_net_name:
+        type: string
+        description: OAM network name
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      compute_a_single_1a_scheduler_hints:
-        type: list
+      port_pcm_port_1_network_role:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: json
-      index_value:
-        type: integer
-        description: Index value of this substitution service template runtime instance
-        required: false
-        default: 0
+      server_group:
+        type: string
+        required: true
+        status: SUPPORTED
+      connectivityChk:
+        type: json
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
         status: SUPPORTED
-        constraints:
-        - greater_or_equal: 0
-      port_1a_t1_port_network_role_tag:
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
         type: string
+        description: CPS network gateway
         required: true
         status: SUPPORTED
-      port_1a_t1_port_network_role:
+      security_group_name:
         type: string
+        description: the name of security group
         required: true
         status: SUPPORTED
-      port_1a_t1_port_order:
-        type: integer
+      cps_net_ip:
+        type: string
+        description: CPS network ip
         required: true
         status: SUPPORTED
-      port_1a_t2_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      port_1a_t2_port_vlan_requirements:
+      port_pcm_port_1_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.VlanRequirements
-      port_1a_t2_port_subnetpoolid:
+      pcm_flavor_name:
         type: string
+        description: flavor name of PCRF CM instance
         required: true
         status: SUPPORTED
-      port_1a_t2_port_order:
-        type: integer
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
         required: true
         status: SUPPORTED
-      compute_a_single_1a_user_data_format:
+      port_pcm_port_1_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      compute_a_single_1a_name:
-        type: list
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      port_1a_t2_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+      cps_net_name:
+        type: string
+        description: CPS network name
         required: true
         status: SUPPORTED
-    attributes:
-      a_single_1a_instance_name:
+      oam_net_ip:
         type: string
+        description: OAM network ip
+        required: true
         status: SUPPORTED
-      a_single_1a_1a_t1_port_tenant_id:
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
         type: string
+        description: the pcm nova service id
         status: SUPPORTED
     requirements:
-    - dependency_a_single_1a_1a_t1_port:
+    - dependency_pcm_port_1:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_a_single_1a_1a_t1_port:
+    - link_pcm_port_1:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
-    - dependency_a_single_1a:
+    - dependency_server_pcm:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_a_single_1a:
+    - local_storage_server_pcm:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
         occurrences:
         - 0
         - UNBOUNDED
-    - dependency_a_single_1a_1a_t2_port:
+    - dependency_pcm_port_0:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_a_single_1a_1a_t2_port:
+    - link_pcm_port_0:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
     capabilities:
-      disk.read.bytes_a_single_1a:
+      network.incoming.packets.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_a_single_1a_1a_t2_port:
+      cpu_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_a_single_1a:
+      network.incoming.packets.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_a_single_1a_1a_t2_port:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      scalable_a_single_1a:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_a_single_1a_1a_t2_port:
+      network.outpoing.packets_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_a_single_1a:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      memory_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_a_single_1a:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_a_single_1a:
+      network.outpoing.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_a_single_1a:
+      disk.device.iops_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_a_single_1a_1a_t2_port:
+      memory.resident_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_a_single_1a:
+      disk.device.write.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_a_single_1a:
+      disk.device.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_a_single_1a_1a_t1_port:
+      disk.allocation_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_a_single_1a:
+      disk.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_a_single_1a_1a_t1_port:
+      disk.device.write.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_a_single_1a:
+      disk.root.size_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_a_single_1a:
-        type: tosca.capabilities.OperatingSystem
+      disk.ephemeral.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_a_single_1a:
+      disk.device.latency_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_a_single_1a_1a_t1_port:
+      network.incoming.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_a_single_1a_1a_t2_port:
+      network.incoming.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_a_single_1a:
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      memory.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_a_single_1a:
+      disk.read.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_a_single_1a:
+      disk.capacity_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_a_single_1a_1a_t1_port:
-        type: tosca.capabilities.Attachment
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_a_single_1a:
+      disk.read.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_a_single_1a:
+      network.outgoing.packets.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_a_single_1a:
+      network.outgoing.packets.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_a_single_1a_1a_t2_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      network.incoming.packets_a_single_1a_1a_t2_port:
+      network.outgoing.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_a_single_1a:
+      disk.device.read.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_a_single_1a:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      instance_a_single_1a:
+      network.outgoing.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_a_single_1a:
-        type: tosca.capabilities.network.Bindable
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_a_single_1a:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_a_single_1a_1a_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_a_single_1a:
+      disk.device.read.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_a_single_1a:
+      vcpus_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_a_single_1a_1a_t1_port:
-        type: tosca.capabilities.Node
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_a_single_1a_1a_t2_port:
+      disk.iops_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_a_single_1a_1a_t1_port:
+      disk.read.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_a_single_1a:
+      disk.device.allocation_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_a_single_1a:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_a_single_1a:
+      disk.device.read.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_a_single_1a:
+      cpu_util_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_a_single_1a:
+      disk.write.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_a_single_1a_1a_t1_port:
+      disk.device.write.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_a_single_1a_1a_t2_port:
-        type: tosca.capabilities.Node
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_a_single_1a:
+      cpu.delta_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_a_single_1a:
+      network.outgoing.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_a_single_1a_1a_t1_port:
+      network.incoming.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_a_single_1a:
-        type: tosca.capabilities.Node
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_a_single_1a_1a_t1_port:
+      network.outgoing.bytes.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_a_single_1a:
+      disk.device.capacity_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_a_single_1a:
+      network.incoming.packets_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 1
-        - UNBOUNDED
-      binding_a_single_1a_1a_t1_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      disk.device.iops_a_single_1a:
+      instance_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_a_single_1a:
+      disk.device.write.requests.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_a_single_1a:
+      disk.latency_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_a_single_1a:
+      disk.device.read.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_a_single_1a:
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_a_single_1a_1a_t2_port:
+      disk.write.bytes.rate_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_a_single_1a_1a_t1_port:
+      network.incoming.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.b_single_1b_1:
+  org.openecomp.resource.abstract.nodes.a_single_2a:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      port_1b_t1_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      port_1b_t1_port_network_role:
-        type: string
+      compute_a_single_2a_user_data_format:
+        type: list
         required: true
         status: SUPPORTED
-      port_1b_t1_port_exCP_naming:
+        entry_schema:
+          type: string
+      port_1a_t1_port_exCP_naming:
         type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      vm_flavor_name:
-        type: string
-        required: true
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
         status: SUPPORTED
-      port_1b_t1_port_ip_requirements:
+        constraints:
+        - greater_or_equal: 0
+      port_1a_t1_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.IpRequirements
-      vm_image_name:
+      port_1a_t1_port_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
-      port_1b_t2_port_network_role:
+      port_1a_t1_port_network_role:
         type: string
         required: true
         status: SUPPORTED
-      port_1b_t2_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      compute_b_single_1b_user_data_format:
+      compute_a_single_2a_scheduler_hints:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      port_1b_t2_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_1b_t2_port_network_role_tag:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_1b_t2_port_subnetpoolid:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_1b_t2_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+          type: json
+      port_1a_t1_port_order:
+        type: integer
         required: true
         status: SUPPORTED
-      compute_b_single_1b_availability_zone:
+      compute_a_single_2a_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      index_value:
-        type: integer
-        description: Index value of this substitution service template runtime instance
-        required: false
-        default: 0
-        status: SUPPORTED
-        constraints:
-        - greater_or_equal: 0
-      compute_b_single_1b_scheduler_hints:
-        type: list
+      vm_flavor_name:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: json
-      port_1b_t2_port_vlan_requirements:
-        type: list
+      port_1a_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      port_1b_t2_port_ip_requirements:
+      port_1a_t1_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_1b_t1_port_network_role_tag:
+          type: string
+      port_1a_t1_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
-      compute_b_single_1b_metadata:
+      compute_a_single_2a_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: json
-      port_1b_t1_port_subnetpoolid:
+          type: string
+      vm_image_name:
         type: string
         required: true
         status: SUPPORTED
-      port_1b_t1_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        required: true
-        status: SUPPORTED
-      port_1b_t2_port_network:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_1b_t1_port_vlan_requirements:
+      port_1a_t1_port_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.VlanRequirements
-      compute_b_single_1b_name:
+      compute_a_single_2a_metadata:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
+          type: json
     attributes:
-      b_single_1b_instance_name:
-        type: string
-        status: SUPPORTED
-      b_single_1b_1b_t1_port_tenant_id:
+      a_single_2a_instance_name:
         type: string
         status: SUPPORTED
     requirements:
-    - dependency_b_single_1b:
+    - dependency_a_single_2a:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_b_single_1b:
+    - local_storage_a_single_2a:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
         occurrences:
         - 0
         - UNBOUNDED
-    - dependency_b_single_1b_1b_t1_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_b_single_1b_1b_t1_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
-        occurrences:
-        - 1
-        - 1
-    - dependency_b_single_1b_1b_t2_port:
+    - dependency_a_single_2a_1a_t1_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_b_single_1b_1b_t2_port:
+    - link_a_single_2a_1a_t1_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
     capabilities:
-      attachment_b_single_1b_1b_t2_port:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      endpoint_b_single_1b:
-        type: tosca.capabilities.Endpoint.Admin
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_b_single_1b:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.iops_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_b_single_1b_1b_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_b_single_1b_1b_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      scalable_b_single_1b:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      os_b_single_1b:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      vcpus_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      cpu_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests.rate_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets.rate_b_single_1b_1b_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      instance_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_b_single_1b_1b_t1_port:
+      disk.capacity_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_b_single_1b:
+      disk.ephemeral.size_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_b_single_1b:
+      disk.device.read.bytes_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_b_single_1b:
+      cpu_util_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_b_single_1b_1b_t1_port:
+      disk.write.requests_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_b_single_1b:
+      disk.read.requests_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_b_single_1b_1b_t2_port:
+      disk.device.iops_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_b_single_1b:
+      disk.device.usage_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_b_single_1b:
+      disk.read.bytes.rate_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_b_single_1b_1b_t2_port:
+      disk.device.write.requests.rate_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_b_single_1b_1b_t1_port:
+      network.incoming.bytes.rate_a_single_2a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_b_single_1b_1b_t1_port:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.write.requests_b_single_1b:
+      disk.write.requests.rate_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_b_single_1b_1b_t2_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.latency_a_single_2a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      disk.ephemeral.size_b_single_1b:
+      disk.read.bytes_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_b_single_1b:
+      disk.device.read.requests_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_b_single_1b_1b_t2_port:
+      disk.device.allocation_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_b_single_1b:
+      disk.latency_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_b_single_1b:
+      network.incoming.packets.rate_a_single_2a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_b_single_1b:
+      disk.usage_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_b_single_1b:
+      network.incoming.bytes_a_single_2a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_b_single_1b_1b_t1_port:
+      scalable_a_single_2a:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_a_single_2a_1a_t1_port:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_b_single_1b_1b_t2_port:
+      disk.device.write.bytes_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_b_single_1b:
+      disk.device.read.bytes.rate_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_b_single_1b:
+      endpoint_a_single_2a:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_b_single_1b:
+      disk.device.write.requests_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_b_single_1b:
+      attachment_a_single_2a_1a_t1_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_b_single_1b:
+      vcpus_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_b_single_1b:
+      os_a_single_2a:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_b_single_1b_1b_t1_port:
+      disk.device.capacity_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_b_single_1b:
+      cpu_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_b_single_1b:
+      disk.device.read.requests.rate_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_b_single_1b_1b_t1_port:
+      memory.usage_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_b_single_1b:
+      network.outgoing.packets.rate_a_single_2a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_b_single_1b_1b_t1_port:
+      network.outpoing.packets_a_single_2a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_b_single_1b_1b_t1_port:
+      binding_a_single_2a:
         type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      network.outpoing.packets_b_single_1b_1b_t1_port:
+      instance_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_b_single_1b:
+      network.outgoing.bytes_a_single_2a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_b_single_1b:
+      disk.write.bytes_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_b_single_1b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_a_single_2a_1a_t1_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      network.incoming.bytes_b_single_1b_1b_t2_port:
+      network.incoming.packets_a_single_2a_1a_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_b_single_1b_1b_t1_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      host_a_single_2a:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_b_single_1b:
+      disk.device.write.bytes.rate_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_b_single_1b:
+      memory_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_b_single_1b:
+      disk.allocation_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_b_single_1b:
+      memory.resident_a_single_2a:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_b_single_1b:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      network.outgoing.bytes.rate_a_single_2a_1a_t1_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_b_single_1b:
-        type: tosca.capabilities.network.Bindable
+      cpu.delta_a_single_2a:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_b_single_1b_1b_t2_port:
+      feature_a_single_2a:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.b_single_2b:
+  org.openecomp.resource.abstract.nodes.b_single_1b:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
       port_1b_t1_port_order:
@@ -7288,12 +8851,6 @@ node_types:
         type: string
         required: true
         status: SUPPORTED
-      compute_b_single_2b_scheduler_hints:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: json
       port_1b_t2_port_network_role:
         type: string
         required: true
@@ -7302,6 +8859,12 @@ node_types:
         type: integer
         required: true
         status: SUPPORTED
+      compute_b_single_1b_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
       port_1b_t2_port_exCP_naming:
         type: org.openecomp.datatypes.Naming
         required: true
@@ -7314,16 +8877,16 @@ node_types:
         type: string
         required: true
         status: SUPPORTED
-      compute_b_single_2b_availability_zone:
+      port_1b_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_b_single_1b_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_1b_t2_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        required: true
-        status: SUPPORTED
       index_value:
         type: integer
         description: Index value of this substitution service template runtime instance
@@ -7332,36 +8895,30 @@ node_types:
         status: SUPPORTED
         constraints:
         - greater_or_equal: 0
-      port_1b_t2_port_vlan_requirements:
+      compute_b_single_1b_scheduler_hints:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      port_1b_t2_port_ip_requirements:
+          type: json
+      port_1b_t2_port_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      compute_b_single_2b_name:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t2_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
+          type: org.openecomp.datatypes.network.IpRequirements
       port_1b_t1_port_value_specs:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: json
-      compute_b_single_2b_user_data_format:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
       port_1b_t1_port_network_role_tag:
         type: string
         required: true
@@ -7392,424 +8949,564 @@ node_types:
         status: SUPPORTED
         entry_schema:
           type: string
+      compute_b_single_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
     attributes:
-      b_single_2b_instance_name:
+      b_single_1b_instance_name:
+        type: string
+        status: SUPPORTED
+      b_single_1b_1b_t1_port_tenant_id:
         type: string
         status: SUPPORTED
     requirements:
-    - dependency_b_single_2b:
+    - dependency_b_single_1b:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_b_single_2b:
+    - local_storage_b_single_1b:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
         occurrences:
         - 0
         - UNBOUNDED
-    - dependency_b_single_2b_1b_t1_port:
+    - dependency_b_single_1b_1b_t1_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_b_single_2b_1b_t1_port:
+    - link_b_single_1b_1b_t1_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
-    - dependency_b_single_2b_1b_t2_port:
+    - dependency_b_single_1b_1b_t2_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_b_single_2b_1b_t2_port:
+    - link_b_single_1b_1b_t2_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
     capabilities:
-      disk.usage_b_single_2b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.bytes.rate_b_single_2b_1b_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_b_single_1b_1b_t2_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_b_single_2b_1b_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      endpoint_b_single_1b:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_b_single_2b_1b_t2_port:
-        type: tosca.capabilities.Attachment
+      feature_b_single_1b:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_b_single_2b:
+      disk.iops_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_b_single_2b:
+      network.incoming.bytes.rate_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_b_single_2b:
+      network.outgoing.bytes.rate_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_b_single_2b:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      scalable_b_single_1b:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_b_single_2b:
+      disk.write.bytes_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_b_single_2b_1b_t2_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_b_single_1b:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_b_single_2b:
+      vcpus_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_b_single_2b:
+      cpu_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_b_single_2b:
+      disk.device.read.requests.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_b_single_2b_1b_t1_port:
+      network.incoming.packets.rate_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_b_single_2b_1b_t1_port:
+      instance_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_b_single_2b:
+      network.incoming.bytes.rate_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_b_single_2b:
-        type: tosca.capabilities.Node
+      disk.read.bytes_b_single_1b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_b_single_2b:
+      disk.device.latency_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_b_single_2b:
+      disk.usage_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_b_single_2b_1b_t2_port:
+      network.incoming.bytes_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_b_single_2b:
+      disk.device.allocation_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_b_single_2b:
+      network.outgoing.packets.rate_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_b_single_2b_1b_t1_port:
+      disk.device.capacity_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_b_single_2b_1b_t1_port:
-        type: tosca.capabilities.Attachment
+      disk.latency_b_single_1b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_b_single_2b:
+      network.incoming.packets_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_b_single_2b_1b_t2_port:
+      network.incoming.packets.rate_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_b_single_2b:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_b_single_1b_1b_t1_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_b_single_2b:
+      disk.device.write.requests_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_b_single_2b_1b_t2_port:
+      binding_b_single_1b_1b_t2_port:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      instance_b_single_2b:
+      disk.ephemeral.size_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_b_single_2b_1b_t2_port:
+      disk.write.requests.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_b_single_2b:
+      network.outpoing.packets_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_b_single_2b:
+      disk.device.iops_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_b_single_2b_1b_t2_port:
+      disk.read.requests_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_b_single_2b:
+      memory.resident_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_b_single_2b:
+      disk.root.size_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_b_single_2b_1b_t1_port:
+      feature_b_single_1b_1b_t1_port:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_b_single_2b:
+      network.outgoing.bytes_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_b_single_2b_1b_t1_port:
+      disk.capacity_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_b_single_2b:
+      disk.device.write.bytes_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_b_single_2b:
+      disk.device.read.bytes_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_b_single_2b:
+      disk.device.read.bytes.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_b_single_2b_1b_t1_port:
+      cpu_util_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_b_single_2b:
-        type: tosca.capabilities.network.Bindable
+      disk.write.requests_b_single_1b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_b_single_2b_1b_t1_port:
+      network.outgoing.packets.rate_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_b_single_2b_1b_t1_port:
+      disk.device.usage_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_b_single_2b_1b_t1_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      feature_b_single_2b_1b_t2_port:
-        type: tosca.capabilities.Node
+      disk.read.bytes.rate_b_single_1b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_b_single_2b:
-        type: tosca.capabilities.OperatingSystem
+      network.outgoing.bytes_b_single_1b_1b_t1_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_b_single_2b:
+      disk.device.read.requests_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_b_single_2b:
+      network.incoming.packets_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_b_single_2b:
-        type: tosca.capabilities.Endpoint.Admin
+      binding_b_single_1b_1b_t1_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.iops_b_single_2b:
+      network.outpoing.packets_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_b_single_2b:
+      disk.device.write.requests.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_b_single_2b:
-        type: tosca.capabilities.Scalable
+      memory.usage_b_single_1b:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_b_single_2b:
+      disk.write.bytes.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_b_single_2b:
+      network.incoming.bytes_b_single_1b_1b_t2_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_b_single_2b:
+      network.outgoing.bytes.rate_b_single_1b_1b_t1_port:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_b_single_2b:
+      cpu.delta_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_b_single_2b:
+      disk.allocation_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_b_single_2b:
+      disk.device.write.bytes.rate_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_b_single_2b_1b_t2_port:
+      memory_b_single_1b:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_b_single_2b_1b_t1_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      host_b_single_1b:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_b_single_1b:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_b_single_1b_1b_t2_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.b_single_2b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_1b_t1_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_b_single_2b_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1b_t1_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_b_single_2b_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_1b_t2_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_b_single_2b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t2_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_1b_t2_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_1b_t2_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      compute_b_single_2b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_b_single_2b_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t1_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_1b_t1_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_1b_t2_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_1b_t1_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+    attributes:
+      b_single_2b_instance_name:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.b_single_2b_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -8354,4 +10051,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 3dacbb2..594a544 100644 (file)
@@ -1544,6 +1544,28 @@ topology_template:
           capability: tosca.capabilities.network.Linkable
           node: nested_network
           relationship: tosca.relationships.network.LinksTo
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     1c1_t2_port_12:
       type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
       properties:
@@ -1677,6 +1699,28 @@ topology_template:
           capability: tosca.capabilities.network.Linkable
           node: nested_network
           relationship: tosca.relationships.network.LinksTo
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     1c1_t2_port_11:
       type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
       properties:
index 0477fc3..da6640c 100644 (file)
@@ -185,6 +185,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: test_nested_no_compute
           relationship: tosca.relationships.DependsOn
+      - dependency_server_main_ps_1b_ps_server_main_1b:
+          capability: tosca.capabilities.Node
+          node: test_nested_no_compute
+          relationship: tosca.relationships.DependsOn
     test_nested1Level_duplicate_same_file:
       type: org.openecomp.resource.abstract.nodes.heat.nested1
       directives:
@@ -259,6 +263,14 @@ topology_template:
           capability: tosca.capabilities.Node
           node: test_nested_no_compute
           relationship: tosca.relationships.DependsOn
+      - dependency_server_main_1c1_cmaui_2_cmaui_1c1_main:
+          capability: tosca.capabilities.Node
+          node: test_nested_no_compute
+          relationship: tosca.relationships.DependsOn
+      - dependency_server_main_1c1_cmaui_1_cmaui_1c1_main:
+          capability: tosca.capabilities.Node
+          node: test_nested_no_compute
+          relationship: tosca.relationships.DependsOn
     test_nested_pattern_4_main_0:
       type: org.openecomp.resource.abstract.nodes.heat.pd_server_pattern4
       directives:
@@ -287,10 +299,28 @@ topology_template:
           floating_ip_count_required:
             is_required: false
       requirements:
-      - dependency:
+      - dependency_server_pd_pattern4:
           capability: tosca.capabilities.Node
-          node: test_nested_no_compute
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pd_pattern4:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pd_server_pattern4_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_pattern4_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pd_server_pattern4_port_2:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
           relationship: tosca.relationships.DependsOn
+      - link_pd_server_pattern4_port_2:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     test_nested1Level:
       type: org.openecomp.resource.abstract.nodes.heat.nested1
       directives:
@@ -319,4 +349,4 @@ topology_template:
       - test_nested_pattern_4_main_0
       - abstract_pd_server_main_1b_1
       - abstract_ps_server_main_1b_1
-      - abstract_cmaui_1c1_main_1
+      - abstract_cmaui_1c1_main_1
\ No newline at end of file
index c411944..4308e66 100644 (file)
@@ -130,6 +130,29 @@ topology_template:
             is_required: true
           floating_ip_count_required:
             is_required: false
+      requirements:
+      - dependency_server_pd_pattern4:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pd_pattern4:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pd_server_pattern4_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_pattern4_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pd_server_pattern4_port_2:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_pattern4_port_2:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     abstract_ps_server_main_1b:
       type: org.openecomp.resource.abstract.nodes.ps_server_main_1b
       directives:
@@ -2320,4 +2343,4 @@ topology_template:
       - dependency_test_nested_pattern_4_nested2
       dependency_test_nested3Level_test_nested2Level:
       - test_nested2Level
-      - dependency_test_nested3Level
+      - dependency_test_nested3Level
\ No newline at end of file
index e7feb50..4a129de 100644 (file)
@@ -149,6 +149,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: test_nested3Level
           relationship: tosca.relationships.DependsOn
+      - dependency_server_nested2_pd_1b_pd_server_nested2_1b:
+          capability: tosca.capabilities.Node
+          node: test_nested3Level
+          relationship: tosca.relationships.DependsOn
     test_nested_pattern_4_nested2:
       type: org.openecomp.resource.abstract.nodes.heat.pd_server_pattern4
       directives:
@@ -177,10 +181,28 @@ topology_template:
           floating_ip_count_required:
             is_required: false
       requirements:
-      - dependency:
+      - dependency_server_pd_pattern4:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pd_pattern4:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pd_server_pattern4_port_1:
           capability: tosca.capabilities.Node
-          node: test_resourceGroup
+          node: tosca.nodes.Root
           relationship: tosca.relationships.DependsOn
+      - link_pd_server_pattern4_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pd_server_pattern4_port_2:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_pattern4_port_2:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     test_nested3Level:
       type: org.openecomp.resource.abstract.nodes.heat.nested3
       directives:
@@ -226,6 +248,29 @@ topology_template:
             is_required: true
           floating_ip_count_required:
             is_required: false
+      requirements:
+      - dependency_server_pd_pattern4:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pd_pattern4:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pd_server_pattern4_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_pattern4_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pd_server_pattern4_port_2:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_pattern4_port_2:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     abstract_ps_server_nested2_1b:
       type: org.openecomp.resource.abstract.nodes.ps_server_nested2_1b
       directives:
@@ -334,6 +379,14 @@ topology_template:
           capability: tosca.capabilities.Node
           node: test_nested3Level
           relationship: tosca.relationships.DependsOn
+      - dependency_server_nested2_1c1_cmaui_2_cmaui_1c1_nested2:
+          capability: tosca.capabilities.Node
+          node: test_nested3Level
+          relationship: tosca.relationships.DependsOn
+      - dependency_server_nested2_1c1_cmaui_1_cmaui_1c1_nested2:
+          capability: tosca.capabilities.Node
+          node: test_nested3Level
+          relationship: tosca.relationships.DependsOn
   groups:
     nested2_group:
       type: org.openecomp.groups.heat.HeatStack
@@ -1498,4 +1551,4 @@ topology_template:
       - dependency
       dependency_pd_server_pattern4_port_1_test_nested_pattern_4_nested2:
       - test_nested_pattern_4_nested2
-      - dependency_pd_server_pattern4_port_1
+      - dependency_pd_server_pattern4_port_1
\ No newline at end of file
index 7983fe3..d06e2b7 100644 (file)
@@ -122,6 +122,29 @@ topology_template:
             is_required: true
           floating_ip_count_required:
             is_required: false
+      requirements:
+      - dependency_cmaui_port_7:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_cmaui_port_7:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_cmaui_port_8:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_cmaui_port_8:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_cmaui:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_cmaui:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
     abstract_sm_server:
       type: org.openecomp.resource.abstract.nodes.sm_server
       directives:
@@ -771,4 +794,4 @@ topology_template:
       - dependency_oam_server_oam_server_port
       dependency_server_sm:
       - abstract_sm_server
-      - dependency_sm_server
+      - dependency_sm_server
\ No newline at end of file
index 6d51056..04be425 100644 (file)
@@ -258,6 +258,29 @@ topology_template:
         port_pd_server_port_1_mac_requirements:
           mac_count_required:
             is_required: false
+      requirements:
+      - dependency_pd_server_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pd_server_port_2:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_port_2:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pd:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pd:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
     test_nested_no_compute:
       type: org.openecomp.resource.abstract.nodes.heat.nested-no-compute
       directives:
@@ -305,6 +328,29 @@ topology_template:
         port_pd_server_port_1_mac_requirements:
           mac_count_required:
             is_required: false
+      requirements:
+      - dependency_pd_server_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pd_server_port_2:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_port_2:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pd:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pd:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
     packet_external_network:
       type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
       properties:
@@ -521,4 +567,4 @@ topology_template:
       value:
         get_attribute:
         - abstract_osm_server_1c2_1
-        - osm_server_1c2_accessIPv4
+        - osm_server_1c2_accessIPv4
\ No newline at end of file
index 6edd5eb..049d11d 100644 (file)
@@ -242,6 +242,29 @@ topology_template:
         port_pd_server_port_1_mac_requirements:
           mac_count_required:
             is_required: false
+      requirements:
+      - dependency_pd_server_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pd_server_port_2:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_port_2:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pd:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pd:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
     abstract_pd_server_1b:
       type: org.openecomp.resource.abstract.nodes.pd_server_1b
       directives:
@@ -1666,4 +1689,4 @@ topology_template:
       - dependency
       dependency_server_1b_pd_2:
       - abstract_pd_server_1b
-      - dependency_pd_server_1b
+      - dependency_pd_server_1b
\ No newline at end of file
index d8db407..a9e42b4 100644 (file)
@@ -5,6 +5,637 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      p1:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      p2:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      pd_server_names:
+        type: list
+        description: PD server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_2_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      pd_server_flavor:
+        type: string
+        description: Flavor for PD server
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_2_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_port_2_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      availability_zone_0:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      net:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_2_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_port_2_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      pd_server_ips:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      ps_server_flavor:
+        type: string
+        description: Flavor for PS server
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_port_2_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_2_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pd_server_image:
+        type: string
+        description: Flavor for PD server
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_port_2_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+    attributes:
+      pattern4_attr_1:
+        type: string
+        description: pattern4_attr_1_value
+        status: SUPPORTED
+    requirements:
+    - dependency_pd_server_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pd_server_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_pd_server_port_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pd_server_port_2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_pd:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pd:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      disk.iops_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pd_server_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pd_server_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pd_server_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pd_server_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pd:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pd_server_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pd_server_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pd_server_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pd_server_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pd_server_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pd_server_port_2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pd_server_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pd_server_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pd_server_port_2:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pd_server_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      cpu.delta_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pd:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pd_server_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pd_server_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pd_server_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pd_server_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pd_server_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pd_server_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pd:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pd:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pd:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pd_server_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pd_server_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pd:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_pd:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_ps_server_b_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_ps_server_b_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps_server_b_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_ps_server_b_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_b_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_b_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_ps_server_b_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_b_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_b_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_ps_server_b_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_b_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.oam_server_1c2:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -430,6 +1061,95 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.oam_server_1c2:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_oam_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_oam_server_1c2_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_oam_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_oam_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_oam_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_oam_server_1c2_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_oam_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_oam_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+    attributes:
+      oam_server_1c2_accessIPv4:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.heat.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1397,6 +2117,176 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pd_server_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_pd_server_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_b_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_b_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd_server_b_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pd_server_b_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_b_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_b_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_b_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_b_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_b_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_b_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd_server_b_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+  org.openecomp.resource.vfc.nodes.heat.cmaui_1c1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_cmaui_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_cmaui_1c1_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      compute_cmaui_1c1_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.heat.nested-no-compute:
     derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
     properties:
@@ -4671,4 +5561,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 1602a81..4b52dd0 100644 (file)
@@ -61,6 +61,29 @@ topology_template:
         port_pd_server_port_1_mac_requirements:
           mac_count_required:
             is_required: false
+      requirements:
+      - dependency_pd_server_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pd_server_port_2:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pd_server_port_2:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pd:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pd:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
     test_nested_no_compute:
       type: org.openecomp.resource.abstract.nodes.heat.nested-no-compute
       directives:
index 92ea0fa..ae6167d 100644 (file)
@@ -564,6 +564,565 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_pcm_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_pcm:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.incoming.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      memory.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
   org.openecomp.resource.abstract.nodes.heat.pcm_server_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1418,3 +1977,40 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.compute:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_compute_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_compute_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_compute_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
\ No newline at end of file
index f57796a..ccafac7 100644 (file)
@@ -91,6 +91,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_pcm_001:
       type: org.openecomp.resource.abstract.nodes.heat.pcm_server_1
       directives:
@@ -128,6 +151,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     compute_port_0:
       type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
       properties:
index 674b1e8..17124e4 100644 (file)
@@ -1058,10 +1058,21 @@ topology_template:
         vson_vm_names:
         - get_input: vson_clm_name_0
       requirements:
-      - dependency:
+      - dependency_vson_server:
           capability: tosca.capabilities.Node
-          node: oam_net_security_group
+          node: tosca.nodes.Root
           relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_mgt_group:
       type: org.openecomp.resource.abstract.nodes.heat.vson_vm_2
       directives:
@@ -1126,6 +1137,22 @@ topology_template:
           get_input: oam_net_id
         vson_vm_names:
         - get_input: vson_mgt_name_0
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_dbs_volume_1:
       type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
       properties:
@@ -1208,6 +1235,22 @@ topology_template:
           get_input: oam_net_id
         vson_vm_names:
         - get_input: vson_dbc_name_0
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_dbs_volume_0:
       type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
       properties:
@@ -1287,6 +1330,22 @@ topology_template:
           get_input: oam_net_id
         vson_vm_names:
         - get_input: vson_clm_name_0
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_dcl_volume_2:
       type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
       properties:
@@ -1405,6 +1464,22 @@ topology_template:
           get_input: oam_net_id
         vson_vm_names:
         - get_input: vson_mdr_name_0
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_dbs_group:
       type: org.openecomp.resource.abstract.nodes.heat.vson_vm_1
       directives:
@@ -1477,6 +1552,22 @@ topology_template:
         vson_vm_names:
         - get_input: vson_dbs_name_0
         - get_input: vson_dbs_name_1
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_app_group:
       type: org.openecomp.resource.abstract.nodes.heat.vson_vm
       directives:
@@ -1551,6 +1642,22 @@ topology_template:
           get_input: oam_net_id
         vson_vm_names:
         - get_input: vson_app_name_0
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     oam_net_security_group:
       type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
       properties:
@@ -1777,6 +1884,22 @@ topology_template:
           get_input: oam_net_id
         vson_vm_names:
         - get_input: vson_dbg_name_0
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_cll_group:
       type: org.openecomp.resource.abstract.nodes.heat.vson_vm_1
       directives:
@@ -1852,6 +1975,22 @@ topology_template:
         - get_input: vson_cll_name_0
         - get_input: vson_cll_name_1
         - get_input: vson_cll_name_2
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_app_volume_0:
       type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
       properties:
@@ -1930,6 +2069,22 @@ topology_template:
           get_input: oam_net_id
         vson_vm_names:
         - get_input: vson_mon_name_0
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     vson_dcl_group:
       type: org.openecomp.resource.abstract.nodes.heat.vson_vm_1
       directives:
@@ -2006,6 +2161,22 @@ topology_template:
         - get_input: vson_dcl_name_0
         - get_input: vson_dcl_name_1
         - get_input: vson_dcl_name_2
+      requirements:
+      - dependency_vson_server:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_vson_server:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_vson_server_oam_net_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
   groups:
     module_5_vson_dbg_volume_group:
       type: org.openecomp.groups.heat.HeatStack
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..cdfb18b
--- /dev/null
@@ -0,0 +1,35 @@
+{
+  "name": "vEP_JSA_Net",
+  "description": "Version 2.0 02-09-2016 (Authors: John Doe, user PROD)",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "base_cscf.yaml",
+      "type": "HEAT",
+      "data": [
+        {
+          "file": "base_cscf.env",
+          "type": "HEAT_ENV"
+        }
+      ]
+    },
+    {
+      "file": "base_cscf_volume.yaml",
+      "type": "HEAT_VOL",
+      "data": [
+        {
+          "file": "base_cscf_volume.env",
+          "type": "HEAT_ENV"
+        }
+      ]
+    },
+    {
+      "file": "nested_cscf.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "nested_tdcore.yaml",
+      "type": "HEAT"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.env
new file mode 100644 (file)
index 0000000..5439cc5
--- /dev/null
@@ -0,0 +1,406 @@
+## Copyright:: Nokia Corporation 2017
+## Note: Nokia VM HOT file for CFX-5000 IMS17.0
+## Name: "base_cscf.env"
+## History
+##     Date: 23 Aug 2017 
+##             1. corrected the flavour 
+##     2. internal ip range  to match the TPD for all VMs
+##     3. number of internal ip assignment in list 
+##                             a) cscf_internal_zone_0_ips
+##                             b) cscf_internal_zone_1_ips
+##                             c) cscf_internal_zone_0_v6_ips
+##                             d) cscf_internal_zone_1_v6_ips
+##                             e) tdcore_internal_zone_0_ips
+##                             f) tdcore_internal_zone_1_ips
+##              to match the count of cscf and tdcore.
+##     
+## Kilo Version
+
+parameters:
+# PSEUDO CONSTANTS
+# -----------------------------------------------------------------------------
+  vcscf_release: "17.0"
+  vcscf_name_delimeter: "_"
+  vcscf_internal_network_mtu: 1500
+
+  oam_image_name: IMS_17_0_OPENSTACK_OAM_1701400.000
+  cif_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000
+  lbd_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000
+  cdi_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000
+  cscf_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000
+  tdcore_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000
+
+  oam_flavor_name: ND.c4r32d30
+  cscf_flavor_name: ND.c8r16d38
+  cif_flavor_name: ND.c4r16d38
+  lbd_flavor_name: ND.c4r16d38
+  tdcore_flavor_name: ND.c4r16d38
+  cdi_flavor_name: ND.c4r8d38
+  
+
+  # vCSCF VM Counts
+
+  cscf_zone_0_count: 19
+  cscf_zone_1_count: 18
+  tdcore_zone_0_count: 4
+  tdcore_zone_1_count: 4
+
+
+  # vCSCF Internal Network
+
+  vcscf_internal_netmask: 255.255.255.0
+  vcscf_internal_network_cidr: 192.168.210.0/24
+  vcscf_internal_network_v6_cidr: 2a00:9a00:a000:1190:0:1:1:2b00/120
+  vcscf_internal_dpdk_network_cidr: 192.168.211.0/24
+  
+  # OAM Internal network
+
+  oam_internal_vip_0: 192.168.210.3
+  oam_internal_ip_0: 192.168.210.136
+  oam_internal_ip_1: 192.168.210.137
+  oam_internal_ip_2: 192.168.210.138
+
+  # CSCF VM Internal Network
+
+  cscf_internal_zone_0_ips:
+    - 192.168.210.16
+    - 192.168.210.18
+    - 192.168.210.20
+    - 192.168.210.22
+    - 192.168.210.24
+    - 192.168.210.26
+    - 192.168.210.28
+    - 192.168.210.30
+    - 192.168.210.32
+    - 192.168.210.34
+    - 192.168.210.36
+    - 192.168.210.38
+    - 192.168.210.40
+    - 192.168.210.42
+    - 192.168.210.44
+    - 192.168.210.46
+    - 192.168.210.48
+    - 192.168.210.50
+    - 192.168.210.52
+
+  cscf_internal_zone_1_ips:
+    - 192.168.210.17
+    - 192.168.210.19
+    - 192.168.210.21
+    - 192.168.210.23
+    - 192.168.210.25
+    - 192.168.210.27
+    - 192.168.210.29
+    - 192.168.210.31
+    - 192.168.210.33
+    - 192.168.210.35
+    - 192.168.210.37
+    - 192.168.210.39
+    - 192.168.210.41
+    - 192.168.210.43
+    - 192.168.210.45
+    - 192.168.210.47
+    - 192.168.210.49
+    - 192.168.210.51
+  cscf_internal_zone_0_v6_ips:
+    - "2a00:9a00:a000:1190:0:1:1:2b10"
+    - "2a00:9a00:a000:1190:0:1:1:2b12"
+    - "2a00:9a00:a000:1190:0:1:1:2b14"
+    - "2a00:9a00:a000:1190:0:1:1:2b16"
+    - "2a00:9a00:a000:1190:0:1:1:2b18"
+    - "2a00:9a00:a000:1190:0:1:1:2b1a"
+    - "2a00:9a00:a000:1190:0:1:1:2b1c"
+    - "2a00:9a00:a000:1190:0:1:1:2b1e"
+    - "2a00:9a00:a000:1190:0:1:1:2b20"
+    - "2a00:9a00:a000:1190:0:1:1:2b22"
+    - "2a00:9a00:a000:1190:0:1:1:2b24"
+    - "2a00:9a00:a000:1190:0:1:1:2b26"
+    - "2a00:9a00:a000:1190:0:1:1:2b28"
+    - "2a00:9a00:a000:1190:0:1:1:2b2a"
+    - "2a00:9a00:a000:1190:0:1:1:2b2c"
+    - "2a00:9a00:a000:1190:0:1:1:2b2e"
+    - "2a00:9a00:a000:1190:0:1:1:2b30"
+    - "2a00:9a00:a000:1190:0:1:1:2b32"
+    - "2a00:9a00:a000:1190:0:1:1:2b34"
+
+  cscf_internal_zone_1_v6_ips:
+    - "2a00:9a00:a000:1190:0:1:1:2b11"
+    - "2a00:9a00:a000:1190:0:1:1:2b13"
+    - "2a00:9a00:a000:1190:0:1:1:2b15"
+    - "2a00:9a00:a000:1190:0:1:1:2b17"
+    - "2a00:9a00:a000:1190:0:1:1:2b19"
+    - "2a00:9a00:a000:1190:0:1:1:2b1b"
+    - "2a00:9a00:a000:1190:0:1:1:2b1d"
+    - "2a00:9a00:a000:1190:0:1:1:2b1f"
+    - "2a00:9a00:a000:1190:0:1:1:2b21"
+    - "2a00:9a00:a000:1190:0:1:1:2b23"
+    - "2a00:9a00:a000:1190:0:1:1:2b25"
+    - "2a00:9a00:a000:1190:0:1:1:2b27"
+    - "2a00:9a00:a000:1190:0:1:1:2b29"
+    - "2a00:9a00:a000:1190:0:1:1:2b2b"
+    - "2a00:9a00:a000:1190:0:1:1:2b2d"
+    - "2a00:9a00:a000:1190:0:1:1:2b2f"
+    - "2a00:9a00:a000:1190:0:1:1:2b31"
+    - "2a00:9a00:a000:1190:0:1:1:2b33"
+
+  # TDCore VM Internal Network
+  
+  tdcore_internal_zone_0_ips:
+    - 192.168.210.8
+    - 192.168.210.10
+    - 192.168.210.12
+    - 192.168.210.14
+
+  tdcore_internal_zone_1_ips:
+    - 192.168.210.9
+    - 192.168.210.11
+    - 192.168.210.13
+    - 192.168.210.15
+  # TDCore VM DPDK Internal Network
+  
+  tdcore_dpdk_zone_0_ips:
+    - 192.168.211.8
+    - 192.168.211.10
+    - 192.168.211.12
+    - 192.168.211.14
+
+  tdcore_dpdk_zone_1_ips:
+    - 192.168.211.9
+    - 192.168.211.11
+    - 192.168.211.13
+    - 192.168.211.15
+
+  # CIF VM Internal Network
+  
+  cif_internal_ip_0: 192.168.210.1
+  cif_internal_ip_1: 192.168.210.2
+  cif_internal_vip_0: 192.168.210.150
+  cif_internal_v6_ip_0: "2a00:9a00:a000:1190:0:1:1:2b04"
+  cif_internal_v6_ip_1: "2a00:9a00:a000:1190:0:1:1:2b05"
+
+  # LBD (l2TD) VM Internal Network
+
+  lbd_internal_ip_0: 192.168.210.4
+  lbd_internal_ip_1: 192.168.210.5
+
+  # LBD (l2TD) VM DPDK Internal Network
+
+  lbd_internal_dpdk_ip_0: 192.168.211.1
+  lbd_internal_dpdk_ip_1: 192.168.211.2
+  lbd_internal_dpdk_vip_0: 192.168.211.181
+
+  # CDI VM Internal Network
+
+  cdi_internal_ip_0: 192.168.210.139
+  cdi_internal_ip_1: 192.168.210.140
+  
+
+  cdi_internal_v6_ip_0: "2a00:9a00:a000:1190:0:1:1:2b8b"
+  cdi_internal_v6_ip_1: "2a00:9a00:a000:1190:0:1:1:2b8c"
+  cdi_internal_v6_vip_0: "2a00:9a00:a000:1190:0:1:1:2b8d"
+
+# SITE SPECIFIC
+# -----------------------------------------------------------------------------
+#  oam_volume_id_0: f0781f87-671c-40c0-82ce-4d8c0531fbc1
+#  oam_volume_id_1: 53a1d529-47a1-4722-bab0-d502603eef14
+#  cif_volume_id_0: d2262ef6-7bac-4c4e-abfb-fd78e3f0cc0b
+#  cif_volume_id_1: b1f6f2bc-6774-4c66-88ef-cb225d216bf0
+#
+#
+#------------------------------------
+#  Preload Sheet
+#------------------------------------
+#  # Network IDs
+#  oam_net_id: LAN1
+#  ims_core_net_id: ipv6_1256
+#  ims_li_v6_net_id: ipv6_1255
+#
+#  # instance availability zones for 1+1 pairs
+#  availability_zone_0: zone1
+#  availability_zone_1: zone2
+#
+#  cif_oam_ip_0: 192.168.1.26
+#  cif_oam_ip_1: 192.168.1.27
+#
+# Tag Value
+#  cif_oam_vip_0: 192.168.1.28
+#
+#  cif_ims_core_v6_ip_0: "2a00:8a00:a000:4000::308"
+#  cif_ims_core_v6_ip_1: "2a00:8a00:a000:4000::309"
+#  cif_ims_core_v6_vip_0: "2a00:8a00:a000:4000::310"
+#
+#  # Seperated Interface for LI-X1 (eth3)
+#  cif_oam_ip_2: 192.168.1.29
+#  cif_oam_ip_3: 192.168.1.30
+#
+# Tag Value
+#  cif_oam_vip_1: 192.168.1.31
+#
+#  # Seperated Interface for LI-X2 (eth4)
+#
+#  cif_ims_li_v6_ip_0: "2a00:8a00:a000:4000::284"
+#  cif_ims_li_v6_ip_1: "2a00:8a00:a000:4000::285"
+#  cif_ims_li_v6_vip_0: "2a00:8a00:a000:4000::286"
+#
+#
+#  lbd_ims_core_v6_ip_0: "2a00:8a00:a000:4000::311"
+#  lbd_ims_core_v6_ip_1: "2a00:8a00:a000:4000::312"
+#  lbd_ims_core_v6_vip_0: "2a00:8a00:a000:4000::313"
+#
+#
+#  cdi_ims_core_v6_ip_0: "2a00:8a00:a000:4000::314"
+#  cdi_ims_core_v6_ip_1: "2a00:8a00:a000:4000::315"
+#  cdi_ims_core_v6_vip_0: "2a00:8a00:a000:4000::316"
+#
+#  oam_name_0: cscf0011vm001oam001
+#  oam_name_1: cscf0011vm002oam001
+#  oam_name_2: cscf0011vm003oam001
+#  cif_name_0: cscf0011vm004cif001
+#  cif_name_1: cscf0011vm005cif001
+#  cdi_name_0: cscf0011vm006cdi001
+#  cdi_name_1: cscf0011vm007cdi001
+#  lbd_name_0: cscf0011vm008lbd001
+#  lbd_name_1: cscf0011vm009lbd001
+#
+#------------------------------------
+#  Tag values
+#------------------------------------
+#
+#  vcscf_dn: DN1
+#  vcscf_du: DU1
+#  vcscf_cmrepo_address: 10.111.12.71
+#  vcscf_swrepo_address: 10.111.12.71
+#  vcscf_dns_address: 10.111.12.67
+#
+#  vnf_name: CSCF0001
+#  vnf_id: CSCF0001
+#  vf_module_name: CSCF0001
+#  vf_module_id: CSCF0001
+#
+#  vcscf_oam_netmask: 255.255.255.0
+#  vcscf_default_gateway: 192.168.1.1
+#
+#  oam_oam_vip_0: 192.168.1.21
+#  oam_oam_ip_0: 192.168.1.23
+#  oam_oam_ip_1: 192.168.1.24
+#  oam_oam_ip_2: 192.168.1.25
+#
+#  tdcore_zone_0_names:
+#    - cscf0011vm101sip001
+#    - cscf0011vm103sip001
+#    - cscf0011vm105sip001
+#    - cscf0011vm107sip001
+#
+#  tdcore_zone_1_names:
+#    - cscf0011vm102sip001
+#    - cscf0011vm104sip001
+#    - cscf0011vm106sip001
+#    - cscf0011vm108sip001
+#
+#  cscf_zone_0_names:
+#    - cscf0011vm201scf001
+#    - cscf0011vm203scf001
+#    - cscf0011vm205scf001
+#    - cscf0011vm207scf001
+#    - cscf0011vm209scf001
+#    - cscf0011vm211scf001
+#    - cscf0011vm213scf001
+#    - cscf0011vm215scf001
+#    - cscf0011vm217scf001
+#    - cscf0011vm219scf001
+#    - cscf0011vm221scf001
+#    - cscf0011vm223scf001
+#    - cscf0011vm225scf001
+#    - cscf0011vm227scf001
+#    - cscf0011vm229scf001
+#    - cscf0011vm231scf001
+#    - cscf0011vm233scf001
+#    - cscf0011vm235scf001
+#    - cscf0011vm237scf001
+#
+#  cscf_zone_1_names:
+#    - cscf0011vm202scf001
+#    - cscf0011vm204scf001
+#    - cscf0011vm206scf001
+#    - cscf0011vm208scf001
+#    - cscf0011vm210scf001
+#    - cscf0011vm212scf001
+#    - cscf0011vm214scf001
+#    - cscf0011vm216scf001
+#    - cscf0011vm218scf001
+#    - cscf0011vm220scf001
+#    - cscf0011vm222scf001
+#    - cscf0011vm224scf001
+#    - cscf0011vm226scf001
+#    - cscf0011vm228scf001
+#    - cscf0011vm230scf001
+#    - cscf0011vm232scf001
+#    - cscf0011vm234scf001
+#    - cscf0011vm236scf001
+#
+#  # Below value should be taken from CMRepo after parsing the TPD or the below names should be used while parsing TPD as input
+#
+#  oam_uuid_0:  cscf0011vm001oam001
+#  oam_uuid_1:  cscf0011vm002oam001
+#  oam_uuid_2:  cscf0011vm003oam001
+#  cif_uuid_0:  cscf0011vm004cif001
+#  cif_uuid_1:  cscf0011vm005cif001
+#  lbd_uuid_0:  cscf0011vm006cdi001
+#  lbd_uuid_1:  cscf0011vm007cdi001
+#  cdi_uuid_0:  cscf0011vm008lbd001
+#  cdi_uuid_1:  cscf0011vm009lbd001
+#
+#  tdcore_zone_0_uuids:
+#    - cscf0011vm101sip001
+#    - cscf0011vm103sip001
+#    - cscf0011vm105sip001
+#    - cscf0011vm107sip001
+#
+#  tdcore_zone_1_uuids:
+#    - cscf0011vm102sip001
+#    - cscf0011vm104sip001
+#    - cscf0011vm106sip001
+#    - cscf0011vm108sip001
+#
+#  cscf_zone_0_uuids:
+#    - cscf0011vm201scf001
+#    - cscf0011vm203scf001
+#    - cscf0011vm205scf001
+#    - cscf0011vm207scf001
+#    - cscf0011vm209scf001
+#    - cscf0011vm211scf001
+#    - cscf0011vm213scf001
+#    - cscf0011vm215scf001
+#    - cscf0011vm217scf001
+#    - cscf0011vm219scf001
+#    - cscf0011vm221scf001
+#    - cscf0011vm223scf001
+#    - cscf0011vm225scf001
+#    - cscf0011vm227scf001
+#    - cscf0011vm229scf001
+#    - cscf0011vm231scf001
+#    - cscf0011vm233scf001
+#    - cscf0011vm235scf001
+#    - cscf0011vm237scf001
+#
+#  cscf_zone_1_uuids:
+#    - cscf0011vm202scf001
+#    - cscf0011vm204scf001
+#    - cscf0011vm206scf001
+#    - cscf0011vm208scf001
+#    - cscf0011vm210scf001
+#    - cscf0011vm212scf001
+#    - cscf0011vm214scf001
+#    - cscf0011vm216scf001
+#    - cscf0011vm218scf001
+#    - cscf0011vm220scf001
+#    - cscf0011vm222scf001
+#    - cscf0011vm224scf001
+#    - cscf0011vm226scf001
+#    - cscf0011vm228scf001
+#    - cscf0011vm230scf001
+#    - cscf0011vm232scf001
+#    - cscf0011vm234scf001
+#    - cscf0011vm236scf001
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.yaml
new file mode 100644 (file)
index 0000000..f907f28
--- /dev/null
@@ -0,0 +1,2045 @@
+## Copyright:: Nokia Corporation 2017
+## Note: Nokia VM HOT file for CFX
+## Name: "base_cscf.yaml"
+## Date: 20 Mar 2017
+## Kilo Version
+heat_template_version: 2015-04-30
+
+description: >
+  CFX-5000 N+K VNF HOT template for AT&T.
+
+parameters:
+
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+
+  vf_module_name:
+    type: string
+    description: Unique name for this VF Module instance
+
+  vf_module_id:
+    type: string
+    description: Unique ID for this VF Module instance
+
+  cif_volume_id_0:
+        type: string
+        description: size of the cinder volume used for cif
+  cif_volume_id_1:
+        type: string
+        description: size of the cinder volume used for cif
+
+  oam_volume_id_0:
+        type: string
+        description: size of the cinder volume used for oam
+  oam_volume_id_1:
+        type: string
+        description: size of the cinder volume used for oam
+
+  oam_net_id:
+    type: string
+    description: Name/UUID of OAM network
+
+  ims_core_net_id:
+    type: string
+    description: Name/UUID of Core network
+
+  ims_li_v6_net_id:
+    type: string
+    description: Name/UUID of V6 LI network
+
+  availability_zone_0:
+    type: string
+    description: >
+      Availability zone  where the first node of a pair will be deployed.
+      Availability zone 0 and 1 can have same zone name if single zone is used.
+
+  availability_zone_1:
+    type: string
+    description: >
+      Availability zone  where the second node of a pair will be deployed.
+      Availability zone 0 and 1 can have same zone name if single zone is used.
+
+  oam_image_name:
+    type: string
+    description: OAM VM image name
+
+  cif_image_name:
+    type: string
+    description: CSCF CIF VM image name
+
+  lbd_image_name:
+    type: string
+    description: CSCF LBD VM image name
+
+  cdi_image_name:
+    type: string
+    description: CDI VM image name
+
+  cscf_image_name:
+    type: string
+    description: CSCF server VM image name
+
+  tdcore_image_name:
+    type: string
+    description: TDCORE VM image name
+
+  oam_flavor_name:
+    type: string
+    description: OAM VM flavor
+
+  cscf_flavor_name:
+    type: string
+    description: CSCF server VM flavor
+
+  cif_flavor_name:
+    type: string
+    description: CSCF CIF VM flavor
+
+  lbd_flavor_name:
+    type: string
+    description: CSCF LBD VM flavor
+
+  tdcore_flavor_name:
+    type: string
+    description: TDCORE VM flavor
+
+  cdi_flavor_name:
+    type: string
+    description: CDI VM flavor
+
+  cscf_zone_0_count:
+    type: number
+    description: >
+      Number of CSCF to be deployed on zone 0.
+      This parameter is used to scale the cscf instances.
+    constraints:
+        - range: { min: 0, max: 120 }
+
+  cscf_zone_1_count:
+    type: number
+    description: >
+      Number of CSCF to be deployed on zone 1.
+      This parameter is used to scale the cscf instances.
+    constraints:
+        - range: { min: 0, max: 120 }
+
+  tdcore_zone_0_count:
+    type: number
+    description: >
+      Number of TD Core VMs to be deployed zone 0.
+      This parameter is used to scale the TD Core instances.
+    constraints:
+        - range: { min: 0, max: 8 }
+
+  tdcore_zone_1_count:
+    type: number
+    description: >
+      Number of TD Core VMs to be deployed zone 1.
+      This parameter is used to scale the TD Core instances.
+    constraints:
+        - range: { min: 0, max: 8 }
+
+  vcscf_internal_netmask:
+    type: string
+    description: Netmask for Internal LAN
+
+  vcscf_internal_network_cidr:
+    type: string
+    description: CIDR for for Internal LAN
+
+  vcscf_internal_network_v6_cidr:
+    type: string
+    description: CIDR for for Internal LAN v6
+
+  vcscf_internal_dpdk_network_cidr:
+    type: string
+    description: CIDR for for Internal LAN DPDK
+
+  vcscf_oam_netmask:
+    type: string
+    description: Netmask for OAM LAN
+
+  vcscf_default_gateway:
+    type: string
+    description: Default gateway for OAM LAN
+
+  oam_oam_vip_0:
+    type: string
+    description: OAM CIPA IP of OAM unit
+
+  oam_oam_ip_0:
+    type: string
+    description: OAM IP of OAM01 instance
+
+  oam_oam_ip_1:
+    type: string
+    description: OAM IP of OAM02 instance
+
+  oam_oam_ip_2:
+    type: string
+    description: OAM IP of OAM03 instance
+
+  oam_internal_vip_0:
+    type: string
+    description: Internal CIPA IP of OAM unit
+
+  oam_internal_ip_0:
+    type: string
+    description: Internal IP of OAM01 instance
+
+  oam_internal_ip_1:
+    type: string
+    description: Internal IP of OAM01 instance
+
+  oam_internal_ip_2:
+    type: string
+    description: Internal IP of OAM01 instance
+
+  cscf_internal_zone_0_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan IPs for CSCF instances on zone 0"
+
+  cscf_internal_zone_0_v6_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan v6 IPs for CSCF instances on zone 0"
+
+  cscf_internal_zone_1_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan IPs for CSCF instances on zone 1"
+
+  cscf_internal_zone_1_v6_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan v6 IPs for CSCF instances on zone 1"
+
+  tdcore_internal_zone_0_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan IPs for TDCORE instances on zone 0"
+
+  tdcore_dpdk_zone_0_ips:
+    type: comma_delimited_list
+    description: "List of DPDK Lan IPs for TDCORE instances on zone 0"
+
+  tdcore_internal_zone_1_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan IPs for TDCORE instances on zone 1"
+
+  tdcore_dpdk_zone_1_ips:
+    type: comma_delimited_list
+    description: "List of DPDK Lan IPs for TDCORE instances on zone 1"
+
+  cif_internal_ip_0:
+    type: string
+    description: Internal IP of CIF01 instance
+
+  cif_internal_ip_1:
+    type: string
+    description: Internal IP of CIF02 instance
+
+  cif_internal_vip_0:
+    type: string
+    description: Internal CIPA IP of CIF
+
+  cif_internal_v6_ip_0:
+    type: string
+    description: Internal IP v6 of CIF01 instance
+
+  cif_internal_v6_ip_1:
+    type: string
+    description: Internal IP v6 of CIF02 instance
+
+  cif_oam_ip_0:
+    type: string
+    description: OAM IP of CIF01 instance
+
+  cif_oam_ip_1:
+    type: string
+    description: OAM IP of CIF02 instance
+
+  cif_oam_vip_0:
+    type: string
+    description: OAM CIPA IP of CIF
+
+  cif_ims_core_v6_ip_0:
+    type: string
+    description: IMS CORE v6 IP of CIF01 instance
+
+  cif_ims_core_v6_ip_1:
+    type: string
+    description: IMS CORE v6 IP of CIF02 instance
+
+  cif_ims_core_v6_vip_0:
+    type: string
+    description: IMS CORE v6 CIPA IP of CIF
+
+  cif_oam_ip_2:
+    type: string
+    description: OAM (LI-X1) v4 IP of CIF01 instance
+    
+  cif_oam_ip_3:
+    type: string
+    description: OAM (LI-X1) v4 IP of CIF02 instance
+
+  cif_oam_vip_1:
+    type: string
+    description: OAM (LI-X1) v4 CIPA of CIF
+    
+  cif_ims_li_v6_ip_0:
+    type: string
+    description: IMS LI v6 IP of CIF01 instance
+
+  cif_ims_li_v6_ip_1:
+    type: string
+    description: IMS LI v6 IP of CIF02 instance
+
+  cif_ims_li_v6_vip_0:
+    type: string
+    description: IMS LI CIPA v6 IP of CIF
+
+  lbd_internal_ip_0:
+    type: string
+    description: Internal IP of LBD01 instance
+
+  lbd_internal_ip_1:
+    type: string
+    description: Internal IP of LBD02 instance
+
+  lbd_internal_dpdk_ip_0:
+    type: string
+    description: Internal DPDK IP of LBD01 instance
+
+  lbd_internal_dpdk_ip_1:
+    type: string
+    description: Internal DPDK IP of LBD02 instance
+
+  lbd_internal_dpdk_vip_0:
+    type: string
+    description: Internal DPDK CIP IP of LBD
+
+  lbd_ims_core_v6_ip_0:
+    type: string
+    description: IMS CORE v6 IP of LBD01 instance
+
+  lbd_ims_core_v6_ip_1:
+    type: string
+    description: IMS CORE v6 IP of LBD02 instance
+
+  lbd_ims_core_v6_vip_0:
+    type: string
+    description: IMS CORE CIPA v6 IP of LBD
+
+  cdi_internal_ip_0:
+    type: string
+    description: Internal IP of CDI01 instance
+
+  cdi_internal_ip_1:
+    type: string
+    description: Internal IP of CDI02 instance
+
+  cdi_internal_v6_ip_0:
+    type: string
+    description: Internal v6 IP of CDI01 instance
+
+  cdi_internal_v6_ip_1:
+    type: string
+    description: Internal v6 IP of CDI02 instance
+
+  cdi_internal_v6_vip_0:
+    type: string
+    description: Internal v6 CIPA IP of CDI
+
+  cdi_ims_core_v6_ip_0:
+    type: string
+    description: IMS CORE LAN v6 IP of CDI01 instance
+
+  cdi_ims_core_v6_ip_1:
+    type: string
+    description: IMS CORE LAN v6 IP of CDI02 instance
+
+  cdi_ims_core_v6_vip_0:
+    type: string
+    description: IMS CORE LAN CIPA v6 IP of CDI
+
+  vcscf_name_delimeter:
+    type: string
+    description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)'
+    constraints:
+      - allowed_values: [ '-', '', '_', '.']
+
+  oam_name_0:
+    type: string
+    description: OAM01 instance name
+
+  oam_name_1:
+    type: string
+    description: OAM02 instance name
+
+  oam_name_2:
+    type: string
+    description: OAM03 instance name
+
+  cif_name_0:
+    type: string
+    description: CIF01 instance name
+
+  cif_name_1:
+    type: string
+    description: CIF02 instance name
+
+  lbd_name_0:
+    type: string
+    description: LBD01 instance name
+
+  lbd_name_1:
+    type: string
+    description: LBD02 instance name
+
+  cdi_name_0:
+    type: string
+    description: CDI01 instance name
+
+  cdi_name_1:
+    type: string
+    description: CDI02 instance name
+
+  cscf_zone_0_names:
+    type: comma_delimited_list
+    description: "List of instance names for CSCF instances on zone 0"
+
+  cscf_zone_1_names:
+    type: comma_delimited_list
+    description: "List of instance names for CSCF instances on zone 1"
+
+  tdcore_zone_0_names:
+    type: comma_delimited_list
+    description: "List of instance names for TDCORE instances on zone 0"
+
+  tdcore_zone_1_names:
+    type: comma_delimited_list
+    description: "List of instance names for TDCORE instances on zone 1"
+
+  vcscf_release:
+    type: string
+    description: "IMS release"
+
+  vcscf_dn:
+    type: string
+    description: "DN name"
+
+  vcscf_du:
+    type: string
+    description: "DU name"
+
+  vcscf_cmrepo_address:
+    type: string
+    description: "CMRepo IP or FQDN"
+
+  vcscf_swrepo_address:
+    type: string
+    description: SWRepo IP or FQDN
+
+  vcscf_dns_address:
+    type: string
+    description: DNS server IP
+
+  vcscf_internal_network_mtu:
+    type: number
+    description: MTU for internal network interface (eth0)
+    constraints:
+      - range: { min: 1000, max: 9100 }
+
+  oam_uuid_0:
+    type: string
+    description: UUID generated by cmrepo for OAM01
+
+  oam_uuid_1:
+    type: string
+    description: UUID generated by cmrepo for OAM02
+
+  oam_uuid_2:
+    type: string
+    description: UUID generated by cmrepo for OAM03
+
+  cif_uuid_0:
+    type: string
+    description: UUID generated by cmrepo for CIF01
+
+  cif_uuid_1:
+    type: string
+    description: UUID generated by cmrepo for CIF02
+
+  lbd_uuid_0:
+    type: string
+    description: UUID generated by cmrepo for LBD01
+
+  lbd_uuid_1:
+    type: string
+    description: UUID generated by cmrepo for LBD02
+
+  cdi_uuid_0:
+    type: string
+    description: UUID generated by cmrepo for CDI01
+
+  cdi_uuid_1:
+    type: string
+    description: UUID generated by cmrepo for CDI02
+
+  cscf_zone_0_uuids:
+    type: comma_delimited_list
+    description: "List of UUIDs generated by cmrepo for CSCF instances on zone 0"
+
+  cscf_zone_1_uuids:
+    type: comma_delimited_list
+    description: "List of UUIDs generated by cmrepo for CSCF instances on zone 1"
+
+  tdcore_zone_0_uuids:
+    type: comma_delimited_list
+    description: "List of UUIDs generated by cmrepo for TDCORE instances on zone 0"
+
+  tdcore_zone_1_uuids:
+    type: comma_delimited_list
+    description: "List of UUIDs generated by cmrepo for TDCORE instances on zone 1"
+
+resources:
+
+  cscf_RSG:
+    type: OS::Neutron::SecurityGroup
+    properties:
+      description: Allow all
+      name:
+        str_replace:
+          template: "$VNF$DELsecurity$DELgroup"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      rules:
+        - { direction: ingress, ethertype: IPv4 }
+        - { direction: egress, ethertype: IPv4 }
+        - { direction: ingress, ethertype: IPv6 }
+        - { direction: egress, ethertype: IPv6 }
+
+  cscf_internal_network_0:
+    type: OS::Neutron::Net
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELinternal$DELnetwork
+          params:
+            $PREFIX: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      admin_state_up: True
+      shared: False
+
+  cscf_internal_subnet_0:
+    type: OS::Neutron::Subnet
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELinternal$DELsubnet
+          params:
+            $PREFIX: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      ip_version: 4
+      network: { get_resource: cscf_internal_network_0 }
+      cidr: { get_param: vcscf_internal_network_cidr }
+      enable_dhcp: False
+      gateway_ip: null
+
+  cscf_internal_subnet_v6_0:
+    type: OS::Neutron::Subnet
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELinternal$DELsubnetv6
+          params:
+            $PREFIX: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      ip_version: 6
+      network: { get_resource: cscf_internal_network_0 }
+      cidr: { get_param: vcscf_internal_network_v6_cidr }
+      enable_dhcp: False
+      gateway_ip: null
+
+  cscf_internal_dpdk_network_0:
+    type: OS::Neutron::Net
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELinternal$DELdpdk$DELnetwork
+          params:
+            $PREFIX: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      admin_state_up: True
+      shared: False
+
+  cscf_internal_dpdk_subnet_0:
+    type: OS::Neutron::Subnet
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELinternal$DELdpdk$DELsubnet
+          params:
+            $PREFIX: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_dpdk_network_0 }
+      cidr: { get_param: vcscf_internal_dpdk_network_cidr }
+      enable_dhcp: False
+      gateway_ip: null
+
+  cif_server_group:
+    type: OS::Nova::ServerGroup
+    properties:
+      name:
+        str_replace:
+          template: "$VNF$DELcif$DELgroup"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      policies: ["anti-affinity"]
+
+  lbd_server_group:
+    type: OS::Nova::ServerGroup
+    properties:
+      name:
+        str_replace:
+          template: "$VNF$DELlbd$DELgroup"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      policies: ["anti-affinity"]
+
+  cdi_server_group:
+    type: OS::Nova::ServerGroup
+    properties:
+      name:
+        str_replace:
+          template: "$VNF$DELcdi$DELgroup"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      policies: ["anti-affinity"]
+
+  oam_server_group:
+    type: OS::Nova::ServerGroup
+    properties:
+      name:
+        str_replace:
+          template: "$VNF$DELoam$DELgroup"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      policies: ["anti-affinity"]
+
+  tdcore_zone_0_server_group:
+    type: OS::Nova::ServerGroup
+    properties:
+      name:
+        str_replace:
+          template: "$VNF$DELtdcore$DELzone0$DELgroup"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      policies: ["anti-affinity"]
+
+  tdcore_zone_1_server_group:
+    type: OS::Nova::ServerGroup
+    properties:
+      name:
+        str_replace:
+          template: "$VNF$DELtdcore$DELzone1$DELgroup"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      policies: ["anti-affinity"]
+
+  cif_internal_vip_0_port:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELcif$DELinternal$DELvip
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_internal_vip_0 }
+
+  cif_oam_vip_1_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELcif$DELoam$DELvip0
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_oam_vip_0 }
+
+  cif_ims_core_v6_vip_2_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELcif$DELims$DELcore$DELvip$DELv6
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_ims_core_v6_vip_0 }
+        
+  cif_oam_vip_3_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELcif$DELoam$DELvip1
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_oam_vip_1 }
+        
+  cif_ims_li_v6_vip_4_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELcif$DELims$DELli$DELvip$DELv6
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_li_v6_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_ims_li_v6_vip_0 }
+
+  lbd_internal_dpdk_vip_1_port:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_dpdk_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELlbd$DELinternal$DELdpdk$DELvip
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_dpdk_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: lbd_internal_dpdk_vip_0 }
+
+  lbd_ims_core_v6_vip_2_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELlbd$DELims$DELcore$DELvip$DELv6
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: lbd_ims_core_v6_vip_0 }
+
+  cdi_internal_v6_vip_0_port:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_v6_0
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELcdi$DELinternal$DELvip$DELv6
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cdi_internal_v6_vip_0 }
+
+  cdi_ims_core_v6_vip_1_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELcdi$DELims$DELdb$DELvip$DELv6
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cdi_ims_core_v6_vip_0 }
+
+  oam_internal_vip_0_port:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELoam$DELinternal$DELvip
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: oam_internal_vip_0 }
+
+  oam_oam_vip_1_port:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $NAME$DELoam$DELoam$DELvip
+          params:
+            $NAME: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: oam_oam_vip_0 }
+
+  oam_internal_0_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: oam_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: oam_internal_ip_0 }
+      allowed_address_pairs:
+        - ip_address: "0.0.0.0/1"
+        - ip_address: "128.0.0.0/1"
+        - ip_address: "::/1"
+        - ip_address: "8000::/1"
+
+  oam_oam_0_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: oam_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: oam_oam_ip_0 }
+      allowed_address_pairs:
+        - ip_address: { get_param: oam_oam_vip_0}
+
+
+  oam_server_0:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_0 }
+      scheduler_hints: { group: { get_resource: oam_server_group } }
+      name: { get_param: oam_name_0 }
+      flavor: { get_param: oam_flavor_name }
+      image: { get_param: oam_image_name }
+      metadata:
+        vm_role: oam
+        vnf_id: {get_param: vnf_id}
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port:  { get_resource: oam_internal_0_port_0 }
+        - port:  { get_resource: oam_oam_0_port_1 }
+      block_device_mapping:
+        - device_name: vdb
+          volume_id: { get_param: oam_volume_id_0 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OamNetmask=$oam_netmask
+            OamIp=$oam_ip
+            OamCipa=$oam_cipa_ip
+            NodeCipa=$node_cipa_ip
+            Gateway=$gateway
+            OamGateway=$gateway
+            NodeIp=$node_ip
+            Netmask=$netmask
+            NodeType=OAM
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=101
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $uuid: { get_param: oam_uuid_0 }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $node_ip: { get_param: oam_internal_ip_0 }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $gateway: { get_param:  vcscf_default_gateway}
+            $oam_ip: { get_param: oam_oam_ip_0 }
+            $oam_netmask: { get_param: vcscf_oam_netmask }
+            $node_cipa_ip: { get_param: oam_internal_vip_0 }
+            $oam_cipa_ip: { get_param: oam_oam_vip_0 }
+            $instance_name: { get_param: oam_name_0 }
+
+
+  oam_internal_1_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: oam_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: oam_internal_ip_1 }
+      allowed_address_pairs:
+        - ip_address: "0.0.0.0/1"
+        - ip_address: "128.0.0.0/1"
+        - ip_address: "::/1"
+        - ip_address: "8000::/1"
+
+  oam_oam_1_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: oam_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: oam_oam_ip_1 }
+      allowed_address_pairs:
+        - ip_address: { get_param: oam_oam_vip_0}
+
+
+  oam_server_1:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_1 }
+      scheduler_hints: { group: { get_resource: oam_server_group } }
+      name: { get_param: oam_name_1 }
+      flavor: { get_param: oam_flavor_name }
+      image: { get_param: oam_image_name }
+      metadata:
+        vm_role: oam
+        vnf_id: {get_param: vnf_id}
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port:  { get_resource: oam_internal_1_port_0 }
+        - port:  { get_resource: oam_oam_1_port_1 }
+      block_device_mapping:
+        - device_name: vdb
+          volume_id: { get_param: oam_volume_id_1 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OamNetmask=$oam_netmask
+            OamIp=$oam_ip
+            OamCipa=$oam_cipa_ip
+            NodeCipa=$node_cipa_ip
+            Gateway=$gateway
+            OamGateway=$gateway
+            NodeIp=$node_ip
+            Netmask=$netmask
+            NodeType=OAM
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=101
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $uuid: { get_param: oam_uuid_1 }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $node_ip: { get_param: oam_internal_ip_1 }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $gateway: { get_param:  vcscf_default_gateway}
+            $oam_ip: { get_param: oam_oam_ip_1 }
+            $oam_netmask: { get_param: vcscf_oam_netmask }
+            $node_cipa_ip: { get_param: oam_internal_vip_0 }
+            $oam_cipa_ip: { get_param: oam_oam_vip_0 }
+            $instance_name: { get_param: oam_name_1 }
+
+  oam_internal_2_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: oam_name_2 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: oam_internal_ip_2 }
+      allowed_address_pairs:
+        - ip_address: "0.0.0.0/1"
+        - ip_address: "128.0.0.0/1"
+        - ip_address: "::/1"
+        - ip_address: "8000::/1"
+
+  oam_oam_2_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: oam_name_2 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: oam_oam_ip_2 }
+      allowed_address_pairs:
+        - ip_address: { get_param: oam_oam_vip_0}
+
+
+  oam_server_2:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_0 }
+      scheduler_hints: { group: { get_resource: oam_server_group } }
+      name: { get_param: oam_name_2 }
+      flavor: { get_param: oam_flavor_name }
+      image: { get_param: oam_image_name }
+      metadata:
+        vm_role: oam
+        vnf_id: {get_param: vnf_id}
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port:  { get_resource: oam_internal_2_port_0 }
+        - port:  { get_resource: oam_oam_2_port_1 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OamNetmask=$oam_netmask
+            OamIp=$oam_ip
+            OamCipa=$oam_cipa_ip
+            NodeCipa=$node_cipa_ip
+            Gateway=$gateway
+            OamGateway=$gateway
+            NodeIp=$node_ip
+            Netmask=$netmask
+            NodeType=OAM
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=101
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $uuid: { get_param: oam_uuid_2 }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $node_ip: { get_param: oam_internal_ip_2 }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $gateway: { get_param:  vcscf_default_gateway}
+            $oam_ip: { get_param: oam_oam_ip_2 }
+            $oam_netmask: { get_param: vcscf_oam_netmask }
+            $node_cipa_ip: { get_param: oam_internal_vip_0 }
+            $oam_cipa_ip: { get_param: oam_oam_vip_0 }
+            $instance_name: { get_param: oam_name_2 }
+
+
+  cif_internal_0_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: cif_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_internal_ip_0 }
+        - ip_address: { get_param: cif_internal_v6_ip_0 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_internal_vip_0 }
+
+  cif_oam_0_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: cif_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_oam_ip_0 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_oam_vip_0}
+        
+  cif_ims_core_0_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth2
+          params:
+            $PREFIX: { get_param: cif_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_ims_core_v6_ip_0 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_ims_core_v6_vip_0}
+
+
+  cif_oam_0_port_3:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth3
+          params:
+            $PREFIX: { get_param: cif_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_oam_ip_2 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_oam_vip_1}
+        
+        
+  cif_ims_li_0_port_4:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth4
+          params:
+            $PREFIX: { get_param: cif_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_li_v6_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_ims_li_v6_ip_0 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_ims_li_v6_vip_0}
+
+  cif_server_0:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_0 }
+      scheduler_hints: { group: { get_resource: cif_server_group } }
+      name: { get_param: cif_name_0 }
+      flavor: { get_param: cif_flavor_name }
+      image: { get_param: cif_image_name }
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vm_role: cif
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port: { get_resource: cif_internal_0_port_0 }
+        - port: { get_resource: cif_oam_0_port_1 }
+        - port: { get_resource: cif_ims_core_0_port_2 }
+        - port: { get_resource: cif_oam_0_port_3 }
+        - port: { get_resource: cif_ims_li_0_port_4 }
+      block_device_mapping:
+        - device_name: vdb
+          volume_id: { get_param: cif_volume_id_0 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OAMUnitInternalIp=$oam_unit_ip
+            NodeIp=$node_ip
+            Netmask=$netmask
+            Gateway=$oam_unit_ip
+            NodeType=CIF
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=1
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $oam_unit_ip: { get_param: oam_internal_vip_0 }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $uuid: { get_param: cif_uuid_0 }
+            $node_ip: { get_param: cif_internal_ip_0 }
+            $instance_name: { get_param: cif_name_0 }
+
+  cif_internal_1_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: cif_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_internal_ip_1 }
+        - ip_address: { get_param: cif_internal_v6_ip_1 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_internal_vip_0 }
+
+
+  cif_oam_1_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: cif_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_oam_ip_1 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_oam_vip_0}
+
+  cif_ims_core_1_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth2
+          params:
+            $PREFIX: { get_param: cif_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_ims_core_v6_ip_1 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_ims_core_v6_vip_0}
+
+  cif_oam_1_port_3:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth3
+          params:
+            $PREFIX: { get_param: cif_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: oam_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_oam_ip_3 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_oam_vip_1}
+        
+        
+  cif_ims_li_1_port_4:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth4
+          params:
+            $PREFIX: { get_param: cif_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_li_v6_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cif_ims_li_v6_ip_1 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cif_ims_li_v6_vip_0}
+
+  cif_server_1:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_1 }
+      scheduler_hints: { group: { get_resource: cif_server_group } }
+      name: { get_param: cif_name_1 }
+      flavor: { get_param: cif_flavor_name }
+      image: { get_param: cif_image_name }
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vm_role: cif
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port: { get_resource: cif_internal_1_port_0 }
+        - port: { get_resource: cif_oam_1_port_1 }
+        - port: { get_resource: cif_ims_core_1_port_2 }
+        - port: { get_resource: cif_oam_1_port_3 }
+        - port: { get_resource: cif_ims_li_1_port_4 }
+      block_device_mapping:
+        - device_name: vdb
+          volume_id: { get_param: cif_volume_id_1 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OAMUnitInternalIp=$oam_unit_ip
+            NodeIp=$node_ip
+            Netmask=$netmask
+            Gateway=$oam_unit_ip
+            NodeType=CIF
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=1
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $oam_unit_ip: { get_param: oam_internal_vip_0 }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $uuid: { get_param: cif_uuid_1 }
+            $node_ip: { get_param: cif_internal_ip_1 }
+            $instance_name: { get_param: cif_name_1 }
+
+  lbd_internal_0_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: lbd_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: lbd_internal_ip_0 }
+
+  lbd_dpdk_0_port_1:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_dpdk_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: lbd_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_dpdk_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: lbd_internal_dpdk_ip_0 }
+      allowed_address_pairs:
+        - ip_address: "0.0.0.0/1"
+        - ip_address: "128.0.0.0/1"
+        - ip_address: "::/1"
+        - ip_address: "8000::/1"
+
+  lbd_ims_core_0_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth2
+          params:
+            $PREFIX: { get_param: lbd_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: lbd_ims_core_v6_ip_0 }
+      allowed_address_pairs:
+        - ip_address: { get_param: lbd_ims_core_v6_vip_0}
+
+  lbd_server_0:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_0 }
+      scheduler_hints: { group: { get_resource: lbd_server_group } }
+      name: { get_param: lbd_name_0 }
+      flavor: { get_param: lbd_flavor_name }
+      image: { get_param: lbd_image_name }
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vm_role: lbd
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port: { get_resource: lbd_internal_0_port_0 }
+        - port: { get_resource: lbd_dpdk_0_port_1 }
+        - port: { get_resource: lbd_ims_core_0_port_2 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            eth1_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OAMUnitInternalIp=$oam_unit_ip
+            NodeIp=$node_ip
+            Netmask=$netmask
+            Gateway=$oam_unit_ip
+            NodeType=L2TD
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=1
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $oam_unit_ip: { get_param: oam_internal_vip_0 }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $uuid: { get_param: lbd_uuid_0 }
+            $node_ip: { get_param: lbd_internal_ip_0 }
+            $instance_name: { get_param: lbd_name_0 }
+
+  lbd_internal_1_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: lbd_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: lbd_internal_ip_1 }
+
+  lbd_dpdk_1_port_1:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_dpdk_subnet_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: lbd_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_dpdk_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: lbd_internal_dpdk_ip_1 }
+      allowed_address_pairs:
+        - ip_address: "0.0.0.0/1"
+        - ip_address: "128.0.0.0/1"
+        - ip_address: "::/1"
+        - ip_address: "8000::/1"
+
+  lbd_ims_core_1_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth2
+          params:
+            $PREFIX: { get_param: lbd_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: lbd_ims_core_v6_ip_1 }
+      allowed_address_pairs:
+        - ip_address: { get_param: lbd_ims_core_v6_vip_0}
+
+  lbd_server_1:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_1 }
+      scheduler_hints: { group: { get_resource: lbd_server_group } }
+      name: { get_param: lbd_name_1 }
+      flavor: { get_param: lbd_flavor_name }
+      image: { get_param: lbd_image_name }
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vm_role: lbd
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port: { get_resource: lbd_internal_1_port_0 }
+        - port: { get_resource: lbd_dpdk_1_port_1 }
+        - port: { get_resource: lbd_ims_core_1_port_2 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            eth1_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OAMUnitInternalIp=$oam_unit_ip
+            NodeIp=$node_ip
+            Netmask=$netmask
+            Gateway=$oam_unit_ip
+            NodeType=L2TD
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=1
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $oam_unit_ip: { get_param: oam_internal_vip_0 }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $uuid: { get_param: lbd_uuid_1 }
+            $node_ip: { get_param: lbd_internal_ip_1 }
+            $instance_name: { get_param: lbd_name_1 }
+
+  cdi_internal_0_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+      - cscf_internal_subnet_v6_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: cdi_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cdi_internal_ip_0 }
+        - ip_address: { get_param: cdi_internal_v6_ip_0 }
+      allowed_address_pairs:
+        - ip_address: "0.0.0.0/1"
+        - ip_address: "128.0.0.0/1"
+        - ip_address: "::/1"
+        - ip_address: "8000::/1"
+
+  cdi_ims_core_0_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: cdi_name_0 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips :
+        - ip_address: { get_param: cdi_ims_core_v6_ip_0 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cdi_ims_core_v6_vip_0}
+
+  cdi_server_0:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_0 }
+      scheduler_hints: { group: { get_resource: cdi_server_group } }
+      name: { get_param: cdi_name_0 }
+      flavor: { get_param: cdi_flavor_name }
+      image: { get_param: cdi_image_name }
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vm_role: cdi
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port: { get_resource: cdi_internal_0_port_0 }
+        - port: { get_resource: cdi_ims_core_0_port_1 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OAMUnitInternalIp=$oam_unit_ip
+            NodeIp=$node_ip
+            Netmask=$netmask
+            Gateway=$oam_unit_ip
+            NodeType=CDI
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=1
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $oam_unit_ip: { get_param: oam_internal_vip_0 }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $node_ip: { get_param: cdi_internal_ip_0 }
+            $uuid: { get_param: cdi_uuid_0 }
+            $instance_name: { get_param: cdi_name_0 }
+
+  cdi_internal_1_port_0:
+    type: OS::Neutron::Port
+    depends_on:
+      - cscf_internal_subnet_0
+      - cscf_internal_subnet_v6_0
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: cdi_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_resource: cscf_internal_network_0 }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips:
+        - ip_address: { get_param: cdi_internal_ip_1 }
+        - ip_address: { get_param: cdi_internal_v6_ip_1 }
+      allowed_address_pairs:
+        - ip_address: "0.0.0.0/1"
+        - ip_address: "128.0.0.0/1"
+        - ip_address: "::/1"
+        - ip_address: "8000::/1"
+
+  cdi_ims_core_1_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: cdi_name_1 }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: ims_core_net_id }
+      security_groups:
+        - { get_resource: cscf_RSG }
+      fixed_ips :
+        - ip_address: { get_param: cdi_ims_core_v6_ip_1 }
+      allowed_address_pairs:
+        - ip_address: { get_param: cdi_ims_core_v6_vip_0}
+
+  cdi_server_1:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_1 }
+      scheduler_hints: { group: { get_resource: cdi_server_group } }
+      name: { get_param: cdi_name_1 }
+      flavor: { get_param: cdi_flavor_name }
+      image: { get_param: cdi_image_name }
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vm_role: cdi
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port: { get_resource: cdi_internal_1_port_0 }
+        - port: { get_resource: cdi_ims_core_1_port_1 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OAMUnitInternalIp=$oam_unit_ip
+            NodeIp=$node_ip
+            Netmask=$netmask
+            Gateway=$oam_unit_ip
+            NodeType=CDI
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            HaGroupId=1
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn}
+            $du_name: { get_param: vcscf_du }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $oam_unit_ip: { get_param: oam_internal_vip_0 }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $node_ip: { get_param: cdi_internal_ip_1 }
+            $uuid: { get_param: cdi_uuid_1 }
+            $instance_name: { get_param: cdi_name_1 }
+
+  tdcore_zone_0_RRG:
+    type: OS::Heat::ResourceGroup
+    depends_on:
+      - cscf_internal_subnet_0
+      - cscf_internal_dpdk_subnet_0
+    properties:
+      count: { get_param: tdcore_zone_0_count }
+      index_var: $INDEX
+      resource_def:
+        type: nested_tdcore.yaml
+        properties:
+          index: $INDEX
+          tdcore_server_group: { get_resource: tdcore_zone_0_server_group }
+          vnf_name: { get_param: vnf_name }
+          vcscf_name_delimeter: { get_param: vcscf_name_delimeter }
+          tdcore_flavor_name: { get_param: tdcore_flavor_name }
+          tdcore_image_name: { get_param: tdcore_image_name }
+          tdcore_security_group: { get_resource: cscf_RSG }
+          internal_net_id: { get_resource: cscf_internal_network_0 }
+          internal_dpdk_net_id: { get_resource: cscf_internal_dpdk_network_0 }
+          vcscf_dn: { get_param: vcscf_dn}
+          vcscf_du: { get_param: vcscf_du }
+          vcscf_cmrepo_address: { get_param: vcscf_cmrepo_address }
+          vcscf_swrepo_address: { get_param: vcscf_swrepo_address }
+          vcscf_gateway: { get_param: oam_internal_vip_0 }
+          vcscf_internal_netmask: { get_param: vcscf_internal_netmask }
+          vcscf_release: { get_param: vcscf_release }
+          vcscf_dns_address: { get_param: vcscf_dns_address }
+          vcscf_internal_network_mtu: { get_param: vcscf_internal_network_mtu }
+          vnf_id: {get_param: vnf_id}
+          vf_module_id: {get_param: vf_module_id}
+          vf_module_name: {get_param: vf_module_name}
+          availability_zone_0: { get_param: availability_zone_0 }
+          tdcore_internal_ips: { get_param: tdcore_internal_zone_0_ips }
+          tdcore_dpdk_ips: { get_param: tdcore_dpdk_zone_0_ips }
+          tdcore_names: { get_param: tdcore_zone_0_names }
+          tdcore_uuids: { get_param: tdcore_zone_0_uuids }
+
+  tdcore_zone_1_RRG:
+    type: OS::Heat::ResourceGroup
+    depends_on:
+      - cscf_internal_subnet_0
+      - cscf_internal_dpdk_subnet_0
+    properties:
+      count: { get_param: tdcore_zone_1_count }
+      index_var: $INDEX
+      resource_def:
+        type: nested_tdcore.yaml
+        properties:
+          index: $INDEX
+          tdcore_server_group: { get_resource: tdcore_zone_1_server_group }
+          vnf_name: { get_param: vnf_name }
+          vcscf_name_delimeter: { get_param: vcscf_name_delimeter }
+          tdcore_flavor_name: { get_param: tdcore_flavor_name }
+          tdcore_image_name: { get_param: tdcore_image_name }
+          tdcore_security_group: { get_resource: cscf_RSG }
+          internal_net_id: { get_resource: cscf_internal_network_0 }
+          internal_dpdk_net_id: { get_resource: cscf_internal_dpdk_network_0 }
+          vcscf_dn: { get_param: vcscf_dn}
+          vcscf_du: { get_param: vcscf_du }
+          vcscf_cmrepo_address: { get_param: vcscf_cmrepo_address }
+          vcscf_swrepo_address: { get_param: vcscf_swrepo_address }
+          vcscf_gateway: { get_param: oam_internal_vip_0 }
+          vcscf_internal_netmask: { get_param: vcscf_internal_netmask }
+          vcscf_release: { get_param: vcscf_release }
+          vcscf_dns_address: { get_param: vcscf_dns_address }
+          vcscf_internal_network_mtu: { get_param: vcscf_internal_network_mtu }
+          vnf_id: {get_param: vnf_id}
+          vf_module_id: {get_param: vf_module_id}
+          vf_module_name: {get_param: vf_module_name}
+          availability_zone_0: { get_param: availability_zone_1 }
+          tdcore_internal_ips: { get_param: tdcore_internal_zone_1_ips }
+          tdcore_dpdk_ips: { get_param: tdcore_dpdk_zone_1_ips }
+          tdcore_names: { get_param: tdcore_zone_1_names }
+          tdcore_uuids: { get_param: tdcore_zone_1_uuids }
+
+  cscf_zone_0_RRG:
+    type: OS::Heat::ResourceGroup
+    depends_on:
+      - cscf_internal_subnet_0
+      - cscf_internal_subnet_v6_0
+    properties:
+      count: { get_param: cscf_zone_0_count }
+      index_var: $INDEX
+      resource_def:
+        type: nested_cscf.yaml
+        properties:
+          index: $INDEX
+          vnf_name: { get_param: vnf_name }
+          vcscf_name_delimeter: { get_param: vcscf_name_delimeter }
+          cscf_flavor_name: { get_param: cscf_flavor_name }
+          cscf_image_name: { get_param: cscf_image_name }
+          cscf_security_group: { get_resource: cscf_RSG }
+          internal_net_id: { get_resource: cscf_internal_network_0 }
+          vcscf_dn: { get_param: vcscf_dn}
+          vcscf_du: { get_param: vcscf_du }
+          vcscf_cmrepo_address: { get_param: vcscf_cmrepo_address }
+          vcscf_swrepo_address: { get_param: vcscf_swrepo_address }
+          vcscf_gateway: { get_param: oam_internal_vip_0 }
+          vcscf_internal_netmask: { get_param: vcscf_internal_netmask }
+          vcscf_release: { get_param: vcscf_release }
+          vcscf_dns_address: { get_param: vcscf_dns_address }
+          vcscf_internal_network_mtu: { get_param: vcscf_internal_network_mtu }
+          vnf_id: {get_param: vnf_id}
+          vf_module_id: {get_param: vf_module_id}
+          vf_module_name: {get_param: vf_module_name}
+          availability_zone_0 : { get_param: availability_zone_0 }
+          cscf_internal_ips: { get_param: cscf_internal_zone_0_ips }
+          cscf_internal_v6_ips: { get_param: cscf_internal_zone_0_v6_ips }
+          cscf_names: { get_param: cscf_zone_0_names }
+          cscf_uuids: { get_param: cscf_zone_0_uuids }
+
+  cscf_zone_1_RRG:
+    type: OS::Heat::ResourceGroup
+    depends_on:
+      - cscf_internal_subnet_0
+      - cscf_internal_subnet_v6_0
+    properties:
+      count: { get_param: cscf_zone_1_count }
+      index_var: $INDEX
+      resource_def:
+        type: nested_cscf.yaml
+        properties:
+          index: $INDEX
+          vnf_name: { get_param: vnf_name }
+          vcscf_name_delimeter: { get_param: vcscf_name_delimeter }
+          cscf_flavor_name: { get_param: cscf_flavor_name }
+          cscf_image_name: { get_param: cscf_image_name }
+          cscf_security_group: { get_resource: cscf_RSG }
+          internal_net_id: { get_resource: cscf_internal_network_0 }
+          vcscf_dn: { get_param: vcscf_dn}
+          vcscf_du: { get_param: vcscf_du }
+          vcscf_cmrepo_address: { get_param: vcscf_cmrepo_address }
+          vcscf_swrepo_address: { get_param: vcscf_swrepo_address }
+          vcscf_gateway: { get_param: oam_internal_vip_0 }
+          vcscf_internal_netmask: { get_param: vcscf_internal_netmask }
+          vcscf_release: { get_param: vcscf_release }
+          vcscf_dns_address: { get_param: vcscf_dns_address }
+          vcscf_internal_network_mtu: { get_param: vcscf_internal_network_mtu }
+          vnf_id: {get_param: vnf_id}
+          vf_module_id: {get_param: vf_module_id}
+          vf_module_name: {get_param: vf_module_name}
+          cscf_internal_ips: { get_param: cscf_internal_zone_1_ips }
+          cscf_internal_v6_ips: { get_param: cscf_internal_zone_1_v6_ips }
+          cscf_names: { get_param: cscf_zone_1_names }
+          cscf_uuids: { get_param: cscf_zone_1_uuids }
+          availability_zone_0 : { get_param: availability_zone_1 }
+
+outputs:
+  internal_net_id:
+    description: internal network
+    value: {get_resource: cscf_internal_network_0}
+
+  internal_dpdk_net_id:
+    description: dpdk network
+    value: {get_resource: cscf_internal_dpdk_network_0}
+
+  cscf_security_group:
+    description: cscf security group
+    value: {get_resource: cscf_RSG}
+
+  tdcore_zone_0_server_group:
+    description: tdcore zone 0 server group name/id
+    value: {get_resource: tdcore_zone_0_server_group}
+
+  tdcore_zone_1_server_group:
+    description: tdcore zone 1 server group name/id
+    value: {get_resource: tdcore_zone_1_server_group}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.env
new file mode 100644 (file)
index 0000000..68c2dd1
--- /dev/null
@@ -0,0 +1,19 @@
+## Copyright:: Nokia Corporation 2017
+## Note: Nokia VM HOT file for CFX
+## Name: "base_cscf_volume.env"
+## Date: 20 Mar 2017
+## Kilo Version
+parameters:
+
+# PSEUDO CONSTANTS
+# -----------------------------------------------------------------------------
+  cif_volume_size_0: 300
+  oam_volume_size_0: 300
+  vcscf_name_delimeter: "_"
+
+# SITE SPECIFIC
+# -----------------------------------------------------------------------------
+#  vnf_name: CSCF0001
+  # storage availability zones
+#  availability_zone_0: zone1
+#  availability_zone_1: zone2
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.yaml
new file mode 100644 (file)
index 0000000..cf0bd8b
--- /dev/null
@@ -0,0 +1,105 @@
+## Copyright:: Nokia Corporation 2017
+## Note: Nokia VM HOT file for CFX
+## Name: "base_cscf_volume.yaml"
+## Date: 20 Mar 2017
+## Kilo Version
+heat_template_version: 2015-04-30
+
+description: Volume template for CFX
+
+parameters:
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+
+  vcscf_name_delimeter:
+    type: string
+    description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)'
+    constraints:
+      - allowed_values: [ '-', '', '_', '.']
+
+  availability_zone_0:
+    type: string
+    description: Storage availability zone for volume of first vm
+
+  availability_zone_1:
+    type: string
+    description: Storage availability zone for volume of second vm
+
+  cif_volume_size_0:
+    type: number
+    description: Size of Volume for cif VMs
+    constraints:
+      - range: { min: 1, max: 300 }
+
+  oam_volume_size_0:
+    type: number
+    description: Size of Volume for oam VMs
+    constraints:
+      - range: { min: 1, max: 300 }
+
+resources:
+  cif_volume_0:
+    type: OS::Cinder::Volume
+    properties:
+      size: { get_param: cif_volume_size_0 }
+      availability_zone: { get_param: availability_zone_0}
+      name:
+        str_replace:
+          template: "$VNF$DELcif$DELvolume$DEL0"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+
+  cif_volume_1:
+    type: OS::Cinder::Volume
+    properties:
+      availability_zone: { get_param: availability_zone_1}
+      size: { get_param: cif_volume_size_0 }
+      name:
+        str_replace:
+          template: "$VNF$DELcif$DELvolume$DEL1"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+
+  oam_volume_0:
+    type: OS::Cinder::Volume
+    properties:
+      size: { get_param: oam_volume_size_0 }
+      availability_zone: { get_param: availability_zone_0}
+      name:
+        str_replace:
+          template: "$VNF$DELoam$DELvolume$DEL0"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+
+  oam_volume_1:
+    type: OS::Cinder::Volume
+    properties:
+      size: { get_param: oam_volume_size_0 }
+      availability_zone: { get_param: availability_zone_1}
+      name:
+        str_replace:
+          template: "$VNF$DELoam$DELvolume$DEL1"
+          params:
+            $VNF: { get_param: vnf_name }
+            $DEL: { get_param: vcscf_name_delimeter }
+
+outputs:
+  cif_volume_id_0:
+    description: volume id for first cif
+    value: {get_resource: cif_volume_0}
+
+  cif_volume_id_1:
+    description: volume id for second cif
+    value: {get_resource: cif_volume_1}
+
+  oam_volume_id_0:
+    description: volume id for first oam
+    value: {get_resource: oam_volume_0}
+
+  oam_volume_id_1:
+    description: volume id for second oam
+    value: {get_resource: oam_volume_1}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_cscf.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_cscf.yaml
new file mode 100644 (file)
index 0000000..f911be6
--- /dev/null
@@ -0,0 +1,183 @@
+## Copyright:: Nokia Corporation 2017
+## Note: Nokia VM HOT file for CFX
+## Name: "cscf.yaml"
+## Date: 20 Mar 2017
+## Kilo Version
+heat_template_version: 2015-04-30
+
+description: IMS CSCF
+
+parameters:
+
+  vcscf_name_delimeter:
+    type: string
+    description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)'
+    constraints:
+      - allowed_values: [ '-', '', '_', '.']
+
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+
+  vf_module_name:
+    type: string
+    description: Unique name for this VF Module instance
+
+  vf_module_id:
+    type: string
+    description: Unique ID for this VF Module instance
+
+  cscf_security_group:
+    type: string
+    description: security group
+
+  cscf_flavor_name:
+    type: string
+    description: flavor name
+
+  cscf_image_name:
+    type: string
+    description: image name
+
+  internal_net_id:
+    type: string
+    description: internal network name/uuid
+
+  vcscf_internal_netmask:
+    type: string
+    description: internal netmask
+
+  vcscf_release:
+    type: string
+    description: "IMS release"
+
+  vcscf_dn:
+    type: string
+    description: "DN name"
+
+  vcscf_du:
+    type: string
+    description: "DU name"
+
+  vcscf_cmrepo_address:
+    type: string
+    description: "CMRepo IP or FQDN"
+
+  vcscf_swrepo_address:
+    type: string
+    description: SWRepo IP or FQDN
+
+  vcscf_dns_address:
+    type: string
+    description: DNS server IP
+
+  vcscf_internal_network_mtu:
+    type: number
+    description: MTU for internal network interface (eth0)
+    constraints:
+      - range: { min: 1000, max: 9100 }
+
+  vcscf_gateway:
+    type: string
+    description: OAM unit cipa ip
+
+  cscf_internal_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan IPs for CSCF instances"
+
+  cscf_internal_v6_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan v6 IPs for CSCF instances"
+
+  cscf_names:
+    type: comma_delimited_list
+    description: "List of instance names for CSCF instances"
+
+  cscf_uuids:
+    type: comma_delimited_list
+    description: "List of UUIDs generated by cmrepo for CSCF instances"
+
+  availability_zone_0:
+    type: string
+    description: Availability zone name for CSCF instances.
+
+  index:
+    type: number
+    description: index
+    constraints:
+      - range: { min: 0, max: 119 }
+
+resources:
+
+  cscf_internal_0_port_0:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: [ cscf_names, { get_param: index } ] }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: internal_net_id }
+      security_groups:
+        - { get_param: cscf_security_group }
+      fixed_ips:
+        - ip_address: { get_param: [ cscf_internal_ips, { get_param: index } ] }
+        - ip_address: { get_param: [ cscf_internal_v6_ips, { get_param: index } ] }
+
+  cscf_server_0:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_0 }
+      name: { get_param: [ cscf_names, { get_param: index } ] }
+      flavor: { get_param: cscf_flavor_name }
+      image: { get_param: cscf_image_name }
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vm_role: cscf
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port: { get_resource: cscf_internal_0_port_0 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OAMUnitInternalIp=$oam_unit_ip
+            NodeIp=$node_ip
+            Netmask=$netmask
+            Gateway=$oam_unit_ip
+            NodeType=CSCF
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn }
+            $du_name: { get_param: vcscf_du }
+            $uuid: { get_param: [ cscf_uuids, { get_param: index } ] }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $oam_unit_ip: { get_param: vcscf_gateway }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $node_ip: { get_param: [ cscf_internal_ips, { get_param: index } ] }
+            $instance_name: { get_param: [ cscf_names, { get_param: index } ] }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_tdcore.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_tdcore.yaml
new file mode 100644 (file)
index 0000000..2baec50
--- /dev/null
@@ -0,0 +1,213 @@
+## Copyright:: Nokia Corporation 2017
+## Note: Nokia VM HOT file for CFX
+## Name: "tdcore.yaml"
+## Date: 20 Mar 2017
+## Kilo Version
+heat_template_version: 2015-04-30
+
+description: IMS TDCORE VM
+
+parameters:
+
+  vcscf_name_delimeter:
+    type: string
+    description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)'
+    constraints:
+      - allowed_values: [ '-', '', '_', '.']
+
+  vnf_name:
+    type: string
+    description: Unique name for this VF instance
+
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+
+  vf_module_name:
+    type: string
+    description: Unique name for this VF Module instance
+
+  vf_module_id:
+    type: string
+    description: Unique ID for this VF Module instance
+
+  tdcore_security_group:
+    type: string
+    description: security group
+
+  tdcore_flavor_name:
+    type: string
+    description: flavor name
+
+  tdcore_image_name:
+    type: string
+    description: image name
+
+  internal_net_id:
+    type: string
+    description: internal network name/uuid
+
+  internal_dpdk_net_id:
+    type: string
+    description: internal dpdk network name/uuid
+
+  vcscf_internal_netmask:
+    type: string
+    description: internal netmask
+
+  vcscf_release:
+    type: string
+    description: "IMS release"
+
+  vcscf_dn:
+    type: string
+    description: "DN name"
+
+  vcscf_du:
+    type: string
+    description: "DU name"
+
+  vcscf_cmrepo_address:
+    type: string
+    description: "CMRepo IP or FQDN"
+
+  vcscf_swrepo_address:
+    type: string
+    description: SWRepo IP or FQDN
+
+  vcscf_dns_address:
+    type: string
+    description: DNS server IP
+
+  vcscf_internal_network_mtu:
+    type: number
+    description: MTU for internal network interface (eth0)
+    constraints:
+      - range: { min: 1000, max: 9100 }
+
+  vcscf_gateway:
+    type: string
+    description: OAM unit virtual ip
+
+  tdcore_names:
+    type: comma_delimited_list
+    description: "List of instance names for TDCORE instances"
+
+  tdcore_internal_ips:
+    type: comma_delimited_list
+    description: "List of Internal Lan IPs for TDCORE instances"
+
+  tdcore_dpdk_ips:
+    type: comma_delimited_list
+    description: "List of DPDK Lan IPs for TDCORE instances"
+
+  tdcore_uuids:
+    type: comma_delimited_list
+    description: "List of UUIDs generated by cmrepo for TDCORE instances"
+
+  availability_zone_0:
+    type: string
+    description: Availability zone name.
+
+  tdcore_server_group:
+    type: string
+    description: server group name/id
+
+  index:
+    type: number
+    description: index
+    constraints:
+      - range: { min: 0, max: 7 }
+
+resources:
+
+  tdcore_internal_0_port_0:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth0
+          params:
+            $PREFIX: { get_param: [ tdcore_names, { get_param: index } ] }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: internal_net_id }
+      security_groups:
+        - { get_param: tdcore_security_group }
+      fixed_ips:
+        - ip_address: { get_param: [ tdcore_internal_ips, { get_param: index } ] }
+
+  tdcore_dpdk_0_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          template: $PREFIX$DELeth1
+          params:
+            $PREFIX: { get_param: [ tdcore_names, { get_param: index } ] }
+            $DEL: { get_param: vcscf_name_delimeter }
+      network: { get_param: internal_dpdk_net_id }
+      security_groups:
+        - { get_param: tdcore_security_group }
+      fixed_ips:
+        - ip_address: { get_param: [ tdcore_dpdk_ips, { get_param: index } ] }
+      allowed_address_pairs:
+        - ip_address: "0.0.0.0/1"
+        - ip_address: "128.0.0.0/1"
+        - ip_address: "::/1"
+        - ip_address: "8000::/1"
+
+  tdcore_server_0:
+    type: OS::Nova::Server
+    properties:
+      availability_zone: { get_param: availability_zone_0 }
+      scheduler_hints: { group: { get_param: tdcore_server_group } }
+      name: { get_param: [ tdcore_names, { get_param: index } ] }
+      flavor: { get_param: tdcore_flavor_name }
+      image: { get_param: tdcore_image_name }
+      metadata:
+        vnf_id: {get_param: vnf_id}
+        vm_role: tdcore
+        vnf_name: {get_param: vnf_name}
+        vf_module_id: {get_param: vf_module_id}
+        vf_module_name:   {get_param: vf_module_name}
+      networks:
+        - port: { get_resource: tdcore_internal_0_port_0 }
+        - port: { get_resource: tdcore_dpdk_0_port_1 }
+      config_drive: True
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          template: |
+            DN=$dn_name
+            DUName=$du_name
+            Uuid=$uuid
+            SwRepoIp=$swrepo_ip
+            CmRepoIp=$cmrepo_ip
+            OamDnsIp=$dns_ip
+            eth0_MTU=$mtu
+            eth1_MTU=$mtu
+            UniqueId=$dn_name/$du_name/$release/$uuid
+            OAMUnitInternalIp=$oam_unit_ip
+            NodeIp=$node_ip
+            Netmask=$netmask
+            Gateway=$oam_unit_ip
+            NodeType=TD_Core
+            DUType=CSCF
+            Release=$release
+            SwRepoPort=5571
+            CmRepoPort=8051
+            LbGroupId=1
+            NodeName=$instance_name
+          params:
+            $dn_name: { get_param: vcscf_dn }
+            $du_name: { get_param: vcscf_du }
+            $uuid: { get_param: [ tdcore_uuids, { get_param: index } ] }
+            $dns_ip: { get_param: vcscf_dns_address }
+            $cmrepo_ip: { get_param: vcscf_cmrepo_address }
+            $swrepo_ip: { get_param: vcscf_swrepo_address }
+            $oam_unit_ip: { get_param: vcscf_gateway }
+            $netmask: { get_param: vcscf_internal_netmask }
+            $release: { get_param: vcscf_release }
+            $mtu: { get_param: vcscf_internal_network_mtu }
+            $node_ip: { get_param: [ tdcore_internal_ips, { get_param: index } ] }
+            $instance_name: { get_param: [ tdcore_names, { get_param: index } ] }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/GlobalSubstitutionTypesServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..e92abe8
--- /dev/null
@@ -0,0 +1,6627 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: GlobalSubstitutionTypes
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+node_types:
+  org.openecomp.resource.abstract.nodes.jsa:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      compute_jsa_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+    requirements:
+    - dependency_jsa:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_jsa:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      instance_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_jsa:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_jsa:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_jsa:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_jsa:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_jsa:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_jsa:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_jsa:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.cmaui:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      cmaui_names:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      p1:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_8_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      p2:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_8_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_7_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availability_zone_0:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      net:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_8_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_7_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_8_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_8_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_7_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_7_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      cmaui_image:
+        type: string
+        description: Image for CMAUI server
+        required: true
+        status: SUPPORTED
+      cmaui_flavor:
+        type: string
+        description: Flavor for CMAUI server
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_7_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_7_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_7_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_7_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_8_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      cmaui_oam_ips:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_8_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_8_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_cmaui_port_7:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_7:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_8:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_8:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_cmaui:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      cpu.delta_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_7:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_8:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_8:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_7:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_8:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_7:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_7:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_8:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_cmaui:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_cmaui:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_7:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_8:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_7:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_8:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_7:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_7:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_8:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_7:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_8:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_8:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.allocation_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_7:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_8:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_7:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_8:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.cmaui:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_cmaui_port_6_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_6_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_5_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_5_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_6_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_cmaui_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_cmaui_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_6_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_6_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_6_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_5_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_5_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_6_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_5_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_6_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_5_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_cmaui_port_5_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_6_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_5_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_cmaui_port_5_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_5_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_6_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_5_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_6_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_5_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_6_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    requirements:
+    - dependency_cmaui_cmaui_port_5:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_cmaui_port_5:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_cmaui_port_6:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_cmaui_port_6:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_cmaui:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      disk.read.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_cmaui:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_cmaui_port_5:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_cmaui_port_6:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      feature_cmaui_cmaui_port_6:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_cmaui_port_5:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      cpu.delta_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_cmaui:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_cmaui_port_6:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_cmaui_port_5:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.cmaui:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_cmaui_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_cmaui_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_2_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_cmaui_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_1_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_2_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_cmaui_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_1_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_2_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_2_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_2_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_2_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+  org.openecomp.resource.abstract.nodes.cmaui_1:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_cmaui_port_3_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_3_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_3_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_cmaui_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_4_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_4_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_cmaui_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_4_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_3_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_3_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_3_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_4_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_4_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_3_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_4_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_3_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_cmaui_port_3_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_4_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_4_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_3_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_4_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_4_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_3_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_4_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_3_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_cmaui_port_4_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_cmaui_cmaui_port_4:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_cmaui_port_4:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_cmaui_port_3:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_cmaui_port_3:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_cmaui:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      disk.read.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_cmaui:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_cmaui_port_3:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      feature_cmaui_cmaui_port_3:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_cmaui_port_4:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_cmaui_port_4:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      cpu.delta_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_cmaui:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_cmaui_port_3:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_cmaui_port_4:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.nested1:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      cmaui_names:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      p1:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      p2:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      cmaui_image:
+        type: string
+        description: Image for CMAUI server
+        required: true
+        status: SUPPORTED
+      cmaui_flavor:
+        type: string
+        description: Flavor for CMAUI server
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      availability_zone_0:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      cmaui_oam_ips:
+        type: string
+        required: true
+        status: SUPPORTED
+      net:
+        type: string
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_cmaui_port_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_cmaui:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_cmaui_port_3_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_3_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_4_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_4_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_test_nested4Level_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_cmaui_port_5_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_5_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_6_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_6_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_cmaui_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_server_cmaui_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui_test_nested2Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_cmaui_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      os_server_cmaui_test_nested2Level:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_3_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.root.size_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_4_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_3_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_cmaui:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      os_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_4_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_cmaui_port_2:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_server_cmaui_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_cmaui_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_cmaui:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_4_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui_test_nested2Level:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_4_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_3_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_3_test_nested2Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_cmaui_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_3_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_4_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_3_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui_test_nested2Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_4_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_4_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_4_test_nested2Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_4_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_3_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_3_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui_test_nested2Level:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_4_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_5_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_4_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_3_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_cmaui_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_6_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_3_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_3_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui_test_nested3Level_test_nested2Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.cmaui_2:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_cmaui_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_cmaui_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_2_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_cmaui_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_1_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_2_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_cmaui_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_1_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_2_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_cmaui_port_2_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui_port_2_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_2_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_2_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    requirements:
+    - dependency_cmaui_cmaui_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_cmaui_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_cmaui_port_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_cmaui_port_2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_cmaui:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      network.incoming.bytes_cmaui_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_cmaui_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_cmaui_port_2:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      scalable_cmaui:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_cmaui_port_2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_cmaui_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.write.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_cmaui:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_cmaui_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_cmaui_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_cmaui_port_2:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_cmaui_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.nested2:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      cmaui_names:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      p1:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      p2:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      cmaui_image:
+        type: string
+        description: Image for CMAUI server
+        required: true
+        status: SUPPORTED
+      cmaui_flavor:
+        type: string
+        description: Flavor for CMAUI server
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      availability_zone_0:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      cmaui_oam_ips:
+        type: string
+        required: true
+        status: SUPPORTED
+      net:
+        type: string
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_cmaui_port_3:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_3:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_4:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_4:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_test_nested4Level_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_cmaui_port_7_test_nested4Level_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_7_test_nested4Level_test_nested3Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_8_test_nested4Level_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_8_test_nested4Level_test_nested3Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_cmaui_test_nested4Level_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui_test_nested4Level_test_nested3Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_cmaui_port_5_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_5_test_nested3Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_6_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_6_test_nested3Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_cmaui_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui_test_nested3Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_server_cmaui:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      cpu.delta_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_cmaui_test_nested3Level:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_cmaui_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_5_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_cmaui:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_6_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_6_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_5_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_6_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_6_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_3:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_4:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui_test_nested3Level:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_6_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_6_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_6_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.iops_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_3:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_4:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_6_test_nested3Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_6_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_3:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_4:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_5_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_cmaui_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.root.size_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_6_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_cmaui:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_5_test_nested3Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_cmaui_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui_test_nested3Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_5_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_5_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_6_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_5_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_5_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_3:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_4:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_7_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_8_test_nested4Level_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      scalable_server_cmaui_test_nested3Level:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_5_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_5_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_5_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui_test_nested4Level_test_nested3Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.nested3:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      cmaui_names:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      p1:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      p2:
+        type: string
+        required: true
+        status: SUPPORTED
+      cmaui_image:
+        type: string
+        description: Image for CMAUI server
+        required: true
+        status: SUPPORTED
+      cmaui_flavor:
+        type: string
+        description: Flavor for CMAUI server
+        required: true
+        status: SUPPORTED
+      indx:
+        type: float
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      availability_zone_0:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      cmaui_oam_ips:
+        type: string
+        required: true
+        status: SUPPORTED
+      net:
+        type: string
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_test_nested4Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_cmaui_port_7_test_nested4Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_7_test_nested4Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_8_test_nested4Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_8_test_nested4Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_cmaui_test_nested4Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui_test_nested4Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_cmaui_port_5:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_5:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_port_6:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_port_6:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_cmaui:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_cmaui:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      cpu.delta_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_7_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_8_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_cmaui_test_nested4Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_cmaui:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_7_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_7_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_cmaui_test_nested4Level:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_8_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_5:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_8_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_6:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_8_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_cmaui_test_nested4Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_cmaui_test_nested4Level:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_8_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_8_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_5:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_6:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_7_test_nested4Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_8_test_nested4Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_6:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_7_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_5:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_8_test_nested4Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_7_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_port_8_test_nested4Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_cmaui_port_8_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_cmaui_port_7_test_nested4Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui_test_nested4Level:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_cmaui_port_7_test_nested4Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_server_cmaui:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_7_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_port_7_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_test_nested4Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_cmaui_test_nested4Level:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_port_8_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_cmaui_port_6:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_cmaui_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_cmaui_port_5:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_cmaui:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_cmaui_port_7_test_nested4Level:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.jsa:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_jsa_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 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/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..e89a0c7
--- /dev/null
@@ -0,0 +1,3172 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Main
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    cif_internal_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of CIF01 instance
+      default: 192.168.210.1
+    vcscf_release:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS release
+      default: '17.0'
+    cif_name_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: CIF02 instance name
+    cif_name_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: CIF01 instance name
+    cif_internal_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of CIF02 instance
+      default: 192.168.210.2
+    tdcore_zone_0_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: |
+        Number of TD Core VMs to be deployed zone 0. This parameter is used to scale the TD Core instances.
+      default: 4
+      constraints:
+      - in_range:
+        - 0
+        - 8
+    lbd_internal_dpdk_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal DPDK CIP IP of LBD
+      default: 192.168.211.181
+    lbd_ims_core_v6_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE CIPA v6 IP of LBD
+    cscf_zone_1_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: |
+        Number of CSCF to be deployed on zone 1. This parameter is used to scale the cscf instances.
+      default: 18
+      constraints:
+      - in_range:
+        - 0
+        - 120
+    oam_internal_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal CIPA IP of OAM unit
+      default: 192.168.210.3
+    cscf_image_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: CSCF server VM image name
+      default: IMS_17_0_OPENSTACK_CSCF_1701400.000
+    cif_internal_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal CIPA IP of CIF
+      default: 192.168.210.150
+    cif_ims_core_v6_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE v6 IP of CIF01 instance
+    cif_ims_core_v6_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE v6 IP of CIF02 instance
+    oam_volume_id_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: size of the cinder volume used for oam
+    oam_volume_size_0:
+      hidden: false
+      immutable: false
+      type: float
+      description: Size of Volume for oam VMs
+      default: 300
+      constraints:
+      - in_range:
+        - 1
+        - 300
+    oam_volume_id_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: size of the cinder volume used for oam
+    vcscf_oam_netmask:
+      hidden: false
+      immutable: false
+      type: string
+      description: Netmask for OAM LAN
+    tdcore_zone_1_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of instance names for TDCORE instances on zone 1
+      entry_schema:
+        type: string
+    cif_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: CSCF CIF VM flavor
+      default: ND.c4r16d38
+    vcscf_dns_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: DNS server IP
+    vcscf_internal_network_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: CIDR for for Internal LAN
+      default: 192.168.210.0/24
+    cdi_ims_core_v6_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE LAN v6 IP of CDI02 instance
+    cdi_ims_core_v6_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE LAN v6 IP of CDI01 instance
+    cdi_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: CDI VM flavor
+      default: ND.c4r8d38
+    vcscf_default_gateway:
+      hidden: false
+      immutable: false
+      type: string
+      description: Default gateway for OAM LAN
+    tdcore_zone_0_uuids:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of UUIDs generated by cmrepo for TDCORE instances on zone 0
+      entry_schema:
+        type: string
+    oam_name_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM02 instance name
+    oam_name_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM01 instance name
+    oam_name_2:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM03 instance name
+    cscf_zone_1_uuids:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of UUIDs generated by cmrepo for CSCF instances on zone 1
+      entry_schema:
+        type: string
+    vf_module_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique ID for this VF Module instance
+    oam_oam_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM IP of OAM01 instance
+    cscf_internal_zone_1_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of Internal Lan IPs for CSCF instances on zone 1
+      default:
+      - 192.168.210.17
+      - 192.168.210.19
+      - 192.168.210.21
+      - 192.168.210.23
+      - 192.168.210.25
+      - 192.168.210.27
+      - 192.168.210.29
+      - 192.168.210.31
+      - 192.168.210.33
+      - 192.168.210.35
+      - 192.168.210.37
+      - 192.168.210.39
+      - 192.168.210.41
+      - 192.168.210.43
+      - 192.168.210.45
+      - 192.168.210.47
+      - 192.168.210.49
+      - 192.168.210.51
+      entry_schema:
+        type: string
+    cif_ims_li_v6_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS LI CIPA v6 IP of CIF
+    oam_oam_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM IP of OAM02 instance
+    oam_oam_ip_2:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM IP of OAM03 instance
+    vnf_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique name for this VF instance
+    lbd_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: CSCF LBD VM flavor
+      default: ND.c4r16d38
+    cscf_zone_0_uuids:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of UUIDs generated by cmrepo for CSCF instances on zone 0
+      entry_schema:
+        type: string
+    vf_module_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique name for this VF Module instance
+    cdi_internal_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of CDI01 instance
+      default: 192.168.210.139
+    cscf_zone_0_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of instance names for CSCF instances on zone 0
+      entry_schema:
+        type: string
+    oam_oam_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM CIPA IP of OAM unit
+    vcscf_swrepo_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: SWRepo IP or FQDN
+    cdi_internal_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of CDI02 instance
+      default: 192.168.210.140
+    cdi_name_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: CDI02 instance name
+    availability_zone_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Storage availability zone for volume of first vm
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Storage availability zone for volume of second vm
+    tdcore_image_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: TDCORE VM image name
+      default: IMS_17_0_OPENSTACK_CSCF_1701400.000
+    tdcore_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: TDCORE VM flavor
+      default: ND.c4r16d38
+    cscf_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: CSCF server VM flavor
+      default: ND.c8r16d38
+    vcscf_cmrepo_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: CMRepo IP or FQDN
+    cdi_name_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: CDI01 instance name
+    lbd_ims_core_v6_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE v6 IP of LBD01 instance
+    lbd_ims_core_v6_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE v6 IP of LBD02 instance
+    tdcore_internal_zone_1_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of Internal Lan IPs for TDCORE instances on zone 1
+      default:
+      - 192.168.210.9
+      - 192.168.210.11
+      - 192.168.210.13
+      - 192.168.210.15
+      entry_schema:
+        type: string
+    oam_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Name/UUID of OAM network
+    cdi_internal_v6_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal v6 CIPA IP of CDI
+      default: 2a00:9a00:a000:1190:0:1:1:2b8d
+    tdcore_dpdk_zone_1_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of DPDK Lan IPs for TDCORE instances on zone 1
+      default:
+      - 192.168.211.9
+      - 192.168.211.11
+      - 192.168.211.13
+      - 192.168.211.15
+      entry_schema:
+        type: string
+    oam_internal_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of OAM01 instance
+      default: 192.168.210.136
+    oam_internal_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of OAM01 instance
+      default: 192.168.210.137
+    cscf_zone_0_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: |
+        Number of CSCF to be deployed on zone 0. This parameter is used to scale the cscf instances.
+      default: 19
+      constraints:
+      - in_range:
+        - 0
+        - 120
+    oam_internal_ip_2:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of OAM01 instance
+      default: 192.168.210.138
+    cscf_zone_1_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of instance names for CSCF instances on zone 1
+      entry_schema:
+        type: string
+    tdcore_zone_0_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of instance names for TDCORE instances on zone 0
+      entry_schema:
+        type: string
+    lbd_uuid_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for LBD01
+    lbd_uuid_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for LBD02
+    cdi_internal_v6_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal v6 IP of CDI02 instance
+      default: 2a00:9a00:a000:1190:0:1:1:2b8c
+    cdi_internal_v6_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal v6 IP of CDI01 instance
+      default: 2a00:9a00:a000:1190:0:1:1:2b8b
+    cdi_uuid_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for CDI02
+    ims_core_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Name/UUID of Core network
+    cdi_uuid_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for CDI01
+    vcscf_internal_network_v6_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: CIDR for for Internal LAN v6
+      default: 2a00:9a00:a000:1190:0:1:1:2b00/120
+    oam_image_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM VM image name
+      default: IMS_17_0_OPENSTACK_OAM_1701400.000
+    tdcore_zone_1_uuids:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of UUIDs generated by cmrepo for TDCORE instances on zone 1
+      entry_schema:
+        type: string
+    vcscf_internal_network_mtu:
+      hidden: false
+      immutable: false
+      type: float
+      description: MTU for internal network interface (eth0)
+      default: 1500
+      constraints:
+      - in_range:
+        - 1000
+        - 9100
+    vcscf_internal_dpdk_network_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: CIDR for for Internal LAN DPDK
+      default: 192.168.211.0/24
+    tdcore_zone_1_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: |
+        Number of TD Core VMs to be deployed zone 1. This parameter is used to scale the TD Core instances.
+      default: 4
+      constraints:
+      - in_range:
+        - 0
+        - 8
+    cif_volume_size_0:
+      hidden: false
+      immutable: false
+      type: float
+      description: Size of Volume for cif VMs
+      default: 300
+      constraints:
+      - in_range:
+        - 1
+        - 300
+    oam_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM VM flavor
+      default: ND.c4r32d30
+    ims_li_v6_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Name/UUID of V6 LI network
+    lbd_internal_dpdk_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal DPDK IP of LBD02 instance
+      default: 192.168.211.2
+    cif_ims_core_v6_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE v6 CIPA IP of CIF
+    lbd_internal_dpdk_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal DPDK IP of LBD01 instance
+      default: 192.168.211.1
+    cdi_image_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: CDI VM image name
+      default: IMS_17_0_OPENSTACK_CSCF_1701400.000
+    oam_uuid_2:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for OAM03
+    oam_uuid_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for OAM02
+    oam_uuid_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for OAM01
+    cif_oam_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM CIPA IP of CIF
+    cif_internal_v6_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP v6 of CIF02 instance
+      default: 2a00:9a00:a000:1190:0:1:1:2b05
+    vnf_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique ID for this VF instance
+    cscf_internal_zone_0_v6_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of Internal Lan v6 IPs for CSCF instances on zone 0
+      default:
+      - 2a00:9a00:a000:1190:0:1:1:2b10
+      - 2a00:9a00:a000:1190:0:1:1:2b12
+      - 2a00:9a00:a000:1190:0:1:1:2b14
+      - 2a00:9a00:a000:1190:0:1:1:2b16
+      - 2a00:9a00:a000:1190:0:1:1:2b18
+      - 2a00:9a00:a000:1190:0:1:1:2b1a
+      - 2a00:9a00:a000:1190:0:1:1:2b1c
+      - 2a00:9a00:a000:1190:0:1:1:2b1e
+      - 2a00:9a00:a000:1190:0:1:1:2b20
+      - 2a00:9a00:a000:1190:0:1:1:2b22
+      - 2a00:9a00:a000:1190:0:1:1:2b24
+      - 2a00:9a00:a000:1190:0:1:1:2b26
+      - 2a00:9a00:a000:1190:0:1:1:2b28
+      - 2a00:9a00:a000:1190:0:1:1:2b2a
+      - 2a00:9a00:a000:1190:0:1:1:2b2c
+      - 2a00:9a00:a000:1190:0:1:1:2b2e
+      - 2a00:9a00:a000:1190:0:1:1:2b30
+      - 2a00:9a00:a000:1190:0:1:1:2b32
+      - 2a00:9a00:a000:1190:0:1:1:2b34
+      entry_schema:
+        type: string
+    cscf_internal_zone_1_v6_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of Internal Lan v6 IPs for CSCF instances on zone 1
+      default:
+      - 2a00:9a00:a000:1190:0:1:1:2b11
+      - 2a00:9a00:a000:1190:0:1:1:2b13
+      - 2a00:9a00:a000:1190:0:1:1:2b15
+      - 2a00:9a00:a000:1190:0:1:1:2b17
+      - 2a00:9a00:a000:1190:0:1:1:2b19
+      - 2a00:9a00:a000:1190:0:1:1:2b1b
+      - 2a00:9a00:a000:1190:0:1:1:2b1d
+      - 2a00:9a00:a000:1190:0:1:1:2b1f
+      - 2a00:9a00:a000:1190:0:1:1:2b21
+      - 2a00:9a00:a000:1190:0:1:1:2b23
+      - 2a00:9a00:a000:1190:0:1:1:2b25
+      - 2a00:9a00:a000:1190:0:1:1:2b27
+      - 2a00:9a00:a000:1190:0:1:1:2b29
+      - 2a00:9a00:a000:1190:0:1:1:2b2b
+      - 2a00:9a00:a000:1190:0:1:1:2b2d
+      - 2a00:9a00:a000:1190:0:1:1:2b2f
+      - 2a00:9a00:a000:1190:0:1:1:2b31
+      - 2a00:9a00:a000:1190:0:1:1:2b33
+      entry_schema:
+        type: string
+    cif_internal_v6_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP v6 of CIF01 instance
+      default: 2a00:9a00:a000:1190:0:1:1:2b04
+    lbd_internal_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of LBD02 instance
+      default: 192.168.210.5
+    cif_oam_vip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM (LI-X1) v4 CIPA of CIF
+    lbd_internal_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: Internal IP of LBD01 instance
+      default: 192.168.210.4
+    cif_volume_id_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: size of the cinder volume used for cif
+    cif_ims_li_v6_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS LI v6 IP of CIF01 instance
+    cif_volume_id_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: size of the cinder volume used for cif
+    cif_ims_li_v6_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS LI v6 IP of CIF02 instance
+    lbd_image_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: CSCF LBD VM image name
+      default: IMS_17_0_OPENSTACK_CSCF_1701400.000
+    tdcore_dpdk_zone_0_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of DPDK Lan IPs for TDCORE instances on zone 0
+      default:
+      - 192.168.211.8
+      - 192.168.211.10
+      - 192.168.211.12
+      - 192.168.211.14
+      entry_schema:
+        type: string
+    cif_uuid_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for CIF01
+    cif_uuid_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: UUID generated by cmrepo for CIF02
+    cif_oam_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM IP of CIF01 instance
+    cif_image_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: CSCF CIF VM image name
+      default: IMS_17_0_OPENSTACK_CSCF_1701400.000
+    vcscf_internal_netmask:
+      hidden: false
+      immutable: false
+      type: string
+      description: Netmask for Internal LAN
+      default: 255.255.255.0
+    vcscf_name_delimeter:
+      hidden: false
+      immutable: false
+      type: string
+      description: 'delimeter used in concatenating different words while naming (ex:
+        "-","_",".",...)'
+      default: _
+      constraints:
+      - valid_values:
+        - '-'
+        - ''
+        - _
+        - .
+    cif_oam_ip_3:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM (LI-X1) v4 IP of CIF02 instance
+    cif_oam_ip_2:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM (LI-X1) v4 IP of CIF01 instance
+    cif_oam_ip_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: OAM IP of CIF02 instance
+    cdi_ims_core_v6_vip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IMS CORE LAN CIPA v6 IP of CDI
+    vcscf_dn:
+      hidden: false
+      immutable: false
+      type: string
+      description: DN name
+    vcscf_du:
+      hidden: false
+      immutable: false
+      type: string
+      description: DU name
+    cscf_internal_zone_0_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of Internal Lan IPs for CSCF instances on zone 0
+      default:
+      - 192.168.210.16
+      - 192.168.210.18
+      - 192.168.210.20
+      - 192.168.210.22
+      - 192.168.210.24
+      - 192.168.210.26
+      - 192.168.210.28
+      - 192.168.210.30
+      - 192.168.210.32
+      - 192.168.210.34
+      - 192.168.210.36
+      - 192.168.210.38
+      - 192.168.210.40
+      - 192.168.210.42
+      - 192.168.210.44
+      - 192.168.210.46
+      - 192.168.210.48
+      - 192.168.210.50
+      - 192.168.210.52
+      entry_schema:
+        type: string
+    tdcore_internal_zone_0_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of Internal Lan IPs for TDCORE instances on zone 0
+      default:
+      - 192.168.210.8
+      - 192.168.210.10
+      - 192.168.210.12
+      - 192.168.210.14
+      entry_schema:
+        type: string
+    lbd_name_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: LBD02 instance name
+    lbd_name_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: LBD01 instance name
+  node_templates:
+    cscf_RSG:
+      type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
+      properties:
+        name:
+          str_replace:
+            template: $VNF$DELsecurity$DELgroup
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+        description: Allow all
+        rules:
+        - ethertype: IPv4
+          direction: ingress
+        - ethertype: IPv4
+          direction: egress
+        - ethertype: IPv6
+          direction: ingress
+        - ethertype: IPv6
+          direction: egress
+      requirements:
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: cif_internal_vip_0_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: cif_oam_vip_1_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: cif_ims_core_v6_vip_2_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: cif_oam_vip_3_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: cif_ims_li_v6_vip_4_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: lbd_internal_dpdk_vip_1_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: lbd_ims_core_v6_vip_2_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: cdi_internal_v6_vip_0_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: cdi_ims_core_v6_vip_1_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: oam_internal_vip_0_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: tosca.capabilities.Attachment
+          node: oam_oam_vip_1_port
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_oam_oam_internal_0_port
+          node: abstract_oam
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_oam_oam_oam_0_port
+          node: abstract_oam
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_oam_oam_internal_1_port
+          node: abstract_oam_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_oam_oam_oam_1_port
+          node: abstract_oam_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_oam_oam_internal_2_port
+          node: abstract_oam_2
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_oam_oam_oam_2_port
+          node: abstract_oam_2
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_internal_0_port
+          node: abstract_cif
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_oam_0_port_1
+          node: abstract_cif
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_ims_core_0_port
+          node: abstract_cif
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_oam_0_port_3
+          node: abstract_cif
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_ims_li_0_port
+          node: abstract_cif
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_internal_1_port
+          node: abstract_cif_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_oam_1_port_1
+          node: abstract_cif_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_ims_core_1_port
+          node: abstract_cif_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_oam_1_port_3
+          node: abstract_cif_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cif_cif_ims_li_1_port
+          node: abstract_cif_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_lbd_lbd_internal_0_port
+          node: abstract_lbd_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_lbd_lbd_dpdk_0_port
+          node: abstract_lbd_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_lbd_lbd_ims_core_0_port
+          node: abstract_lbd_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_lbd_lbd_internal_1_port
+          node: abstract_lbd
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_lbd_lbd_dpdk_1_port
+          node: abstract_lbd
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_lbd_lbd_ims_core_1_port
+          node: abstract_lbd
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cdi_cdi_internal_0_port
+          node: abstract_cdi
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cdi_cdi_ims_core_0_port
+          node: abstract_cdi
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cdi_cdi_internal_1_port
+          node: abstract_cdi_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cdi_cdi_ims_core_1_port
+          node: abstract_cdi_1
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_tdcore_internal_0_port_0
+          node: tdcore_zone_0_RRG
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_tdcore_dpdk_0_port_1
+          node: tdcore_zone_0_RRG
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_tdcore_internal_0_port_0
+          node: tdcore_zone_1_RRG
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_tdcore_dpdk_0_port_1
+          node: tdcore_zone_1_RRG
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cscf_internal_0_port_0
+          node: cscf_zone_0_RRG
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_cscf_internal_0_port_0
+          node: cscf_zone_1_RRG
+          relationship: org.openecomp.relationships.AttachesTo
+    cdi_internal_v6_vip_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: cdi_internal_v6_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELcdi$DELinternal$DELvip$DELv6
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network: cscf_internal_network_0
+      requirements:
+      - link:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    cscf_internal_dpdk_network_0:
+      type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
+      properties:
+        dhcp_enabled: false
+        shared: false
+        admin_state_up: true
+        network_name:
+          str_replace:
+            template: $PREFIX$DELinternal$DELdpdk$DELnetwork
+            params:
+              $PREFIX:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        subnets:
+          cscf_internal_dpdk_subnet_0:
+            enable_dhcp: false
+            name:
+              str_replace:
+                template: $PREFIX$DELinternal$DELdpdk$DELsubnet
+                params:
+                  $PREFIX:
+                    get_input: vnf_name
+                  $DEL:
+                    get_input: vcscf_name_delimeter
+            cidr:
+              get_input: vcscf_internal_dpdk_network_cidr
+    cif_ims_core_v6_vip_2_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: cif_ims_core_v6_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELcif$DELims$DELcore$DELvip$DELv6
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network_role_tag: ims_core
+        network:
+          get_input: ims_core_net_id
+    abstract_cdi_1:
+      type: org.openecomp.resource.abstract.nodes.cdi_1
+      directives:
+      - substitutable
+      properties:
+        port_cdi_ims_core_1_port_security_groups:
+        - - cscf_RSG
+        vm_flavor_name:
+          get_input: cdi_flavor_name
+        port_cdi_internal_1_port_security_groups:
+        - - cscf_RSG
+        port_cdi_ims_core_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        vm_image_name:
+          get_input: cdi_image_name
+        compute_cdi_scheduler_hints:
+        - group: cdi_server_group_group
+        port_cdi_ims_core_1_port_fixed_ips:
+        - ip_address:
+            get_input: cdi_ims_core_v6_ip_1
+        compute_cdi_name:
+        - get_input: cdi_name_1
+        port_cdi_ims_core_1_port_network_role_tag: ims_core
+        port_cdi_ims_core_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: cdi_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        compute_cdi_user_data_format:
+        - RAW
+        port_cdi_ims_core_1_port_network:
+        - get_input: ims_core_net_id
+        compute_cdi_availability_zone:
+        - get_input: availability_zone_1
+        port_cdi_internal_1_port_network:
+        - cscf_internal_network_0
+        port_cdi_ims_core_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cdi_internal_1_port_allowed_address_pairs:
+        - ip_address: 0.0.0.0/1
+        - ip_address: 128.0.0.0/1
+        - ip_address: ::/1
+        - ip_address: 8000::/1
+        compute_cdi_config_drive:
+        - true
+        port_cdi_internal_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cdi_ims_core_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: cdi_ims_core_v6_vip_0
+        port_cdi_internal_1_port_fixed_ips:
+        - ip_address:
+            get_input: cdi_internal_ip_1
+        - ip_address:
+            get_input: cdi_internal_v6_ip_1
+        port_cdi_internal_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: cdi_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cdi_internal_1_port_ip_requirements:
+        - ip_version: 6
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        compute_cdi_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: cdi
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        service_template_filter:
+          substitute_service_template: Nested_cdi_1ServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: cdi
+        nfc_naming_code: cdi
+      requirements:
+      - link_cdi_cdi_internal_1_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_cdi_cdi_internal_1_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    cif_internal_vip_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: cif_internal_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELcif$DELinternal$DELvip
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network: cscf_internal_network_0
+      requirements:
+      - link:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    cscf_zone_1_RRG:
+      type: org.openecomp.resource.abstract.nodes.heat.cscf
+      directives:
+      - substitutable
+      properties:
+        vf_module_id:
+          get_input: vf_module_id
+        internal_net_id: cscf_internal_network_0
+        vcscf_release:
+          get_input: vcscf_release
+        cscf_internal_ips:
+          get_input: cscf_internal_zone_1_ips
+        vcscf_gateway:
+          get_input: oam_internal_vip_0
+        vnf_name:
+          get_input: vnf_name
+        vf_module_name:
+          get_input: vf_module_name
+        cscf_image_name:
+          get_input: cscf_image_name
+        cscf_names:
+          get_input: cscf_zone_1_names
+        service_template_filter:
+          substitute_service_template: nested_cscfServiceTemplate.yaml
+          count:
+            get_input: cscf_zone_1_count
+          mandatory: false
+        vcscf_swrepo_address:
+          get_input: vcscf_swrepo_address
+        cscf_uuids:
+          get_input: cscf_zone_1_uuids
+        vnf_id:
+          get_input: vnf_id
+        availability_zone_0:
+          get_input: availability_zone_1
+        cscf_internal_v6_ips:
+          get_input: cscf_internal_zone_1_v6_ips
+        cscf_flavor_name:
+          get_input: cscf_flavor_name
+        vcscf_cmrepo_address:
+          get_input: vcscf_cmrepo_address
+        vcscf_dns_address:
+          get_input: vcscf_dns_address
+        vcscf_internal_network_mtu:
+          get_input: vcscf_internal_network_mtu
+        port_cscf_internal_0_port_0_ip_requirements:
+        - ip_version: 6
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        index:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vcscf_internal_netmask:
+          get_input: vcscf_internal_netmask
+        vcscf_name_delimeter:
+          get_input: vcscf_name_delimeter
+        port_cscf_internal_0_port_0_network_role_tag: internal
+        vcscf_dn:
+          get_input: vcscf_dn
+        vcscf_du:
+          get_input: vcscf_du
+        port_cscf_internal_0_port_0_mac_requirements:
+          mac_count_required:
+            is_required: false
+        cscf_security_group: cscf_RSG
+      requirements:
+      - link_cscf_internal_0_port_0:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    oam_oam_vip_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: oam_oam_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELoam$DELoam$DELvip
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network_role_tag: oam
+        network:
+          get_input: oam_net_id
+    tdcore_zone_0_RRG:
+      type: org.openecomp.resource.abstract.nodes.heat.tdcore
+      directives:
+      - substitutable
+      properties:
+        vf_module_id:
+          get_input: vf_module_id
+        internal_net_id: cscf_internal_network_0
+        vcscf_release:
+          get_input: vcscf_release
+        tdcore_security_group: cscf_RSG
+        tdcore_names:
+          get_input: tdcore_zone_0_names
+        port_tdcore_dpdk_0_port_1_network_role_tag: internal_dpdk
+        port_tdcore_dpdk_0_port_1_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        vcscf_gateway:
+          get_input: oam_internal_vip_0
+        vnf_name:
+          get_input: vnf_name
+        internal_dpdk_net_id: cscf_internal_dpdk_network_0
+        vf_module_name:
+          get_input: vf_module_name
+        service_template_filter:
+          substitute_service_template: nested_tdcoreServiceTemplate.yaml
+          count:
+            get_input: tdcore_zone_0_count
+          mandatory: false
+        vcscf_swrepo_address:
+          get_input: vcscf_swrepo_address
+        vnf_id:
+          get_input: vnf_id
+        availability_zone_0:
+          get_input: availability_zone_0
+        port_tdcore_dpdk_0_port_1_mac_requirements:
+          mac_count_required:
+            is_required: false
+        tdcore_flavor_name:
+          get_input: tdcore_flavor_name
+        tdcore_image_name:
+          get_input: tdcore_image_name
+        vcscf_cmrepo_address:
+          get_input: vcscf_cmrepo_address
+        vcscf_dns_address:
+          get_input: vcscf_dns_address
+        vcscf_internal_network_mtu:
+          get_input: vcscf_internal_network_mtu
+        tdcore_server_group: tdcore_zone_0_server_group_group
+        index:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vcscf_internal_netmask:
+          get_input: vcscf_internal_netmask
+        port_tdcore_internal_0_port_0_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        vcscf_name_delimeter:
+          get_input: vcscf_name_delimeter
+        tdcore_internal_ips:
+          get_input: tdcore_internal_zone_0_ips
+        tdcore_dpdk_ips:
+          get_input: tdcore_dpdk_zone_0_ips
+        tdcore_uuids:
+          get_input: tdcore_zone_0_uuids
+        vcscf_dn:
+          get_input: vcscf_dn
+        port_tdcore_internal_0_port_0_network_role_tag: internal
+        port_tdcore_internal_0_port_0_mac_requirements:
+          mac_count_required:
+            is_required: false
+        vcscf_du:
+          get_input: vcscf_du
+      requirements:
+      - link_tdcore_internal_0_port_0:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - link_tdcore_dpdk_0_port_1:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.DependsOn
+    lbd_ims_core_v6_vip_2_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: lbd_ims_core_v6_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELlbd$DELims$DELcore$DELvip$DELv6
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network_role_tag: ims_core
+        network:
+          get_input: ims_core_net_id
+    cif_oam_vip_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: cif_oam_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELcif$DELoam$DELvip0
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network_role_tag: oam
+        network:
+          get_input: oam_net_id
+    oam_volume_0:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        availability_zone:
+          get_input: availability_zone_0
+        size: '(get_input : oam_volume_size_0) * 1024'
+        name:
+          str_replace:
+            template: $VNF$DELoam$DELvolume$DEL0
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+    abstract_lbd:
+      type: org.openecomp.resource.abstract.nodes.lbd
+      directives:
+      - substitutable
+      properties:
+        port_lbd_ims_core_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: lbd_ims_core_v6_vip_0
+        compute_lbd_user_data_format:
+        - RAW
+        compute_lbd_config_drive:
+        - true
+        port_lbd_internal_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: lbd_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_lbd_dpdk_1_port_allowed_address_pairs:
+        - ip_address: 0.0.0.0/1
+        - ip_address: 128.0.0.0/1
+        - ip_address: ::/1
+        - ip_address: 8000::/1
+        port_lbd_ims_core_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_lbd_dpdk_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        vm_flavor_name:
+          get_input: lbd_flavor_name
+        port_lbd_ims_core_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        compute_lbd_availability_zone:
+        - get_input: availability_zone_1
+        port_lbd_internal_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        port_lbd_internal_1_port_security_groups:
+        - - cscf_RSG
+        vm_image_name:
+          get_input: lbd_image_name
+        port_lbd_dpdk_1_port_network:
+        - cscf_internal_dpdk_network_0
+        port_lbd_ims_core_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth2
+            params:
+              $PREFIX:
+                get_input: lbd_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_lbd_ims_core_1_port_security_groups:
+        - - cscf_RSG
+        port_lbd_ims_core_1_port_fixed_ips:
+        - ip_address:
+            get_input: lbd_ims_core_v6_ip_1
+        port_lbd_internal_1_port_fixed_ips:
+        - ip_address:
+            get_input: lbd_internal_ip_1
+        port_lbd_ims_core_1_port_network:
+        - get_input: ims_core_net_id
+        compute_lbd_scheduler_hints:
+        - group: lbd_server_group_group
+        port_lbd_dpdk_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: lbd_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_lbd_dpdk_1_port_security_groups:
+        - - cscf_RSG
+        port_lbd_dpdk_1_port_fixed_ips:
+        - ip_address:
+            get_input: lbd_internal_dpdk_ip_1
+        port_lbd_internal_1_port_network:
+        - cscf_internal_network_0
+        port_lbd_dpdk_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        compute_lbd_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: lbd
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        port_lbd_internal_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        compute_lbd_name:
+        - get_input: lbd_name_1
+        port_lbd_ims_core_1_port_network_role_tag: ims_core
+        service_template_filter:
+          substitute_service_template: Nested_lbdServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: lbd
+        nfc_naming_code: lbd
+      requirements:
+      - link_lbd_lbd_internal_1_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_lbd_lbd_internal_1_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+      - link_lbd_lbd_dpdk_1_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_lbd_lbd_dpdk_1_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.DependsOn
+    oam_internal_vip_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: oam_internal_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELoam$DELinternal$DELvip
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network: cscf_internal_network_0
+      requirements:
+      - link:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    tdcore_zone_1_RRG:
+      type: org.openecomp.resource.abstract.nodes.heat.tdcore
+      directives:
+      - substitutable
+      properties:
+        vf_module_id:
+          get_input: vf_module_id
+        internal_net_id: cscf_internal_network_0
+        vcscf_release:
+          get_input: vcscf_release
+        tdcore_security_group: cscf_RSG
+        tdcore_names:
+          get_input: tdcore_zone_1_names
+        port_tdcore_dpdk_0_port_1_network_role_tag: internal_dpdk
+        port_tdcore_dpdk_0_port_1_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        vcscf_gateway:
+          get_input: oam_internal_vip_0
+        vnf_name:
+          get_input: vnf_name
+        internal_dpdk_net_id: cscf_internal_dpdk_network_0
+        vf_module_name:
+          get_input: vf_module_name
+        service_template_filter:
+          substitute_service_template: nested_tdcoreServiceTemplate.yaml
+          count:
+            get_input: tdcore_zone_1_count
+          mandatory: false
+        vcscf_swrepo_address:
+          get_input: vcscf_swrepo_address
+        vnf_id:
+          get_input: vnf_id
+        availability_zone_0:
+          get_input: availability_zone_1
+        port_tdcore_dpdk_0_port_1_mac_requirements:
+          mac_count_required:
+            is_required: false
+        tdcore_flavor_name:
+          get_input: tdcore_flavor_name
+        tdcore_image_name:
+          get_input: tdcore_image_name
+        vcscf_cmrepo_address:
+          get_input: vcscf_cmrepo_address
+        vcscf_dns_address:
+          get_input: vcscf_dns_address
+        vcscf_internal_network_mtu:
+          get_input: vcscf_internal_network_mtu
+        tdcore_server_group: tdcore_zone_1_server_group_group
+        index:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vcscf_internal_netmask:
+          get_input: vcscf_internal_netmask
+        port_tdcore_internal_0_port_0_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        vcscf_name_delimeter:
+          get_input: vcscf_name_delimeter
+        tdcore_internal_ips:
+          get_input: tdcore_internal_zone_1_ips
+        tdcore_dpdk_ips:
+          get_input: tdcore_dpdk_zone_1_ips
+        tdcore_uuids:
+          get_input: tdcore_zone_1_uuids
+        vcscf_dn:
+          get_input: vcscf_dn
+        port_tdcore_internal_0_port_0_network_role_tag: internal
+        port_tdcore_internal_0_port_0_mac_requirements:
+          mac_count_required:
+            is_required: false
+        vcscf_du:
+          get_input: vcscf_du
+      requirements:
+      - link_tdcore_internal_0_port_0:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - link_tdcore_dpdk_0_port_1:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.DependsOn
+    oam_volume_1:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        availability_zone:
+          get_input: availability_zone_1
+        size: '(get_input : oam_volume_size_0) * 1024'
+        name:
+          str_replace:
+            template: $VNF$DELoam$DELvolume$DEL1
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+    abstract_cdi:
+      type: org.openecomp.resource.abstract.nodes.cdi
+      directives:
+      - substitutable
+      properties:
+        port_cdi_internal_0_port_ip_requirements:
+        - ip_version: 6
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        vm_flavor_name:
+          get_input: cdi_flavor_name
+        port_cdi_ims_core_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: cdi_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cdi_internal_0_port_allowed_address_pairs:
+        - ip_address: 0.0.0.0/1
+        - ip_address: 128.0.0.0/1
+        - ip_address: ::/1
+        - ip_address: 8000::/1
+        vm_image_name:
+          get_input: cdi_image_name
+        compute_cdi_scheduler_hints:
+        - group: cdi_server_group_group
+        compute_cdi_name:
+        - get_input: cdi_name_0
+        port_cdi_ims_core_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cdi_ims_core_0_port_network_role_tag: ims_core
+        compute_cdi_user_data_format:
+        - RAW
+        port_cdi_internal_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: cdi_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        compute_cdi_availability_zone:
+        - get_input: availability_zone_0
+        port_cdi_ims_core_0_port_network:
+        - get_input: ims_core_net_id
+        port_cdi_internal_0_port_network:
+        - cscf_internal_network_0
+        port_cdi_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input: cdi_internal_ip_0
+        - ip_address:
+            get_input: cdi_internal_v6_ip_0
+        compute_cdi_config_drive:
+        - true
+        port_cdi_internal_0_port_security_groups:
+        - - cscf_RSG
+        port_cdi_ims_core_0_port_security_groups:
+        - - cscf_RSG
+        port_cdi_ims_core_0_port_fixed_ips:
+        - ip_address:
+            get_input: cdi_ims_core_v6_ip_0
+        port_cdi_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cdi_ims_core_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: cdi_ims_core_v6_vip_0
+        compute_cdi_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: cdi
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        port_cdi_ims_core_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        service_template_filter:
+          substitute_service_template: Nested_cdiServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: cdi
+        nfc_naming_code: cdi
+      requirements:
+      - link_cdi_cdi_internal_0_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_cdi_cdi_internal_0_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    cif_volume_0:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        availability_zone:
+          get_input: availability_zone_0
+        size: '(get_input : cif_volume_size_0) * 1024'
+        name:
+          str_replace:
+            template: $VNF$DELcif$DELvolume$DEL0
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+    cif_volume_1:
+      type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume
+      properties:
+        availability_zone:
+          get_input: availability_zone_1
+        size: '(get_input : cif_volume_size_0) * 1024'
+        name:
+          str_replace:
+            template: $VNF$DELcif$DELvolume$DEL1
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+    abstract_oam_1:
+      type: org.openecomp.resource.abstract.nodes.oam_1
+      directives:
+      - substitutable
+      properties:
+        port_oam_internal_1_port_security_groups:
+        - - cscf_RSG
+        port_oam_oam_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: oam_oam_vip_0
+        vm_flavor_name:
+          get_input: oam_flavor_name
+        port_oam_oam_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_oam_oam_1_port_network_role_tag: oam
+        port_oam_oam_1_port_security_groups:
+        - - cscf_RSG
+        vm_image_name:
+          get_input: oam_image_name
+        compute_oam_config_drive:
+        - true
+        port_oam_internal_1_port_network:
+        - cscf_internal_network_0
+        port_oam_oam_1_port_fixed_ips:
+        - ip_address:
+            get_input: oam_oam_ip_1
+        port_oam_internal_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        port_oam_oam_1_port_network:
+        - get_input: oam_net_id
+        port_oam_internal_1_port_allowed_address_pairs:
+        - ip_address: 0.0.0.0/1
+        - ip_address: 128.0.0.0/1
+        - ip_address: ::/1
+        - ip_address: 8000::/1
+        compute_oam_user_data_format:
+        - RAW
+        port_oam_internal_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: oam_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_oam_internal_1_port_fixed_ips:
+        - ip_address:
+            get_input: oam_internal_ip_1
+        port_oam_oam_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: oam_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        compute_oam_scheduler_hints:
+        - group: oam_server_group_group
+        compute_oam_availability_zone:
+        - get_input: availability_zone_1
+        compute_oam_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: oam
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        port_oam_internal_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        compute_oam_name:
+        - get_input: oam_name_1
+        port_oam_oam_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        service_template_filter:
+          substitute_service_template: Nested_oam_1ServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: oam
+        nfc_naming_code: oam
+      requirements:
+      - link_oam_oam_internal_1_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_oam_oam_internal_1_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    abstract_oam_2:
+      type: org.openecomp.resource.abstract.nodes.oam_2
+      directives:
+      - substitutable
+      properties:
+        port_oam_oam_2_port_network_role_tag: oam
+        port_oam_oam_2_port_security_groups:
+        - - cscf_RSG
+        port_oam_oam_2_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: oam_name_2
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_oam_internal_2_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: oam_name_2
+              $DEL:
+                get_input: vcscf_name_delimeter
+        vm_flavor_name:
+          get_input: oam_flavor_name
+        port_oam_internal_2_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        vm_image_name:
+          get_input: oam_image_name
+        compute_oam_config_drive:
+        - true
+        port_oam_internal_2_port_allowed_address_pairs:
+        - ip_address: 0.0.0.0/1
+        - ip_address: 128.0.0.0/1
+        - ip_address: ::/1
+        - ip_address: 8000::/1
+        port_oam_internal_2_port_network:
+        - cscf_internal_network_0
+        port_oam_internal_2_port_fixed_ips:
+        - ip_address:
+            get_input: oam_internal_ip_2
+        port_oam_oam_2_port_fixed_ips:
+        - ip_address:
+            get_input: oam_oam_ip_2
+        port_oam_oam_2_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_oam_oam_2_port_network:
+        - get_input: oam_net_id
+        compute_oam_user_data_format:
+        - RAW
+        port_oam_internal_2_port_security_groups:
+        - - cscf_RSG
+        port_oam_oam_2_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        compute_oam_scheduler_hints:
+        - group: oam_server_group_group
+        port_oam_internal_2_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        compute_oam_availability_zone:
+        - get_input: availability_zone_0
+        compute_oam_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: oam
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        port_oam_oam_2_port_allowed_address_pairs:
+        - ip_address:
+            get_input: oam_oam_vip_0
+        compute_oam_name:
+        - get_input: oam_name_2
+        service_template_filter:
+          substitute_service_template: Nested_oam_2ServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: oam
+        nfc_naming_code: oam
+      requirements:
+      - link_oam_oam_internal_2_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_oam_oam_internal_2_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    cif_ims_li_v6_vip_4_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: cif_ims_li_v6_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELcif$DELims$DELli$DELvip$DELv6
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network_role_tag: ims_li_v6
+        network:
+          get_input: ims_li_v6_net_id
+    cscf_internal_network_0:
+      type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
+      properties:
+        dhcp_enabled: false
+        shared: false
+        ip_version: 4
+        admin_state_up: true
+        network_name:
+          str_replace:
+            template: $PREFIX$DELinternal$DELnetwork
+            params:
+              $PREFIX:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        subnets:
+          cscf_internal_subnet_0:
+            enable_dhcp: false
+            ip_version: 4
+            name:
+              str_replace:
+                template: $PREFIX$DELinternal$DELsubnet
+                params:
+                  $PREFIX:
+                    get_input: vnf_name
+                  $DEL:
+                    get_input: vcscf_name_delimeter
+            cidr:
+              get_input: vcscf_internal_network_cidr
+          cscf_internal_subnet_v6_0:
+            enable_dhcp: false
+            ip_version: 6
+            name:
+              str_replace:
+                template: $PREFIX$DELinternal$DELsubnetv6
+                params:
+                  $PREFIX:
+                    get_input: vnf_name
+                  $DEL:
+                    get_input: vcscf_name_delimeter
+            cidr:
+              get_input: vcscf_internal_network_v6_cidr
+    abstract_oam:
+      type: org.openecomp.resource.abstract.nodes.oam
+      directives:
+      - substitutable
+      properties:
+        port_oam_oam_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: oam_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_oam_oam_0_port_fixed_ips:
+        - ip_address:
+            get_input: oam_oam_ip_0
+        vm_flavor_name:
+          get_input: oam_flavor_name
+        port_oam_oam_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_oam_internal_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        port_oam_internal_0_port_network:
+        - cscf_internal_network_0
+        vm_image_name:
+          get_input: oam_image_name
+        compute_oam_config_drive:
+        - true
+        port_oam_internal_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: oam_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_oam_oam_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: oam_oam_vip_0
+        port_oam_internal_0_port_security_groups:
+        - - cscf_RSG
+        port_oam_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input: oam_internal_ip_0
+        port_oam_oam_0_port_network_role_tag: oam
+        compute_oam_user_data_format:
+        - RAW
+        port_oam_oam_0_port_network:
+        - get_input: oam_net_id
+        port_oam_oam_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_oam_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        compute_oam_scheduler_hints:
+        - group: oam_server_group_group
+        port_oam_internal_0_port_allowed_address_pairs:
+        - ip_address: 0.0.0.0/1
+        - ip_address: 128.0.0.0/1
+        - ip_address: ::/1
+        - ip_address: 8000::/1
+        compute_oam_availability_zone:
+        - get_input: availability_zone_0
+        compute_oam_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: oam
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        compute_oam_name:
+        - get_input: oam_name_0
+        port_oam_oam_0_port_security_groups:
+        - - cscf_RSG
+        service_template_filter:
+          substitute_service_template: Nested_oamServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: oam
+        nfc_naming_code: oam
+      requirements:
+      - link_oam_oam_internal_0_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_oam_oam_internal_0_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    abstract_lbd_1:
+      type: org.openecomp.resource.abstract.nodes.lbd_1
+      directives:
+      - substitutable
+      properties:
+        compute_lbd_user_data_format:
+        - RAW
+        compute_lbd_config_drive:
+        - true
+        port_lbd_dpdk_0_port_fixed_ips:
+        - ip_address:
+            get_input: lbd_internal_dpdk_ip_0
+        port_lbd_internal_0_port_security_groups:
+        - - cscf_RSG
+        vm_flavor_name:
+          get_input: lbd_flavor_name
+        port_lbd_dpdk_0_port_security_groups:
+        - - cscf_RSG
+        compute_lbd_availability_zone:
+        - get_input: availability_zone_0
+        port_lbd_dpdk_0_port_allowed_address_pairs:
+        - ip_address: 0.0.0.0/1
+        - ip_address: 128.0.0.0/1
+        - ip_address: ::/1
+        - ip_address: 8000::/1
+        vm_image_name:
+          get_input: lbd_image_name
+        port_lbd_dpdk_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: lbd_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_lbd_dpdk_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        port_lbd_ims_core_0_port_network:
+        - get_input: ims_core_net_id
+        port_lbd_dpdk_0_port_network:
+        - cscf_internal_dpdk_network_0
+        port_lbd_ims_core_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_lbd_ims_core_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: lbd_ims_core_v6_vip_0
+        port_lbd_internal_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: lbd_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_lbd_ims_core_0_port_network_role_tag: ims_core
+        compute_lbd_scheduler_hints:
+        - group: lbd_server_group_group
+        port_lbd_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_lbd_ims_core_0_port_fixed_ips:
+        - ip_address:
+            get_input: lbd_ims_core_v6_ip_0
+        port_lbd_ims_core_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_lbd_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input: lbd_internal_ip_0
+        port_lbd_internal_0_port_network:
+        - cscf_internal_network_0
+        port_lbd_dpdk_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        compute_lbd_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: lbd
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        compute_lbd_name:
+        - get_input: lbd_name_0
+        port_lbd_internal_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        port_lbd_ims_core_0_port_security_groups:
+        - - cscf_RSG
+        port_lbd_ims_core_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth2
+            params:
+              $PREFIX:
+                get_input: lbd_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        service_template_filter:
+          substitute_service_template: Nested_lbd_1ServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: lbd
+        nfc_naming_code: lbd
+      requirements:
+      - link_lbd_lbd_internal_0_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_lbd_lbd_internal_0_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+      - link_lbd_lbd_dpdk_0_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_lbd_lbd_dpdk_0_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.DependsOn
+       - dependency:
+           capability: tosca.capabilities.Node
+           node: cscf_internal_network_0
+           relationship: tosca.relationships.DependsOn
+          count:
+            get_input: cscf_zone_0_count
+          mandatory: false
+        vcscf_swrepo_address:
+          get_input: vcscf_swrepo_address
+        cscf_uuids:
+          get_input: cscf_zone_0_uuids
+        vnf_id:
+          get_input: vnf_id
+        availability_zone_0:
+          get_input: availability_zone_0
+        cscf_internal_v6_ips:
+          get_input: cscf_internal_zone_0_v6_ips
+        cscf_flavor_name:
+          get_input: cscf_flavor_name
+        vcscf_cmrepo_address:
+          get_input: vcscf_cmrepo_address
+        vcscf_dns_address:
+          get_input: vcscf_dns_address
+        vcscf_internal_network_mtu:
+          get_input: vcscf_internal_network_mtu
+        port_cscf_internal_0_port_0_ip_requirements:
+        - ip_version: 6
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        index:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vcscf_internal_netmask:
+          get_input: vcscf_internal_netmask
+        vcscf_name_delimeter:
+          get_input: vcscf_name_delimeter
+        port_cscf_internal_0_port_0_network_role_tag: internal
+        vcscf_dn:
+          get_input: vcscf_dn
+        vcscf_du:
+          get_input: vcscf_du
+        port_cscf_internal_0_port_0_mac_requirements:
+          mac_count_required:
+            is_required: false
+        cscf_security_group: cscf_RSG
+      requirements:
+      - link_cscf_internal_0_port_0:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    lbd_internal_dpdk_vip_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: lbd_internal_dpdk_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELlbd$DELinternal$DELdpdk$DELvip
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network: cscf_internal_dpdk_network_0
+      requirements:
+      - link:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_dpdk_network_0
+          relationship: tosca.relationships.DependsOn
+    cif_oam_vip_3_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: cif_oam_vip_1
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELcif$DELoam$DELvip1
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network_role_tag: oam
+        network:
+          get_input: oam_net_id
+    cdi_ims_core_v6_vip_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:
+        - cscf_RSG
+        fixed_ips:
+        - ip_address:
+            get_input: cdi_ims_core_v6_vip_0
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        name:
+          str_replace:
+            template: $NAME$DELcdi$DELims$DELdb$DELvip$DELv6
+            params:
+              $NAME:
+                get_input: vnf_name
+              $DEL:
+                get_input: vcscf_name_delimeter
+        network_role_tag: ims_core
+        network:
+          get_input: ims_core_net_id
+    abstract_cif:
+      type: org.openecomp.resource.abstract.nodes.cif
+      directives:
+      - substitutable
+      properties:
+        port_cif_ims_core_0_port_network:
+        - get_input: ims_core_net_id
+        port_cif_oam_0_port_1_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: cif_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cif_oam_0_port_1_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_oam_vip_0
+        port_cif_oam_0_port_1_fixed_ips:
+        - ip_address:
+            get_input: cif_oam_ip_0
+        vm_flavor_name:
+          get_input: cif_flavor_name
+        port_cif_internal_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: cif_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        vm_image_name:
+          get_input: cif_image_name
+        compute_cif_user_data_format:
+        - RAW
+        port_cif_oam_0_port_1_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cif_ims_li_0_port_fixed_ips:
+        - ip_address:
+            get_input: cif_ims_li_v6_ip_0
+        compute_cif_scheduler_hints:
+        - group: cif_server_group_group
+        port_cif_oam_0_port_1_security_groups:
+        - - cscf_RSG
+        port_cif_ims_li_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        compute_cif_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: cif
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        port_cif_ims_li_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth4
+            params:
+              $PREFIX:
+                get_input: cif_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cif_ims_core_0_port_fixed_ips:
+        - ip_address:
+            get_input: cif_ims_core_v6_ip_0
+        port_cif_oam_0_port_3_network_role_tag: oam
+        port_cif_ims_core_0_port_security_groups:
+        - - cscf_RSG
+        port_cif_ims_core_0_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth2
+            params:
+              $PREFIX:
+                get_input: cif_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cif_internal_0_port_network:
+        - cscf_internal_network_0
+        port_cif_oam_0_port_3_security_groups:
+        - - cscf_RSG
+        port_cif_ims_core_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cif_ims_li_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_oam_0_port_1_network:
+        - get_input: oam_net_id
+        port_cif_ims_li_0_port_security_groups:
+        - - cscf_RSG
+        compute_cif_name:
+        - get_input: cif_name_0
+        compute_cif_availability_zone:
+        - get_input: availability_zone_0
+        port_cif_oam_0_port_1_network_role_tag: oam
+        port_cif_oam_0_port_3_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_ims_core_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_ims_core_v6_vip_0
+        port_cif_oam_0_port_3_fixed_ips:
+        - ip_address:
+            get_input: cif_oam_ip_2
+        port_cif_ims_core_0_port_network_role_tag: ims_core
+        port_cif_ims_li_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_ims_li_v6_vip_0
+        port_cif_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_ims_li_0_port_network:
+        - get_input: ims_li_v6_net_id
+        port_cif_internal_0_port_security_groups:
+        - - cscf_RSG
+        port_cif_ims_li_0_port_network_role_tag: ims_li_v6
+        port_cif_oam_0_port_3_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_oam_vip_1
+        port_cif_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input: cif_internal_ip_0
+        - ip_address:
+            get_input: cif_internal_v6_ip_0
+        compute_cif_config_drive:
+        - true
+        port_cif_oam_0_port_3_name:
+        - str_replace:
+            template: $PREFIX$DELeth3
+            params:
+              $PREFIX:
+                get_input: cif_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cif_oam_0_port_3_network:
+        - get_input: oam_net_id
+        port_cif_ims_core_0_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_internal_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_internal_vip_0
+        port_cif_oam_0_port_1_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_oam_0_port_3_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cif_internal_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        service_template_filter:
+          substitute_service_template: Nested_cifServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: cif
+        nfc_naming_code: cif
+      requirements:
+      - link_cif_cif_internal_0_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_cif_cif_internal_0_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+    abstract_cif_1:
+      type: org.openecomp.resource.abstract.nodes.cif_1
+      directives:
+      - substitutable
+      properties:
+        port_cif_oam_1_port_1_name:
+        - str_replace:
+            template: $PREFIX$DELeth1
+            params:
+              $PREFIX:
+                get_input: cif_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cif_ims_core_1_port_security_groups:
+        - - cscf_RSG
+        port_cif_oam_1_port_1_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_oam_1_port_3_network:
+        - get_input: oam_net_id
+        vm_flavor_name:
+          get_input: cif_flavor_name
+        vm_image_name:
+          get_input: cif_image_name
+        compute_cif_user_data_format:
+        - RAW
+        port_cif_oam_1_port_3_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_oam_vip_1
+        compute_cif_scheduler_hints:
+        - group: cif_server_group_group
+        port_cif_oam_1_port_3_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cif_internal_1_port_security_groups:
+        - - cscf_RSG
+        port_cif_oam_1_port_1_network:
+        - get_input: oam_net_id
+        port_cif_ims_core_1_port_network_role_tag: ims_core
+        port_cif_ims_li_1_port_security_groups:
+        - - cscf_RSG
+        port_cif_ims_li_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_ims_li_v6_vip_0
+        port_cif_internal_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_internal_vip_0
+        port_cif_oam_1_port_3_security_groups:
+        - - cscf_RSG
+        compute_cif_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vm_role: cif
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+          vf_module_name:
+            get_input: vf_module_name
+        port_cif_oam_1_port_1_fixed_ips:
+        - ip_address:
+            get_input: cif_oam_ip_1
+        port_cif_internal_1_port_network:
+        - cscf_internal_network_0
+        port_cif_ims_core_1_port_network:
+        - get_input: ims_core_net_id
+        port_cif_oam_1_port_3_fixed_ips:
+        - ip_address:
+            get_input: cif_oam_ip_3
+        port_cif_oam_1_port_1_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cif_ims_core_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        compute_cif_name:
+        - get_input: cif_name_1
+        compute_cif_availability_zone:
+        - get_input: availability_zone_1
+        port_cif_internal_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cif_ims_li_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth4
+            params:
+              $PREFIX:
+                get_input: cif_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cif_internal_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth0
+            params:
+              $PREFIX:
+                get_input: cif_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cif_ims_li_1_port_fixed_ips:
+        - ip_address:
+            get_input: cif_ims_li_v6_ip_1
+        port_cif_internal_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_ims_li_1_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_ims_li_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cif_ims_core_1_port_fixed_ips:
+        - ip_address:
+            get_input: cif_ims_core_v6_ip_1
+        port_cif_ims_core_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_ims_core_v6_vip_0
+        port_cif_oam_1_port_1_network_role_tag: oam
+        port_cif_oam_1_port_3_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_cif_ims_core_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_cif_ims_li_1_port_network:
+        - get_input: ims_li_v6_net_id
+        port_cif_internal_1_port_fixed_ips:
+        - ip_address:
+            get_input: cif_internal_ip_1
+        - ip_address:
+            get_input: cif_internal_v6_ip_1
+        port_cif_ims_core_1_port_name:
+        - str_replace:
+            template: $PREFIX$DELeth2
+            params:
+              $PREFIX:
+                get_input: cif_name_1
+              $DEL:
+                get_input: vcscf_name_delimeter
+        compute_cif_config_drive:
+        - true
+        port_cif_oam_1_port_3_name:
+        - str_replace:
+            template: $PREFIX$DELeth3
+            params:
+              $PREFIX:
+                get_input: cif_name_0
+              $DEL:
+                get_input: vcscf_name_delimeter
+        port_cif_ims_li_1_port_network_role_tag: ims_li_v6
+        port_cif_oam_1_port_1_security_groups:
+        - - cscf_RSG
+        port_cif_oam_1_port_1_allowed_address_pairs:
+        - ip_address:
+            get_input: cif_oam_vip_0
+        port_cif_oam_1_port_3_network_role_tag: oam
+        service_template_filter:
+          substitute_service_template: Nested_cif_1ServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        vm_type_tag: cif
+        nfc_naming_code: cif
+      requirements:
+      - link_cif_cif_internal_1_port:
+          capability: tosca.capabilities.network.Linkable
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_cif_cif_internal_1_port:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+  groups:
+    tdcore_zone_0_server_group_group:
+      type: tosca.groups.Root
+      members: [
+        ]
+    tdcore_zone_1_server_group_group:
+      type: tosca.groups.Root
+      members: [
+        ]
+    oam_server_group_group:
+      type: tosca.groups.Root
+      members:
+      - abstract_oam
+      - abstract_oam_1
+      - abstract_oam_2
+    cdi_server_group_group:
+      type: tosca.groups.Root
+      members:
+      - abstract_cdi
+      - abstract_cdi_1
+    cif_server_group_group:
+      type: tosca.groups.Root
+      members:
+      - abstract_cif
+      - abstract_cif_1
+    base_cscf_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/base_cscf.yaml
+        description: |
+          CFX-5000 N+K VNF HOT template for AT&T.
+      members:
+      - cscf_RSG
+      - cdi_internal_v6_vip_0_port
+      - cscf_internal_dpdk_network_0
+      - cif_ims_core_v6_vip_2_port
+      - cif_internal_vip_0_port
+      - cscf_zone_1_RRG
+      - oam_oam_vip_1_port
+      - tdcore_zone_0_RRG
+      - lbd_ims_core_v6_vip_2_port
+      - cif_oam_vip_1_port
+      - oam_internal_vip_0_port
+      - tdcore_zone_1_RRG
+      - cif_ims_li_v6_vip_4_port
+      - cscf_internal_network_0
+      - cscf_zone_0_RRG
+      - lbd_internal_dpdk_vip_1_port
+      - cif_oam_vip_3_port
+      - cdi_ims_core_v6_vip_1_port
+      - abstract_lbd
+      - abstract_lbd_1
+      - abstract_cif
+      - abstract_cif_1
+      - abstract_oam
+      - abstract_oam_1
+      - abstract_oam_2
+      - abstract_cdi
+      - abstract_cdi_1
+    base_cscf_volume_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/base_cscf_volume.yaml
+        description: Volume template for CFX
+      members:
+      - oam_volume_1
+      - oam_volume_0
+      - cif_volume_0
+      - cif_volume_1
+    lbd_server_group_group:
+      type: tosca.groups.Root
+      members:
+      - abstract_lbd
+      - abstract_lbd_1
+  outputs:
+    oam_volume_id_1:
+      description: volume id for second oam
+      value: oam_volume_1
+    oam_volume_id_0:
+      description: volume id for first oam
+      value: oam_volume_0
+    cif_volume_id_0:
+      description: volume id for first cif
+      value: cif_volume_0
+    cif_volume_id_1:
+      description: volume id for second cif
+      value: cif_volume_1
+  policies:
+    oam_server_group_policy:
+      type: org.openecomp.policies.placement.Antilocate
+      properties:
+        name:
+          str_replace:
+            template: $VNF$DELoam$DELgroup
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+        container_type: host
+      targets:
+      - oam_server_group_group
+    cdi_server_group_policy:
+      type: org.openecomp.policies.placement.Antilocate
+      properties:
+        name:
+          str_replace:
+            template: $VNF$DELcdi$DELgroup
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+        container_type: host
+      targets:
+      - cdi_server_group_group
+    lbd_server_group_policy:
+      type: org.openecomp.policies.placement.Antilocate
+      properties:
+        name:
+          str_replace:
+            template: $VNF$DELlbd$DELgroup
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+        container_type: host
+      targets:
+      - lbd_server_group_group
+    tdcore_zone_0_server_group_policy:
+      type: org.openecomp.policies.placement.Antilocate
+      properties:
+        name:
+          str_replace:
+            template: $VNF$DELtdcore$DELzone0$DELgroup
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+        container_type: host
+      targets:
+      - tdcore_zone_0_server_group_group
+    cif_server_group_policy:
+      type: org.openecomp.policies.placement.Antilocate
+      properties:
+        name:
+          str_replace:
+            template: $VNF$DELcif$DELgroup
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+        container_type: host
+      targets:
+      - cif_server_group_group
+    tdcore_zone_1_server_group_policy:
+      type: org.openecomp.policies.placement.Antilocate
+      properties:
+        name:
+          str_replace:
+            template: $VNF$DELtdcore$DELzone1$DELgroup
+            params:
+              $DEL:
+                get_input: vcscf_name_delimeter
+              $VNF:
+                get_input: vnf_name
+        container_type: host
+      targets:
+      - tdcore_zone_1_server_group_group
index f312efd..e7f660f 100644 (file)
@@ -89,6 +89,29 @@ topology_template:
             is_required: true
           floating_ip_count_required:
             is_required: false
+      requirements:
+      - dependency_cmaui_port_7:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_cmaui_port_7:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_cmaui_port_8:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_cmaui_port_8:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_cmaui:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_cmaui:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
     abstract_cmaui:
       type: org.openecomp.resource.abstract.nodes.cmaui
       directives:
@@ -584,4 +607,4 @@ topology_template:
       - link_cmaui_port_7
       dependency_cmaui_port_5:
       - abstract_cmaui
-      - dependency_cmaui_cmaui_port_5
+      - dependency_cmaui_cmaui_port_5
\ No newline at end of file
index c73d702..10d7c21 100644 (file)
@@ -1138,8 +1138,8 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.heat.pcm_server_1:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
       port_pcm_port_0_network_role:
         type: string
@@ -1712,308 +1712,1488 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.compute:
+  org.openecomp.resource.abstract.nodes.heat.pcm_server_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      compute_compute_user_data_format:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      metadata:
+        type: string
+        description: metadata
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      vm_image_name:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
         type: string
+        description: PCRF CM image name
         required: true
         status: SUPPORTED
-      index_value:
+      port_pcm_port_0_order:
         type: integer
-        description: Index value of this substitution service template runtime instance
-        required: false
-        default: 0
+        required: true
         status: SUPPORTED
-        constraints:
-        - greater_or_equal: 0
-      compute_compute_metadata:
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: json
-      compute_compute_name:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      vm_flavor_name:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
         type: string
+        description: flavor name of PCRF CM instance
         required: true
         status: SUPPORTED
-      compute_compute_config_drive:
+      key_name:
+        type: string
+        description: key_name
+        required: true
+        status: SUPPORTED
+      user_data_format:
+        type: string
+        description: user_data_format
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: boolean
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
     attributes:
-      compute_instance_name:
+      server_pcm_id:
         type: string
+        description: the pcm nova service id
         status: SUPPORTED
     requirements:
-    - dependency_compute:
+    - dependency_pcm_port_1:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_compute:
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_pcm:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pcm:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
         occurrences:
         - 0
         - UNBOUNDED
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
     capabilities:
-      disk.device.usage_compute:
+      network.incoming.packets.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_compute:
+      cpu_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      instance_compute:
+      network.incoming.packets.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_compute:
+      network.outpoing.packets_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_compute:
+      memory_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_compute:
+      disk.write.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory.resident_compute:
+      network.outpoing.packets_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      memory_compute:
+      disk.device.iops_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_compute:
+      memory.resident_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_compute:
+      disk.device.write.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_compute:
+      disk.device.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_compute:
+      disk.allocation_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_compute:
+      disk.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_compute:
+      disk.device.write.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes_compute:
+      disk.root.size_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes_compute:
+      disk.ephemeral.size_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_compute:
+      disk.device.latency_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      os_compute:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes.rate_compute:
+      network.incoming.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_compute:
+      network.incoming.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_compute:
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      memory.usage_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_compute:
+      disk.read.requests_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_compute:
+      disk.capacity_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_compute:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_compute:
+      disk.read.bytes_server_pcm:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_compute:
+      network.outgoing.packets.rate_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_compute:
+      network.outgoing.packets.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_compute:
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
         type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_compute:
+      disk.device.read.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.compute:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      compute_compute_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_compute_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_compute_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_compute_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+    attributes:
+      compute_instance_name:
+        type: string
+        status: SUPPORTED
+    requirements:
+    - dependency_compute:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_compute:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      disk.device.usage_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_compute:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_compute:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_compute:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_compute:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_compute:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_compute:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_compute:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.oam_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      oam_server_name:
+        type: string
+        description: oam server name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      oam_image_name:
+        type: string
+        description: oam image name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      oam_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_oam_id:
+        type: string
+        description: the oam nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_server_oam:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_oam:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      cpu_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      host_compute:
-        type: tosca.capabilities.Container
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
         valid_source_types:
-        - tosca.nodes.SoftwareComponent
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.read.bytes_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      feature_compute:
+      os_server_oam:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_compute:
+      network.outgoing.bytes_pcm_port_0:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_compute:
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_compute:
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_oam:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_compute:
+      endpoint_server_oam:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_oam:
         type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_compute:
+      disk.device.read.bytes.rate_server_oam:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_compute:
+      cpu_util_server_oam:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_compute:
+      cpu.delta_server_oam:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_compute:
+      host_server_oam:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_oam:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_compute:
+      network.outgoing.bytes.rate_pcm_port_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      binding_compute:
+      network.incoming.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_oam:
         type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_oam:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_oam:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.compute:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_compute_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_compute_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_compute_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_compute_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+    attributes:
+      compute_instance_name:
+        type: string
+        status: SUPPORTED
\ No newline at end of file
index e44327f..b1f6c7e 100644 (file)
@@ -105,6 +105,11 @@ topology_template:
       type: string
       description: PCRF CM image name
       default: rhel2
+    shared_security_group_id2:
+      hidden: false
+      immutable: false
+      type: string
+      description: network name of jsa log network
     oam_server_names:
       label: PCRF CM server names
       hidden: false
@@ -136,6 +141,11 @@ topology_template:
       type: string
       description: CPS network mask
       default: 255.255.255.0
+    shared_security_group_id1:
+      hidden: false
+      immutable: false
+      type: string
+      description: network name of jsa log network
     oam_net_name:
       label: OAM network name
       hidden: false
@@ -151,8 +161,10 @@ topology_template:
       properties:
         pcm_flavor_name:
           get_input: pcm_flavor_name
+        p1: jsa_security_group1
         service_template_filter:
           substitute_service_template: nested-pcm_v0.1ServiceTemplate.yaml
+        p2: jsa_security_group2
         port_pcm_port_1_network_role_tag: oam
         port_pcm_port_0_ip_requirements:
         - ip_version: 4
@@ -179,53 +191,68 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_oam_001:
       type: org.openecomp.resource.abstract.nodes.heat.oam_server
       directives:
       - substitutable
       properties:
-        port_pcm_port_1_network_role_tag: oam
         availabilityzone_name:
           get_input: availabilityzone_name
-        port_pcm_port_0_ip_requirements:
-        - ip_version: 4
-          ip_count_required:
-            is_required: true
-          floating_ip_count_required:
-            is_required: false
         oam_net_gw:
           get_input: oam_net_gw
+        port_oam_port_0_mac_requirements:
+          mac_count_required:
+            is_required: false
         oam_flavor_name:
           get_input: oam_flavor_name
-        security_group_name:
-          get_input: security_group_name
         cps_net_ip:
           get_input:
           - cps_net_ips
           - 0
+        port_oam_port_1_network_role_tag: oam
         oam_server_name:
           get_input:
           - oam_server_names
           - 0
-        port_pcm_port_1_mac_requirements:
-          mac_count_required:
-            is_required: false
         service_template_filter:
           substitute_service_template: nested-oam_v0.1ServiceTemplate.yaml
-        pcm_vol:
-          get_input:
-          - pcm_volumes
-          - 0
-        port_pcm_port_1_ip_requirements:
+        port_oam_port_1_ip_requirements:
         - ip_version: 4
           ip_count_required:
             is_required: true
           floating_ip_count_required:
             is_required: false
-        port_pcm_port_0_network_role_tag: cps
-        port_pcm_port_0_mac_requirements:
+        port_oam_port_1_mac_requirements:
           mac_count_required:
             is_required: false
+        pcm_vol:
+          get_input:
+          - pcm_volumes
+          - 0
+        port_oam_port_0_network_role_tag: cps
         oam_image_name:
           get_input: oam_image_name
         cps_net_name:
@@ -238,17 +265,42 @@ topology_template:
           - 0
         oam_net_mask:
           get_input: oam_net_mask
+        port_oam_port_0_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
         oam_net_name:
           get_input: oam_net_name
+      requirements:
+      - dependency_oam_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_oam_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_oam:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_oam:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_oam_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_oam_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_pcm_001:
       type: org.openecomp.resource.abstract.nodes.heat.pcm_server
       directives:
       - substitutable
       properties:
-        metadata:
-          get_attribute:
-          - compute_port_0
-          - device_id
         port_pcm_port_1_network_role_tag: oam
         availabilityzone_name:
           get_input: availabilityzone_name
@@ -273,16 +325,8 @@ topology_template:
             is_required: false
         pcm_flavor_name:
           get_input: pcm_flavor_name
-        key_name:
-          get_attribute:
-          - server_oam_001
-          - accessIPv4
         service_template_filter:
           substitute_service_template: nested-pcm_v0.1ServiceTemplate.yaml
-        user_data_format:
-          get_attribute:
-          - server_pcm_002
-          - oam_net_gw
         pcm_vol:
           get_input:
           - pcm_volumes
@@ -313,17 +357,43 @@ topology_template:
           get_input: oam_net_mask
         oam_net_name:
           get_input: oam_net_name
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     packet_mirror_network:
       type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
       properties:
-        tenant_id:
-          get_attribute:
-          - abstract_compute
-          - compute_instance_name
         network_name:
-          get_attribute:
-          - server_pcm_001
-          - instance_name
+          get_input: net_name
+      requirements:
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: server_pcm_001
+          relationship: tosca.relationships.DependsOn
+      - dependency:
+          capability: feature_compute
+          node: abstract_compute
+          relationship: tosca.relationships.DependsOn
     compute_port_0:
       type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
       properties:
@@ -338,6 +408,104 @@ topology_template:
             is_required: false
         network:
           get_input: net_name
+    jsa_security_group1:
+      type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
+      properties:
+        name: jsa_security_group1_name
+        description: ems security group
+        rules:
+        - protocol: icmp
+          ethertype: IPv6
+          remote_ip_prefix: ::/0
+          direction: ingress
+      requirements:
+      - port:
+          capability: attachment_pcm_port_0
+          node: server_pcm_002
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_pcm_port_1
+          node: server_pcm_002
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_oam_port_1
+          node: test_shared_node_connected_in_nested
+          relationship: org.openecomp.relationships.AttachesTo
+      - port:
+          capability: attachment_oam_port_0
+          node: test_shared_node_connected_in_nested
+          relationship: org.openecomp.relationships.AttachesTo
+    jsa_security_group2:
+      type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
+      properties:
+        name: jsa_security_group2_name
+        description: ems 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
+      requirements:
+      - port:
+          capability: attachment_pcm_port_0
+          node: server_pcm_002
+          relationship: org.openecomp.relationships.AttachesTo
+    test_shared_node_connected_in_nested:
+      type: org.openecomp.resource.abstract.nodes.heat.oam_server
+      directives:
+      - substitutable
+      properties:
+        service_template_filter:
+          substitute_service_template: nested-oam_v0.1ServiceTemplate.yaml
+        p2:
+          get_input: shared_security_group_id2
+        port_oam_port_1_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        port_oam_port_1_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_oam_port_0_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_oam_port_0_network_role_tag: cps
+        port_oam_port_1_network_role_tag: oam
+        port_oam_port_0_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        shared_security_group_id1:
+          get_input: shared_security_group_id1
+      requirements:
+      - dependency_oam_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_oam_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_oam:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_oam:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_oam_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_oam_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     abstract_compute:
       type: org.openecomp.resource.abstract.nodes.compute
       directives:
@@ -351,8 +519,8 @@ topology_template:
           get_input: compute_image_name
         compute_compute_metadata:
         - get_attribute:
-          - compute_port_0
-          - device_id
+          - server_pcm_001
+          - server_pcm_id
         compute_compute_name:
         - compute_name: null
         vm_flavor_name:
@@ -395,4 +563,14 @@ topology_template:
       - server_pcm_001
       - packet_mirror_network
       - compute_port_0
-      - abstract_compute
\ No newline at end of file
+      - jsa_security_group1
+      - jsa_security_group2
+      - abstract_compute
+    addOn_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/addOn.yml
+        description: |
+          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+      members:
+      - test_shared_node_connected_in_nested
\ No newline at end of file
index e49afcd..1ce813d 100644 (file)
@@ -181,6 +181,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_oam_001:
       type: org.openecomp.resource.abstract.nodes.heat.oam_server
       directives:
@@ -242,6 +265,29 @@ topology_template:
           get_input: oam_net_mask
         oam_net_name:
           get_input: oam_net_name
+      requirements:
+      - dependency_server_oam:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_oam:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_pcm_001:
       type: org.openecomp.resource.abstract.nodes.heat.pcm_server
       directives:
@@ -303,6 +349,29 @@ topology_template:
           get_input: oam_net_mask
         oam_net_name:
           get_input: oam_net_name
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     packet_mirror_network:
       type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
       properties:
@@ -408,4 +477,4 @@ topology_template:
       value:
         get_attribute:
         - server_pcm_002
-        - server_pcm_id
+        - server_pcm_id
\ No newline at end of file
index 0f63982..17fb056 100644 (file)
@@ -181,6 +181,29 @@ topology_template:
           get_input: oam_net_mask
         oam_net_name:
           get_input: oam_net_name
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     packet_mirror_network:
       type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
       properties:
index 060e2ed..ba0cec7 100644 (file)
@@ -564,6 +564,565 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_1port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_1port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      port_pcm_1port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_1port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_2port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_2port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_1port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pcm_1port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_1port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_2port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      port_pcm_1port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_2port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_2port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      port_pcm_2port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_2port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_2port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_server_pcm:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_1port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_1port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_pcm_2port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_2port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      binding_pcm_2port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      cpu_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_2port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_2port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_2port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_1port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_2port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_2port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_2port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_2port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_1port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_1port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_1port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_1port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_1port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_2port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_1port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_2port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_1port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_2port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_1port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_1port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      cpu.delta_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_1port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
   org.openecomp.resource.abstract.nodes.compute:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -865,3 +1424,46 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.compute:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_compute_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_compute_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_compute_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_compute_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
\ No newline at end of file
index 6bfb11c..90babdd 100644 (file)
@@ -181,6 +181,29 @@ topology_template:
           get_input: oam_net_mask
         oam_net_name:
           get_input: oam_net_name
+      requirements:
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_1port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_1port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_pcm_2port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_2port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     packet_mirror_network:
       type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
       properties:
index 976be29..6736c9c 100644 (file)
@@ -91,6 +91,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_pcm_001:
       type: org.openecomp.resource.abstract.nodes.heat.pcm_server_1
       directives:
@@ -128,6 +151,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_pcm_003:
       type: org.openecomp.resource.abstract.nodes.heat.pcm_server_2
       directives:
@@ -165,6 +211,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     compute_port_0:
       type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
       properties:
@@ -189,4 +258,4 @@ topology_template:
       - server_pcm_002
       - server_pcm_001
       - server_pcm_003
-      - compute_port_0
+      - compute_port_0
\ No newline at end of file
index 2a5f3b7..2e0c569 100644 (file)
@@ -91,6 +91,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_pcm_001:
       type: org.openecomp.resource.abstract.nodes.heat.pcm_server
       directives:
@@ -128,6 +151,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_pcm_003:
       type: org.openecomp.resource.abstract.nodes.heat.pcm_server_2
       directives:
@@ -165,6 +211,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     compute_port_0:
       type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
       properties:
index 92ea0fa..ae6167d 100644 (file)
@@ -564,6 +564,565 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_pcm_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_pcm:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.incoming.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      memory.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
   org.openecomp.resource.abstract.nodes.heat.pcm_server_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1418,3 +1977,40 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.compute:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_compute_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_compute_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_compute_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
\ No newline at end of file
index 6f0bd1e..beb20a3 100644 (file)
@@ -91,6 +91,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     server_pcm_001:
       type: org.openecomp.resource.abstract.nodes.heat.pcm_server
       directives:
@@ -128,6 +151,29 @@ topology_template:
           get_input:
           - pcm_server_names
           - 0
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
     compute_port_0:
       type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
       properties:
index a1c235a..2e14ee9 100644 (file)
@@ -5,6 +5,91 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -425,4 +510,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index d5852c9..b5e55a5 100644 (file)
@@ -5,6 +5,101 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_accessIPv6:
+        type: string
+        status: SUPPORTED
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_device_owner:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -435,4 +530,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index d4331da..3748b68 100644 (file)
@@ -5,6 +5,97 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -431,4 +522,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 712c687..aebc6c7 100644 (file)
@@ -5,6 +5,79 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -413,4 +486,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 0d04a1e..5d5d094 100644 (file)
@@ -5,6 +5,97 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -431,4 +522,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index a1c235a..2e14ee9 100644 (file)
@@ -5,6 +5,91 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -425,4 +510,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 62c9c11..1f6dafb 100644 (file)
@@ -119,10 +119,18 @@ topology_template:
           capability: tosca.capabilities.Node
           node: packet_mirror_network
           relationship: tosca.relationships.DependsOn
+      - dependency_server_pd_02_pd_server:
+          capability: tosca.capabilities.Node
+          node: packet_mirror_network
+          relationship: tosca.relationships.DependsOn
       - link_pd_server_pd01_port:
           capability: tosca.capabilities.network.Linkable
           node: packet_mirror_network
           relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pd_01_pd_server:
+          capability: tosca.capabilities.Node
+          node: packet_mirror_network
+          relationship: tosca.relationships.DependsOn
       - local_storage_pd_server:
           capability: tosca.capabilities.Attachment
           node: pd01_volume
@@ -151,4 +159,4 @@ topology_template:
       members:
       - packet_mirror_network
       - pd01_volume
-      - abstract_pd_server
+      - abstract_pd_server
\ No newline at end of file
index ddf141a..c60f5dc 100644 (file)
@@ -5,6 +5,97 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_pd_server_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -431,4 +522,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index de1531b..a8ec60b 100644 (file)
@@ -5,6 +5,101 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_accessIPv6:
+        type: string
+        status: SUPPORTED
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_device_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -435,4 +530,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index ef0e8f7..2355f5d 100644 (file)
@@ -5,6 +5,91 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -426,6 +511,91 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_ps01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_ps01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.ps_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -846,4 +1016,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 8e61b49..7aedccc 100644 (file)
@@ -5,6 +5,95 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -430,6 +519,95 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_ps01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_ps01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+    attributes:
+      ps_server_accessIPv4:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.ps_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -854,4 +1032,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index b484bfb..251c8ab 100644 (file)
@@ -5,6 +5,127 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd02_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -539,4 +660,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index b88f5d8..9ff132b 100644 (file)
@@ -5,6 +5,103 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.smp:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_smp_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_smp_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_smp_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_smp_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_smp_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
   org.openecomp.resource.abstract.nodes.smp:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -437,4 +534,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 087649f..7f62381 100644 (file)
@@ -5,6 +5,151 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd02_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd02_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd02_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -563,4 +708,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 9be0ebf..4946303 100644 (file)
@@ -5,6 +5,139 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd02_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -551,4 +684,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 482b763..81e04e2 100644 (file)
@@ -143,6 +143,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: packet_mirror_network
           relationship: tosca.relationships.DependsOn
+      - dependency_server_pd_01_pd_server:
+          capability: tosca.capabilities.Node
+          node: packet_mirror_network
+          relationship: tosca.relationships.DependsOn
       - link_pd_server_pd01_port:
           capability: tosca.capabilities.network.Linkable
           node: packet_mirror_network
@@ -170,4 +174,4 @@ topology_template:
       members:
       - packet_mirror_network
       - pd01_volume
-      - abstract_pd_server
+      - abstract_pd_server
\ No newline at end of file
index 3bdd9e6..93cc747 100644 (file)
@@ -5,6 +5,151 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd01_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_1_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd01_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd01_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_0_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -563,4 +708,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 50a0b6a..68c0f12 100644 (file)
@@ -5,6 +5,139 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd01_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd01_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -551,4 +684,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 5931d12..210b537 100644 (file)
@@ -154,6 +154,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: packet_mirror_network
           relationship: tosca.relationships.DependsOn
+      - dependency_server_pd_01_pd_server:
+          capability: tosca.capabilities.Node
+          node: packet_mirror_network
+          relationship: tosca.relationships.DependsOn
       - link_pd_server_pd01_port_0:
           capability: tosca.capabilities.network.Linkable
           node: packet_mirror_network
@@ -182,4 +186,4 @@ topology_template:
       - packet_mirror_network
       - pd01_volume
       - packet_internal_network
-      - abstract_pd_server
+      - abstract_pd_server
\ No newline at end of file
index 023b48b..7d50dbc 100644 (file)
@@ -5,6 +5,127 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd02_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1136,3 +1257,599 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pcm_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_image_name:
+        type: string
+        description: PCRF CM image name
+        required: true
+        status: SUPPORTED
+      cps_net_ips:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      security_group_name:
+        type: string
+        description: the name of security group
+        required: true
+        status: SUPPORTED
+      cps_net_ip:
+        type: string
+        description: CPS network ip
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      pcm_volumes:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pcm_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      oam_net_ip:
+        type: string
+        description: OAM network ip
+        required: true
+        status: SUPPORTED
+      oam_net_mask:
+        type: string
+        description: CPS network mask
+        required: true
+        status: SUPPORTED
+      port_pcm_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_pcm_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_server_pcm:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pcm_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_network:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      network.incoming.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      binding_pcm_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      memory.usage_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      link_network:
+        type: tosca.capabilities.network.Linkable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pcm_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      end_point_network:
+        type: tosca.capabilities.Endpoint
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_network:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_network:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_0:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_pcm:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_pcm_port_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
\ No newline at end of file
index a6938c2..b9c5bc8 100644 (file)
@@ -450,6 +450,33 @@ topology_template:
         port_pcm_port_0_mac_requirements:
           mac_count_required:
             is_required: false
+      requirements:
+      - dependency_pcm_port_1:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_1:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_server_pcm:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - local_storage_server_pcm:
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+      - dependency_pcm_port_0:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
+      - link_pcm_port_0:
+          capability: tosca.capabilities.network.Linkable
+          relationship: tosca.relationships.network.LinksTo
+      - dependency_network:
+          capability: tosca.capabilities.Node
+          node: tosca.nodes.Root
+          relationship: tosca.relationships.DependsOn
     abstract_pd_server:
       type: org.openecomp.resource.abstract.nodes.pd_server
       directives:
@@ -507,4 +534,4 @@ topology_template:
         description: heat template that creates MOG stack
       members:
       - server_pcm_003
-      - abstract_pd_server
+      - abstract_pd_server
\ No newline at end of file
index 5278a65..2604672 100644 (file)
@@ -5,6 +5,127 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd01_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -539,4 +660,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index e68bf0f..d433390 100644 (file)
@@ -5,6 +5,137 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd02_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      pd_server_pd02_port_device_owner:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_device_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -549,4 +680,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 6f8a166..8396241 100644 (file)
@@ -5,6 +5,423 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_pd_server_key_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_personality:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pd_server_image_update_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_template_VMInt_OAM_lb_virtual_machine_interface_properties:
+        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties
+        required: true
+        status: SUPPORTED
+      port_pd01_port_device_id:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_admin_state_up:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_template_VMInt_OAM_lb_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_pd_server_diskConfig:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_template_VMInt_OAM_lb_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_allowed_address_pairs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.AddressPair
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_pd_server_admin_pass:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_flavor_update_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_template_VMInt_OAM_lb_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_template_VMInt_OAM_lb_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_template_VMInt_OAM_lb_virtual_machine_interface_allowed_address_pairs:
+        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs
+        required: true
+        status: SUPPORTED
+      port_pd01_port_value_specs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pd_server_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_template_VMInt_OAM_lb_port_tuple_refs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_pd_server_software_config_transport:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_pd_server_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd01_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_contrail_service_instance_ind:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_template_VMInt_OAM_lb_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_binding:vnic_type:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_device_owner:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_qos_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_template_VMInt_OAM_lb_virtual_network_refs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_template_VMInt_OAM_lb_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_template_VMInt_OAM_lb_virtual_machine_interface_mac_addresses:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_template_VMInt_OAM_lb_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_port_security_enabled:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      port_template_VMInt_OAM_lb_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_update_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_reservation_id:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_template_VMInt_OAM_lb_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_template_VMInt_OAM_lb_security_group_refs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    attributes:
+      pd_server_pd01_port_allowed_address_pairs:
+        type: list
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.AddressPair
+      pd_server_template_VMInt_OAM_lb_virtual_machine_interface_mac_addresses:
+        type: list
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      pd_server_template_VMInt_OAM_lb_virtual_network_refs:
+        type: list
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      pd_server_template_VMInt_OAM_lb_fq_name:
+        type: string
+        status: SUPPORTED
+      pd_server_show:
+        type: string
+        status: SUPPORTED
+      pd_server_console_urls:
+        type: string
+        status: SUPPORTED
+      pd_server_template_VMInt_OAM_lb_virtual_machine_interface_allowed_address_pairs:
+        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs
+        status: SUPPORTED
+      pd_server_pd01_port_security_groups:
+        type: list
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      pd_server_pd01_port_port_security_enabled:
+        type: boolean
+        status: SUPPORTED
+      pd_server_pd01_port_status:
+        type: string
+        status: SUPPORTED
+      pd_server_template_VMInt_OAM_lb_port_tuple_refs:
+        type: list
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      pd_server_pd01_port_fixed_ips:
+        type: list
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      pd_server_accessIPv6:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_admin_state_up:
+        type: boolean
+        status: SUPPORTED
+      pd_server_instance_name:
+        type: string
+        status: SUPPORTED
+      pd_server_template_VMInt_OAM_lb_name:
+        type: string
+        status: SUPPORTED
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_device_owner:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_show:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_network:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_qos_policy:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_mac_address:
+        type: string
+        status: SUPPORTED
+      pd_server_addresses:
+        type: map
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.novaServer.network.AddressInfo
+      pd_server_pd01_port_tenant_id:
+        type: string
+        status: SUPPORTED
+      pd_server_template_VMInt_OAM_lb_virtual_machine_interface_properties:
+        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties
+        status: SUPPORTED
+      pd_server_pd01_port_device_id:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_name:
+        type: string
+        status: SUPPORTED
+      pd_server_template_VMInt_OAM_lb_show:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_subnets:
+        type: list
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -830,4 +1247,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 3146687..afcc75b 100644 (file)
@@ -5,6 +5,134 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd02_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_device_owner:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -546,4 +674,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index b484bfb..251c8ab 100644 (file)
@@ -5,6 +5,127 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd02_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -539,4 +660,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 5278a65..2604672 100644 (file)
@@ -5,6 +5,127 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd01_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -539,4 +660,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index deb8b3d..b80d23f 100644 (file)
@@ -5,6 +5,137 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd01_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_1_device_owner:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_0_device_owner:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -549,4 +680,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 3cf557e..69208ef 100644 (file)
@@ -5,6 +5,137 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd01_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_pd01_port_0_device_id:
+        type: string
+        status: SUPPORTED
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_1_device_owner:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -549,4 +680,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 242eb47..2ec44cc 100644 (file)
@@ -5,6 +5,104 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_pd_server_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      pd_server_pd01_port_device_owner:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -439,6 +537,104 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+    attributes:
+      ps_server_accessIPv4:
+        type: string
+        status: SUPPORTED
+      ps_server_pd01_port_device_id:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.oam_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1304,3 +1500,98 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.oam_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_oam_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_oam_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_oam_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_oam_server_scheduler_hints:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    attributes:
+      oam_server_accessIPv4:
+        type: string
+        status: SUPPORTED
\ No newline at end of file
index 82259a7..abe0e17 100644 (file)
@@ -245,6 +245,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: packet_mirror_network
           relationship: tosca.relationships.DependsOn
+      - dependency_server_pd_01_pd_server:
+          capability: tosca.capabilities.Node
+          node: packet_mirror_network
+          relationship: tosca.relationships.DependsOn
     abstract_ps_server:
       type: org.openecomp.resource.abstract.nodes.ps_server
       directives:
@@ -294,6 +298,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: packet_mirror_network
           relationship: tosca.relationships.DependsOn
+      - dependency_server_ps_01_ps_server:
+          capability: tosca.capabilities.Node
+          node: packet_mirror_network
+          relationship: tosca.relationships.DependsOn
     abstract_oam_server:
       type: org.openecomp.resource.abstract.nodes.oam_server
       directives:
@@ -342,6 +350,10 @@ topology_template:
           capability: tosca.capabilities.Node
           node: packet_mirror_network
           relationship: tosca.relationships.DependsOn
+      - dependency_server_oam_01_oam_server:
+          capability: tosca.capabilities.Node
+          node: packet_mirror_network
+          relationship: tosca.relationships.DependsOn
     network_policy_server_ps:
       type: org.openecomp.resource.vfc.rules.nodes.heat.network.contrail.NetworkRules
       properties:
@@ -469,4 +481,4 @@ topology_template:
         name: def
         affinity: host
       targets:
-      - BE_Affinity_group
+      - BE_Affinity_group
\ No newline at end of file
index ca9a33c..186a086 100644 (file)
@@ -5,6 +5,85 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -420,6 +499,85 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
   org.openecomp.resource.abstract.nodes.oam_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1250,3 +1408,82 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.oam_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_oam_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_oam_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_oam_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
\ No newline at end of file
index 8a723e7..b4bd1e2 100644 (file)
@@ -5,6 +5,85 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1237,4 +1316,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 8927495..40180dd 100644 (file)
@@ -5,6 +5,127 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd01_port_2_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_3_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_3_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_pd01_port_2_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_2_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_3_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_3_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_3_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_2_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_2_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_3_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_2_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_3_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd01_port_2_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd01_port_2_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd01_port_3_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_2_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_3_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1369,4 +1490,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 0521146..3a228ed 100644 (file)
@@ -5,6 +5,89 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      pd_server_accessIPv4:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -424,6 +507,89 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_ps01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_ps01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+    attributes:
+      ps_server_accessIPv4:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.ps_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -842,4 +1008,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 8080962..b173806 100644 (file)
@@ -5,6 +5,85 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.pd_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      compute_pd_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_pd_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -420,6 +499,85 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_ps01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_ps01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.ps_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -834,4 +992,4 @@ node_types:
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index d007e85..5d7542f 100644 (file)
@@ -110,7 +110,7 @@ topology_template:
       type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
       properties:
         network: Internal2-net
-        device_id: {get_attribute: [FSB2_template, device_id]}
+        device_id: {get_attribute: [FSB2_template, att]}
       requirements:
       - binding:
           capability: tosca.capabilities.network.Bindable
@@ -131,7 +131,7 @@ topology_template:
       properties:
         mac_address:
           get_input: fsb1-Internal1-mac
-        network: {get_attribute: [FSB2_Internal1, device_id]}
+        network: {get_attribute: [FSB2_Internal1, att]}
       requirements:
       - binding:
           capability: tosca.capabilities.network.Bindable
@@ -146,7 +146,7 @@ topology_template:
       properties:
         mac_address:
           get_input: fsb1-Internal1-mac
-        network: {get_attribute: [FSB2_Internal1, device_id]}
+        network: {get_attribute: [FSB2_Internal1, att]}
       requirements:
       - binding:
           capability: tosca.capabilities.network.Bindable
index e4fa287..9a9b57d 100644 (file)
@@ -126,7 +126,7 @@ topology_template:
         network:
           get_attribute:
           - FSB1_FSB2_Internal
-          - device_id
+          - att
         mac_address:
           get_input: port_FSB1_Internal_mac_address
       requirements:
@@ -156,7 +156,7 @@ topology_template:
         device_id:
           get_attribute:
           - FSB1
-          - device_id
+          - att
         network:
           get_input:
           - port_FSB2_Internal_network
index e40b298..58ccd5e 100644 (file)
@@ -20,6 +20,9 @@ public class LimitEntity implements VersionableEntity {
   private String unit;
   private AggregationFunction aggregationFunction;
   private String time;
+  //Defined and used only to find parent(EP/LKG) of Limit. Not to be persisted in DB and License
+  // Xmls
+  private String parent;
 
   public LimitEntity() {
   }
@@ -44,7 +47,7 @@ public class LimitEntity implements VersionableEntity {
   }
 
   public void setAggregationFunction(
-      AggregationFunction aggregationFunction) {
+          AggregationFunction aggregationFunction) {
     this.aggregationFunction = aggregationFunction;
   }
 
@@ -143,10 +146,20 @@ public class LimitEntity implements VersionableEntity {
     this.value = value;
   }
 
-   @Override
+  //Defined and used only to find parent(EP/LKG) of Limit. Not to be persisted in DB and License
+  // Xmls
+  public String getParent() {
+    return parent;
+  }
+
+  public void setParent(String parent) {
+    this.parent = parent;
+  }
+
+  @Override
   public int hashCode() {
     return Objects.hash(vendorLicenseModelId, version, epLkgId, id, name, description, type,
-        metric, unit, time, aggregationFunction, value);
+            metric, unit, time, aggregationFunction, value);
   }
 
   @Override
@@ -159,35 +172,35 @@ public class LimitEntity implements VersionableEntity {
     }
     LimitEntity that = (LimitEntity) obj;
     return Objects.equals(that.unit, unit)
-        && Objects.equals(that.value, value)
-        && Objects.equals(vendorLicenseModelId, that.vendorLicenseModelId)
-        && Objects.equals(epLkgId, that.epLkgId)
-        && Objects.equals(id, that.id)
-        && Objects.equals(name, that.name)
-        && Objects.equals(description, that.description)
-        && Objects.equals(type, that.type)
-        && Objects.equals(metric, that.metric)
-        && Objects.equals(aggregationFunction, that.aggregationFunction);
+            && Objects.equals(that.value, value)
+            && Objects.equals(vendorLicenseModelId, that.vendorLicenseModelId)
+            && Objects.equals(epLkgId, that.epLkgId)
+            && Objects.equals(id, that.id)
+            && Objects.equals(name, that.name)
+            && Objects.equals(description, that.description)
+            && Objects.equals(type, that.type)
+            && Objects.equals(metric, that.metric)
+            && Objects.equals(aggregationFunction, that.aggregationFunction);
 
   }
 
   @Override
   public String toString() {
     return "LimitEntity{"
-        + "vendorLicenseModelId='" + vendorLicenseModelId + '\''
-        + ", version=" + version
-        + ", epLkgId=" + epLkgId
-        + ", id='" + id + '\''
-        + ", name='" + name + '\''
-        + ", description='" + description + '\''
-        + ", type=" + type
-        + ", metric=" + metric
-        + ", value='" + value + '\''
-        + ", unit='" + unit + '\''
-        + ", aggregationFunction=" + aggregationFunction
-        + ", time=" + time
-
-        + '}';
+            + "vendorLicenseModelId='" + vendorLicenseModelId + '\''
+            + ", version=" + version
+            + ", epLkgId=" + epLkgId
+            + ", id='" + id + '\''
+            + ", name='" + name + '\''
+            + ", description='" + description + '\''
+            + ", type=" + type
+            + ", metric=" + metric
+            + ", value='" + value + '\''
+            + ", unit='" + unit + '\''
+            + ", aggregationFunction=" + aggregationFunction
+            + ", time=" + time
+
+            + '}';
   }
 
 }
index eeed3b0..7cb3e2e 100644 (file)
@@ -20,7 +20,6 @@
 
 package org.openecomp.sdc.vendorlicense.healing.impl;
 
-import org.openecomp.sdc.common.utils.CommonUtil;
 import org.openecomp.sdc.datatypes.error.ErrorLevel;
 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
 import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
@@ -41,9 +40,9 @@ import java.util.UUID;
 
 public class SimpleHealingServiceImpl implements HealingService {
   private static final EntitlementPoolDao entitlementPoolDao =
-      EntitlementPoolDaoFactory.getInstance().createInterface();
+          EntitlementPoolDaoFactory.getInstance().createInterface();
   private static final LicenseKeyGroupDao licenseKeyGroupDao =
-      LicenseKeyGroupDaoFactory.getInstance().createInterface();
+          LicenseKeyGroupDaoFactory.getInstance().createInterface();
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
 
   @Override
@@ -51,6 +50,15 @@ public class SimpleHealingServiceImpl implements HealingService {
     return handleMissingVersionId(toHeal, user);
   }
 
+  @Override
+  public void persistNoHealing(VersionableEntity alreadyHealed) {
+    if (alreadyHealed instanceof EntitlementPoolEntity) {
+      entitlementPoolDao.update((EntitlementPoolEntity) alreadyHealed);
+    } else if (alreadyHealed instanceof LicenseKeyGroupEntity) {
+      licenseKeyGroupDao.update((LicenseKeyGroupEntity) alreadyHealed);
+    }
+  }
+
   private VersionableEntity handleMissingVersionId(VersionableEntity toHeal, String user) {
 
 
@@ -68,11 +76,10 @@ public class SimpleHealingServiceImpl implements HealingService {
       licenseKeyGroupDao.update((LicenseKeyGroupEntity) toHeal);
     } else {
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
-          LoggerTragetServiceName.SELF_HEALING, ErrorLevel.ERROR.name(),
-          LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.UNSUPPORTED_OPERATION);
+              LoggerTragetServiceName.SELF_HEALING, ErrorLevel.ERROR.name(),
+              LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.UNSUPPORTED_OPERATION);
       throw new UnsupportedOperationException(
-          "Unsupported operation for 1610 release/1607->1610 migration.");
-      //todo maybe errorbuilder?
+              "Unsupported operation for 1610 release/1607->1610 migration.");
     }
 
     mdcDataDebugMessage.debugExitMessage(null, null);
index 7d2cdc5..282b4e6 100644 (file)
@@ -22,21 +22,18 @@ package org.openecomp.sdc.vendorlicense.licenseartifacts.impl;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.openecomp.core.utilities.file.FileContentHandler;
-import org.openecomp.sdc.common.utils.CommonUtil;
 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
 import org.openecomp.sdc.vendorlicense.HealingServiceFactory;
 import org.openecomp.sdc.vendorlicense.dao.types.EntitlementPoolEntity;
 import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity;
 import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupModel;
 import org.openecomp.sdc.vendorlicense.dao.types.LicenseKeyGroupEntity;
-import org.openecomp.sdc.vendorlicense.dao.types.LimitEntity;
 import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacade;
 import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacadeFactory;
 import org.openecomp.sdc.vendorlicense.healing.HealingService;
 import org.openecomp.sdc.vendorlicense.licenseartifacts.VendorLicenseArtifactsService;
 import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.VendorLicenseArtifact;
 import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.VnfLicenseArtifact;
-import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils;
 import org.openecomp.sdc.versioning.dao.types.Version;
 
 import java.util.Collection;
@@ -48,18 +45,25 @@ import java.util.stream.Collectors;
 
 import static org.openecomp.sdc.vendorlicense.VendorLicenseConstants.VENDOR_LICENSE_MODEL_ARTIFACT_NAME_WITH_PATH;
 import static org.openecomp.sdc.vendorlicense.VendorLicenseConstants.VNF_ARTIFACT_NAME_WITH_PATH;
+import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.filterChangedEntities;
+import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.getFinalVersionsForVlm;
+import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.getVendorName;
+import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.healEPs;
+import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.healLkgs;
+import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.prepareForFiltering;
 
 public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifactsService {
 
   public static final VendorLicenseFacade vendorLicenseFacade =
-      VendorLicenseFacadeFactory.getInstance().createInterface();
+          VendorLicenseFacadeFactory.getInstance().createInterface();
   public static final HealingService healingService =
-      HealingServiceFactory.getInstance().createInterface();
+          HealingServiceFactory.getInstance().createInterface();
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
 
 
-  static byte[] createVnfArtifact(String vspId, String vlmId, Version vlmVersion, String vendorName,
-                                  List<String> featureGroups, String user) {
+  private static byte[] createVnfArtifact(String vspId, String vlmId, Version vlmVersion,
+                                          String vendorName,
+                                          List<String> featureGroups, String user) {
 
 
     mdcDataDebugMessage.debugEntryMessage("VLM name", vendorName);
@@ -68,31 +72,33 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts
 
     artifact.setVspId(vspId);
     artifact.setVendorName(vendorName);
-    if(featureGroups != null) {
+    if (featureGroups != null) {
       for (String featureGroupId : featureGroups) {
         FeatureGroupModel featureGroupModel = vendorLicenseFacade
-            .getFeatureGroupModel(new FeatureGroupEntity(vlmId, vlmVersion, featureGroupId), user);
-        Set<EntitlementPoolEntity> entitlementPoolEntities = featureGroupModel.getEntitlementPools();
-        for(EntitlementPoolEntity entitlementPoolEntity : entitlementPoolEntities){
+                .getFeatureGroupModel(new FeatureGroupEntity(vlmId, vlmVersion, featureGroupId), user);
+        Set<EntitlementPoolEntity> entitlementPoolEntities =
+                featureGroupModel.getEntitlementPools();
+        for (EntitlementPoolEntity entitlementPoolEntity : entitlementPoolEntities) {
           entitlementPoolEntity.setLimits(vendorLicenseFacade.listLimits(vlmId, vlmVersion,
-              entitlementPoolEntity.getId(), user));
+                  entitlementPoolEntity.getId(), user));
           entitlementPoolEntity.setManufacturerReferenceNumber(featureGroupModel.
-              getEntityManufacturerReferenceNumber());
+                  getEntityManufacturerReferenceNumber());
         }
-        Set<LicenseKeyGroupEntity> licenseKeyGroupEntities = featureGroupModel.getLicenseKeyGroups();
-        for(LicenseKeyGroupEntity licenseKeyGroupEntity : licenseKeyGroupEntities){
+        Set<LicenseKeyGroupEntity> licenseKeyGroupEntities =
+                featureGroupModel.getLicenseKeyGroups();
+        for (LicenseKeyGroupEntity licenseKeyGroupEntity : licenseKeyGroupEntities) {
           licenseKeyGroupEntity.setLimits(vendorLicenseFacade.listLimits(vlmId, vlmVersion,
-              licenseKeyGroupEntity.getId(), user));
+                  licenseKeyGroupEntity.getId(), user));
           licenseKeyGroupEntity.setManufacturerReferenceNumber(featureGroupModel.
-              getEntityManufacturerReferenceNumber());
+                  getEntityManufacturerReferenceNumber());
         }
 
         featureGroupModel.setEntitlementPools(entitlementPoolEntities.stream().map(
-            entitlementPoolEntity -> (EntitlementPoolEntity) healingService
-                .heal(entitlementPoolEntity, user)).collect(Collectors.toSet()));
+                entitlementPoolEntity -> (EntitlementPoolEntity) healingService
+                        .heal(entitlementPoolEntity, user)).collect(Collectors.toSet()));
         featureGroupModel.setLicenseKeyGroups(licenseKeyGroupEntities.stream().map(
-            licenseKeyGroupEntity -> (LicenseKeyGroupEntity) healingService
-                .heal(licenseKeyGroupEntity, user)).collect(Collectors.toSet()));
+                licenseKeyGroupEntity -> (LicenseKeyGroupEntity) healingService
+                        .heal(licenseKeyGroupEntity, user)).collect(Collectors.toSet()));
         artifact.getFeatureGroups().add(featureGroupModel);
       }
     }
@@ -101,7 +107,7 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts
     return artifact.toXml().getBytes();
   }
 
-  static byte[] createVendorLicenseArtifact(String vlmId, String vendorName, String user) {
+  private static byte[] createVendorLicenseArtifact(String vlmId, String vendorName, String user) {
 
 
     mdcDataDebugMessage.debugEntryMessage("VLM name", vendorName);
@@ -111,43 +117,42 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts
     Set<EntitlementPoolEntity> entitlementPoolEntities = new HashSet<>();
     Set<LicenseKeyGroupEntity> licenseKeyGroupEntities = new HashSet<>();
 
-    List<Version> finalVersions = VendorLicenseArtifactsServiceUtils.getFinalVersionsForVlm(vlmId);
+    List<Version> finalVersions = getFinalVersionsForVlm(vlmId);
     for (Version finalVersion : finalVersions) {
       Collection<EntitlementPoolEntity> coll = vendorLicenseFacade.listEntitlementPools(vlmId,
-          finalVersion, user);
-      coll.stream().forEach( entitlementPoolEntity -> {
+              finalVersion, user);
+      coll.stream().forEach(entitlementPoolEntity -> {
         entitlementPoolEntity.setLimits(vendorLicenseFacade.listLimits(vlmId, finalVersion,
-            entitlementPoolEntity.getId(), user));
+                entitlementPoolEntity.getId(), user));
         Optional<String> manufacturerReferenceNumber = getFeatureGroupManufactureRefNumber
-            (entitlementPoolEntity.getReferencingFeatureGroups(), vlmId, finalVersion, user);
-        manufacturerReferenceNumber.ifPresent(mrn -> entitlementPoolEntity
-            .setManufacturerReferenceNumber(mrn));
+                (entitlementPoolEntity.getReferencingFeatureGroups(), vlmId, finalVersion, user);
+        manufacturerReferenceNumber
+                .ifPresent(entitlementPoolEntity::setManufacturerReferenceNumber);
       });
 
       entitlementPoolEntities.addAll(coll);
 
       Collection<LicenseKeyGroupEntity> coll2 = vendorLicenseFacade.listLicenseKeyGroups(vlmId,
-          finalVersion, user);
+              finalVersion, user);
 
-      coll2.stream().forEach( licenseKeyGroupEntity -> {
+      coll2.stream().forEach(licenseKeyGroupEntity -> {
         licenseKeyGroupEntity.setLimits(vendorLicenseFacade.listLimits(vlmId, finalVersion,
-            licenseKeyGroupEntity.getId(), user));
+                licenseKeyGroupEntity.getId(), user));
         Optional<String> manufacturerReferenceNumber = getFeatureGroupManufactureRefNumber
-            (licenseKeyGroupEntity.getReferencingFeatureGroups(), vlmId, finalVersion, user);
-        manufacturerReferenceNumber.ifPresent(mrn -> licenseKeyGroupEntity
-            .setManufacturerReferenceNumber(mrn));
+                (licenseKeyGroupEntity.getReferencingFeatureGroups(), vlmId, finalVersion, user);
+        manufacturerReferenceNumber
+                .ifPresent(licenseKeyGroupEntity::setManufacturerReferenceNumber);
       });
 
       licenseKeyGroupEntities.addAll(coll2);
     }
 
-    entitlementPoolEntities = VendorLicenseArtifactsServiceUtils
-        .healEPs(user,
-            VendorLicenseArtifactsServiceUtils.filterChangedEntities(entitlementPoolEntities));
-    licenseKeyGroupEntities = VendorLicenseArtifactsServiceUtils
-        .healLkgs(user,
-            VendorLicenseArtifactsServiceUtils.filterChangedEntities(licenseKeyGroupEntities));
-
+    entitlementPoolEntities =
+            healEPs(user, filterChangedEntities(prepareForFiltering(entitlementPoolEntities, user,
+                    true)));
+    licenseKeyGroupEntities =
+            healLkgs(user, filterChangedEntities(prepareForFiltering(licenseKeyGroupEntities, user,
+                    false)));
     vendorLicenseArtifact.setEntitlementPoolEntities(entitlementPoolEntities);
     vendorLicenseArtifact.setLicenseKeyGroupEntities(licenseKeyGroupEntities);
 
@@ -156,30 +161,33 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts
   }
 
   private static Optional<String> getFeatureGroupManufactureRefNumber(Set<String> featureGroupIds,
-         String vlmId, Version finalVersion, String user) {
+                                                                      String vlmId,
+                                                                      Version finalVersion,
+                                                                      String user) {
     String manufactureReferenceNumber = null;
     if (CollectionUtils.isNotEmpty(featureGroupIds)) {
       Object[] featureGroupIdsList = featureGroupIds.toArray();
-      if (featureGroupIdsList != null && featureGroupIdsList.length > 0) {
+      if (featureGroupIdsList.length > 0) {
         FeatureGroupEntity featureGroup =
-            vendorLicenseFacade.getFeatureGroup(new FeatureGroupEntity(vlmId, finalVersion,
-                featureGroupIdsList[0].toString()), user);
+                vendorLicenseFacade.getFeatureGroup(new FeatureGroupEntity(vlmId, finalVersion,
+                        featureGroupIdsList[0].toString()), user);
         manufactureReferenceNumber = featureGroup != null ? featureGroup
-            .getManufacturerReferenceNumber() : null;
+                .getManufacturerReferenceNumber() : null;
       }
     }
     return manufactureReferenceNumber != null ? Optional.of(manufactureReferenceNumber) :
-        Optional.empty();
+            Optional.empty();
   }
 
 
   /**
    * Create License Artifacts.
-   * @param vspId vspId
-   * @param vlmId vlmId
-   * @param vlmVersion vlmVersion
+   *
+   * @param vspId         vspId
+   * @param vlmId         vlmId
+   * @param vlmVersion    vlmVersion
    * @param featureGroups featureGroups
-   * @param user user
+   * @param user          user
    * @return FileContentHandler
    */
   public FileContentHandler createLicenseArtifacts(String vspId, String vlmId, Version vlmVersion,
@@ -189,12 +197,12 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts
     mdcDataDebugMessage.debugEntryMessage("VSP Id", vspId);
 
     FileContentHandler artifacts = new FileContentHandler();
-    String vendorName = VendorLicenseArtifactsServiceUtils.getVendorName(vlmId, user);
+    String vendorName = getVendorName(vlmId, user);
 
     artifacts.addFile(VNF_ARTIFACT_NAME_WITH_PATH,
-        createVnfArtifact(vspId, vlmId, vlmVersion, vendorName, featureGroups, user));
+            createVnfArtifact(vspId, vlmId, vlmVersion, vendorName, featureGroups, user));
     artifacts.addFile(VENDOR_LICENSE_MODEL_ARTIFACT_NAME_WITH_PATH,
-        createVendorLicenseArtifact(vlmId, vendorName, user));
+            createVendorLicenseArtifact(vlmId, vendorName, user));
 
     mdcDataDebugMessage.debugExitMessage("VSP Id", vspId);
 
index f3e0976..502aa35 100644 (file)
@@ -45,15 +45,15 @@ import java.util.Set;
 
 public class VendorLicenseArtifactsServiceUtils {
   private static final HealingService healingService =
-      HealingServiceFactory.getInstance().createInterface();
+          HealingServiceFactory.getInstance().createInterface();
 
   /**
    * maps the entities by id
    *
    * @return a Map of id -> list of versionable entities with that id
    */
-  static MultiValuedMap<String, VersionableEntity> mapById(
-      Collection<? extends VersionableEntity> versionableEntities) {
+  private static MultiValuedMap<String, VersionableEntity> mapById(
+          Collection<? extends VersionableEntity> versionableEntities) {
     MultiValuedMap<String, VersionableEntity> mappedById = new ArrayListValuedHashMap<>();
     for (VersionableEntity ve : versionableEntities) {
       mappedById.put(ve.getId(), ve);
@@ -64,16 +64,15 @@ public class VendorLicenseArtifactsServiceUtils {
   /**
    *  For all entities with same id, only entities that differ from one another will be returned.
    *  If no change has occured, the entity with the earlier VLM version will be returned.
-   *  If only one version of said entitity exists it will be returned
-   * @param versionableEntities
+   *  If only one version of said entities exists it will be returned
    * @return a list of entities that has been changed
    */
   public static List<VersionableEntity> filterChangedEntities(
-      Collection<? extends VersionableEntity> versionableEntities) {
+          Collection<? extends VersionableEntity> versionableEntities) {
     MultiValuedMap<String, VersionableEntity> entitiesById = mapById(
-        versionableEntities);
+            versionableEntities);
     MultiValuedMap<String, VersionableEntity> entitiesByVersionUuId =
-        new ArrayListValuedHashMap<>();
+            new ArrayListValuedHashMap<>();
     List<VersionableEntity> changedOnly = new ArrayList<>();
 
     for (String epId : entitiesById.keySet()) {
@@ -86,7 +85,7 @@ public class VendorLicenseArtifactsServiceUtils {
     //for every list of eps which have the same uuid, get the one with the earliest vlm version.
     for (String versionUid : entitiesByVersionUuId.keySet()) {
       List<VersionableEntity> versionableEntitiesForUuid =
-          (List<VersionableEntity>) entitiesByVersionUuId.get(versionUid);
+              (List<VersionableEntity>) entitiesByVersionUuId.get(versionUid);
       versionableEntitiesForUuid.sort(new VersionableEntitySortByVlmMajorVersion());
       changedOnly.add(versionableEntitiesForUuid.get(0));
     }
@@ -99,7 +98,7 @@ public class VendorLicenseArtifactsServiceUtils {
     Set<LicenseKeyGroupEntity> healed = new HashSet<>();
     for (VersionableEntity licenseKeyGroupEntity : licenseKeyGroupEntities) {
       healed.add((LicenseKeyGroupEntity) VendorLicenseArtifactsServiceImpl.healingService
-          .heal(licenseKeyGroupEntity, user));
+              .heal(licenseKeyGroupEntity, user));
     }
 
     return healed;
@@ -110,7 +109,7 @@ public class VendorLicenseArtifactsServiceUtils {
     Set<EntitlementPoolEntity> healed = new HashSet<>();
     for (VersionableEntity entitlementPoolEntity : entitlementPoolEntities) {
       healed.add((EntitlementPoolEntity) VendorLicenseArtifactsServiceImpl.healingService
-          .heal(entitlementPoolEntity, user));
+              .heal(entitlementPoolEntity, user));
     }
 
     return healed;
@@ -118,15 +117,69 @@ public class VendorLicenseArtifactsServiceUtils {
 
   public static List<Version> getFinalVersionsForVlm(String vlmId) {
     VersionInfo versionInfo =
-        VendorLicenseArtifactsServiceImpl.vendorLicenseFacade
-            .getVersionInfo(vlmId, VersionableEntityAction.Read, "");
+            VendorLicenseArtifactsServiceImpl.vendorLicenseFacade
+                    .getVersionInfo(vlmId, VersionableEntityAction.Read, "");
     return versionInfo.getFinalVersions();
 
   }
 
   public static String getVendorName(String vendorLicenseModelId, String user) {
     return VendorLicenseArtifactsServiceImpl.vendorLicenseFacade
-        .getVendorLicenseModel(vendorLicenseModelId, null, user)
-        .getVendorLicenseModel().getVendorName();
+            .getVendorLicenseModel(vendorLicenseModelId, null, user)
+            .getVendorLicenseModel().getVendorName();
   }
+
+
+  /**
+   * Written to handle the consequences of ATTASDC-4780 where version_uuid was not saved or
+   * retrieved correctly by DAO for EPs and LKGs. Performs a healing of sorts according to the
+   * following : 1. all versions of a specific entity (EP or LKG that have the same invariant_uuid)
+   * are ordered by their VLM version 2. first element is sent to healing (which will set a
+   * versionUUID for it IF it doesnt exist) 3. each subsequent element is compared to previous . If
+   * same, UUID is copied from the previous element , if they differ - the current element is sent
+   * to healing as before. For VLMs created post-bugfix this code should not update any element
+   */
+  public static Collection<? extends VersionableEntity> prepareForFiltering(Collection<? extends
+          VersionableEntity> versionableEntities, String user, boolean isEP) {
+    MultiValuedMap<String, VersionableEntity> entitiesById = mapById(
+            versionableEntities);
+
+    for (String epId : entitiesById.keySet()) {
+      List<VersionableEntity> versionableEntitiesForId = new ArrayList<>();
+      versionableEntitiesForId.addAll(entitiesById.get(epId));
+      versionableEntitiesForId.sort(new VersionableEntitySortByVlmMajorVersion());
+      healingService.heal(versionableEntitiesForId.get(0), user);
+      for (int i = 1; i < versionableEntitiesForId.size(); i++) {
+        if (isEP) {
+          EntitlementPoolEntity current = (EntitlementPoolEntity) versionableEntitiesForId.get(i);
+          EntitlementPoolEntity previous = (EntitlementPoolEntity) versionableEntitiesForId
+                  .get(i - 1);
+          if (current.equals(previous) && current.getVersionUuId() == null) {
+            current.setVersionUuId(previous.getVersionUuId());
+            healingService.persistNoHealing(current);
+          } else {
+            versionableEntitiesForId.set(i, healingService.heal(versionableEntitiesForId.get(i),
+                    user));
+          }
+
+        } else {
+          LicenseKeyGroupEntity current = (LicenseKeyGroupEntity) versionableEntitiesForId.get(i);
+          LicenseKeyGroupEntity previous = (LicenseKeyGroupEntity) versionableEntitiesForId
+                  .get(i - 1);
+          if (current.equals(previous) && current.getVersionUuId() == null) {
+            current.setVersionUuId(previous.getVersionUuId());
+            healingService.persistNoHealing(current);
+          } else {
+            versionableEntitiesForId.set(i, healingService.heal(versionableEntitiesForId.get(i),
+                    user));
+          }
+
+
+        }
+      }
+    }
+    return versionableEntities;
+  }
+
+
 }
index 7d5d57d..c76b15d 100644 (file)
@@ -79,12 +79,12 @@ import java.util.Set;
 public class CompositionEntityDataManagerImpl implements CompositionEntityDataManager {
 
   private static final String COMPOSITION_ENTITY_DATA_MANAGER_ERR =
-      "COMPOSITION_ENTITY_DATA_MANAGER_ERR";
+          "COMPOSITION_ENTITY_DATA_MANAGER_ERR";
   private static final String COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG =
-      "Invalid input: %s may not be null";
+          "Invalid input: %s may not be null";
 
   private static final Logger logger =
-      LoggerFactory.getLogger(CompositionEntityDataManagerImpl.class);
+          LoggerFactory.getLogger(CompositionEntityDataManagerImpl.class);
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
 
   private Map<CompositionEntityId, CompositionEntityData> entities = new HashMap<>();
@@ -132,27 +132,27 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     if (entity == null) {
       throw new CoreException(
-          new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
-              .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
-              String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity"))
-              .build());
+              new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
+                      .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
+                      String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity"))
+                      .build());
     }
     if (schemaTemplateContext == null) {
       throw new CoreException(
-          new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
-              .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
-              String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "schema template context"))
-              .build());
+              new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
+                      .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
+                      String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "schema template context"))
+                      .build());
     }
 
     CompositionEntityValidationData validationData =
-        new CompositionEntityValidationData(entity.getType(), entity.getId());
+            new CompositionEntityValidationData(entity.getType(), entity.getId());
     String json =
-        schemaTemplateContext == SchemaTemplateContext.composition ? entity.getCompositionData()
-            : entity.getQuestionnaireData();
+            schemaTemplateContext == SchemaTemplateContext.composition ? entity.getCompositionData()
+                    : entity.getQuestionnaireData();
     validationData.setErrors(JsonUtil.validate(
-        json == null ? JsonUtil.object2Json(new Object()) : json,
-        generateSchema(schemaTemplateContext, entity.getType(), schemaTemplateInput)));
+            json == null ? JsonUtil.object2Json(new Object()) : json,
+            generateSchema(schemaTemplateContext, entity.getType(), schemaTemplateInput)));
 
     mdcDataDebugMessage.debugExitMessage(null);
     return validationData;
@@ -168,13 +168,13 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   public void addEntity(CompositionEntity entity, SchemaTemplateInput schemaTemplateInput) {
     if (entity == null) {
       throw new CoreException(
-          new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
-              .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
-              String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity"))
-              .build());
+              new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
+                      .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
+                      String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity"))
+                      .build());
     }
     entities.put(entity.getCompositionEntityId(),
-        new CompositionEntityData(entity, schemaTemplateInput));
+            new CompositionEntityData(entity, schemaTemplateInput));
   }
 
   /**
@@ -204,10 +204,10 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   @Override
   public void buildTrees() {
     Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData =
-        new HashMap<>();
+            new HashMap<>();
     entities.entrySet().forEach(
-        entry -> addValidationDataEntity(entitiesValidationData, entry.getKey(),
-            entry.getValue().entity));
+            entry -> addValidationDataEntity(entitiesValidationData, entry.getKey(),
+                    entry.getValue().entity));
   }
 
   public Collection<CompositionEntityValidationData> getTrees() {
@@ -258,14 +258,14 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
     }
 
     Collection<CompositionEntityValidationData> subEntitiesValidationData =
-        entity.getSubEntitiesValidationData();
+            entity.getSubEntitiesValidationData();
     return !CollectionUtils.isEmpty(subEntitiesValidationData) &&
-        checkForErrorsInChildren(subEntitiesValidationData);
+            checkForErrorsInChildren(subEntitiesValidationData);
 
   }
 
   private boolean checkForErrorsInChildren(
-      Collection<CompositionEntityValidationData> subEntitiesValidationData) {
+          Collection<CompositionEntityValidationData> subEntitiesValidationData) {
     boolean result = false;
     for (CompositionEntityValidationData subEntity : subEntitiesValidationData) {
       if (CollectionUtils.isNotEmpty(subEntity.getErrors())) {
@@ -359,10 +359,10 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     //component.setId(CommonMethods.nextUuId()); will be set by the dao
     component.setQuestionnaireData(
-        new JsonSchemaDataGenerator(
-            generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.component,
-                null))
-            .generateData());
+            new JsonSchemaDataGenerator(
+                    generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.component,
+                            null))
+                    .generateData());
 
     componentDao.create(component);
 
@@ -376,9 +376,9 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     //nic.setId(CommonMethods.nextUuId()); will be set by the dao
     nic.setQuestionnaireData(
-        new JsonSchemaDataGenerator(
-            generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.nic, null))
-            .generateData());
+            new JsonSchemaDataGenerator(
+                    generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.nic, null))
+                    .generateData());
 
     nicDao.create(nic);
 
@@ -414,7 +414,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   public void getEntityListWithErrors(CompositionEntityValidationData entity,
                                       Set<CompositionEntityValidationData> compositionSet) {
     Collection<CompositionEntityValidationData> childNodes =
-        entity.getSubEntitiesValidationData();
+            entity.getSubEntitiesValidationData();
 
     if (CollectionUtils.isEmpty(childNodes)) {
       return;
@@ -432,7 +432,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   public void addNodeWithErrors(CompositionEntityValidationData node,
                                 Set<CompositionEntityValidationData> entitiesWithErrors) {
     CompositionEntityValidationData compositionNodeToAdd = new CompositionEntityValidationData(node
-        .getEntityType(), node.getEntityId());
+            .getEntityType(), node.getEntityId());
     compositionNodeToAdd.setErrors(node.getErrors());
     compositionNodeToAdd.setSubEntitiesValidationData(null);
 
@@ -445,9 +445,9 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
 
   private CompositionEntityData getCompositionEntityDataById(CompositionEntityValidationData
-                                                                 entity) {
+                                                                     entity) {
     for (Map.Entry<CompositionEntityId, CompositionEntityData> entityEntry : entities
-        .entrySet()) {
+            .entrySet()) {
       if (entityEntry.getKey().getId().equals(entity.getEntityId())) {
         return entityEntry.getValue();
       }
@@ -457,11 +457,11 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
 
   private void updateValidationCompositionEntityName(Set<CompositionEntityValidationData>
-                                                         compositionSet) {
+                                                             compositionSet) {
     for (CompositionEntityValidationData entity : compositionSet) {
       String compositionData = getCompositionDataAsString(entity);
       if (entity.getEntityType().equals(CompositionEntityType.vsp) ||
-          Objects.nonNull(compositionData)) {
+              Objects.nonNull(compositionData)) {
         entity.setEntityName(getEntityNameByEntityType(compositionData, entity));
       }
     }
@@ -488,12 +488,16 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
         Network network = JsonUtil.json2Object(compositionData, Network.class);
         return network.getName();
 
+      case image:
+        Image image = JsonUtil.json2Object(compositionData, Image.class);
+        return image.getFileName();
+
       case vsp:
         CompositionEntityData vspEntity = getCompositionEntityDataById(entity);
         VspQuestionnaireEntity vspQuestionnaireEntity = (VspQuestionnaireEntity) vspEntity.entity;
         VspDetails vspDetails =
-            vspInfoDao.get(new VspDetails(vspQuestionnaireEntity.getId(),
-                vspQuestionnaireEntity.getVersion()));
+                vspInfoDao.get(new VspDetails(vspQuestionnaireEntity.getId(),
+                        vspQuestionnaireEntity.getVersion()));
         return vspDetails.getName();
     }
 
@@ -509,7 +513,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     if (hasChildren(node)) {
       Collection<CompositionEntityValidationData> subNodes =
-          new ArrayList<>(node.getSubEntitiesValidationData());
+              new ArrayList<>(node.getSubEntitiesValidationData());
       subNodes.forEach(subNode -> removeNodesWithoutErrors(subNode, node));
       node.setSubEntitiesValidationData(subNodes);
 
@@ -538,14 +542,14 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
 
   private void addValidationDataEntity(
-      Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData,
-      CompositionEntityId entityId, CompositionEntity entity) {
+          Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData,
+          CompositionEntityId entityId, CompositionEntity entity) {
     if (entitiesValidationData.containsKey(entityId)) {
       return;
     }
 
     CompositionEntityValidationData validationData =
-        new CompositionEntityValidationData(entity.getType(), entity.getId());
+            new CompositionEntityValidationData(entity.getType(), entity.getId());
     entitiesValidationData.put(entityId, validationData);
 
     CompositionEntityId parentEntityId = entityId.getParentId();
@@ -573,32 +577,40 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     if (node.getSubEntitiesValidationData() != null) {
       node.getSubEntitiesValidationData()
-          .forEach(subNode -> addErrorsToTree(subNode, nodeId, errors));
+              .forEach(subNode -> addErrorsToTree(subNode, nodeId, errors));
     }
   }
 
   private Collection<String> validateQuestionnaire(CompositionEntityData compositionEntityData) {
     logger.debug(String.format("validateQuestionnaire start:  " +
-            "[entity.type]=%s, [entity.id]=%s, [entity.questionnaireString]=%s",
-        compositionEntityData.entity.getType().name(),
-        compositionEntityData.entity.getCompositionEntityId().toString(),
-        compositionEntityData.entity.getQuestionnaireData()));
+                    "[entity.type]=%s, [entity.id]=%s, [entity.questionnaireString]=%s",
+            compositionEntityData.entity.getType().name(),
+            compositionEntityData.entity.getCompositionEntityId().toString(),
+            compositionEntityData.entity.getQuestionnaireData()));
+
+    if(Objects.isNull(compositionEntityData.entity.getQuestionnaireData()) || !JsonUtil.isValidJson
+            (compositionEntityData.entity.getQuestionnaireData())){
+      List<String> errors = new ArrayList<>();
+      errors.add("Data is missing for the above " + compositionEntityData.entity.getType() +
+              ". Complete the mandatory fields and resubmit.");
+      return errors;
+    }
 
     return JsonUtil.validate(
-        compositionEntityData.entity.getQuestionnaireData() == null
-            ? JsonUtil.object2Json(new Object())
-            : compositionEntityData.entity.getQuestionnaireData(),
-        getSchema(compositionEntityData.entity.getType(), SchemaTemplateContext.questionnaire,
-            compositionEntityData.schemaTemplateInput));
+            compositionEntityData.entity.getQuestionnaireData() == null
+                    ? JsonUtil.object2Json(new Object())
+                    : compositionEntityData.entity.getQuestionnaireData(),
+            getSchema(compositionEntityData.entity.getType(), SchemaTemplateContext.questionnaire,
+                    compositionEntityData.schemaTemplateInput));
   }
 
   private String getSchema(CompositionEntityType compositionEntityType,
                            SchemaTemplateContext schemaTemplateContext,
                            SchemaTemplateInput schemaTemplateInput) {
     return schemaTemplateInput == null
-        ? nonDynamicSchemas.computeIfAbsent(compositionEntityType,
-        k -> generateSchema(schemaTemplateContext, compositionEntityType, null))
-        : generateSchema(schemaTemplateContext, compositionEntityType, schemaTemplateInput);
+            ? nonDynamicSchemas.computeIfAbsent(compositionEntityType,
+            k -> generateSchema(schemaTemplateContext, compositionEntityType, null))
+            : generateSchema(schemaTemplateContext, compositionEntityType, schemaTemplateInput);
   }
 
   private static class CompositionEntityData {
@@ -619,7 +631,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
                                   CompositionEntityType compositionEntityType,
                                   SchemaTemplateInput schemaTemplateInput) {
     return SchemaGenerator
-        .generate(schemaTemplateContext, compositionEntityType, schemaTemplateInput);
+            .generate(schemaTemplateContext, compositionEntityType, schemaTemplateInput);
   }
 
   @Override
@@ -638,9 +650,9 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
     image.setId(CommonMethods.nextUuId());
 
     image.setQuestionnaireData(
-        new JsonSchemaDataGenerator(SchemaGenerator
-            .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, null))
-            .generateData());
+            new JsonSchemaDataGenerator(SchemaGenerator
+                    .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, null))
+                    .generateData());
 
     imageDao.create(image);
     mdcDataDebugMessage.debugExitMessage(null, null);
@@ -650,23 +662,23 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   @Override
   public ComputeEntity createCompute(ComputeEntity compute) {
     mdcDataDebugMessage.debugEntryMessage("VSP id, component id", compute.getVspId(),
-        compute.getComponentId());
+            compute.getComponentId());
 
     compute.setId(CommonMethods.nextUuId());
     compute.setQuestionnaireData(
-        new JsonSchemaDataGenerator(SchemaGenerator
-            .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.compute,
-                null)).generateData());
+            new JsonSchemaDataGenerator(SchemaGenerator
+                    .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.compute,
+                            null)).generateData());
 
     computeDao.create(compute);
 
     mdcDataDebugMessage.debugExitMessage("VSP id, component id", compute.getVspId(),
-        compute.getComponentId());
+            compute.getComponentId());
     return compute;
   }
 
   public void saveComputesFlavorByComponent(String vspId, Version version, Component component, String
-      componentId) {
+          componentId) {
     if (CollectionUtils.isNotEmpty(component.getCompute())) {
       for (ComputeData flavor : component.getCompute()) {
         ComputeEntity computeEntity = new ComputeEntity(vspId, version, componentId, null);
@@ -677,7 +689,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   }
 
   public void saveImagesByComponent(String vspId, Version version, Component component, String
-      componentId) {
+          componentId) {
     if (CollectionUtils.isNotEmpty(component.getImages())) {
       for (Image img : component.getImages()) {
         ImageEntity imageEntity = new ImageEntity(vspId, version, componentId, null);
index 67271c7..2bd0b40 100644 (file)
@@ -1,39 +1,38 @@
 {
-    "$schema": "http://json-schema.org/draft-04/schema#",
-    "type": "object",
-    "properties": {
-      "model": {
-        "type": "string",
-         "maxLength": 30,
-         "pattern": "^[A-Za-z0-9_,-]*$"
-        },
-      "description": {
-        "type": "string",
+"$schema": "http://json-schema.org/draft-04/schema#",
+"type": "object",
+"properties": {
+"model": {
+"type": "string",
+"maxLength": 30
+},
+"description": {
+"type": "string",
 
-         "maxLength": 300
-        },
-      "featureGroupId":{
-        "type": "string",
-        "enum": [<#if featureGroupIds??> <#list featureGroupIds as featureGroupId>
-        "${featureGroupId}"<#sep>,</#list> </#if>
-          ]
-      },
-     "componentComputeAssociations": {
-       "type": "array",
-        "properties": {
-            "vfcid": {
-               "type": "string"
-             },
-            "computeFlavorid": {
-               "type": "string"
-             }
-        },
-     "additionalProperties": false
-      }
+"maxLength": 300
+},
+"featureGroupId":{
+"type": "string",
+"enum": [<#if featureGroupIds??> <#list featureGroupIds as featureGroupId>
+"${featureGroupId}"<#sep>,</#list> </#if>
+]
+},
+"componentComputeAssociations": {
+"type": "array",
+"properties": {
+"vfcid": {
+"type": "string"
+},
+"computeFlavorid": {
+"type": "string"
+}
+},
+"additionalProperties": false
+}
 
-    },
-   "additionalProperties": false,
-   "required": [
-      "model"
-    ]
+},
+"additionalProperties": false,
+"required": [
+"model"
+]
 }
\ No newline at end of file
index da043b1..b92266f 100644 (file)
@@ -1,14 +1,16 @@
 #!/bin/bash
 
-###########################################################################################################
-# script name - cassandra2zusammen.sh
-# run script - ./cassandra2zusammen.sh
-# This script migrates ASDC 1st class citizen entities and their sub-entities from Cassandra to
-# Zusammen.
-# This script should be run when upgrading from 1702 to 1707
-###########################################################################################################
+OSTYPE=`uname -a | grep -iq ubuntu; echo $?`
+echo "${OSTYPE}"
 
+if [ ${OSTYPE} -eq 1 ]
+then
+   CONF_FILE_LOCATION="/opt/app/jetty/base/be/config/catalog-be/configuration.yaml"
+else
+  CONF_FILE_LOCATION="/apps/jetty/base/be/config/catalog-be/configuration.yaml"
+fi
+echo "Configuration file location:  ${CONF_FILE_LOCATION}"
 
 # change exist package and service templates in db
-java -Dlog.home=/apps/jetty/base/be/logs -Dconfiguration.yaml=/apps/jetty/base/be/config/catalog-be/configuration.yaml  -jar openecomp-zusammen-tools-1.0-SNAPSHOT.jar org.openecomp.core.tools.main.ZusammenMainTool $1 $2 $3 $4 $5 $6
-STATUS="${?}" echo "${STATUS}" echo "All log messages for the zusammenMainTool migration process are in /apps/jetty/base/be/logs/ASDC/ASDC-BE/zusammen_tool_debug.log"
+java -Dlog.home=/apps/jetty/base/be/logs -Dconfiguration.yaml=${CONF_FILE_LOCATION}  -jar openecomp-zusammen-tools-1.0-SNAPSHOT.jar org.openecomp.core.tools.main.ZusammenMainTool $1 $2 $3 $4 $5 $6
+STATUS="${?}" echo "${STATUS}"
\ No newline at end of file
index 82b5dea..335a658 100644 (file)
@@ -2,7 +2,7 @@
   "name": "dox-ui",
   "version": "1.0.0",
   "description": "",
-  "author": "OPENECOMP",
+  "author": "ECOMP",
   "license": "SEE LICENSE IN LICENSE",
   "scripts": {
     "start": "gulp dev && webpack-dev-server --progress",
   "dependencies": {
     "classnames": "^2.2.5",
     "core-js": "^2.4.0",
-    "d3": "^4.10.0",
+    "d3": "^3.5.16",
     "dox-sequence-diagram-ui": "file:../dox-sequence-diagram-ui",
     "intl": "^1.0.1",
     "intl-format-cache": "^2.0.5",
     "intl-messageformat": "^1.2.0",
     "intl-relativeformat": "^1.2.0",
-    "jquery": "^2.1.4",
     "lodash": "^4.13.1",
     "md5": "^2.1.0",
     "randomstring": "^1.1.5",
index 026f129..609cc91 100644 (file)
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.openecomp.sdc</groupId>
+    <groupId>com.att.asdc.onboarding</groupId>
     <artifactId>onboarding-fe</artifactId>
     <name>onboarding-ui-war</name>
+    <version>1.0-SNAPSHOT</version>
     <packaging>war</packaging>
 
-    <parent>
-        <groupId>org.openecomp.sdc</groupId>
-        <artifactId>sdc-onboarding</artifactId>
-        <version>1.1.0-SNAPSHOT</version>
-        <relativePath>../onboarding</relativePath>
-    </parent>
-
     <build>
         <plugins>
-            <!-- ============================================= -->
-            <!-- Clean dist folder -->
-            <!-- ============================================= -->
-            <plugin>
-                <artifactId>maven-clean-plugin</artifactId>
-                <version>2.6.1</version>
-                <executions>
-                    <execution>
-                        <id>clean.dist.folder</id>
-                        <phase>clean</phase>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                        <configuration>
-                            <filesets>
-                                <fileset>
-                                    <directory>${basedir}/dist</directory>
-                                </fileset>
-                                <fileset>
-                                    <directory>${basedir}/node_modules</directory>
-                                </fileset>
-                                <fileset>
-                                    <directory>${basedir}/../dox-sequence-diagram-ui/dist</directory>
-                                </fileset>
-                                <fileset>
-                                    <directory>${basedir}/../dox-sequence-diagram-ui/node_modules</directory>
-                                </fileset>
-                            </filesets>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <!-- ============================================= -->
-            <!-- Build the UI module node code -->
-            <!-- ============================================= -->
-            <plugin>
-                <groupId>com.github.eirslett</groupId>
-                <artifactId>frontend-maven-plugin</artifactId>
-                <version>1.4</version>
-
-                <configuration>
-                               <installDirectory>${project.parent.parent.basedir}</installDirectory>
-                       </configuration>
-
-                <executions>
-
-                    <execution>
-                        <id>install node and npm</id>
-                        <goals>
-                            <goal>install-node-and-npm</goal>
-                        </goals>
-                        <configuration>
-                            <nodeVersion>v6.9.5</nodeVersion>
-                            <npmVersion>3.10.10</npmVersion>
-                        </configuration>
-                    </execution>
-
-                    <execution>
-                       <id>npm set progress off</id>
-                       <goals>
-                               <goal>npm</goal>
-                       </goals>
-                       <configuration>
-                               <arguments>set progress=false</arguments>
-                       </configuration>
-                    </execution>
-
-                    <execution>
-                        <id>npm install in dox-sequence-diagram-ui</id>
-                        <goals>
-                            <goal>npm</goal>
-                        </goals>
-                        <configuration>
-                            <workingDirectory>${project.basedir}/../dox-sequence-diagram-ui</workingDirectory>
-                            <arguments>install</arguments>
-                        </configuration>
-                    </execution>
-
-                    <execution>
-                        <id>npm install</id>
-                        <goals>
-                            <goal>npm</goal>
-                        </goals>
-                        <configuration>
-                            <arguments>install</arguments>
-                        </configuration>
-                    </execution>
-
-                    <execution>
-                        <id>npm run build</id>
-                        <goals>
-                            <goal>npm</goal>
-                        </goals>
-                        <configuration>
-                            <arguments>run build -- --version=${project.version}</arguments>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>repack war</id>
-                        <phase>prepare-package</phase>
-                        <configuration>
-                            <tasks>
-                                <echo message="Building test environment"/>
-                                <unzip src="dist/onboarding.war" dest="${basedir}/target/dist">
-                                    <patternset>
-                                        <include name="**/*"/>
-                                    </patternset>
-                                </unzip>
-                            </tasks>
-                        </configuration>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
-                <version>3.0.0</version>
                 <configuration>
+                    <webXml>webapp-onboarding\WEB-INF\web.xml</webXml>
                     <webResources>
                         <resource>
-                                <directory>${basedir}/target/dist</directory>
+                            <directory>external-resources/healthcheck</directory>
+                            <includes>
+                                <include>v1.0/healthcheck</include>
+                            </includes>
                         </resource>
                     </webResources>
                 </configuration>
         </plugins>
     </build>
 
+
+    <profiles>
+
+        <profile>
+            <id>dox</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+
+            <properties>
+                <amdocs.repository.host>10.147.3.4</amdocs.repository.host>
+                <amdocs.repository.port>8081</amdocs.repository.port>
+                <amdocs.repository.address>${amdocs.repository.host}:${amdocs.repository.port}</amdocs.repository.address>
+                <amdocs.repository.updatePolicy.default>daily</amdocs.repository.updatePolicy.default>
+            </properties>
+            <repositories>
+
+                <repository>
+                    <id>Amdocs</id>
+                    <name>Amdocs public</name>
+                    <url>http://${amdocs.repository.address}:${amdocs.repository.port}/nexus/content/groups/public/</url>
+                    <releases>
+                        <enabled>true</enabled>
+                        <updatePolicy>${amdocs.repository.updatePolicy.default}</updatePolicy>
+                        <checksumPolicy>ignore</checksumPolicy>
+                    </releases>
+                    <snapshots>
+                        <enabled>false</enabled>
+                        <updatePolicy>${amdocs.repository.updatePolicy.default}</updatePolicy>
+                        <checksumPolicy>ignore</checksumPolicy>
+                    </snapshots>
+                </repository>
+
+                <repository>
+                    <id>snapshots</id>
+                    <name>Maven Snapshot Repository</name>
+                    <url>http://${amdocs.repository.address}/nexus/content/repositories/snapshots/</url>
+                    <releases>
+                        <enabled>false</enabled>
+                        <updatePolicy>${amdocs.repository.updatePolicy.default}</updatePolicy>
+                        <checksumPolicy>ignore</checksumPolicy>
+                    </releases>
+                    <snapshots>
+                        <enabled>true</enabled>
+                        <updatePolicy>${amdocs.repository.updatePolicy.default}</updatePolicy>
+                        <checksumPolicy>ignore</checksumPolicy>
+                    </snapshots>
+                </repository>
+
+            </repositories>
+
+            <distributionManagement>
+                <repository>
+                    <id>ASDC</id>
+                    <url>http://${amdocs.repository.address}/nexus/repository/D2-tlv-release</url>
+                </repository>
+                <snapshotRepository>
+                    <id>snapshots</id>
+                    <url>http://${amdocs.repository.address}/nexus/content/repositories/snapshots</url>
+                    <uniqueVersion>false</uniqueVersion>
+                </snapshotRepository>
+            </distributionManagement>
+
+        </profile>
+
+        <profile>
+            <id>att</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+            </activation>
+
+            <properties>
+                <nexusServerName>mavencentral.it.att.com</nexusServerName>
+                <nexusServerPort>8084</nexusServerPort>
+                <nexus.release.repository>att-repository-releases</nexus.release.repository>
+                <nexus.snapshot.repository>att-repository-snapshots</nexus.snapshot.repository>
+                <nexus.id.release>nexus</nexus.id.release>
+                <nexus.id.snapshot>nexus</nexus.id.snapshot>
+            </properties>
+
+            <repositories>
+                <repository>
+                    <id>2020</id>
+                    <name>2020</name>
+                    <url>http://${nexusServerName}:${nexusServerPort}/nexus/content/groups/2020SAPC/</url>
+                    <layout>default</layout>
+                </repository>
+
+                <repository>
+                    <id>ATT public</id>
+                    <name>ATT public</name>
+                    <url>http://${nexusServerName}:${nexusServerPort}/nexus/content/groups/att-public-group/</url>
+                    <layout>default</layout>
+                </repository>
+
+            </repositories>
+
+            <pluginRepositories>
+                <pluginRepository>
+                    <id>nexus</id>
+                    <name>Nexus repository</name>
+                    <url>http://${nexusServerName}:${nexusServerPort}/nexus/content/repositories/att-public-group</url>
+                    <layout>default</layout>
+                </pluginRepository>
+            </pluginRepositories>
+
+
+            <distributionManagement>
+                <snapshotRepository>
+                    <id>${nexus.id.snapshot}</id>
+                    <name>att-repository-snapshots</name>
+                    <url>http://${nexusServerName}:${nexusServerPort}/nexus/content/repositories/${nexus.snapshot.repository}/</url>
+                </snapshotRepository>
+
+                <repository>
+                    <id>${nexus.id.release}</id>
+                    <name>att-repository-releases</name>
+                    <url>http://${nexusServerName}:${nexusServerPort}/nexus/content/repositories/${nexus.release.repository}/</url>
+                </repository>
+            </distributionManagement>
+
+        </profile>
+    </profiles>
+
 </project>
index ac5dd27..cd52840 100644 (file)
@@ -32,7 +32,7 @@
       .collapse-right {
         .svg-icon {
           &.__chevronDown {
-              transform: rotate(270deg);
+            transform: rotate(270deg);
           }
         }
       }
index bd47fbb..c8d8cf4 100644 (file)
@@ -1,27 +1,27 @@
 
 .vsp-attachments-view {
   position: relative;
-       #attachments-tabs {
-               .nav-tabs {
-                       background-color: $tlv-gray;
-                       box-shadow: none;
-                       border-bottom: 1px solid $light-gray;
-                       & > li {
-                               & > a {
-                                       @extend .heading-2;
-                                       padding-left: 0;
-                                       padding-right: 0;
-                                       margin-right: 40px;
-                               };
-                               &.active > a {color: $blue;};
-                       }
-               }
-       }
+  #attachments-tabs {
+    .nav-tabs {
+      background-color: $tlv-gray;
+      box-shadow: none;
+      border-bottom: 1px solid $light-gray;
+      & > li {
+        & > a {
+          @extend .heading-2;
+          padding-left: 0;
+          padding-right: 0;
+          margin-right: 40px;
+        };
+        &.active > a {color: $blue;};
+      }
+    }
+  }
   .attachments-view-controllers {
     position: absolute;
     right: 40px;
     top: 15px;
-               display: flex;
+    display: flex;
 
 
     .icon-component {
index 8d45d86..40daeff 100644 (file)
@@ -115,7 +115,7 @@ const UploadErrorList = ({items}) => {
                        {item.list.map((error, i) => <ErrorMessage key={i} warning={error.level === 'WARNING'} error={error.message}/> )}
                </div>
        );}
-       
+
        return (
                <div>
                        {errors}
@@ -152,10 +152,10 @@ const ErrorHeader = ({errorType, collapsed, onClick}) => {
 const ErrorMessage = ({error, warning}) => {
        return (
                <ListGroupItem className='error-code-list-item'>
-                       <SVGIcon 
-                               name={warning ? 'exclamationTriangleLine' : 'error'}                                                            
-                               color={warning ? 'warning' : 'negative'} />     
-                       <span className='icon-label'>{error}</span>                     
+                       <SVGIcon
+                               name={warning ? 'exclamationTriangleLine' : 'error'}
+                               color={warning ? 'warning' : 'negative'} />
+                       <span className='icon-label'>{error}</span>
                </ListGroupItem>
        );
 };
index 2f63dfe..ef97b8b 100644 (file)
  * permissions and limitations under the License.
  */
 import IntlObj from 'intl';
+import IntlMessageFormatObj from 'intl-messageformat';
 import IntlRelativeFormatObj from 'intl-relativeformat';
 import createFormatCacheObj from 'intl-format-cache';
 import i18nJson from 'i18nJson';
 /*
      Intl libs are using out dated transpailer from ecmascript6.
-*  TODO: As soon as they fix it, remove this assignments!!!
-* */
+ Intl libs are using out dated transpailer from ecmascript6.
+ *  TODO: As soon as they fix it, remove this assignments!!!
+ * */
 var Intl               = window.Intl || IntlObj.default,
+       IntlMessageFormat  = IntlMessageFormatObj.default,
        IntlRelativeFormat = IntlRelativeFormatObj.default,
        createFormatCache  = createFormatCacheObj.default;
 
@@ -68,11 +70,15 @@ var i18n = {
        dateRelative(date, options) {
                return createFormatCache(IntlRelativeFormat)(this._locale, options).format(date);
        },
-       message(messageId) {
+       message(messageId, options) {
+               let messageTxt = null;
                if (i18nJson && i18nJson[messageId]) {
-                       return i18nJson[messageId];
+                       messageTxt = i18nJson[messageId];
+               } else {
+                       messageTxt = String(messageId);
                }
-               return messageId;
+               return createFormatCache(IntlMessageFormat)(messageTxt, this._locale).format(options);
+
        },
        getLocale() {
                return this._locale;